{"openapi":"3.1.0","info":{"title":"MT5 Manager Service","description":"Account data and streaming for a Laravel client portal. **Interactive API:** [`/docs`](/docs) (Swagger) or [`/redoc`](/redoc). Markdown reference: see `API_REFERENCE.md` in the project repository.","version":"1.0.0"},"paths":{"/ping":{"get":{"summary":"Ping","operationId":"ping_ping_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/":{"get":{"summary":"Root","operationId":"root__get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/api/v1/accounts/ping":{"get":{"tags":["accounts"],"summary":"Ping No Auth","description":"No auth. Confirms this is the MT5 Python service.","operationId":"ping_no_auth_api_v1_accounts_ping_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/accounts/auth-check":{"get":{"tags":["accounts"],"summary":"Auth Check","description":"Confirm you are hitting this Python service. Returns service name and mt5_login from token.","operationId":"auth_check_api_v1_accounts_auth_check_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Auth Check Api V1 Accounts Auth Check Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/accounts/{login}/profile":{"get":{"tags":["accounts"],"summary":"Account Profile","description":"MTUser fields for this login (client JWT or admin).","operationId":"account_profile_api_v1_accounts__login__profile_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"login","in":"path","required":true,"schema":{"type":"integer","title":"Login"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountProfile"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/accounts/{login}/snapshot":{"get":{"tags":["accounts"],"summary":"Account Snapshot","operationId":"account_snapshot_api_v1_accounts__login__snapshot_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"login","in":"path","required":true,"schema":{"type":"integer","title":"Login"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountSnapshot"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/accounts/{login}/positions":{"get":{"tags":["accounts"],"summary":"Account Positions","operationId":"account_positions_api_v1_accounts__login__positions_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"login","in":"path","required":true,"schema":{"type":"integer","title":"Login"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/OpenPosition"},"title":"Response Account Positions Api V1 Accounts  Login  Positions Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/accounts/{login}/orders/open":{"get":{"tags":["accounts"],"summary":"Account Orders Open","operationId":"account_orders_open_api_v1_accounts__login__orders_open_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"login","in":"path","required":true,"schema":{"type":"integer","title":"Login"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/OpenOrder"},"title":"Response Account Orders Open Api V1 Accounts  Login  Orders Open Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/accounts/{login}/activity/recent":{"get":{"tags":["accounts"],"summary":"Account Activity Recent","operationId":"account_activity_recent_api_v1_accounts__login__activity_recent_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"login","in":"path","required":true,"schema":{"type":"integer","title":"Login"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ActivityEvent"},"title":"Response Account Activity Recent Api V1 Accounts  Login  Activity Recent Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/accounts/{login}/deals":{"get":{"tags":["accounts"],"summary":"Account Deals","operationId":"account_deals_api_v1_accounts__login__deals_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"login","in":"path","required":true,"schema":{"type":"integer","title":"Login"}},{"name":"from_time","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"From (ISO datetime)","title":"From Time"},"description":"From (ISO datetime)"},{"name":"to_time","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"To (ISO datetime)","title":"To Time"},"description":"To (ISO datetime)"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Deal"},"title":"Response Account Deals Api V1 Accounts  Login  Deals Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/accounts/{login}/history":{"get":{"tags":["accounts"],"summary":"Account History","operationId":"account_history_api_v1_accounts__login__history_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"login","in":"path","required":true,"schema":{"type":"integer","title":"Login"}},{"name":"from_time","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"From (ISO datetime)","title":"From Time"},"description":"From (ISO datetime)"},{"name":"to_time","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"To (ISO datetime)","title":"To Time"},"description":"To (ISO datetime)"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Account History Api V1 Accounts  Login  History Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/bulk/group":{"post":{"tags":["admin-bulk"],"summary":"Bulk Group","description":"Set the same MT5 group for many logins (UserUpdate).","operationId":"bulk_group_api_v1_admin_bulk_group_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkGroupRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkOperationSummary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/admin/bulk/leverage":{"post":{"tags":["admin-bulk"],"summary":"Bulk Leverage","description":"Set the same leverage for many logins (UserUpdate).","operationId":"bulk_leverage_api_v1_admin_bulk_leverage_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkLeverageRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkOperationSummary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/admin/bulk/deposit":{"post":{"tags":["admin-bulk"],"summary":"Bulk Deposit","description":"Add funds via balance operation (DealerBalance, DEAL_BALANCE).","operationId":"bulk_deposit_api_v1_admin_bulk_deposit_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkBalanceRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkOperationSummary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/admin/bulk/withdraw":{"post":{"tags":["admin-bulk"],"summary":"Bulk Withdraw","description":"Remove funds from balance (DealerBalance with negative value).","operationId":"bulk_withdraw_api_v1_admin_bulk_withdraw_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkBalanceRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkOperationSummary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/admin/bulk/credit":{"post":{"tags":["admin-bulk"],"summary":"Bulk Credit","description":"Add credit via DealerBalance (DEAL_CREDIT).","operationId":"bulk_credit_api_v1_admin_bulk_credit_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkBalanceRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkOperationSummary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/admin/bulk/balance/zero":{"post":{"tags":["admin-bulk"],"summary":"Bulk Balance Zero","description":"Set each account's cash balance and credit to zero: removes credit, then deposits or withdraws\nbalance as needed. Open positions are not closed; equity may stay non-zero while positions run.","operationId":"bulk_balance_zero_api_v1_admin_bulk_balance_zero_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkZeroBalanceRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkOperationSummary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/admin/bulk/accounts/open":{"post":{"tags":["admin-bulk"],"summary":"Bulk open accounts (UserAdd)","description":"Create trading accounts via MT5 **UserAdd**.\n\nPrefer **per-item `mt5_login`** or **`series_from` + row index** for explicit logins; otherwise\n`Login=0` (server auto-assign). User record is built with **`MTUser()` + `Clear`** first; template\n`UserRequest` is only used if direct construction fails.\n\n**template_login** (optional): fallback seed for `UserRequest` when direct `MTUser` build fails.","operationId":"bulk_accounts_open_api_v1_admin_bulk_accounts_open_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkAccountOpenRequest"}}},"required":true},"responses":{"200":{"description":"Per-row status; successful rows include master and investor passwords (HTTPS only).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkAccountOpenResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/admin/bulk/archive":{"post":{"tags":["admin-bulk"],"summary":"Bulk Archive","description":"Archive accounts (UserArchive).","operationId":"bulk_archive_api_v1_admin_bulk_archive_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkLoginsRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkOperationSummary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/admin/bulk/delete":{"post":{"tags":["admin-bulk"],"summary":"Bulk Delete","description":"Permanently delete users (UserDelete). Send header X-Confirm-Delete: 1.","operationId":"bulk_delete_api_v1_admin_bulk_delete_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"x-confirm-delete","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Confirm-Delete"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkLoginsRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkOperationSummary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/bulk/password-reset":{"post":{"tags":["admin-bulk"],"summary":"Bulk Password Reset","description":"Reset main trading password (UserPasswordChange). Returns new_password per login.","operationId":"bulk_password_reset_api_v1_admin_bulk_password_reset_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkLoginsRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkPasswordResetResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/internal/health":{"get":{"tags":["internal"],"summary":"Internal Health","operationId":"internal_health_internal_health_get","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServiceHealth"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/internal/health/manager":{"get":{"tags":["internal"],"summary":"Internal Health Manager","operationId":"internal_health_manager_internal_health_manager_get","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ManagerHealth"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/internal/metrics":{"get":{"tags":["internal"],"summary":"Internal Metrics","operationId":"internal_metrics_internal_metrics_get","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Internal Metrics Internal Metrics Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/internal/subscriptions":{"get":{"tags":["internal"],"summary":"Internal Subscriptions","operationId":"internal_subscriptions_internal_subscriptions_get","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Internal Subscriptions Internal Subscriptions Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/internal/cache":{"get":{"tags":["internal"],"summary":"Internal Cache","operationId":"internal_cache_internal_cache_get","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Internal Cache Internal Cache Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"AccountProfile":{"properties":{"mt5_login":{"type":"integer","title":"Mt5 Login"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"first_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"First Name"},"last_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Name"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"group":{"type":"string","title":"Group","default":""},"leverage":{"type":"integer","title":"Leverage","default":0},"rights":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rights"}},"type":"object","required":["mt5_login"],"title":"AccountProfile"},"AccountSnapshot":{"properties":{"mt5_login":{"type":"integer","title":"Mt5 Login"},"account_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Account Name"},"group":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Group"},"leverage":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Leverage"},"currency":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Currency"},"balance":{"type":"number","title":"Balance","default":0.0},"credit":{"type":"number","title":"Credit","default":0.0},"equity":{"type":"number","title":"Equity","default":0.0},"margin":{"type":"number","title":"Margin","default":0.0},"margin_free":{"type":"number","title":"Margin Free","default":0.0},"margin_level":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Margin Level"},"floating_pnl":{"type":"number","title":"Floating Pnl","default":0.0},"open_positions_count":{"type":"integer","title":"Open Positions Count","default":0},"pending_orders_count":{"type":"integer","title":"Pending Orders Count","default":0},"last_update_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Update Time"},"stream_connection_state":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Stream Connection State"}},"type":"object","required":["mt5_login"],"title":"AccountSnapshot"},"ActivityEvent":{"properties":{"event_type":{"type":"string","title":"Event Type"},"mt5_login":{"type":"integer","title":"Mt5 Login"},"ticket":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Ticket"},"symbol":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Symbol"},"volume":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Volume"},"price":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Price"},"time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Time"},"extra":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Extra"}},"type":"object","required":["event_type","mt5_login"],"title":"ActivityEvent"},"BulkAccountOpenLine":{"properties":{"email":{"type":"string","minLength":3,"title":"Email","description":"Contact email stored on MTUser"},"first_name":{"type":"string","title":"First Name","default":""},"last_name":{"type":"string","title":"Last Name","default":""},"name":{"type":"string","title":"Name","default":""},"mt5_login":{"anyOf":[{"type":"integer","minimum":1.0},{"type":"null"}],"title":"Mt5 Login","description":"Explicit target MT5 login for this row (overrides series_from+index for this item)."},"client_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Client Id","description":"Opaque CRM id; echoed in response only (not stored here)"},"phone":{"type":"string","title":"Phone","description":"Optional; stored on MTUser.Phone when supported","default":""}},"type":"object","required":["email"],"title":"BulkAccountOpenLine"},"BulkAccountOpenRequest":{"properties":{"group":{"type":"string","minLength":1,"title":"Group","description":"MT5 group for new accounts"},"leverage":{"anyOf":[{"type":"integer","maximum":1000000.0,"minimum":1.0},{"type":"null"}],"title":"Leverage"},"template_login":{"anyOf":[{"type":"integer","minimum":1.0},{"type":"null"}],"title":"Template Login","description":"UserAdd template: existing MT5 login for UserRequest(). Overrides MT5_USERADD_TEMPLATE_LOGIN / manager login when set."},"series_from":{"anyOf":[{"type":"integer","minimum":1.0},{"type":"null"}],"title":"Series From","description":"If set, requests MT5 logins in sequence: first item uses this number, then +1, +2, ... If omitted, Login=0 (server auto-assigns numbers). Requires broker/server to allow requested logins."},"items":{"items":{"$ref":"#/components/schemas/BulkAccountOpenLine"},"type":"array","minItems":1,"title":"Items"}},"type":"object","required":["group","items"],"title":"BulkAccountOpenRequest"},"BulkAccountOpenResponse":{"properties":{"ok_count":{"type":"integer","title":"Ok Count"},"fail_count":{"type":"integer","title":"Fail Count"},"results":{"items":{"$ref":"#/components/schemas/BulkAccountOpenRow"},"type":"array","title":"Results"},"request_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Request Id"},"total_requested":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Requested"},"total_processed":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Processed"},"total_succeeded":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Succeeded"},"total_failed":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Failed"},"total_skipped":{"type":"integer","title":"Total Skipped","default":0}},"type":"object","required":["ok_count","fail_count","results"],"title":"BulkAccountOpenResponse"},"BulkAccountOpenRow":{"properties":{"email":{"type":"string","title":"Email"},"login":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Login"},"ok":{"type":"boolean","title":"Ok"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"},"master_password":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Master Password"},"investor_password":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Investor Password"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message"},"client_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Client Id"},"group":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Group"},"leverage":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Leverage"},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone"},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created At","description":"ISO8601 UTC when account was created"},"manager_return_code":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Manager Return Code"},"manager_return_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Manager Return Message"}},"type":"object","required":["email","ok"],"title":"BulkAccountOpenRow"},"BulkBalanceLine":{"properties":{"login":{"type":"integer","title":"Login"},"amount":{"type":"number","exclusiveMinimum":0.0,"title":"Amount","description":"Positive amount; deposit adds, withdraw removes"},"comment":{"type":"string","title":"Comment","default":""}},"type":"object","required":["login","amount"],"title":"BulkBalanceLine"},"BulkBalanceRequest":{"properties":{"items":{"items":{"$ref":"#/components/schemas/BulkBalanceLine"},"type":"array","minItems":1,"title":"Items"}},"type":"object","required":["items"],"title":"BulkBalanceRequest"},"BulkGroupRequest":{"properties":{"logins":{"items":{"type":"integer"},"type":"array","minItems":1,"title":"Logins"},"group":{"type":"string","minLength":1,"title":"Group","description":"MT5 group name, e.g. demo\\demoforex"}},"type":"object","required":["logins","group"],"title":"BulkGroupRequest"},"BulkLeverageRequest":{"properties":{"logins":{"items":{"type":"integer"},"type":"array","minItems":1,"title":"Logins"},"leverage":{"type":"integer","maximum":1000000.0,"minimum":1.0,"title":"Leverage","description":"Leverage value, e.g. 100 for 1:100"}},"type":"object","required":["logins","leverage"],"title":"BulkLeverageRequest"},"BulkLoginsRequest":{"properties":{"logins":{"items":{"type":"integer"},"type":"array","minItems":1,"title":"Logins"}},"type":"object","required":["logins"],"title":"BulkLoginsRequest"},"BulkOperationSummary":{"properties":{"ok_count":{"type":"integer","title":"Ok Count"},"fail_count":{"type":"integer","title":"Fail Count"},"results":{"items":{"$ref":"#/components/schemas/BulkRowResult"},"type":"array","title":"Results"},"request_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Request Id","description":"Correlation id (also X-Request-Id)"},"total_requested":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Requested"},"total_processed":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Processed"},"total_succeeded":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Succeeded"},"total_failed":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Failed"},"total_skipped":{"type":"integer","title":"Total Skipped","default":0}},"type":"object","required":["ok_count","fail_count","results"],"title":"BulkOperationSummary"},"BulkPasswordResetResponse":{"properties":{"ok_count":{"type":"integer","title":"Ok Count"},"fail_count":{"type":"integer","title":"Fail Count"},"results":{"items":{"$ref":"#/components/schemas/BulkPasswordResetRow"},"type":"array","title":"Results"},"request_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Request Id"},"total_requested":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Requested"},"total_processed":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Processed"},"total_succeeded":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Succeeded"},"total_failed":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Failed"},"total_skipped":{"type":"integer","title":"Total Skipped","default":0}},"type":"object","required":["ok_count","fail_count","results"],"title":"BulkPasswordResetResponse"},"BulkPasswordResetRow":{"properties":{"login":{"type":"integer","title":"Login"},"ok":{"type":"boolean","title":"Ok"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"},"new_password":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"New Password"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message"},"manager_return_code":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Manager Return Code"},"manager_return_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Manager Return Message"}},"type":"object","required":["login","ok"],"title":"BulkPasswordResetRow"},"BulkRowResult":{"properties":{"login":{"type":"integer","title":"Login"},"ok":{"type":"boolean","title":"Ok"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status","description":"\"ok\" or \"failed\""},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message","description":"Human-readable outcome"},"manager_return_code":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Manager Return Code","description":"Raw MT API return code when available"},"manager_return_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Manager Return Message","description":"MT_RET_* name when mapped"}},"type":"object","required":["login","ok"],"title":"BulkRowResult"},"BulkZeroBalanceRequest":{"properties":{"logins":{"items":{"type":"integer"},"type":"array","minItems":1,"title":"Logins"},"comment":{"type":"string","title":"Comment","default":""}},"type":"object","required":["logins"],"title":"BulkZeroBalanceRequest","description":"Clear cash balance and credit to zero (DealerBalance DEAL_BALANCE + DEAL_CREDIT)."},"Deal":{"properties":{"deal_id":{"type":"integer","title":"Deal Id"},"order_id":{"type":"integer","title":"Order Id"},"symbol":{"type":"string","title":"Symbol"},"type":{"type":"string","title":"Type"},"volume":{"type":"number","title":"Volume"},"price":{"type":"number","title":"Price"},"profit":{"type":"number","title":"Profit","default":0.0},"commission":{"type":"number","title":"Commission","default":0.0},"swap":{"type":"number","title":"Swap","default":0.0},"fee":{"type":"number","title":"Fee","default":0.0},"time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Time"},"comment":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Comment"},"reason":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Reason"}},"type":"object","required":["deal_id","order_id","symbol","type","volume","price"],"title":"Deal"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ManagerHealth":{"properties":{"connected":{"type":"boolean","title":"Connected"},"last_connect_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Connect Time"},"last_disconnect_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Disconnect Time"},"reconnect_count":{"type":"integer","title":"Reconnect Count","default":0},"last_error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Error"}},"type":"object","required":["connected"],"title":"ManagerHealth"},"OpenOrder":{"properties":{"ticket":{"type":"integer","title":"Ticket"},"symbol":{"type":"string","title":"Symbol"},"type":{"$ref":"#/components/schemas/OrderType"},"volume":{"type":"number","title":"Volume"},"price":{"type":"number","title":"Price"},"sl":{"type":"number","title":"Sl","default":0.0},"tp":{"type":"number","title":"Tp","default":0.0},"status":{"$ref":"#/components/schemas/OrderStatus","default":"pending"},"time_setup":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Time Setup"}},"type":"object","required":["ticket","symbol","type","volume","price"],"title":"OpenOrder"},"OpenPosition":{"properties":{"ticket":{"type":"integer","title":"Ticket"},"symbol":{"type":"string","title":"Symbol"},"type":{"$ref":"#/components/schemas/PositionType"},"volume":{"type":"number","title":"Volume"},"open_price":{"type":"number","title":"Open Price"},"current_price":{"type":"number","title":"Current Price"},"sl":{"type":"number","title":"Sl","default":0.0},"tp":{"type":"number","title":"Tp","default":0.0},"swap":{"type":"number","title":"Swap","default":0.0},"commission":{"type":"number","title":"Commission","default":0.0},"profit":{"type":"number","title":"Profit","default":0.0},"comment":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Comment"},"open_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Open Time"}},"type":"object","required":["ticket","symbol","type","volume","open_price","current_price"],"title":"OpenPosition"},"OrderStatus":{"type":"string","enum":["pending","filled","canceled","expired","rejected"],"title":"OrderStatus"},"OrderType":{"type":"string","enum":["buy","sell","buy_limit","sell_limit","buy_stop","sell_stop"],"title":"OrderType"},"PositionType":{"type":"string","enum":["buy","sell"],"title":"PositionType"},"ServiceHealth":{"properties":{"status":{"type":"string","title":"Status"},"manager":{"$ref":"#/components/schemas/ManagerHealth"},"last_account_fetch_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Account Fetch Time"},"last_quote_event_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Quote Event Time"},"last_position_event_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Position Event Time"},"active_websocket_connections":{"type":"integer","title":"Active Websocket Connections","default":0},"active_mt5_logins_streamed":{"type":"integer","title":"Active Mt5 Logins Streamed","default":0},"cache_size":{"type":"integer","title":"Cache Size","default":0},"queue_depth":{"type":"integer","title":"Queue Depth","default":0},"recent_errors":{"items":{"type":"string"},"type":"array","title":"Recent Errors"},"uptime_seconds":{"type":"number","title":"Uptime Seconds","default":0.0}},"type":"object","required":["status","manager"],"title":"ServiceHealth"},"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":{"HTTPBearer":{"type":"http","scheme":"bearer"}}}}