{"openapi":"3.1.0","info":{"title":"DataGate Feed API","description":"Public DataGate Feed, BATX compatibility, and Cell V2 HTTP APIs. Use Authorize with X-API-Key or Bearer authentication. WebSocket protocols are documented at /docs/feed-websocket.md.","version":"2.0"},"paths":{"/api/cell/v2/llm/catalog":{"get":{"summary":"Catalog","operationId":"catalog_api_cell_v2_llm_catalog_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Catalog Api Cell V2 Llm Catalog Get"}}}}},"tags":["Cell V2 public"],"security":[{"FeedApiKey":[]},{"BearerAuth":[]}],"parameters":[{"in":"query","required":false,"name":"datasets","description":"Comma-separated dataset IDs","schema":{"type":"string"}}]},"post":{"summary":"Catalog Post","operationId":"catalog_post_api_cell_v2_llm_catalog_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Catalog Post Api Cell V2 Llm Catalog Post"}}}}},"tags":["Cell V2 public"],"security":[{"FeedApiKey":[]},{"BearerAuth":[]}],"parameters":[{"in":"query","required":false,"name":"datasets","description":"Comma-separated dataset IDs","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"datasets":["us.bars"]}}}}}},"/api/cell/v2/llm/query":{"post":{"summary":"Query","operationId":"query_api_cell_v2_llm_query_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Query Api Cell V2 Llm Query Post"}}}}},"tags":["Cell V2 public"],"security":[{"FeedApiKey":[]},{"BearerAuth":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"datasets":["us.bars"],"data_version":"current","sql":"SELECT * FROM \"us.bars\" LIMIT 10","params":[],"max_rows":1000,"timeout_ms":30000}}}}}},"/api/cell/v2/discovery/datasets":{"get":{"summary":"Discovered Datasets","operationId":"discovered_datasets_api_cell_v2_discovery_datasets_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Discovered Datasets Api Cell V2 Discovery Datasets Get"}}}}},"tags":["Cell V2 public"],"security":[{"FeedApiKey":[]},{"BearerAuth":[]}],"parameters":[]}},"/api/cell/v2/news/query":{"post":{"summary":"News Query","operationId":"news_query_api_cell_v2_news_query_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response News Query Api Cell V2 News Query Post"}}}}},"tags":["Cell V2 public"],"security":[{"FeedApiKey":[]},{"BearerAuth":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"start_ts":1788134400000,"end_ts":1788220800000,"instrument_id":"infoway:stock_us:AAPL.US","limit":100,"cursor":0}}}}}},"/api/cell/v2/analytics/catalog":{"post":{"summary":"Analytics Catalog","operationId":"analytics_catalog_api_cell_v2_analytics_catalog_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Analytics Catalog Api Cell V2 Analytics Catalog Post"}}}}},"tags":["Cell V2 public"],"security":[{"FeedApiKey":[]},{"BearerAuth":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"datasets":[{"dataset":"us.bars"}]}}}}}},"/api/cell/v2/analytics/query":{"post":{"summary":"Analytics Query","operationId":"analytics_query_api_cell_v2_analytics_query_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Analytics Query Api Cell V2 Analytics Query Post"}}}}},"tags":["Cell V2 public"],"security":[{"FeedApiKey":[]},{"BearerAuth":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"datasets":[{"alias":"bars","dataset":"us.bars","version":"current","scan":{"filters":[{"column":"symbol","op":"eq","parameter":"symbol"}]}}],"sql":"SELECT symbol, avg(close) AS avg_close FROM bars GROUP BY symbol","parameters":{"symbol":{"type":"string","value":"NVDA_NASDAQ"}},"mode":"sync","timeout_ms":30000,"result":{"preferred_format":"json","max_rows":1000}}}}}}},"/livez":{"get":{"summary":"Livez","operationId":"livez_livez_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Livez Livez Get"}}}}},"tags":["System"],"security":[],"parameters":[]}},"/healthz":{"get":{"summary":"Healthz","operationId":"healthz_healthz_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"tags":["System"],"security":[],"parameters":[]}},"/api/status":{"get":{"summary":"Status","operationId":"status_api_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"tags":["Feed compatibility"],"security":[{"FeedApiKey":[]},{"BearerAuth":[]}],"parameters":[]}},"/api/data-health":{"get":{"summary":"Data partition and persistence health","description":"Returns logical partition connectivity, Dataset coverage, durable persistence progress, and Published projection progress. Requires an existing Feed API key.","operationId":"data_health_api_data_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"tags":["Feed compatibility"],"security":[{"FeedApiKey":[]},{"BearerAuth":[]}],"parameters":[]}},"/api/ws-ticket":{"post":{"summary":"Ws Ticket","operationId":"ws_ticket_api_ws_ticket_post","responses":{"200":{"description":"Legacy or audience-bound single-use ticket","content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["code","ticket","expires_ts"],"additionalProperties":false},{"type":"object","required":["code","schema","protocol","ticket","expires_ts","audience","jti","scope_id","websocket_path"],"additionalProperties":false}]}}}}},"tags":["Feed compatibility"],"security":[{"FeedApiKey":[]},{"BearerAuth":[]}],"parameters":[],"description":"Only an object whose schema is batx-market-ticket-request/v1 opts into the additive subject/audience contract. Empty, malformed, and other legacy bodies remain ignored and preserve the exact legacy single-use ticket response.","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","required":["schema","subject","audience"],"properties":{"schema":{"const":"batx-market-ticket-request/v1"},"subject":{"type":"string","minLength":16,"maxLength":200},"audience":{"const":"batx-market-feed/v1"}},"additionalProperties":false},"examples":{"batxMarket":{"value":{"schema":"batx-market-ticket-request/v1","subject":"{{market_scope_id}}","audience":"batx-market-feed/v1"}}}}}}}},"/api/universe":{"get":{"summary":"Api Universe","operationId":"api_universe_api_universe_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"tags":["Feed compatibility"],"security":[{"FeedApiKey":[]},{"BearerAuth":[]}],"parameters":[{"in":"query","required":false,"name":"market","description":"Comma-separated market filters","schema":{"type":"string"}},{"in":"query","required":false,"name":"status","description":"Exact status filter","schema":{"type":"string"}},{"in":"query","required":false,"name":"streamable","description":"Filter by realtime streamability","schema":{"type":"boolean"}},{"in":"query","required":false,"name":"q","description":"Symbol or name search","schema":{"type":"string"}},{"in":"query","required":false,"name":"cursor","description":"Zero-based result offset","schema":{"type":"integer","minimum":0,"default":0}},{"in":"query","required":false,"name":"limit","description":"Page size, capped at 2000","schema":{"type":"integer","minimum":1,"maximum":2000,"default":500}}]}},"/api/symbols":{"get":{"summary":"Api Symbols","operationId":"api_symbols_api_symbols_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"tags":["Feed compatibility"],"security":[{"FeedApiKey":[]},{"BearerAuth":[]}],"parameters":[]}},"/api/snapshot":{"get":{"summary":"Api Snapshot","operationId":"api_snapshot_api_snapshot_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"tags":["Feed compatibility"],"security":[{"FeedApiKey":[]},{"BearerAuth":[]}],"parameters":[{"in":"query","required":false,"name":"symbols","description":"Comma-separated canonical symbols","schema":{"type":"string"}}]}},"/api/monitor":{"get":{"summary":"Api Monitor","operationId":"api_monitor_api_monitor_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"tags":["Feed compatibility"],"security":[{"MonitorApiKey":[]},{"FeedApiKey":[]},{"BearerAuth":[]}],"parameters":[]}}},"components":{"schemas":{"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"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"}},"securitySchemes":{"FeedApiKey":{"type":"apiKey","in":"header","name":"X-API-Key","description":"A key from the configured DataGate feed key file."},"BearerAuth":{"type":"http","scheme":"bearer","description":"The same Feed API key sent as a Bearer token."},"MonitorApiKey":{"type":"apiKey","in":"header","name":"X-API-Key","description":"The separately configured monitor key. When no monitor key is configured, /api/monitor accepts a Feed API key instead."}}},"servers":[{"url":"/","description":"Current DataGate Feed host"}]}