{"openapi":"3.1.0","info":{"title":"CEX Arbitrage Scanner","description":"Scanner-only, quote-only direct route validation API","version":"0.1.0"},"paths":{"/api/health":{"get":{"summary":"Health","operationId":"health_api_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Health Api Health Get"}}}}}}},"/api/exchanges":{"get":{"summary":"Exchanges","operationId":"exchanges_api_exchanges_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Exchanges Api Exchanges Get"}}}}}}},"/api/health/exchanges":{"get":{"summary":"Exchange Health","operationId":"exchange_health_api_health_exchanges_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Exchange Health Api Health Exchanges Get"}}}}}}},"/api/market/signals":{"get":{"summary":"Market Signals","operationId":"market_signals_api_market_signals_get","parameters":[{"name":"min_gross_bps","in":"query","required":false,"schema":{"anyOf":[{"type":"number","minimum":0.0},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"}],"default":"30","title":"Min Gross Bps"}},{"name":"quote","in":"query","required":false,"schema":{"anyOf":[{"type":"string","minLength":2,"maxLength":16},{"type":"null"}],"title":"Quote"}},{"name":"exchange","in":"query","required":false,"schema":{"anyOf":[{"type":"string","minLength":2,"maxLength":32},{"type":"null"}],"title":"Exchange"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Market Signals Api Market Signals Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/opportunities":{"get":{"summary":"Opportunities","operationId":"opportunities_api_opportunities_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Opportunities Api Opportunities Get"}}}}}}},"/api/opportunities/{opportunity_id}":{"get":{"summary":"Opportunity Detail","operationId":"opportunity_detail_api_opportunities__opportunity_id__get","parameters":[{"name":"opportunity_id","in":"path","required":true,"schema":{"type":"string","title":"Opportunity Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Opportunity Detail Api Opportunities  Opportunity Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/dashboard":{"get":{"summary":"Dashboard","operationId":"dashboard_api_dashboard_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Dashboard Api Dashboard Get"}}}}}}},"/api/evaluate/direct":{"post":{"summary":"Evaluate Direct","operationId":"evaluate_direct_api_evaluate_direct_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DirectEvaluationRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DirectEvaluationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"DirectEvaluationRequest":{"properties":{"base_asset":{"type":"string","title":"Base Asset"},"quote_asset":{"type":"string","title":"Quote Asset","default":"USDT"},"initial_quote":{"anyOf":[{"type":"number","exclusiveMinimum":0.0},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"}],"title":"Initial Quote"},"asks":{"items":{"$ref":"#/components/schemas/OrderLevelInput"},"type":"array","minItems":1,"title":"Asks"},"bids":{"items":{"$ref":"#/components/schemas/OrderLevelInput"},"type":"array","minItems":1,"title":"Bids"},"buy_taker_fee":{"anyOf":[{"type":"number","exclusiveMaximum":1.0,"minimum":0.0},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"}],"title":"Buy Taker Fee","default":"0.001"},"sell_taker_fee":{"anyOf":[{"type":"number","exclusiveMaximum":1.0,"minimum":0.0},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"}],"title":"Sell Taker Fee","default":"0.001"},"source_networks":{"items":{"$ref":"#/components/schemas/FundingNetworkInput"},"type":"array","minItems":1,"title":"Source Networks"},"destination_networks":{"items":{"$ref":"#/components/schemas/FundingNetworkInput"},"type":"array","minItems":1,"title":"Destination Networks"},"buy_book_received_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Buy Book Received At"},"sell_book_received_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Sell Book Received At"}},"additionalProperties":false,"type":"object","required":["base_asset","initial_quote","asks","bids","source_networks","destination_networks"],"title":"DirectEvaluationRequest"},"DirectEvaluationResponse":{"properties":{"base_asset":{"type":"string","title":"Base Asset"},"quote_asset":{"type":"string","title":"Quote Asset"},"routes":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Routes"}},"additionalProperties":false,"type":"object","required":["base_asset","quote_asset","routes"],"title":"DirectEvaluationResponse"},"FundingNetworkInput":{"properties":{"exchange":{"type":"string","title":"Exchange"},"asset":{"type":"string","title":"Asset"},"canonical_chain":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Canonical Chain"},"exchange_network_name":{"type":"string","title":"Exchange Network Name"},"contract_address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Contract Address"},"deposit_enabled":{"type":"boolean","title":"Deposit Enabled"},"withdraw_enabled":{"type":"boolean","title":"Withdraw Enabled"},"identity_verified":{"type":"boolean","title":"Identity Verified"},"withdraw_fee":{"anyOf":[{"type":"number","minimum":0.0},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Withdraw Fee"},"withdraw_min":{"anyOf":[{"type":"number","minimum":0.0},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Withdraw Min"},"deposit_min":{"anyOf":[{"type":"number","minimum":0.0},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Deposit Min"},"memo_required":{"type":"boolean","title":"Memo Required","default":false}},"additionalProperties":false,"type":"object","required":["exchange","asset","canonical_chain","exchange_network_name","deposit_enabled","withdraw_enabled","identity_verified"],"title":"FundingNetworkInput"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"OrderLevelInput":{"properties":{"price":{"anyOf":[{"type":"number","exclusiveMinimum":0.0},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"}],"title":"Price"},"amount":{"anyOf":[{"type":"number","exclusiveMinimum":0.0},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"}],"title":"Amount"}},"additionalProperties":false,"type":"object","required":["price","amount"],"title":"OrderLevelInput"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}}}