Skip to navigation

Venue health

The ops lane, symbol-less and tier-less, at the exchange altitude: one entry per exchange with any market-data presence, each carrying a connectivity rollup, the per-feed staleness census (classified lazily at the proven 10x/20x-of-rolling-mean thresholds against stream time), and the books sync-state counts — re-rendered every health interval while subscribed.

URL wss://marketdata.immix.xyz/

Topic health

Request parameters

ParameterTypeRequiredDescription
opstringYessubscribe
reqIdstringNoclient correlation id, echoed verbatim on the ack
paramsobjectYes
> topicsarray of stringsYesthe dotted topic string, e.g. trade.OKX@BTC/USDT or candlestick.OKX@BTC/USDT.ONE_MINUTE.250ms

Response parameters

ParameterTypeRequiredDescription
opstringYesOne of auth, subscribe, unsubscribe, error.
reqIdstringNo
successbooleanYes
errorstringNoOne of auth_required, invalid_token, unknown_op, malformed, too_many_topics.
topicsarray of objectsNoanswers ride in request order — the correlator for entries whose topic could not compose (error rows echo the composed topic best-effort, absent parts empty)
> topicstringYes
> statestringYeslive: data flows now (latest-image lanes — tob, mark, funding, oi, ticker — answer live whether or not an image is held yet; the first image flows on arrival). syncing (book topics): the gateway holds no synced book yet — the snapshot is pushed unprompted the moment it syncs, at latest one connector restate interval. error on a plain (string-topic) row, no code: the topic composed nothing, and it never arms retroactively. Either the channel is outside the vocabulary or the tier suffix is outside the configured set (an unrecognized suffix reads as part of the symbol) — correct the topic — or the symbol is unknown to the gateway’s refdata fold (derivative symbols are refdata’s ccxt spelling BASE/QUOTE:SETTLE, e.g. OKX@BTC/USDT:USDT — there is no :SWAP form) — resubscribe once refdata holds the instrument. Composite rows: live iff every enabled source book is synced, stated within the topic’s output scales, AND every required FX pair is current (the full image pushes immediately); syncing otherwise, kept by the first tick at which the composite becomes computable — a source out for precision is named by a degraded frame at that tick, since syncing alone does not say it; a composite error row carries code. One of live, syncing, error, unsubscribed, not_subscribed.
> priceScaleintegerNocomposite live/syncing rows only — the resolved output price scale (max over all configured sources’ reference records, disabled included), bounding the fractional digits any price on the topic can carry; never padding. It holds until a status rescaled frame on the topic restates it
> qtyScaleintegerNocomposite rows only — the resolved output qty scale; as priceScale
> codestringNocomposite error rows only — the closed vocabulary clients parse; every validation failure maps to exactly one code. One of unknown_channel, bad_name, bad_tier, tier_required, name_in_use, unknown_instrument, duplicate_source, mixed_base_asset, unit_mismatch, bad_normalisation, bad_depth, bad_ladder, too_many_sources, budget_exceeded, malformed.
> messagestringNosupplementary human text naming the offending source or field — never something a client parses

Push data parameters

ParameterTypeRequiredDescription
eventstringYeshealth
topicstringYeshealth
seqstringYesthe envelope’s global sequence, as a decimal string
seqTsstringYes
dataobjectYes
> indexobjectYesthe pair-domain census (exchange-less, so it sits beside the exchange entries): pairs the gateway tracks, pairs current within the 30 s arrival window, and the expired remainder
> > pairsintegerYes
> > liveintegerYes
> > expiredintegerYes
> exchangesarray of objectsYesone entry per exchange with any market-data presence (a connection readout, an observed instrument, or a tracked book), in ascending exchange-id order — a member-stable walk
> > exchangestringYesrefdata’s exchange name (the natural key); the decimal exchange id if the refdata row has not yet replayed — transient by construction
> > connectivitystringYesthe redundancy-honest connection rollup: full = every known connection live (vacuously full before any readout is known), down = none live, partial = anything between — a duplicated connection absorbing a blip, or a shard down, while its siblings carry the feed. One of full, partial, down.
> > feedsobjectYesper-feed staleness census over this exchange’s instruments, each lane carrying unobserved, live, degraded and timedOut counts. The derivative-scoped lanes (mark/funding/oi) census observed instruments only — their connector-side enablement is not derivable here, so their unobserved buckets are structurally 0.
> > > tradeobjectYesinstrument counts per staleness class for one feed lane
> > > > unobservedintegerYes
> > > > liveintegerYes
> > > > degradedintegerYes
> > > > timedOutintegerYes
> > > tobobjectYesinstrument counts per staleness class for one feed lane
> > > > unobservedintegerYes
> > > > liveintegerYes
> > > > degradedintegerYes
> > > > timedOutintegerYes
> > > bookobjectYesinstrument counts per staleness class for one feed lane
> > > > unobservedintegerYes
> > > > liveintegerYes
> > > > degradedintegerYes
> > > > timedOutintegerYes
> > > markobjectYesinstrument counts per staleness class for one feed lane
> > > > unobservedintegerYes
> > > > liveintegerYes
> > > > degradedintegerYes
> > > > timedOutintegerYes
> > > fundingobjectYesinstrument counts per staleness class for one feed lane
> > > > unobservedintegerYes
> > > > liveintegerYes
> > > > degradedintegerYes
> > > > timedOutintegerYes
> > > oiobjectYesinstrument counts per staleness class for one feed lane
> > > > unobservedintegerYes
> > > > liveintegerYes
> > > > degradedintegerYes
> > > > timedOutintegerYes
> > booksobjectYes
> > > totalintegerYes
> > > syncedintegerYes
> > > staleintegerYes

Behaviour

Connector topology (shards, connection ordinals) is deliberately not on this wire — it is operations telemetry, and under duplicated-connection redundancy a single dead connection does not mean a degraded feed.