json.schema.entity.data.topic.json Maven / Gradle / Ivy
{
"$id": "https://open-metadata.org/schema/entity/data/topic.json",
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Topic",
"$comment": "@om-entity-type",
"description": "A `Topic` is a feed or an event stream in a `Messaging Service` into which publishers publish messages and consumed by consumers.",
"type": "object",
"javaType": "org.openmetadata.schema.entity.data.Topic",
"javaInterfaces": ["org.openmetadata.schema.EntityInterface"],
"definitions": {
"cleanupPolicy": {
"javaType": "org.openmetadata.schema.type.topic.CleanupPolicy",
"description": "Topic clean up policy. For Kafka - `cleanup.policy` configuration.",
"enum": ["delete", "compact"]
},
"topicConfig": {
"javaType": "org.openmetadata.schema.type.topic.TopicConfig",
"description": "Contains key/value pair of topic configuration.",
"type": "object"
},
"topicSampleData": {
"type": "object",
"javaType": "org.openmetadata.schema.type.topic.TopicSampleData",
"description": "This schema defines the type to capture sample data for a topic.",
"properties": {
"messages": {
"description": "List of local sample messages for a topic.",
"type": "array",
"items": {
"type": "string"
}
}
},
"additionalProperties": false
}
},
"properties": {
"id": {
"description": "Unique identifier that identifies this topic instance.",
"$ref": "../../type/basic.json#/definitions/uuid"
},
"name": {
"description": "Name that identifies the topic.",
"$ref": "../../type/basic.json#/definitions/entityName"
},
"fullyQualifiedName": {
"description": "Name that uniquely identifies a topic in the format 'messagingServiceName.topicName'.",
"$ref": "../../type/basic.json#/definitions/fullyQualifiedEntityName"
},
"displayName": {
"description": "Display Name that identifies this topic. It could be title or label from the source services.",
"type": "string"
},
"description": {
"description": "Description of the topic 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"
},
"service": {
"description": "Link to the messaging cluster/service where this topic is hosted in.",
"$ref": "../../type/entityReference.json"
},
"serviceType": {
"description": "Service type where this topic is hosted in.",
"$ref": "../services/messagingService.json#/definitions/messagingServiceType"
},
"messageSchema": {
"$ref": "../../type/schema.json"
},
"partitions": {
"description": "Number of partitions into which the topic is divided.",
"type": "integer",
"minimum": 1
},
"cleanupPolicies": {
"description": "Topic clean up policies. For Kafka - `cleanup.policy` configuration.",
"type": "array",
"items": {
"$ref": "#/definitions/cleanupPolicy"
}
},
"retentionTime": {
"description": "Retention time in milliseconds. For Kafka - `retention.ms` configuration.",
"type": "number"
},
"replicationFactor": {
"description": "Replication Factor in integer (more than 1).",
"type": "integer"
},
"maximumMessageSize": {
"description": "Maximum message size in bytes. For Kafka - `max.message.bytes` configuration.",
"type": "integer"
},
"minimumInSyncReplicas": {
"description": "Minimum number replicas in sync to control durability. For Kafka - `min.insync.replicas` configuration.",
"type": "integer"
},
"retentionSize": {
"description": "Maximum size of a partition in bytes before old data is discarded. For Kafka - `retention.bytes` configuration.",
"type": "number",
"default": "-1"
},
"topicConfig": {
"description": "Contains key/value pair of topic configuration.",
"$ref": "#/definitions/topicConfig"
},
"sampleData": {
"description": "Sample data for a topic.",
"$ref": "#/definitions/topicSampleData",
"default": null
},
"owners": {
"description": "Owners of this topic.",
"$ref": "../../type/entityReferenceList.json"
},
"followers": {
"description": "Followers of this table.",
"$ref": "../../type/entityReferenceList.json",
"default": null
},
"tags": {
"description": "Tags for this table.",
"type": "array",
"items": {
"$ref": "../../type/tagLabel.json"
},
"default": []
},
"href": {
"description": "Link to the resource corresponding to this entity.",
"$ref": "../../type/basic.json#/definitions/href"
},
"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
},
"extension": {
"description": "Entity extension data with custom attributes added to the entity.",
"$ref": "../../type/basic.json#/definitions/entityExtension"
},
"sourceUrl": {
"description": "Source URL of topic.",
"$ref": "../../type/basic.json#/definitions/sourceUrl"
},
"domain" : {
"description": "Domain the Topic belongs to. When not set, the Topic inherits the domain from the messaging 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", "partitions", "service"],
"additionalProperties": false
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy