Streaming · Schema

Stream

A named, partitioned, append-only sequence of records hosted by a streaming platform (e.g. a Kafka topic, Pulsar topic, Kinesis stream, Pub/Sub topic). Describes how the stream is shaped on the wire, not its payload schema.

StreamingReal TimeEvent StreamingChange Data CaptureStream ProcessingServer Sent EventsWebSocketgRPCGraphQL SubscriptionsKafkaPulsarKinesisFlink

Properties

Name Type Description
id string Stable, platform-scoped identifier for the stream (URN, ARN, FQTN, etc.).
name string Human-readable name of the stream / topic.
description string Free-text description of what the stream contains.
platform string The streaming platform hosting this stream.
namespace string Multi-tenant namespace, project, or tenant under which the stream lives (Pulsar tenant/namespace, GCP project, etc.).
partitions integer Number of partitions / shards. Bounds parallelism for consumers.
replication_factor integer Number of replicas maintained per partition for durability.
retention object Retention policy for records in the stream.
ordering_key string The record key (or partition-key strategy) used to assign records to partitions and to define ordering scope.
delivery_guarantee string Delivery guarantee offered by the platform configuration for this stream.
schema object Reference to the record schema for this stream.
encoding string On-the-wire encoding of records.
tiered_storage boolean Whether older segments are offloaded to object storage.
created string
updated string
tags array
View JSON Schema on GitHub

JSON Schema

streaming-stream-schema.json Raw ↑
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$id": "https://raw.githubusercontent.com/api-evangelist/streaming/main/json-schema/streaming-stream-schema.json",
  "title": "Stream",
  "description": "A named, partitioned, append-only sequence of records hosted by a streaming platform (e.g. a Kafka topic, Pulsar topic, Kinesis stream, Pub/Sub topic). Describes how the stream is shaped on the wire, not its payload schema.",
  "type": "object",
  "required": ["id", "name", "platform"],
  "properties": {
    "id": {
      "type": "string",
      "description": "Stable, platform-scoped identifier for the stream (URN, ARN, FQTN, etc.)."
    },
    "name": {
      "type": "string",
      "description": "Human-readable name of the stream / topic."
    },
    "description": {
      "type": "string",
      "description": "Free-text description of what the stream contains."
    },
    "platform": {
      "type": "string",
      "description": "The streaming platform hosting this stream.",
      "enum": [
        "apache-kafka",
        "apache-pulsar",
        "redpanda",
        "nats-jetstream",
        "aws-kinesis",
        "gcp-pubsub",
        "azure-event-hubs",
        "confluent-cloud",
        "streamnative",
        "other"
      ]
    },
    "namespace": {
      "type": "string",
      "description": "Multi-tenant namespace, project, or tenant under which the stream lives (Pulsar tenant/namespace, GCP project, etc.)."
    },
    "partitions": {
      "type": "integer",
      "minimum": 1,
      "description": "Number of partitions / shards. Bounds parallelism for consumers."
    },
    "replication_factor": {
      "type": "integer",
      "minimum": 1,
      "description": "Number of replicas maintained per partition for durability."
    },
    "retention": {
      "type": "object",
      "description": "Retention policy for records in the stream.",
      "properties": {
        "mode": {
          "type": "string",
          "enum": ["time", "size", "compact", "compact_and_delete", "infinite"]
        },
        "duration": {
          "type": "string",
          "description": "ISO 8601 duration if mode is 'time' (e.g. P7D)."
        },
        "max_bytes": {
          "type": "integer",
          "description": "Maximum total bytes if mode is 'size'."
        }
      }
    },
    "ordering_key": {
      "type": "string",
      "description": "The record key (or partition-key strategy) used to assign records to partitions and to define ordering scope."
    },
    "delivery_guarantee": {
      "type": "string",
      "enum": ["at-most-once", "at-least-once", "exactly-once"],
      "description": "Delivery guarantee offered by the platform configuration for this stream."
    },
    "schema": {
      "type": "object",
      "description": "Reference to the record schema for this stream.",
      "properties": {
        "format": { "type": "string", "enum": ["avro", "protobuf", "json-schema", "thrift", "raw"] },
        "registry": { "type": "string", "format": "uri", "description": "URL of the Schema Registry holding the schema." },
        "subject": { "type": "string", "description": "Schema Registry subject name." },
        "version": { "type": ["string", "integer"], "description": "Schema version." }
      }
    },
    "encoding": {
      "type": "string",
      "enum": ["binary", "json", "text", "protobuf", "avro"],
      "description": "On-the-wire encoding of records."
    },
    "tiered_storage": {
      "type": "boolean",
      "description": "Whether older segments are offloaded to object storage."
    },
    "created": { "type": "string", "format": "date-time" },
    "updated": { "type": "string", "format": "date-time" },
    "tags": {
      "type": "array",
      "items": { "type": "string" }
    }
  }
}