{"openapi":"3.1.0","info":{"title":"Phoenix Quant | Algorithmic Trading & Fintech Infrastructure","description":"Backend Services, DhanHQ Broker Integrations & Multi-Account Copy-Trading Engine (api.phoenixquant.in)","version":"3.0.0"},"paths":{"/api/status":{"get":{"summary":"Get Status","description":"Get engine status, mode, live execution state, and broker configuration.","operationId":"get_status_api_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/spot":{"get":{"summary":"Get Spot Data","description":"Get real-time spot price, day change, and OHLC data for index.","operationId":"get_spot_data_api_spot_get","parameters":[{"name":"underlying","in":"query","required":false,"schema":{"type":"string","default":"NIFTY","title":"Underlying"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/live/toggle":{"post":{"summary":"Toggle Live Trading","description":"Dynamically toggle or set real Dhan live trading execution.","operationId":"toggle_live_trading_api_live_toggle_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LiveToggle"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/live/status":{"get":{"summary":"Get Live Status","description":"Get dedicated status of Dhan broker, funds, live trading switch, and live positions protection.","operationId":"get_live_status_api_live_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/live/funds":{"get":{"summary":"Get Live Funds","description":"Get live Dhan funds and available margin.","operationId":"get_live_funds_api_live_funds_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/live/positions":{"get":{"summary":"Get Live Open Positions","description":"Get all open LIVE positions.","operationId":"get_live_open_positions_api_live_positions_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/live/positions/closed":{"get":{"summary":"Get Live Closed Positions","description":"Get all closed LIVE positions history.","operationId":"get_live_closed_positions_api_live_positions_closed_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/live/orders":{"get":{"summary":"Get Live Orders","description":"Get today's live Dhan orders including placed, filled, and rejected attempts from DhanHQ API and database.","operationId":"get_live_orders_api_live_orders_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/live/pnl":{"get":{"summary":"Get Live Pnl","description":"Get LIVE trading P&L summary strictly from Dhan broker API when live mode is active.","operationId":"get_live_pnl_api_live_pnl_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/live/square-off":{"post":{"summary":"Square Off Live Only","description":"Emergency square-off ONLY for live Dhan positions.","operationId":"square_off_live_only_api_live_square_off_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/positions":{"get":{"summary":"Get Positions","description":"Get all open positions with live P&L (default: PAPER).","operationId":"get_positions_api_positions_get","parameters":[{"name":"mode","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"default":"PAPER","title":"Mode"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/positions/closed":{"get":{"summary":"Get Closed Positions","description":"Get closed positions history from database (default: PAPER).","operationId":"get_closed_positions_api_positions_closed_get","parameters":[{"name":"mode","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"default":"PAPER","title":"Mode"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/positions/{pos_id}/close":{"post":{"summary":"Close Single Position","description":"Close a specific open position manually.","operationId":"close_single_position_api_positions__pos_id__close_post","parameters":[{"name":"pos_id","in":"path","required":true,"schema":{"type":"string","title":"Pos Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/orders":{"get":{"summary":"Get Orders","description":"Get today's order book (default: PAPER), merging memory and database.","operationId":"get_orders_api_orders_get","parameters":[{"name":"mode","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"default":"PAPER","title":"Mode"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/pnl":{"get":{"summary":"Get Pnl","description":"Get today's and yesterday's P&L summary (default: PAPER).","operationId":"get_pnl_api_pnl_get","parameters":[{"name":"mode","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"default":"PAPER","title":"Mode"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/journal/trades":{"get":{"summary":"Get Trade Journal","description":"Get comprehensive trade journal with rich filtering for review and backtest analysis.","operationId":"get_trade_journal_api_journal_trades_get","parameters":[{"name":"from_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"From Date"}},{"name":"to_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"To Date"}},{"name":"mode","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"default":"ALL","title":"Mode"}},{"name":"level","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"default":"ALL","title":"Level"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"default":"ALL","title":"Status"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":5000,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/journal":{"get":{"summary":"Get Trade Journal","description":"Get comprehensive trade journal with rich filtering for review and backtest analysis.","operationId":"get_trade_journal_api_journal_get","parameters":[{"name":"from_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"From Date"}},{"name":"to_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"To Date"}},{"name":"mode","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"default":"ALL","title":"Mode"}},{"name":"level","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"default":"ALL","title":"Level"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"default":"ALL","title":"Status"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":5000,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/journal/positions":{"get":{"summary":"Get Journal Positions","description":"Get all closed positions recorded in journal.","operationId":"get_journal_positions_api_journal_positions_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":5000,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/journal/export":{"get":{"summary":"Export Journal Csv","description":"Export trade journal to CSV file for backtesting and record keeping with optional date/level/mode/status filters.","operationId":"export_journal_csv_api_journal_export_get","parameters":[{"name":"from_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"From Date"}},{"name":"to_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"To Date"}},{"name":"mode","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"default":"ALL","title":"Mode"}},{"name":"level","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"default":"ALL","title":"Level"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"default":"ALL","title":"Status"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/analytics/backtest":{"get":{"summary":"Get Backtest Analytics","description":"Get comprehensive historical backtest analytics matching the reference layout:\n- Summary KPIs (Net Realized P&L, Win Rate, Profit Factor, Max Drawdown)\n- Strategy Lock Level Breakdown Cards (L1, L2, L3, L4, L5 P&L and Win Rate)\n- Daily Calendar Performance table\n- Historical Trade Logs table","operationId":"get_backtest_analytics_api_analytics_backtest_get","parameters":[{"name":"from_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"From Date"}},{"name":"to_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"To Date"}},{"name":"level","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"default":"ALL","title":"Level"}},{"name":"mode","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"default":"ALL","title":"Mode"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/history/daily":{"get":{"summary":"Get Daily Performance","description":"Get historical daily performance breakdown in the format:\nDate | Realized ₹ | Max Touched | Low Touched | Net P&L | Trades | Win %","operationId":"get_daily_performance_api_history_daily_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/pnl/history":{"get":{"summary":"Get Pnl History","description":"Get historical daily P&L.","operationId":"get_pnl_history_api_pnl_history_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/funds":{"get":{"summary":"Get Funds","description":"Get available funds/margin.","operationId":"get_funds_api_funds_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/strikes":{"get":{"summary":"Get Strikes","description":"Get currently monitored option strikes.","operationId":"get_strikes_api_strikes_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/lock-levels":{"get":{"summary":"Get Lock Levels","description":"Get strategy lock levels configuration.","operationId":"get_lock_levels_api_lock_levels_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/strategy/controls":{"get":{"summary":"Get Strategy Controls","description":"Get VWAP filter status, live spot/VWAP metrics, and all lock levels with their daily enabled/disabled status.","operationId":"get_strategy_controls_api_strategy_controls_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/strategy/toggle-vwap":{"post":{"summary":"Toggle Vwap Filter","description":"Toggle or set master VWAP filter state.","operationId":"toggle_vwap_filter_api_strategy_toggle_vwap_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ToggleVwapRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/strategy/toggle-level":{"post":{"summary":"Toggle Lock Level","description":"Toggle or set enabled state for a specific lock level for today.","operationId":"toggle_lock_level_api_strategy_toggle_level_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ToggleLevelRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/signals":{"get":{"summary":"Get Signals","description":"Get recent strategy signals.","operationId":"get_signals_api_signals_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/risk":{"get":{"summary":"Get Risk Status","description":"Get current risk management status.","operationId":"get_risk_status_api_risk_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/engine/start":{"post":{"summary":"Start Engine","description":"Start the trading engine.","operationId":"start_engine_api_engine_start_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/engine/stop":{"post":{"summary":"Stop Engine","description":"Stop the trading engine.","operationId":"stop_engine_api_engine_stop_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/mode":{"post":{"summary":"Switch Mode","description":"Switch between paper and live trading mode with settings persistence.","operationId":"switch_mode_api_mode_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ModeSwitch"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/square-off":{"post":{"summary":"Square Off All","description":"Emergency square-off all open positions.","operationId":"square_off_all_api_square_off_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/summary":{"get":{"summary":"Get Summary","description":"Get complete KPI summary for dashboard cards and header.","operationId":"get_summary_api_summary_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/pnl-curve":{"get":{"summary":"Get Pnl Curve","description":"Get intraday PnL curve points.","operationId":"get_pnl_curve_api_pnl_curve_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/health":{"get":{"summary":"Get Health Status","description":"Get comprehensive system health, service metrics, and telemetry.","operationId":"get_health_status_api_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/engine/exit-and-stop":{"post":{"summary":"Exit And Stop","description":"Emergency square off all positions and halt engine.","operationId":"exit_and_stop_api_engine_exit_and_stop_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/overview":{"get":{"summary":"Get Overview Data","description":"Get aggregated overview data answering:\n1. What is happening in live broker?\n2. How is paper trading performing?\n3. Why are their results different?","operationId":"get_overview_data_api_overview_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/comparison/live-vs-paper":{"get":{"summary":"Get Live Vs Paper Comparison","description":"Get detailed trade-by-trade and metric attribution comparison between Live and Paper executions,\nwith date-wise filtering, precise timestamps, and status metrics.","operationId":"get_live_vs_paper_comparison_api_comparison_live_vs_paper_get","parameters":[{"name":"date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/broker/activity":{"get":{"summary":"Get Broker Activity Log","description":"Get full broker activity, connectivity telemetry, and audit trail.","operationId":"get_broker_activity_log_api_broker_activity_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/backtests":{"get":{"summary":"Get Backtest Datasets","description":"Get backtest dataset summaries and historical runs from database.","operationId":"get_backtest_datasets_api_backtests_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/integrations/config":{"get":{"summary":"Get Integrations Config","description":"Fetch current DhanHQ credentials, lot size, and test live connection status.","operationId":"get_integrations_config_api_integrations_config_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/integrations/save":{"post":{"summary":"Save Integrations Config","description":"Save updated DhanHQ access token, client ID, and lot size. Updates .env and reloads broker.","operationId":"save_integrations_config_api_integrations_save_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IntegrationsConfig"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/child/register":{"post":{"tags":["Child Portal"],"summary":"Register Child Account Endpoint","description":"Register a new child account (from Master Dashboard or Child Portal).\nIf a Dhan token is supplied, it is verified against DhanHQ OpenAPI and funds are synchronized.","operationId":"register_child_account_endpoint_api_child_register_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChildRegisterRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/child/auth/login":{"post":{"tags":["Child Portal"],"summary":"Child Login","description":"Authenticate child user via Client ID and PIN.\nIf the account does not exist yet (e.g. initial demo access), provisions default profile.","operationId":"child_login_api_child_auth_login_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChildLoginRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/child/dhan/verify":{"post":{"tags":["Child Portal"],"summary":"Verify And Connect Dhan","description":"Verify child's Dhan Access Token against Dhan OpenAPI and update account connection status.","operationId":"verify_and_connect_dhan_api_child_dhan_verify_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChildTokenVerifyRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/child/settings/toggle-copy":{"post":{"tags":["Child Portal"],"summary":"Toggle Child Copy","description":"Toggle personal copy trading state (ACTIVE vs PAUSED).\nWhen paused, no new orders are copied to this child account.","operationId":"toggle_child_copy_api_child_settings_toggle_copy_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChildToggleCopyRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/child/dashboard/{client_id}":{"get":{"tags":["Child Portal"],"summary":"Get Child Dashboard","description":"Fetch comprehensive dashboard metrics for a specific child account.","operationId":"get_child_dashboard_api_child_dashboard__client_id__get","parameters":[{"name":"client_id","in":"path","required":true,"schema":{"type":"string","title":"Client Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/child/accounts":{"get":{"tags":["Child Portal"],"summary":"Get All Child Accounts","description":"Get all registered child accounts (used by Master Fleet management console).","operationId":"get_all_child_accounts_api_child_accounts_get","parameters":[{"name":"only_active","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Only Active"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/child/fleet/summary":{"get":{"tags":["Child Portal"],"summary":"Get Fleet Summary","description":"Get aggregated fleet KPIs and status for Master Fleet Management.","operationId":"get_fleet_summary_api_child_fleet_summary_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/child/fleet/toggle-master":{"post":{"tags":["Child Portal"],"summary":"Toggle Child Master","description":"Master override to pause or resume an individual child account.","operationId":"toggle_child_master_api_child_fleet_toggle_master_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FleetToggleMasterRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/child/fleet/toggle-all":{"post":{"tags":["Child Portal"],"summary":"Toggle All Fleet","description":"Master action to pause or resume ALL child accounts at once.","operationId":"toggle_all_fleet_api_child_fleet_toggle_all_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FleetToggleAllRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/child/fleet/refresh-margins":{"post":{"tags":["Child Portal"],"summary":"Refresh All Margins","description":"Refresh Dhan margins for all connected child accounts.","operationId":"refresh_all_margins_api_child_fleet_refresh_margins_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/child/accounts/{client_id}":{"delete":{"tags":["Child Portal"],"summary":"Delete Child Account Endpoint","description":"Permanently delete a child account and all associated copy records.\nInvalidates any cached DhanHQ client session.","operationId":"delete_child_account_endpoint_api_child_accounts__client_id__delete","parameters":[{"name":"client_id","in":"path","required":true,"schema":{"type":"string","title":"Client Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/child/fanout/simulate":{"post":{"tags":["Child Portal"],"summary":"Simulate Order Fanout","description":"Simulate parallel order fan-out across all child accounts.\nTests concurrency, dedicated static IP attribution, pre-trade margin verification, and telemetry.","operationId":"simulate_order_fanout_api_child_fanout_simulate_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FanOutSimulateRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/child/fanout/execute":{"post":{"tags":["Child Portal"],"summary":"Execute Order Fanout","description":"Execute real live (or specified mode) parallel order fan-out across all child accounts via Dhan OpenAPI.\nEnforces SEBI 1-to-1 dedicated static IP attribution and real token routing.","operationId":"execute_order_fanout_api_child_fanout_execute_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FanOutExecuteRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/child/fanout/history":{"get":{"tags":["Child Portal"],"summary":"Get Fanout History","description":"Get recent parallel order fan-out runs with performance KPIs.","operationId":"get_fanout_history_api_child_fanout_history_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/child/orders/{client_id}":{"get":{"tags":["Child Portal"],"summary":"Get Orders For Child","description":"Fetch order audit log for a specific child account, optionally filtered by mode (LIVE/SIMULATION).","operationId":"get_orders_for_child_api_child_orders__client_id__get","parameters":[{"name":"client_id","in":"path","required":true,"schema":{"type":"string","title":"Client Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}},{"name":"mode","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mode"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/child/positions/{client_id}":{"get":{"tags":["Child Portal"],"summary":"Get Positions For Child","description":"Fetch open/closed positions for a specific child account, optionally filtered by status and mode.","operationId":"get_positions_for_child_api_child_positions__client_id__get","parameters":[{"name":"client_id","in":"path","required":true,"schema":{"type":"string","title":"Client Id"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"mode","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mode"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/child/fleet/auto-copy":{"get":{"tags":["Child Portal"],"summary":"Get Fleet Auto Copy Status","description":"Get current automated copy trading master switch status.","operationId":"get_fleet_auto_copy_status_api_child_fleet_auto_copy_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"post":{"tags":["Child Portal"],"summary":"Toggle Fleet Auto Copy","description":"Toggle automated replication of master signals and exits to the child fleet.","operationId":"toggle_fleet_auto_copy_api_child_fleet_auto_copy_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FleetAutoCopyRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/child/fleet/kill-switch":{"post":{"tags":["Child Portal"],"summary":"Execute Fleet Kill Switch Route","description":"Emergency Fleet Kill Switch (Phase 8):\nImmediately disarms auto-copy, cancels pending orders across Dhan, squares off all child positions,\nand pauses all child accounts in database.","operationId":"execute_fleet_kill_switch_route_api_child_fleet_kill_switch_post","requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/KillSwitchRequest"},{"type":"null"}],"title":"Req"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/child/fleet/square-off":{"post":{"tags":["Child Portal"],"summary":"Emergency Square Off Fleet","description":"Emergency Square-Off all open positions across the entire child fleet.\nTriggers complete kill switch safety protocol.","operationId":"emergency_square_off_fleet_api_child_fleet_square_off_post","requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/KillSwitchRequest"},{"type":"null"}],"title":"Req"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/child/tokens/health":{"get":{"tags":["Child Portal"],"summary":"Get Tokens Health","description":"Get real-time token health status across all child accounts.\nReturns TTL countdowns, warning states, and system health status.","operationId":"get_tokens_health_api_child_tokens_health_get","parameters":[{"name":"verify_live","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Verify Live"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/child/tokens/health/{client_id}":{"get":{"tags":["Child Portal"],"summary":"Get Single Token Health","description":"Get token health metrics for a specific child account.","operationId":"get_single_token_health_api_child_tokens_health__client_id__get","parameters":[{"name":"client_id","in":"path","required":true,"schema":{"type":"string","title":"Client Id"}},{"name":"verify_live","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Verify Live"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/child/tokens/check-now":{"post":{"tags":["Child Portal"],"summary":"Run Token Heartbeat Check","description":"Force an immediate heartbeat check cycle across all child accounts.","operationId":"run_token_heartbeat_check_api_child_tokens_check_now_post","requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/TokenCheckNowRequest"},{"type":"null"}],"title":"Req"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/child/tokens/renew":{"post":{"tags":["Child Portal"],"summary":"Renew Child Token","description":"1-Click token renewal endpoint.\nVerifies new Dhan access token against Dhan OpenAPI, resets 24-hour TTL,\nupdates live margin, and broadcasts renewal event.","operationId":"renew_child_token_api_child_tokens_renew_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenRenewRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/child/tokens/alerts":{"get":{"tags":["Child Portal"],"summary":"Get Token Alerts","description":"Fetch recent token expiration and warning alerts.","operationId":"get_token_alerts_api_child_tokens_alerts_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/child/egress/status":{"get":{"tags":["Child Portal"],"summary":"Get Egress Status","description":"Get fleet-wide egress routing configuration, active mode, registered proxy gateways,\nand latest verification statuses for all child accounts.","operationId":"get_egress_status_api_child_egress_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/child/egress/status/{client_id}":{"get":{"tags":["Child Portal"],"summary":"Get Single Egress Status","description":"Get resolved egress route and latest verification result for an individual child account.","operationId":"get_single_egress_status_api_child_egress_status__client_id__get","parameters":[{"name":"client_id","in":"path","required":true,"schema":{"type":"string","title":"Client Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/child/egress/verify":{"post":{"tags":["Child Portal"],"summary":"Verify Egress Ips","description":"Run active outbound egress IP verification probe across fleet or for a single child account.\nValidates that outgoing traffic strictly departs from registered dedicated static IPs.","operationId":"verify_egress_ips_api_child_egress_verify_post","requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/EgressVerifyRequest"},{"type":"null"}],"title":"Req"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/child/egress/configure":{"post":{"tags":["Child Portal"],"summary":"Configure Proxy Route","description":"Configure or update a dedicated proxy URL for a specific child account or static IP.","operationId":"configure_proxy_route_api_child_egress_configure_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EgressConfigureRouteRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/child/egress/settings":{"post":{"tags":["Child Portal"],"summary":"Update Egress Settings","description":"Update EgressProxyRouter mode (DIRECT, PROXY_POOL, SOURCE_BIND) and SEBI verification enforcement.","operationId":"update_egress_settings_api_child_egress_settings_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EgressSettingsRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/child/circuit-breaker/status":{"get":{"tags":["Child Portal"],"summary":"Get Circuit Breaker Status","description":"Retrieve real-time circuit breaker status and drawdown utilization across all child accounts and fleet.","operationId":"get_circuit_breaker_status_api_child_circuit_breaker_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/child/circuit-breaker/reset":{"post":{"tags":["Child Portal"],"summary":"Reset Circuit Breaker Endpoint","description":"Manually reset tripped circuit breaker status for a specific client or the entire fleet.","operationId":"reset_circuit_breaker_endpoint_api_child_circuit_breaker_reset_post","requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CircuitBreakerResetRequest"},{"type":"null"}],"title":"Req"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/child/circuit-breaker/settings":{"post":{"tags":["Child Portal"],"summary":"Update Circuit Breaker Settings","description":"Update circuit breaker maximum daily loss thresholds for fleet or individual client.","operationId":"update_circuit_breaker_settings_api_child_circuit_breaker_settings_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CircuitBreakerSettingsRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/child/circuit-breaker/check":{"post":{"tags":["Child Portal"],"summary":"Evaluate Circuit Breakers Now","description":"Manually trigger evaluation of all circuit breakers across the child fleet.","operationId":"evaluate_circuit_breakers_now_api_child_circuit_breaker_check_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/child/simulation/run":{"post":{"tags":["Child Portal"],"summary":"Run Simulation Battery","description":"Launch comprehensive pre-production simulation battery or scenario.\nValidates end-to-end order lifecycle, SEBI IP attribution, token health, circuit breakers, and kill switch.","operationId":"run_simulation_battery_api_child_simulation_run_post","requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/SimulationRunRequest"},{"type":"null"}],"title":"Req"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/child/simulation/status":{"get":{"tags":["Child Portal"],"summary":"Get Simulation Status","description":"Get live progress, current scenario step, and recent streaming logs of the simulator.","operationId":"get_simulation_status_api_child_simulation_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/child/simulation/report":{"get":{"tags":["Child Portal"],"summary":"Get Simulation Report","description":"Fetch the complete audit and regulatory compliance readiness report of the latest dry run.","operationId":"get_simulation_report_api_child_simulation_report_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/child/simulation/benchmark":{"post":{"tags":["Child Portal"],"summary":"Run Benchmark Endpoint","description":"Execute high-concurrency stress test and latency benchmark across 50 child accounts.","operationId":"run_benchmark_endpoint_api_child_simulation_benchmark_post","requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/BenchmarkRunRequest"},{"type":"null"}],"title":"Req"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/strategy-lab/dates":{"get":{"summary":"Get Available Dates","description":"Get all distinct trading dates available in the database with trade summary, including today live.","operationId":"get_available_dates_api_strategy_lab_dates_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/strategy-lab/simulate":{"post":{"summary":"Run Simulation","description":"Run isolated simulation across all 4 scenarios plus custom sandbox.","operationId":"run_simulation_api_strategy_lab_simulate_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SimulationRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/strategy-lab/export":{"get":{"summary":"Export Scenario Csv","description":"Export trade-by-trade scenario simulation results to CSV.","operationId":"export_scenario_csv_api_strategy_lab_export_get","parameters":[{"name":"scenario_id","in":"query","required":false,"schema":{"type":"string","default":"vwap_no_223","title":"Scenario Id"}},{"name":"selected_date","in":"query","required":false,"schema":{"type":"string","default":"ALL","title":"Selected Date"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/site":{"get":{"summary":"Get Corporate Site","operationId":"get_corporate_site_site_get","responses":{"200":{"description":"Successful Response"}}}},"/app":{"get":{"summary":"Get App Portal","operationId":"get_app_portal_app_get","responses":{"200":{"description":"Successful Response"}}}},"/api-hub":{"get":{"summary":"Get Api Hub","operationId":"get_api_hub_api_hub_get","responses":{"200":{"description":"Successful Response"}}}},"/status":{"get":{"summary":"Get Status Page","operationId":"get_status_page_status_get","responses":{"200":{"description":"Successful Response"}}}},"/dashboard":{"get":{"summary":"Get Dashboard","operationId":"get_dashboard_dashboard_get","responses":{"200":{"description":"Successful Response"}}}},"/":{"get":{"summary":"Get Root","operationId":"get_root__get","responses":{"200":{"description":"Successful Response"}}}}},"components":{"schemas":{"BenchmarkRunRequest":{"properties":{"fleet_size":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Fleet Size","default":50}},"type":"object","title":"BenchmarkRunRequest"},"ChildLoginRequest":{"properties":{"client_id":{"type":"string","title":"Client Id","description":"Dhan Client ID or registered account ID"},"pin":{"type":"string","title":"Pin","description":"Security PIN"}},"type":"object","required":["client_id","pin"],"title":"ChildLoginRequest"},"ChildRegisterRequest":{"properties":{"client_id":{"type":"string","title":"Client Id","description":"Unique client identifier or Dhan Client ID"},"account_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Account Name","description":"Account holder name"},"pin":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pin","description":"4-digit Security PIN for portal login","default":"1234"},"dhan_client_id":{"type":"string","title":"Dhan Client Id","description":"Dhan Client ID"},"access_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Access Token","description":"Optional Dhan 24-hr Access Token"},"lot_multiplier":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Lot Multiplier","description":"Lot multiplier (1x, 2x, etc.)","default":1},"max_daily_loss":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Daily Loss","description":"Max daily loss circuit breaker threshold","default":5000.0},"dedicated_static_ip":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Dedicated Static Ip","description":"Optional assigned static IP"}},"type":"object","required":["client_id","dhan_client_id"],"title":"ChildRegisterRequest"},"ChildToggleCopyRequest":{"properties":{"client_id":{"type":"string","title":"Client Id","description":"Child account identifier"},"is_active":{"type":"boolean","title":"Is Active","description":"True to activate copy trading, False to pause"}},"type":"object","required":["client_id","is_active"],"title":"ChildToggleCopyRequest"},"ChildTokenVerifyRequest":{"properties":{"client_id":{"type":"string","title":"Client Id","description":"Child account identifier"},"dhan_client_id":{"type":"string","title":"Dhan Client Id","description":"Dhan Client ID"},"access_token":{"type":"string","title":"Access Token","description":"24-hour Dhan Access Token (JWT)"}},"type":"object","required":["client_id","dhan_client_id","access_token"],"title":"ChildTokenVerifyRequest"},"CircuitBreakerResetRequest":{"properties":{"client_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Client Id"}},"type":"object","title":"CircuitBreakerResetRequest"},"CircuitBreakerSettingsRequest":{"properties":{"fleet_max_daily_loss":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Fleet Max Daily Loss"},"client_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Client Id"},"max_daily_loss":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Daily Loss"},"warning_threshold_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Warning Threshold Pct"},"auto_exit_on_trip":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Auto Exit On Trip"}},"type":"object","title":"CircuitBreakerSettingsRequest"},"EgressConfigureRouteRequest":{"properties":{"client_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Client Id","description":"Child account client ID"},"static_ip":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Static Ip","description":"Dedicated Static IP"},"proxy_url":{"type":"string","title":"Proxy Url","description":"Proxy URL (e.g. http://proxy-node-104:3128)"}},"type":"object","required":["proxy_url"],"title":"EgressConfigureRouteRequest"},"EgressSettingsRequest":{"properties":{"mode":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mode","description":"Egress mode: DIRECT, PROXY_POOL, SOURCE_BIND"},"enforce_verification":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enforce Verification","description":"Whether to enforce SEBI verification before live trades"}},"type":"object","title":"EgressSettingsRequest"},"EgressVerifyRequest":{"properties":{"client_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Client Id","description":"Optional single client ID to verify"}},"type":"object","title":"EgressVerifyRequest"},"FanOutExecuteRequest":{"properties":{"symbol":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Symbol","default":"NIFTY2026-10-0622750PE"},"security_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Security Id","default":"40714"},"underlying":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Underlying","default":"NIFTY"},"option_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Option Type","default":"PE"},"strike_price":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Strike Price","default":22750.0},"side":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Side","default":"BUY"},"order_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Order Type","default":"LIMIT"},"price":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Price","default":73.6},"target_price":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Target Price","default":173.6},"sl_price":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Sl Price","default":61.6},"base_lot_size":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Base Lot Size","default":65},"mode":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mode","default":"LIVE"}},"type":"object","title":"FanOutExecuteRequest"},"FanOutSimulateRequest":{"properties":{"symbol":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Symbol","default":"NIFTY2026-10-0622750PE"},"security_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Security Id","default":"40714"},"underlying":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Underlying","default":"NIFTY"},"option_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Option Type","default":"PE"},"strike_price":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Strike Price","default":22750.0},"side":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Side","default":"BUY"},"order_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Order Type","default":"LIMIT"},"price":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Price","default":73.6},"target_price":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Target Price","default":173.6},"sl_price":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Sl Price","default":61.6},"base_lot_size":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Base Lot Size","default":65},"mode":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mode","default":"SIMULATION"}},"type":"object","title":"FanOutSimulateRequest"},"FleetAutoCopyRequest":{"properties":{"is_fleet_copy_enabled":{"type":"boolean","title":"Is Fleet Copy Enabled"}},"type":"object","required":["is_fleet_copy_enabled"],"title":"FleetAutoCopyRequest"},"FleetToggleAllRequest":{"properties":{"is_active":{"type":"boolean","title":"Is Active"}},"type":"object","required":["is_active"],"title":"FleetToggleAllRequest"},"FleetToggleMasterRequest":{"properties":{"client_id":{"type":"string","title":"Client Id"},"is_active":{"type":"boolean","title":"Is Active"}},"type":"object","required":["client_id","is_active"],"title":"FleetToggleMasterRequest"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"IntegrationsConfig":{"properties":{"client_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Client Id"},"access_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Access Token"},"lot_size":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Lot Size","default":65}},"type":"object","title":"IntegrationsConfig"},"KillSwitchRequest":{"properties":{"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason","default":"MANUAL_PANIC_BUTTON"},"cancel_orders":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Cancel Orders","default":true},"square_off_positions":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Square Off Positions","default":true},"pause_fleet":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Pause Fleet","default":true}},"type":"object","title":"KillSwitchRequest"},"LiveToggle":{"properties":{"enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enabled"}},"type":"object","title":"LiveToggle"},"ModeSwitch":{"properties":{"mode":{"type":"string","title":"Mode"}},"type":"object","required":["mode"],"title":"ModeSwitch"},"SimulationRequest":{"properties":{"selected_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Selected Date","default":"ALL"},"from_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"From Date"},"to_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"To Date"},"custom_config":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Custom Config"}},"type":"object","title":"SimulationRequest"},"SimulationRunRequest":{"properties":{"scenario":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Scenario","default":"FULL"},"fleet_size":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Fleet Size","default":10}},"type":"object","title":"SimulationRunRequest"},"ToggleLevelRequest":{"properties":{"entry_price":{"type":"number","title":"Entry Price"},"enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enabled"}},"type":"object","required":["entry_price"],"title":"ToggleLevelRequest"},"ToggleVwapRequest":{"properties":{"enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enabled"}},"type":"object","title":"ToggleVwapRequest"},"TokenCheckNowRequest":{"properties":{"verify_live":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Verify Live","description":"Whether to ping Dhan OpenAPI directly","default":false}},"type":"object","title":"TokenCheckNowRequest"},"TokenRenewRequest":{"properties":{"client_id":{"type":"string","title":"Client Id","description":"Child account identifier"},"access_token":{"type":"string","title":"Access Token","description":"New 24-hour Dhan Access Token (JWT)"},"dhan_client_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Dhan Client Id","description":"Optional Dhan Client ID"}},"type":"object","required":["client_id","access_token"],"title":"TokenRenewRequest"},"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"}}}}