{"components":{"schemas":{"Account":{"properties":{"account_type":{"enum":["CASH","MARGIN","ISA","CFD","INVEST","SPOT","FUTURES"],"type":"string"},"base_currency":{"type":"string"},"broker":{"enum":["ibkr","t212","saxo","alpaca","binance"],"type":"string"},"cash":{"type":"number"},"created_at":{"format":"date-time","type":"string"},"id":{"format":"uuid","type":"string"},"initial_cash":{"type":"number"},"is_active":{"type":"boolean"},"label":{"type":"string"}},"type":"object"},"Error":{"properties":{"code":{"type":"string"},"error":{"type":"string"}},"type":"object"},"Fill":{"properties":{"account_id":{"type":"string"},"commission":{"type":"number"},"fill_price":{"type":"number"},"fill_qty":{"type":"number"},"filled_at":{"format":"date-time","type":"string"},"id":{"format":"uuid","type":"string"},"order_id":{"type":"string"},"side":{"enum":["BUY","SELL"],"type":"string"},"slippage":{"type":"number"},"symbol":{"type":"string"}},"type":"object"},"Order":{"properties":{"account_id":{"type":"string"},"extended_hours":{"type":"boolean"},"id":{"format":"uuid","type":"string"},"limit_price":{"type":"number"},"placed_at":{"format":"date-time","type":"string"},"qty":{"type":"number"},"side":{"enum":["BUY","SELL"],"type":"string"},"status":{"enum":["PENDING","PARTIAL","FILLED","CANCELLED","REJECTED"],"type":"string"},"stop_price":{"type":"number"},"symbol":{"type":"string"},"time_in_force":{"enum":["DAY","GTC","IOC","FOK"],"type":"string"},"trail_amt":{"type":"number"},"trail_pct":{"type":"number"},"type":{"enum":["MARKET","LIMIT","STOP","STOP_LIMIT","TRAILING_STOP"],"type":"string"}},"type":"object"}},"securitySchemes":{"bearerAuth":{"bearerFormat":"bsim_…","description":"API key from Settings → API Keys","scheme":"bearer","type":"http"}}},"info":{"description":"Paper-trading simulator. All requests require `Authorization: Bearer \u003ckey\u003e`. The base URL is `https://simulator.dailytickers.com/api/{workspace}` — replace `{workspace}` with your workspace slug (e.g. `default`).","title":"Broker Simulator API","version":"1.0.0"},"openapi":"3.1.0","paths":{"/accounts":{"get":{"parameters":[{"in":"query","name":"broker","schema":{"type":"string"}}],"responses":{"200":{"description":"List of accounts"}},"security":[{"bearerAuth":[]}],"summary":"List accounts","tags":["Accounts"]},"post":{"requestBody":{"content":{"application/json":{"schema":{"properties":{"account_type":{"description":"Omit (or send \"paper\") to use the broker's default type; must be one the broker supports.","enum":["CASH","MARGIN","ISA","CFD","INVEST","SPOT","FUTURES"],"type":"string"},"base_currency":{"default":"USD","type":"string"},"broker":{"type":"string"},"initial_cash":{"default":100000,"type":"number"},"label":{"type":"string"}},"required":["broker","label"],"type":"object"}}},"required":true},"responses":{"201":{"description":"Created account"}},"security":[{"bearerAuth":[]}],"summary":"Create account","tags":["Accounts"]}},"/accounts/{id}":{"get":{"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Account"}},"security":[{"bearerAuth":[]}],"summary":"Get account","tags":["Accounts"]}},"/accounts/{id}/cash":{"post":{"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"delta":{"type":"number"},"reason":{"type":"string"}},"required":["delta"],"type":"object"}}},"required":true},"responses":{"200":{"description":"New cash balance"}},"security":[{"bearerAuth":[]}],"summary":"Deposit or withdraw cash (positive = deposit)","tags":["Accounts"]}},"/accounts/{id}/fills":{"get":{"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"query","name":"limit","schema":{"type":"integer"}}],"responses":{"200":{"description":"Fills list"}},"security":[{"bearerAuth":[]}],"summary":"List fills","tags":["Fills"]}},"/accounts/{id}/orders":{"get":{"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"query","name":"status","schema":{"type":"string"}}],"responses":{"200":{"description":"Orders list"}},"security":[{"bearerAuth":[]}],"summary":"List orders","tags":["Orders"]},"post":{"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"extended_hours":{"type":"boolean"},"limit_price":{"type":"number"},"qty":{"type":"number"},"side":{"enum":["BUY","SELL"],"type":"string"},"stop_loss":{"type":"number"},"stop_price":{"type":"number"},"symbol":{"type":"string"},"take_profit":{"type":"number"},"time_in_force":{"default":"DAY","enum":["DAY","GTC","IOC","FOK"],"type":"string"},"trail_amt":{"type":"number"},"trail_pct":{"type":"number"},"type":{"enum":["MARKET","LIMIT","STOP","STOP_LIMIT","TRAILING_STOP"],"type":"string"}},"required":["symbol","side","type","qty"],"type":"object"}}},"required":true},"responses":{"201":{"description":"Placed order"}},"security":[{"bearerAuth":[]}],"summary":"Place order","tags":["Orders"]}},"/accounts/{id}/orders/{oid}":{"delete":{"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"oid","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Cancelled"}},"security":[{"bearerAuth":[]}],"summary":"Cancel order","tags":["Orders"]},"get":{"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"oid","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Order"}},"security":[{"bearerAuth":[]}],"summary":"Get order","tags":["Orders"]},"patch":{"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"oid","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"limit_price":{"type":"number"},"qty":{"type":"number"}},"type":"object"}}},"required":true},"responses":{"200":{"description":"Modified order"},"422":{"description":"Adapter refuses modification"}},"security":[{"bearerAuth":[]}],"summary":"Modify an active order under the broker adapter contract","tags":["Orders"]}},"/accounts/{id}/portfolio":{"get":{"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Portfolio summary"}},"security":[{"bearerAuth":[]}],"summary":"Get portfolio (positions + PnL)","tags":["Accounts"]}},"/accounts/{id}/reset":{"post":{"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"reason":{"type":"string"},"reset_by":{"type":"string"}},"required":["reset_by"],"type":"object"}}},"required":true},"responses":{"200":{"description":"Reset account"}},"security":[{"bearerAuth":[]}],"summary":"Reset account (clears positions, orders, fills)","tags":["Accounts"]}},"/backtest":{"post":{"requestBody":{"content":{"application/json":{"schema":{"properties":{"account_id":{"type":"string"},"end_time":{"description":"RFC3339 or YYYY-MM-DD","type":"string"},"interval":{"default":"1d","type":"string"},"start_time":{"description":"RFC3339 or YYYY-MM-DD","type":"string"}},"required":["account_id","start_time","end_time"],"type":"object"}}},"required":true},"responses":{"201":{"description":"Backtest session created"}},"security":[{"bearerAuth":[]}],"summary":"Create backtest session","tags":["Backtest"]}},"/backtest/{id}/run":{"post":{"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Backtest result"}},"security":[{"bearerAuth":[]}],"summary":"Run backtest to completion","tags":["Backtest"]}},"/brokers":{"get":{"responses":{"200":{"description":"Broker list"}},"security":[{"bearerAuth":[]}],"summary":"List supported brokers","tags":["Meta"]}},"/instruments":{"get":{"parameters":[{"in":"query","name":"q","schema":{"type":"string"}},{"in":"query","name":"broker","schema":{"type":"string"}}],"responses":{"200":{"description":"Instrument list"}},"security":[{"bearerAuth":[]}],"summary":"Search instruments","tags":["Meta"]}},"/mcp":{"post":{"description":"JSON-RPC 2.0 endpoint implementing the Model Context Protocol. Supports initialize, tools/list, tools/call. Tools: list_accounts, create_account, place_order, cancel_order, get_portfolio, create_backtest, run_backtest.","requestBody":{"content":{"application/json":{"schema":{"properties":{"id":{"type":"integer"},"jsonrpc":{"enum":["2.0"],"type":"string"},"method":{"enum":["initialize","tools/list","tools/call","ping"],"type":"string"},"params":{"type":"object"}},"required":["jsonrpc","method"],"type":"object"}}},"required":true},"responses":{"200":{"description":"JSON-RPC 2.0 response"}},"security":[{"bearerAuth":[]}],"summary":"MCP server (Model Context Protocol)","tags":["MCP"]}},"/me/api-keys":{"get":{"responses":{"200":{"description":"Keys list"}},"security":[{"bearerAuth":[]}],"summary":"List API keys for the current user","tags":["Auth"]},"post":{"requestBody":{"content":{"application/json":{"schema":{"properties":{"label":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"201":{"description":"Created key (key value shown once)"}},"security":[{"bearerAuth":[]}],"summary":"Create API key","tags":["Auth"]}},"/me/api-keys/{id}":{"delete":{"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Revoked"}},"security":[{"bearerAuth":[]}],"summary":"Revoke API key","tags":["Auth"]}},"/prices":{"post":{"requestBody":{"content":{"application/json":{"schema":{"properties":{"price":{"type":"number"},"symbol":{"type":"string"}},"required":["symbol","price"],"type":"object"}}},"required":true},"responses":{"200":{"description":"Price updated"}},"security":[{"bearerAuth":[]}],"summary":"Update price for a single symbol","tags":["Prices"]}},"/prices/bulk":{"post":{"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":{"type":"number"},"description":"Map of symbol → price","example":{"AAPL":195.5,"TSLA":250},"type":"object"}}},"required":true},"responses":{"200":{"description":"Prices updated"}},"security":[{"bearerAuth":[]}],"summary":"Bulk update prices","tags":["Prices"]}}},"security":[{"bearerAuth":[]}],"servers":[{"description":"Production","url":"https://simulator.dailytickers.com/api/{workspace}","variables":{"workspace":{"default":"default","description":"Workspace slug"}}}]}
