@lap v0.3
# Machine-readable API spec. Each @endpoint block is one API call.
@api Tradematic API
@base https://api.tradematic.com
@version 1.0.6
@auth ApiKey X-API-Key in header
@endpoints 90
@hint download_for_search
@toc ping(1), time(1), client(10), autofollow(17), taskmanager(17), builder(2), marketdata(10), cloud(27), marketplace(5)

@group ping
@endpoint GET /ping
@returns(200)
@errors {500}

@endgroup

@group time
@endpoint GET /time
@returns(200)
@errors {500}

@endgroup

@group client
@endpoint GET /client/users
@optional {username: any}
@returns(200)
@errors {500}

@endpoint GET /client/users/{userid}
@required {userid: any}
@returns(200)
@errors {404, 500}

@endpoint POST /client/users/login
@returns(200)
@errors {500}

@endpoint POST /client/users/register
@required {body: map}
@returns(200)
@errors {500}

@endpoint GET /client/users/roles
@returns(200)
@errors {500}

@endpoint PUT /client/users/{userid}/role
@required {userid: any, body: map}
@returns(200)
@errors {500}

@endpoint POST /client/users/check
@required {body: map}
@returns(200)
@errors {500}

@endpoint GET /client/apikeys
@returns(200)
@errors {500}

@endpoint POST /client/apikeys
@returns(200)
@errors {500}

@endpoint DELETE /client/apikeys/{keyid}
@required {keyid: any}
@returns(200)
@errors {404, 500}

@endgroup

@group autofollow
@endpoint GET /autofollow/strategies
@optional {filter: any}
@returns(200)
@errors {500}

@endpoint POST /autofollow/strategies
@required {body: map}
@returns(200)
@errors {500}

@endpoint GET /autofollow/strategies/{strategyid}
@required {strategyid: any}
@returns(200)
@errors {404, 500}

@endpoint PUT /autofollow/strategies/{strategyid}
@required {strategyid: any, body: map}
@returns(200)
@errors {500}

@endpoint PUT /autofollow/strategies/{strategyid}/content
@required {strategyid: any, body: map}
@returns(200)
@errors {500}

@endpoint PUT /autofollow/strategies/{strategyid}/state
@required {strategyid: any, body: map}
@returns(200)
@errors {500}

@endpoint PUT /autofollow/strategies/{strategyid}/status
@required {strategyid: any, body: map}
@returns(200)
@errors {500}

@endpoint GET /autofollow/strategies/{strategyid}/positions
@required {strategyid: any}
@returns(200)
@errors {404, 500}

@endpoint POST /autofollow/strategies/{strategyid}/positions
@required {strategyid: any, body: map}
@returns(200)
@errors {500}

@endpoint PUT /autofollow/strategies/{strategyid}/positions
@required {strategyid: any, body: map}
@returns(200)
@errors {500}

@endpoint DELETE /autofollow/strategies/{strategyid}/positions
@required {strategyid: any, body: map}
@returns(200)
@errors {500}

@endpoint GET /autofollow/strategies/{strategyid}/signals
@required {strategyid: any}
@optional {count: any}
@returns(200)
@errors {404, 500}

@endpoint POST /autofollow/strategies/{strategyid}/signals
@required {strategyid: any, body: map}
@returns(200)
@errors {500}

@endpoint GET /autofollow/strategies/risklevels
@returns(200)
@errors {500}

@endpoint GET /autofollow/strategies/rates
@returns(200)
@errors {500}

@endpoint GET /autofollow/strategies/statuses
@returns(200)
@errors {500}

@endpoint GET /autofollow/authors
@returns(200)
@errors {500}

@endgroup

@group taskmanager
@endpoint GET /taskmanager/tasks
@optional {count: any}
@returns(200)
@errors {500}

@endpoint POST /taskmanager/tasks
@required {body: map}
@returns(202)
@errors {500}

@endpoint GET /taskmanager/tasks/{taskid}
@required {taskid: any}
@returns(200)
@errors {500}

@endpoint GET /taskmanager/tasks/{taskid}/status
@required {taskid: any}
@returns(200)
@errors {500}

@endpoint GET /taskmanager/tasks/{taskid}/folder
@required {taskid: any}
@returns(200)
@errors {500}

@endpoint GET /taskmanager/tasks/{taskid}/result
@required {taskid: any}
@returns(200)
@errors {500}

@endpoint GET /taskmanager/tasks/{taskid}/result2
@required {taskid: any}
@returns(200)
@errors {500}

@endpoint GET /taskmanager/tasks/{taskid}/equity
@required {taskid: any}
@optional {count: any, from: any, to: any}
@returns(200)
@errors {500}

@endpoint GET /taskmanager/tasks/{taskid}/equitypct
@required {taskid: any}
@optional {count: any, from: any, to: any}
@returns(200)
@errors {500}

@endpoint GET /taskmanager/tasks/{taskid}/equitypctsm
@required {taskid: any}
@optional {count: any, from: any, to: any}
@returns(200)
@errors {500}

@endpoint GET /taskmanager/tasks/{taskid}/drawdown
@required {taskid: any}
@optional {count: any, from: any, to: any}
@returns(200)
@errors {500}

@endpoint GET /taskmanager/tasks/{taskid}/performance
@required {taskid: any}
@returns(200)
@errors {500}

@endpoint GET /taskmanager/tasks/{taskid}/trades
@required {taskid: any}
@optional {count: any, from: any, to: any}
@returns(200)
@errors {500}

@endpoint GET /taskmanager/tasks/{taskid}/contribution
@required {taskid: any}
@returns(200)
@errors {500}

@endpoint GET /taskmanager/tasks/{taskid}/bymonths
@required {taskid: any}
@returns(200)
@errors {500}

@endpoint GET /taskmanager/tasks/{taskid}/byquarters
@required {taskid: any}
@returns(200)
@errors {500}

@endpoint GET /taskmanager/tasks/{taskid}/byyears
@required {taskid: any}
@returns(200)
@errors {500}

@endgroup

@group builder
@endpoint GET /builder/rules
@optional {filter: any}
@returns(200)
@errors {500}

@endpoint GET /builder/rules/{ruleid}
@required {ruleid: any}
@returns(200)
@errors {500}

@endgroup

@group marketdata
@endpoint GET /marketdata/markets
@returns(200)
@errors {500}

@endpoint GET /marketdata/markets/{name}
@required {name: any}
@returns(200)
@errors {404, 500}

@endpoint GET /marketdata/indicators
@returns(200)
@errors {500}

@endpoint GET /marketdata/indicators/{name}
@required {name: any}
@returns(200)
@errors {404, 500}

@endpoint GET /marketdata/indicators/{name}/histdata
@required {name: any, symbol: any, tf: any}
@optional {from: any, to: any, count: any, params: any}
@returns(200)
@errors {404, 500}

@endpoint GET /marketdata/symbols
@optional {market: any, name: any}
@returns(200)
@errors {500}

@endpoint GET /marketdata/symbols/{name}
@required {name: any}
@returns(200)
@errors {404, 500}

@endpoint GET /marketdata/symbols/{name}/histdata
@required {name: any, tf: any}
@optional {from: any, to: any, count: any}
@returns(200)
@errors {500}

@endpoint GET /marketdata/symbols/{name}/snapshot
@required {name: any}
@optional {dt: any}
@returns(200)
@errors {500}

@endpoint GET /marketdata/symbols/snapshots
@required {body: [str]}
@optional {dt: any}
@returns(200)
@errors {500}

@endgroup

@group cloud
@endpoint GET /cloud/accounts
@returns(200)
@errors {500}

@endpoint GET /cloud/accounts/{accountid}
@required {accountid: any}
@returns(200)
@errors {500}

@endpoint GET /cloud/accounts/{accountid}/orders
@required {accountid: any}
@optional {from: any, to: any, count: any}
@returns(200)
@errors {500}

@endpoint POST /cloud/accounts/{accountid}/orders
@required {accountid: any, body: map}
@returns(202)
@errors {500}

@endpoint DELETE /cloud/accounts/{accountid}/orders/{orderid}
@required {accountid: any, orderid: any}
@returns(202)
@errors {500}

@endpoint GET /cloud/accounts/{accountid}/trades
@required {accountid: any}
@optional {from: any, to: any, count: any}
@returns(200)
@errors {500}

@endpoint GET /cloud/accounts/{accountid}/snapshots
@required {accountid: any}
@optional {from: any, to: any, count: any}
@returns(200)
@errors {500}

@endpoint POST /cloud/accounts/{accountid}/closeall
@required {accountid: any}
@returns(202)
@errors {500}

@endpoint POST /cloud/accounts/{accountid}/close
@required {accountid: any, body: map}
@returns(202)
@errors {500}

@endpoint POST /cloud/accounts/{accountid}/sync
@required {accountid: any}
@returns(202)
@errors {500}

@endpoint GET /cloud/accounts/{accountid}/sync
@required {accountid: any}
@returns(200)
@errors {500}

@endpoint GET /cloud/accounts/{accountid}/commands
@required {accountid: any}
@optional {from: any, to: any, count: any}
@returns(200)
@errors {500}

@endpoint GET /cloud/commands
@optional {count: any}
@returns(200)
@errors {500}

@endpoint GET /cloud/commands/{commandid}
@required {commandid: any}
@returns(200)
@errors {500}

@endpoint GET /cloud/sessions
@returns(200)
@errors {500}

@endpoint GET /cloud/sessions/{sessionid}
@required {sessionid: any}
@returns(200)
@errors {500}

@endpoint GET /cloud/strategies
@returns(200)
@errors {500}

@endpoint GET /cloud/strategies/{strategyid}
@required {strategyid: any}
@returns(200)
@errors {500}

@endpoint POST /cloud/strategies/start
@required {body: map}
@returns(202)
@errors {500}

@endpoint POST /cloud/strategies/{strategyid}/stop
@required {strategyid: any}
@returns(202)
@errors {500}

@endpoint GET /cloud/connectors
@returns(200)
@errors {500}

@endpoint GET /cloud/connectors/{connectorid}
@required {connectorid: any}
@returns(200)
@errors {500}

@endpoint GET /cloud/connections
@returns(200)
@errors {500}

@endpoint POST /cloud/connections
@required {body: map}
@returns(200)
@errors {500}

@endpoint GET /cloud/connections/{connectionid}
@required {connectionid: any}
@returns(200)
@errors {500}

@endpoint PUT /cloud/connections/{connectionid}
@required {connectionid: any, body: map}
@returns(200)
@errors {500}

@endpoint DELETE /cloud/connections/{connectionid}
@required {connectionid: any}
@returns(200)
@errors {500}

@endgroup

@group marketplace
@endpoint GET /marketplace/balance
@returns(200)
@errors {500}

@endpoint GET /marketplace/products
@returns(200)
@errors {500}

@endpoint GET /marketplace/products/{productid}
@required {productid: any}
@returns(200)
@errors {500}

@endpoint GET /marketplace/products/{productid}/rates
@required {productid: any}
@returns(200)
@errors {500}

@endpoint GET /marketplace/groups
@returns(200)
@errors {500}

@endgroup

@end
