Market attributes
Endpoint:
wss://api.arcus.xyz/v1/ws— one socket multiplexes every channel and RPC request. Click Connect, then send the example subscribe message below to start receiving data.
Per-market Regular Trading Hours / off-hours attribute state for every online market. 24/7 markets (crypto) are included with isOutsideRth: false — they never leave regular trading hours — and every other off-hours field null; they never produce streaming updates. Supersedes the marketAttributes entry variant on exchangeAttributeUpdates.
Every entry — snapshot and streaming alike — is the market’s COMPLETE current attribute block: marketId, marketDisplayName, offHoursInitialMarginFraction, isOutsideRth, currentSettlementPrice, both trading-band boundaries and next-level boundaries, and per-side expansion-zone state. Fields that do not currently apply are null, never omitted. Field semantics match GET /v1/markets.
Global channel — no id required. All subscribers receive the same stream.
On subscribe: one full block per online market (isSnapshot: true) — a complete bootstrap, no REST read needed. Streaming: a single-entry envelope with the affected market’s full post-event block on every RTH boundary crossing, VWAP seal, and off-hours bound event (isSnapshot: false). Because each update carries the full block — both sides’ bounds, not just the side an event fired on — clients replace their local entry for marketId wholesale; boundEvent annotates what fired — always present on delta entries (exitRth / enterRth on RTH boundary crossings, a bound-event name otherwise); boundSide is also always present on delta entries (null on RTH-transition / non-bound-event deltas).