{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"urn:ordien:public-delivery:1","title":"Ordien public market delivery request","description":"GET /api/v1/public/multiplex?request=<encoded JSON>. Public native reads only. Execution remains locked. At most 15 unique keys and 13 ticker keys, including the selected ticker plus at most 12 picker rows. Duplicate normalized feed keys are invalid even when their IDs differ.","type":"object","additionalProperties":false,"required":["version","subscriptions"],"properties":{"version":{"const":1},"subscriptions":{"type":"array","minItems":1,"maxItems":15,"contains":{"type":"object","required":["operation"],"properties":{"operation":{"const":"streams.ticker"}}},"minContains":0,"maxContains":13,"items":{"type":"object","additionalProperties":false,"required":["id","operation","venue","market_type","symbol"],"properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,48}$"},"operation":{"enum":["streams.ticker","streams.order-book","streams.trades"]},"venue":{"enum":["binance","bybit","bitget","coinbase","kraken","okx","kucoin"]},"market_type":{"enum":["spot","swap"]},"symbol":{"type":"string","minLength":3,"maxLength":96,"pattern":"^[A-Z0-9][A-Z0-9._-]*/[A-Z0-9][A-Z0-9._-]*(?::[A-Z0-9][A-Z0-9._-]*)?$"},"limit":{"type":"string","pattern":"^(?:[1-9]|[1-9][0-9]|1[0-9]{2}|200)$"},"seed":{"type":"boolean","description":"Ticker-only initial REST snapshot; does not claim native stream freshness."},"checkpoint":{"type":"boolean","default":false,"description":"Trades only. Receive one control cursor before the first trade update, including quiet feeds. It carries no trade payload or freshness claim."}},"allOf":[{"if":{"properties":{"market_type":{"const":"swap"}}},"then":{"properties":{"venue":{"enum":["binance","bybit","bitget","okx"]},"symbol":{"pattern":":"}}},"else":{"properties":{"symbol":{"not":{"pattern":":"}}}}},{"if":{"properties":{"operation":{"const":"streams.ticker"}}},"else":{"properties":{"seed":{"const":false}}}},{"if":{"properties":{"operation":{"const":"streams.trades"}}},"else":{"properties":{"checkpoint":{"const":false}}}}]}}},"x-response":{"content_type":"text/event-stream","max_lifetime_seconds":300,"events":{"update":"{version:1,subscription_id:string,envelope:<unchanged native streams.* envelope with connection-local contiguous sequence and preserved stream_origin:{id,sequence} from native ingestion>}","snapshot":"{version:1,subscription_id:string,envelope:<unchanged native market-data.ticker REST envelope>}","checkpoint":"{version:1,subscription_id:string,checkpoint:{version:1,operation:'streams.trades',venue:string,market_type:string,symbol:string,stream_origin:{id:UUID,sequence:positive-safe-integer},distribution?:<unchanged complete ownership fence>}}; exactly once before the first update only when checkpoint:true; distribution is required in distributed mode and absent only in standalone mode; no data, receipt, timestamp or connection-local sequence","error":"{version:1,subscription_id:string,error:{code:string,message:string,retryable:boolean}}"},"heartbeat":"SSE comments; neither comments nor checkpoints renew data freshness","checkpoint_semantics":"Receiver registration and cursor capture are atomic with publication. A matching equal retained cursor can complete handover without publishing a trade. An ahead cursor cannot advance delivered history: the old reader must deliver every missing ordinal through it. An older cursor waits for a real overlap. Different origin/fence fails explicitly. The first actual trade may equal the checkpoint cursor or be its next ordinal; subsequent actual trades must be contiguous. A cold watcher cannot claim history from a checkpoint. Controls do not count as data deliveries or extend data-idle deadlines, and legacy requests receive no checkpoints.","recovery":"A row error terminates that row. Clients retry retryable failures with bounded exponential backoff and jitter. Transport renewal resets connection sequences; stream_origin, receipts and source timestamps never change. Retained trades use bounded two-transport handover and original-ingestion ordinal deduplication; an origin change or non-contiguous original ordinal requires explicit reconciliation. No private data or mutation operations."}}