Subscribe to relayed events from all stations tracked by this relay.
Parameters
The last sequence number previously received. If provided, the stream will backfill from that point.
Errors
FutureCursor
The requested cursor is in the future (beyond the relay's current head sequence).
ConsumerTooSlow
The consumer's read rate is too far behind the relay's write rate. The connection has been dropped.
View raw schema
{
"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."
}
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
The type of operation.
maxLength: 16 bytes
Known values: create, update, delete
The record payload. Shape determined by the record's $type field.
View raw schema
{
"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."
}
A relayed batch of operations from a single station's poll cycle.
Properties
List of operations in this batch, passed through from upstream.
The relay-minted monotonic sequence number of this message.
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.
The DID of the originating station.
Strong reference to the emitting station's at.adsb.receiver.station record.
Timestamp from the upstream station's poll cycle.
The station's original sequence number from the upstream broadcast stream. Note: station seq resets on process restart; consumers should detect regression.
View raw schema
{
"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."
}
Control frame generated by the relay (e.g., OutdatedCursor). Upstream #info frames are not relayed.
Properties
Human-readable info message.
maxLength: 1024 bytes
Operational info message name.
maxLength: 64 bytes
Known values: OutdatedCursor
View raw schema
{
"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."
}
A station registry change observed by the relay via the AT Protocol firehose.
Properties
The type of registry change.
maxLength: 16 bytes
Known values: create, update, delete
The full station record. Present for create and update ops; absent for delete ops. When present, shape matches at.adsb.receiver.station record definition.
The relay-minted monotonic sequence number of this message.
The DID of the station whose record changed.
Timestamp of when the relay observed the firehose event.
View raw schema
{
"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."
}