{"openapi":"3.1.0","info":{"title":"Ordien unified exchange API","version":"0.3.0","description":"Unified development API across market data, trading, accounts, derivatives, funding and streaming. Public reads use live adapters. Private reads require a scoped Ordien key (or approved browser session) and a verified connection. Private mutations are explicitly locked. Exchange capabilities and certification are separate. No hosted production base URL is advertised."},"servers":[{"url":"http://127.0.0.1:5173","description":"Local Next.js proxy (Rust services required)"}],"tags":[{"name":"Market data"},{"name":"Orders & fills"},{"name":"Accounts"},{"name":"Derivatives"},{"name":"Funding & withdrawals"},{"name":"Streaming"},{"name":"Exchanges"},{"name":"Ordien account"},{"name":"Public delivery"}],"paths":{"/api/v1/market-data/markets":{"get":{"operationId":"market_data_markets","tags":["Market data"],"summary":"List markets","description":"Discover listed instruments, contract identity, precision, minimum sizes and supported market types.","security":[],"parameters":[{"name":"venue","in":"query","required":true,"schema":{"description":"Exchange adapter.","example":"binance","type":"string","enum":["binance","bybit","bitget","coinbase","kraken","okx","kucoin"]}},{"name":"market_type","in":"query","required":false,"schema":{"description":"Account / market category. Use a settled symbol for derivatives.","example":"spot","type":"string","enum":["spot","swap","future","option"]}},{"name":"allow_emulated","in":"query","required":false,"schema":{"description":"Explicitly opt in to adapter emulation. Default false. Composed operations may differ from native exchange behavior; Ordien never substitutes linked or atomic order guarantees.","example":false,"type":"boolean"}}],"x-nexus-availability":"public","x-nexus-kind":"unified","x-nexus-capabilities":"/api/v1/capabilities","x-nexus-required-scope":null,"responses":{"200":{"description":"Normalized response.","content":{"application/json":{"schema":{"type":"object","required":["version","operation","venue","market_type","received_at","transport","implementation","data"],"properties":{"version":{"type":"string"},"operation":{"const":"market-data.markets"},"venue":{"type":"string","enum":["binance","bybit","bitget","coinbase","kraken","okx","kucoin"]},"market_type":{"type":"string"},"implementation":{"enum":["native","emulated"]},"received_at":{"type":"integer","format":"int64"},"transport":{"const":"rest"},"data":{"type":"array","items":{"$ref":"#/components/schemas/Market"}}}}}}},"400":{"description":"Invalid or missing parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"401":{"description":"Missing, expired or invalid authentication.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"403":{"description":"Insufficient scope, unverified connection or exchange_access_denied. Exact account / region cause may be unknown.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"404":{"description":"Unknown operation or connection.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"409":{"description":"emulation_opt_in_required or exchange_nonce_rejected. Review capabilities, clock synchronization and nonce ordering.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"422":{"description":"unsupported_credentials, exchange_feature_unavailable, nexus_not_implemented, extension_not_applicable, adapter_context_unsupported, market_not_found or exchange_request_rejected. Adapter gaps do not prove exchange feature absence.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"423":{"description":"execution_locked or authentication_not_ready. Consult capabilities for the venue release gate.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"429":{"description":"Shared capacity or exchange rate limit reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"502":{"description":"Exchange returned invalid normalized data or an invalid extension response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"503":{"description":"Adapter, credentials, storage or exchange unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"504":{"description":"Exchange / adapter request deadline reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}}}}},"/api/v1/market-data/currencies":{"get":{"operationId":"market_data_currencies","tags":["Market data"],"summary":"Currencies & networks","description":"Discover currency and network metadata. Availability varies by exchange; some exchanges require credentials and are explicitly unsupported on this public route.","security":[],"parameters":[{"name":"venue","in":"query","required":true,"schema":{"description":"Exchange adapter.","example":"binance","type":"string","enum":["binance","bybit","bitget","coinbase","kraken","okx","kucoin"]}},{"name":"market_type","in":"query","required":false,"schema":{"description":"Account / market category. Use a settled symbol for derivatives.","example":"spot","type":"string","enum":["spot","swap","future","option"]}},{"name":"allow_emulated","in":"query","required":false,"schema":{"description":"Explicitly opt in to adapter emulation. Default false. Composed operations may differ from native exchange behavior; Ordien never substitutes linked or atomic order guarantees.","example":false,"type":"boolean"}}],"x-nexus-availability":"public","x-nexus-kind":"unified","x-nexus-capabilities":"/api/v1/capabilities","x-nexus-required-scope":null,"responses":{"200":{"description":"Normalized response.","content":{"application/json":{"schema":{"type":"object","required":["version","operation","venue","market_type","received_at","transport","implementation","data"],"properties":{"version":{"type":"string"},"operation":{"const":"market-data.currencies"},"venue":{"type":"string","enum":["binance","bybit","bitget","coinbase","kraken","okx","kucoin"]},"market_type":{"type":"string"},"implementation":{"enum":["native","emulated"]},"received_at":{"type":"integer","format":"int64"},"transport":{"const":"rest"},"data":{"$ref":"#/components/schemas/CurrencyMap"}}}}}},"400":{"description":"Invalid or missing parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"401":{"description":"Missing, expired or invalid authentication.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"403":{"description":"Insufficient scope, unverified connection or exchange_access_denied. Exact account / region cause may be unknown.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"404":{"description":"Unknown operation or connection.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"409":{"description":"emulation_opt_in_required or exchange_nonce_rejected. Review capabilities, clock synchronization and nonce ordering.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"422":{"description":"unsupported_credentials, exchange_feature_unavailable, nexus_not_implemented, extension_not_applicable, adapter_context_unsupported, market_not_found or exchange_request_rejected. Adapter gaps do not prove exchange feature absence.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"423":{"description":"execution_locked or authentication_not_ready. Consult capabilities for the venue release gate.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"429":{"description":"Shared capacity or exchange rate limit reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"502":{"description":"Exchange returned invalid normalized data or an invalid extension response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"503":{"description":"Adapter, credentials, storage or exchange unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"504":{"description":"Exchange / adapter request deadline reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}}}}},"/api/v1/market-data/ticker":{"get":{"operationId":"market_data_ticker","tags":["Market data"],"summary":"Get a ticker","description":"Best bid / ask, last price and rolling exchange statistics for one market. Missing exchange fields are null.","security":[],"parameters":[{"name":"venue","in":"query","required":true,"schema":{"description":"Exchange adapter.","example":"binance","type":"string","enum":["binance","bybit","bitget","coinbase","kraken","okx","kucoin"]}},{"name":"symbol","in":"query","required":true,"schema":{"description":"Unified market symbol. Perpetual example: BTC/USDT:USDT; listings differ by venue.","example":"BTC/USDT","type":"string","pattern":"^[A-Z0-9.]+/[A-Z0-9.]+(?::[A-Z0-9.]+(?:-[A-Z0-9.-]+)?)?$"}},{"name":"market_type","in":"query","required":false,"schema":{"description":"Account / market category. Use a settled symbol for derivatives.","example":"spot","type":"string","enum":["spot","swap","future","option"]}},{"name":"allow_emulated","in":"query","required":false,"schema":{"description":"Explicitly opt in to adapter emulation. Default false. Composed operations may differ from native exchange behavior; Ordien never substitutes linked or atomic order guarantees.","example":false,"type":"boolean"}}],"x-nexus-availability":"public","x-nexus-kind":"unified","x-nexus-capabilities":"/api/v1/capabilities","x-nexus-required-scope":null,"responses":{"200":{"description":"Normalized response.","content":{"application/json":{"schema":{"type":"object","required":["version","operation","venue","market_type","received_at","transport","implementation","data"],"properties":{"version":{"type":"string"},"operation":{"const":"market-data.ticker"},"venue":{"type":"string","enum":["binance","bybit","bitget","coinbase","kraken","okx","kucoin"]},"market_type":{"type":"string"},"implementation":{"enum":["native","emulated"]},"received_at":{"type":"integer","format":"int64"},"transport":{"const":"rest"},"data":{"$ref":"#/components/schemas/Ticker"}}}}}},"400":{"description":"Invalid or missing parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"401":{"description":"Missing, expired or invalid authentication.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"403":{"description":"Insufficient scope, unverified connection or exchange_access_denied. Exact account / region cause may be unknown.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"404":{"description":"Unknown operation or connection.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"409":{"description":"emulation_opt_in_required or exchange_nonce_rejected. Review capabilities, clock synchronization and nonce ordering.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"422":{"description":"unsupported_credentials, exchange_feature_unavailable, nexus_not_implemented, extension_not_applicable, adapter_context_unsupported, market_not_found or exchange_request_rejected. Adapter gaps do not prove exchange feature absence.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"423":{"description":"execution_locked or authentication_not_ready. Consult capabilities for the venue release gate.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"429":{"description":"Shared capacity or exchange rate limit reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"502":{"description":"Exchange returned invalid normalized data or an invalid extension response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"503":{"description":"Adapter, credentials, storage or exchange unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"504":{"description":"Exchange / adapter request deadline reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}}}}},"/api/v1/market-data/order-book":{"get":{"operationId":"market_data_order_book","tags":["Market data"],"summary":"Get an order book","description":"Normalized price / size levels. Exchange-specific depth restrictions still apply.","security":[],"parameters":[{"name":"venue","in":"query","required":true,"schema":{"description":"Exchange adapter.","example":"binance","type":"string","enum":["binance","bybit","bitget","coinbase","kraken","okx","kucoin"]}},{"name":"symbol","in":"query","required":true,"schema":{"description":"Unified market symbol. Perpetual example: BTC/USDT:USDT; listings differ by venue.","example":"BTC/USDT","type":"string","pattern":"^[A-Z0-9.]+/[A-Z0-9.]+(?::[A-Z0-9.]+(?:-[A-Z0-9.-]+)?)?$"}},{"name":"market_type","in":"query","required":false,"schema":{"description":"Account / market category. Use a settled symbol for derivatives.","example":"spot","type":"string","enum":["spot","swap","future","option"]}},{"name":"limit","in":"query","required":false,"schema":{"description":"Requested count / depth, 1–200 (default 100). Exchanges can restrict depths, return fewer records, or return a larger snapshot; Ordien truncates to this limit.","example":20,"type":"integer","minimum":1,"maximum":200}},{"name":"allow_emulated","in":"query","required":false,"schema":{"description":"Explicitly opt in to adapter emulation. Default false. Composed operations may differ from native exchange behavior; Ordien never substitutes linked or atomic order guarantees.","example":false,"type":"boolean"}}],"x-nexus-availability":"public","x-nexus-kind":"unified","x-nexus-capabilities":"/api/v1/capabilities","x-nexus-required-scope":null,"responses":{"200":{"description":"Normalized response.","content":{"application/json":{"schema":{"type":"object","required":["version","operation","venue","market_type","received_at","transport","implementation","data"],"properties":{"version":{"type":"string"},"operation":{"const":"market-data.order-book"},"venue":{"type":"string","enum":["binance","bybit","bitget","coinbase","kraken","okx","kucoin"]},"market_type":{"type":"string"},"implementation":{"enum":["native","emulated"]},"received_at":{"type":"integer","format":"int64"},"transport":{"const":"rest"},"data":{"$ref":"#/components/schemas/OrderBook"}}}}}},"400":{"description":"Invalid or missing parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"401":{"description":"Missing, expired or invalid authentication.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"403":{"description":"Insufficient scope, unverified connection or exchange_access_denied. Exact account / region cause may be unknown.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"404":{"description":"Unknown operation or connection.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"409":{"description":"emulation_opt_in_required or exchange_nonce_rejected. Review capabilities, clock synchronization and nonce ordering.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"422":{"description":"unsupported_credentials, exchange_feature_unavailable, nexus_not_implemented, extension_not_applicable, adapter_context_unsupported, market_not_found or exchange_request_rejected. Adapter gaps do not prove exchange feature absence.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"423":{"description":"execution_locked or authentication_not_ready. Consult capabilities for the venue release gate.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"429":{"description":"Shared capacity or exchange rate limit reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"502":{"description":"Exchange returned invalid normalized data or an invalid extension response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"503":{"description":"Adapter, credentials, storage or exchange unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"504":{"description":"Exchange / adapter request deadline reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}}}}},"/api/v1/market-data/trades":{"get":{"operationId":"market_data_trades","tags":["Market data"],"summary":"Recent market trades","description":"Public executed trades, newest window or exchange-supported history.","security":[],"parameters":[{"name":"venue","in":"query","required":true,"schema":{"description":"Exchange adapter.","example":"binance","type":"string","enum":["binance","bybit","bitget","coinbase","kraken","okx","kucoin"]}},{"name":"symbol","in":"query","required":true,"schema":{"description":"Unified market symbol. Perpetual example: BTC/USDT:USDT; listings differ by venue.","example":"BTC/USDT","type":"string","pattern":"^[A-Z0-9.]+/[A-Z0-9.]+(?::[A-Z0-9.]+(?:-[A-Z0-9.-]+)?)?$"}},{"name":"market_type","in":"query","required":false,"schema":{"description":"Account / market category. Use a settled symbol for derivatives.","example":"spot","type":"string","enum":["spot","swap","future","option"]}},{"name":"since","in":"query","required":false,"schema":{"description":"Inclusive Unix timestamp in milliseconds where supported. Exchange retention and pagination rules apply.","example":1791676800000,"type":"integer","minimum":0,"maximum":9007199254740991}},{"name":"limit","in":"query","required":false,"schema":{"description":"Requested count / depth, 1–200 (default 100). Exchanges can restrict depths, return fewer records, or return a larger snapshot; Ordien truncates to this limit.","example":20,"type":"integer","minimum":1,"maximum":200}},{"name":"allow_emulated","in":"query","required":false,"schema":{"description":"Explicitly opt in to adapter emulation. Default false. Composed operations may differ from native exchange behavior; Ordien never substitutes linked or atomic order guarantees.","example":false,"type":"boolean"}}],"x-nexus-availability":"public","x-nexus-kind":"unified","x-nexus-capabilities":"/api/v1/capabilities","x-nexus-required-scope":null,"responses":{"200":{"description":"Normalized response.","content":{"application/json":{"schema":{"type":"object","required":["version","operation","venue","market_type","received_at","transport","implementation","data"],"properties":{"version":{"type":"string"},"operation":{"const":"market-data.trades"},"venue":{"type":"string","enum":["binance","bybit","bitget","coinbase","kraken","okx","kucoin"]},"market_type":{"type":"string"},"implementation":{"enum":["native","emulated"]},"received_at":{"type":"integer","format":"int64"},"transport":{"const":"rest"},"data":{"type":"array","items":{"$ref":"#/components/schemas/Trade"}}}}}}},"400":{"description":"Invalid or missing parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"401":{"description":"Missing, expired or invalid authentication.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"403":{"description":"Insufficient scope, unverified connection or exchange_access_denied. Exact account / region cause may be unknown.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"404":{"description":"Unknown operation or connection.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"409":{"description":"emulation_opt_in_required or exchange_nonce_rejected. Review capabilities, clock synchronization and nonce ordering.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"422":{"description":"unsupported_credentials, exchange_feature_unavailable, nexus_not_implemented, extension_not_applicable, adapter_context_unsupported, market_not_found or exchange_request_rejected. Adapter gaps do not prove exchange feature absence.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"423":{"description":"execution_locked or authentication_not_ready. Consult capabilities for the venue release gate.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"429":{"description":"Shared capacity or exchange rate limit reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"502":{"description":"Exchange returned invalid normalized data or an invalid extension response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"503":{"description":"Adapter, credentials, storage or exchange unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"504":{"description":"Exchange / adapter request deadline reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}}}}},"/api/v1/market-data/candles":{"get":{"operationId":"market_data_candles","tags":["Market data"],"summary":"Historical candles","description":"OHLCV candles. The latest interval can be incomplete; missing intervals are not filled.","security":[],"parameters":[{"name":"venue","in":"query","required":true,"schema":{"description":"Exchange adapter.","example":"binance","type":"string","enum":["binance","bybit","bitget","coinbase","kraken","okx","kucoin"]}},{"name":"symbol","in":"query","required":true,"schema":{"description":"Unified market symbol. Perpetual example: BTC/USDT:USDT; listings differ by venue.","example":"BTC/USDT","type":"string","pattern":"^[A-Z0-9.]+/[A-Z0-9.]+(?::[A-Z0-9.]+(?:-[A-Z0-9.-]+)?)?$"}},{"name":"timeframe","in":"query","required":true,"schema":{"description":"Candle / history interval; supported intervals depend on the exchange.","example":"1h","type":"string","enum":["1m","3m","5m","15m","30m","1h","2h","4h","6h","8h","12h","1d","1w","1M"]}},{"name":"market_type","in":"query","required":false,"schema":{"description":"Account / market category. Use a settled symbol for derivatives.","example":"spot","type":"string","enum":["spot","swap","future","option"]}},{"name":"since","in":"query","required":false,"schema":{"description":"Inclusive Unix timestamp in milliseconds where supported. Exchange retention and pagination rules apply.","example":1791676800000,"type":"integer","minimum":0,"maximum":9007199254740991}},{"name":"limit","in":"query","required":false,"schema":{"description":"Requested count / depth, 1–200 (default 100). Exchanges can restrict depths, return fewer records, or return a larger snapshot; Ordien truncates to this limit.","example":20,"type":"integer","minimum":1,"maximum":200}},{"name":"allow_emulated","in":"query","required":false,"schema":{"description":"Explicitly opt in to adapter emulation. Default false. Composed operations may differ from native exchange behavior; Ordien never substitutes linked or atomic order guarantees.","example":false,"type":"boolean"}}],"x-nexus-availability":"public","x-nexus-kind":"unified","x-nexus-capabilities":"/api/v1/capabilities","x-nexus-required-scope":null,"responses":{"200":{"description":"Normalized response.","content":{"application/json":{"schema":{"type":"object","required":["version","operation","venue","market_type","received_at","transport","implementation","data"],"properties":{"version":{"type":"string"},"operation":{"const":"market-data.candles"},"venue":{"type":"string","enum":["binance","bybit","bitget","coinbase","kraken","okx","kucoin"]},"market_type":{"type":"string"},"implementation":{"enum":["native","emulated"]},"received_at":{"type":"integer","format":"int64"},"transport":{"const":"rest"},"data":{"type":"array","items":{"$ref":"#/components/schemas/Candle"}}}}}}},"400":{"description":"Invalid or missing parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"401":{"description":"Missing, expired or invalid authentication.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"403":{"description":"Insufficient scope, unverified connection or exchange_access_denied. Exact account / region cause may be unknown.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"404":{"description":"Unknown operation or connection.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"409":{"description":"emulation_opt_in_required or exchange_nonce_rejected. Review capabilities, clock synchronization and nonce ordering.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"422":{"description":"unsupported_credentials, exchange_feature_unavailable, nexus_not_implemented, extension_not_applicable, adapter_context_unsupported, market_not_found or exchange_request_rejected. Adapter gaps do not prove exchange feature absence.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"423":{"description":"execution_locked or authentication_not_ready. Consult capabilities for the venue release gate.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"429":{"description":"Shared capacity or exchange rate limit reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"502":{"description":"Exchange returned invalid normalized data or an invalid extension response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"503":{"description":"Adapter, credentials, storage or exchange unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"504":{"description":"Exchange / adapter request deadline reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}}}}},"/api/v1/market-data/status":{"get":{"operationId":"market_data_status","tags":["Market data"],"summary":"Exchange status","description":"Exchange system status when exposed by the adapter.","security":[],"parameters":[{"name":"venue","in":"query","required":true,"schema":{"description":"Exchange adapter.","example":"binance","type":"string","enum":["binance","bybit","bitget","coinbase","kraken","okx","kucoin"]}},{"name":"market_type","in":"query","required":false,"schema":{"description":"Account / market category. Use a settled symbol for derivatives.","example":"spot","type":"string","enum":["spot","swap","future","option"]}},{"name":"allow_emulated","in":"query","required":false,"schema":{"description":"Explicitly opt in to adapter emulation. Default false. Composed operations may differ from native exchange behavior; Ordien never substitutes linked or atomic order guarantees.","example":false,"type":"boolean"}}],"x-nexus-availability":"public","x-nexus-kind":"unified","x-nexus-capabilities":"/api/v1/capabilities","x-nexus-required-scope":null,"responses":{"200":{"description":"Normalized response.","content":{"application/json":{"schema":{"type":"object","required":["version","operation","venue","market_type","received_at","transport","implementation","data"],"properties":{"version":{"type":"string"},"operation":{"const":"market-data.status"},"venue":{"type":"string","enum":["binance","bybit","bitget","coinbase","kraken","okx","kucoin"]},"market_type":{"type":"string"},"implementation":{"enum":["native","emulated"]},"received_at":{"type":"integer","format":"int64"},"transport":{"const":"rest"},"data":{"$ref":"#/components/schemas/Status"}}}}}},"400":{"description":"Invalid or missing parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"401":{"description":"Missing, expired or invalid authentication.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"403":{"description":"Insufficient scope, unverified connection or exchange_access_denied. Exact account / region cause may be unknown.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"404":{"description":"Unknown operation or connection.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"409":{"description":"emulation_opt_in_required or exchange_nonce_rejected. Review capabilities, clock synchronization and nonce ordering.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"422":{"description":"unsupported_credentials, exchange_feature_unavailable, nexus_not_implemented, extension_not_applicable, adapter_context_unsupported, market_not_found or exchange_request_rejected. Adapter gaps do not prove exchange feature absence.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"423":{"description":"execution_locked or authentication_not_ready. Consult capabilities for the venue release gate.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"429":{"description":"Shared capacity or exchange rate limit reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"502":{"description":"Exchange returned invalid normalized data or an invalid extension response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"503":{"description":"Adapter, credentials, storage or exchange unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"504":{"description":"Exchange / adapter request deadline reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}}}}},"/api/v1/market-data/time":{"get":{"operationId":"market_data_time","tags":["Market data"],"summary":"Exchange server time","description":"Exchange server Unix time in milliseconds.","security":[],"parameters":[{"name":"venue","in":"query","required":true,"schema":{"description":"Exchange adapter.","example":"binance","type":"string","enum":["binance","bybit","bitget","coinbase","kraken","okx","kucoin"]}},{"name":"market_type","in":"query","required":false,"schema":{"description":"Account / market category. Use a settled symbol for derivatives.","example":"spot","type":"string","enum":["spot","swap","future","option"]}},{"name":"allow_emulated","in":"query","required":false,"schema":{"description":"Explicitly opt in to adapter emulation. Default false. Composed operations may differ from native exchange behavior; Ordien never substitutes linked or atomic order guarantees.","example":false,"type":"boolean"}}],"x-nexus-availability":"public","x-nexus-kind":"unified","x-nexus-capabilities":"/api/v1/capabilities","x-nexus-required-scope":null,"responses":{"200":{"description":"Normalized response.","content":{"application/json":{"schema":{"type":"object","required":["version","operation","venue","market_type","received_at","transport","implementation","data"],"properties":{"version":{"type":"string"},"operation":{"const":"market-data.time"},"venue":{"type":"string","enum":["binance","bybit","bitget","coinbase","kraken","okx","kucoin"]},"market_type":{"type":"string"},"implementation":{"enum":["native","emulated"]},"received_at":{"type":"integer","format":"int64"},"transport":{"const":"rest"},"data":{"$ref":"#/components/schemas/Timestamp"}}}}}},"400":{"description":"Invalid or missing parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"401":{"description":"Missing, expired or invalid authentication.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"403":{"description":"Insufficient scope, unverified connection or exchange_access_denied. Exact account / region cause may be unknown.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"404":{"description":"Unknown operation or connection.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"409":{"description":"emulation_opt_in_required or exchange_nonce_rejected. Review capabilities, clock synchronization and nonce ordering.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"422":{"description":"unsupported_credentials, exchange_feature_unavailable, nexus_not_implemented, extension_not_applicable, adapter_context_unsupported, market_not_found or exchange_request_rejected. Adapter gaps do not prove exchange feature absence.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"423":{"description":"execution_locked or authentication_not_ready. Consult capabilities for the venue release gate.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"429":{"description":"Shared capacity or exchange rate limit reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"502":{"description":"Exchange returned invalid normalized data or an invalid extension response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"503":{"description":"Adapter, credentials, storage or exchange unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"504":{"description":"Exchange / adapter request deadline reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}}}}},"/api/v1/trading/orders":{"get":{"operationId":"trading_orders","tags":["Orders & fills"],"summary":"Order history","description":"Fetch exchange order history for your connection. Some venues require a symbol.","security":[{"NexusKey":[]},{"BrowserSession":[]}],"parameters":[{"name":"venue","in":"query","required":true,"schema":{"description":"Exchange adapter.","example":"binance","type":"string","enum":["binance","bybit","bitget","coinbase","kraken","okx","kucoin"]}},{"name":"connection_id","in":"query","required":true,"schema":{"description":"ID of your verified, encrypted Ordien exchange connection.","example":"00000000-0000-4000-8000-000000000001","type":"string","format":"uuid"}},{"name":"market_type","in":"query","required":false,"schema":{"description":"Account / market category. Use a settled symbol for derivatives.","example":"spot","type":"string","enum":["spot","swap","future","option"]}},{"name":"symbol","in":"query","required":false,"schema":{"description":"Unified market symbol. Perpetual example: BTC/USDT:USDT; listings differ by venue.","example":"BTC/USDT","type":"string","pattern":"^[A-Z0-9.]+/[A-Z0-9.]+(?::[A-Z0-9.]+(?:-[A-Z0-9.-]+)?)?$"}},{"name":"since","in":"query","required":false,"schema":{"description":"Inclusive Unix timestamp in milliseconds where supported. Exchange retention and pagination rules apply.","example":1791676800000,"type":"integer","minimum":0,"maximum":9007199254740991}},{"name":"limit","in":"query","required":false,"schema":{"description":"Requested count / depth, 1–200 (default 100). Exchanges can restrict depths, return fewer records, or return a larger snapshot; Ordien truncates to this limit.","example":20,"type":"integer","minimum":1,"maximum":200}},{"name":"allow_emulated","in":"query","required":false,"schema":{"description":"Explicitly opt in to adapter emulation. Default false. Composed operations may differ from native exchange behavior; Ordien never substitutes linked or atomic order guarantees.","example":false,"type":"boolean"}}],"x-nexus-availability":"verified_connection_required","x-nexus-kind":"unified","x-nexus-capabilities":"/api/v1/capabilities","x-nexus-required-scope":"trading:read","responses":{"200":{"description":"Normalized response.","content":{"application/json":{"schema":{"type":"object","required":["version","operation","venue","market_type","received_at","transport","implementation","data"],"properties":{"version":{"type":"string"},"operation":{"const":"trading.orders"},"venue":{"type":"string","enum":["binance","bybit","bitget","coinbase","kraken","okx","kucoin"]},"market_type":{"type":"string"},"implementation":{"enum":["native","emulated"]},"received_at":{"type":"integer","format":"int64"},"transport":{"const":"rest"},"data":{"type":"array","items":{"$ref":"#/components/schemas/Order"}}}}}}},"400":{"description":"Invalid or missing parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"401":{"description":"Missing, expired or invalid authentication.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"403":{"description":"Insufficient scope, unverified connection or exchange_access_denied. Exact account / region cause may be unknown.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"404":{"description":"Unknown operation or connection.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"409":{"description":"emulation_opt_in_required or exchange_nonce_rejected. Review capabilities, clock synchronization and nonce ordering.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"422":{"description":"unsupported_credentials, exchange_feature_unavailable, nexus_not_implemented, extension_not_applicable, adapter_context_unsupported, market_not_found or exchange_request_rejected. Adapter gaps do not prove exchange feature absence.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"423":{"description":"execution_locked or authentication_not_ready. Consult capabilities for the venue release gate.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"429":{"description":"Shared capacity or exchange rate limit reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"502":{"description":"Exchange returned invalid normalized data or an invalid extension response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"503":{"description":"Adapter, credentials, storage or exchange unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"504":{"description":"Exchange / adapter request deadline reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}}}}},"/api/v1/trading/order":{"get":{"operationId":"trading_order","tags":["Orders & fills"],"summary":"Get an order","description":"Fetch one exchange order; supply its market when the venue requires it.","security":[{"NexusKey":[]},{"BrowserSession":[]}],"parameters":[{"name":"venue","in":"query","required":true,"schema":{"description":"Exchange adapter.","example":"binance","type":"string","enum":["binance","bybit","bitget","coinbase","kraken","okx","kucoin"]}},{"name":"connection_id","in":"query","required":true,"schema":{"description":"ID of your verified, encrypted Ordien exchange connection.","example":"00000000-0000-4000-8000-000000000001","type":"string","format":"uuid"}},{"name":"id","in":"query","required":true,"schema":{"description":"Exchange resource ID returned by Ordien. URL delimiters, whitespace and path traversal are rejected.","example":"exchange-order-id","type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$","minLength":1,"maxLength":128}},{"name":"market_type","in":"query","required":false,"schema":{"description":"Account / market category. Use a settled symbol for derivatives.","example":"spot","type":"string","enum":["spot","swap","future","option"]}},{"name":"symbol","in":"query","required":false,"schema":{"description":"Unified market symbol. Perpetual example: BTC/USDT:USDT; listings differ by venue.","example":"BTC/USDT","type":"string","pattern":"^[A-Z0-9.]+/[A-Z0-9.]+(?::[A-Z0-9.]+(?:-[A-Z0-9.-]+)?)?$"}},{"name":"allow_emulated","in":"query","required":false,"schema":{"description":"Explicitly opt in to adapter emulation. Default false. Composed operations may differ from native exchange behavior; Ordien never substitutes linked or atomic order guarantees.","example":false,"type":"boolean"}}],"x-nexus-availability":"verified_connection_required","x-nexus-kind":"unified","x-nexus-capabilities":"/api/v1/capabilities","x-nexus-required-scope":"trading:read","responses":{"200":{"description":"Normalized response.","content":{"application/json":{"schema":{"type":"object","required":["version","operation","venue","market_type","received_at","transport","implementation","data"],"properties":{"version":{"type":"string"},"operation":{"const":"trading.order"},"venue":{"type":"string","enum":["binance","bybit","bitget","coinbase","kraken","okx","kucoin"]},"market_type":{"type":"string"},"implementation":{"enum":["native","emulated"]},"received_at":{"type":"integer","format":"int64"},"transport":{"const":"rest"},"data":{"$ref":"#/components/schemas/Order"}}}}}},"400":{"description":"Invalid or missing parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"401":{"description":"Missing, expired or invalid authentication.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"403":{"description":"Insufficient scope, unverified connection or exchange_access_denied. Exact account / region cause may be unknown.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"404":{"description":"Unknown operation or connection.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"409":{"description":"emulation_opt_in_required or exchange_nonce_rejected. Review capabilities, clock synchronization and nonce ordering.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"422":{"description":"unsupported_credentials, exchange_feature_unavailable, nexus_not_implemented, extension_not_applicable, adapter_context_unsupported, market_not_found or exchange_request_rejected. Adapter gaps do not prove exchange feature absence.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"423":{"description":"execution_locked or authentication_not_ready. Consult capabilities for the venue release gate.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"429":{"description":"Shared capacity or exchange rate limit reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"502":{"description":"Exchange returned invalid normalized data or an invalid extension response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"503":{"description":"Adapter, credentials, storage or exchange unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"504":{"description":"Exchange / adapter request deadline reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}}}}},"/api/v1/trading/open-orders":{"get":{"operationId":"trading_open_orders","tags":["Orders & fills"],"summary":"Open orders","description":"Fetch current open orders at the exchange.","security":[{"NexusKey":[]},{"BrowserSession":[]}],"parameters":[{"name":"venue","in":"query","required":true,"schema":{"description":"Exchange adapter.","example":"binance","type":"string","enum":["binance","bybit","bitget","coinbase","kraken","okx","kucoin"]}},{"name":"connection_id","in":"query","required":true,"schema":{"description":"ID of your verified, encrypted Ordien exchange connection.","example":"00000000-0000-4000-8000-000000000001","type":"string","format":"uuid"}},{"name":"market_type","in":"query","required":false,"schema":{"description":"Account / market category. Use a settled symbol for derivatives.","example":"spot","type":"string","enum":["spot","swap","future","option"]}},{"name":"symbol","in":"query","required":false,"schema":{"description":"Unified market symbol. Perpetual example: BTC/USDT:USDT; listings differ by venue.","example":"BTC/USDT","type":"string","pattern":"^[A-Z0-9.]+/[A-Z0-9.]+(?::[A-Z0-9.]+(?:-[A-Z0-9.-]+)?)?$"}},{"name":"since","in":"query","required":false,"schema":{"description":"Inclusive Unix timestamp in milliseconds where supported. Exchange retention and pagination rules apply.","example":1791676800000,"type":"integer","minimum":0,"maximum":9007199254740991}},{"name":"limit","in":"query","required":false,"schema":{"description":"Requested count / depth, 1–200 (default 100). Exchanges can restrict depths, return fewer records, or return a larger snapshot; Ordien truncates to this limit.","example":20,"type":"integer","minimum":1,"maximum":200}},{"name":"allow_emulated","in":"query","required":false,"schema":{"description":"Explicitly opt in to adapter emulation. Default false. Composed operations may differ from native exchange behavior; Ordien never substitutes linked or atomic order guarantees.","example":false,"type":"boolean"}}],"x-nexus-availability":"verified_connection_required","x-nexus-kind":"unified","x-nexus-capabilities":"/api/v1/capabilities","x-nexus-required-scope":"trading:read","responses":{"200":{"description":"Normalized response.","content":{"application/json":{"schema":{"type":"object","required":["version","operation","venue","market_type","received_at","transport","implementation","data"],"properties":{"version":{"type":"string"},"operation":{"const":"trading.open-orders"},"venue":{"type":"string","enum":["binance","bybit","bitget","coinbase","kraken","okx","kucoin"]},"market_type":{"type":"string"},"implementation":{"enum":["native","emulated"]},"received_at":{"type":"integer","format":"int64"},"transport":{"const":"rest"},"data":{"type":"array","items":{"$ref":"#/components/schemas/Order"}}}}}}},"400":{"description":"Invalid or missing parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"401":{"description":"Missing, expired or invalid authentication.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"403":{"description":"Insufficient scope, unverified connection or exchange_access_denied. Exact account / region cause may be unknown.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"404":{"description":"Unknown operation or connection.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"409":{"description":"emulation_opt_in_required or exchange_nonce_rejected. Review capabilities, clock synchronization and nonce ordering.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"422":{"description":"unsupported_credentials, exchange_feature_unavailable, nexus_not_implemented, extension_not_applicable, adapter_context_unsupported, market_not_found or exchange_request_rejected. Adapter gaps do not prove exchange feature absence.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"423":{"description":"execution_locked or authentication_not_ready. Consult capabilities for the venue release gate.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"429":{"description":"Shared capacity or exchange rate limit reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"502":{"description":"Exchange returned invalid normalized data or an invalid extension response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"503":{"description":"Adapter, credentials, storage or exchange unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"504":{"description":"Exchange / adapter request deadline reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}}}}},"/api/v1/trading/closed-orders":{"get":{"operationId":"trading_closed_orders","tags":["Orders & fills"],"summary":"Closed orders","description":"Fetch exchange closed orders; adapters may emulate this from order history.","security":[{"NexusKey":[]},{"BrowserSession":[]}],"parameters":[{"name":"venue","in":"query","required":true,"schema":{"description":"Exchange adapter.","example":"binance","type":"string","enum":["binance","bybit","bitget","coinbase","kraken","okx","kucoin"]}},{"name":"connection_id","in":"query","required":true,"schema":{"description":"ID of your verified, encrypted Ordien exchange connection.","example":"00000000-0000-4000-8000-000000000001","type":"string","format":"uuid"}},{"name":"market_type","in":"query","required":false,"schema":{"description":"Account / market category. Use a settled symbol for derivatives.","example":"spot","type":"string","enum":["spot","swap","future","option"]}},{"name":"symbol","in":"query","required":false,"schema":{"description":"Unified market symbol. Perpetual example: BTC/USDT:USDT; listings differ by venue.","example":"BTC/USDT","type":"string","pattern":"^[A-Z0-9.]+/[A-Z0-9.]+(?::[A-Z0-9.]+(?:-[A-Z0-9.-]+)?)?$"}},{"name":"since","in":"query","required":false,"schema":{"description":"Inclusive Unix timestamp in milliseconds where supported. Exchange retention and pagination rules apply.","example":1791676800000,"type":"integer","minimum":0,"maximum":9007199254740991}},{"name":"limit","in":"query","required":false,"schema":{"description":"Requested count / depth, 1–200 (default 100). Exchanges can restrict depths, return fewer records, or return a larger snapshot; Ordien truncates to this limit.","example":20,"type":"integer","minimum":1,"maximum":200}},{"name":"allow_emulated","in":"query","required":false,"schema":{"description":"Explicitly opt in to adapter emulation. Default false. Composed operations may differ from native exchange behavior; Ordien never substitutes linked or atomic order guarantees.","example":false,"type":"boolean"}}],"x-nexus-availability":"verified_connection_required","x-nexus-kind":"unified","x-nexus-capabilities":"/api/v1/capabilities","x-nexus-required-scope":"trading:read","responses":{"200":{"description":"Normalized response.","content":{"application/json":{"schema":{"type":"object","required":["version","operation","venue","market_type","received_at","transport","implementation","data"],"properties":{"version":{"type":"string"},"operation":{"const":"trading.closed-orders"},"venue":{"type":"string","enum":["binance","bybit","bitget","coinbase","kraken","okx","kucoin"]},"market_type":{"type":"string"},"implementation":{"enum":["native","emulated"]},"received_at":{"type":"integer","format":"int64"},"transport":{"const":"rest"},"data":{"type":"array","items":{"$ref":"#/components/schemas/Order"}}}}}}},"400":{"description":"Invalid or missing parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"401":{"description":"Missing, expired or invalid authentication.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"403":{"description":"Insufficient scope, unverified connection or exchange_access_denied. Exact account / region cause may be unknown.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"404":{"description":"Unknown operation or connection.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"409":{"description":"emulation_opt_in_required or exchange_nonce_rejected. Review capabilities, clock synchronization and nonce ordering.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"422":{"description":"unsupported_credentials, exchange_feature_unavailable, nexus_not_implemented, extension_not_applicable, adapter_context_unsupported, market_not_found or exchange_request_rejected. Adapter gaps do not prove exchange feature absence.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"423":{"description":"execution_locked or authentication_not_ready. Consult capabilities for the venue release gate.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"429":{"description":"Shared capacity or exchange rate limit reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"502":{"description":"Exchange returned invalid normalized data or an invalid extension response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"503":{"description":"Adapter, credentials, storage or exchange unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"504":{"description":"Exchange / adapter request deadline reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}}}}},"/api/v1/trading/fills":{"get":{"operationId":"trading_fills","tags":["Orders & fills"],"summary":"Your fills","description":"Your execution history with normalized fees, amounts and exchange IDs.","security":[{"NexusKey":[]},{"BrowserSession":[]}],"parameters":[{"name":"venue","in":"query","required":true,"schema":{"description":"Exchange adapter.","example":"binance","type":"string","enum":["binance","bybit","bitget","coinbase","kraken","okx","kucoin"]}},{"name":"connection_id","in":"query","required":true,"schema":{"description":"ID of your verified, encrypted Ordien exchange connection.","example":"00000000-0000-4000-8000-000000000001","type":"string","format":"uuid"}},{"name":"market_type","in":"query","required":false,"schema":{"description":"Account / market category. Use a settled symbol for derivatives.","example":"spot","type":"string","enum":["spot","swap","future","option"]}},{"name":"symbol","in":"query","required":false,"schema":{"description":"Unified market symbol. Perpetual example: BTC/USDT:USDT; listings differ by venue.","example":"BTC/USDT","type":"string","pattern":"^[A-Z0-9.]+/[A-Z0-9.]+(?::[A-Z0-9.]+(?:-[A-Z0-9.-]+)?)?$"}},{"name":"since","in":"query","required":false,"schema":{"description":"Inclusive Unix timestamp in milliseconds where supported. Exchange retention and pagination rules apply.","example":1791676800000,"type":"integer","minimum":0,"maximum":9007199254740991}},{"name":"limit","in":"query","required":false,"schema":{"description":"Requested count / depth, 1–200 (default 100). Exchanges can restrict depths, return fewer records, or return a larger snapshot; Ordien truncates to this limit.","example":20,"type":"integer","minimum":1,"maximum":200}},{"name":"allow_emulated","in":"query","required":false,"schema":{"description":"Explicitly opt in to adapter emulation. Default false. Composed operations may differ from native exchange behavior; Ordien never substitutes linked or atomic order guarantees.","example":false,"type":"boolean"}}],"x-nexus-availability":"verified_connection_required","x-nexus-kind":"unified","x-nexus-capabilities":"/api/v1/capabilities","x-nexus-required-scope":"trading:read","responses":{"200":{"description":"Normalized response.","content":{"application/json":{"schema":{"type":"object","required":["version","operation","venue","market_type","received_at","transport","implementation","data"],"properties":{"version":{"type":"string"},"operation":{"const":"trading.fills"},"venue":{"type":"string","enum":["binance","bybit","bitget","coinbase","kraken","okx","kucoin"]},"market_type":{"type":"string"},"implementation":{"enum":["native","emulated"]},"received_at":{"type":"integer","format":"int64"},"transport":{"const":"rest"},"data":{"type":"array","items":{"$ref":"#/components/schemas/Trade"}}}}}}},"400":{"description":"Invalid or missing parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"401":{"description":"Missing, expired or invalid authentication.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"403":{"description":"Insufficient scope, unverified connection or exchange_access_denied. Exact account / region cause may be unknown.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"404":{"description":"Unknown operation or connection.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"409":{"description":"emulation_opt_in_required or exchange_nonce_rejected. Review capabilities, clock synchronization and nonce ordering.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"422":{"description":"unsupported_credentials, exchange_feature_unavailable, nexus_not_implemented, extension_not_applicable, adapter_context_unsupported, market_not_found or exchange_request_rejected. Adapter gaps do not prove exchange feature absence.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"423":{"description":"execution_locked or authentication_not_ready. Consult capabilities for the venue release gate.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"429":{"description":"Shared capacity or exchange rate limit reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"502":{"description":"Exchange returned invalid normalized data or an invalid extension response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"503":{"description":"Adapter, credentials, storage or exchange unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"504":{"description":"Exchange / adapter request deadline reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}}}}},"/api/v1/trading/create-order":{"post":{"operationId":"trading_create_order","tags":["Orders & fills"],"summary":"Create an order","description":"Validated contract for market and limit orders. Execution is locked pending venue certification, durable idempotency and reconciliation. This release always returns an error; a successful execution response is intentionally not advertised.","security":[{"NexusKey":[]},{"BrowserSession":[]}],"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["venue","connection_id","symbol","order_type","side","amount"],"properties":{"venue":{"description":"Exchange adapter.","example":"binance","type":"string","enum":["binance","bybit","bitget","coinbase","kraken","okx","kucoin"]},"connection_id":{"description":"ID of your verified, encrypted Ordien exchange connection.","example":"00000000-0000-4000-8000-000000000001","type":"string","format":"uuid"},"symbol":{"description":"Unified market symbol. Perpetual example: BTC/USDT:USDT; listings differ by venue.","example":"BTC/USDT","type":"string","pattern":"^[A-Z0-9.]+/[A-Z0-9.]+(?::[A-Z0-9.]+(?:-[A-Z0-9.-]+)?)?$"},"order_type":{"description":"Normalized order type.","example":"limit","type":"string","enum":["limit","market"]},"side":{"description":"Order direction.","example":"buy","type":"string","enum":["buy","sell"]},"amount":{"description":"Positive decimal string in base units; contracts use the contract amount shown by market metadata.","example":"0.001","type":"string","pattern":"^(?:0|[1-9][0-9]*)(?:\\.[0-9]{1,18})?$"},"market_type":{"description":"Account / market category. Use a settled symbol for derivatives.","example":"spot","type":"string","enum":["spot","swap","future","option"]},"price":{"description":"Positive limit price as a decimal string.","example":"60000.00","type":"string","pattern":"^(?:0|[1-9][0-9]*)(?:\\.[0-9]{1,18})?$"},"allow_emulated":{"description":"Explicitly opt in to adapter emulation. Default false. Composed operations may differ from native exchange behavior; Ordien never substitutes linked or atomic order guarantees.","example":false,"type":"boolean"}}}}}},"x-nexus-availability":"execution_locked","x-nexus-kind":"unified","x-nexus-capabilities":"/api/v1/capabilities","x-nexus-required-scope":"trading:write","responses":{"400":{"description":"Invalid or missing parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"401":{"description":"Missing, expired or invalid authentication.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"403":{"description":"Insufficient scope, unverified connection or exchange_access_denied. Exact account / region cause may be unknown.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"404":{"description":"Unknown operation or connection.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"409":{"description":"emulation_opt_in_required or exchange_nonce_rejected. Review capabilities, clock synchronization and nonce ordering.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"422":{"description":"unsupported_credentials, exchange_feature_unavailable, nexus_not_implemented, extension_not_applicable, adapter_context_unsupported, market_not_found or exchange_request_rejected. Adapter gaps do not prove exchange feature absence.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"423":{"description":"execution_locked or authentication_not_ready. Consult capabilities for the venue release gate.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"429":{"description":"Shared capacity or exchange rate limit reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"502":{"description":"Exchange returned invalid normalized data or an invalid extension response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"503":{"description":"Adapter, credentials, storage or exchange unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"504":{"description":"Exchange / adapter request deadline reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}}}}},"/api/v1/trading/amend-order":{"post":{"operationId":"trading_amend_order","tags":["Orders & fills"],"summary":"Amend an order","description":"Validated amendment contract. A timeout must be reconciled before retrying; execution is locked. This release always returns an error; a successful execution response is intentionally not advertised.","security":[{"NexusKey":[]},{"BrowserSession":[]}],"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["venue","connection_id","id","symbol","order_type","side","amount"],"properties":{"venue":{"description":"Exchange adapter.","example":"binance","type":"string","enum":["binance","bybit","bitget","coinbase","kraken","okx","kucoin"]},"connection_id":{"description":"ID of your verified, encrypted Ordien exchange connection.","example":"00000000-0000-4000-8000-000000000001","type":"string","format":"uuid"},"id":{"description":"Exchange resource ID returned by Ordien. URL delimiters, whitespace and path traversal are rejected.","example":"exchange-order-id","type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$","minLength":1,"maxLength":128},"symbol":{"description":"Unified market symbol. Perpetual example: BTC/USDT:USDT; listings differ by venue.","example":"BTC/USDT","type":"string","pattern":"^[A-Z0-9.]+/[A-Z0-9.]+(?::[A-Z0-9.]+(?:-[A-Z0-9.-]+)?)?$"},"order_type":{"description":"Normalized order type.","example":"limit","type":"string","enum":["limit","market"]},"side":{"description":"Order direction.","example":"buy","type":"string","enum":["buy","sell"]},"amount":{"description":"Positive decimal string in base units; contracts use the contract amount shown by market metadata.","example":"0.001","type":"string","pattern":"^(?:0|[1-9][0-9]*)(?:\\.[0-9]{1,18})?$"},"market_type":{"description":"Account / market category. Use a settled symbol for derivatives.","example":"spot","type":"string","enum":["spot","swap","future","option"]},"price":{"description":"Positive limit price as a decimal string.","example":"60000.00","type":"string","pattern":"^(?:0|[1-9][0-9]*)(?:\\.[0-9]{1,18})?$"},"allow_emulated":{"description":"Explicitly opt in to adapter emulation. Default false. Composed operations may differ from native exchange behavior; Ordien never substitutes linked or atomic order guarantees.","example":false,"type":"boolean"}}}}}},"x-nexus-availability":"execution_locked","x-nexus-kind":"unified","x-nexus-capabilities":"/api/v1/capabilities","x-nexus-required-scope":"trading:write","responses":{"400":{"description":"Invalid or missing parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"401":{"description":"Missing, expired or invalid authentication.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"403":{"description":"Insufficient scope, unverified connection or exchange_access_denied. Exact account / region cause may be unknown.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"404":{"description":"Unknown operation or connection.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"409":{"description":"emulation_opt_in_required or exchange_nonce_rejected. Review capabilities, clock synchronization and nonce ordering.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"422":{"description":"unsupported_credentials, exchange_feature_unavailable, nexus_not_implemented, extension_not_applicable, adapter_context_unsupported, market_not_found or exchange_request_rejected. Adapter gaps do not prove exchange feature absence.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"423":{"description":"execution_locked or authentication_not_ready. Consult capabilities for the venue release gate.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"429":{"description":"Shared capacity or exchange rate limit reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"502":{"description":"Exchange returned invalid normalized data or an invalid extension response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"503":{"description":"Adapter, credentials, storage or exchange unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"504":{"description":"Exchange / adapter request deadline reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}}}}},"/api/v1/trading/cancel-order":{"post":{"operationId":"trading_cancel_order","tags":["Orders & fills"],"summary":"Cancel an order","description":"Validated cancellation contract. Execution is locked with other private mutations. This release always returns an error; a successful execution response is intentionally not advertised.","security":[{"NexusKey":[]},{"BrowserSession":[]}],"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["venue","connection_id","id"],"properties":{"venue":{"description":"Exchange adapter.","example":"binance","type":"string","enum":["binance","bybit","bitget","coinbase","kraken","okx","kucoin"]},"connection_id":{"description":"ID of your verified, encrypted Ordien exchange connection.","example":"00000000-0000-4000-8000-000000000001","type":"string","format":"uuid"},"id":{"description":"Exchange resource ID returned by Ordien. URL delimiters, whitespace and path traversal are rejected.","example":"exchange-order-id","type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$","minLength":1,"maxLength":128},"market_type":{"description":"Account / market category. Use a settled symbol for derivatives.","example":"spot","type":"string","enum":["spot","swap","future","option"]},"symbol":{"description":"Unified market symbol. Perpetual example: BTC/USDT:USDT; listings differ by venue.","example":"BTC/USDT","type":"string","pattern":"^[A-Z0-9.]+/[A-Z0-9.]+(?::[A-Z0-9.]+(?:-[A-Z0-9.-]+)?)?$"},"allow_emulated":{"description":"Explicitly opt in to adapter emulation. Default false. Composed operations may differ from native exchange behavior; Ordien never substitutes linked or atomic order guarantees.","example":false,"type":"boolean"}}}}}},"x-nexus-availability":"execution_locked","x-nexus-kind":"unified","x-nexus-capabilities":"/api/v1/capabilities","x-nexus-required-scope":"trading:write","responses":{"400":{"description":"Invalid or missing parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"401":{"description":"Missing, expired or invalid authentication.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"403":{"description":"Insufficient scope, unverified connection or exchange_access_denied. Exact account / region cause may be unknown.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"404":{"description":"Unknown operation or connection.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"409":{"description":"emulation_opt_in_required or exchange_nonce_rejected. Review capabilities, clock synchronization and nonce ordering.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"422":{"description":"unsupported_credentials, exchange_feature_unavailable, nexus_not_implemented, extension_not_applicable, adapter_context_unsupported, market_not_found or exchange_request_rejected. Adapter gaps do not prove exchange feature absence.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"423":{"description":"execution_locked or authentication_not_ready. Consult capabilities for the venue release gate.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"429":{"description":"Shared capacity or exchange rate limit reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"502":{"description":"Exchange returned invalid normalized data or an invalid extension response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"503":{"description":"Adapter, credentials, storage or exchange unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"504":{"description":"Exchange / adapter request deadline reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}}}}},"/api/v1/trading/cancel-all-orders":{"post":{"operationId":"trading_cancel_all_orders","tags":["Orders & fills"],"summary":"Cancel all orders","description":"Validated cancellation contract scoped to a connection and optional market. Execution is locked. This release always returns an error; a successful execution response is intentionally not advertised.","security":[{"NexusKey":[]},{"BrowserSession":[]}],"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["venue","connection_id"],"properties":{"venue":{"description":"Exchange adapter.","example":"binance","type":"string","enum":["binance","bybit","bitget","coinbase","kraken","okx","kucoin"]},"connection_id":{"description":"ID of your verified, encrypted Ordien exchange connection.","example":"00000000-0000-4000-8000-000000000001","type":"string","format":"uuid"},"market_type":{"description":"Account / market category. Use a settled symbol for derivatives.","example":"spot","type":"string","enum":["spot","swap","future","option"]},"symbol":{"description":"Unified market symbol. Perpetual example: BTC/USDT:USDT; listings differ by venue.","example":"BTC/USDT","type":"string","pattern":"^[A-Z0-9.]+/[A-Z0-9.]+(?::[A-Z0-9.]+(?:-[A-Z0-9.-]+)?)?$"},"allow_emulated":{"description":"Explicitly opt in to adapter emulation. Default false. Composed operations may differ from native exchange behavior; Ordien never substitutes linked or atomic order guarantees.","example":false,"type":"boolean"}}}}}},"x-nexus-availability":"execution_locked","x-nexus-kind":"unified","x-nexus-capabilities":"/api/v1/capabilities","x-nexus-required-scope":"trading:write","responses":{"400":{"description":"Invalid or missing parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"401":{"description":"Missing, expired or invalid authentication.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"403":{"description":"Insufficient scope, unverified connection or exchange_access_denied. Exact account / region cause may be unknown.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"404":{"description":"Unknown operation or connection.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"409":{"description":"emulation_opt_in_required or exchange_nonce_rejected. Review capabilities, clock synchronization and nonce ordering.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"422":{"description":"unsupported_credentials, exchange_feature_unavailable, nexus_not_implemented, extension_not_applicable, adapter_context_unsupported, market_not_found or exchange_request_rejected. Adapter gaps do not prove exchange feature absence.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"423":{"description":"execution_locked or authentication_not_ready. Consult capabilities for the venue release gate.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"429":{"description":"Shared capacity or exchange rate limit reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"502":{"description":"Exchange returned invalid normalized data or an invalid extension response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"503":{"description":"Adapter, credentials, storage or exchange unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"504":{"description":"Exchange / adapter request deadline reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}}}}},"/api/v1/accounts/balances":{"get":{"operationId":"accounts_balances","tags":["Accounts"],"summary":"Account balances","description":"Available, used and total balances by currency. Account category is selected with market_type.","security":[{"NexusKey":[]},{"BrowserSession":[]}],"parameters":[{"name":"venue","in":"query","required":true,"schema":{"description":"Exchange adapter.","example":"binance","type":"string","enum":["binance","bybit","bitget","coinbase","kraken","okx","kucoin"]}},{"name":"connection_id","in":"query","required":true,"schema":{"description":"ID of your verified, encrypted Ordien exchange connection.","example":"00000000-0000-4000-8000-000000000001","type":"string","format":"uuid"}},{"name":"market_type","in":"query","required":false,"schema":{"description":"Account / market category. Use a settled symbol for derivatives.","example":"spot","type":"string","enum":["spot","swap","future","option"]}},{"name":"allow_emulated","in":"query","required":false,"schema":{"description":"Explicitly opt in to adapter emulation. Default false. Composed operations may differ from native exchange behavior; Ordien never substitutes linked or atomic order guarantees.","example":false,"type":"boolean"}}],"x-nexus-availability":"verified_connection_required","x-nexus-kind":"unified","x-nexus-capabilities":"/api/v1/capabilities","x-nexus-required-scope":"accounts:read","responses":{"200":{"description":"Normalized response.","content":{"application/json":{"schema":{"type":"object","required":["version","operation","venue","market_type","received_at","transport","implementation","data"],"properties":{"version":{"type":"string"},"operation":{"const":"accounts.balances"},"venue":{"type":"string","enum":["binance","bybit","bitget","coinbase","kraken","okx","kucoin"]},"market_type":{"type":"string"},"implementation":{"enum":["native","emulated"]},"received_at":{"type":"integer","format":"int64"},"transport":{"const":"rest"},"data":{"$ref":"#/components/schemas/Balance"}}}}}},"400":{"description":"Invalid or missing parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"401":{"description":"Missing, expired or invalid authentication.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"403":{"description":"Insufficient scope, unverified connection or exchange_access_denied. Exact account / region cause may be unknown.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"404":{"description":"Unknown operation or connection.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"409":{"description":"emulation_opt_in_required or exchange_nonce_rejected. Review capabilities, clock synchronization and nonce ordering.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"422":{"description":"unsupported_credentials, exchange_feature_unavailable, nexus_not_implemented, extension_not_applicable, adapter_context_unsupported, market_not_found or exchange_request_rejected. Adapter gaps do not prove exchange feature absence.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"423":{"description":"execution_locked or authentication_not_ready. Consult capabilities for the venue release gate.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"429":{"description":"Shared capacity or exchange rate limit reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"502":{"description":"Exchange returned invalid normalized data or an invalid extension response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"503":{"description":"Adapter, credentials, storage or exchange unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"504":{"description":"Exchange / adapter request deadline reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}}}}},"/api/v1/accounts/accounts":{"get":{"operationId":"accounts_accounts","tags":["Accounts"],"summary":"Exchange accounts","description":"Exchange subaccount identifiers when supported.","security":[{"NexusKey":[]},{"BrowserSession":[]}],"parameters":[{"name":"venue","in":"query","required":true,"schema":{"description":"Exchange adapter.","example":"binance","type":"string","enum":["binance","bybit","bitget","coinbase","kraken","okx","kucoin"]}},{"name":"connection_id","in":"query","required":true,"schema":{"description":"ID of your verified, encrypted Ordien exchange connection.","example":"00000000-0000-4000-8000-000000000001","type":"string","format":"uuid"}},{"name":"market_type","in":"query","required":false,"schema":{"description":"Account / market category. Use a settled symbol for derivatives.","example":"spot","type":"string","enum":["spot","swap","future","option"]}},{"name":"allow_emulated","in":"query","required":false,"schema":{"description":"Explicitly opt in to adapter emulation. Default false. Composed operations may differ from native exchange behavior; Ordien never substitutes linked or atomic order guarantees.","example":false,"type":"boolean"}}],"x-nexus-availability":"verified_connection_required","x-nexus-kind":"unified","x-nexus-capabilities":"/api/v1/capabilities","x-nexus-required-scope":"accounts:read","responses":{"200":{"description":"Normalized response.","content":{"application/json":{"schema":{"type":"object","required":["version","operation","venue","market_type","received_at","transport","implementation","data"],"properties":{"version":{"type":"string"},"operation":{"const":"accounts.accounts"},"venue":{"type":"string","enum":["binance","bybit","bitget","coinbase","kraken","okx","kucoin"]},"market_type":{"type":"string"},"implementation":{"enum":["native","emulated"]},"received_at":{"type":"integer","format":"int64"},"transport":{"const":"rest"},"data":{"type":"array","items":{"$ref":"#/components/schemas/Account"}}}}}}},"400":{"description":"Invalid or missing parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"401":{"description":"Missing, expired or invalid authentication.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"403":{"description":"Insufficient scope, unverified connection or exchange_access_denied. Exact account / region cause may be unknown.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"404":{"description":"Unknown operation or connection.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"409":{"description":"emulation_opt_in_required or exchange_nonce_rejected. Review capabilities, clock synchronization and nonce ordering.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"422":{"description":"unsupported_credentials, exchange_feature_unavailable, nexus_not_implemented, extension_not_applicable, adapter_context_unsupported, market_not_found or exchange_request_rejected. Adapter gaps do not prove exchange feature absence.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"423":{"description":"execution_locked or authentication_not_ready. Consult capabilities for the venue release gate.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"429":{"description":"Shared capacity or exchange rate limit reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"502":{"description":"Exchange returned invalid normalized data or an invalid extension response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"503":{"description":"Adapter, credentials, storage or exchange unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"504":{"description":"Exchange / adapter request deadline reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}}}}},"/api/v1/accounts/fees":{"get":{"operationId":"accounts_fees","tags":["Accounts"],"summary":"Trading fees","description":"Account-specific maker and taker fees. Supply symbol for venues requiring bounded per-market fee discovery; a global fee tier is not assumed to apply to every pair.","security":[{"NexusKey":[]},{"BrowserSession":[]}],"parameters":[{"name":"venue","in":"query","required":true,"schema":{"description":"Exchange adapter.","example":"binance","type":"string","enum":["binance","bybit","bitget","coinbase","kraken","okx","kucoin"]}},{"name":"connection_id","in":"query","required":true,"schema":{"description":"ID of your verified, encrypted Ordien exchange connection.","example":"00000000-0000-4000-8000-000000000001","type":"string","format":"uuid"}},{"name":"market_type","in":"query","required":false,"schema":{"description":"Account / market category. Use a settled symbol for derivatives.","example":"spot","type":"string","enum":["spot","swap","future","option"]}},{"name":"symbol","in":"query","required":false,"schema":{"description":"Unified market symbol. Perpetual example: BTC/USDT:USDT; listings differ by venue.","example":"BTC/USDT","type":"string","pattern":"^[A-Z0-9.]+/[A-Z0-9.]+(?::[A-Z0-9.]+(?:-[A-Z0-9.-]+)?)?$"}},{"name":"allow_emulated","in":"query","required":false,"schema":{"description":"Explicitly opt in to adapter emulation. Default false. Composed operations may differ from native exchange behavior; Ordien never substitutes linked or atomic order guarantees.","example":false,"type":"boolean"}}],"x-nexus-availability":"verified_connection_required","x-nexus-kind":"unified","x-nexus-capabilities":"/api/v1/capabilities","x-nexus-required-scope":"accounts:read","responses":{"200":{"description":"Normalized response.","content":{"application/json":{"schema":{"type":"object","required":["version","operation","venue","market_type","received_at","transport","implementation","data"],"properties":{"version":{"type":"string"},"operation":{"const":"accounts.fees"},"venue":{"type":"string","enum":["binance","bybit","bitget","coinbase","kraken","okx","kucoin"]},"market_type":{"type":"string"},"implementation":{"enum":["native","emulated"]},"received_at":{"type":"integer","format":"int64"},"transport":{"const":"rest"},"data":{"$ref":"#/components/schemas/FeeMap"}}}}}},"400":{"description":"Invalid or missing parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"401":{"description":"Missing, expired or invalid authentication.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"403":{"description":"Insufficient scope, unverified connection or exchange_access_denied. Exact account / region cause may be unknown.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"404":{"description":"Unknown operation or connection.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"409":{"description":"emulation_opt_in_required or exchange_nonce_rejected. Review capabilities, clock synchronization and nonce ordering.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"422":{"description":"unsupported_credentials, exchange_feature_unavailable, nexus_not_implemented, extension_not_applicable, adapter_context_unsupported, market_not_found or exchange_request_rejected. Adapter gaps do not prove exchange feature absence.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"423":{"description":"execution_locked or authentication_not_ready. Consult capabilities for the venue release gate.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"429":{"description":"Shared capacity or exchange rate limit reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"502":{"description":"Exchange returned invalid normalized data or an invalid extension response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"503":{"description":"Adapter, credentials, storage or exchange unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"504":{"description":"Exchange / adapter request deadline reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}}}}},"/api/v1/accounts/ledger":{"get":{"operationId":"accounts_ledger","tags":["Accounts"],"summary":"Account ledger","description":"Normalized account ledger entries within the exchange retention window.","security":[{"NexusKey":[]},{"BrowserSession":[]}],"parameters":[{"name":"venue","in":"query","required":true,"schema":{"description":"Exchange adapter.","example":"binance","type":"string","enum":["binance","bybit","bitget","coinbase","kraken","okx","kucoin"]}},{"name":"connection_id","in":"query","required":true,"schema":{"description":"ID of your verified, encrypted Ordien exchange connection.","example":"00000000-0000-4000-8000-000000000001","type":"string","format":"uuid"}},{"name":"market_type","in":"query","required":false,"schema":{"description":"Account / market category. Use a settled symbol for derivatives.","example":"spot","type":"string","enum":["spot","swap","future","option"]}},{"name":"currency","in":"query","required":false,"schema":{"description":"Unified currency code.","example":"USDT","type":"string","pattern":"^[A-Z0-9.]{1,24}$"}},{"name":"since","in":"query","required":false,"schema":{"description":"Inclusive Unix timestamp in milliseconds where supported. Exchange retention and pagination rules apply.","example":1791676800000,"type":"integer","minimum":0,"maximum":9007199254740991}},{"name":"limit","in":"query","required":false,"schema":{"description":"Requested count / depth, 1–200 (default 100). Exchanges can restrict depths, return fewer records, or return a larger snapshot; Ordien truncates to this limit.","example":20,"type":"integer","minimum":1,"maximum":200}},{"name":"allow_emulated","in":"query","required":false,"schema":{"description":"Explicitly opt in to adapter emulation. Default false. Composed operations may differ from native exchange behavior; Ordien never substitutes linked or atomic order guarantees.","example":false,"type":"boolean"}}],"x-nexus-availability":"verified_connection_required","x-nexus-kind":"unified","x-nexus-capabilities":"/api/v1/capabilities","x-nexus-required-scope":"accounts:read","responses":{"200":{"description":"Normalized response.","content":{"application/json":{"schema":{"type":"object","required":["version","operation","venue","market_type","received_at","transport","implementation","data"],"properties":{"version":{"type":"string"},"operation":{"const":"accounts.ledger"},"venue":{"type":"string","enum":["binance","bybit","bitget","coinbase","kraken","okx","kucoin"]},"market_type":{"type":"string"},"implementation":{"enum":["native","emulated"]},"received_at":{"type":"integer","format":"int64"},"transport":{"const":"rest"},"data":{"type":"array","items":{"$ref":"#/components/schemas/LedgerEntry"}}}}}}},"400":{"description":"Invalid or missing parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"401":{"description":"Missing, expired or invalid authentication.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"403":{"description":"Insufficient scope, unverified connection or exchange_access_denied. Exact account / region cause may be unknown.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"404":{"description":"Unknown operation or connection.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"409":{"description":"emulation_opt_in_required or exchange_nonce_rejected. Review capabilities, clock synchronization and nonce ordering.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"422":{"description":"unsupported_credentials, exchange_feature_unavailable, nexus_not_implemented, extension_not_applicable, adapter_context_unsupported, market_not_found or exchange_request_rejected. Adapter gaps do not prove exchange feature absence.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"423":{"description":"execution_locked or authentication_not_ready. Consult capabilities for the venue release gate.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"429":{"description":"Shared capacity or exchange rate limit reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"502":{"description":"Exchange returned invalid normalized data or an invalid extension response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"503":{"description":"Adapter, credentials, storage or exchange unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"504":{"description":"Exchange / adapter request deadline reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}}}}},"/api/v1/derivatives/funding-rate":{"get":{"operationId":"derivatives_funding_rate","tags":["Derivatives"],"summary":"Current funding rate","description":"Funding rate and next funding time for a perpetual contract.","security":[],"parameters":[{"name":"venue","in":"query","required":true,"schema":{"description":"Exchange adapter.","example":"binance","type":"string","enum":["binance","bybit","bitget","coinbase","kraken","okx","kucoin"]}},{"name":"symbol","in":"query","required":true,"schema":{"description":"Unified market symbol. Perpetual example: BTC/USDT:USDT; listings differ by venue.","example":"BTC/USDT","type":"string","pattern":"^[A-Z0-9.]+/[A-Z0-9.]+(?::[A-Z0-9.]+(?:-[A-Z0-9.-]+)?)?$"}},{"name":"market_type","in":"query","required":false,"schema":{"description":"Account / market category. Use a settled symbol for derivatives.","example":"spot","type":"string","enum":["spot","swap","future","option"]}},{"name":"allow_emulated","in":"query","required":false,"schema":{"description":"Explicitly opt in to adapter emulation. Default false. Composed operations may differ from native exchange behavior; Ordien never substitutes linked or atomic order guarantees.","example":false,"type":"boolean"}}],"x-nexus-availability":"public","x-nexus-kind":"unified","x-nexus-capabilities":"/api/v1/capabilities","x-nexus-required-scope":null,"responses":{"200":{"description":"Normalized response.","content":{"application/json":{"schema":{"type":"object","required":["version","operation","venue","market_type","received_at","transport","implementation","data"],"properties":{"version":{"type":"string"},"operation":{"const":"derivatives.funding-rate"},"venue":{"type":"string","enum":["binance","bybit","bitget","coinbase","kraken","okx","kucoin"]},"market_type":{"type":"string"},"implementation":{"enum":["native","emulated"]},"received_at":{"type":"integer","format":"int64"},"transport":{"const":"rest"},"data":{"$ref":"#/components/schemas/FundingRate"}}}}}},"400":{"description":"Invalid or missing parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"401":{"description":"Missing, expired or invalid authentication.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"403":{"description":"Insufficient scope, unverified connection or exchange_access_denied. Exact account / region cause may be unknown.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"404":{"description":"Unknown operation or connection.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"409":{"description":"emulation_opt_in_required or exchange_nonce_rejected. Review capabilities, clock synchronization and nonce ordering.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"422":{"description":"unsupported_credentials, exchange_feature_unavailable, nexus_not_implemented, extension_not_applicable, adapter_context_unsupported, market_not_found or exchange_request_rejected. Adapter gaps do not prove exchange feature absence.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"423":{"description":"execution_locked or authentication_not_ready. Consult capabilities for the venue release gate.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"429":{"description":"Shared capacity or exchange rate limit reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"502":{"description":"Exchange returned invalid normalized data or an invalid extension response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"503":{"description":"Adapter, credentials, storage or exchange unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"504":{"description":"Exchange / adapter request deadline reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}}}}},"/api/v1/derivatives/funding-history":{"get":{"operationId":"derivatives_funding_history","tags":["Derivatives"],"summary":"Funding rate history","description":"Public historical funding rates.","security":[],"parameters":[{"name":"venue","in":"query","required":true,"schema":{"description":"Exchange adapter.","example":"binance","type":"string","enum":["binance","bybit","bitget","coinbase","kraken","okx","kucoin"]}},{"name":"symbol","in":"query","required":true,"schema":{"description":"Unified market symbol. Perpetual example: BTC/USDT:USDT; listings differ by venue.","example":"BTC/USDT","type":"string","pattern":"^[A-Z0-9.]+/[A-Z0-9.]+(?::[A-Z0-9.]+(?:-[A-Z0-9.-]+)?)?$"}},{"name":"market_type","in":"query","required":false,"schema":{"description":"Account / market category. Use a settled symbol for derivatives.","example":"spot","type":"string","enum":["spot","swap","future","option"]}},{"name":"since","in":"query","required":false,"schema":{"description":"Inclusive Unix timestamp in milliseconds where supported. Exchange retention and pagination rules apply.","example":1791676800000,"type":"integer","minimum":0,"maximum":9007199254740991}},{"name":"limit","in":"query","required":false,"schema":{"description":"Requested count / depth, 1–200 (default 100). Exchanges can restrict depths, return fewer records, or return a larger snapshot; Ordien truncates to this limit.","example":20,"type":"integer","minimum":1,"maximum":200}},{"name":"allow_emulated","in":"query","required":false,"schema":{"description":"Explicitly opt in to adapter emulation. Default false. Composed operations may differ from native exchange behavior; Ordien never substitutes linked or atomic order guarantees.","example":false,"type":"boolean"}}],"x-nexus-availability":"public","x-nexus-kind":"unified","x-nexus-capabilities":"/api/v1/capabilities","x-nexus-required-scope":null,"responses":{"200":{"description":"Normalized response.","content":{"application/json":{"schema":{"type":"object","required":["version","operation","venue","market_type","received_at","transport","implementation","data"],"properties":{"version":{"type":"string"},"operation":{"const":"derivatives.funding-history"},"venue":{"type":"string","enum":["binance","bybit","bitget","coinbase","kraken","okx","kucoin"]},"market_type":{"type":"string"},"implementation":{"enum":["native","emulated"]},"received_at":{"type":"integer","format":"int64"},"transport":{"const":"rest"},"data":{"type":"array","items":{"$ref":"#/components/schemas/FundingRate"}}}}}}},"400":{"description":"Invalid or missing parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"401":{"description":"Missing, expired or invalid authentication.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"403":{"description":"Insufficient scope, unverified connection or exchange_access_denied. Exact account / region cause may be unknown.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"404":{"description":"Unknown operation or connection.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"409":{"description":"emulation_opt_in_required or exchange_nonce_rejected. Review capabilities, clock synchronization and nonce ordering.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"422":{"description":"unsupported_credentials, exchange_feature_unavailable, nexus_not_implemented, extension_not_applicable, adapter_context_unsupported, market_not_found or exchange_request_rejected. Adapter gaps do not prove exchange feature absence.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"423":{"description":"execution_locked or authentication_not_ready. Consult capabilities for the venue release gate.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"429":{"description":"Shared capacity or exchange rate limit reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"502":{"description":"Exchange returned invalid normalized data or an invalid extension response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"503":{"description":"Adapter, credentials, storage or exchange unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"504":{"description":"Exchange / adapter request deadline reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}}}}},"/api/v1/derivatives/open-interest":{"get":{"operationId":"derivatives_open_interest","tags":["Derivatives"],"summary":"Open interest","description":"Outstanding contract interest in the units reported by the normalized adapter.","security":[],"parameters":[{"name":"venue","in":"query","required":true,"schema":{"description":"Exchange adapter.","example":"binance","type":"string","enum":["binance","bybit","bitget","coinbase","kraken","okx","kucoin"]}},{"name":"symbol","in":"query","required":true,"schema":{"description":"Unified market symbol. Perpetual example: BTC/USDT:USDT; listings differ by venue.","example":"BTC/USDT","type":"string","pattern":"^[A-Z0-9.]+/[A-Z0-9.]+(?::[A-Z0-9.]+(?:-[A-Z0-9.-]+)?)?$"}},{"name":"market_type","in":"query","required":false,"schema":{"description":"Account / market category. Use a settled symbol for derivatives.","example":"spot","type":"string","enum":["spot","swap","future","option"]}},{"name":"allow_emulated","in":"query","required":false,"schema":{"description":"Explicitly opt in to adapter emulation. Default false. Composed operations may differ from native exchange behavior; Ordien never substitutes linked or atomic order guarantees.","example":false,"type":"boolean"}}],"x-nexus-availability":"public","x-nexus-kind":"unified","x-nexus-capabilities":"/api/v1/capabilities","x-nexus-required-scope":null,"responses":{"200":{"description":"Normalized response.","content":{"application/json":{"schema":{"type":"object","required":["version","operation","venue","market_type","received_at","transport","implementation","data"],"properties":{"version":{"type":"string"},"operation":{"const":"derivatives.open-interest"},"venue":{"type":"string","enum":["binance","bybit","bitget","coinbase","kraken","okx","kucoin"]},"market_type":{"type":"string"},"implementation":{"enum":["native","emulated"]},"received_at":{"type":"integer","format":"int64"},"transport":{"const":"rest"},"data":{"$ref":"#/components/schemas/OpenInterest"}}}}}},"400":{"description":"Invalid or missing parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"401":{"description":"Missing, expired or invalid authentication.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"403":{"description":"Insufficient scope, unverified connection or exchange_access_denied. Exact account / region cause may be unknown.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"404":{"description":"Unknown operation or connection.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"409":{"description":"emulation_opt_in_required or exchange_nonce_rejected. Review capabilities, clock synchronization and nonce ordering.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"422":{"description":"unsupported_credentials, exchange_feature_unavailable, nexus_not_implemented, extension_not_applicable, adapter_context_unsupported, market_not_found or exchange_request_rejected. Adapter gaps do not prove exchange feature absence.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"423":{"description":"execution_locked or authentication_not_ready. Consult capabilities for the venue release gate.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"429":{"description":"Shared capacity or exchange rate limit reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"502":{"description":"Exchange returned invalid normalized data or an invalid extension response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"503":{"description":"Adapter, credentials, storage or exchange unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"504":{"description":"Exchange / adapter request deadline reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}}}}},"/api/v1/derivatives/mark-price":{"get":{"operationId":"derivatives_mark_price","tags":["Derivatives"],"summary":"Mark & index price","description":"Normalized mark and index price fields for derivatives where supported.","security":[],"parameters":[{"name":"venue","in":"query","required":true,"schema":{"description":"Exchange adapter.","example":"binance","type":"string","enum":["binance","bybit","bitget","coinbase","kraken","okx","kucoin"]}},{"name":"symbol","in":"query","required":true,"schema":{"description":"Unified market symbol. Perpetual example: BTC/USDT:USDT; listings differ by venue.","example":"BTC/USDT","type":"string","pattern":"^[A-Z0-9.]+/[A-Z0-9.]+(?::[A-Z0-9.]+(?:-[A-Z0-9.-]+)?)?$"}},{"name":"market_type","in":"query","required":false,"schema":{"description":"Account / market category. Use a settled symbol for derivatives.","example":"spot","type":"string","enum":["spot","swap","future","option"]}},{"name":"allow_emulated","in":"query","required":false,"schema":{"description":"Explicitly opt in to adapter emulation. Default false. Composed operations may differ from native exchange behavior; Ordien never substitutes linked or atomic order guarantees.","example":false,"type":"boolean"}}],"x-nexus-availability":"public","x-nexus-kind":"unified","x-nexus-capabilities":"/api/v1/capabilities","x-nexus-required-scope":null,"responses":{"200":{"description":"Normalized response.","content":{"application/json":{"schema":{"type":"object","required":["version","operation","venue","market_type","received_at","transport","implementation","data"],"properties":{"version":{"type":"string"},"operation":{"const":"derivatives.mark-price"},"venue":{"type":"string","enum":["binance","bybit","bitget","coinbase","kraken","okx","kucoin"]},"market_type":{"type":"string"},"implementation":{"enum":["native","emulated"]},"received_at":{"type":"integer","format":"int64"},"transport":{"const":"rest"},"data":{"$ref":"#/components/schemas/MarkPrice"}}}}}},"400":{"description":"Invalid or missing parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"401":{"description":"Missing, expired or invalid authentication.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"403":{"description":"Insufficient scope, unverified connection or exchange_access_denied. Exact account / region cause may be unknown.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"404":{"description":"Unknown operation or connection.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"409":{"description":"emulation_opt_in_required or exchange_nonce_rejected. Review capabilities, clock synchronization and nonce ordering.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"422":{"description":"unsupported_credentials, exchange_feature_unavailable, nexus_not_implemented, extension_not_applicable, adapter_context_unsupported, market_not_found or exchange_request_rejected. Adapter gaps do not prove exchange feature absence.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"423":{"description":"execution_locked or authentication_not_ready. Consult capabilities for the venue release gate.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"429":{"description":"Shared capacity or exchange rate limit reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"502":{"description":"Exchange returned invalid normalized data or an invalid extension response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"503":{"description":"Adapter, credentials, storage or exchange unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"504":{"description":"Exchange / adapter request deadline reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}}}}},"/api/v1/derivatives/positions":{"get":{"operationId":"derivatives_positions","tags":["Derivatives"],"summary":"Account positions","description":"Open or reported positions for the selected account category.","security":[{"NexusKey":[]},{"BrowserSession":[]}],"parameters":[{"name":"venue","in":"query","required":true,"schema":{"description":"Exchange adapter.","example":"binance","type":"string","enum":["binance","bybit","bitget","coinbase","kraken","okx","kucoin"]}},{"name":"connection_id","in":"query","required":true,"schema":{"description":"ID of your verified, encrypted Ordien exchange connection.","example":"00000000-0000-4000-8000-000000000001","type":"string","format":"uuid"}},{"name":"market_type","in":"query","required":false,"schema":{"description":"Account / market category. Use a settled symbol for derivatives.","example":"spot","type":"string","enum":["spot","swap","future","option"]}},{"name":"allow_emulated","in":"query","required":false,"schema":{"description":"Explicitly opt in to adapter emulation. Default false. Composed operations may differ from native exchange behavior; Ordien never substitutes linked or atomic order guarantees.","example":false,"type":"boolean"}}],"x-nexus-availability":"verified_connection_required","x-nexus-kind":"unified","x-nexus-capabilities":"/api/v1/capabilities","x-nexus-required-scope":"derivatives:read","responses":{"200":{"description":"Normalized response.","content":{"application/json":{"schema":{"type":"object","required":["version","operation","venue","market_type","received_at","transport","implementation","data"],"properties":{"version":{"type":"string"},"operation":{"const":"derivatives.positions"},"venue":{"type":"string","enum":["binance","bybit","bitget","coinbase","kraken","okx","kucoin"]},"market_type":{"type":"string"},"implementation":{"enum":["native","emulated"]},"received_at":{"type":"integer","format":"int64"},"transport":{"const":"rest"},"data":{"type":"array","items":{"$ref":"#/components/schemas/Position"}}}}}}},"400":{"description":"Invalid or missing parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"401":{"description":"Missing, expired or invalid authentication.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"403":{"description":"Insufficient scope, unverified connection or exchange_access_denied. Exact account / region cause may be unknown.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"404":{"description":"Unknown operation or connection.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"409":{"description":"emulation_opt_in_required or exchange_nonce_rejected. Review capabilities, clock synchronization and nonce ordering.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"422":{"description":"unsupported_credentials, exchange_feature_unavailable, nexus_not_implemented, extension_not_applicable, adapter_context_unsupported, market_not_found or exchange_request_rejected. Adapter gaps do not prove exchange feature absence.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"423":{"description":"execution_locked or authentication_not_ready. Consult capabilities for the venue release gate.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"429":{"description":"Shared capacity or exchange rate limit reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"502":{"description":"Exchange returned invalid normalized data or an invalid extension response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"503":{"description":"Adapter, credentials, storage or exchange unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"504":{"description":"Exchange / adapter request deadline reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}}}}},"/api/v1/derivatives/funding-payments":{"get":{"operationId":"derivatives_funding_payments","tags":["Derivatives"],"summary":"Your funding payments","description":"Funding payments applied to your derivatives account.","security":[{"NexusKey":[]},{"BrowserSession":[]}],"parameters":[{"name":"venue","in":"query","required":true,"schema":{"description":"Exchange adapter.","example":"binance","type":"string","enum":["binance","bybit","bitget","coinbase","kraken","okx","kucoin"]}},{"name":"connection_id","in":"query","required":true,"schema":{"description":"ID of your verified, encrypted Ordien exchange connection.","example":"00000000-0000-4000-8000-000000000001","type":"string","format":"uuid"}},{"name":"market_type","in":"query","required":false,"schema":{"description":"Account / market category. Use a settled symbol for derivatives.","example":"spot","type":"string","enum":["spot","swap","future","option"]}},{"name":"symbol","in":"query","required":false,"schema":{"description":"Unified market symbol. Perpetual example: BTC/USDT:USDT; listings differ by venue.","example":"BTC/USDT","type":"string","pattern":"^[A-Z0-9.]+/[A-Z0-9.]+(?::[A-Z0-9.]+(?:-[A-Z0-9.-]+)?)?$"}},{"name":"since","in":"query","required":false,"schema":{"description":"Inclusive Unix timestamp in milliseconds where supported. Exchange retention and pagination rules apply.","example":1791676800000,"type":"integer","minimum":0,"maximum":9007199254740991}},{"name":"limit","in":"query","required":false,"schema":{"description":"Requested count / depth, 1–200 (default 100). Exchanges can restrict depths, return fewer records, or return a larger snapshot; Ordien truncates to this limit.","example":20,"type":"integer","minimum":1,"maximum":200}},{"name":"allow_emulated","in":"query","required":false,"schema":{"description":"Explicitly opt in to adapter emulation. Default false. Composed operations may differ from native exchange behavior; Ordien never substitutes linked or atomic order guarantees.","example":false,"type":"boolean"}}],"x-nexus-availability":"verified_connection_required","x-nexus-kind":"unified","x-nexus-capabilities":"/api/v1/capabilities","x-nexus-required-scope":"derivatives:read","responses":{"200":{"description":"Normalized response.","content":{"application/json":{"schema":{"type":"object","required":["version","operation","venue","market_type","received_at","transport","implementation","data"],"properties":{"version":{"type":"string"},"operation":{"const":"derivatives.funding-payments"},"venue":{"type":"string","enum":["binance","bybit","bitget","coinbase","kraken","okx","kucoin"]},"market_type":{"type":"string"},"implementation":{"enum":["native","emulated"]},"received_at":{"type":"integer","format":"int64"},"transport":{"const":"rest"},"data":{"type":"array","items":{"$ref":"#/components/schemas/LedgerEntry"}}}}}}},"400":{"description":"Invalid or missing parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"401":{"description":"Missing, expired or invalid authentication.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"403":{"description":"Insufficient scope, unverified connection or exchange_access_denied. Exact account / region cause may be unknown.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"404":{"description":"Unknown operation or connection.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"409":{"description":"emulation_opt_in_required or exchange_nonce_rejected. Review capabilities, clock synchronization and nonce ordering.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"422":{"description":"unsupported_credentials, exchange_feature_unavailable, nexus_not_implemented, extension_not_applicable, adapter_context_unsupported, market_not_found or exchange_request_rejected. Adapter gaps do not prove exchange feature absence.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"423":{"description":"execution_locked or authentication_not_ready. Consult capabilities for the venue release gate.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"429":{"description":"Shared capacity or exchange rate limit reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"502":{"description":"Exchange returned invalid normalized data or an invalid extension response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"503":{"description":"Adapter, credentials, storage or exchange unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"504":{"description":"Exchange / adapter request deadline reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}}}}},"/api/v1/derivatives/set-leverage":{"post":{"operationId":"derivatives_set_leverage","tags":["Derivatives"],"summary":"Set leverage","description":"Validated leverage contract. Changes to live account settings are locked. This release always returns an error; a successful execution response is intentionally not advertised.","security":[{"NexusKey":[]},{"BrowserSession":[]}],"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["venue","connection_id","leverage","symbol"],"properties":{"venue":{"description":"Exchange adapter.","example":"binance","type":"string","enum":["binance","bybit","bitget","coinbase","kraken","okx","kucoin"]},"connection_id":{"description":"ID of your verified, encrypted Ordien exchange connection.","example":"00000000-0000-4000-8000-000000000001","type":"string","format":"uuid"},"leverage":{"description":"Requested leverage. Actual allowed range depends on market and account.","example":2,"type":"integer","minimum":1,"maximum":125},"symbol":{"description":"Unified market symbol. Perpetual example: BTC/USDT:USDT; listings differ by venue.","example":"BTC/USDT","type":"string","pattern":"^[A-Z0-9.]+/[A-Z0-9.]+(?::[A-Z0-9.]+(?:-[A-Z0-9.-]+)?)?$"},"market_type":{"description":"Account / market category. Use a settled symbol for derivatives.","example":"spot","type":"string","enum":["spot","swap","future","option"]},"allow_emulated":{"description":"Explicitly opt in to adapter emulation. Default false. Composed operations may differ from native exchange behavior; Ordien never substitutes linked or atomic order guarantees.","example":false,"type":"boolean"}}}}}},"x-nexus-availability":"execution_locked","x-nexus-kind":"unified","x-nexus-capabilities":"/api/v1/capabilities","x-nexus-required-scope":"derivatives:write","responses":{"400":{"description":"Invalid or missing parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"401":{"description":"Missing, expired or invalid authentication.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"403":{"description":"Insufficient scope, unverified connection or exchange_access_denied. Exact account / region cause may be unknown.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"404":{"description":"Unknown operation or connection.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"409":{"description":"emulation_opt_in_required or exchange_nonce_rejected. Review capabilities, clock synchronization and nonce ordering.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"422":{"description":"unsupported_credentials, exchange_feature_unavailable, nexus_not_implemented, extension_not_applicable, adapter_context_unsupported, market_not_found or exchange_request_rejected. Adapter gaps do not prove exchange feature absence.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"423":{"description":"execution_locked or authentication_not_ready. Consult capabilities for the venue release gate.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"429":{"description":"Shared capacity or exchange rate limit reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"502":{"description":"Exchange returned invalid normalized data or an invalid extension response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"503":{"description":"Adapter, credentials, storage or exchange unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"504":{"description":"Exchange / adapter request deadline reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}}}}},"/api/v1/derivatives/set-margin-mode":{"post":{"operationId":"derivatives_set_margin_mode","tags":["Derivatives"],"summary":"Set margin mode","description":"Validated isolated / cross margin contract. Execution is locked. This release always returns an error; a successful execution response is intentionally not advertised.","security":[{"NexusKey":[]},{"BrowserSession":[]}],"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["venue","connection_id","margin_mode","symbol"],"properties":{"venue":{"description":"Exchange adapter.","example":"binance","type":"string","enum":["binance","bybit","bitget","coinbase","kraken","okx","kucoin"]},"connection_id":{"description":"ID of your verified, encrypted Ordien exchange connection.","example":"00000000-0000-4000-8000-000000000001","type":"string","format":"uuid"},"margin_mode":{"description":"Margin mode.","example":"isolated","type":"string","enum":["cross","isolated"]},"symbol":{"description":"Unified market symbol. Perpetual example: BTC/USDT:USDT; listings differ by venue.","example":"BTC/USDT","type":"string","pattern":"^[A-Z0-9.]+/[A-Z0-9.]+(?::[A-Z0-9.]+(?:-[A-Z0-9.-]+)?)?$"},"market_type":{"description":"Account / market category. Use a settled symbol for derivatives.","example":"spot","type":"string","enum":["spot","swap","future","option"]},"allow_emulated":{"description":"Explicitly opt in to adapter emulation. Default false. Composed operations may differ from native exchange behavior; Ordien never substitutes linked or atomic order guarantees.","example":false,"type":"boolean"}}}}}},"x-nexus-availability":"execution_locked","x-nexus-kind":"unified","x-nexus-capabilities":"/api/v1/capabilities","x-nexus-required-scope":"derivatives:write","responses":{"400":{"description":"Invalid or missing parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"401":{"description":"Missing, expired or invalid authentication.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"403":{"description":"Insufficient scope, unverified connection or exchange_access_denied. Exact account / region cause may be unknown.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"404":{"description":"Unknown operation or connection.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"409":{"description":"emulation_opt_in_required or exchange_nonce_rejected. Review capabilities, clock synchronization and nonce ordering.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"422":{"description":"unsupported_credentials, exchange_feature_unavailable, nexus_not_implemented, extension_not_applicable, adapter_context_unsupported, market_not_found or exchange_request_rejected. Adapter gaps do not prove exchange feature absence.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"423":{"description":"execution_locked or authentication_not_ready. Consult capabilities for the venue release gate.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"429":{"description":"Shared capacity or exchange rate limit reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"502":{"description":"Exchange returned invalid normalized data or an invalid extension response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"503":{"description":"Adapter, credentials, storage or exchange unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"504":{"description":"Exchange / adapter request deadline reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}}}}},"/api/v1/derivatives/set-position-mode":{"post":{"operationId":"derivatives_set_position_mode","tags":["Derivatives"],"summary":"Set position mode","description":"Validated one-way / hedged position-mode contract. Execution is locked. This release always returns an error; a successful execution response is intentionally not advertised.","security":[{"NexusKey":[]},{"BrowserSession":[]}],"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["venue","connection_id","hedged"],"properties":{"venue":{"description":"Exchange adapter.","example":"binance","type":"string","enum":["binance","bybit","bitget","coinbase","kraken","okx","kucoin"]},"connection_id":{"description":"ID of your verified, encrypted Ordien exchange connection.","example":"00000000-0000-4000-8000-000000000001","type":"string","format":"uuid"},"hedged":{"description":"True for hedge mode; false for one-way mode.","example":false,"type":"boolean"},"market_type":{"description":"Account / market category. Use a settled symbol for derivatives.","example":"spot","type":"string","enum":["spot","swap","future","option"]},"symbol":{"description":"Unified market symbol. Perpetual example: BTC/USDT:USDT; listings differ by venue.","example":"BTC/USDT","type":"string","pattern":"^[A-Z0-9.]+/[A-Z0-9.]+(?::[A-Z0-9.]+(?:-[A-Z0-9.-]+)?)?$"},"allow_emulated":{"description":"Explicitly opt in to adapter emulation. Default false. Composed operations may differ from native exchange behavior; Ordien never substitutes linked or atomic order guarantees.","example":false,"type":"boolean"}}}}}},"x-nexus-availability":"execution_locked","x-nexus-kind":"unified","x-nexus-capabilities":"/api/v1/capabilities","x-nexus-required-scope":"derivatives:write","responses":{"400":{"description":"Invalid or missing parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"401":{"description":"Missing, expired or invalid authentication.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"403":{"description":"Insufficient scope, unverified connection or exchange_access_denied. Exact account / region cause may be unknown.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"404":{"description":"Unknown operation or connection.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"409":{"description":"emulation_opt_in_required or exchange_nonce_rejected. Review capabilities, clock synchronization and nonce ordering.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"422":{"description":"unsupported_credentials, exchange_feature_unavailable, nexus_not_implemented, extension_not_applicable, adapter_context_unsupported, market_not_found or exchange_request_rejected. Adapter gaps do not prove exchange feature absence.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"423":{"description":"execution_locked or authentication_not_ready. Consult capabilities for the venue release gate.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"429":{"description":"Shared capacity or exchange rate limit reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"502":{"description":"Exchange returned invalid normalized data or an invalid extension response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"503":{"description":"Adapter, credentials, storage or exchange unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"504":{"description":"Exchange / adapter request deadline reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}}}}},"/api/v1/funding/deposit-address":{"get":{"operationId":"funding_deposit_address","tags":["Funding & withdrawals"],"summary":"Get deposit address","description":"Read an existing deposit address for a specific currency and network. Does not create an address.","security":[{"NexusKey":[]},{"BrowserSession":[]}],"parameters":[{"name":"venue","in":"query","required":true,"schema":{"description":"Exchange adapter.","example":"binance","type":"string","enum":["binance","bybit","bitget","coinbase","kraken","okx","kucoin"]}},{"name":"connection_id","in":"query","required":true,"schema":{"description":"ID of your verified, encrypted Ordien exchange connection.","example":"00000000-0000-4000-8000-000000000001","type":"string","format":"uuid"}},{"name":"currency","in":"query","required":true,"schema":{"description":"Unified currency code.","example":"USDT","type":"string","pattern":"^[A-Z0-9.]{1,24}$"}},{"name":"network","in":"query","required":true,"schema":{"description":"Explicit native network identifier. Kraken permits method labels with spaces and parentheses, up to 64 characters; other venues require letters, digits, underscore or hyphen, up to 40 characters. Check network metadata before funding.","example":"ERC20","type":"string","pattern":"^[A-Za-z0-9_() -]{1,64}$","minLength":1,"maxLength":64}},{"name":"market_type","in":"query","required":false,"schema":{"description":"Account / market category. Use a settled symbol for derivatives.","example":"spot","type":"string","enum":["spot","swap","future","option"]}},{"name":"allow_emulated","in":"query","required":false,"schema":{"description":"Explicitly opt in to adapter emulation. Default false. Composed operations may differ from native exchange behavior; Ordien never substitutes linked or atomic order guarantees.","example":false,"type":"boolean"}}],"x-nexus-availability":"verified_connection_required","x-nexus-kind":"unified","x-nexus-capabilities":"/api/v1/capabilities","x-nexus-required-scope":"funding:read","responses":{"200":{"description":"Normalized response.","content":{"application/json":{"schema":{"type":"object","required":["version","operation","venue","market_type","received_at","transport","implementation","data"],"properties":{"version":{"type":"string"},"operation":{"const":"funding.deposit-address"},"venue":{"type":"string","enum":["binance","bybit","bitget","coinbase","kraken","okx","kucoin"]},"market_type":{"type":"string"},"implementation":{"enum":["native","emulated"]},"received_at":{"type":"integer","format":"int64"},"transport":{"const":"rest"},"data":{"$ref":"#/components/schemas/DepositAddress"}}}}}},"400":{"description":"Invalid or missing parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"401":{"description":"Missing, expired or invalid authentication.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"403":{"description":"Insufficient scope, unverified connection or exchange_access_denied. Exact account / region cause may be unknown.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"404":{"description":"Unknown operation or connection.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"409":{"description":"emulation_opt_in_required or exchange_nonce_rejected. Review capabilities, clock synchronization and nonce ordering.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"422":{"description":"unsupported_credentials, exchange_feature_unavailable, nexus_not_implemented, extension_not_applicable, adapter_context_unsupported, market_not_found or exchange_request_rejected. Adapter gaps do not prove exchange feature absence.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"423":{"description":"execution_locked or authentication_not_ready. Consult capabilities for the venue release gate.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"429":{"description":"Shared capacity or exchange rate limit reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"502":{"description":"Exchange returned invalid normalized data or an invalid extension response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"503":{"description":"Adapter, credentials, storage or exchange unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"504":{"description":"Exchange / adapter request deadline reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}}}}},"/api/v1/funding/deposits":{"get":{"operationId":"funding_deposits","tags":["Funding & withdrawals"],"summary":"Deposit history","description":"Deposit history with transaction IDs, networks and normalized status.","security":[{"NexusKey":[]},{"BrowserSession":[]}],"parameters":[{"name":"venue","in":"query","required":true,"schema":{"description":"Exchange adapter.","example":"binance","type":"string","enum":["binance","bybit","bitget","coinbase","kraken","okx","kucoin"]}},{"name":"connection_id","in":"query","required":true,"schema":{"description":"ID of your verified, encrypted Ordien exchange connection.","example":"00000000-0000-4000-8000-000000000001","type":"string","format":"uuid"}},{"name":"market_type","in":"query","required":false,"schema":{"description":"Account / market category. Use a settled symbol for derivatives.","example":"spot","type":"string","enum":["spot","swap","future","option"]}},{"name":"currency","in":"query","required":false,"schema":{"description":"Unified currency code.","example":"USDT","type":"string","pattern":"^[A-Z0-9.]{1,24}$"}},{"name":"since","in":"query","required":false,"schema":{"description":"Inclusive Unix timestamp in milliseconds where supported. Exchange retention and pagination rules apply.","example":1791676800000,"type":"integer","minimum":0,"maximum":9007199254740991}},{"name":"limit","in":"query","required":false,"schema":{"description":"Requested count / depth, 1–200 (default 100). Exchanges can restrict depths, return fewer records, or return a larger snapshot; Ordien truncates to this limit.","example":20,"type":"integer","minimum":1,"maximum":200}},{"name":"allow_emulated","in":"query","required":false,"schema":{"description":"Explicitly opt in to adapter emulation. Default false. Composed operations may differ from native exchange behavior; Ordien never substitutes linked or atomic order guarantees.","example":false,"type":"boolean"}}],"x-nexus-availability":"verified_connection_required","x-nexus-kind":"unified","x-nexus-capabilities":"/api/v1/capabilities","x-nexus-required-scope":"funding:read","responses":{"200":{"description":"Normalized response.","content":{"application/json":{"schema":{"type":"object","required":["version","operation","venue","market_type","received_at","transport","implementation","data"],"properties":{"version":{"type":"string"},"operation":{"const":"funding.deposits"},"venue":{"type":"string","enum":["binance","bybit","bitget","coinbase","kraken","okx","kucoin"]},"market_type":{"type":"string"},"implementation":{"enum":["native","emulated"]},"received_at":{"type":"integer","format":"int64"},"transport":{"const":"rest"},"data":{"type":"array","items":{"$ref":"#/components/schemas/Transaction"}}}}}}},"400":{"description":"Invalid or missing parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"401":{"description":"Missing, expired or invalid authentication.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"403":{"description":"Insufficient scope, unverified connection or exchange_access_denied. Exact account / region cause may be unknown.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"404":{"description":"Unknown operation or connection.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"409":{"description":"emulation_opt_in_required or exchange_nonce_rejected. Review capabilities, clock synchronization and nonce ordering.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"422":{"description":"unsupported_credentials, exchange_feature_unavailable, nexus_not_implemented, extension_not_applicable, adapter_context_unsupported, market_not_found or exchange_request_rejected. Adapter gaps do not prove exchange feature absence.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"423":{"description":"execution_locked or authentication_not_ready. Consult capabilities for the venue release gate.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"429":{"description":"Shared capacity or exchange rate limit reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"502":{"description":"Exchange returned invalid normalized data or an invalid extension response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"503":{"description":"Adapter, credentials, storage or exchange unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"504":{"description":"Exchange / adapter request deadline reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}}}}},"/api/v1/funding/withdrawals":{"get":{"operationId":"funding_withdrawals","tags":["Funding & withdrawals"],"summary":"Withdrawal history","description":"Withdrawal history for your connected account.","security":[{"NexusKey":[]},{"BrowserSession":[]}],"parameters":[{"name":"venue","in":"query","required":true,"schema":{"description":"Exchange adapter.","example":"binance","type":"string","enum":["binance","bybit","bitget","coinbase","kraken","okx","kucoin"]}},{"name":"connection_id","in":"query","required":true,"schema":{"description":"ID of your verified, encrypted Ordien exchange connection.","example":"00000000-0000-4000-8000-000000000001","type":"string","format":"uuid"}},{"name":"market_type","in":"query","required":false,"schema":{"description":"Account / market category. Use a settled symbol for derivatives.","example":"spot","type":"string","enum":["spot","swap","future","option"]}},{"name":"currency","in":"query","required":false,"schema":{"description":"Unified currency code.","example":"USDT","type":"string","pattern":"^[A-Z0-9.]{1,24}$"}},{"name":"since","in":"query","required":false,"schema":{"description":"Inclusive Unix timestamp in milliseconds where supported. Exchange retention and pagination rules apply.","example":1791676800000,"type":"integer","minimum":0,"maximum":9007199254740991}},{"name":"limit","in":"query","required":false,"schema":{"description":"Requested count / depth, 1–200 (default 100). Exchanges can restrict depths, return fewer records, or return a larger snapshot; Ordien truncates to this limit.","example":20,"type":"integer","minimum":1,"maximum":200}},{"name":"allow_emulated","in":"query","required":false,"schema":{"description":"Explicitly opt in to adapter emulation. Default false. Composed operations may differ from native exchange behavior; Ordien never substitutes linked or atomic order guarantees.","example":false,"type":"boolean"}}],"x-nexus-availability":"verified_connection_required","x-nexus-kind":"unified","x-nexus-capabilities":"/api/v1/capabilities","x-nexus-required-scope":"funding:read","responses":{"200":{"description":"Normalized response.","content":{"application/json":{"schema":{"type":"object","required":["version","operation","venue","market_type","received_at","transport","implementation","data"],"properties":{"version":{"type":"string"},"operation":{"const":"funding.withdrawals"},"venue":{"type":"string","enum":["binance","bybit","bitget","coinbase","kraken","okx","kucoin"]},"market_type":{"type":"string"},"implementation":{"enum":["native","emulated"]},"received_at":{"type":"integer","format":"int64"},"transport":{"const":"rest"},"data":{"type":"array","items":{"$ref":"#/components/schemas/Transaction"}}}}}}},"400":{"description":"Invalid or missing parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"401":{"description":"Missing, expired or invalid authentication.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"403":{"description":"Insufficient scope, unverified connection or exchange_access_denied. Exact account / region cause may be unknown.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"404":{"description":"Unknown operation or connection.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"409":{"description":"emulation_opt_in_required or exchange_nonce_rejected. Review capabilities, clock synchronization and nonce ordering.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"422":{"description":"unsupported_credentials, exchange_feature_unavailable, nexus_not_implemented, extension_not_applicable, adapter_context_unsupported, market_not_found or exchange_request_rejected. Adapter gaps do not prove exchange feature absence.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"423":{"description":"execution_locked or authentication_not_ready. Consult capabilities for the venue release gate.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"429":{"description":"Shared capacity or exchange rate limit reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"502":{"description":"Exchange returned invalid normalized data or an invalid extension response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"503":{"description":"Adapter, credentials, storage or exchange unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"504":{"description":"Exchange / adapter request deadline reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}}}}},"/api/v1/funding/transfers":{"get":{"operationId":"funding_transfers","tags":["Funding & withdrawals"],"summary":"Transfer history","description":"Internal transfer history where the exchange exposes it.","security":[{"NexusKey":[]},{"BrowserSession":[]}],"parameters":[{"name":"venue","in":"query","required":true,"schema":{"description":"Exchange adapter.","example":"binance","type":"string","enum":["binance","bybit","bitget","coinbase","kraken","okx","kucoin"]}},{"name":"connection_id","in":"query","required":true,"schema":{"description":"ID of your verified, encrypted Ordien exchange connection.","example":"00000000-0000-4000-8000-000000000001","type":"string","format":"uuid"}},{"name":"market_type","in":"query","required":false,"schema":{"description":"Account / market category. Use a settled symbol for derivatives.","example":"spot","type":"string","enum":["spot","swap","future","option"]}},{"name":"currency","in":"query","required":false,"schema":{"description":"Unified currency code.","example":"USDT","type":"string","pattern":"^[A-Z0-9.]{1,24}$"}},{"name":"since","in":"query","required":false,"schema":{"description":"Inclusive Unix timestamp in milliseconds where supported. Exchange retention and pagination rules apply.","example":1791676800000,"type":"integer","minimum":0,"maximum":9007199254740991}},{"name":"limit","in":"query","required":false,"schema":{"description":"Requested count / depth, 1–200 (default 100). Exchanges can restrict depths, return fewer records, or return a larger snapshot; Ordien truncates to this limit.","example":20,"type":"integer","minimum":1,"maximum":200}},{"name":"allow_emulated","in":"query","required":false,"schema":{"description":"Explicitly opt in to adapter emulation. Default false. Composed operations may differ from native exchange behavior; Ordien never substitutes linked or atomic order guarantees.","example":false,"type":"boolean"}}],"x-nexus-availability":"verified_connection_required","x-nexus-kind":"unified","x-nexus-capabilities":"/api/v1/capabilities","x-nexus-required-scope":"funding:read","responses":{"200":{"description":"Normalized response.","content":{"application/json":{"schema":{"type":"object","required":["version","operation","venue","market_type","received_at","transport","implementation","data"],"properties":{"version":{"type":"string"},"operation":{"const":"funding.transfers"},"venue":{"type":"string","enum":["binance","bybit","bitget","coinbase","kraken","okx","kucoin"]},"market_type":{"type":"string"},"implementation":{"enum":["native","emulated"]},"received_at":{"type":"integer","format":"int64"},"transport":{"const":"rest"},"data":{"type":"array","items":{"$ref":"#/components/schemas/Transfer"}}}}}}},"400":{"description":"Invalid or missing parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"401":{"description":"Missing, expired or invalid authentication.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"403":{"description":"Insufficient scope, unverified connection or exchange_access_denied. Exact account / region cause may be unknown.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"404":{"description":"Unknown operation or connection.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"409":{"description":"emulation_opt_in_required or exchange_nonce_rejected. Review capabilities, clock synchronization and nonce ordering.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"422":{"description":"unsupported_credentials, exchange_feature_unavailable, nexus_not_implemented, extension_not_applicable, adapter_context_unsupported, market_not_found or exchange_request_rejected. Adapter gaps do not prove exchange feature absence.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"423":{"description":"execution_locked or authentication_not_ready. Consult capabilities for the venue release gate.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"429":{"description":"Shared capacity or exchange rate limit reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"502":{"description":"Exchange returned invalid normalized data or an invalid extension response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"503":{"description":"Adapter, credentials, storage or exchange unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"504":{"description":"Exchange / adapter request deadline reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}}}}},"/api/v1/funding/fees":{"get":{"operationId":"funding_fees","tags":["Funding & withdrawals"],"summary":"Deposit & withdrawal fees","description":"Currency and network fees, using account-specific values or published network schedules where supported. Published schedules are explicitly identified in fee_scope; unknown fees remain null.","security":[{"NexusKey":[]},{"BrowserSession":[]}],"parameters":[{"name":"venue","in":"query","required":true,"schema":{"description":"Exchange adapter.","example":"binance","type":"string","enum":["binance","bybit","bitget","coinbase","kraken","okx","kucoin"]}},{"name":"connection_id","in":"query","required":true,"schema":{"description":"ID of your verified, encrypted Ordien exchange connection.","example":"00000000-0000-4000-8000-000000000001","type":"string","format":"uuid"}},{"name":"market_type","in":"query","required":false,"schema":{"description":"Account / market category. Use a settled symbol for derivatives.","example":"spot","type":"string","enum":["spot","swap","future","option"]}},{"name":"allow_emulated","in":"query","required":false,"schema":{"description":"Explicitly opt in to adapter emulation. Default false. Composed operations may differ from native exchange behavior; Ordien never substitutes linked or atomic order guarantees.","example":false,"type":"boolean"}}],"x-nexus-availability":"verified_connection_required","x-nexus-kind":"unified","x-nexus-capabilities":"/api/v1/capabilities","x-nexus-required-scope":"funding:read","responses":{"200":{"description":"Normalized response.","content":{"application/json":{"schema":{"type":"object","required":["version","operation","venue","market_type","received_at","transport","implementation","data"],"properties":{"version":{"type":"string"},"operation":{"const":"funding.fees"},"venue":{"type":"string","enum":["binance","bybit","bitget","coinbase","kraken","okx","kucoin"]},"market_type":{"type":"string"},"implementation":{"enum":["native","emulated"]},"received_at":{"type":"integer","format":"int64"},"transport":{"const":"rest"},"data":{"$ref":"#/components/schemas/FundingFeeMap"}}}}}},"400":{"description":"Invalid or missing parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"401":{"description":"Missing, expired or invalid authentication.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"403":{"description":"Insufficient scope, unverified connection or exchange_access_denied. Exact account / region cause may be unknown.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"404":{"description":"Unknown operation or connection.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"409":{"description":"emulation_opt_in_required or exchange_nonce_rejected. Review capabilities, clock synchronization and nonce ordering.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"422":{"description":"unsupported_credentials, exchange_feature_unavailable, nexus_not_implemented, extension_not_applicable, adapter_context_unsupported, market_not_found or exchange_request_rejected. Adapter gaps do not prove exchange feature absence.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"423":{"description":"execution_locked or authentication_not_ready. Consult capabilities for the venue release gate.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"429":{"description":"Shared capacity or exchange rate limit reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"502":{"description":"Exchange returned invalid normalized data or an invalid extension response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"503":{"description":"Adapter, credentials, storage or exchange unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"504":{"description":"Exchange / adapter request deadline reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}}}}},"/api/v1/funding/create-deposit-address":{"post":{"operationId":"funding_create_deposit_address","tags":["Funding & withdrawals"],"summary":"Create deposit address","description":"Validated address-creation contract. This mutates the exchange account and remains locked. This release always returns an error; a successful execution response is intentionally not advertised.","security":[{"NexusKey":[]},{"BrowserSession":[]}],"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["venue","connection_id","currency","network"],"properties":{"venue":{"description":"Exchange adapter.","example":"binance","type":"string","enum":["binance","bybit","bitget","coinbase","kraken","okx","kucoin"]},"connection_id":{"description":"ID of your verified, encrypted Ordien exchange connection.","example":"00000000-0000-4000-8000-000000000001","type":"string","format":"uuid"},"currency":{"description":"Unified currency code.","example":"USDT","type":"string","pattern":"^[A-Z0-9.]{1,24}$"},"network":{"description":"Explicit native network identifier. Kraken permits method labels with spaces and parentheses, up to 64 characters; other venues require letters, digits, underscore or hyphen, up to 40 characters. Check network metadata before funding.","example":"ERC20","type":"string","pattern":"^[A-Za-z0-9_() -]{1,64}$","minLength":1,"maxLength":64},"market_type":{"description":"Account / market category. Use a settled symbol for derivatives.","example":"spot","type":"string","enum":["spot","swap","future","option"]},"allow_emulated":{"description":"Explicitly opt in to adapter emulation. Default false. Composed operations may differ from native exchange behavior; Ordien never substitutes linked or atomic order guarantees.","example":false,"type":"boolean"}}}}}},"x-nexus-availability":"execution_locked","x-nexus-kind":"unified","x-nexus-capabilities":"/api/v1/capabilities","x-nexus-required-scope":"funding:write","responses":{"400":{"description":"Invalid or missing parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"401":{"description":"Missing, expired or invalid authentication.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"403":{"description":"Insufficient scope, unverified connection or exchange_access_denied. Exact account / region cause may be unknown.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"404":{"description":"Unknown operation or connection.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"409":{"description":"emulation_opt_in_required or exchange_nonce_rejected. Review capabilities, clock synchronization and nonce ordering.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"422":{"description":"unsupported_credentials, exchange_feature_unavailable, nexus_not_implemented, extension_not_applicable, adapter_context_unsupported, market_not_found or exchange_request_rejected. Adapter gaps do not prove exchange feature absence.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"423":{"description":"execution_locked or authentication_not_ready. Consult capabilities for the venue release gate.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"429":{"description":"Shared capacity or exchange rate limit reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"502":{"description":"Exchange returned invalid normalized data or an invalid extension response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"503":{"description":"Adapter, credentials, storage or exchange unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"504":{"description":"Exchange / adapter request deadline reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}}}}},"/api/v1/funding/transfer":{"post":{"operationId":"funding_transfer","tags":["Funding & withdrawals"],"summary":"Transfer between accounts","description":"Validated internal-transfer contract. Fund movement is locked pending certification and reconciliation. This release always returns an error; a successful execution response is intentionally not advertised.","security":[{"NexusKey":[]},{"BrowserSession":[]}],"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["venue","connection_id","currency","amount","from_account","to_account"],"properties":{"venue":{"description":"Exchange adapter.","example":"binance","type":"string","enum":["binance","bybit","bitget","coinbase","kraken","okx","kucoin"]},"connection_id":{"description":"ID of your verified, encrypted Ordien exchange connection.","example":"00000000-0000-4000-8000-000000000001","type":"string","format":"uuid"},"currency":{"description":"Unified currency code.","example":"USDT","type":"string","pattern":"^[A-Z0-9.]{1,24}$"},"amount":{"description":"Positive decimal string in base units; contracts use the contract amount shown by market metadata.","example":"0.001","type":"string","pattern":"^(?:0|[1-9][0-9]*)(?:\\.[0-9]{1,18})?$"},"from_account":{"description":"Source account.","example":"spot","type":"string","enum":["spot","funding","margin","swap","future"]},"to_account":{"description":"Destination account.","example":"funding","type":"string","enum":["spot","funding","margin","swap","future"]},"market_type":{"description":"Account / market category. Use a settled symbol for derivatives.","example":"spot","type":"string","enum":["spot","swap","future","option"]},"allow_emulated":{"description":"Explicitly opt in to adapter emulation. Default false. Composed operations may differ from native exchange behavior; Ordien never substitutes linked or atomic order guarantees.","example":false,"type":"boolean"}}}}}},"x-nexus-availability":"execution_locked","x-nexus-kind":"unified","x-nexus-capabilities":"/api/v1/capabilities","x-nexus-required-scope":"funding:write","responses":{"400":{"description":"Invalid or missing parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"401":{"description":"Missing, expired or invalid authentication.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"403":{"description":"Insufficient scope, unverified connection or exchange_access_denied. Exact account / region cause may be unknown.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"404":{"description":"Unknown operation or connection.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"409":{"description":"emulation_opt_in_required or exchange_nonce_rejected. Review capabilities, clock synchronization and nonce ordering.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"422":{"description":"unsupported_credentials, exchange_feature_unavailable, nexus_not_implemented, extension_not_applicable, adapter_context_unsupported, market_not_found or exchange_request_rejected. Adapter gaps do not prove exchange feature absence.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"423":{"description":"execution_locked or authentication_not_ready. Consult capabilities for the venue release gate.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"429":{"description":"Shared capacity or exchange rate limit reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"502":{"description":"Exchange returned invalid normalized data or an invalid extension response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"503":{"description":"Adapter, credentials, storage or exchange unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"504":{"description":"Exchange / adapter request deadline reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}}}}},"/api/v1/funding/withdraw":{"post":{"operationId":"funding_withdraw","tags":["Funding & withdrawals"],"summary":"Withdraw funds","description":"Validated withdrawal contract with an explicit network and optional memo. Fund movement is locked. This release always returns an error; a successful execution response is intentionally not advertised.","security":[{"NexusKey":[]},{"BrowserSession":[]}],"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["venue","connection_id","currency","amount","address","network"],"properties":{"venue":{"description":"Exchange adapter.","example":"binance","type":"string","enum":["binance","bybit","bitget","coinbase","kraken","okx","kucoin"]},"connection_id":{"description":"ID of your verified, encrypted Ordien exchange connection.","example":"00000000-0000-4000-8000-000000000001","type":"string","format":"uuid"},"currency":{"description":"Unified currency code.","example":"USDT","type":"string","pattern":"^[A-Z0-9.]{1,24}$"},"amount":{"description":"Positive decimal string in base units; contracts use the contract amount shown by market metadata.","example":"0.001","type":"string","pattern":"^(?:0|[1-9][0-9]*)(?:\\.[0-9]{1,18})?$"},"address":{"description":"Destination address; network compatibility must be verified.","example":"destination-address","type":"string","minLength":4,"maxLength":256},"network":{"description":"Explicit native network identifier. Kraken permits method labels with spaces and parentheses, up to 64 characters; other venues require letters, digits, underscore or hyphen, up to 40 characters. Check network metadata before funding.","example":"ERC20","type":"string","pattern":"^[A-Za-z0-9_() -]{1,64}$","minLength":1,"maxLength":64},"market_type":{"description":"Account / market category. Use a settled symbol for derivatives.","example":"spot","type":"string","enum":["spot","swap","future","option"]},"tag":{"description":"Destination tag or memo when required by the network.","example":"destination-memo","type":"string","minLength":1,"maxLength":128},"allow_emulated":{"description":"Explicitly opt in to adapter emulation. Default false. Composed operations may differ from native exchange behavior; Ordien never substitutes linked or atomic order guarantees.","example":false,"type":"boolean"}}}}}},"x-nexus-availability":"execution_locked","x-nexus-kind":"unified","x-nexus-capabilities":"/api/v1/capabilities","x-nexus-required-scope":"funding:write","responses":{"400":{"description":"Invalid or missing parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"401":{"description":"Missing, expired or invalid authentication.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"403":{"description":"Insufficient scope, unverified connection or exchange_access_denied. Exact account / region cause may be unknown.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"404":{"description":"Unknown operation or connection.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"409":{"description":"emulation_opt_in_required or exchange_nonce_rejected. Review capabilities, clock synchronization and nonce ordering.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"422":{"description":"unsupported_credentials, exchange_feature_unavailable, nexus_not_implemented, extension_not_applicable, adapter_context_unsupported, market_not_found or exchange_request_rejected. Adapter gaps do not prove exchange feature absence.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"423":{"description":"execution_locked or authentication_not_ready. Consult capabilities for the venue release gate.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"429":{"description":"Shared capacity or exchange rate limit reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"502":{"description":"Exchange returned invalid normalized data or an invalid extension response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"503":{"description":"Adapter, credentials, storage or exchange unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"504":{"description":"Exchange / adapter request deadline reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}}}}},"/api/v1/streams/ticker":{"get":{"operationId":"streams_ticker","tags":["Streaming"],"summary":"Stream tickers","description":"Exchange WebSocket updates delivered as Ordien server-sent events.","security":[],"parameters":[{"name":"venue","in":"query","required":true,"schema":{"description":"Exchange adapter.","example":"binance","type":"string","enum":["binance","bybit","bitget","coinbase","kraken","okx","kucoin"]}},{"name":"symbol","in":"query","required":true,"schema":{"description":"Unified market symbol. Perpetual example: BTC/USDT:USDT; listings differ by venue.","example":"BTC/USDT","type":"string","pattern":"^[A-Z0-9.]+/[A-Z0-9.]+(?::[A-Z0-9.]+(?:-[A-Z0-9.-]+)?)?$"}},{"name":"market_type","in":"query","required":false,"schema":{"description":"Account / market category. Use a settled symbol for derivatives.","example":"spot","type":"string","enum":["spot","swap","future","option"]}},{"name":"allow_emulated","in":"query","required":false,"schema":{"description":"Explicitly opt in to adapter emulation. Default false. Composed operations may differ from native exchange behavior; Ordien never substitutes linked or atomic order guarantees.","example":false,"type":"boolean"}}],"x-nexus-availability":"public","x-nexus-kind":"unified","x-nexus-capabilities":"/api/v1/capabilities","x-nexus-required-scope":null,"responses":{"200":{"description":"SSE stream: update events contain the normalized envelope; error events contain {code,message,retryable}. No replay. Maximum connection lifetime five minutes.","content":{"text/event-stream":{"schema":{"type":"string"},"x-event-schema":{"type":"object","required":["version","operation","venue","market_type","received_at","transport","implementation","data"],"properties":{"version":{"type":"string"},"operation":{"const":"streams.ticker"},"venue":{"type":"string","enum":["binance","bybit","bitget","coinbase","kraken","okx","kucoin"]},"market_type":{"type":"string"},"implementation":{"enum":["native","emulated"]},"received_at":{"type":"integer","format":"int64"},"transport":{"const":"sse"},"sequence":{"type":"integer","description":"Connection-local counter, reset on reconnect."},"delivery":{"type":"string"},"stream_origin":{"type":"object","description":"Original native ingestion identity and ordinal, preserved across public relays. Not a resumable history cursor.","required":["id","sequence"],"properties":{"id":{"type":"string","format":"uuid"},"sequence":{"type":"integer","minimum":1}}},"data":{"$ref":"#/components/schemas/Ticker"}}}}}},"400":{"description":"Invalid or missing parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"401":{"description":"Missing, expired or invalid authentication.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"403":{"description":"Insufficient scope, unverified connection or exchange_access_denied. Exact account / region cause may be unknown.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"404":{"description":"Unknown operation or connection.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"409":{"description":"emulation_opt_in_required or exchange_nonce_rejected. Review capabilities, clock synchronization and nonce ordering.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"422":{"description":"unsupported_credentials, exchange_feature_unavailable, nexus_not_implemented, extension_not_applicable, adapter_context_unsupported, market_not_found or exchange_request_rejected. Adapter gaps do not prove exchange feature absence.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"423":{"description":"execution_locked or authentication_not_ready. Consult capabilities for the venue release gate.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"429":{"description":"Shared capacity or exchange rate limit reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"502":{"description":"Exchange returned invalid normalized data or an invalid extension response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"503":{"description":"Adapter, credentials, storage or exchange unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"504":{"description":"Exchange / adapter request deadline reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}}}}},"/api/v1/streams/order-book":{"get":{"operationId":"streams_order_book","tags":["Streaming"],"summary":"Stream order books","description":"Each event is the adapter’s current full book snapshot, not a delta.","security":[],"parameters":[{"name":"venue","in":"query","required":true,"schema":{"description":"Exchange adapter.","example":"binance","type":"string","enum":["binance","bybit","bitget","coinbase","kraken","okx","kucoin"]}},{"name":"symbol","in":"query","required":true,"schema":{"description":"Unified market symbol. Perpetual example: BTC/USDT:USDT; listings differ by venue.","example":"BTC/USDT","type":"string","pattern":"^[A-Z0-9.]+/[A-Z0-9.]+(?::[A-Z0-9.]+(?:-[A-Z0-9.-]+)?)?$"}},{"name":"market_type","in":"query","required":false,"schema":{"description":"Account / market category. Use a settled symbol for derivatives.","example":"spot","type":"string","enum":["spot","swap","future","option"]}},{"name":"limit","in":"query","required":false,"schema":{"description":"Requested count / depth, 1–200 (default 100). Exchanges can restrict depths, return fewer records, or return a larger snapshot; Ordien truncates to this limit.","example":20,"type":"integer","minimum":1,"maximum":200}},{"name":"allow_emulated","in":"query","required":false,"schema":{"description":"Explicitly opt in to adapter emulation. Default false. Composed operations may differ from native exchange behavior; Ordien never substitutes linked or atomic order guarantees.","example":false,"type":"boolean"}}],"x-nexus-availability":"public","x-nexus-kind":"unified","x-nexus-capabilities":"/api/v1/capabilities","x-nexus-required-scope":null,"responses":{"200":{"description":"SSE stream: update events contain the normalized envelope; error events contain {code,message,retryable}. No replay. Maximum connection lifetime five minutes.","content":{"text/event-stream":{"schema":{"type":"string"},"x-event-schema":{"type":"object","required":["version","operation","venue","market_type","received_at","transport","implementation","data"],"properties":{"version":{"type":"string"},"operation":{"const":"streams.order-book"},"venue":{"type":"string","enum":["binance","bybit","bitget","coinbase","kraken","okx","kucoin"]},"market_type":{"type":"string"},"implementation":{"enum":["native","emulated"]},"received_at":{"type":"integer","format":"int64"},"transport":{"const":"sse"},"sequence":{"type":"integer","description":"Connection-local counter, reset on reconnect."},"delivery":{"type":"string"},"stream_origin":{"type":"object","description":"Original native ingestion identity and ordinal, preserved across public relays. Not a resumable history cursor.","required":["id","sequence"],"properties":{"id":{"type":"string","format":"uuid"},"sequence":{"type":"integer","minimum":1}}},"data":{"$ref":"#/components/schemas/OrderBook"}}}}}},"400":{"description":"Invalid or missing parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"401":{"description":"Missing, expired or invalid authentication.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"403":{"description":"Insufficient scope, unverified connection or exchange_access_denied. Exact account / region cause may be unknown.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"404":{"description":"Unknown operation or connection.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"409":{"description":"emulation_opt_in_required or exchange_nonce_rejected. Review capabilities, clock synchronization and nonce ordering.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"422":{"description":"unsupported_credentials, exchange_feature_unavailable, nexus_not_implemented, extension_not_applicable, adapter_context_unsupported, market_not_found or exchange_request_rejected. Adapter gaps do not prove exchange feature absence.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"423":{"description":"execution_locked or authentication_not_ready. Consult capabilities for the venue release gate.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"429":{"description":"Shared capacity or exchange rate limit reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"502":{"description":"Exchange returned invalid normalized data or an invalid extension response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"503":{"description":"Adapter, credentials, storage or exchange unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"504":{"description":"Exchange / adapter request deadline reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}}}}},"/api/v1/streams/trades":{"get":{"operationId":"streams_trades","tags":["Streaming"],"summary":"Stream market trades","description":"Native trade batches may overlap; deduplicate exchange trade IDs. Binance USD-M publishes aggregate trades marked aggregation=aggregate with agg: IDs; do not combine them with overlapping individual REST seeds. No complete history or replay is promised.","security":[],"parameters":[{"name":"venue","in":"query","required":true,"schema":{"description":"Exchange adapter.","example":"binance","type":"string","enum":["binance","bybit","bitget","coinbase","kraken","okx","kucoin"]}},{"name":"symbol","in":"query","required":true,"schema":{"description":"Unified market symbol. Perpetual example: BTC/USDT:USDT; listings differ by venue.","example":"BTC/USDT","type":"string","pattern":"^[A-Z0-9.]+/[A-Z0-9.]+(?::[A-Z0-9.]+(?:-[A-Z0-9.-]+)?)?$"}},{"name":"market_type","in":"query","required":false,"schema":{"description":"Account / market category. Use a settled symbol for derivatives.","example":"spot","type":"string","enum":["spot","swap","future","option"]}},{"name":"limit","in":"query","required":false,"schema":{"description":"Requested count / depth, 1–200 (default 100). Exchanges can restrict depths, return fewer records, or return a larger snapshot; Ordien truncates to this limit.","example":20,"type":"integer","minimum":1,"maximum":200}},{"name":"allow_emulated","in":"query","required":false,"schema":{"description":"Explicitly opt in to adapter emulation. Default false. Composed operations may differ from native exchange behavior; Ordien never substitutes linked or atomic order guarantees.","example":false,"type":"boolean"}}],"x-nexus-availability":"public","x-nexus-kind":"unified","x-nexus-capabilities":"/api/v1/capabilities","x-nexus-required-scope":null,"responses":{"200":{"description":"SSE stream: update events contain the normalized envelope; error events contain {code,message,retryable}. No replay. Maximum connection lifetime five minutes.","content":{"text/event-stream":{"schema":{"type":"string"},"x-event-schema":{"type":"object","required":["version","operation","venue","market_type","received_at","transport","implementation","data"],"properties":{"version":{"type":"string"},"operation":{"const":"streams.trades"},"venue":{"type":"string","enum":["binance","bybit","bitget","coinbase","kraken","okx","kucoin"]},"market_type":{"type":"string"},"implementation":{"enum":["native","emulated"]},"received_at":{"type":"integer","format":"int64"},"transport":{"const":"sse"},"sequence":{"type":"integer","description":"Connection-local counter, reset on reconnect."},"delivery":{"type":"string"},"stream_origin":{"type":"object","description":"Original native ingestion identity and ordinal, preserved across public relays. Not a resumable history cursor.","required":["id","sequence"],"properties":{"id":{"type":"string","format":"uuid"},"sequence":{"type":"integer","minimum":1}}},"data":{"type":"array","items":{"$ref":"#/components/schemas/Trade"}}}}}}},"400":{"description":"Invalid or missing parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"401":{"description":"Missing, expired or invalid authentication.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"403":{"description":"Insufficient scope, unverified connection or exchange_access_denied. Exact account / region cause may be unknown.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"404":{"description":"Unknown operation or connection.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"409":{"description":"emulation_opt_in_required or exchange_nonce_rejected. Review capabilities, clock synchronization and nonce ordering.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"422":{"description":"unsupported_credentials, exchange_feature_unavailable, nexus_not_implemented, extension_not_applicable, adapter_context_unsupported, market_not_found or exchange_request_rejected. Adapter gaps do not prove exchange feature absence.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"423":{"description":"execution_locked or authentication_not_ready. Consult capabilities for the venue release gate.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"429":{"description":"Shared capacity or exchange rate limit reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"502":{"description":"Exchange returned invalid normalized data or an invalid extension response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"503":{"description":"Adapter, credentials, storage or exchange unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"504":{"description":"Exchange / adapter request deadline reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}}}}},"/api/v1/streams/candles":{"get":{"operationId":"streams_candles","tags":["Streaming"],"summary":"Stream candles","description":"Candle updates can revise the open interval; upsert by symbol, interval and timestamp.","security":[],"parameters":[{"name":"venue","in":"query","required":true,"schema":{"description":"Exchange adapter.","example":"binance","type":"string","enum":["binance","bybit","bitget","coinbase","kraken","okx","kucoin"]}},{"name":"symbol","in":"query","required":true,"schema":{"description":"Unified market symbol. Perpetual example: BTC/USDT:USDT; listings differ by venue.","example":"BTC/USDT","type":"string","pattern":"^[A-Z0-9.]+/[A-Z0-9.]+(?::[A-Z0-9.]+(?:-[A-Z0-9.-]+)?)?$"}},{"name":"timeframe","in":"query","required":true,"schema":{"description":"Candle / history interval; supported intervals depend on the exchange.","example":"1h","type":"string","enum":["1m","3m","5m","15m","30m","1h","2h","4h","6h","8h","12h","1d","1w","1M"]}},{"name":"market_type","in":"query","required":false,"schema":{"description":"Account / market category. Use a settled symbol for derivatives.","example":"spot","type":"string","enum":["spot","swap","future","option"]}},{"name":"limit","in":"query","required":false,"schema":{"description":"Requested count / depth, 1–200 (default 100). Exchanges can restrict depths, return fewer records, or return a larger snapshot; Ordien truncates to this limit.","example":20,"type":"integer","minimum":1,"maximum":200}},{"name":"allow_emulated","in":"query","required":false,"schema":{"description":"Explicitly opt in to adapter emulation. Default false. Composed operations may differ from native exchange behavior; Ordien never substitutes linked or atomic order guarantees.","example":false,"type":"boolean"}}],"x-nexus-availability":"public","x-nexus-kind":"unified","x-nexus-capabilities":"/api/v1/capabilities","x-nexus-required-scope":null,"responses":{"200":{"description":"SSE stream: update events contain the normalized envelope; error events contain {code,message,retryable}. No replay. Maximum connection lifetime five minutes.","content":{"text/event-stream":{"schema":{"type":"string"},"x-event-schema":{"type":"object","required":["version","operation","venue","market_type","received_at","transport","implementation","data"],"properties":{"version":{"type":"string"},"operation":{"const":"streams.candles"},"venue":{"type":"string","enum":["binance","bybit","bitget","coinbase","kraken","okx","kucoin"]},"market_type":{"type":"string"},"implementation":{"enum":["native","emulated"]},"received_at":{"type":"integer","format":"int64"},"transport":{"const":"sse"},"sequence":{"type":"integer","description":"Connection-local counter, reset on reconnect."},"delivery":{"type":"string"},"stream_origin":{"type":"object","description":"Original native ingestion identity and ordinal, preserved across public relays. Not a resumable history cursor.","required":["id","sequence"],"properties":{"id":{"type":"string","format":"uuid"},"sequence":{"type":"integer","minimum":1}}},"data":{"type":"array","items":{"$ref":"#/components/schemas/Candle"}}}}}}},"400":{"description":"Invalid or missing parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"401":{"description":"Missing, expired or invalid authentication.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"403":{"description":"Insufficient scope, unverified connection or exchange_access_denied. Exact account / region cause may be unknown.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"404":{"description":"Unknown operation or connection.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"409":{"description":"emulation_opt_in_required or exchange_nonce_rejected. Review capabilities, clock synchronization and nonce ordering.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"422":{"description":"unsupported_credentials, exchange_feature_unavailable, nexus_not_implemented, extension_not_applicable, adapter_context_unsupported, market_not_found or exchange_request_rejected. Adapter gaps do not prove exchange feature absence.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"423":{"description":"execution_locked or authentication_not_ready. Consult capabilities for the venue release gate.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"429":{"description":"Shared capacity or exchange rate limit reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"502":{"description":"Exchange returned invalid normalized data or an invalid extension response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"503":{"description":"Adapter, credentials, storage or exchange unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"504":{"description":"Exchange / adapter request deadline reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}}}}},"/api/v1/streams/balances":{"get":{"operationId":"streams_balances","tags":["Streaming"],"summary":"Stream balances","description":"Authenticated balance updates for a verified connection.","security":[{"NexusKey":[]},{"BrowserSession":[]}],"parameters":[{"name":"venue","in":"query","required":true,"schema":{"description":"Exchange adapter.","example":"binance","type":"string","enum":["binance","bybit","bitget","coinbase","kraken","okx","kucoin"]}},{"name":"connection_id","in":"query","required":true,"schema":{"description":"ID of your verified, encrypted Ordien exchange connection.","example":"00000000-0000-4000-8000-000000000001","type":"string","format":"uuid"}},{"name":"market_type","in":"query","required":false,"schema":{"description":"Account / market category. Use a settled symbol for derivatives.","example":"spot","type":"string","enum":["spot","swap","future","option"]}},{"name":"allow_emulated","in":"query","required":false,"schema":{"description":"Explicitly opt in to adapter emulation. Default false. Composed operations may differ from native exchange behavior; Ordien never substitutes linked or atomic order guarantees.","example":false,"type":"boolean"}}],"x-nexus-availability":"verified_connection_required","x-nexus-kind":"unified","x-nexus-capabilities":"/api/v1/capabilities","x-nexus-required-scope":"streams:read","responses":{"200":{"description":"SSE stream: update events contain the normalized envelope; error events contain {code,message,retryable}. No replay. Maximum connection lifetime five minutes.","content":{"text/event-stream":{"schema":{"type":"string"},"x-event-schema":{"type":"object","required":["version","operation","venue","market_type","received_at","transport","implementation","data"],"properties":{"version":{"type":"string"},"operation":{"const":"streams.balances"},"venue":{"type":"string","enum":["binance","bybit","bitget","coinbase","kraken","okx","kucoin"]},"market_type":{"type":"string"},"implementation":{"enum":["native","emulated"]},"received_at":{"type":"integer","format":"int64"},"transport":{"const":"sse"},"sequence":{"type":"integer","description":"Connection-local counter, reset on reconnect."},"delivery":{"type":"string"},"data":{"$ref":"#/components/schemas/Balance"}}}}}},"400":{"description":"Invalid or missing parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"401":{"description":"Missing, expired or invalid authentication.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"403":{"description":"Insufficient scope, unverified connection or exchange_access_denied. Exact account / region cause may be unknown.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"404":{"description":"Unknown operation or connection.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"409":{"description":"emulation_opt_in_required or exchange_nonce_rejected. Review capabilities, clock synchronization and nonce ordering.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"422":{"description":"unsupported_credentials, exchange_feature_unavailable, nexus_not_implemented, extension_not_applicable, adapter_context_unsupported, market_not_found or exchange_request_rejected. Adapter gaps do not prove exchange feature absence.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"423":{"description":"execution_locked or authentication_not_ready. Consult capabilities for the venue release gate.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"429":{"description":"Shared capacity or exchange rate limit reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"502":{"description":"Exchange returned invalid normalized data or an invalid extension response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"503":{"description":"Adapter, credentials, storage or exchange unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"504":{"description":"Exchange / adapter request deadline reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}}}}},"/api/v1/streams/orders":{"get":{"operationId":"streams_orders","tags":["Streaming"],"summary":"Stream your orders","description":"Authenticated order updates. Reconcile via REST after reconnecting.","security":[{"NexusKey":[]},{"BrowserSession":[]}],"parameters":[{"name":"venue","in":"query","required":true,"schema":{"description":"Exchange adapter.","example":"binance","type":"string","enum":["binance","bybit","bitget","coinbase","kraken","okx","kucoin"]}},{"name":"connection_id","in":"query","required":true,"schema":{"description":"ID of your verified, encrypted Ordien exchange connection.","example":"00000000-0000-4000-8000-000000000001","type":"string","format":"uuid"}},{"name":"market_type","in":"query","required":false,"schema":{"description":"Account / market category. Use a settled symbol for derivatives.","example":"spot","type":"string","enum":["spot","swap","future","option"]}},{"name":"symbol","in":"query","required":false,"schema":{"description":"Unified market symbol. Perpetual example: BTC/USDT:USDT; listings differ by venue.","example":"BTC/USDT","type":"string","pattern":"^[A-Z0-9.]+/[A-Z0-9.]+(?::[A-Z0-9.]+(?:-[A-Z0-9.-]+)?)?$"}},{"name":"limit","in":"query","required":false,"schema":{"description":"Requested count / depth, 1–200 (default 100). Exchanges can restrict depths, return fewer records, or return a larger snapshot; Ordien truncates to this limit.","example":20,"type":"integer","minimum":1,"maximum":200}},{"name":"allow_emulated","in":"query","required":false,"schema":{"description":"Explicitly opt in to adapter emulation. Default false. Composed operations may differ from native exchange behavior; Ordien never substitutes linked or atomic order guarantees.","example":false,"type":"boolean"}}],"x-nexus-availability":"verified_connection_required","x-nexus-kind":"unified","x-nexus-capabilities":"/api/v1/capabilities","x-nexus-required-scope":"streams:read","responses":{"200":{"description":"SSE stream: update events contain the normalized envelope; error events contain {code,message,retryable}. No replay. Maximum connection lifetime five minutes.","content":{"text/event-stream":{"schema":{"type":"string"},"x-event-schema":{"type":"object","required":["version","operation","venue","market_type","received_at","transport","implementation","data"],"properties":{"version":{"type":"string"},"operation":{"const":"streams.orders"},"venue":{"type":"string","enum":["binance","bybit","bitget","coinbase","kraken","okx","kucoin"]},"market_type":{"type":"string"},"implementation":{"enum":["native","emulated"]},"received_at":{"type":"integer","format":"int64"},"transport":{"const":"sse"},"sequence":{"type":"integer","description":"Connection-local counter, reset on reconnect."},"delivery":{"type":"string"},"data":{"type":"array","items":{"$ref":"#/components/schemas/Order"}}}}}}},"400":{"description":"Invalid or missing parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"401":{"description":"Missing, expired or invalid authentication.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"403":{"description":"Insufficient scope, unverified connection or exchange_access_denied. Exact account / region cause may be unknown.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"404":{"description":"Unknown operation or connection.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"409":{"description":"emulation_opt_in_required or exchange_nonce_rejected. Review capabilities, clock synchronization and nonce ordering.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"422":{"description":"unsupported_credentials, exchange_feature_unavailable, nexus_not_implemented, extension_not_applicable, adapter_context_unsupported, market_not_found or exchange_request_rejected. Adapter gaps do not prove exchange feature absence.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"423":{"description":"execution_locked or authentication_not_ready. Consult capabilities for the venue release gate.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"429":{"description":"Shared capacity or exchange rate limit reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"502":{"description":"Exchange returned invalid normalized data or an invalid extension response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"503":{"description":"Adapter, credentials, storage or exchange unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"504":{"description":"Exchange / adapter request deadline reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}}}}},"/api/v1/streams/fills":{"get":{"operationId":"streams_fills","tags":["Streaming"],"summary":"Stream your fills","description":"Authenticated fill batches; deduplicate exchange execution IDs.","security":[{"NexusKey":[]},{"BrowserSession":[]}],"parameters":[{"name":"venue","in":"query","required":true,"schema":{"description":"Exchange adapter.","example":"binance","type":"string","enum":["binance","bybit","bitget","coinbase","kraken","okx","kucoin"]}},{"name":"connection_id","in":"query","required":true,"schema":{"description":"ID of your verified, encrypted Ordien exchange connection.","example":"00000000-0000-4000-8000-000000000001","type":"string","format":"uuid"}},{"name":"market_type","in":"query","required":false,"schema":{"description":"Account / market category. Use a settled symbol for derivatives.","example":"spot","type":"string","enum":["spot","swap","future","option"]}},{"name":"symbol","in":"query","required":false,"schema":{"description":"Unified market symbol. Perpetual example: BTC/USDT:USDT; listings differ by venue.","example":"BTC/USDT","type":"string","pattern":"^[A-Z0-9.]+/[A-Z0-9.]+(?::[A-Z0-9.]+(?:-[A-Z0-9.-]+)?)?$"}},{"name":"limit","in":"query","required":false,"schema":{"description":"Requested count / depth, 1–200 (default 100). Exchanges can restrict depths, return fewer records, or return a larger snapshot; Ordien truncates to this limit.","example":20,"type":"integer","minimum":1,"maximum":200}},{"name":"allow_emulated","in":"query","required":false,"schema":{"description":"Explicitly opt in to adapter emulation. Default false. Composed operations may differ from native exchange behavior; Ordien never substitutes linked or atomic order guarantees.","example":false,"type":"boolean"}}],"x-nexus-availability":"verified_connection_required","x-nexus-kind":"unified","x-nexus-capabilities":"/api/v1/capabilities","x-nexus-required-scope":"streams:read","responses":{"200":{"description":"SSE stream: update events contain the normalized envelope; error events contain {code,message,retryable}. No replay. Maximum connection lifetime five minutes.","content":{"text/event-stream":{"schema":{"type":"string"},"x-event-schema":{"type":"object","required":["version","operation","venue","market_type","received_at","transport","implementation","data"],"properties":{"version":{"type":"string"},"operation":{"const":"streams.fills"},"venue":{"type":"string","enum":["binance","bybit","bitget","coinbase","kraken","okx","kucoin"]},"market_type":{"type":"string"},"implementation":{"enum":["native","emulated"]},"received_at":{"type":"integer","format":"int64"},"transport":{"const":"sse"},"sequence":{"type":"integer","description":"Connection-local counter, reset on reconnect."},"delivery":{"type":"string"},"data":{"type":"array","items":{"$ref":"#/components/schemas/Trade"}}}}}}},"400":{"description":"Invalid or missing parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"401":{"description":"Missing, expired or invalid authentication.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"403":{"description":"Insufficient scope, unverified connection or exchange_access_denied. Exact account / region cause may be unknown.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"404":{"description":"Unknown operation or connection.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"409":{"description":"emulation_opt_in_required or exchange_nonce_rejected. Review capabilities, clock synchronization and nonce ordering.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"422":{"description":"unsupported_credentials, exchange_feature_unavailable, nexus_not_implemented, extension_not_applicable, adapter_context_unsupported, market_not_found or exchange_request_rejected. Adapter gaps do not prove exchange feature absence.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"423":{"description":"execution_locked or authentication_not_ready. Consult capabilities for the venue release gate.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"429":{"description":"Shared capacity or exchange rate limit reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"502":{"description":"Exchange returned invalid normalized data or an invalid extension response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"503":{"description":"Adapter, credentials, storage or exchange unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"504":{"description":"Exchange / adapter request deadline reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}}}}},"/api/v1/streams/positions":{"get":{"operationId":"streams_positions","tags":["Streaming"],"summary":"Stream positions","description":"Authenticated position updates for the selected derivatives account.","security":[{"NexusKey":[]},{"BrowserSession":[]}],"parameters":[{"name":"venue","in":"query","required":true,"schema":{"description":"Exchange adapter.","example":"binance","type":"string","enum":["binance","bybit","bitget","coinbase","kraken","okx","kucoin"]}},{"name":"connection_id","in":"query","required":true,"schema":{"description":"ID of your verified, encrypted Ordien exchange connection.","example":"00000000-0000-4000-8000-000000000001","type":"string","format":"uuid"}},{"name":"market_type","in":"query","required":false,"schema":{"description":"Account / market category. Use a settled symbol for derivatives.","example":"spot","type":"string","enum":["spot","swap","future","option"]}},{"name":"allow_emulated","in":"query","required":false,"schema":{"description":"Explicitly opt in to adapter emulation. Default false. Composed operations may differ from native exchange behavior; Ordien never substitutes linked or atomic order guarantees.","example":false,"type":"boolean"}}],"x-nexus-availability":"verified_connection_required","x-nexus-kind":"unified","x-nexus-capabilities":"/api/v1/capabilities","x-nexus-required-scope":"streams:read","responses":{"200":{"description":"SSE stream: update events contain the normalized envelope; error events contain {code,message,retryable}. No replay. Maximum connection lifetime five minutes.","content":{"text/event-stream":{"schema":{"type":"string"},"x-event-schema":{"type":"object","required":["version","operation","venue","market_type","received_at","transport","implementation","data"],"properties":{"version":{"type":"string"},"operation":{"const":"streams.positions"},"venue":{"type":"string","enum":["binance","bybit","bitget","coinbase","kraken","okx","kucoin"]},"market_type":{"type":"string"},"implementation":{"enum":["native","emulated"]},"received_at":{"type":"integer","format":"int64"},"transport":{"const":"sse"},"sequence":{"type":"integer","description":"Connection-local counter, reset on reconnect."},"delivery":{"type":"string"},"data":{"type":"array","items":{"$ref":"#/components/schemas/Position"}}}}}}},"400":{"description":"Invalid or missing parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"401":{"description":"Missing, expired or invalid authentication.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"403":{"description":"Insufficient scope, unverified connection or exchange_access_denied. Exact account / region cause may be unknown.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"404":{"description":"Unknown operation or connection.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"409":{"description":"emulation_opt_in_required or exchange_nonce_rejected. Review capabilities, clock synchronization and nonce ordering.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"422":{"description":"unsupported_credentials, exchange_feature_unavailable, nexus_not_implemented, extension_not_applicable, adapter_context_unsupported, market_not_found or exchange_request_rejected. Adapter gaps do not prove exchange feature absence.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"423":{"description":"execution_locked or authentication_not_ready. Consult capabilities for the venue release gate.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"429":{"description":"Shared capacity or exchange rate limit reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"502":{"description":"Exchange returned invalid normalized data or an invalid extension response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"503":{"description":"Adapter, credentials, storage or exchange unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"504":{"description":"Exchange / adapter request deadline reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}}}}},"/api/v1/market-data/okx-spreads":{"get":{"operationId":"market_data_okx_spreads","tags":["Market data"],"summary":"OKX spread instruments","description":"Discover OKX Nitro Spreads, their legs and sizing rules. Spread IDs and size currencies retain their exchange meaning.","security":[],"parameters":[{"name":"venue","in":"query","required":true,"schema":{"description":"Exchange adapter.","example":"okx","type":"string","enum":["okx"]}},{"name":"spread_id","in":"query","required":false,"schema":{"description":"Native OKX spread ID. Discover it through okx-spreads; this is not a unified market symbol.","example":"BTC-USDT_BTC-USDT-SWAP","type":"string","pattern":"^[A-Z0-9_-]{1,128}$"}},{"name":"instrument_id","in":"query","required":false,"schema":{"description":"Native OKX instrument ID included in a spread.","example":"BTC-USDT","type":"string","pattern":"^[A-Z0-9-]{1,80}$"}},{"name":"spread_state","in":"query","required":false,"schema":{"description":"OKX spread lifecycle state. Omit to use the exchange default.","example":"live","type":"string","enum":["live","suspend","expired"]}}],"x-nexus-availability":"public","x-nexus-kind":"extension","x-nexus-capabilities":"/api/v1/capabilities","x-nexus-extension":{"venue":"okx","market_types":["spot"],"upstream":"GET /api/v5/sprd/spreads","source":"https://www.okx.com/docs-v5/en/#spread-trading-rest-api-get-spreads","reviewed_at":"2026-10-12","semantics":"Product-wide discovery: the spot context is a routing convention and does not restrict spread legs to spot.","requirements":["Listings and lifecycle state are determined by OKX.","Trading eligibility is not checked by this public read."],"equivalence":"No equivalence is asserted for other venues. This named extension is not portable."},"x-nexus-required-scope":null,"responses":{"200":{"description":"Normalized response.","content":{"application/json":{"schema":{"type":"object","required":["version","operation","venue","market_type","received_at","transport","implementation","data"],"properties":{"version":{"type":"string"},"operation":{"const":"market-data.okx-spreads"},"venue":{"type":"string","enum":["okx"]},"market_type":{"type":"string"},"implementation":{"enum":["native"]},"extension":{"const":"okx"},"received_at":{"type":"integer","format":"int64"},"transport":{"const":"rest"},"data":{"type":"array","items":{"$ref":"#/components/schemas/Spread"}}}}}}},"400":{"description":"Invalid or missing parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"401":{"description":"Missing, expired or invalid authentication.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"403":{"description":"Insufficient scope, unverified connection or exchange_access_denied. Exact account / region cause may be unknown.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"404":{"description":"Unknown operation or connection.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"409":{"description":"emulation_opt_in_required or exchange_nonce_rejected. Review capabilities, clock synchronization and nonce ordering.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"422":{"description":"unsupported_credentials, exchange_feature_unavailable, nexus_not_implemented, extension_not_applicable, adapter_context_unsupported, market_not_found or exchange_request_rejected. Adapter gaps do not prove exchange feature absence.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"423":{"description":"execution_locked or authentication_not_ready. Consult capabilities for the venue release gate.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"429":{"description":"Shared capacity or exchange rate limit reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"502":{"description":"Exchange returned invalid normalized data or an invalid extension response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"503":{"description":"Adapter, credentials, storage or exchange unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"504":{"description":"Exchange / adapter request deadline reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}}}}},"/api/v1/accounts/bybit-account-info":{"get":{"operationId":"accounts_bybit_account_info","tags":["Accounts"],"summary":"Bybit unified account mode","description":"Read Bybit unified margin status, margin mode and spot hedging status without flattening them into a generic leverage setting.","security":[{"NexusKey":[]},{"BrowserSession":[]}],"parameters":[{"name":"venue","in":"query","required":true,"schema":{"description":"Exchange adapter.","example":"bybit","type":"string","enum":["bybit"]}},{"name":"connection_id","in":"query","required":true,"schema":{"description":"ID of your verified, encrypted Ordien exchange connection.","example":"00000000-0000-4000-8000-000000000001","type":"string","format":"uuid"}}],"x-nexus-availability":"verified_connection_required","x-nexus-kind":"extension","x-nexus-capabilities":"/api/v1/capabilities","x-nexus-extension":{"venue":"bybit","market_types":["spot"],"upstream":"GET /v5/account/info","source":"https://bybit-exchange.github.io/docs/v5/account/account-info","reviewed_at":"2026-10-12","semantics":"Account-wide read. The spot routing context does not restrict the result to spot balances. Account mode determines available products and margin behavior.","requirements":["Verified owned connection and accounts:read scope.","Account status codes retain Bybit semantics; this is not a portfolio-margin eligibility check."],"equivalence":"No equivalence is asserted for other venues. This named extension is not portable."},"x-nexus-required-scope":"accounts:read","responses":{"200":{"description":"Normalized response.","content":{"application/json":{"schema":{"type":"object","required":["version","operation","venue","market_type","received_at","transport","implementation","data"],"properties":{"version":{"type":"string"},"operation":{"const":"accounts.bybit-account-info"},"venue":{"type":"string","enum":["bybit"]},"market_type":{"type":"string"},"implementation":{"enum":["native"]},"extension":{"const":"bybit"},"received_at":{"type":"integer","format":"int64"},"transport":{"const":"rest"},"data":{"$ref":"#/components/schemas/BybitAccountInfo"}}}}}},"400":{"description":"Invalid or missing parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"401":{"description":"Missing, expired or invalid authentication.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"403":{"description":"Insufficient scope, unverified connection or exchange_access_denied. Exact account / region cause may be unknown.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"404":{"description":"Unknown operation or connection.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"409":{"description":"emulation_opt_in_required or exchange_nonce_rejected. Review capabilities, clock synchronization and nonce ordering.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"422":{"description":"unsupported_credentials, exchange_feature_unavailable, nexus_not_implemented, extension_not_applicable, adapter_context_unsupported, market_not_found or exchange_request_rejected. Adapter gaps do not prove exchange feature absence.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"423":{"description":"execution_locked or authentication_not_ready. Consult capabilities for the venue release gate.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"429":{"description":"Shared capacity or exchange rate limit reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"502":{"description":"Exchange returned invalid normalized data or an invalid extension response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"503":{"description":"Adapter, credentials, storage or exchange unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"504":{"description":"Exchange / adapter request deadline reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}}}}},"/api/v1/trading/kraken-cancel-after":{"post":{"operationId":"trading_kraken_cancel_after","tags":["Orders & fills"],"summary":"Kraken cancellation timer","description":"Contract for Kraken’s exchange-side dead man’s switch. All client orders are canceled when the countdown expires. Execution remains locked. This release always returns an error; a successful execution response is intentionally not advertised.","security":[{"NexusKey":[]},{"BrowserSession":[]}],"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["venue","connection_id","timeout_seconds"],"properties":{"venue":{"description":"Exchange adapter.","example":"kraken","type":"string","enum":["kraken"]},"connection_id":{"description":"ID of your verified, encrypted Ordien exchange connection.","example":"00000000-0000-4000-8000-000000000001","type":"string","format":"uuid"},"timeout_seconds":{"description":"Kraken countdown in seconds (Ordien maximum 86400). Zero disables it. Renewal is the client’s responsibility.","example":60,"type":"integer","minimum":0,"maximum":86400}}}}}},"x-nexus-availability":"execution_locked","x-nexus-kind":"extension","x-nexus-capabilities":"/api/v1/capabilities","x-nexus-extension":{"venue":"kraken","market_types":["spot"],"upstream":"POST /0/private/CancelAllOrdersAfter","source":"https://docs.kraken.com/api-reference/trading/cancel-all-orders-after-x","reviewed_at":"2026-10-12","semantics":"The timer runs at Kraken. A Ordien-side timer is not an equivalent guarantee. Zero disables the countdown; the client must renew a running timer.","requirements":["Exchange permission to create/modify orders or cancel/close orders.","Native timer certification and private execution safeguards are not implemented."],"equivalence":"No equivalence is asserted for other venues. This named extension is not portable."},"x-nexus-required-scope":"trading:write","responses":{"400":{"description":"Invalid or missing parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"401":{"description":"Missing, expired or invalid authentication.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"403":{"description":"Insufficient scope, unverified connection or exchange_access_denied. Exact account / region cause may be unknown.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"404":{"description":"Unknown operation or connection.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"409":{"description":"emulation_opt_in_required or exchange_nonce_rejected. Review capabilities, clock synchronization and nonce ordering.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"422":{"description":"unsupported_credentials, exchange_feature_unavailable, nexus_not_implemented, extension_not_applicable, adapter_context_unsupported, market_not_found or exchange_request_rejected. Adapter gaps do not prove exchange feature absence.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"423":{"description":"execution_locked or authentication_not_ready. Consult capabilities for the venue release gate.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"429":{"description":"Shared capacity or exchange rate limit reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"502":{"description":"Exchange returned invalid normalized data or an invalid extension response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"503":{"description":"Adapter, credentials, storage or exchange unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"504":{"description":"Exchange / adapter request deadline reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}}}}},"/api/v1/trading/binance-otoco":{"post":{"operationId":"trading_binance_otoco","tags":["Orders & fills"],"summary":"Binance OTOCO bracket","description":"Contract subset: a BUY LIMIT GTC entry activates a SELL LIMIT_MAKER take-profit and SELL STOP_LOSS OCO pair only after the entry fills completely. Pending quantity equals entry amount. Execution remains locked. This release always returns an error; a successful execution response is intentionally not advertised.","security":[{"NexusKey":[]},{"BrowserSession":[]}],"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["venue","connection_id","symbol","amount","price","take_profit_price","stop_loss_price"],"properties":{"venue":{"description":"Exchange adapter.","example":"binance","type":"string","enum":["binance"]},"connection_id":{"description":"ID of your verified, encrypted Ordien exchange connection.","example":"00000000-0000-4000-8000-000000000001","type":"string","format":"uuid"},"symbol":{"description":"Unified market symbol. Perpetual example: BTC/USDT:USDT; listings differ by venue.","example":"BTC/USDT","type":"string","pattern":"^[A-Z0-9.]+/[A-Z0-9.]+(?::[A-Z0-9.]+(?:-[A-Z0-9.-]+)?)?$"},"amount":{"description":"Positive decimal string in base units; contracts use the contract amount shown by market metadata.","example":"0.001","type":"string","pattern":"^(?:0|[1-9][0-9]*)(?:\\.[0-9]{1,18})?$"},"price":{"description":"Positive limit price as a decimal string.","example":"60000.00","type":"string","pattern":"^(?:0|[1-9][0-9]*)(?:\\.[0-9]{1,18})?$"},"take_profit_price":{"description":"Above-entry sell LIMIT_MAKER price for the Binance buy-entry OTOCO subset.","example":"70000.00","type":"string","pattern":"^[0-9]+(?:\\.[0-9]+)?$"},"stop_loss_price":{"description":"Below-entry sell STOP_LOSS trigger for the Binance buy-entry OTOCO subset.","example":"50000.00","type":"string","pattern":"^[0-9]+(?:\\.[0-9]+)?$"}}}}}},"x-nexus-availability":"execution_locked","x-nexus-kind":"extension","x-nexus-capabilities":"/api/v1/capabilities","x-nexus-extension":{"venue":"binance","market_types":["spot"],"upstream":"POST /api/v3/orderList/otoco","source":"https://developers.binance.com/docs/binance-spot-api-docs/rest-api/trading-endpoints","reviewed_at":"2026-10-12","semantics":"One native linked order list, never three independent Ordien orders. This subset excludes sell entries, trailing stops and alternative pending order types.","requirements":["Trading permission, symbol filters and order-list limits apply.","Entry price must be between the stop-loss trigger and take-profit price.","Live order-list execution and reconciliation are not implemented."],"equivalence":"No equivalence is asserted for other venues. This named extension is not portable."},"x-nexus-required-scope":"trading:write","responses":{"400":{"description":"Invalid or missing parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"401":{"description":"Missing, expired or invalid authentication.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"403":{"description":"Insufficient scope, unverified connection or exchange_access_denied. Exact account / region cause may be unknown.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"404":{"description":"Unknown operation or connection.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"409":{"description":"emulation_opt_in_required or exchange_nonce_rejected. Review capabilities, clock synchronization and nonce ordering.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"422":{"description":"unsupported_credentials, exchange_feature_unavailable, nexus_not_implemented, extension_not_applicable, adapter_context_unsupported, market_not_found or exchange_request_rejected. Adapter gaps do not prove exchange feature absence.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"423":{"description":"execution_locked or authentication_not_ready. Consult capabilities for the venue release gate.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"429":{"description":"Shared capacity or exchange rate limit reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"502":{"description":"Exchange returned invalid normalized data or an invalid extension response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"503":{"description":"Adapter, credentials, storage or exchange unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"504":{"description":"Exchange / adapter request deadline reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}}}}},"/api/v1/trading/okx-spread-order":{"post":{"operationId":"trading_okx_spread_order","tags":["Orders & fills"],"summary":"OKX atomic spread order","description":"Contract for an OKX Nitro Spreads limit order. Linked legs fill in matching quantities or neither; partial spread fills remain possible. Execution remains locked. This release always returns an error; a successful execution response is intentionally not advertised.","security":[{"NexusKey":[]},{"BrowserSession":[]}],"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["venue","connection_id","spread_id","side","spread_size","spread_price"],"properties":{"venue":{"description":"Exchange adapter.","example":"okx","type":"string","enum":["okx"]},"connection_id":{"description":"ID of your verified, encrypted Ordien exchange connection.","example":"00000000-0000-4000-8000-000000000001","type":"string","format":"uuid"},"spread_id":{"description":"Native OKX spread ID. Discover it through okx-spreads; this is not a unified market symbol.","example":"BTC-USDT_BTC-USDT-SWAP","type":"string","pattern":"^[A-Z0-9_-]{1,128}$"},"side":{"description":"Order direction.","example":"buy","type":"string","enum":["buy","sell"]},"spread_size":{"description":"Spread size in the size_currency returned by okx-spreads, not necessarily contracts.","example":"0.001","type":"string","pattern":"^[0-9]+(?:\\.[0-9]+)?$"},"spread_price":{"description":"Signed spread price. Negative and zero spread prices are valid; inspect tick_size.","example":"-2.15","type":"string","pattern":"^-?[0-9]+(?:\\.[0-9]+)?$"}}}}}},"x-nexus-availability":"execution_locked","x-nexus-kind":"extension","x-nexus-capabilities":"/api/v1/capabilities","x-nexus-extension":{"venue":"okx","market_types":["spot"],"upstream":"POST /api/v5/sprd/order","source":"https://www.okx.com/docs-v5/en/#spread-trading-rest-api-place-order","reviewed_at":"2026-10-12","semantics":"A native spread limit order, not two standalone orders. Discover size_currency and tick_size first. The spot routing context does not restrict the spread legs.","requirements":["OKX product access, trading permission and margin requirements apply.","Spread clearing and settlement must be reconciled; execution is not implemented."],"equivalence":"No equivalence is asserted for other venues. This named extension is not portable."},"x-nexus-required-scope":"trading:write","responses":{"400":{"description":"Invalid or missing parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"401":{"description":"Missing, expired or invalid authentication.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"403":{"description":"Insufficient scope, unverified connection or exchange_access_denied. Exact account / region cause may be unknown.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"404":{"description":"Unknown operation or connection.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"409":{"description":"emulation_opt_in_required or exchange_nonce_rejected. Review capabilities, clock synchronization and nonce ordering.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"422":{"description":"unsupported_credentials, exchange_feature_unavailable, nexus_not_implemented, extension_not_applicable, adapter_context_unsupported, market_not_found or exchange_request_rejected. Adapter gaps do not prove exchange feature absence.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"423":{"description":"execution_locked or authentication_not_ready. Consult capabilities for the venue release gate.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"429":{"description":"Shared capacity or exchange rate limit reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"502":{"description":"Exchange returned invalid normalized data or an invalid extension response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"503":{"description":"Adapter, credentials, storage or exchange unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}},"504":{"description":"Exchange / adapter request deadline reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NexusError"}}}}}}},"/api/v1/institutional/organizations":{"get":{"operationId":"institutionalOrganizations","security":[{"BrowserSession":[]},{"NexusKey":[]}],"responses":{"200":{"description":"Authorized records or persisted workflow result. Monetary values are decimal strings; NAV and reports remain provisional."},"400":{"description":"Invalid fields, precision, date boundary or query."},"401":{"description":"Authentication absent, expired or revoked."},"403":{"description":"Insufficient scope/role, wrong Origin, self-approval, or unverified connection."},"404":{"description":"Unknown or unauthorized tenant/resource."},"409":{"description":"Replay conflict, unresolved break or locked accounting period."},"413":{"description":"Request exceeds 16 KiB."},"422":{"description":"Financial calculation, source or precision is unsupported."},"423":{"description":"Live allocation or execution remains locked."},"502":{"description":"Upstream source or response is invalid or exceeds the bounded response limit."},"503":{"description":"Storage or account service unavailable. Do not blindly retry mutations."}}},"post":{"operationId":"institutionalCreateOrganization","security":[{"BrowserSession":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"idempotency_key":{"type":"string","format":"uuid"},"name":{"type":"string","maxLength":120},"jurisdiction":{"type":"string","minLength":2,"maxLength":80},"base_currency":{"const":"USD"}},"required":["idempotency_key","name","jurisdiction","base_currency"]}}}},"responses":{"200":{"description":"Authorized records or persisted workflow result. Monetary values are decimal strings; NAV and reports remain provisional."},"201":{"description":"Organization and owner membership created, or the identical creation replayed."},"400":{"description":"Invalid fields, precision, date boundary or query."},"401":{"description":"Authentication absent, expired or revoked."},"403":{"description":"Insufficient scope/role, wrong Origin, self-approval, or unverified connection."},"404":{"description":"Unknown or unauthorized tenant/resource."},"409":{"description":"Replay conflict, unresolved break or locked accounting period."},"413":{"description":"Request exceeds 16 KiB."},"422":{"description":"Financial calculation, source or precision is unsupported."},"423":{"description":"Live allocation or execution remains locked."},"502":{"description":"Upstream source or response is invalid or exceeds the bounded response limit."},"503":{"description":"Storage or account service unavailable. Do not blindly retry mutations."}}}},"/api/v1/institutional/organizations/{org}/overview":{"get":{"operationId":"institutionalOverview","security":[{"BrowserSession":[]},{"NexusKey":[]}],"parameters":[{"name":"org","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"portfolio_id","in":"query","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Authorized records or persisted workflow result. Monetary values are decimal strings; NAV and reports remain provisional."},"400":{"description":"Invalid fields, precision, date boundary or query."},"401":{"description":"Authentication absent, expired or revoked."},"403":{"description":"Insufficient scope/role, wrong Origin, self-approval, or unverified connection."},"404":{"description":"Unknown or unauthorized tenant/resource."},"409":{"description":"Replay conflict, unresolved break or locked accounting period."},"413":{"description":"Request exceeds 16 KiB."},"422":{"description":"Financial calculation, source or precision is unsupported."},"423":{"description":"Live allocation or execution remains locked."},"502":{"description":"Upstream source or response is invalid or exceeds the bounded response limit."},"503":{"description":"Storage or account service unavailable. Do not blindly retry mutations."}}}},"/api/v1/institutional/organizations/{org}/entities":{"get":{"operationId":"institutionalList_entities","security":[{"BrowserSession":[]},{"NexusKey":[]}],"parameters":[{"name":"org","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"portfolio_id","in":"query","schema":{"type":"string","format":"uuid"}},{"name":"cursor","in":"query","schema":{"type":"string","format":"uuid"},"description":"Last item UUID; page order is stable ID order, not event chronology."},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}}],"responses":{"200":{"description":"Authorized records or persisted workflow result. Monetary values are decimal strings; NAV and reports remain provisional."},"400":{"description":"Invalid fields, precision, date boundary or query."},"401":{"description":"Authentication absent, expired or revoked."},"403":{"description":"Insufficient scope/role, wrong Origin, self-approval, or unverified connection."},"404":{"description":"Unknown or unauthorized tenant/resource."},"409":{"description":"Replay conflict, unresolved break or locked accounting period."},"413":{"description":"Request exceeds 16 KiB."},"422":{"description":"Financial calculation, source or precision is unsupported."},"423":{"description":"Live allocation or execution remains locked."},"502":{"description":"Upstream source or response is invalid or exceeds the bounded response limit."},"503":{"description":"Storage or account service unavailable. Do not blindly retry mutations."}}},"post":{"operationId":"institutionalCreate_entities","security":[{"BrowserSession":[]}],"parameters":[{"name":"org","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"description":"Organization role and object scope are checked server-side. See the institutional API guide for review constraints.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"idempotency_key":{"type":"string","format":"uuid"},"name":{"type":"string","minLength":1,"maxLength":120},"jurisdiction":{"type":"string","minLength":1}},"required":["idempotency_key","name","jurisdiction"]}}}},"responses":{"200":{"description":"Authorized records or persisted workflow result. Monetary values are decimal strings; NAV and reports remain provisional."},"400":{"description":"Invalid fields, precision, date boundary or query."},"401":{"description":"Authentication absent, expired or revoked."},"403":{"description":"Insufficient scope/role, wrong Origin, self-approval, or unverified connection."},"404":{"description":"Unknown or unauthorized tenant/resource."},"409":{"description":"Replay conflict, unresolved break or locked accounting period."},"413":{"description":"Request exceeds 16 KiB."},"422":{"description":"Financial calculation, source or precision is unsupported."},"423":{"description":"Live allocation or execution remains locked."},"502":{"description":"Upstream source or response is invalid or exceeds the bounded response limit."},"503":{"description":"Storage or account service unavailable. Do not blindly retry mutations."}}}},"/api/v1/institutional/organizations/{org}/funds":{"get":{"operationId":"institutionalList_funds","security":[{"BrowserSession":[]},{"NexusKey":[]}],"parameters":[{"name":"org","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"portfolio_id","in":"query","schema":{"type":"string","format":"uuid"}},{"name":"cursor","in":"query","schema":{"type":"string","format":"uuid"},"description":"Last item UUID; page order is stable ID order, not event chronology."},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}}],"responses":{"200":{"description":"Authorized records or persisted workflow result. Monetary values are decimal strings; NAV and reports remain provisional."},"400":{"description":"Invalid fields, precision, date boundary or query."},"401":{"description":"Authentication absent, expired or revoked."},"403":{"description":"Insufficient scope/role, wrong Origin, self-approval, or unverified connection."},"404":{"description":"Unknown or unauthorized tenant/resource."},"409":{"description":"Replay conflict, unresolved break or locked accounting period."},"413":{"description":"Request exceeds 16 KiB."},"422":{"description":"Financial calculation, source or precision is unsupported."},"423":{"description":"Live allocation or execution remains locked."},"502":{"description":"Upstream source or response is invalid or exceeds the bounded response limit."},"503":{"description":"Storage or account service unavailable. Do not blindly retry mutations."}}},"post":{"operationId":"institutionalCreate_funds","security":[{"BrowserSession":[]}],"parameters":[{"name":"org","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"description":"Organization role and object scope are checked server-side. See the institutional API guide for review constraints.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"idempotency_key":{"type":"string","format":"uuid"},"entity_id":{"type":"string","format":"uuid"},"name":{"type":"string","minLength":1,"maxLength":120},"base_currency":{"type":"string","const":"USD"}},"required":["idempotency_key","entity_id","name","base_currency"]}}}},"responses":{"200":{"description":"Authorized records or persisted workflow result. Monetary values are decimal strings; NAV and reports remain provisional."},"400":{"description":"Invalid fields, precision, date boundary or query."},"401":{"description":"Authentication absent, expired or revoked."},"403":{"description":"Insufficient scope/role, wrong Origin, self-approval, or unverified connection."},"404":{"description":"Unknown or unauthorized tenant/resource."},"409":{"description":"Replay conflict, unresolved break or locked accounting period."},"413":{"description":"Request exceeds 16 KiB."},"422":{"description":"Financial calculation, source or precision is unsupported."},"423":{"description":"Live allocation or execution remains locked."},"502":{"description":"Upstream source or response is invalid or exceeds the bounded response limit."},"503":{"description":"Storage or account service unavailable. Do not blindly retry mutations."}}}},"/api/v1/institutional/organizations/{org}/portfolios":{"get":{"operationId":"institutionalList_portfolios","security":[{"BrowserSession":[]},{"NexusKey":[]}],"parameters":[{"name":"org","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"portfolio_id","in":"query","schema":{"type":"string","format":"uuid"}},{"name":"cursor","in":"query","schema":{"type":"string","format":"uuid"},"description":"Last item UUID; page order is stable ID order, not event chronology."},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}}],"responses":{"200":{"description":"Authorized records or persisted workflow result. Monetary values are decimal strings; NAV and reports remain provisional."},"400":{"description":"Invalid fields, precision, date boundary or query."},"401":{"description":"Authentication absent, expired or revoked."},"403":{"description":"Insufficient scope/role, wrong Origin, self-approval, or unverified connection."},"404":{"description":"Unknown or unauthorized tenant/resource."},"409":{"description":"Replay conflict, unresolved break or locked accounting period."},"413":{"description":"Request exceeds 16 KiB."},"422":{"description":"Financial calculation, source or precision is unsupported."},"423":{"description":"Live allocation or execution remains locked."},"502":{"description":"Upstream source or response is invalid or exceeds the bounded response limit."},"503":{"description":"Storage or account service unavailable. Do not blindly retry mutations."}}},"post":{"operationId":"institutionalCreate_portfolios","security":[{"BrowserSession":[]}],"parameters":[{"name":"org","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"description":"Organization role and object scope are checked server-side. See the institutional API guide for review constraints.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"idempotency_key":{"type":"string","format":"uuid"},"fund_id":{"type":"string","format":"uuid"},"name":{"type":"string","minLength":1,"maxLength":120},"base_currency":{"type":"string","const":"USD"}},"required":["idempotency_key","fund_id","name","base_currency"]}}}},"responses":{"200":{"description":"Authorized records or persisted workflow result. Monetary values are decimal strings; NAV and reports remain provisional."},"400":{"description":"Invalid fields, precision, date boundary or query."},"401":{"description":"Authentication absent, expired or revoked."},"403":{"description":"Insufficient scope/role, wrong Origin, self-approval, or unverified connection."},"404":{"description":"Unknown or unauthorized tenant/resource."},"409":{"description":"Replay conflict, unresolved break or locked accounting period."},"413":{"description":"Request exceeds 16 KiB."},"422":{"description":"Financial calculation, source or precision is unsupported."},"423":{"description":"Live allocation or execution remains locked."},"502":{"description":"Upstream source or response is invalid or exceeds the bounded response limit."},"503":{"description":"Storage or account service unavailable. Do not blindly retry mutations."}}}},"/api/v1/institutional/organizations/{org}/accounts":{"get":{"operationId":"institutionalList_accounts","security":[{"BrowserSession":[]},{"NexusKey":[]}],"parameters":[{"name":"org","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"portfolio_id","in":"query","schema":{"type":"string","format":"uuid"}},{"name":"cursor","in":"query","schema":{"type":"string","format":"uuid"},"description":"Last item UUID; page order is stable ID order, not event chronology."},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}}],"responses":{"200":{"description":"Authorized records or persisted workflow result. Monetary values are decimal strings; NAV and reports remain provisional."},"400":{"description":"Invalid fields, precision, date boundary or query."},"401":{"description":"Authentication absent, expired or revoked."},"403":{"description":"Insufficient scope/role, wrong Origin, self-approval, or unverified connection."},"404":{"description":"Unknown or unauthorized tenant/resource."},"409":{"description":"Replay conflict, unresolved break or locked accounting period."},"413":{"description":"Request exceeds 16 KiB."},"422":{"description":"Financial calculation, source or precision is unsupported."},"423":{"description":"Live allocation or execution remains locked."},"502":{"description":"Upstream source or response is invalid or exceeds the bounded response limit."},"503":{"description":"Storage or account service unavailable. Do not blindly retry mutations."}}},"post":{"operationId":"institutionalCreate_accounts","security":[{"BrowserSession":[]}],"parameters":[{"name":"org","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"description":"Organization role and object scope are checked server-side. See the institutional API guide for review constraints.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"idempotency_key":{"type":"string","format":"uuid"},"portfolio_id":{"type":"string","format":"uuid"},"name":{"type":"string","minLength":1,"maxLength":120},"venue":{"type":"string","minLength":1},"account_type":{"enum":["manual","exchange"]},"connection_id":{"type":"string","format":"uuid","description":"Required for exchange accounts; must be an owned nonrevoked connection with matching venue. Never marks it verified."}},"required":["idempotency_key","portfolio_id","name","venue","account_type"]}}}},"responses":{"200":{"description":"Authorized records or persisted workflow result. Monetary values are decimal strings; NAV and reports remain provisional."},"400":{"description":"Invalid fields, precision, date boundary or query."},"401":{"description":"Authentication absent, expired or revoked."},"403":{"description":"Insufficient scope/role, wrong Origin, self-approval, or unverified connection."},"404":{"description":"Unknown or unauthorized tenant/resource."},"409":{"description":"Replay conflict, unresolved break or locked accounting period."},"413":{"description":"Request exceeds 16 KiB."},"422":{"description":"Financial calculation, source or precision is unsupported."},"423":{"description":"Live allocation or execution remains locked."},"502":{"description":"Upstream source or response is invalid or exceeds the bounded response limit."},"503":{"description":"Storage or account service unavailable. Do not blindly retry mutations."}}}},"/api/v1/institutional/organizations/{org}/members":{"get":{"operationId":"institutionalList_members","security":[{"BrowserSession":[]},{"NexusKey":[]}],"parameters":[{"name":"org","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"portfolio_id","in":"query","schema":{"type":"string","format":"uuid"}},{"name":"cursor","in":"query","schema":{"type":"string","format":"uuid"},"description":"Last item UUID; page order is stable ID order, not event chronology."},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}}],"responses":{"200":{"description":"Authorized records or persisted workflow result. Monetary values are decimal strings; NAV and reports remain provisional."},"400":{"description":"Invalid fields, precision, date boundary or query."},"401":{"description":"Authentication absent, expired or revoked."},"403":{"description":"Insufficient scope/role, wrong Origin, self-approval, or unverified connection."},"404":{"description":"Unknown or unauthorized tenant/resource."},"409":{"description":"Replay conflict, unresolved break or locked accounting period."},"413":{"description":"Request exceeds 16 KiB."},"422":{"description":"Financial calculation, source or precision is unsupported."},"423":{"description":"Live allocation or execution remains locked."},"502":{"description":"Upstream source or response is invalid or exceeds the bounded response limit."},"503":{"description":"Storage or account service unavailable. Do not blindly retry mutations."}}},"post":{"operationId":"institutionalCreate_members","security":[{"BrowserSession":[]}],"parameters":[{"name":"org","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"description":"Organization role and object scope are checked server-side. See the institutional API guide for review constraints.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"idempotency_key":{"type":"string","format":"uuid"},"email":{"type":"string","format":"email"},"role":{"enum":["admin","finance","operations","trader","risk","read_only","auditor","allocator"]},"portfolio_ids":{"type":"array","items":{"type":"string","format":"uuid"},"maxItems":1000},"active":{"type":"boolean","default":true}},"required":["idempotency_key","email","role","portfolio_ids"]}}}},"responses":{"200":{"description":"Authorized records or persisted workflow result. Monetary values are decimal strings; NAV and reports remain provisional."},"400":{"description":"Invalid fields, precision, date boundary or query."},"401":{"description":"Authentication absent, expired or revoked."},"403":{"description":"Insufficient scope/role, wrong Origin, self-approval, or unverified connection."},"404":{"description":"Unknown or unauthorized tenant/resource."},"409":{"description":"Replay conflict, unresolved break or locked accounting period."},"413":{"description":"Request exceeds 16 KiB."},"422":{"description":"Financial calculation, source or precision is unsupported."},"423":{"description":"Live allocation or execution remains locked."},"502":{"description":"Upstream source or response is invalid or exceeds the bounded response limit."},"503":{"description":"Storage or account service unavailable. Do not blindly retry mutations."}}}},"/api/v1/institutional/organizations/{org}/transactions":{"get":{"operationId":"institutionalList_transactions","security":[{"BrowserSession":[]},{"NexusKey":[]}],"parameters":[{"name":"org","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"portfolio_id","in":"query","schema":{"type":"string","format":"uuid"}},{"name":"cursor","in":"query","schema":{"type":"string","format":"uuid"},"description":"Last item UUID; page order is stable ID order, not event chronology."},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}}],"responses":{"200":{"description":"Authorized records or persisted workflow result. Monetary values are decimal strings; NAV and reports remain provisional."},"400":{"description":"Invalid fields, precision, date boundary or query."},"401":{"description":"Authentication absent, expired or revoked."},"403":{"description":"Insufficient scope/role, wrong Origin, self-approval, or unverified connection."},"404":{"description":"Unknown or unauthorized tenant/resource."},"409":{"description":"Replay conflict, unresolved break or locked accounting period."},"413":{"description":"Request exceeds 16 KiB."},"422":{"description":"Financial calculation, source or precision is unsupported."},"423":{"description":"Live allocation or execution remains locked."},"502":{"description":"Upstream source or response is invalid or exceeds the bounded response limit."},"503":{"description":"Storage or account service unavailable. Do not blindly retry mutations."}}}},"/api/v1/institutional/organizations/{org}/ledger":{"get":{"operationId":"institutionalList_ledger","security":[{"BrowserSession":[]},{"NexusKey":[]}],"parameters":[{"name":"org","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"portfolio_id","in":"query","schema":{"type":"string","format":"uuid"}},{"name":"cursor","in":"query","schema":{"type":"string","format":"uuid"},"description":"Last item UUID; page order is stable ID order, not event chronology."},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}}],"responses":{"200":{"description":"Authorized records or persisted workflow result. Monetary values are decimal strings; NAV and reports remain provisional."},"400":{"description":"Invalid fields, precision, date boundary or query."},"401":{"description":"Authentication absent, expired or revoked."},"403":{"description":"Insufficient scope/role, wrong Origin, self-approval, or unverified connection."},"404":{"description":"Unknown or unauthorized tenant/resource."},"409":{"description":"Replay conflict, unresolved break or locked accounting period."},"413":{"description":"Request exceeds 16 KiB."},"422":{"description":"Financial calculation, source or precision is unsupported."},"423":{"description":"Live allocation or execution remains locked."},"502":{"description":"Upstream source or response is invalid or exceeds the bounded response limit."},"503":{"description":"Storage or account service unavailable. Do not blindly retry mutations."}}}},"/api/v1/institutional/organizations/{org}/exceptions":{"get":{"operationId":"institutionalList_exceptions","security":[{"BrowserSession":[]},{"NexusKey":[]}],"parameters":[{"name":"org","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"portfolio_id","in":"query","schema":{"type":"string","format":"uuid"}},{"name":"cursor","in":"query","schema":{"type":"string","format":"uuid"},"description":"Last item UUID; page order is stable ID order, not event chronology."},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}}],"responses":{"200":{"description":"Authorized records or persisted workflow result. Monetary values are decimal strings; NAV and reports remain provisional."},"400":{"description":"Invalid fields, precision, date boundary or query."},"401":{"description":"Authentication absent, expired or revoked."},"403":{"description":"Insufficient scope/role, wrong Origin, self-approval, or unverified connection."},"404":{"description":"Unknown or unauthorized tenant/resource."},"409":{"description":"Replay conflict, unresolved break or locked accounting period."},"413":{"description":"Request exceeds 16 KiB."},"422":{"description":"Financial calculation, source or precision is unsupported."},"423":{"description":"Live allocation or execution remains locked."},"502":{"description":"Upstream source or response is invalid or exceeds the bounded response limit."},"503":{"description":"Storage or account service unavailable. Do not blindly retry mutations."}}}},"/api/v1/institutional/organizations/{org}/resolution_proposals":{"get":{"operationId":"institutionalList_resolution_proposals","security":[{"BrowserSession":[]},{"NexusKey":[]}],"parameters":[{"name":"org","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"portfolio_id","in":"query","schema":{"type":"string","format":"uuid"}},{"name":"cursor","in":"query","schema":{"type":"string","format":"uuid"},"description":"Last item UUID; page order is stable ID order, not event chronology."},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}}],"responses":{"200":{"description":"Authorized records or persisted workflow result. Monetary values are decimal strings; NAV and reports remain provisional."},"400":{"description":"Invalid fields, precision, date boundary or query."},"401":{"description":"Authentication absent, expired or revoked."},"403":{"description":"Insufficient scope/role, wrong Origin, self-approval, or unverified connection."},"404":{"description":"Unknown or unauthorized tenant/resource."},"409":{"description":"Replay conflict, unresolved break or locked accounting period."},"413":{"description":"Request exceeds 16 KiB."},"422":{"description":"Financial calculation, source or precision is unsupported."},"423":{"description":"Live allocation or execution remains locked."},"502":{"description":"Upstream source or response is invalid or exceeds the bounded response limit."},"503":{"description":"Storage or account service unavailable. Do not blindly retry mutations."}}}},"/api/v1/institutional/organizations/{org}/prices":{"get":{"operationId":"institutionalList_prices","security":[{"BrowserSession":[]},{"NexusKey":[]}],"parameters":[{"name":"org","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"portfolio_id","in":"query","schema":{"type":"string","format":"uuid"}},{"name":"cursor","in":"query","schema":{"type":"string","format":"uuid"},"description":"Last item UUID; page order is stable ID order, not event chronology."},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}}],"responses":{"200":{"description":"Authorized records or persisted workflow result. Monetary values are decimal strings; NAV and reports remain provisional."},"400":{"description":"Invalid fields, precision, date boundary or query."},"401":{"description":"Authentication absent, expired or revoked."},"403":{"description":"Insufficient scope/role, wrong Origin, self-approval, or unverified connection."},"404":{"description":"Unknown or unauthorized tenant/resource."},"409":{"description":"Replay conflict, unresolved break or locked accounting period."},"413":{"description":"Request exceeds 16 KiB."},"422":{"description":"Financial calculation, source or precision is unsupported."},"423":{"description":"Live allocation or execution remains locked."},"502":{"description":"Upstream source or response is invalid or exceeds the bounded response limit."},"503":{"description":"Storage or account service unavailable. Do not blindly retry mutations."}}},"post":{"operationId":"institutionalCreate_prices","security":[{"BrowserSession":[]},{"NexusKey":[]}],"parameters":[{"name":"org","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"description":"Organization role and object scope are checked server-side. See the institutional API guide for review constraints.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"idempotency_key":{"type":"string","format":"uuid"},"portfolio_id":{"type":"string","format":"uuid"},"asset":{"type":"string","minLength":1},"quote_currency":{"type":"string","const":"USD"},"price":{"type":"string","pattern":"^-?[0-9]+(?:\\.[0-9]{1,18})?$","description":"Exact decimal text. Unsupported precision and overflow are rejected."},"observed_at":{"type":"string","format":"date-time"},"source":{"type":"string","minLength":1},"reason":{"type":"string","minLength":1}},"required":["idempotency_key","portfolio_id","asset","quote_currency","price","observed_at","source","reason"]}}}},"responses":{"200":{"description":"Authorized records or persisted workflow result. Monetary values are decimal strings; NAV and reports remain provisional."},"400":{"description":"Invalid fields, precision, date boundary or query."},"401":{"description":"Authentication absent, expired or revoked."},"403":{"description":"Insufficient scope/role, wrong Origin, self-approval, or unverified connection."},"404":{"description":"Unknown or unauthorized tenant/resource."},"409":{"description":"Replay conflict, unresolved break or locked accounting period."},"413":{"description":"Request exceeds 16 KiB."},"422":{"description":"Financial calculation, source or precision is unsupported."},"423":{"description":"Live allocation or execution remains locked."},"502":{"description":"Upstream source or response is invalid or exceeds the bounded response limit."},"503":{"description":"Storage or account service unavailable. Do not blindly retry mutations."}}}},"/api/v1/institutional/organizations/{org}/valuation_policies":{"get":{"operationId":"institutionalList_valuation_policies","security":[{"BrowserSession":[]},{"NexusKey":[]}],"parameters":[{"name":"org","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"portfolio_id","in":"query","schema":{"type":"string","format":"uuid"}},{"name":"cursor","in":"query","schema":{"type":"string","format":"uuid"},"description":"Last item UUID; page order is stable ID order, not event chronology."},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}}],"responses":{"200":{"description":"Authorized records or persisted workflow result. Monetary values are decimal strings; NAV and reports remain provisional."},"400":{"description":"Invalid fields, precision, date boundary or query."},"401":{"description":"Authentication absent, expired or revoked."},"403":{"description":"Insufficient scope/role, wrong Origin, self-approval, or unverified connection."},"404":{"description":"Unknown or unauthorized tenant/resource."},"409":{"description":"Replay conflict, unresolved break or locked accounting period."},"413":{"description":"Request exceeds 16 KiB."},"422":{"description":"Financial calculation, source or precision is unsupported."},"423":{"description":"Live allocation or execution remains locked."},"502":{"description":"Upstream source or response is invalid or exceeds the bounded response limit."},"503":{"description":"Storage or account service unavailable. Do not blindly retry mutations."}}},"post":{"operationId":"institutionalCreate_valuation_policies","security":[{"BrowserSession":[]},{"NexusKey":[]}],"parameters":[{"name":"org","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"description":"Organization role and object scope are checked server-side. See the institutional API guide for review constraints.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"idempotency_key":{"type":"string","format":"uuid"},"portfolio_id":{"type":"string","format":"uuid"},"name":{"type":"string","minLength":1,"maxLength":120},"source_priority":{"type":"array","items":{"type":"string","minLength":1},"minItems":1,"maxItems":8,"uniqueItems":true},"reference_source":{"type":"string","minLength":1},"max_age_seconds":{"type":"integer","minimum":1,"maximum":86400},"max_deviation":{"type":"string","pattern":"^-?[0-9]+(?:\\.[0-9]{1,18})?$","description":"Exact fraction between zero and one."}},"required":["idempotency_key","portfolio_id","name","source_priority","reference_source","max_age_seconds","max_deviation"]}}}},"responses":{"200":{"description":"Authorized records or persisted workflow result. Monetary values are decimal strings; NAV and reports remain provisional."},"400":{"description":"Invalid fields, precision, date boundary or query."},"401":{"description":"Authentication absent, expired or revoked."},"403":{"description":"Insufficient scope/role, wrong Origin, self-approval, or unverified connection."},"404":{"description":"Unknown or unauthorized tenant/resource."},"409":{"description":"Replay conflict, unresolved break or locked accounting period."},"413":{"description":"Request exceeds 16 KiB."},"422":{"description":"Financial calculation, source or precision is unsupported."},"423":{"description":"Live allocation or execution remains locked."},"502":{"description":"Upstream source or response is invalid or exceeds the bounded response limit."},"503":{"description":"Storage or account service unavailable. Do not blindly retry mutations."}}}},"/api/v1/institutional/organizations/{org}/valuations":{"get":{"operationId":"institutionalList_valuations","security":[{"BrowserSession":[]},{"NexusKey":[]}],"parameters":[{"name":"org","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"portfolio_id","in":"query","schema":{"type":"string","format":"uuid"}},{"name":"cursor","in":"query","schema":{"type":"string","format":"uuid"},"description":"Last item UUID; page order is stable ID order, not event chronology."},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}}],"responses":{"200":{"description":"Authorized records or persisted workflow result. Monetary values are decimal strings; NAV and reports remain provisional."},"400":{"description":"Invalid fields, precision, date boundary or query."},"401":{"description":"Authentication absent, expired or revoked."},"403":{"description":"Insufficient scope/role, wrong Origin, self-approval, or unverified connection."},"404":{"description":"Unknown or unauthorized tenant/resource."},"409":{"description":"Replay conflict, unresolved break or locked accounting period."},"413":{"description":"Request exceeds 16 KiB."},"422":{"description":"Financial calculation, source or precision is unsupported."},"423":{"description":"Live allocation or execution remains locked."},"502":{"description":"Upstream source or response is invalid or exceeds the bounded response limit."},"503":{"description":"Storage or account service unavailable. Do not blindly retry mutations."}}}},"/api/v1/institutional/organizations/{org}/periods":{"get":{"operationId":"institutionalList_periods","security":[{"BrowserSession":[]},{"NexusKey":[]}],"parameters":[{"name":"org","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"portfolio_id","in":"query","schema":{"type":"string","format":"uuid"}},{"name":"cursor","in":"query","schema":{"type":"string","format":"uuid"},"description":"Last item UUID; page order is stable ID order, not event chronology."},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}}],"responses":{"200":{"description":"Authorized records or persisted workflow result. Monetary values are decimal strings; NAV and reports remain provisional."},"400":{"description":"Invalid fields, precision, date boundary or query."},"401":{"description":"Authentication absent, expired or revoked."},"403":{"description":"Insufficient scope/role, wrong Origin, self-approval, or unverified connection."},"404":{"description":"Unknown or unauthorized tenant/resource."},"409":{"description":"Replay conflict, unresolved break or locked accounting period."},"413":{"description":"Request exceeds 16 KiB."},"422":{"description":"Financial calculation, source or precision is unsupported."},"423":{"description":"Live allocation or execution remains locked."},"502":{"description":"Upstream source or response is invalid or exceeds the bounded response limit."},"503":{"description":"Storage or account service unavailable. Do not blindly retry mutations."}}},"post":{"operationId":"institutionalCreate_periods","security":[{"BrowserSession":[]},{"NexusKey":[]}],"parameters":[{"name":"org","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"description":"Organization role and object scope are checked server-side. See the institutional API guide for review constraints.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"idempotency_key":{"type":"string","format":"uuid"},"portfolio_id":{"type":"string","format":"uuid"},"starts_at":{"type":"string","format":"date-time"},"ends_at":{"type":"string","format":"date-time"}},"required":["idempotency_key","portfolio_id","starts_at","ends_at"]}}}},"responses":{"200":{"description":"Authorized records or persisted workflow result. Monetary values are decimal strings; NAV and reports remain provisional."},"400":{"description":"Invalid fields, precision, date boundary or query."},"401":{"description":"Authentication absent, expired or revoked."},"403":{"description":"Insufficient scope/role, wrong Origin, self-approval, or unverified connection."},"404":{"description":"Unknown or unauthorized tenant/resource."},"409":{"description":"Replay conflict, unresolved break or locked accounting period."},"413":{"description":"Request exceeds 16 KiB."},"422":{"description":"Financial calculation, source or precision is unsupported."},"423":{"description":"Live allocation or execution remains locked."},"502":{"description":"Upstream source or response is invalid or exceeds the bounded response limit."},"503":{"description":"Storage or account service unavailable. Do not blindly retry mutations."}}}},"/api/v1/institutional/organizations/{org}/reports":{"get":{"operationId":"institutionalList_reports","security":[{"BrowserSession":[]},{"NexusKey":[]}],"parameters":[{"name":"org","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"portfolio_id","in":"query","schema":{"type":"string","format":"uuid"}},{"name":"cursor","in":"query","schema":{"type":"string","format":"uuid"},"description":"Last item UUID; page order is stable ID order, not event chronology."},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}}],"responses":{"200":{"description":"Authorized records or persisted workflow result. Monetary values are decimal strings; NAV and reports remain provisional."},"400":{"description":"Invalid fields, precision, date boundary or query."},"401":{"description":"Authentication absent, expired or revoked."},"403":{"description":"Insufficient scope/role, wrong Origin, self-approval, or unverified connection."},"404":{"description":"Unknown or unauthorized tenant/resource."},"409":{"description":"Replay conflict, unresolved break or locked accounting period."},"413":{"description":"Request exceeds 16 KiB."},"422":{"description":"Financial calculation, source or precision is unsupported."},"423":{"description":"Live allocation or execution remains locked."},"502":{"description":"Upstream source or response is invalid or exceeds the bounded response limit."},"503":{"description":"Storage or account service unavailable. Do not blindly retry mutations."}}}},"/api/v1/institutional/organizations/{org}/evidence":{"get":{"operationId":"institutionalList_evidence","security":[{"BrowserSession":[]},{"NexusKey":[]}],"parameters":[{"name":"org","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"portfolio_id","in":"query","schema":{"type":"string","format":"uuid"}},{"name":"cursor","in":"query","schema":{"type":"string","format":"uuid"},"description":"Last item UUID; page order is stable ID order, not event chronology."},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}}],"responses":{"200":{"description":"Authorized records or persisted workflow result. Monetary values are decimal strings; NAV and reports remain provisional."},"400":{"description":"Invalid fields, precision, date boundary or query."},"401":{"description":"Authentication absent, expired or revoked."},"403":{"description":"Insufficient scope/role, wrong Origin, self-approval, or unverified connection."},"404":{"description":"Unknown or unauthorized tenant/resource."},"409":{"description":"Replay conflict, unresolved break or locked accounting period."},"413":{"description":"Request exceeds 16 KiB."},"422":{"description":"Financial calculation, source or precision is unsupported."},"423":{"description":"Live allocation or execution remains locked."},"502":{"description":"Upstream source or response is invalid or exceeds the bounded response limit."},"503":{"description":"Storage or account service unavailable. Do not blindly retry mutations."}}},"post":{"operationId":"institutionalCreate_evidence","security":[{"BrowserSession":[]},{"NexusKey":[]}],"parameters":[{"name":"org","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"description":"Organization role and object scope are checked server-side. See the institutional API guide for review constraints.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"idempotency_key":{"type":"string","format":"uuid"},"portfolio_id":{"type":"string","format":"uuid"},"strategy_name":{"type":"string","minLength":1,"maxLength":120},"methodology":{"type":"string","minLength":1},"source_reference":{"type":"string","minLength":1}},"required":["idempotency_key","portfolio_id","strategy_name","methodology","source_reference"]}}}},"responses":{"200":{"description":"Authorized records or persisted workflow result. Monetary values are decimal strings; NAV and reports remain provisional."},"400":{"description":"Invalid fields, precision, date boundary or query."},"401":{"description":"Authentication absent, expired or revoked."},"403":{"description":"Insufficient scope/role, wrong Origin, self-approval, or unverified connection."},"404":{"description":"Unknown or unauthorized tenant/resource."},"409":{"description":"Replay conflict, unresolved break or locked accounting period."},"413":{"description":"Request exceeds 16 KiB."},"422":{"description":"Financial calculation, source or precision is unsupported."},"423":{"description":"Live allocation or execution remains locked."},"502":{"description":"Upstream source or response is invalid or exceeds the bounded response limit."},"503":{"description":"Storage or account service unavailable. Do not blindly retry mutations."}}}},"/api/v1/institutional/organizations/{org}/allocations":{"get":{"operationId":"institutionalList_allocations","security":[{"BrowserSession":[]},{"NexusKey":[]}],"parameters":[{"name":"org","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"portfolio_id","in":"query","schema":{"type":"string","format":"uuid"}},{"name":"cursor","in":"query","schema":{"type":"string","format":"uuid"},"description":"Last item UUID; page order is stable ID order, not event chronology."},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}}],"responses":{"200":{"description":"Authorized records or persisted workflow result. Monetary values are decimal strings; NAV and reports remain provisional."},"400":{"description":"Invalid fields, precision, date boundary or query."},"401":{"description":"Authentication absent, expired or revoked."},"403":{"description":"Insufficient scope/role, wrong Origin, self-approval, or unverified connection."},"404":{"description":"Unknown or unauthorized tenant/resource."},"409":{"description":"Replay conflict, unresolved break or locked accounting period."},"413":{"description":"Request exceeds 16 KiB."},"422":{"description":"Financial calculation, source or precision is unsupported."},"423":{"description":"Live allocation or execution remains locked."},"502":{"description":"Upstream source or response is invalid or exceeds the bounded response limit."},"503":{"description":"Storage or account service unavailable. Do not blindly retry mutations."}}}},"/api/v1/institutional/organizations/{org}/risk_limits":{"get":{"operationId":"institutionalList_risk_limits","security":[{"BrowserSession":[]},{"NexusKey":[]}],"parameters":[{"name":"org","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"portfolio_id","in":"query","schema":{"type":"string","format":"uuid"}},{"name":"cursor","in":"query","schema":{"type":"string","format":"uuid"},"description":"Last item UUID; page order is stable ID order, not event chronology."},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}}],"responses":{"200":{"description":"Authorized records or persisted workflow result. Monetary values are decimal strings; NAV and reports remain provisional."},"400":{"description":"Invalid fields, precision, date boundary or query."},"401":{"description":"Authentication absent, expired or revoked."},"403":{"description":"Insufficient scope/role, wrong Origin, self-approval, or unverified connection."},"404":{"description":"Unknown or unauthorized tenant/resource."},"409":{"description":"Replay conflict, unresolved break or locked accounting period."},"413":{"description":"Request exceeds 16 KiB."},"422":{"description":"Financial calculation, source or precision is unsupported."},"423":{"description":"Live allocation or execution remains locked."},"502":{"description":"Upstream source or response is invalid or exceeds the bounded response limit."},"503":{"description":"Storage or account service unavailable. Do not blindly retry mutations."}}},"post":{"operationId":"institutionalCreate_risk_limits","security":[{"BrowserSession":[]},{"NexusKey":[]}],"parameters":[{"name":"org","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"description":"Organization role and object scope are checked server-side. See the institutional API guide for review constraints.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"idempotency_key":{"type":"string","format":"uuid"},"portfolio_id":{"type":"string","format":"uuid"},"metric":{"enum":["gross_exposure","net_exposure","leverage","concentration"]},"threshold":{"type":"string","pattern":"^-?[0-9]+(?:\\.[0-9]{1,18})?$","description":"Exact decimal text. Unsupported precision and overflow are rejected."}},"required":["idempotency_key","portfolio_id","metric","threshold"]}}}},"responses":{"200":{"description":"Authorized records or persisted workflow result. Monetary values are decimal strings; NAV and reports remain provisional."},"400":{"description":"Invalid fields, precision, date boundary or query."},"401":{"description":"Authentication absent, expired or revoked."},"403":{"description":"Insufficient scope/role, wrong Origin, self-approval, or unverified connection."},"404":{"description":"Unknown or unauthorized tenant/resource."},"409":{"description":"Replay conflict, unresolved break or locked accounting period."},"413":{"description":"Request exceeds 16 KiB."},"422":{"description":"Financial calculation, source or precision is unsupported."},"423":{"description":"Live allocation or execution remains locked."},"502":{"description":"Upstream source or response is invalid or exceeds the bounded response limit."},"503":{"description":"Storage or account service unavailable. Do not blindly retry mutations."}}}},"/api/v1/institutional/organizations/{org}/risk_events":{"get":{"operationId":"institutionalList_risk_events","security":[{"BrowserSession":[]},{"NexusKey":[]}],"parameters":[{"name":"org","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"portfolio_id","in":"query","schema":{"type":"string","format":"uuid"}},{"name":"cursor","in":"query","schema":{"type":"string","format":"uuid"},"description":"Last item UUID; page order is stable ID order, not event chronology."},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}}],"responses":{"200":{"description":"Authorized records or persisted workflow result. Monetary values are decimal strings; NAV and reports remain provisional."},"400":{"description":"Invalid fields, precision, date boundary or query."},"401":{"description":"Authentication absent, expired or revoked."},"403":{"description":"Insufficient scope/role, wrong Origin, self-approval, or unverified connection."},"404":{"description":"Unknown or unauthorized tenant/resource."},"409":{"description":"Replay conflict, unresolved break or locked accounting period."},"413":{"description":"Request exceeds 16 KiB."},"422":{"description":"Financial calculation, source or precision is unsupported."},"423":{"description":"Live allocation or execution remains locked."},"502":{"description":"Upstream source or response is invalid or exceeds the bounded response limit."},"503":{"description":"Storage or account service unavailable. Do not blindly retry mutations."}}}},"/api/v1/institutional/organizations/{org}/source_events":{"get":{"operationId":"institutionalList_source_events","security":[{"BrowserSession":[]},{"NexusKey":[]}],"parameters":[{"name":"org","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"portfolio_id","in":"query","schema":{"type":"string","format":"uuid"}},{"name":"cursor","in":"query","schema":{"type":"string","format":"uuid"},"description":"Last item UUID; page order is stable ID order, not event chronology."},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}}],"responses":{"200":{"description":"Authorized records or persisted workflow result. Monetary values are decimal strings; NAV and reports remain provisional."},"400":{"description":"Invalid fields, precision, date boundary or query."},"401":{"description":"Authentication absent, expired or revoked."},"403":{"description":"Insufficient scope/role, wrong Origin, self-approval, or unverified connection."},"404":{"description":"Unknown or unauthorized tenant/resource."},"409":{"description":"Replay conflict, unresolved break or locked accounting period."},"413":{"description":"Request exceeds 16 KiB."},"422":{"description":"Financial calculation, source or precision is unsupported."},"423":{"description":"Live allocation or execution remains locked."},"502":{"description":"Upstream source or response is invalid or exceeds the bounded response limit."},"503":{"description":"Storage or account service unavailable. Do not blindly retry mutations."}}}},"/api/v1/institutional/organizations/{org}/snapshot_lines":{"get":{"operationId":"institutionalList_snapshot_lines","security":[{"BrowserSession":[]},{"NexusKey":[]}],"parameters":[{"name":"org","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"portfolio_id","in":"query","schema":{"type":"string","format":"uuid"}},{"name":"cursor","in":"query","schema":{"type":"string","format":"uuid"},"description":"Last item UUID; page order is stable ID order, not event chronology."},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}}],"responses":{"200":{"description":"Authorized records or persisted workflow result. Monetary values are decimal strings; NAV and reports remain provisional."},"400":{"description":"Invalid fields, precision, date boundary or query."},"401":{"description":"Authentication absent, expired or revoked."},"403":{"description":"Insufficient scope/role, wrong Origin, self-approval, or unverified connection."},"404":{"description":"Unknown or unauthorized tenant/resource."},"409":{"description":"Replay conflict, unresolved break or locked accounting period."},"413":{"description":"Request exceeds 16 KiB."},"422":{"description":"Financial calculation, source or precision is unsupported."},"423":{"description":"Live allocation or execution remains locked."},"502":{"description":"Upstream source or response is invalid or exceeds the bounded response limit."},"503":{"description":"Storage or account service unavailable. Do not blindly retry mutations."}}}},"/api/v1/institutional/organizations/{org}/journal":{"get":{"operationId":"institutionalList_journal","security":[{"BrowserSession":[]},{"NexusKey":[]}],"parameters":[{"name":"org","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"portfolio_id","in":"query","schema":{"type":"string","format":"uuid"}},{"name":"cursor","in":"query","schema":{"type":"string","format":"uuid"},"description":"Last item UUID; page order is stable ID order, not event chronology."},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}}],"responses":{"200":{"description":"Authorized records or persisted workflow result. Monetary values are decimal strings; NAV and reports remain provisional."},"400":{"description":"Invalid fields, precision, date boundary or query."},"401":{"description":"Authentication absent, expired or revoked."},"403":{"description":"Insufficient scope/role, wrong Origin, self-approval, or unverified connection."},"404":{"description":"Unknown or unauthorized tenant/resource."},"409":{"description":"Replay conflict, unresolved break or locked accounting period."},"413":{"description":"Request exceeds 16 KiB."},"422":{"description":"Financial calculation, source or precision is unsupported."},"423":{"description":"Live allocation or execution remains locked."},"502":{"description":"Upstream source or response is invalid or exceeds the bounded response limit."},"503":{"description":"Storage or account service unavailable. Do not blindly retry mutations."}}}},"/api/v1/institutional/organizations/{org}/capital_events":{"get":{"operationId":"institutionalList_capital_events","security":[{"BrowserSession":[]},{"NexusKey":[]}],"parameters":[{"name":"org","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"portfolio_id","in":"query","schema":{"type":"string","format":"uuid"}},{"name":"cursor","in":"query","schema":{"type":"string","format":"uuid"},"description":"Last item UUID; page order is stable ID order, not event chronology."},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}}],"responses":{"200":{"description":"Authorized records or persisted workflow result. Monetary values are decimal strings; NAV and reports remain provisional."},"400":{"description":"Invalid fields, precision, date boundary or query."},"401":{"description":"Authentication absent, expired or revoked."},"403":{"description":"Insufficient scope/role, wrong Origin, self-approval, or unverified connection."},"404":{"description":"Unknown or unauthorized tenant/resource."},"409":{"description":"Replay conflict, unresolved break or locked accounting period."},"413":{"description":"Request exceeds 16 KiB."},"422":{"description":"Financial calculation, source or precision is unsupported."},"423":{"description":"Live allocation or execution remains locked."},"502":{"description":"Upstream source or response is invalid or exceeds the bounded response limit."},"503":{"description":"Storage or account service unavailable. Do not blindly retry mutations."}}}},"/api/v1/institutional/organizations/{org}/audit":{"get":{"operationId":"institutionalList_audit","security":[{"BrowserSession":[]},{"NexusKey":[]}],"parameters":[{"name":"org","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"portfolio_id","in":"query","schema":{"type":"string","format":"uuid"}},{"name":"cursor","in":"query","schema":{"type":"string","format":"uuid"},"description":"Last item UUID; page order is stable ID order, not event chronology."},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}}],"responses":{"200":{"description":"Authorized records or persisted workflow result. Monetary values are decimal strings; NAV and reports remain provisional."},"400":{"description":"Invalid fields, precision, date boundary or query."},"401":{"description":"Authentication absent, expired or revoked."},"403":{"description":"Insufficient scope/role, wrong Origin, self-approval, or unverified connection."},"404":{"description":"Unknown or unauthorized tenant/resource."},"409":{"description":"Replay conflict, unresolved break or locked accounting period."},"413":{"description":"Request exceeds 16 KiB."},"422":{"description":"Financial calculation, source or precision is unsupported."},"423":{"description":"Live allocation or execution remains locked."},"502":{"description":"Upstream source or response is invalid or exceeds the bounded response limit."},"503":{"description":"Storage or account service unavailable. Do not blindly retry mutations."}}}},"/api/v1/institutional/organizations/{org}/sync_runs":{"get":{"operationId":"institutionalList_sync_runs","security":[{"BrowserSession":[]},{"NexusKey":[]}],"parameters":[{"name":"org","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"portfolio_id","in":"query","schema":{"type":"string","format":"uuid"}},{"name":"cursor","in":"query","schema":{"type":"string","format":"uuid"},"description":"Last item UUID; page order is stable ID order, not event chronology."},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}}],"responses":{"200":{"description":"Authorized records or persisted workflow result. Monetary values are decimal strings; NAV and reports remain provisional."},"400":{"description":"Invalid fields, precision, date boundary or query."},"401":{"description":"Authentication absent, expired or revoked."},"403":{"description":"Insufficient scope/role, wrong Origin, self-approval, or unverified connection."},"404":{"description":"Unknown or unauthorized tenant/resource."},"409":{"description":"Replay conflict, unresolved break or locked accounting period."},"413":{"description":"Request exceeds 16 KiB."},"422":{"description":"Financial calculation, source or precision is unsupported."},"423":{"description":"Live allocation or execution remains locked."},"502":{"description":"Upstream source or response is invalid or exceeds the bounded response limit."},"503":{"description":"Storage or account service unavailable. Do not blindly retry mutations."}}}},"/api/v1/institutional/organizations/{org}/ingestion_rejections":{"get":{"operationId":"institutionalList_ingestion_rejections","security":[{"BrowserSession":[]},{"NexusKey":[]}],"parameters":[{"name":"org","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"portfolio_id","in":"query","schema":{"type":"string","format":"uuid"}},{"name":"cursor","in":"query","schema":{"type":"string","format":"uuid"},"description":"Last item UUID; page order is stable ID order, not event chronology."},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}}],"responses":{"200":{"description":"Authorized records or persisted workflow result. Monetary values are decimal strings; NAV and reports remain provisional."},"400":{"description":"Invalid fields, precision, date boundary or query."},"401":{"description":"Authentication absent, expired or revoked."},"403":{"description":"Insufficient scope/role, wrong Origin, self-approval, or unverified connection."},"404":{"description":"Unknown or unauthorized tenant/resource."},"409":{"description":"Replay conflict, unresolved break or locked accounting period."},"413":{"description":"Request exceeds 16 KiB."},"422":{"description":"Financial calculation, source or precision is unsupported."},"423":{"description":"Live allocation or execution remains locked."},"502":{"description":"Upstream source or response is invalid or exceeds the bounded response limit."},"503":{"description":"Storage or account service unavailable. Do not blindly retry mutations."}}}},"/api/v1/institutional/organizations/{org}/actions":{"post":{"operationId":"institutionalWorkflow","parameters":[{"name":"org","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"security":[{"BrowserSession":[]},{"NexusKey":[]}],"description":"Approval, transaction-rejection and period-close actions require a browser session. An API key never substitutes for a distinct human reviewer. Rejected proposals retain their source and reason, post no ledger entries and cannot later be approved. The server checks roles and scope on every action. Mutations are idempotent by key and payload; a changed payload with a reused key returns 409.","requestBody":{"required":true,"content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"idempotency_key":{"type":"string","format":"uuid"},"type":{"const":"propose_transaction"},"account_id":{"type":"string","format":"uuid"},"external_id":{"type":"string","format":"uuid"},"kind":{"type":"string"},"asset":{"type":"string"},"quantity":{"type":"string","pattern":"^-?[0-9]+(?:\\.[0-9]{1,18})?$","description":"Exact decimal text. Unsupported precision and overflow are rejected."},"fee":{"type":"string","pattern":"^-?[0-9]+(?:\\.[0-9]{1,18})?$","description":"Exact decimal text. Unsupported precision and overflow are rejected."},"fee_asset":{"type":"string"},"occurred_at":{"type":"string","format":"date-time"},"reason":{"type":"string"},"unit_price":{"type":"string","pattern":"^-?[0-9]+(?:\\.[0-9]{1,18})?$","description":"Required for a trade; a USD asset must have unit price one."},"quote_asset":{"type":"string","const":"USD"}},"required":["idempotency_key","type","account_id","external_id","kind","asset","quantity","fee","fee_asset","occurred_at","reason"]},{"type":"object","properties":{"idempotency_key":{"type":"string","format":"uuid"},"type":{"const":"approve_transaction"},"proposal_id":{"type":"string","format":"uuid"}},"required":["idempotency_key","type","proposal_id"]},{"type":"object","properties":{"idempotency_key":{"type":"string","format":"uuid"},"type":{"const":"reject_transaction"},"proposal_id":{"type":"string","format":"uuid"},"reason":{"type":"string"}},"required":["idempotency_key","type","proposal_id","reason"]},{"type":"object","properties":{"idempotency_key":{"type":"string","format":"uuid"},"type":{"const":"reconcile"},"account_id":{"type":"string","format":"uuid"},"asset":{"type":"string"},"observed_quantity":{"type":"string","pattern":"^-?[0-9]+(?:\\.[0-9]{1,18})?$","description":"Exact decimal text. Unsupported precision and overflow are rejected."},"observed_at":{"type":"string","format":"date-time"},"reason":{"type":"string"}},"required":["idempotency_key","type","account_id","asset","observed_quantity","observed_at","reason"]},{"type":"object","properties":{"idempotency_key":{"type":"string","format":"uuid"},"type":{"const":"propose_resolution"},"exception_id":{"type":"string","format":"uuid"},"reason":{"type":"string"}},"required":["idempotency_key","type","exception_id","reason"]},{"type":"object","properties":{"idempotency_key":{"type":"string","format":"uuid"},"type":{"const":"approve_resolution"},"proposal_id":{"type":"string","format":"uuid"}},"required":["idempotency_key","type","proposal_id"]},{"type":"object","properties":{"idempotency_key":{"type":"string","format":"uuid"},"type":{"const":"value_portfolio"},"portfolio_id":{"type":"string","format":"uuid"}},"required":["idempotency_key","type","portfolio_id"]},{"type":"object","properties":{"idempotency_key":{"type":"string","format":"uuid"},"type":{"const":"approve_policy"},"policy_id":{"type":"string","format":"uuid"},"reason":{"type":"string"}},"required":["idempotency_key","type","policy_id","reason"]},{"type":"object","properties":{"idempotency_key":{"type":"string","format":"uuid"},"type":{"const":"stress_test"},"portfolio_id":{"type":"string","format":"uuid"},"shock_fraction":{"type":"string","pattern":"^-?[0-9]+(?:\\.[0-9]{1,18})?$","description":"Exact decimal text. Unsupported precision and overflow are rejected."}},"required":["idempotency_key","type","portfolio_id","shock_fraction"]},{"type":"object","properties":{"idempotency_key":{"type":"string","format":"uuid"},"type":{"const":"close_period"},"period_id":{"type":"string","format":"uuid"}},"required":["idempotency_key","type","period_id"]},{"type":"object","properties":{"idempotency_key":{"type":"string","format":"uuid"},"type":{"const":"generate_report"},"portfolio_id":{"type":"string","format":"uuid"},"report_type":{"type":"string"},"format":{"type":"string"}},"required":["idempotency_key","type","portfolio_id","report_type","format"]},{"type":"object","properties":{"idempotency_key":{"type":"string","format":"uuid"},"type":{"const":"approve_evidence"},"evidence_id":{"type":"string","format":"uuid"},"reason":{"type":"string"}},"required":["idempotency_key","type","evidence_id","reason"]},{"type":"object","properties":{"idempotency_key":{"type":"string","format":"uuid"},"type":{"const":"allocate"},"portfolio_id":{"type":"string","format":"uuid"},"evidence_id":{"type":"string","format":"uuid"},"amount":{"type":"string","pattern":"^-?[0-9]+(?:\\.[0-9]{1,18})?$","description":"Exact decimal text. Unsupported precision and overflow are rejected."},"mode":{"const":"paper","default":"paper"}},"required":["idempotency_key","type","portfolio_id","evidence_id","amount"]}]}}}},"responses":{"200":{"description":"Authorized records or persisted workflow result. Monetary values are decimal strings; NAV and reports remain provisional."},"400":{"description":"Invalid fields, precision, date boundary or query."},"401":{"description":"Authentication absent, expired or revoked."},"403":{"description":"Insufficient scope/role, wrong Origin, self-approval, or unverified connection."},"404":{"description":"Unknown or unauthorized tenant/resource."},"409":{"description":"Replay conflict, unresolved break or locked accounting period."},"413":{"description":"Request exceeds 16 KiB."},"422":{"description":"Financial calculation, source or precision is unsupported."},"423":{"description":"Live allocation or execution remains locked."},"502":{"description":"Upstream source or response is invalid or exceeds the bounded response limit."},"503":{"description":"Storage or account service unavailable. Do not blindly retry mutations."}}}},"/api/v1/institutional/organizations/{org}/sync":{"post":{"operationId":"institutionalSyncAccount","security":[{"BrowserSession":[]},{"NexusKey":[]}],"parameters":[{"name":"org","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"description":"Bounded spot read through the existing private gateway. Requires institutional:write and accounts:read for a key, plus an owned verified connection and organization operations permission. One page never certifies full history. Unsupported records are quarantined; source evidence is adapter-normalized, not original venue payloads. No money-moving call is made.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"idempotency_key":{"type":"string","format":"uuid"},"account_id":{"type":"string","format":"uuid"},"operation":{"type":"string","enum":["balances","ledger"]},"since_ms":{"type":"integer","minimum":0},"currency":{"type":"string","pattern":"^[A-Z0-9]{1,16}$"},"allow_emulated":{"type":"boolean","default":false}},"required":["idempotency_key","account_id","operation"]}}}},"responses":{"200":{"description":"Authorized records or persisted workflow result. Monetary values are decimal strings; NAV and reports remain provisional."},"400":{"description":"Invalid fields, precision, date boundary or query."},"401":{"description":"Authentication absent, expired or revoked."},"403":{"description":"Insufficient scope/role, wrong Origin, self-approval, or unverified connection."},"404":{"description":"Unknown or unauthorized tenant/resource."},"409":{"description":"Replay conflict, unresolved break or locked accounting period."},"413":{"description":"Request exceeds 16 KiB."},"422":{"description":"Financial calculation, source or precision is unsupported."},"423":{"description":"Live allocation or execution remains locked."},"502":{"description":"Upstream source or response is invalid or exceeds the bounded response limit."},"503":{"description":"Storage or account service unavailable. Do not blindly retry mutations."}}}},"/api/v1/institutional/organizations/{org}/reports/{report}/download":{"get":{"operationId":"institutionalDownloadReport","security":[{"BrowserSession":[]},{"NexusKey":[]}],"parameters":[{"name":"org","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"report","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Retained provisional CSV or JSON snapshot. Download is audited and permission is rechecked."},"400":{"description":"Invalid fields, precision, date boundary or query."},"401":{"description":"Authentication absent, expired or revoked."},"403":{"description":"Insufficient scope/role, wrong Origin, self-approval, or unverified connection."},"404":{"description":"Unknown or unauthorized tenant/resource."},"409":{"description":"Replay conflict, unresolved break or locked accounting period."},"413":{"description":"Request exceeds 16 KiB."},"422":{"description":"Financial calculation, source or precision is unsupported."},"423":{"description":"Live allocation or execution remains locked."},"502":{"description":"Upstream source or response is invalid or exceeds the bounded response limit."},"503":{"description":"Storage or account service unavailable. Do not blindly retry mutations."}}}},"/api/account/products":{"get":{"operationId":"getAccountProducts","tags":["Ordien account"],"summary":"List workspace activations for the signed-in Ordien account","security":[{"BrowserSession":[]}],"responses":{"200":{"description":"Current account workspace choices. Activation never grants organization membership, API scopes, exchange verification, or live execution.","headers":{"Cache-Control":{"schema":{"type":"string","const":"no-store"}}},"content":{"application/json":{"schema":{"type":"object","required":["products","live_execution"],"properties":{"products":{"type":"array","minItems":3,"maxItems":3,"items":{"type":"object","required":["id","status","activated_at"],"properties":{"id":{"type":"string","enum":["vault","trade","institutional"]},"status":{"type":"string","enum":["active","inactive"]},"activated_at":{"type":["string","null"],"format":"date-time"}}}},"live_execution":{"type":"boolean","const":false}}}}}},"401":{"description":"Ordien session is missing, expired, disabled or revoked."},"403":{"description":"Bearer credentials are not accepted, or mutation Origin is not trusted."},"503":{"description":"Account storage or service is unavailable. Existing activation choices are preserved."}}},"post":{"operationId":"activateAccountProduct","tags":["Ordien account"],"summary":"Activate an available workspace for the signed-in Ordien account","description":"Immediate, persisted opt-in using the same Ordien browser session. Repeated activation is idempotent and preserves the original activation timestamp. The server determines the account from its session; callers cannot supply a user ID. Requires the exact trusted Origin and application/json. Existing permissions and execution locks remain in force.","security":[{"BrowserSession":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["product"],"properties":{"product":{"type":"string","enum":["vault","trade","institutional"]}}}}}},"responses":{"200":{"description":"Current account workspace choices. Activation never grants organization membership, API scopes, exchange verification, or live execution.","headers":{"Cache-Control":{"schema":{"type":"string","const":"no-store"}}},"content":{"application/json":{"schema":{"type":"object","required":["products","live_execution"],"properties":{"products":{"type":"array","minItems":3,"maxItems":3,"items":{"type":"object","required":["id","status","activated_at"],"properties":{"id":{"type":"string","enum":["vault","trade","institutional"]},"status":{"type":"string","enum":["active","inactive"]},"activated_at":{"type":["string","null"],"format":"date-time"}}}},"live_execution":{"type":"boolean","const":false}}}}}},"400":{"description":"Malformed JSON request."},"401":{"description":"Ordien session is missing, expired, disabled or revoked."},"403":{"description":"Bearer credentials are not accepted, or mutation Origin is not trusted."},"413":{"description":"Request exceeds the service body limit."},"415":{"description":"application/json is required."},"422":{"description":"Unknown product or unexpected request field."},"503":{"description":"Account storage or service is unavailable. Existing activation choices are preserved."}}}},"/api/v1/public/multiplex":{"get":{"operationId":"streamPublicMarketDelivery","tags":["Public delivery"],"security":[],"summary":"Share native public ticker, book and trade subscriptions on one SSE connection","description":"A separate transport contract, not an exchange operation. Only registered public spot/perpetual streams are allowed; no connection IDs, credentials, emulation or mutations. At most 15 unique normalized feed keys, including at most 13 tickers (selected ticker plus 12 visible picker rows). Production same-origin routing sends this path directly to Rust; the local Next.js fallback relays bytes without expanding subscriptions. Execution remains locked.","x-nexus-kind":"public-delivery","x-nexus-availability":"public","x-execution-enabled":false,"parameters":[{"name":"request","in":"query","required":true,"description":"URL-encoded JSON matching PublicDeliveryRequest. Unknown fields, duplicate IDs/keys and unsupported products are rejected.","schema":{"type":"string","maxLength":8192,"contentMediaType":"application/json","contentSchema":{"$ref":"#/components/schemas/PublicDeliveryRequest"}},"example":"{\"version\":1,\"subscriptions\":[{\"id\":\"ticker\",\"operation\":\"streams.ticker\",\"venue\":\"binance\",\"market_type\":\"spot\",\"symbol\":\"BTC/USDT\",\"seed\":true},{\"id\":\"book\",\"operation\":\"streams.order-book\",\"venue\":\"binance\",\"market_type\":\"spot\",\"symbol\":\"BTC/USDT\",\"limit\":\"20\"},{\"id\":\"trades\",\"operation\":\"streams.trades\",\"venue\":\"binance\",\"market_type\":\"spot\",\"symbol\":\"BTC/USDT\",\"limit\":\"50\",\"checkpoint\":true}]}"}],"responses":{"200":{"description":"SSE update/snapshot/error events wrap {version:1,subscription_id,...}. Update and snapshot events contain the unchanged normalized envelope; per-row error contains {code,message,retryable} and terminates that row. Optional failed seeds do not end the live feed. Trades opting in with checkpoint:true first receive one checkpoint control containing canonical context, stream_origin and the distribution fence when distributed. It has no trade data, received_at or data sequence, and must never be treated as a fresh trade. Equal retained cursors can bridge a quiet handover; ahead cursors require real old-reader delivery through the watermark. Updates retain original received_at/source timestamps and stream_origin:{id,sequence}; envelope.sequence is contiguous only within that subscription/connection. A seed is a REST snapshot, never a live update. Only the exact standalone : keep-alive comment block supplies heartbeat evidence. A trade subscription requires its own validated checkpoint or first trade; once admitted, validated native events or these heartbeats establish transport liveness, not subscribed-channel activity or data freshness. REST snapshots and arbitrary comments do not establish liveness. Book/ticker native-data freshness remains independent. Maximum connection lifetime is 300 seconds. No Last-Event-ID replay. Retry with jitter and reconcile gaps or changed ingestion IDs.","content":{"text/event-stream":{"schema":{"type":"string"}}}},"400":{"description":"Invalid public delivery selection or query."},"429":{"description":"Bounded shared connection capacity reached. Retry with jitter; limits are not a published per-user quota."},"503":{"description":"Public delivery unavailable. No exchange execution is enabled."}}}},"/api/v1/catalog":{"get":{"operationId":"getCatalog","tags":["Exchanges"],"summary":"List the versioned operation and parameter catalogue","security":[],"responses":{"200":{"description":"Shared operation catalogue."}}}},"/api/v1/capabilities":{"get":{"operationId":"getCapabilities","tags":["Exchanges"],"summary":"Discover implementation, evidence and access requirements separately","description":"Capability schema v2 replaces the ambiguous support field. Missing adapter functions do not establish exchange feature absence. Account and region eligibility remain unchecked. Named extensions use their fixed documented context.","security":[],"parameters":[{"name":"market_type","in":"query","required":false,"schema":{"type":"string","enum":["spot","swap","future","option"]},"description":"Context for unified operations; omitted uses each operation default. Extensions retain their fixed routing context."}],"responses":{"200":{"description":"Capabilities for every operation and venue.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CapabilityRegistry"}}}},"400":{"description":"Invalid capability query."}}}},"/api/markets/quote":{"get":{"operationId":"getQuote","tags":["Market data"],"summary":"Get a normalized spot quote","description":"REST best bid/ask for one venue and pair. Quotes may be cached for 750 ms. Pair availability depends on the exchange. There is no asset-alias conversion. No authentication required.","security":[],"parameters":[{"name":"venue","in":"query","required":true,"description":"Exchange identifier.","schema":{"$ref":"#/components/schemas/Venue"}},{"name":"base","in":"query","required":true,"description":"Uppercase letters and digits, 1–16 characters. Base and quote must differ.","schema":{"type":"string","pattern":"^[A-Z0-9]{1,16}$"},"example":"BTC"},{"name":"quote","in":"query","required":true,"description":"Uppercase letters and digits, 1–16 characters. Base and quote must differ.","schema":{"type":"string","pattern":"^[A-Z0-9]{1,16}$"},"example":"USDT"}],"responses":{"200":{"description":"Normalized quote. Example values are illustrative.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Quote"},"example":{"venue":"binance","base":"BTC","quote":"USDT","bid":"62480.10","ask":"62480.20","received_at":1791676800000,"transport":"rest"}}}},"400":{"description":"Invalid or missing query parameters, unsupported venue, unknown query field, or invalid spot pair. Query deserialization errors are plain text; pair validation errors are JSON.","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"code":{"type":"string","description":"market_data_unavailable when the frontend proxy cannot reach the Rust service. Other errors may omit this field."}}}},"text/plain":{"schema":{"type":"string"}}}},"429":{"description":"Market request or subscription capacity reached. This is a shared service limit, not a per-user quota. No Retry-After header is guaranteed.","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"code":{"type":"string","description":"market_data_unavailable when the frontend proxy cannot reach the Rust service. Other errors may omit this field."}}}}}},"503":{"description":"Exchange request failed, pair unavailable, or upstream response invalid. When the frontend cannot reach the Rust market-data service, code is market_data_unavailable.","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"code":{"type":"string","description":"market_data_unavailable when the frontend proxy cannot reach the Rust service. Other errors may omit this field."}}}}}}}}},"/api/v1/venues":{"get":{"operationId":"listVenues","tags":["Exchanges"],"summary":"List exchange integration status","security":[],"description":"Lists the seven registered adapters. All currently return live_enabled=false and awaiting_certification. This endpoint is not a full per-function capability registry.","responses":{"200":{"description":"Configured venue identifiers and execution status.","content":{"application/json":{"schema":{"type":"object","required":["venues"],"properties":{"venues":{"type":"array","items":{"type":"object","required":["id","live_enabled","status"],"properties":{"id":{"$ref":"#/components/schemas/Venue"},"live_enabled":{"type":"boolean","const":false},"status":{"type":"string","const":"awaiting_certification"}}}}}},"example":{"venues":[{"id":"binance","live_enabled":false,"status":"awaiting_certification"},{"id":"bybit","live_enabled":false,"status":"awaiting_certification"},{"id":"bitget","live_enabled":false,"status":"awaiting_certification"},{"id":"coinbase","live_enabled":false,"status":"awaiting_certification"},{"id":"kraken","live_enabled":false,"status":"awaiting_certification"},{"id":"okx","live_enabled":false,"status":"awaiting_certification"},{"id":"kucoin","live_enabled":false,"status":"awaiting_certification"}]}}}}}}}},"components":{"securitySchemes":{"NexusKey":{"type":"http","scheme":"bearer","description":"Scoped Ordien API key. Required scope is documented per operation. Never use an exchange API key here."},"BrowserSession":{"type":"apiKey","in":"cookie","name":"nexus_session","description":"Approved OIDC session. Mutations additionally require same-origin Origin and JSON content type."}},"schemas":{"Spread":{"type":"object","description":"Common normalized fields; unavailable fields may be null or omitted. Additional normalized fields may be included. Raw exchange payloads are excluded.","properties":{"spread_id":{"type":["string","null"],"description":"Native OKX spread ID."},"spread_type":{"type":["string","null"],"description":"Exchange spread category: linear, inverse or hybrid."},"state":{"type":["string","null"],"description":"live, suspend or expired."},"base":{"type":["string","null"],"description":"Base asset."},"quote":{"type":["string","null"],"description":"Price denomination."},"size_currency":{"type":["string","null"],"description":"Unit for order size; do not assume contracts."},"tick_size":{"type":["string","null"],"pattern":"^-?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$","description":"Allowed price increment."},"min_size":{"type":["string","null"],"pattern":"^-?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$","description":"Minimum size."},"lot_size":{"type":["string","null"],"pattern":"^-?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$","description":"Allowed size increment."},"legs":{"type":"array","items":{"type":"object","properties":{"instrument_id":{"type":"string"},"side":{"type":"string","enum":["buy","sell"]}}},"description":"Objects with native instrument_id and buy/sell side."},"timestamp":{"type":["integer","null"],"format":"int64","description":"Last instrument update."},"listed_at":{"type":["integer","null"],"format":"int64","description":"Listing time."},"expires_at":{"type":["integer","null"],"format":"int64","description":"Expiry time when reported."}}},"BybitAccountInfo":{"type":"object","description":"Common normalized fields; unavailable fields may be null or omitted. Additional normalized fields may be included. Raw exchange payloads are excluded.","properties":{"unified_margin_status":{"type":["integer","null"],"description":"Bybit account-mode code, preserved without reinterpretation."},"margin_mode":{"type":["string","null"],"description":"ISOLATED_MARGIN, REGULAR_MARGIN or PORTFOLIO_MARGIN."},"spot_hedging_status":{"type":["string","null"],"description":"ON or OFF when provided."},"is_master_trader":{"type":["boolean","null"],"description":"Copy-trading leader flag."},"timestamp":{"type":["integer","null"],"format":"int64","description":"Account information update time."}}},"Ticker":{"type":"object","description":"Common normalized fields; unavailable fields may be null or omitted. Additional normalized fields may be included. Raw exchange payloads are excluded.","properties":{"symbol":{"type":["string","null"],"description":"Unified market identifier."},"bid":{"type":["string","null"],"pattern":"^-?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$","description":"Best bid, or null if unavailable."},"ask":{"type":["string","null"],"pattern":"^-?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$","description":"Best ask, or null if unavailable."},"last":{"type":["string","null"],"pattern":"^-?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$","description":"Last traded price."},"open":{"type":["string","null"],"pattern":"^-?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$","description":"Optional rolling 24-hour opening price; a display may derive percentage change from this and last."},"percentage":{"type":["string","null"],"pattern":"^-?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$","description":"Rolling 24-hour percentage change, already multiplied by 100; null if unavailable."},"base_volume":{"type":["string","null"],"pattern":"^-?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$","description":"Rolling base volume where available."},"quote_volume":{"type":["string","null"],"pattern":"^-?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$","description":"Rolling quote volume where available."},"timestamp":{"type":["integer","null"],"format":"int64","description":"Exchange observation time; null if absent."},"statistics_timestamp":{"type":["integer","null"],"format":"int64","description":"Optional native observation time for rolling statistics, independent of price updates; never advance it on BBO-only updates."},"mark_price":{"type":["string","null"],"pattern":"^-?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$","description":"Optional perpetual mark price carried by the native ticker."},"index_price":{"type":["string","null"],"pattern":"^-?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$","description":"Optional index price carried by the native ticker."},"funding_rate":{"type":["string","null"],"pattern":"^-?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$","description":"Optional current funding rate as a fraction, not percent."},"next_funding_timestamp":{"type":["integer","null"],"format":"int64","description":"Optional next funding settlement time; not a predicted rate."},"open_interest_amount":{"type":["string","null"],"pattern":"^-?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$","description":"Optional open interest in native market units."},"open_interest_value":{"type":["string","null"],"pattern":"^-?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$","description":"Optional quote notional open interest."},"funding_interval_hours":{"type":["string","null"],"pattern":"^-?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$","description":"Funding interval in hours only where explicitly supplied."}}},"Market":{"type":"object","description":"Common normalized fields; unavailable fields may be null or omitted. Additional normalized fields may be included. Raw exchange payloads are excluded.","properties":{"id":{"type":["string","null"],"description":"Exchange instrument ID."},"symbol":{"type":["string","null"],"description":"Unified identifier including settlement / expiry where applicable."},"base":{"type":["string","null"],"description":"Unified base asset."},"quote":{"type":["string","null"],"description":"Unified quote asset."},"settle":{"type":["string","null"],"description":"Settlement asset for contracts."},"type":{"type":["string","null"],"description":"spot, swap, future or option."},"active":{"type":["boolean","null"],"description":"Exchange-reported availability; null if unknown."},"contract_size":{"type":["string","null"],"pattern":"^-?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$","description":"Underlying amount per contract."},"precision":{"type":["object","null"],"description":"Exchange precision constraints."},"limits":{"type":["object","null"],"description":"Minimum and maximum amounts / costs."}}},"CurrencyMap":{"type":"object","additionalProperties":{"type":"object"}},"OrderBook":{"type":"object","description":"Common normalized fields; unavailable fields may be null or omitted. Additional normalized fields may be included. Raw exchange payloads are excluded.","properties":{"symbol":{"type":["string","null"],"description":"Unified market."},"bids":{"type":"array","items":{"type":"array","items":{"type":"string","pattern":"^-?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$"},"minItems":2,"maxItems":2},"description":"[price, amount] decimal-string pairs, highest bid first."},"asks":{"type":"array","items":{"type":"array","items":{"type":"string","pattern":"^-?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$"},"minItems":2,"maxItems":2},"description":"[price, amount] decimal-string pairs, lowest ask first."},"timestamp":{"type":["integer","null"],"format":"int64","description":"Exchange snapshot time, or null."},"nonce":{"type":["integer","string","null"],"description":"Exchange sequence / nonce as an integer or exact string, or null; not a timestamp and not globally comparable."}}},"Trade":{"type":"object","description":"Common normalized fields; unavailable fields may be null or omitted. Additional normalized fields may be included. Raw exchange payloads are excluded.","properties":{"id":{"type":["string","null"],"description":"Exchange trade or fill ID; Binance USD-M aggregate IDs use an agg: prefix."},"order":{"type":["string","null"],"description":"Exchange order ID for private fills, when available."},"symbol":{"type":["string","null"],"description":"Unified market."},"side":{"type":["string","null"],"description":"Taker buy / sell for public trades, or null."},"price":{"type":["string","null"],"pattern":"^-?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$","description":"Execution price."},"amount":{"type":["string","null"],"pattern":"^-?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$","description":"Base amount or number of contracts."},"cost":{"type":["string","null"],"pattern":"^-?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$","description":"Quote cost."},"aggregation":{"type":["string","null"],"description":"Optional individual / aggregate marker. Do not combine aggregate batches with overlapping individual REST seeds."},"fee":{"type":["object","null"],"description":"Fee currency, cost and rate where available."},"timestamp":{"type":["integer","null"],"format":"int64","description":"Exchange execution time."}}},"Candle":{"type":"object","description":"Common normalized fields; unavailable fields may be null or omitted. Additional normalized fields may be included. Raw exchange payloads are excluded.","properties":{"timestamp":{"type":["integer","null"],"format":"int64","description":"Interval opening time in Unix milliseconds."},"open":{"type":["string","null"],"pattern":"^-?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$","description":"Price for this interval."},"high":{"type":["string","null"],"pattern":"^-?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$","description":"Price for this interval."},"low":{"type":["string","null"],"pattern":"^-?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$","description":"Price for this interval."},"close":{"type":["string","null"],"pattern":"^-?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$","description":"Price for this interval."},"volume":{"type":["string","null"],"pattern":"^-?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$","description":"Adapter-reported interval volume. Inspect the instrument and venue units before comparing spot and derivatives."}}},"Status":{"type":"object","description":"Common normalized fields; unavailable fields may be null or omitted. Additional normalized fields may be included. Raw exchange payloads are excluded.","properties":{"status":{"type":["string","null"],"description":"Exchange status: e.g. ok, maintenance, shutdown or error."},"updated":{"type":["integer","null"],"format":"int64","description":"Exchange status update time, if available."},"eta":{"type":["integer","null"],"format":"int64","description":"Expected recovery time, if available."}}},"Timestamp":{"type":"integer","format":"int64"},"Order":{"type":"object","description":"Common normalized fields; unavailable fields may be null or omitted. Additional normalized fields may be included. Raw exchange payloads are excluded.","properties":{"id":{"type":["string","null"],"description":"Exchange order ID."},"client_order_id":{"type":["string","null"],"description":"Client identifier where available."},"symbol":{"type":["string","null"],"description":"Unified market."},"type":{"type":["string","null"],"description":"Order type."},"side":{"type":["string","null"],"description":"buy / sell."},"status":{"type":["string","null"],"description":"open, closed, canceled, expired or rejected; null when unavailable."},"price":{"type":["string","null"],"pattern":"^-?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$","description":"Normalized exchange price."},"amount":{"type":["string","null"],"pattern":"^-?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$","description":"Normalized exchange amount."},"filled":{"type":["string","null"],"pattern":"^-?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$","description":"Normalized exchange filled."},"remaining":{"type":["string","null"],"pattern":"^-?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$","description":"Normalized exchange remaining."},"cost":{"type":["string","null"],"pattern":"^-?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$","description":"Normalized exchange cost."},"average":{"type":["string","null"],"pattern":"^-?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$","description":"Normalized exchange average."},"timestamp":{"type":["integer","null"],"format":"int64","description":"Exchange creation time."}}},"Balance":{"type":"object","description":"Common normalized fields; unavailable fields may be null or omitted. Additional normalized fields may be included. Raw exchange payloads are excluded.","properties":{"timestamp":{"type":["integer","null"],"format":"int64","description":"Exchange observation time or null."},"currencies":{"type":["object","null"],"description":"Map of currency to {free, used, total, debt}. Monetary values are decimal strings or null."}}},"Account":{"type":"object","description":"Common normalized fields; unavailable fields may be null or omitted. Additional normalized fields may be included. Raw exchange payloads are excluded.","properties":{"id":{"type":["string","null"],"description":"Exchange account ID."},"type":{"type":["string","null"],"description":"Account category."},"currency":{"type":["string","null"],"description":"Account currency where supplied."}}},"FeeMap":{"type":"object","additionalProperties":{"type":"object"}},"LedgerEntry":{"type":"object","description":"Common normalized fields; unavailable fields may be null or omitted. Additional normalized fields may be included. Raw exchange payloads are excluded.","properties":{"id":{"type":["string","null"],"description":"Exchange ledger ID."},"type":{"type":["string","null"],"description":"Entry kind reported by the normalized adapter."},"currency":{"type":["string","null"],"description":"Asset."},"amount":{"type":["string","null"],"pattern":"^-?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$","description":"Entry amount."},"direction":{"type":["string","null"],"description":"in / out where provided."},"timestamp":{"type":["integer","null"],"format":"int64","description":"Exchange entry time."}}},"FundingRate":{"type":"object","description":"Common normalized fields; unavailable fields may be null or omitted. Additional normalized fields may be included. Raw exchange payloads are excluded.","properties":{"symbol":{"type":["string","null"],"description":"Settled perpetual symbol."},"funding_rate":{"type":["string","null"],"pattern":"^-?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$","description":"Funding rate, not a percentage multiplied by 100."},"funding_timestamp":{"type":["integer","null"],"format":"int64","description":"Funding settlement time when supplied."},"timestamp":{"type":["integer","null"],"format":"int64","description":"Exchange observation or historical rate time."},"mark_price":{"type":["string","null"],"pattern":"^-?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$","description":"Mark price if included."},"index_price":{"type":["string","null"],"pattern":"^-?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$","description":"Index price if included."}}},"OpenInterest":{"type":"object","description":"Common normalized fields; unavailable fields may be null or omitted. Additional normalized fields may be included. Raw exchange payloads are excluded.","properties":{"symbol":{"type":["string","null"],"description":"Contract symbol."},"open_interest_amount":{"type":["string","null"],"pattern":"^-?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$","description":"Amount in the adapter’s market units."},"open_interest_value":{"type":["string","null"],"pattern":"^-?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$","description":"Notional interest where reported."},"timestamp":{"type":["integer","null"],"format":"int64","description":"Exchange observation time."}}},"MarkPrice":{"type":"object","description":"Common normalized fields; unavailable fields may be null or omitted. Additional normalized fields may be included. Raw exchange payloads are excluded.","properties":{"symbol":{"type":["string","null"],"description":"Contract symbol."},"mark_price":{"type":["string","null"],"pattern":"^-?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$","description":"Mark price."},"index_price":{"type":["string","null"],"pattern":"^-?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$","description":"Index price when provided."},"timestamp":{"type":["integer","null"],"format":"int64","description":"Exchange observation time."}}},"Position":{"type":"object","description":"Common normalized fields; unavailable fields may be null or omitted. Additional normalized fields may be included. Raw exchange payloads are excluded.","properties":{"symbol":{"type":["string","null"],"description":"Contract symbol."},"side":{"type":["string","null"],"description":"long / short where provided."},"contracts":{"type":["string","null"],"pattern":"^-?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$","description":"Position contract count."},"contract_size":{"type":["string","null"],"pattern":"^-?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$","description":"Underlying amount per contract."},"entry_price":{"type":["string","null"],"pattern":"^-?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$","description":"Average entry price."},"mark_price":{"type":["string","null"],"pattern":"^-?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$","description":"Mark price."},"unrealized_pnl":{"type":["string","null"],"pattern":"^-?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$","description":"Unrealized profit / loss."},"leverage":{"type":["string","null"],"pattern":"^-?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$","description":"Applied leverage."},"margin_mode":{"type":["string","null"],"description":"cross / isolated."},"timestamp":{"type":["integer","null"],"format":"int64","description":"Exchange observation time."}}},"DepositAddress":{"type":"object","description":"Common normalized fields; unavailable fields may be null or omitted. Additional normalized fields may be included. Raw exchange payloads are excluded.","properties":{"currency":{"type":["string","null"],"description":"Asset."},"network":{"type":["string","null"],"description":"Network."},"address":{"type":["string","null"],"description":"Exchange deposit address."},"tag":{"type":["string","null"],"description":"Memo or tag; null when absent."}}},"Transaction":{"type":"object","description":"Common normalized fields; unavailable fields may be null or omitted. Additional normalized fields may be included. Raw exchange payloads are excluded.","properties":{"id":{"type":["string","null"],"description":"Exchange transaction ID."},"txid":{"type":["string","null"],"description":"Blockchain transaction hash if known."},"type":{"type":["string","null"],"description":"deposit / withdrawal."},"currency":{"type":["string","null"],"description":"Asset."},"network":{"type":["string","null"],"description":"Network when provided."},"amount":{"type":["string","null"],"pattern":"^-?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$","description":"Transfer amount."},"address":{"type":["string","null"],"description":"Destination address."},"tag":{"type":["string","null"],"description":"Destination memo / tag."},"status":{"type":["string","null"],"description":"pending, ok, failed, canceled, or another normalized exchange status."},"fee":{"type":["object","null"],"description":"Currency and cost."},"timestamp":{"type":["integer","null"],"format":"int64","description":"Exchange transaction time."}}},"Transfer":{"type":"object","description":"Common normalized fields; unavailable fields may be null or omitted. Additional normalized fields may be included. Raw exchange payloads are excluded.","properties":{"id":{"type":["string","null"],"description":"Exchange transfer ID."},"currency":{"type":["string","null"],"description":"Asset."},"amount":{"type":["string","null"],"pattern":"^-?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$","description":"Transferred amount."},"from_account":{"type":["string","null"],"description":"Source account."},"to_account":{"type":["string","null"],"description":"Destination account."},"status":{"type":["string","null"],"description":"Normalized transfer status."},"timestamp":{"type":["integer","null"],"format":"int64","description":"Exchange transfer time."}}},"FundingFeeMap":{"type":"object","additionalProperties":{"type":"object"}},"Result":{"type":"object","description":"Common normalized fields; unavailable fields may be null or omitted. Additional normalized fields may be included. Raw exchange payloads are excluded.","properties":{"result":{"type":["object","null"],"description":"Exchange-normalized acknowledgement. No success response is currently returned while execution is locked."}}},"NexusError":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message","retryable"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"}}}}},"Capability":{"type":"object","required":["operation","kind","market_type","exchange_support","nexus_support","implementation","availability","account_access","eligibility","evidence","emulation","requirements","constraints"],"properties":{"operation":{"type":"string"},"kind":{"enum":["unified","extension"]},"market_type":{"enum":["spot","swap","future","option"]},"exchange_support":{"enum":["documented","not_supported","unknown","not_applicable"]},"nexus_support":{"enum":["implemented","contract_only","not_implemented"]},"implementation":{"enum":["native","emulated","none"]},"availability":{"enum":["public","verified_connection_required","authentication_pending","execution_locked","not_implemented","not_applicable","exchange_unsupported"]},"account_access":{"enum":["not_required","not_checked"]},"eligibility":{"const":"not_checked","description":"Public discovery does not verify region, instrument, network or account eligibility."},"evidence":{"type":"object","properties":{"type":{"enum":["official_documentation","adapter_metadata","extension_scope"]},"url":{"type":"string","format":"uri"},"reviewed_at":{"type":"string","format":"date"},"adapter":{"type":"string"},"version":{"type":"string"}}},"emulation":{"type":["object","null"],"properties":{"requires_opt_in":{"const":true},"parameter":{"const":"allow_emulated"},"description":{"type":"string"}}},"authentication":{"type":["object","null"],"properties":{"reviewed_at":{"type":"string","format":"date"},"verification":{"type":"string"},"key_types":{"type":"array","items":{"type":"string"}},"blocker":{"type":["string","null"]}}},"requirements":{"type":"array","items":{"type":"string"}},"constraints":{"type":"object","properties":{"timeframes":{"type":["array","null"],"items":{"type":"string"}}}}}},"CapabilityRegistry":{"type":"object","required":["version","capability_schema_version","market_type","policy","venues"],"properties":{"version":{"type":"string"},"capability_schema_version":{"const":2},"market_type":{"type":["string","null"]},"policy":{"type":"string"},"venues":{"type":"array","items":{"type":"object","required":["venue","scope","operations"],"properties":{"venue":{"type":"string","enum":["binance","bybit","bitget","coinbase","kraken","okx","kucoin"]},"scope":{"type":"string"},"operations":{"type":"array","items":{"$ref":"#/components/schemas/Capability"}}}}}}},"PublicDeliveryRequest":{"$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."}},"Venue":{"type":"string","enum":["binance","bybit","bitget","coinbase","kraken","okx","kucoin"]},"Quote":{"type":"object","required":["venue","base","quote","bid","ask","received_at","transport"],"properties":{"venue":{"$ref":"#/components/schemas/Venue","description":"Lowercase exchange identifier. Echoes the requested venue."},"base":{"type":"string","description":"Requested base asset, for example BTC."},"quote":{"type":"string","description":"Requested quote asset, for example USDT. Asset aliases are not converted."},"bid":{"type":"string","description":"Best bid as a positive decimal string. Preserve decimal precision."},"ask":{"type":"string","description":"Best ask as a decimal string, greater than or equal to bid."},"received_at":{"type":"integer","description":"Unix milliseconds when Ordien received the quote; not an exchange timestamp. Cached responses retain it.","format":"int64"},"transport":{"type":"string","description":"Always rest in the current implementation.","const":"rest"}}}}}}