system.status is a public system-scoped channel. Authentication: none. Payload schema: RealtimeSystemStatusPayload. Source status: derived. One subscription covers the whole venue; send no marketId. The first frame after the accepted frame has kind: "snapshot" and holds the whole current status. Every later frame has kind: "update" and holds the whole status again, sent only when it changed. Gate each button on its own action in actions: when available is false, refuse the action and show message. state is the most severe condition in force, for one banner. status_unknown means the venue could not confirm the action is safe: treat it as unavailable. A venue component that stops reporting reads as status_unknown within 90 seconds, and a money component that comes back shows as available within 30 seconds. Nothing is replayed: after a gap or a reconnect, subscribe again and start from the new snapshot. The same status is one REST read at GET /v1/system/status; read it once after a (re)connect, never on a timer.

Subscribe envelope

Send this exact JSON shape. requestId is required and there is no action field. The series field is not sent for this channel.

Accepted frame

The subscription is active only after a matching realtime-subscription-accepted/v1 frame arrives.

Data frame

The envelope is realtime-stream/v1; its payload validates against RealtimeSystemStatusPayload.

Worked example

  1. Send the subscribe envelope with request id subscribe-system-status.
  2. Wait for the accepted frame with the same request id; receiving any other frame does not prove this subscription.
  3. Process the data frame at sequence 1 and validate its payload as RealtimeSystemStatusPayload.