Skip to main content

Channel contract

Channel names are built by helpers in pusher.client.ts — the single source of truth shared between the publisher and the authorizer.
Private channels (private- prefix) require a signed authorization token before a client may subscribe. The totem channel is public on purpose so touch UIs and NOC dashboards subscribe without a handshake.

Event contract

The contract-domain events are enumerated in ContractPusherEvent:

Private-channel authorizer

POST /api/v3/realtime/pusher/auth
1

Authorize

Requires the pusher:auth permission.
2

Validate body

socket_id and channel_name are both required (400 otherwise).
3

Enforce namespace

The channel must match ^private-(contract|account)-[0-9a-f-]{36}$; anything else is rejected with 403.
4

Sign

Returns the Pusher auth payload from authorizeChannel(socket_id, channel_name). When Pusher is not configured the endpoint returns 403.
The namespace regex is the security boundary: a caller holding pusher:auth can only subscribe to contract/account channels. Ownership scoping (which contract a user may watch) is enforced by the calling app’s own session layer before it reaches this endpoint.

Example request

Example response