All Downloads are FREE. Search and download functionalities are using the official Maven repository.

json.schema.entity.data.container.json Maven / Gradle / Ivy

There is a newer version: 1.6.0-rc1
Show newest version
{
  "$id": "https://open-metadata.org/schema/entity/data/container.json",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "title": "Container",
  "$comment": "@om-entity-type",
  "description": "This schema defines the Container entity. A Container is an abstraction for any path(including the top level eg. bucket in S3) storing data in an Object store such as S3, GCP, Azure. It maps a tree-like structure, where each Container can have a parent and a list of sub-folders, and it can be structured - where it contains structured data, or unstructured where no schema for its data is defined.",
  "type": "object",
  "javaType": "org.openmetadata.schema.entity.data.Container",
  "javaInterfaces": [
    "org.openmetadata.schema.EntityInterface"
  ],
  "definitions": {
    "containerDataModel": {
      "description": "This captures information about how the container's data is modeled, if it has a schema. ",
      "type": "object",
      "javaType": "org.openmetadata.schema.type.ContainerDataModel",
      "properties": {
        "isPartitioned": {
          "description": "Whether the data under this container is partitioned by some property, eg. eventTime=yyyy-mm-dd",
          "type": "boolean",
          "default": false
        },
        "columns": {
          "description": "Columns belonging to this container's schema",
          "type": "array",
          "items": {
            "$ref": "../data/table.json#/definitions/column"
          }
        }
      },
      "required": [
        "columns"
      ],
      "additionalProperties": false
    },
    "fileFormat": {
      "javaType": "org.openmetadata.schema.type.ContainerFileFormat",
      "description": "This schema defines the file formats for the object/files within a container.",
      "javaInterfaces": ["org.openmetadata.schema.EnumInterface"],
      "type": "string",
      "enum": ["zip", "gz", "zstd", "csv", "tsv", "json", "parquet", "avro"],
      "javaEnums": [
        {"name": "Zip"},
        {"name": "Gz"},
        {"name": "Zstd"},
        {"name": "Csv"},
        {"name": "Tsv"},
        {"name": "Json"},
        {"name": "Parquet"},
        {"name": "Avro"}
      ]
    }
  },
  "properties": {
    "id": {
      "description": "Unique identifier that identifies this container instance.",
      "$ref": "../../type/basic.json#/definitions/uuid"
    },
    "name": {
      "description": "Name that identifies the container.",
      "$ref": "../../type/basic.json#/definitions/entityName"
    },
    "fullyQualifiedName": {
      "description": "Name that uniquely identifies a container in the format 'ServiceName.ContainerName'.",
      "$ref": "../../type/basic.json#/definitions/fullyQualifiedEntityName"
    },
    "displayName": {
      "description": "Display Name that identifies this container.",
      "type": "string"
    },
    "description": {
      "description": "Description of the container instance.",
      "$ref": "../../type/basic.json#/definitions/markdown"
    },
    "version": {
      "description": "Metadata version of the entity.",
      "$ref": "../../type/entityHistory.json#/definitions/entityVersion"
    },
    "updatedAt": {
      "description": "Last update time corresponding to the new version of the entity in Unix epoch time milliseconds.",
      "$ref": "../../type/basic.json#/definitions/timestamp"
    },
    "updatedBy": {
      "description": "User who made the update.",
      "type": "string"
    },
    "href": {
      "description": "Link to the resource corresponding to this entity.",
      "$ref": "../../type/basic.json#/definitions/href"
    },
    "owners": {
      "description": "Owners of this container.",
      "$ref": "../../type/entityReferenceList.json"
    },
    "service": {
      "description": "Link to the storage service where this container is hosted in.",
      "$ref": "../../type/entityReference.json"
    },
    "parent": {
      "description": "Link to the parent container under which this entity sits, if not top level.",
      "$ref": "../../type/entityReference.json"
    },
    "children": {
      "description": "References to child containers residing under this entity.",
      "$ref": "../../type/entityReferenceList.json"
    },
    "dataModel": {
      "description": "References to the container's data model, if data is structured, or null otherwise",
      "$ref": "#/definitions/containerDataModel",
      "default": null
    },
    "prefix": {
      "description": "Optional prefix path defined for this container",
      "type": "string",
      "default": null
    },
    "numberOfObjects": {
      "description": "The number of objects/files this container has.",
      "type": "number",
      "default": null
    },
    "size": {
      "description": "The total size in KB this container has.",
      "type": "number",
      "default": null
    },
    "fileFormats": {
      "description": "File & data formats identified for the container:  e.g. dataFormats=[csv, json]. These can be present both when the container has a dataModel or not",
      "type": "array",
      "items": {
        "$ref": "#/definitions/fileFormat"
      },
      "default": null
    },
    "serviceType": {
      "description": "Service type this table is hosted in.",
      "$ref": "../services/storageService.json#/definitions/storageServiceType"
    },
    "followers": {
      "description": "Followers of this container.",
      "$ref": "../../type/entityReferenceList.json"
    },
    "tags": {
      "description": "Tags for this container.",
      "type": "array",
      "items": {
        "$ref": "../../type/tagLabel.json"
      },
      "default": []
    },
    "changeDescription": {
      "description": "Change that lead to this version of the entity.",
      "$ref": "../../type/entityHistory.json#/definitions/changeDescription"
    },
    "deleted": {
      "description": "When `true` indicates the entity has been soft deleted.",
      "type": "boolean",
      "default": false
    },
    "retentionPeriod" : {
      "description": "Retention period of the data in the Container. Period is expressed as duration in ISO 8601 format in UTC. Example - `P23DT23H`.",
      "$ref": "../../type/basic.json#/definitions/duration"
    },
    "extension": {
      "description": "Entity extension data with custom attributes added to the entity.",
      "$ref": "../../type/basic.json#/definitions/entityExtension"
    },
    "sourceUrl": {
      "description": "Source URL of container.",
      "$ref": "../../type/basic.json#/definitions/sourceUrl"
    },
    "fullPath": {
      "description": "Full path of the container/file.",
      "type": "string"
    },
    "domain" : {
      "description": "Domain the Container belongs to. When not set, the Container inherits the domain from the storage service it belongs to.",
      "$ref": "../../type/entityReference.json"
    },
    "dataProducts": {
      "description": "List of data products this entity is part of.",
      "$ref": "../../type/entityReferenceList.json"
    },
    "votes": {
      "description": "Votes on the entity.",
      "$ref": "../../type/votes.json"
    },
    "lifeCycle": {
      "description": "Life Cycle properties of the entity",
      "$ref": "../../type/lifeCycle.json"
    },
    "certification": {
      "$ref": "../../type/assetCertification.json"
    },
    "sourceHash": {
      "description": "Source hash of the entity",
      "type": "string",
      "minLength": 1,
      "maxLength": 32
    }
  },
  "required": [
    "id",
    "name",
    "service"
  ],
  "additionalProperties": false
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy