{"components":{"schemas":{"ErrorResponse":{"additionalProperties":true,"type":"object"},"OpenRequest":{"additionalProperties":true,"properties":{"comment":{"type":"string"},"deviation":{"type":"integer"},"expiration":{"type":"integer"},"magic":{"type":"integer"},"price":{"type":"number"},"sl":{"type":"number"},"stoplimit":{"type":"number"},"symbol":{"type":"string"},"tp":{"type":"number"},"type":{"description":"BUY, SELL, BUY_LIMIT, SELL_LIMIT, BUY_STOP, SELL_STOP, BUY_STOP_LIMIT, SELL_STOP_LIMIT","type":"string"},"type_time":{"type":"string"},"volume":{"type":"number"}},"required":["symbol","type","volume"],"type":"object"},"OrderUpdateRequest":{"additionalProperties":true,"properties":{"price":{"type":"number"},"sl":{"type":"number"},"tp":{"type":"number"},"type_time":{"type":"string"}},"type":"object"},"PingBrokerResponse":{"additionalProperties":true,"properties":{"connected":{"type":"boolean"},"ping_ms":{"type":"number"},"ping_us":{"type":"integer"},"quality":{"type":"string"},"retransmission":{"type":"number"}},"type":"object"},"PositionCloseRequest":{"additionalProperties":false,"properties":{"deviation":{"type":"integer"},"volume":{"type":"number"}},"type":"object"},"PositionUpdateRequest":{"additionalProperties":false,"properties":{"sl":{"type":"number"},"tp":{"type":"number"}},"type":"object"},"StatusResponse":{"properties":{"status":{"type":"string"}},"required":["status"],"type":"object"},"SuccessResponse":{"properties":{"success":{"type":"boolean"}},"required":["success"],"type":"object"}},"securitySchemes":{"bearerAuth":{"bearerFormat":"JWT","scheme":"bearer","type":"http"}}},"info":{"description":"HTTP API for the NOVOSKY MetaTrader 5 terminal integration.","title":"NOVOSKY MT5 API","version":"1.0.0"},"openapi":"3.0.3","paths":{"/account":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object"}}},"description":"Success"},"404":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object"}}},"description":"Error response"},"503":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object"}}},"description":"Error response"}},"summary":"Get account information","tags":["Account"]}},"/error":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object"}}},"description":"Success"}},"summary":"Last MT5 error","tags":["System"]}},"/history/deals":{"get":{"parameters":[{"in":"query","name":"from","required":true,"schema":{"type":"integer"}},{"in":"query","name":"to","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"additionalProperties":true,"type":"object"},"type":"array"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object"}}},"description":"Error response"},"503":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object"}}},"description":"Error response"}},"summary":"Get historical deals","tags":["History"]}},"/history/orders":{"get":{"parameters":[{"in":"query","name":"from","required":true,"schema":{"type":"integer"}},{"in":"query","name":"to","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"additionalProperties":true,"type":"object"},"type":"array"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object"}}},"description":"Error response"},"503":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object"}}},"description":"Error response"}},"summary":"Get historical orders","tags":["History"]}},"/orders":{"get":{"parameters":[{"in":"query","name":"symbol","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"additionalProperties":true,"type":"object"},"type":"array"}}},"description":"Success"},"503":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object"}}},"description":"Error response"}},"summary":"List active orders","tags":["Orders"]},"post":{"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OpenRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object"}}},"description":"Success"},"201":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object"}}},"description":"Error response"},"500":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object"}}},"description":"Error response"},"503":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object"}}},"description":"Error response"}},"summary":"Create a new order","tags":["Orders"]}},"/orders/{ticket}":{"delete":{"parameters":[{"in":"path","name":"ticket","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object"}}},"description":"Success"},"404":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object"}}},"description":"Error response"},"500":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object"}}},"description":"Error response"},"503":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object"}}},"description":"Error response"}},"summary":"Cancel an order","tags":["Orders"]},"get":{"parameters":[{"in":"path","name":"ticket","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object"}}},"description":"Success"},"404":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object"}}},"description":"Error response"},"503":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object"}}},"description":"Error response"}},"summary":"Get an order by ticket","tags":["Orders"]},"put":{"parameters":[{"in":"path","name":"ticket","required":true,"schema":{"type":"integer"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrderUpdateRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object"}}},"description":"Error response"},"404":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object"}}},"description":"Error response"},"500":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object"}}},"description":"Error response"},"503":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object"}}},"description":"Error response"}},"summary":"Modify an order","tags":["Orders"]}},"/ping":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StatusResponse"}}},"description":"Success"}},"summary":"Health check","tags":["System"]}},"/ping/broker":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PingBrokerResponse"}}},"description":"Success"},"503":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object"}}},"description":"Error response"}},"summary":"Broker latency and connectivity","tags":["System"]}},"/positions":{"get":{"parameters":[{"in":"query","name":"symbol","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"additionalProperties":true,"type":"object"},"type":"array"}}},"description":"Success"},"503":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object"}}},"description":"Error response"}},"summary":"List open positions","tags":["Positions"]}},"/positions/{ticket}":{"delete":{"parameters":[{"in":"path","name":"ticket","required":true,"schema":{"type":"integer"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PositionCloseRequest"}}},"required":false},"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object"}}},"description":"Success"},"404":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object"}}},"description":"Error response"},"500":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object"}}},"description":"Error response"},"503":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object"}}},"description":"Error response"}},"summary":"Close a position","tags":["Positions"]},"get":{"parameters":[{"in":"path","name":"ticket","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object"}}},"description":"Success"},"404":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object"}}},"description":"Error response"},"503":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object"}}},"description":"Error response"}},"summary":"Get a position by ticket","tags":["Positions"]},"put":{"parameters":[{"in":"path","name":"ticket","required":true,"schema":{"type":"integer"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PositionUpdateRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object"}}},"description":"Error response"},"404":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object"}}},"description":"Error response"},"500":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object"}}},"description":"Error response"},"503":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object"}}},"description":"Error response"}},"summary":"Update stop loss or take profit","tags":["Positions"]}},"/symbols":{"get":{"parameters":[{"in":"query","name":"group","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"type":"string"},"type":"array"}}},"description":"Success"},"503":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object"}}},"description":"Error response"}},"summary":"List symbols","tags":["Symbols"]}},"/symbols/{symbol}":{"get":{"parameters":[{"in":"path","name":"symbol","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object"}}},"description":"Success"},"404":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object"}}},"description":"Error response"},"503":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object"}}},"description":"Error response"}},"summary":"Get symbol details","tags":["Symbols"]}},"/symbols/{symbol}/rates":{"get":{"parameters":[{"in":"path","name":"symbol","required":true,"schema":{"type":"string"}},{"in":"query","name":"timeframe","required":false,"schema":{"default":"M1","type":"string"}},{"in":"query","name":"count","required":false,"schema":{"default":100,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"additionalProperties":true,"type":"object"},"type":"array"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object"}}},"description":"Error response"},"503":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object"}}},"description":"Error response"}},"summary":"Get OHLC rates","tags":["Symbols"]}},"/symbols/{symbol}/tick":{"get":{"parameters":[{"in":"path","name":"symbol","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object"}}},"description":"Success"},"404":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object"}}},"description":"Error response"},"503":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object"}}},"description":"Error response"}},"summary":"Get latest tick","tags":["Symbols"]}},"/symbols/{symbol}/ticks":{"get":{"parameters":[{"in":"path","name":"symbol","required":true,"schema":{"type":"string"}},{"in":"query","name":"count","required":false,"schema":{"default":100,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"additionalProperties":true,"type":"object"},"type":"array"}}},"description":"Success"},"503":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object"}}},"description":"Error response"}},"summary":"Get historical ticks","tags":["Symbols"]}},"/terminal":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object"}}},"description":"Success"},"503":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object"}}},"description":"Error response"}},"summary":"Get terminal info","tags":["Terminal"]}},"/terminal/init":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}},"description":"Success"},"500":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object"}}},"description":"Error response"}},"summary":"Initialize the terminal connection","tags":["Terminal"]}},"/terminal/restart":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}},"description":"Success"},"500":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object"}}},"description":"Error response"}},"summary":"Restart the terminal","tags":["Terminal"]}},"/terminal/shutdown":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}},"description":"Success"}},"summary":"Shutdown the terminal","tags":["Terminal"]}}},"security":[{"bearerAuth":[]}],"servers":[{"url":"/"}],"tags":[{"name":"System"},{"name":"Terminal"},{"name":"Account"},{"name":"Symbols"},{"name":"Positions"},{"name":"Orders"},{"name":"History"}]}
