Events · Schema
Event Source
Descriptor for an event-emitting system: a Kafka topic, a Pulsar tenant/namespace/topic, an EventBridge bus, an Event Grid topic, a Pub/Sub topic, an MQTT topic, or any system that produces CloudEvents. Captures identity, transport, broker, schema, and the CloudEvents 'source' attribute the system stamps onto outbound events.
EventsEvent-DrivenEvent StreamingMessagingPub SubBrokersCloudEventsAsyncAPITopic
Properties
| Name | Type | Description |
|---|---|---|
| id | string | Stable identifier for the event source within the catalog. |
| name | string | Human-readable name (e.g. 'orders.placed' or 'aws.s3.objectCreated'). |
| description | string | What this source emits and the business context for the events. |
| broker | string | The broker or messaging platform hosting this source. |
| protocol | string | Wire protocol used to publish and consume from this source. |
| transportEndpoint | string | Connection URL or bootstrap endpoint (e.g. kafka://broker:9092, mqtts://broker:8883, https://eventgrid.example/api/events). |
| topicOrChannel | string | Broker-specific identifier — Kafka topic, Pulsar topic, NATS subject, MQTT topic filter, EventBridge bus name, Event Grid topic name, Pub/Sub topic ID. |
| partitionCount | integer | Partition count for log-based brokers (Kafka, Pulsar, Redpanda). |
| retention | object | Retention policy for stored events. |
| deliveryGuarantee | string | End-to-end delivery semantics this source offers consumers. |
| orderingScope | string | Where order is preserved. 'partition' for Kafka, 'key' for Pub/Sub ordering keys, 'global' for Pulsar single-partition or NATS single-stream. |
| cloudEventsSource | string | Value this source will stamp into the CloudEvents 'source' attribute on emitted events. SHOULD be unique across the event catalog. |
| cloudEventsTypes | array | CloudEvents 'type' values produced by this source. |
| schemaRegistry | object | Schema registry binding for payloads emitted on this source. |
| asyncApi | string | URL to an AsyncAPI document that documents this source. |
| owner | object | Team or service that owns the source. |
| tags | array |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://api-evangelist.github.io/events/json-schema/events-event-source-schema.json",
"title": "Event Source",
"description": "Descriptor for an event-emitting system: a Kafka topic, a Pulsar tenant/namespace/topic, an EventBridge bus, an Event Grid topic, a Pub/Sub topic, an MQTT topic, or any system that produces CloudEvents. Captures identity, transport, broker, schema, and the CloudEvents 'source' attribute the system stamps onto outbound events.",
"type": "object",
"required": ["id", "name", "broker", "protocol", "cloudEventsSource"],
"properties": {
"id": {
"type": "string",
"minLength": 1,
"description": "Stable identifier for the event source within the catalog."
},
"name": {
"type": "string",
"description": "Human-readable name (e.g. 'orders.placed' or 'aws.s3.objectCreated')."
},
"description": {
"type": "string",
"description": "What this source emits and the business context for the events."
},
"broker": {
"type": "string",
"enum": [
"Apache Kafka",
"Apache Pulsar",
"NATS",
"Redpanda",
"IBM MQ",
"AWS EventBridge",
"Azure Event Grid",
"Azure Event Hubs",
"Google Cloud Pub/Sub",
"Confluent Cloud",
"RabbitMQ",
"Solace",
"HiveMQ",
"EMQX",
"Mosquitto",
"Custom"
],
"description": "The broker or messaging platform hosting this source."
},
"protocol": {
"type": "string",
"enum": ["Kafka", "Pulsar Binary", "NATS", "AMQP 1.0", "AMQP 0-9-1", "MQTT 3.1.1", "MQTT 5.0", "STOMP", "HTTP", "WebSocket"],
"description": "Wire protocol used to publish and consume from this source."
},
"transportEndpoint": {
"type": "string",
"format": "uri",
"description": "Connection URL or bootstrap endpoint (e.g. kafka://broker:9092, mqtts://broker:8883, https://eventgrid.example/api/events)."
},
"topicOrChannel": {
"type": "string",
"description": "Broker-specific identifier — Kafka topic, Pulsar topic, NATS subject, MQTT topic filter, EventBridge bus name, Event Grid topic name, Pub/Sub topic ID."
},
"partitionCount": {
"type": "integer",
"minimum": 1,
"description": "Partition count for log-based brokers (Kafka, Pulsar, Redpanda)."
},
"retention": {
"type": "object",
"description": "Retention policy for stored events.",
"properties": {
"duration": { "type": "string", "description": "ISO 8601 duration (e.g. P7D for seven days)." },
"sizeBytes": { "type": "integer", "minimum": 0 },
"compaction": { "type": "boolean", "description": "Whether log compaction is enabled (Kafka/Pulsar)." }
}
},
"deliveryGuarantee": {
"type": "string",
"enum": ["at-most-once", "at-least-once", "exactly-once"],
"description": "End-to-end delivery semantics this source offers consumers."
},
"orderingScope": {
"type": "string",
"enum": ["none", "partition", "key", "global"],
"description": "Where order is preserved. 'partition' for Kafka, 'key' for Pub/Sub ordering keys, 'global' for Pulsar single-partition or NATS single-stream."
},
"cloudEventsSource": {
"type": "string",
"format": "uri-reference",
"description": "Value this source will stamp into the CloudEvents 'source' attribute on emitted events. SHOULD be unique across the event catalog."
},
"cloudEventsTypes": {
"type": "array",
"description": "CloudEvents 'type' values produced by this source.",
"items": {
"type": "string"
}
},
"schemaRegistry": {
"type": "object",
"description": "Schema registry binding for payloads emitted on this source.",
"properties": {
"vendor": {
"type": "string",
"enum": ["Confluent Schema Registry", "Apicurio Registry", "AWS Glue Schema Registry", "Azure Schema Registry", "Other", "None"]
},
"url": { "type": "string", "format": "uri" },
"subject": { "type": "string", "description": "Registry subject name (often {topic}-value)." },
"format": {
"type": "string",
"enum": ["JSON Schema", "Avro", "Protobuf", "XML Schema"]
},
"compatibility": {
"type": "string",
"enum": ["NONE", "BACKWARD", "BACKWARD_TRANSITIVE", "FORWARD", "FORWARD_TRANSITIVE", "FULL", "FULL_TRANSITIVE"]
}
}
},
"asyncApi": {
"type": "string",
"format": "uri",
"description": "URL to an AsyncAPI document that documents this source."
},
"owner": {
"type": "object",
"description": "Team or service that owns the source.",
"properties": {
"team": { "type": "string" },
"email": { "type": "string", "format": "email" }
}
},
"tags": {
"type": "array",
"items": { "type": "string" }
}
},
"additionalProperties": false
}