{"components":{"securitySchemes":{"bearerAuth":{"bearerFormat":"JWT","scheme":"bearer","type":"http"}}},"info":{"description":"MT5 → REST + WebSocket gateway. Most endpoints require a Bearer JWT (obtain via /api/Authentication/login).","title":"OpoMTSocket Gateway (Go)","version":"1.0.0"},"openapi":"3.0.3","paths":{"/api/Authentication/crmlogin":{"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"OK"}},"summary":"CRM login"}},"/api/Authentication/login":{"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"OK"}},"summary":"Login (CRMToken for production)"}},"/api/Deal/backup_get":{"get":{"parameters":[{"in":"query","name":"backup","required":false,"schema":{"type":"string"}},{"in":"query","name":"login","required":false,"schema":{"type":"string"}},{"in":"query","name":"from","required":false,"schema":{"type":"string"}},{"in":"query","name":"to","required":false,"schema":{"type":"string"}},{"in":"query","name":"server","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}},"security":[{"bearerAuth":[]}],"summary":"Deal from backup"}},"/api/Deal/backup_list":{"get":{"parameters":[{"in":"query","name":"from","required":false,"schema":{"type":"string"}},{"in":"query","name":"to","required":false,"schema":{"type":"string"}},{"in":"query","name":"server","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}},"security":[{"bearerAuth":[]}],"summary":"Deal backup list"}},"/api/Deal/delete":{"delete":{"parameters":[{"in":"query","name":"ticket","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}},"security":[{"bearerAuth":[]}],"summary":"Delete deal"}},"/api/Deal/get":{"get":{"parameters":[{"in":"query","name":"ticket","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}},"security":[{"bearerAuth":[]}],"summary":"Get deal"}},"/api/Deal/get_batch":{"get":{"parameters":[{"in":"query","name":"login","required":false,"schema":{"type":"string"}},{"in":"query","name":"group","required":false,"schema":{"type":"string"}},{"in":"query","name":"ticket","required":false,"schema":{"type":"string"}},{"in":"query","name":"from","required":false,"schema":{"type":"string"}},{"in":"query","name":"to","required":false,"schema":{"type":"string"}},{"in":"query","name":"symbol","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}},"security":[{"bearerAuth":[]}],"summary":"Deal batch"}},"/api/Deal/get_page":{"get":{"parameters":[{"in":"query","name":"login","required":false,"schema":{"type":"string"}},{"in":"query","name":"from","required":false,"schema":{"type":"string"}},{"in":"query","name":"to","required":false,"schema":{"type":"string"}},{"in":"query","name":"offset","required":false,"schema":{"type":"string"}},{"in":"query","name":"index","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}},"security":[{"bearerAuth":[]}],"summary":"Deal page"}},"/api/Deal/get_total":{"get":{"parameters":[{"in":"query","name":"login","required":false,"schema":{"type":"string"}},{"in":"query","name":"from","required":false,"schema":{"type":"string"}},{"in":"query","name":"to","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}},"security":[{"bearerAuth":[]}],"summary":"Deal count"}},"/api/Deal/restore_deal":{"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"OK"}},"security":[{"bearerAuth":[]}],"summary":"Restore deal"}},"/api/Deal/update_deal":{"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"OK"}},"security":[{"bearerAuth":[]}],"summary":"Update deal"}},"/api/History/delete":{"delete":{"parameters":[{"in":"query","name":"ticket","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}},"security":[{"bearerAuth":[]}],"summary":"Delete closed order"}},"/api/History/get":{"get":{"parameters":[{"in":"query","name":"ticket","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}},"security":[{"bearerAuth":[]}],"summary":"Get closed order"}},"/api/History/get_batch":{"get":{"parameters":[{"in":"query","name":"login","required":false,"schema":{"type":"string"}},{"in":"query","name":"groups","required":false,"schema":{"type":"string"}},{"in":"query","name":"tickets","required":false,"schema":{"type":"string"}},{"in":"query","name":"from","required":false,"schema":{"type":"string"}},{"in":"query","name":"to","required":false,"schema":{"type":"string"}},{"in":"query","name":"symbol","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}},"security":[{"bearerAuth":[]}],"summary":"Closed order batch"}},"/api/History/get_page":{"get":{"parameters":[{"in":"query","name":"login","required":false,"schema":{"type":"string"}},{"in":"query","name":"from","required":false,"schema":{"type":"string"}},{"in":"query","name":"to","required":false,"schema":{"type":"string"}},{"in":"query","name":"offset","required":false,"schema":{"type":"string"}},{"in":"query","name":"total","required":false,"schema":{"type":"string"}},{"in":"query","name":"source","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}},"security":[{"bearerAuth":[]}],"summary":"Closed order page"}},"/api/History/get_total":{"get":{"parameters":[{"in":"query","name":"login","required":false,"schema":{"type":"string"}},{"in":"query","name":"from","required":false,"schema":{"type":"string"}},{"in":"query","name":"to","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}},"security":[{"bearerAuth":[]}],"summary":"Closed order count"}},"/api/History/update_history":{"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"OK"}},"security":[{"bearerAuth":[]}],"summary":"Update history"}},"/api/Order/cancel":{"get":{"parameters":[{"in":"query","name":"ticket","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}},"security":[{"bearerAuth":[]}],"summary":"Cancel order"}},"/api/Order/delete":{"delete":{"parameters":[{"in":"query","name":"ticket","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}},"security":[{"bearerAuth":[]}],"summary":"Delete order"}},"/api/Order/get":{"get":{"parameters":[{"in":"query","name":"ticket","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}},"security":[{"bearerAuth":[]}],"summary":"Get order"}},"/api/Order/get_batch":{"get":{"parameters":[{"in":"query","name":"login","required":false,"schema":{"type":"string"}},{"in":"query","name":"group","required":false,"schema":{"type":"string"}},{"in":"query","name":"ticket","required":false,"schema":{"type":"string"}},{"in":"query","name":"symbol","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}},"security":[{"bearerAuth":[]}],"summary":"Order batch"}},"/api/Order/get_page":{"get":{"parameters":[{"in":"query","name":"login","required":false,"schema":{"type":"string"}},{"in":"query","name":"offset","required":false,"schema":{"type":"string"}},{"in":"query","name":"total","required":false,"schema":{"type":"string"}},{"in":"query","name":"source","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}},"security":[{"bearerAuth":[]}],"summary":"Order page"}},"/api/Order/get_total":{"get":{"parameters":[{"in":"query","name":"login","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}},"security":[{"bearerAuth":[]}],"summary":"Order count"}},"/api/Order/getbackup":{"get":{"parameters":[{"in":"query","name":"backup","required":false,"schema":{"type":"string"}},{"in":"query","name":"login","required":false,"schema":{"type":"string"}},{"in":"query","name":"ticket","required":false,"schema":{"type":"string"}},{"in":"query","name":"from","required":false,"schema":{"type":"string"}},{"in":"query","name":"to","required":false,"schema":{"type":"string"}},{"in":"query","name":"server","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}},"security":[{"bearerAuth":[]}],"summary":"Orders from backup"}},"/api/Order/list":{"get":{"parameters":[{"in":"query","name":"from","required":false,"schema":{"type":"string"}},{"in":"query","name":"to","required":false,"schema":{"type":"string"}},{"in":"query","name":"server","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}},"security":[{"bearerAuth":[]}],"summary":"Backup list"}},"/api/Order/reopen":{"get":{"parameters":[{"in":"query","name":"ticket","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}},"security":[{"bearerAuth":[]}],"summary":"Reopen order"}},"/api/Order/restore":{"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"OK"}},"security":[{"bearerAuth":[]}],"summary":"Restore order"}},"/api/Order/update_order":{"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"OK"}},"security":[{"bearerAuth":[]}],"summary":"Update order"}},"/api/Position/backup_get":{"get":{"parameters":[{"in":"query","name":"backup","required":false,"schema":{"type":"string"}},{"in":"query","name":"login","required":false,"schema":{"type":"string"}},{"in":"query","name":"from","required":false,"schema":{"type":"string"}},{"in":"query","name":"end","required":false,"schema":{"type":"string"}},{"in":"query","name":"server","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}},"security":[{"bearerAuth":[]}],"summary":"Position from backup"}},"/api/Position/backup_list":{"get":{"parameters":[{"in":"query","name":"from","required":false,"schema":{"type":"string"}},{"in":"query","name":"end","required":false,"schema":{"type":"string"}},{"in":"query","name":"server","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}},"security":[{"bearerAuth":[]}],"summary":"Position backup list"}},"/api/Position/checkPosition":{"get":{"parameters":[{"in":"query","name":"login","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}},"security":[{"bearerAuth":[]}],"summary":"Check position"}},"/api/Position/delete":{"delete":{"parameters":[{"in":"query","name":"ticket","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}},"security":[{"bearerAuth":[]}],"summary":"Delete position"}},"/api/Position/fixPosition":{"get":{"parameters":[{"in":"query","name":"login","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}},"security":[{"bearerAuth":[]}],"summary":"Fix position"}},"/api/Position/get":{"get":{"parameters":[{"in":"query","name":"login","required":false,"schema":{"type":"string"}},{"in":"query","name":"symbol","required":false,"schema":{"type":"string"}},{"in":"query","name":"source","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}},"security":[{"bearerAuth":[]}],"summary":"Get position"}},"/api/Position/get_batch":{"get":{"parameters":[{"in":"query","name":"login","required":false,"schema":{"type":"string"}},{"in":"query","name":"group","required":false,"schema":{"type":"string"}},{"in":"query","name":"ticket","required":false,"schema":{"type":"string"}},{"in":"query","name":"symbol","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}},"security":[{"bearerAuth":[]}],"summary":"Position batch"}},"/api/Position/get_page":{"get":{"parameters":[{"in":"query","name":"login","required":false,"schema":{"type":"string"}},{"in":"query","name":"offset","required":false,"schema":{"type":"string"}},{"in":"query","name":"total","required":false,"schema":{"type":"string"}},{"in":"query","name":"source","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}},"security":[{"bearerAuth":[]}],"summary":"Position page"}},"/api/Position/get_total":{"get":{"parameters":[{"in":"query","name":"login","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}},"security":[{"bearerAuth":[]}],"summary":"Position count"}},"/api/Position/restore":{"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"OK"}},"security":[{"bearerAuth":[]}],"summary":"Restore position"}},"/api/Position/update_position":{"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"OK"}},"security":[{"bearerAuth":[]}],"summary":"Update position"}},"/api/Symbol/getGroup":{"get":{"parameters":[{"in":"query","name":"group","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}},"security":[{"bearerAuth":[]}],"summary":"Get group"}},"/api/Symbol/getlist":{"get":{"responses":{"200":{"description":"OK"}},"security":[{"bearerAuth":[]}],"summary":"Symbol list"}},"/api/Symbol/getsymbolsbygroup":{"get":{"parameters":[{"in":"query","name":"symbol","required":false,"schema":{"type":"string"}},{"in":"query","name":"group","required":false,"schema":{"type":"string"}},{"in":"query","name":"source","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}},"security":[{"bearerAuth":[]}],"summary":"Symbols by group"}},"/api/Symbol/getsymbolsbymask":{"get":{"parameters":[{"in":"query","name":"mask","required":false,"schema":{"type":"string"}},{"in":"query","name":"source","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}},"security":[{"bearerAuth":[]}],"summary":"Symbols by mask"}},"/api/Symbol/getsymbolsbyname":{"get":{"parameters":[{"in":"query","name":"symbol","required":false,"schema":{"type":"string"}},{"in":"query","name":"source","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}},"security":[{"bearerAuth":[]}],"summary":"Symbol by name"}},"/api/Test/getServerTime":{"get":{"responses":{"200":{"description":"OK"}},"security":[{"bearerAuth":[]}],"summary":"Server time"}},"/api/Test/getUTCTime":{"get":{"responses":{"200":{"description":"OK"}},"security":[{"bearerAuth":[]}],"summary":"UTC time"}},"/api/Tick/get":{"get":{"parameters":[{"in":"query","name":"symbol","required":false,"schema":{"type":"string"}},{"in":"query","name":"from","required":false,"schema":{"type":"string"}},{"in":"query","name":"to","required":false,"schema":{"type":"string"}},{"in":"query","name":"data","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}},"security":[{"bearerAuth":[]}],"summary":"Chart M1"}},"/api/Tick/getHistoryby1Dresolution":{"get":{"parameters":[{"in":"query","name":"symbol","required":false,"schema":{"type":"string"}},{"in":"query","name":"from","required":false,"schema":{"type":"string"}},{"in":"query","name":"to","required":false,"schema":{"type":"string"}},{"in":"query","name":"resolution","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}},"security":[{"bearerAuth":[]}],"summary":"Chart 1D/1W/1M"}},"/api/Tick/get_marketdepth":{"get":{"parameters":[{"in":"query","name":"symbol","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}},"security":[{"bearerAuth":[]}],"summary":"Market depth"}},"/api/Tick/history":{"get":{"parameters":[{"in":"query","name":"symbol","required":false,"schema":{"type":"string"}},{"in":"query","name":"from","required":false,"schema":{"type":"string"}},{"in":"query","name":"to","required":false,"schema":{"type":"string"}},{"in":"query","name":"data","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}},"security":[{"bearerAuth":[]}],"summary":"Tick history"}},"/api/Tick/last":{"get":{"parameters":[{"in":"query","name":"symbol","required":false,"schema":{"type":"string"}},{"in":"query","name":"Id","required":false,"schema":{"type":"string"}},{"in":"query","name":"source","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}},"security":[{"bearerAuth":[]}],"summary":"Last quote"}},"/api/Tick/last_group":{"get":{"parameters":[{"in":"query","name":"symbol","required":false,"schema":{"type":"string"}},{"in":"query","name":"group","required":false,"schema":{"type":"string"}},{"in":"query","name":"Id","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}},"security":[{"bearerAuth":[]}],"summary":"Last quote (group)"}},"/api/Tick/stat":{"get":{"parameters":[{"in":"query","name":"symbol","required":false,"schema":{"type":"string"}},{"in":"query","name":"Id","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}},"security":[{"bearerAuth":[]}],"summary":"Tick stat"}},"/api/Trade/balance":{"get":{"parameters":[{"in":"query","name":"login","required":false,"schema":{"type":"string"}},{"in":"query","name":"type","required":false,"schema":{"type":"string"}},{"in":"query","name":"balance","required":false,"schema":{"type":"string"}},{"in":"query","name":"comment","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}},"security":[{"bearerAuth":[]}],"summary":"Balance op"}},"/api/Trade/calc_buy_rate":{"get":{"parameters":[{"in":"query","name":"basecurrency","required":false,"schema":{"type":"string"}},{"in":"query","name":"currency","required":false,"schema":{"type":"string"}},{"in":"query","name":"group","required":false,"schema":{"type":"string"}},{"in":"query","name":"symbol","required":false,"schema":{"type":"string"}},{"in":"query","name":"price","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}},"security":[{"bearerAuth":[]}],"summary":"Calc buy rate"}},"/api/Trade/calc_profit":{"get":{"parameters":[{"in":"query","name":"group","required":false,"schema":{"type":"string"}},{"in":"query","name":"symbol","required":false,"schema":{"type":"string"}},{"in":"query","name":"type","required":false,"schema":{"type":"string"}},{"in":"query","name":"volume","required":false,"schema":{"type":"string"}},{"in":"query","name":"price_open","required":false,"schema":{"type":"string"}},{"in":"query","name":"price_close","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}},"security":[{"bearerAuth":[]}],"summary":"Calc profit"}},"/api/Trade/calc_sell_rate":{"get":{"parameters":[{"in":"query","name":"basecurrency","required":false,"schema":{"type":"string"}},{"in":"query","name":"currency","required":false,"schema":{"type":"string"}},{"in":"query","name":"group","required":false,"schema":{"type":"string"}},{"in":"query","name":"symbol","required":false,"schema":{"type":"string"}},{"in":"query","name":"price","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}},"security":[{"bearerAuth":[]}],"summary":"Calc sell rate"}},"/api/Trade/check_margin":{"get":{"parameters":[{"in":"query","name":"login","required":false,"schema":{"type":"string"}},{"in":"query","name":"symbol","required":false,"schema":{"type":"string"}},{"in":"query","name":"type","required":false,"schema":{"type":"string"}},{"in":"query","name":"volume","required":false,"schema":{"type":"string"}},{"in":"query","name":"price","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}},"security":[{"bearerAuth":[]}],"summary":"Check margin"}},"/api/Trade/get_request_result":{"get":{"parameters":[{"in":"query","name":"id","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}},"security":[{"bearerAuth":[]}],"summary":"Get request result"}},"/api/Trade/send_request":{"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"OK"}},"security":[{"bearerAuth":[]}],"summary":"Send trade request"}},"/api/User/get":{"get":{"parameters":[{"in":"query","name":"login","required":false,"schema":{"type":"string"}},{"in":"query","name":"source","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}},"security":[{"bearerAuth":[]}],"summary":"Get user"}},"/api/User/get_trade_state":{"get":{"parameters":[{"in":"query","name":"login","required":false,"schema":{"type":"string"}},{"in":"query","name":"source","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}},"security":[{"bearerAuth":[]}],"summary":"Trade state"}},"/api/tv/TVOrder/gethistory":{"get":{"responses":{"200":{"description":"OK"}},"summary":"TV history (stub)"}},"/api/tv/TVOrder/modifyOrder":{"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"OK"}},"summary":"TV modify order"}},"/api/tv/TVOrder/orders":{"get":{"responses":{"200":{"description":"OK"}},"summary":"TV orders"}},"/api/tv/TVOrder/placeOrder":{"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"OK"}},"summary":"TV place order"}}}}