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" }
    }
  }
}

Work with this as data

Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for schemas

4 MCP tools reach this
  • find_json_schemasBrowse and filter every JSON Schema in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools

Call it yourself

curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/streaming-stream"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.