at.adsb.sync.subscribeEvents

adsb.at

{
  "id": "at.adsb.sync.subscribeEvents",
  "defs": {
    "info": {
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "name": {
          "type": "string",
          "maxLength": 64,
          "description": "Operational info message name.",
          "knownValues": [
            "OutdatedCursor"
          ]
        },
        "message": {
          "type": "string",
          "maxLength": 1024,
          "description": "Human-readable info message."
        }
      },
      "description": "Control frame generated by the relay (e.g., OutdatedCursor). Upstream #info frames are not relayed."
    },
    "main": {
      "type": "subscription",
      "errors": [
        {
          "name": "FutureCursor",
          "description": "The requested cursor is in the future (beyond the relay's current head sequence)."
        },
        {
          "name": "ConsumerTooSlow",
          "description": "The consumer's read rate is too far behind the relay's write rate. The connection has been dropped."
        }
      ],
      "message": {
        "schema": {
          "refs": [
            "#event",
            "#station",
            "#info"
          ],
          "type": "union"
        }
      },
      "parameters": {
        "type": "params",
        "properties": {
          "cursor": {
            "type": "integer",
            "description": "The last sequence number previously received. If provided, the stream will backfill from that point."
          }
        }
      },
      "description": "Subscribe to relayed events from all stations tracked by this relay."
    },
    "event": {
      "type": "object",
      "required": [
        "seq",
        "src",
        "upstreamSeq",
        "station",
        "time",
        "ops"
      ],
      "properties": {
        "ops": {
          "type": "array",
          "items": {
            "ref": "#broadcastOp",
            "type": "ref"
          },
          "description": "List of operations in this batch, passed through from upstream."
        },
        "seq": {
          "type": "integer",
          "description": "The relay-minted monotonic sequence number of this message."
        },
        "sig": {
          "type": "bytes",
          "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."
        },
        "src": {
          "type": "string",
          "format": "did",
          "description": "The DID of the originating station."
        },
        "time": {
          "type": "string",
          "format": "datetime",
          "description": "Timestamp from the upstream station's poll cycle."
        },
        "station": {
          "ref": "com.atproto.repo.strongRef",
          "type": "ref",
          "description": "Strong reference to the emitting station's at.adsb.receiver.station record."
        },
        "upstreamSeq": {
          "type": "integer",
          "description": "The station's original sequence number from the upstream broadcast stream. Note: station seq resets on process restart; consumers should detect regression."
        }
      },
      "description": "A relayed batch of operations from a single station's poll cycle."
    },
    "station": {
      "type": "object",
      "required": [
        "seq",
        "src",
        "op",
        "time"
      ],
      "properties": {
        "op": {
          "type": "string",
          "maxLength": 16,
          "description": "The type of registry change.",
          "knownValues": [
            "create",
            "update",
            "delete"
          ]
        },
        "seq": {
          "type": "integer",
          "description": "The relay-minted monotonic sequence number of this message."
        },
        "src": {
          "type": "string",
          "format": "did",
          "description": "The DID of the station whose record changed."
        },
        "time": {
          "type": "string",
          "format": "datetime",
          "description": "Timestamp of when the relay observed the firehose event."
        },
        "record": {
          "type": "unknown",
          "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."
        }
      },
      "description": "A station registry change observed by the relay via the AT Protocol firehose."
    },
    "broadcastOp": {
      "type": "object",
      "required": [
        "action",
        "record"
      ],
      "properties": {
        "action": {
          "type": "string",
          "maxLength": 16,
          "description": "The type of operation.",
          "knownValues": [
            "create",
            "update",
            "delete"
          ]
        },
        "record": {
          "type": "unknown",
          "description": "The record payload. Shape determined by the record's $type field."
        }
      },
      "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."
    }
  },
  "$type": "com.atproto.lexicon.schema",
  "lexicon": 1,
  "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."
}

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

Lexicon Garden

@