at.adsb.sync.subscribeEvents

adsb.at

{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "broadcastOp": {
      "description": "A single operation within a relayed event. This definition MUST track at.adsb.broadcast.subscribeEvents#broadcastOp — if the upstream broadcast lexicon changes this shape, update this definition to match.",
      "properties": {
        "action": {
          "description": "The type of operation.",
          "knownValues": [
            "create",
            "update",
            "delete"
          ],
          "maxLength": 16,
          "type": "string"
        },
        "record": {
          "description": "The record payload. Shape determined by the record's $type field.",
          "type": "unknown"
        }
      },
      "required": [
        "action",
        "record"
      ],
      "type": "object"
    },
    "event": {
      "description": "A relayed batch of operations from a single station's poll cycle.",
      "properties": {
        "ops": {
          "description": "List of operations in this batch, passed through from upstream.",
          "items": {
            "ref": "#broadcastOp",
            "type": "ref"
          },
          "type": "array"
        },
        "seq": {
          "description": "The relay-minted monotonic sequence number of this message.",
          "type": "integer"
        },
        "sig": {
          "description": "Pass-through signature from the upstream station. This signature was computed by the station over the DAG-CBOR encoding of the upstream event body {$type: 'at.adsb.broadcast.subscribeEvents#event', seq, station, time, ops} (where seq is the station's original sequence, present here as upstreamSeq). To verify, reconstruct the upstream body by mapping upstreamSeq back to seq and including $type: 'at.adsb.broadcast.subscribeEvents#event' (dropping src), then check the signature against the station's published streamSigningKey. The signature does NOT verify against this sync frame body.",
          "type": "bytes"
        },
        "src": {
          "description": "The DID of the originating station.",
          "format": "did",
          "type": "string"
        },
        "station": {
          "description": "Strong reference to the emitting station's at.adsb.receiver.station record.",
          "ref": "com.atproto.repo.strongRef",
          "type": "ref"
        },
        "time": {
          "description": "Timestamp from the upstream station's poll cycle.",
          "format": "datetime",
          "type": "string"
        },
        "upstreamSeq": {
          "description": "The station's original sequence number from the upstream broadcast stream. Note: station seq resets on process restart; consumers should detect regression.",
          "type": "integer"
        }
      },
      "required": [
        "seq",
        "src",
        "upstreamSeq",
        "station",
        "time",
        "ops"
      ],
      "type": "object"
    },
    "info": {
      "description": "Control frame generated by the relay (e.g., OutdatedCursor). Upstream #info frames are not relayed.",
      "properties": {
        "message": {
          "description": "Human-readable info message.",
          "maxLength": 1024,
          "type": "string"
        },
        "name": {
          "description": "Operational info message name.",
          "knownValues": [
            "OutdatedCursor"
          ],
          "maxLength": 64,
          "type": "string"
        }
      },
      "required": [
        "name"
      ],
      "type": "object"
    },
    "main": {
      "description": "Subscribe to relayed events from all stations tracked by this relay.",
      "errors": [
        {
          "description": "The requested cursor is in the future (beyond the relay's current head sequence).",
          "name": "FutureCursor"
        },
        {
          "description": "The consumer's read rate is too far behind the relay's write rate. The connection has been dropped.",
          "name": "ConsumerTooSlow"
        }
      ],
      "message": {
        "schema": {
          "refs": [
            "#event",
            "#station",
            "#info"
          ],
          "type": "union"
        }
      },
      "parameters": {
        "properties": {
          "cursor": {
            "description": "The last sequence number previously received. If provided, the stream will backfill from that point.",
            "type": "integer"
          }
        },
        "type": "params"
      },
      "type": "subscription"
    },
    "station": {
      "description": "A station registry change observed by the relay via the AT Protocol firehose.",
      "properties": {
        "op": {
          "description": "The type of registry change.",
          "knownValues": [
            "create",
            "update",
            "delete"
          ],
          "maxLength": 16,
          "type": "string"
        },
        "record": {
          "description": "The full station record. Present for create and update ops; absent for delete ops. When present, shape matches at.adsb.receiver.station record definition.",
          "type": "unknown"
        },
        "seq": {
          "description": "The relay-minted monotonic sequence number of this message.",
          "type": "integer"
        },
        "src": {
          "description": "The DID of the station whose record changed.",
          "format": "did",
          "type": "string"
        },
        "time": {
          "description": "Timestamp of when the relay observed the firehose event.",
          "format": "datetime",
          "type": "string"
        }
      },
      "required": [
        "seq",
        "src",
        "op",
        "time"
      ],
      "type": "object"
    }
  },
  "description": "Unified relay output stream aggregating aircraft telemetry from multiple at-adsb receiver stations. Re-sequences all station telemetry under a single monotonic cursor with backfill support.",
  "id": "at.adsb.sync.subscribeEvents",
  "lexicon": 1
}

Validate Record

Validate a record against at.adsb.sync.subscribeEvents

Validation Options
Treat any remaining unresolved references as valid

Metadata

DID
did:plc:32thk4eifx4ou6mxevswgjhg
CID
bafyreiarcfze7ph2yomj5gr4xnouozfrjell2b2f73odoviuobnc3tbfcq
Indexed At
2026-08-02 19:25 UTC
AT-URI
at://did:plc:32thk4eifx4ou6mxevswgjhg/com.atproto.lexicon.schema/at.adsb.sync.subscribeEvents

Similar Lexicons

Lexicons whose schemas describe something close to this one. Check them before publishing a new one that overlaps.

  • Ephemeral event stream from a receiver station. Emits batched aircraft operations per poll cycle. Does not write to any repository.

Lexicon Garden

@