{"env":"stage","dry_run":false,"endpoints":{"/trades":"Completed trades with PnL and max drawdown (?symbol=BTC/USD&limit=50)","/analytics":"Trade analytics: win rate, profit factor, drawdown, timing, SL/TSL analysis (?symbol=BTC/USD)","/distances":"Entry distance from current price for all active signals, with per-timeframe stats","/instruments":"Bybit instrument info for active symbols (?symbol=HYPEUSDT)","/sync":"Trigger sync cycle","/summary":"Account summary: equity, positions, orders, active signals","/status":"Raw Bybit data: balances, positions, open orders (all accounts)","/signals":"Active signals (?tf=1h)","/orders":"DB orders (?status=open|placed|filled|cancelled|all&limit=50)","/config":"Current trading config","/logs":"Application log (?limit=50&action=order_placed&account=main)","/cancel/orders?confirm=yes":"Cancel all open orders","/cancel/positions?confirm=yes":"Close all positions at market","/cancel/all?confirm=yes":"Cancel all orders + close all positions","/balance-history":"Equity snapshots with PnL + funding sanity check (?from=2025-04-01&to=2025-04-03&account=main&limit=1440)","/funding-fees":"Live funding fees from Bybit transaction log (?hours=24)","/repair-trades":"Re-match trades vs Bybit closedPnl (?phase=orphans|incomplete&limit=10&offset=0 — paginated, response includes \"next\" link)","/recalc-excursions":"Recalculate excursion metrics + TSL sims for trades (?force=1&limit=12&offset=0 — paginate due to 50-subrequest cap)","/report/post-signal":"Positions that continued after signal invalidation (?tolerance_mins=5)","/report/entry-mismatch":"Signals where TapTrade entered but we haven't (?tf=15m)","/report/redraw-analysis":"Trade performance by TapTrade confirmation status at fill time (early vs confirmed entries)","/admin/cancel-order":"Mark a single DB order as cancelled (?id=123&confirm=yes&reason=...)","/admin/delete-trade":"Delete a single trade_results row (?id=123&confirm=yes)","/admin/set-balance":"Reset Bybit demo wallet balance (?account=<name>&target=100000&coin=USDT&confirm=yes; demo only). Account name comes from BYBIT_ACCOUNTS, or \"default\" for the BYBIT_API_KEY fallback.","/health":"Health check + environment + dry_run state"}}