{"service":"MT5 Drawdown API","swagger_ui":"/api/docs","redoc":"/api/redoc","openapi_json":"/api/openapi.json","endpoints":{"chart":"GET /api/chart/{account_login}?token=...","equity_timeline_csv":"GET /api/equity-timeline/{login}?csv_from_msc=&csv_to_msc= or csv_from_utc=&csv_to_utc= (UTC strings e.g. 2026-02-25 16:06:54.980 …)","drawdown_summary":"GET /api/drawdown-summary/{account_login}?token=...","drawdown_summary_peek":"GET /api/drawdown-summary/{account_login}/peek — cached drawdown overview only; no full replay engine run","positions":"POST /api/positions — JSON body: {account_login, token}","deals":"POST /api/deals — JSON body: {account_login, token, limit_rows?}; flat deal rows from timebase (newest first)","less_than_minute_profits":"POST /api/less_than_minute_profits — {account_login, token, max_duration_seconds?}","sap":"POST /api/sap — JSON body: {account_login, token, time_seconds}","hedge":"POST /api/hedge — same body as sap; opposite-side pairs (BUY↔SELL)","hedge_by_account":"POST /api/hedge-by-account — like sap-by-account + similarity_percent; hedge matching","cid":"POST /api/cid — JSON body: {account_login, token}; journal CID overlap from user_logs","accounts_analysis":"GET /api/accounts/analysis?login=MT5_LOGIN (Bearer JWT or API token query)","accounts_users_by_logins":"POST /api/accounts/users-by-logins — {logins, fields} e.g. fields=Login,Group; MT5 UserRequestByLoginsNumPy","accounts_plugin_status":"GET /api/accounts/plugin-status?login=MT5_LOGIN — plugin accounts row + drawdown breach flags (active | drawdown_breached | inactive)","accounts_equity_chart":"POST /api/accounts/equity-chart — Owlex chart {meta, overallDrawdownLimit, seriesCompression: gzip+json-1, seriesData: base64(gzip(JSON series)))}","ticks_history":"POST /api/ticks/history — {symbol, from_utc, to_utc}; MT5 bid/ask ticks (Bearer API token)","accounts_owlex_info":"POST /api/accounts/profit-limit-80/analyze — 80% profit limit detection (read-only); POST /api/accounts/owlex-info — proxy to lastprop account rules (body: token, account_login)","auth_login":"POST /api/auth/login — {email, password}; responds with interim_access_token + auth_step=require_totp_enrollment|require_totp_code until TOTP complete; then GET /api/auth/2fa/setup + POST enrollment/finish, or POST auth/2fa/login/verify","auth_refresh":"POST /api/auth/refresh — Bearer JWT; returns new access_token + user.permissions from DB (session sync after permission changes)","dashboard_market_stats":"POST /api/dashboard/market-stats — optional {groups?, symbols?}; JWT or API token; aggregate open positions by group/symbol (MT5 PositionRequestByGroup)","trading_groups":"GET /api/trading-groups?token= — optional query token if no Bearer JWT; returns MT5 group path list (MARKET_STATS_GROUPS_JSON defaults)","change_group":"POST /api/change-group — Owlex Provider parity: {account_login, new_group, token}","change_balance":"POST /api/change-balance — deposit (+amount) or withdrawal (−amount) with comment: {account_login, amount, comment, token}","change_password":"POST /api/change-password — change main or investor MT5 password: {account_login, password, password_type, token}","init_plugin":"POST /api/init-plugin — Provider parity: register/update plugin accounts row; {account_login, daily_drawdown_pct, total_drawdown_pct, token, initial_balance?, d4_pct?, td3_pct?, profit_target_pct?}","cancel_plugin":"POST /api/cancel-plugin — Provider parity: {account_login, token}"}}