# Models

## The priceLimit object

```json
{"openapi":"3.1.0","info":{"title":"Strategy Orchestrator API","version":"0.0.1"},"components":{"schemas":{"priceLimit":{"type":"number","description":"Maximum (for buy side) / minimum (for sell side) price threshold used for every order.","minimum":0}}}}
```

## The orderMaxSize object

```json
{"openapi":"3.1.0","info":{"title":"Strategy Orchestrator API","version":"0.0.1"},"components":{"schemas":{"orderMaxSize":{"type":"number","description":"Max size sent in an order at once. (Iceberg)","minimum":0}}}}
```

## The size object

```json
{"openapi":"3.1.0","info":{"title":"Strategy Orchestrator API","version":"0.0.1"},"components":{"schemas":{"size":{"type":"number","description":"Total size to buy/sell.","minimum":0}}}}
```

## The alwaysPassive object

```json
{"openapi":"3.1.0","info":{"title":"Strategy Orchestrator API","version":"0.0.1"},"components":{"schemas":{"alwaysPassive":{"type":"boolean","description":"Whether to set “post only” flag on each order.\nIf the order was rejected by the Exchange then it will be resent with a backoff policy:\n- initial backoff period = 1s\n- backoff period is doubled after each order rejection\n- strategy will be paused after 9 failed attempts"}}}}
```

## The ignoreWarnings object

```json
{"openapi":"3.1.0","info":{"title":"Strategy Orchestrator API","version":"0.0.1"},"components":{"schemas":{"ignoreWarnings":{"type":"boolean","description":"If true, action will be performed regardless warnings."}}}}
```

## The triggerPrice object

```json
{"openapi":"3.1.0","info":{"title":"Strategy Orchestrator API","version":"0.0.1"},"components":{"schemas":{"triggerPrice":{"type":"number","description":"When that price is crossed then execution of strategy is triggered. Must be greater or equal to product min price"}}}}
```

## The ApiError object

```json
{"openapi":"3.1.0","info":{"title":"Strategy Orchestrator API","version":"0.0.1"},"components":{"schemas":{"ApiError":{"properties":{"timestamp":{"type":"string","format":"date-time"},"status":{"type":"integer","format":"int32"},"path":{"type":"string"},"errorCode":{"type":"string"},"error":{"type":"string"},"errors":{"type":"array","items":{"$ref":"#/components/schemas/ErrorWithFields"},"uniqueItems":true}}},"ErrorWithFields":{"properties":{"fields":{"type":"array","items":{"type":"string"},"minItems":1,"uniqueItems":true},"rejectedValue":{"type":"string"},"description":{"type":"string","minLength":1},"firstField":{"type":"string"}},"required":["description","fields"]}}}}
```

## The ErrorWithFields object

```json
{"openapi":"3.1.0","info":{"title":"Strategy Orchestrator API","version":"0.0.1"},"components":{"schemas":{"ErrorWithFields":{"properties":{"fields":{"type":"array","items":{"type":"string"},"minItems":1,"uniqueItems":true},"rejectedValue":{"type":"string"},"description":{"type":"string","minLength":1},"firstField":{"type":"string"}},"required":["description","fields"]}}}}
```

## The ScheduleOpeningPause object

```json
{"openapi":"3.1.0","info":{"title":"Strategy Orchestrator API","version":"0.0.1"},"components":{"schemas":{"ScheduleOpeningPause":{"properties":{"fromTime":{"type":"string","format":"date-time"},"toTime":{"type":"string","format":"date-time"}},"required":["fromTime","toTime"]}}}}
```

## The FlushPosition object

```json
{"openapi":"3.1.0","info":{"title":"Strategy Orchestrator API","version":"0.0.1"},"components":{"schemas":{"FlushPosition":{"properties":{"longPositionTargetPercentage":{"type":"number"},"shortPositionTargetPercentage":{"type":"number"}},"required":["longPositionTargetPercentage","shortPositionTargetPercentage"]}}}}
```

## The AdditionalInfo object

```json
{"openapi":"3.1.0","info":{"title":"Strategy Orchestrator API","version":"0.0.1"},"components":{"schemas":{"AdditionalInfo":{"properties":{"tradeId":{"type":"string","minLength":1},"hedgeMarketPrice":{"type":"number"},"quoteCurrencyRate":{"type":"number"}},"required":["hedgeMarketPrice","quoteCurrencyRate","tradeId"]}}}}
```

## The Bait object

```json
{"openapi":"3.1.0","info":{"title":"Strategy Orchestrator API","version":"0.0.1"},"components":{"schemas":{"Bait":{"properties":{"productCode":{"type":"string"},"side":{"type":"string","enum":["BUY","SELL"]},"size":{"type":"number"},"value":{"type":"number"}},"required":["productCode","side","size","value"]}}}}
```

## The SubmitTransaction object

```json
{"openapi":"3.1.0","info":{"title":"Strategy Orchestrator API","version":"0.0.1"},"components":{"schemas":{"SubmitTransaction":{"properties":{"bait":{"$ref":"#/components/schemas/Bait"},"quoteCurrency":{"type":"string"},"additionalInfo":{"$ref":"#/components/schemas/AdditionalInfo"}},"required":["additionalInfo","bait","quoteCurrency"]},"Bait":{"properties":{"productCode":{"type":"string"},"side":{"type":"string","enum":["BUY","SELL"]},"size":{"type":"number"},"value":{"type":"number"}},"required":["productCode","side","size","value"]},"AdditionalInfo":{"properties":{"tradeId":{"type":"string","minLength":1},"hedgeMarketPrice":{"type":"number"},"quoteCurrencyRate":{"type":"number"}},"required":["hedgeMarketPrice","quoteCurrencyRate","tradeId"]}}}}
```

## The AllocationQuery object

```json
{"openapi":"3.1.0","info":{"title":"Strategy Orchestrator API","version":"0.0.1"},"components":{"schemas":{"AllocationQuery":{"properties":{"exchangeProducts":{"type":"array","items":{"$ref":"#/components/schemas/ExchangeProduct"},"minItems":1},"side":{"type":"string","enum":["BUY","SELL"]},"feeOffsets":{"type":"array","items":{"$ref":"#/components/schemas/FeeOffset"}},"size":{"type":"number"},"stopLossPrice":{"type":"number"},"estimationMode":{"type":"string","enum":["ORDERBOOK","VOLUME15M"]}},"required":["exchangeProducts","side","size"]},"ExchangeProduct":{"properties":{"exchangeCode":{"type":"string"},"productCode":{"type":"string"}}},"FeeOffset":{"properties":{"exchangeCode":{"type":"string"},"offset":{"type":"number"}}}}}}
```

## The ExchangeProduct object

```json
{"openapi":"3.1.0","info":{"title":"Strategy Orchestrator API","version":"0.0.1"},"components":{"schemas":{"ExchangeProduct":{"properties":{"exchangeCode":{"type":"string"},"productCode":{"type":"string"}}}}}}
```

## The FeeOffset object

```json
{"openapi":"3.1.0","info":{"title":"Strategy Orchestrator API","version":"0.0.1"},"components":{"schemas":{"FeeOffset":{"properties":{"exchangeCode":{"type":"string"},"offset":{"type":"number"}}}}}}
```

## The EstimatedExecution object

```json
{"openapi":"3.1.0","info":{"title":"Strategy Orchestrator API","version":"0.0.1"},"components":{"schemas":{"EstimatedExecution":{"properties":{"accountId":{"type":"string"},"exchangeCode":{"type":"string"},"size":{"type":"number"},"avgPrice":{"type":"number"},"bestOffer":{"type":"number"}}}}}}
```

## The StrategyResponse object

```json
{"openapi":"3.1.0","info":{"title":"Strategy Orchestrator API","version":"0.0.1"},"components":{"schemas":{"StrategyResponse":{"properties":{"strategyId":{"type":"string"},"version":{"type":"integer","format":"int32"},"engineVer":{"type":"integer","format":"int32"},"eventTime":{"type":"string","format":"date-time"},"state":{"type":"object","additionalProperties":{"type":"string"}},"uiParams":{"type":"object","additionalProperties":{"type":"object"}},"uiData":{"type":"string"}}}}}}
```

## The CreateAiRequest object

```json
{"openapi":"3.1.0","info":{"title":"Strategy Orchestrator API","version":"0.0.1"},"components":{"schemas":{"CreateAiRequest":{"properties":{"strategyId":{"type":"string"},"strategyType":{"type":"string","minLength":1},"productCode":{"type":"string","minLength":1},"accountId":{"type":"string","minLength":1},"aiModelVariant":{"type":"string","description":"Defines which type and variant of AI model should be used.\nVFM6 - Volven Flagship Model ver. 6\nVFM7 - Volven Flagship Model ver. 7\nVFM8 - Volven Flagship Model ver. 8","enum":["VFM6","VFM7","VFM8"]},"aiModelPositionMode":{"type":"string","description":"LONG - model will give long recommendations only (base currency allocation will always stay above or equal to 0)\nSHORT - model will give short recommendations only (base currency allocation will always stay below or equal to 0)\nCOMBINED - model will give both long and short recommendations (base currency allocation can be both positive or negative)","enum":["LONG","SHORT","COMBINED"],"pattern":"LONG|SHORT|COMBINED"},"executionType":{"type":"string","description":"Defines how rebalancing will be executed.\nSMO - Smart Order\nSMO_PL - Smart Order with calculated Price Limit\nSMO_MPL - Smart Order with Price Limit from AI Model\nSMO_FDPL - Smart Order with Futures Dynamic Price Limit (available for futures products only)\nSO_VMO - Strategy Order without Price Limit (Volven Market Order)\nSO_PL - Strategy Order with calculated Price Limit","enum":["SMO","SMO_PL","SMO_MPL","SMO_FDPL","SO_VMO","SO_PL"],"pattern":"SMO|SMO_PL|SMO_MPL|SMO_FDPL|SO_VMO|SO_PL"},"useInitialModelPrice":{"type":"boolean","description":"Whether to use initial AI model execution price instead of last received price."},"alwaysPassive":{"$ref":"#/components/schemas/alwaysPassive"},"initialBaseCurrencySize":{"type":"number","description":"Initial allocation of base currency that will be used by the strategy for trading","minimum":0},"initialQuoteCurrencyAmount":{"type":"number","description":"Initial allocation of quote currency that will be used by the strategy for trading","minimum":0},"desiredNetProfitPercentage":{"type":"number","description":"When net profit percentage goes above this value then strategy is stopped and position is closed.","maximum":1,"minimum":0.01},"useSpikeProtection":{"type":"boolean"},"ignoreWarnings":{"$ref":"#/components/schemas/ignoreWarnings"},"autoRun":{"type":"boolean"}},"required":["accountId","initialBaseCurrencySize","initialQuoteCurrencyAmount","productCode","strategyType"]},"alwaysPassive":{"type":"boolean","description":"Whether to set “post only” flag on each order.\nIf the order was rejected by the Exchange then it will be resent with a backoff policy:\n- initial backoff period = 1s\n- backoff period is doubled after each order rejection\n- strategy will be paused after 9 failed attempts"},"ignoreWarnings":{"type":"boolean","description":"If true, action will be performed regardless warnings."}}}}
```

## The CreateAloRequest object

```json
{"openapi":"3.1.0","info":{"title":"Strategy Orchestrator API","version":"0.0.1"},"components":{"schemas":{"CreateAloRequest":{"properties":{"strategyId":{"type":"string"},"strategyType":{"type":"string","minLength":1},"productCode":{"type":"string","minLength":1},"accountId":{"type":"string","minLength":1},"side":{"type":"string","enum":["BUY","SELL"]},"size":{"$ref":"#/components/schemas/size"},"priceLimit":{"$ref":"#/components/schemas/priceLimit"},"executionType":{"type":"string","pattern":"SO|SMO|SC"},"maxActiveTime":{"type":"integer","format":"int32"},"runSmoIfNotFilled":{"type":"boolean"},"aggressiveness":{"type":"number","default":0},"orderMaxSize":{"type":"number"},"takeProfitExecutionType":{"type":"string","pattern":"SO|SMO"},"takeProfitPriceLimit":{"$ref":"#/components/schemas/priceLimit"},"takeProfitAggressiveness":{"type":"number","default":0.5},"takeProfitOrderMaxSize":{"type":"number"},"stopLossExecutionType":{"type":"string","pattern":"SO|SMO"},"stopLossTrigger":{"type":"number","minimum":0},"stopLossPriceLimit":{"$ref":"#/components/schemas/priceLimit"},"stopLossAggressiveness":{"type":"number","default":1},"alwaysPassive":{"$ref":"#/components/schemas/alwaysPassive"},"reduceOnlyEnabled":{"type":"boolean"},"ignoreWarnings":{"$ref":"#/components/schemas/ignoreWarnings"},"autoRun":{"type":"boolean"}},"required":["accountId","productCode","side","size","strategyType"]},"size":{"type":"number","description":"Total size to buy/sell.","minimum":0},"priceLimit":{"type":"number","description":"Maximum (for buy side) / minimum (for sell side) price threshold used for every order.","minimum":0},"alwaysPassive":{"type":"boolean","description":"Whether to set “post only” flag on each order.\nIf the order was rejected by the Exchange then it will be resent with a backoff policy:\n- initial backoff period = 1s\n- backoff period is doubled after each order rejection\n- strategy will be paused after 9 failed attempts"},"ignoreWarnings":{"type":"boolean","description":"If true, action will be performed regardless warnings."}}}}
```

## The BcExecutor object

```json
{"openapi":"3.1.0","info":{"title":"Strategy Orchestrator API","version":"0.0.1"},"components":{"schemas":{"BcExecutor":{"discriminator":{"propertyName":"strategyType"},"properties":{"strategyType":{"type":"string"}},"required":["strategyType"]}}}}
```

## The BcExecutorSc object

```json
{"openapi":"3.1.0","info":{"title":"Strategy Orchestrator API","version":"0.0.1"},"components":{"schemas":{"BcExecutorSc":{"allOf":[{"$ref":"#/components/schemas/BcExecutor"},{"type":"object","properties":{"strategyType":{"type":"string"},"aggressiveness":{"type":"number","description":"Used for calculating the price at which orders are being placed. Calculated price = bid + aggressiveness * avg_spread for BUY side or ask - aggressiveness * avg_spread for SELL side."},"alwaysPassive":{"$ref":"#/components/schemas/alwaysPassive"},"maxActiveTime":{"type":"integer","format":"int32","maximum":900,"minimum":30}}}]},"BcExecutor":{"discriminator":{"propertyName":"strategyType"},"properties":{"strategyType":{"type":"string"}},"required":["strategyType"]},"alwaysPassive":{"type":"boolean","description":"Whether to set “post only” flag on each order.\nIf the order was rejected by the Exchange then it will be resent with a backoff policy:\n- initial backoff period = 1s\n- backoff period is doubled after each order rejection\n- strategy will be paused after 9 failed attempts"}}}}
```

## The BcExecutorSmo object

```json
{"openapi":"3.1.0","info":{"title":"Strategy Orchestrator API","version":"0.0.1"},"components":{"schemas":{"BcExecutorSmo":{"allOf":[{"$ref":"#/components/schemas/BcExecutor"},{"type":"object","properties":{"strategyType":{"type":"string"},"aggressiveness":{"type":"number","description":"Used for calculating the price at which orders are being placed. Calculated price = bid + aggressiveness * avg_spread for BUY side or ask - aggressiveness * avg_spread for SELL side."},"alwaysPassive":{"$ref":"#/components/schemas/alwaysPassive"},"orderMaxSize":{"$ref":"#/components/schemas/orderMaxSize"}}}]},"BcExecutor":{"discriminator":{"propertyName":"strategyType"},"properties":{"strategyType":{"type":"string"}},"required":["strategyType"]},"alwaysPassive":{"type":"boolean","description":"Whether to set “post only” flag on each order.\nIf the order was rejected by the Exchange then it will be resent with a backoff policy:\n- initial backoff period = 1s\n- backoff period is doubled after each order rejection\n- strategy will be paused after 9 failed attempts"},"orderMaxSize":{"type":"number","description":"Max size sent in an order at once. (Iceberg)","minimum":0}}}}
```

## The BcExecutorTwap object

```json
{"openapi":"3.1.0","info":{"title":"Strategy Orchestrator API","version":"0.0.1"},"components":{"schemas":{"BcExecutorTwap":{"allOf":[{"$ref":"#/components/schemas/BcExecutor"},{"type":"object","properties":{"strategyType":{"type":"string"},"aggressiveness":{"type":"number","description":"Used for calculating the price at which orders are being placed. Calculated price = bid + aggressiveness * avg_spread for BUY side or ask - aggressiveness * avg_spread for SELL side."},"alwaysPassive":{"$ref":"#/components/schemas/alwaysPassive"},"maxActiveTime":{"type":"integer","format":"int32","maximum":86400,"minimum":600}}}]},"BcExecutor":{"discriminator":{"propertyName":"strategyType"},"properties":{"strategyType":{"type":"string"}},"required":["strategyType"]},"alwaysPassive":{"type":"boolean","description":"Whether to set “post only” flag on each order.\nIf the order was rejected by the Exchange then it will be resent with a backoff policy:\n- initial backoff period = 1s\n- backoff period is doubled after each order rejection\n- strategy will be paused after 9 failed attempts"}}}}
```

## The CreateBcRequest object

```json
{"openapi":"3.1.0","info":{"title":"Strategy Orchestrator API","version":"0.0.1"},"components":{"schemas":{"CreateBcRequest":{"properties":{"strategyId":{"type":"string"},"strategyType":{"type":"string","minLength":1},"inputs":{"type":"array","items":{"$ref":"#/components/schemas/Input"}},"accountIds":{"type":"array","deprecated":true,"items":{"type":"string","deprecated":true}},"inputCurrencies":{"type":"array","deprecated":true,"items":{"type":"string","deprecated":true}},"inputSizes":{"type":"array","deprecated":true,"items":{"type":"number","deprecated":true}},"outputCurrency":{"type":"string","minLength":1},"includeFiat":{"type":"boolean"},"ignoreImpossibleConversions":{"type":"boolean"},"executor":{"oneOf":[{"$ref":"#/components/schemas/BcExecutorSc"},{"$ref":"#/components/schemas/BcExecutorSmo"},{"$ref":"#/components/schemas/BcExecutorTwap"}]},"ignoreWarnings":{"$ref":"#/components/schemas/ignoreWarnings"},"autoRun":{"type":"boolean"}},"required":["outputCurrency","strategyType"]},"Input":{"properties":{"accountIds":{"type":"array","items":{"type":"string"}},"sourceCurrency":{"type":"string"},"sourceSize":{"type":"number"},"targetCurrency":{"type":"string"},"targetSize":{"type":"number"},"productType":{"type":"string","enum":["SPOT","FUTURES","CFD","SPOT_MARGIN_ISOLATED","SPOT_MARGIN_CROSS"]}},"required":["accountIds","productType","sourceCurrency","targetCurrency"]},"BcExecutorSc":{"allOf":[{"$ref":"#/components/schemas/BcExecutor"},{"type":"object","properties":{"strategyType":{"type":"string"},"aggressiveness":{"type":"number","description":"Used for calculating the price at which orders are being placed. Calculated price = bid + aggressiveness * avg_spread for BUY side or ask - aggressiveness * avg_spread for SELL side."},"alwaysPassive":{"$ref":"#/components/schemas/alwaysPassive"},"maxActiveTime":{"type":"integer","format":"int32","maximum":900,"minimum":30}}}]},"BcExecutor":{"discriminator":{"propertyName":"strategyType"},"properties":{"strategyType":{"type":"string"}},"required":["strategyType"]},"alwaysPassive":{"type":"boolean","description":"Whether to set “post only” flag on each order.\nIf the order was rejected by the Exchange then it will be resent with a backoff policy:\n- initial backoff period = 1s\n- backoff period is doubled after each order rejection\n- strategy will be paused after 9 failed attempts"},"BcExecutorSmo":{"allOf":[{"$ref":"#/components/schemas/BcExecutor"},{"type":"object","properties":{"strategyType":{"type":"string"},"aggressiveness":{"type":"number","description":"Used for calculating the price at which orders are being placed. Calculated price = bid + aggressiveness * avg_spread for BUY side or ask - aggressiveness * avg_spread for SELL side."},"alwaysPassive":{"$ref":"#/components/schemas/alwaysPassive"},"orderMaxSize":{"$ref":"#/components/schemas/orderMaxSize"}}}]},"orderMaxSize":{"type":"number","description":"Max size sent in an order at once. (Iceberg)","minimum":0},"BcExecutorTwap":{"allOf":[{"$ref":"#/components/schemas/BcExecutor"},{"type":"object","properties":{"strategyType":{"type":"string"},"aggressiveness":{"type":"number","description":"Used for calculating the price at which orders are being placed. Calculated price = bid + aggressiveness * avg_spread for BUY side or ask - aggressiveness * avg_spread for SELL side."},"alwaysPassive":{"$ref":"#/components/schemas/alwaysPassive"},"maxActiveTime":{"type":"integer","format":"int32","maximum":86400,"minimum":600}}}]},"ignoreWarnings":{"type":"boolean","description":"If true, action will be performed regardless warnings."}}}}
```

## The Input object

```json
{"openapi":"3.1.0","info":{"title":"Strategy Orchestrator API","version":"0.0.1"},"components":{"schemas":{"Input":{"properties":{"accountIds":{"type":"array","items":{"type":"string"}},"sourceCurrency":{"type":"string"},"sourceSize":{"type":"number"},"targetCurrency":{"type":"string"},"targetSize":{"type":"number"},"productType":{"type":"string","enum":["SPOT","FUTURES","CFD","SPOT_MARGIN_ISOLATED","SPOT_MARGIN_CROSS"]}},"required":["accountIds","productType","sourceCurrency","targetCurrency"]}}}}
```

## The CreateBullRequest object

```json
{"openapi":"3.1.0","info":{"title":"Strategy Orchestrator API","version":"0.0.1"},"components":{"schemas":{"CreateBullRequest":{"properties":{"strategyId":{"type":"string"},"strategyType":{"type":"string","minLength":1},"productCode":{"type":"string","minLength":1},"accountId":{"type":"string","minLength":1},"maxPositionSize":{"type":"number","description":"Passed to every TARB child as max_position_size parameter."},"tempo":{"type":"string","description":"Defines how hourlyVolume should be calculated based on maxPositionSize","minLength":1,"pattern":"LOW|MEDIUM|HIGH"},"useAllowedPositionSize":{"type":"boolean"},"alwaysPassive":{"$ref":"#/components/schemas/alwaysPassive"},"acceptableNetLossPercentage":{"type":"number","maximum":1,"minimum":0.01},"acceptableDrawdownPercentage":{"type":"number","maximum":1,"minimum":0.01},"ignoreWarnings":{"$ref":"#/components/schemas/ignoreWarnings"},"autoRun":{"type":"boolean"}},"required":["accountId","maxPositionSize","productCode","strategyType","tempo"]},"alwaysPassive":{"type":"boolean","description":"Whether to set “post only” flag on each order.\nIf the order was rejected by the Exchange then it will be resent with a backoff policy:\n- initial backoff period = 1s\n- backoff period is doubled after each order rejection\n- strategy will be paused after 9 failed attempts"},"ignoreWarnings":{"type":"boolean","description":"If true, action will be performed regardless warnings."}}}}
```

## The CreateBearRequest object

```json
{"openapi":"3.1.0","info":{"title":"Strategy Orchestrator API","version":"0.0.1"},"components":{"schemas":{"CreateBearRequest":{"properties":{"strategyId":{"type":"string"},"strategyType":{"type":"string","minLength":1},"productCode":{"type":"string","minLength":1},"accountId":{"type":"string","minLength":1},"maxPositionSize":{"type":"number","description":"Passed to every TARB child as max_position_size parameter."},"tempo":{"type":"string","description":"Defines how hourlyVolume should be calculated based on maxPositionSize","minLength":1,"pattern":"LOW|MEDIUM|HIGH"},"useAllowedPositionSize":{"type":"boolean"},"alwaysPassive":{"$ref":"#/components/schemas/alwaysPassive"},"acceptableNetLossPercentage":{"type":"number","maximum":1,"minimum":0.01},"acceptableDrawdownPercentage":{"type":"number","maximum":1,"minimum":0.01},"ignoreWarnings":{"$ref":"#/components/schemas/ignoreWarnings"},"autoRun":{"type":"boolean"}},"required":["accountId","maxPositionSize","productCode","strategyType","tempo"]},"alwaysPassive":{"type":"boolean","description":"Whether to set “post only” flag on each order.\nIf the order was rejected by the Exchange then it will be resent with a backoff policy:\n- initial backoff period = 1s\n- backoff period is doubled after each order rejection\n- strategy will be paused after 9 failed attempts"},"ignoreWarnings":{"type":"boolean","description":"If true, action will be performed regardless warnings."}}}}
```

## The CreateBoRequest object

```json
{"openapi":"3.1.0","info":{"title":"Strategy Orchestrator API","version":"0.0.1"},"components":{"schemas":{"CreateBoRequest":{"properties":{"strategyId":{"type":"string"},"strategyType":{"type":"string","minLength":1},"inputs":{"type":"array","items":{"$ref":"#/components/schemas/Input"}},"ignoreWarnings":{"$ref":"#/components/schemas/ignoreWarnings"},"autoRun":{"type":"boolean"}},"required":["strategyType"]},"Input":{"properties":{"accountIds":{"type":"array","items":{"type":"string"}},"sourceCurrency":{"type":"string"},"sourceSize":{"type":"number"},"targetCurrency":{"type":"string"},"targetSize":{"type":"number"},"productType":{"type":"string","enum":["SPOT","FUTURES","CFD","SPOT_MARGIN_ISOLATED","SPOT_MARGIN_CROSS"]}},"required":["accountIds","productType","sourceCurrency","targetCurrency"]},"ignoreWarnings":{"type":"boolean","description":"If true, action will be performed regardless warnings."}}}}
```

## The CreateCoRequest object

```json
{"openapi":"3.1.0","info":{"title":"Strategy Orchestrator API","version":"0.0.1"},"components":{"schemas":{"CreateCoRequest":{"properties":{"strategyId":{"type":"string"},"strategyType":{"type":"string","minLength":1},"productCode":{"type":"string","minLength":1},"accountId":{"type":"string","minLength":1},"size":{"$ref":"#/components/schemas/size"},"positionMode":{"type":"string","description":"Defines in which direction positions should be opened.\nLONG - long positions only (open with BUY, close with SELL)\nSHORT - short positions only (open with SELL, close with BUY)\nCOMBINED - both long and short positions","enum":["LONG","SHORT","COMBINED"],"pattern":"LONG|SHORT|COMBINED"},"ignoreWarnings":{"$ref":"#/components/schemas/ignoreWarnings"},"autoRun":{"type":"boolean"}},"required":["accountId","productCode","size","strategyType"]},"size":{"type":"number","description":"Total size to buy/sell.","minimum":0},"ignoreWarnings":{"type":"boolean","description":"If true, action will be performed regardless warnings."}}}}
```

## The CreateCrabRequest object

```json
{"openapi":"3.1.0","info":{"title":"Strategy Orchestrator API","version":"0.0.1"},"components":{"schemas":{"CreateCrabRequest":{"properties":{"strategyId":{"type":"string"},"strategyType":{"type":"string","minLength":1},"productCode":{"type":"string","minLength":1},"accountId":{"type":"string","minLength":1},"side":{"type":"string","enum":["BUY","SELL"]},"size":{"$ref":"#/components/schemas/size"},"stdDevWindow":{"type":"number","default":1012,"description":"Size of moving window (in seconds) used to calculate standard deviation of market price."},"stdDevPercThreshold":{"type":"number","default":0.002,"description":"If relative standard deviation of market price is lower than this value then sideways trend is activated."},"ignoreWarnings":{"$ref":"#/components/schemas/ignoreWarnings"},"autoRun":{"type":"boolean"}},"required":["accountId","productCode","side","size","strategyType"]},"size":{"type":"number","description":"Total size to buy/sell.","minimum":0},"ignoreWarnings":{"type":"boolean","description":"If true, action will be performed regardless warnings."}}}}
```

## The CreateDmmRequest object

```json
{"openapi":"3.1.0","info":{"title":"Strategy Orchestrator API","version":"0.0.1"},"components":{"schemas":{"CreateDmmRequest":{"properties":{"strategyId":{"type":"string"},"strategyType":{"type":"string","minLength":1},"productCode":{"type":"string","minLength":1},"accountId":{"type":"string","minLength":1},"hourlyVolume":{"type":"number","description":"Total hourly volume. Half of this value is passed to every TARB child as hourly_volume parameter."},"maxPositionSize":{"type":"number","description":"Passed to every TARB child as max_position_size parameter."},"deviationWindow":{"type":"integer","format":"int32","default":2100,"description":"Size of moving window (in seconds) used to calculate price and volume deviation.","maximum":7200,"minimum":900},"alwaysPassive":{"$ref":"#/components/schemas/alwaysPassive"},"ignoreWarnings":{"$ref":"#/components/schemas/ignoreWarnings"},"autoRun":{"type":"boolean"}},"required":["accountId","hourlyVolume","maxPositionSize","productCode","strategyType"]},"alwaysPassive":{"type":"boolean","description":"Whether to set “post only” flag on each order.\nIf the order was rejected by the Exchange then it will be resent with a backoff policy:\n- initial backoff period = 1s\n- backoff period is doubled after each order rejection\n- strategy will be paused after 9 failed attempts"},"ignoreWarnings":{"type":"boolean","description":"If true, action will be performed regardless warnings."}}}}
```

## The CreateOtcqRequest object

```json
{"openapi":"3.1.0","info":{"title":"Strategy Orchestrator API","version":"0.0.1"},"components":{"schemas":{"CreateOtcqRequest":{"properties":{"strategyId":{"type":"string"},"strategyType":{"type":"string","minLength":1},"exchangeAccountProducts":{"type":"array","items":{"$ref":"#/components/schemas/ExchangeAccountProduct"}},"side":{"type":"string","enum":["BUY","SELL"]},"size":{"$ref":"#/components/schemas/size"},"priceLimit":{"$ref":"#/components/schemas/priceLimit"},"orderMaxSize":{"$ref":"#/components/schemas/orderMaxSize"},"slippage":{"type":"number","default":0},"stopLossTrigger":{"type":"number"},"stopLossVolumeMode":{"type":"string","default":"OFF","pattern":"OFF|ABSOLUTE|DYNAMIC"},"stopLossVolumeDepth":{"type":"number"},"profitMargin":{"type":"number"},"aggressiveness":{"type":"number"},"estimatedExecution":{"type":"array","items":{"$ref":"#/components/schemas/EstimatedExecution"},"minItems":1},"priceOffsets":{"type":"array","deprecated":true,"items":{"$ref":"#/components/schemas/FeeOffset"}},"feeOffsets":{"type":"array","items":{"$ref":"#/components/schemas/FeeOffset"}},"estimationMode":{"type":"string","default":"VOLUME15M","pattern":"ORDERBOOK|VOLUME15M"},"alwaysPassive":{"$ref":"#/components/schemas/alwaysPassive"},"ignoreWarnings":{"$ref":"#/components/schemas/ignoreWarnings"},"autoRun":{"type":"boolean"}},"required":["estimatedExecution","side","size","strategyType"]},"ExchangeAccountProduct":{"properties":{"exchangeCode":{"type":"string"},"accountId":{"type":"string"},"productCode":{"type":"string"}}},"size":{"type":"number","description":"Total size to buy/sell.","minimum":0},"priceLimit":{"type":"number","description":"Maximum (for buy side) / minimum (for sell side) price threshold used for every order.","minimum":0},"orderMaxSize":{"type":"number","description":"Max size sent in an order at once. (Iceberg)","minimum":0},"EstimatedExecution":{"properties":{"accountId":{"type":"string"},"exchangeCode":{"type":"string"},"size":{"type":"number"},"avgPrice":{"type":"number"},"bestOffer":{"type":"number"}}},"FeeOffset":{"properties":{"exchangeCode":{"type":"string"},"offset":{"type":"number"}}},"alwaysPassive":{"type":"boolean","description":"Whether to set “post only” flag on each order.\nIf the order was rejected by the Exchange then it will be resent with a backoff policy:\n- initial backoff period = 1s\n- backoff period is doubled after each order rejection\n- strategy will be paused after 9 failed attempts"},"ignoreWarnings":{"type":"boolean","description":"If true, action will be performed regardless warnings."}}}}
```

## The ExchangeAccountProduct object

```json
{"openapi":"3.1.0","info":{"title":"Strategy Orchestrator API","version":"0.0.1"},"components":{"schemas":{"ExchangeAccountProduct":{"properties":{"exchangeCode":{"type":"string"},"accountId":{"type":"string"},"productCode":{"type":"string"}}}}}}
```

## The CreateScRequest object

```json
{"openapi":"3.1.0","info":{"title":"Strategy Orchestrator API","version":"0.0.1"},"components":{"schemas":{"CreateScRequest":{"properties":{"strategyId":{"type":"string"},"strategyType":{"type":"string","minLength":1},"productCode":{"type":"string","minLength":1},"accountId":{"type":"string","minLength":1},"side":{"type":"string","enum":["BUY","SELL"]},"size":{"$ref":"#/components/schemas/size"},"priceLimit":{"$ref":"#/components/schemas/priceLimit"},"maxActiveTime":{"type":"integer","format":"int32","maximum":900,"minimum":30},"reduceOnlyEnabled":{"type":"boolean"},"alwaysPassive":{"$ref":"#/components/schemas/alwaysPassive"},"ignoreWarnings":{"$ref":"#/components/schemas/ignoreWarnings"},"autoRun":{"type":"boolean"}},"required":["accountId","productCode","side","size","strategyType"]},"size":{"type":"number","description":"Total size to buy/sell.","minimum":0},"priceLimit":{"type":"number","description":"Maximum (for buy side) / minimum (for sell side) price threshold used for every order.","minimum":0},"alwaysPassive":{"type":"boolean","description":"Whether to set “post only” flag on each order.\nIf the order was rejected by the Exchange then it will be resent with a backoff policy:\n- initial backoff period = 1s\n- backoff period is doubled after each order rejection\n- strategy will be paused after 9 failed attempts"},"ignoreWarnings":{"type":"boolean","description":"If true, action will be performed regardless warnings."}}}}
```

## The CreateSmmRequest object

```json
{"openapi":"3.1.0","info":{"title":"Strategy Orchestrator API","version":"0.0.1"},"components":{"schemas":{"CreateSmmRequest":{"properties":{"strategyId":{"type":"string"},"strategyType":{"type":"string","minLength":1},"productCode":{"type":"string","minLength":1},"accountId":{"type":"string","minLength":1},"side":{"type":"string","enum":["BUY","SELL"]},"size":{"$ref":"#/components/schemas/size"},"orderMaxSize":{"$ref":"#/components/schemas/orderMaxSize"},"lossPercent":{"type":"number","description":"SL in % used in Predicted Order (PO) strategy (current loss is calculated for BUY side as 'ask-hedge/ask' and for SELL side as 'hedge-bid/hedge')","maximum":0.25,"minimum":0},"maxDoublingLevels":{"type":"integer","format":"int32","default":4,"description":"Max number of doubling levels (when reached, no more baits will be sent)","maximum":6,"minimum":0},"hedgeLifeSec":{"type":"integer","format":"int32","default":60,"description":"After how many seconds hedge order should be canceled","maximum":300,"minimum":0},"ignoreWarnings":{"$ref":"#/components/schemas/ignoreWarnings"},"autoRun":{"type":"boolean"}},"required":["accountId","productCode","side","size","strategyType"]},"size":{"type":"number","description":"Total size to buy/sell.","minimum":0},"orderMaxSize":{"type":"number","description":"Max size sent in an order at once. (Iceberg)","minimum":0},"ignoreWarnings":{"type":"boolean","description":"If true, action will be performed regardless warnings."}}}}
```

## The CreateSmoRequest object

```json
{"openapi":"3.1.0","info":{"title":"Strategy Orchestrator API","version":"0.0.1"},"components":{"schemas":{"CreateSmoRequest":{"properties":{"strategyId":{"type":"string"},"strategyType":{"type":"string","minLength":1},"productCode":{"type":"string","minLength":1},"accountId":{"type":"string","minLength":1},"side":{"type":"string","enum":["BUY","SELL"]},"size":{"$ref":"#/components/schemas/size"},"priceLimit":{"$ref":"#/components/schemas/priceLimit"},"orderMaxSize":{"$ref":"#/components/schemas/orderMaxSize"},"aggressiveness":{"type":"number","description":"Used for calculating the price at which orders are being placed. Calculated price = bid + aggressiveness * avg_spread for BUY side or ask - aggressiveness * avg_spread for SELL side."},"useSpikeProtection":{"type":"boolean"},"triggerPrice":{"$ref":"#/components/schemas/triggerPrice"},"reduceOnlyEnabled":{"type":"boolean"},"alwaysPassive":{"$ref":"#/components/schemas/alwaysPassive"},"ignoreWarnings":{"$ref":"#/components/schemas/ignoreWarnings"},"autoRun":{"type":"boolean"}},"required":["accountId","productCode","side","size","strategyType"]},"size":{"type":"number","description":"Total size to buy/sell.","minimum":0},"priceLimit":{"type":"number","description":"Maximum (for buy side) / minimum (for sell side) price threshold used for every order.","minimum":0},"orderMaxSize":{"type":"number","description":"Max size sent in an order at once. (Iceberg)","minimum":0},"triggerPrice":{"type":"number","description":"When that price is crossed then execution of strategy is triggered. Must be greater or equal to product min price"},"alwaysPassive":{"type":"boolean","description":"Whether to set “post only” flag on each order.\nIf the order was rejected by the Exchange then it will be resent with a backoff policy:\n- initial backoff period = 1s\n- backoff period is doubled after each order rejection\n- strategy will be paused after 9 failed attempts"},"ignoreWarnings":{"type":"boolean","description":"If true, action will be performed regardless warnings."}}}}
```

## The CreateEtfRequest object

```json
{"openapi":"3.1.0","info":{"title":"Strategy Orchestrator API","version":"0.0.1"},"components":{"schemas":{"CreateEtfRequest":{"properties":{"strategyId":{"type":"string"},"strategyType":{"type":"string","minLength":1},"exchangeAccountProducts":{"type":"array","items":{"$ref":"#/components/schemas/ExchangeAccountProduct"}},"side":{"type":"string","enum":["BUY","SELL"]},"size":{"$ref":"#/components/schemas/size"},"priceLimit":{"$ref":"#/components/schemas/priceLimit"},"orderMaxSize":{"$ref":"#/components/schemas/orderMaxSize"},"aggressiveness":{"type":"number","description":"Used for calculating the price at which orders are being placed. Calculated price = bid + aggressiveness * avg_spread for BUY side or ask - aggressiveness * avg_spread for SELL side."},"maxRunningTime":{"type":"integer","format":"int32","maximum":86400,"minimum":600},"numberOfSlices":{"type":"integer","format":"int32","maximum":100,"minimum":3},"sliceExecutionTime":{"type":"integer","format":"int32","minimum":1},"aggressivenessBoostStartOffset":{"type":"integer","format":"int32","deprecated":true},"aggressivenessBoostEndOffset":{"type":"integer","format":"int32","deprecated":true},"initialAggressivenessBoostSeconds":{"type":"integer","format":"int32"},"closingAggressivenessBoostSeconds":{"type":"integer","format":"int32"},"reallocationInterval":{"type":"integer","format":"int32","minimum":1},"slippage":{"type":"number","maximum":0.1,"minimum":0},"priceOffsets":{"type":"array","deprecated":true,"items":{"$ref":"#/components/schemas/FeeOffset"}},"feeOffsets":{"type":"array","items":{"$ref":"#/components/schemas/FeeOffset"}},"volumePercentageAtRisk":{"type":"number","maximum":0.5,"minimum":0},"alwaysPassive":{"$ref":"#/components/schemas/alwaysPassive"},"useFeeOffsetsCalculation":{"type":"boolean"},"estimationMode":{"type":"string","default":"VOLUME15M","pattern":"ORDERBOOK|VOLUME15M"},"triggerAt":{"type":"string","format":"date-time"},"ignoreWarnings":{"$ref":"#/components/schemas/ignoreWarnings"},"autoRun":{"type":"boolean"}},"required":["maxRunningTime","numberOfSlices","side","size","sliceExecutionTime","strategyType"]},"ExchangeAccountProduct":{"properties":{"exchangeCode":{"type":"string"},"accountId":{"type":"string"},"productCode":{"type":"string"}}},"size":{"type":"number","description":"Total size to buy/sell.","minimum":0},"priceLimit":{"type":"number","description":"Maximum (for buy side) / minimum (for sell side) price threshold used for every order.","minimum":0},"orderMaxSize":{"type":"number","description":"Max size sent in an order at once. (Iceberg)","minimum":0},"FeeOffset":{"properties":{"exchangeCode":{"type":"string"},"offset":{"type":"number"}}},"alwaysPassive":{"type":"boolean","description":"Whether to set “post only” flag on each order.\nIf the order was rejected by the Exchange then it will be resent with a backoff policy:\n- initial backoff period = 1s\n- backoff period is doubled after each order rejection\n- strategy will be paused after 9 failed attempts"},"ignoreWarnings":{"type":"boolean","description":"If true, action will be performed regardless warnings."}}}}
```

## The CreateSoRequest object

```json
{"openapi":"3.1.0","info":{"title":"Strategy Orchestrator API","version":"0.0.1"},"components":{"schemas":{"CreateSoRequest":{"properties":{"strategyId":{"type":"string"},"strategyType":{"type":"string","minLength":1},"productCode":{"type":"string","minLength":1},"accountId":{"type":"string","minLength":1},"side":{"type":"string","enum":["BUY","SELL"]},"size":{"$ref":"#/components/schemas/size"},"priceLimit":{"$ref":"#/components/schemas/priceLimit"},"alwaysPassive":{"$ref":"#/components/schemas/alwaysPassive"},"ignoreWarnings":{"$ref":"#/components/schemas/ignoreWarnings"},"autoRun":{"type":"boolean"}},"required":["accountId","priceLimit","productCode","side","size","strategyType"]},"size":{"type":"number","description":"Total size to buy/sell.","minimum":0},"priceLimit":{"type":"number","description":"Maximum (for buy side) / minimum (for sell side) price threshold used for every order.","minimum":0},"alwaysPassive":{"type":"boolean","description":"Whether to set “post only” flag on each order.\nIf the order was rejected by the Exchange then it will be resent with a backoff policy:\n- initial backoff period = 1s\n- backoff period is doubled after each order rejection\n- strategy will be paused after 9 failed attempts"},"ignoreWarnings":{"type":"boolean","description":"If true, action will be performed regardless warnings."}}}}
```

## The CreateTarbRequest object

```json
{"openapi":"3.1.0","info":{"title":"Strategy Orchestrator API","version":"0.0.1"},"components":{"schemas":{"CreateTarbRequest":{"properties":{"strategyId":{"type":"string"},"strategyType":{"type":"string","minLength":1},"productCode":{"type":"string","minLength":1},"accountId":{"type":"string","minLength":1},"side":{"type":"string","enum":["BUY","SELL"]},"size":{"$ref":"#/components/schemas/size"},"priceLimit":{"$ref":"#/components/schemas/priceLimit"},"takeProfitPricePercentage":{"type":"number","description":"Take Profit TWAP’s price_limit param will be updated every time Opening TWAP’s average_price changes. It will be set to average_price * (100% +/- take_profit_price_percentage).","maximum":1,"minimum":0},"stopLossPricePercentage":{"type":"number","description":"Stop Loss TWAP’s price_limit param will be updated every time Opening TWAP’s average_price changes. It will be set to average_price * (100% +/- take_profit_price_percentage).","maximum":1,"minimum":0},"triggerPrice":{"$ref":"#/components/schemas/triggerPrice"},"triggerTime":{"type":"integer","format":"int32","description":"Time after which strategy will start trading","minimum":0},"twapMaxActiveTime":{"type":"integer","format":"int32","maximum":8640000,"minimum":600},"happyLevelLimitOpening":{"type":"number"},"happyLevelLimitTp":{"type":"number"},"reduceOnlyEnabled":{"type":"boolean"},"alwaysPassive":{"$ref":"#/components/schemas/alwaysPassive"},"ignoreWarnings":{"$ref":"#/components/schemas/ignoreWarnings"},"autoRun":{"type":"boolean"}},"required":["accountId","productCode","side","size","strategyType","takeProfitPricePercentage"]},"size":{"type":"number","description":"Total size to buy/sell.","minimum":0},"priceLimit":{"type":"number","description":"Maximum (for buy side) / minimum (for sell side) price threshold used for every order.","minimum":0},"triggerPrice":{"type":"number","description":"When that price is crossed then execution of strategy is triggered. Must be greater or equal to product min price"},"alwaysPassive":{"type":"boolean","description":"Whether to set “post only” flag on each order.\nIf the order was rejected by the Exchange then it will be resent with a backoff policy:\n- initial backoff period = 1s\n- backoff period is doubled after each order rejection\n- strategy will be paused after 9 failed attempts"},"ignoreWarnings":{"type":"boolean","description":"If true, action will be performed regardless warnings."}}}}
```

## The CreateTmmRequest object

```json
{"openapi":"3.1.0","info":{"title":"Strategy Orchestrator API","version":"0.0.1"},"components":{"schemas":{"CreateTmmRequest":{"properties":{"strategyId":{"type":"string"},"strategyType":{"type":"string","minLength":1},"productCode":{"type":"string","minLength":1},"accountId":{"type":"string","minLength":1},"reduceOnlyEnabled":{"type":"boolean"},"hourlyVolume":{"type":"number","description":"Total hourly volume. Half of this value is passed to every TARB child as hourly_volume parameter."},"alwaysPassive":{"$ref":"#/components/schemas/alwaysPassive"},"maxPositionSize":{"type":"number","description":"Passed to every TARB child as max_position_size parameter."},"happyLevelPositionPercentage":{"type":"number","maximum":1,"minimum":0},"takeProfitPricePercentage":{"type":"number","maximum":1,"minimum":0},"volumePercentageAtRisk":{"type":"number","maximum":1,"minimum":0.01},"usePositionRebalancing":{"type":"boolean"},"positionNetting":{"type":"number","deprecated":true,"maximum":1,"minimum":0},"longPositionRebalancingThreshold":{"type":"number","maximum":1,"minimum":0},"shortPositionRebalancingThreshold":{"type":"number","maximum":1,"minimum":0},"lowVolatilityMode":{"type":"string","default":"NONE","description":"Defines which child strategy type should be active during low volatility market.","pattern":"NONE|TARB|CRAB"},"lowVolatilityThreshold":{"type":"string","pattern":"LOW|MEDIUM|HIGH"},"stdDevPercThreshold":{"type":"number"},"deviationWindow":{"type":"integer","format":"int32","default":2100,"description":"Size of moving window (in seconds) used to calculate price and volume deviation.","maximum":7200,"minimum":900},"useTargetVolumeFromParent":{"type":"boolean"},"acceptableNetLossPercentage":{"type":"number","maximum":1,"minimum":0.01},"acceptableDrawdownPercentage":{"type":"number","maximum":1,"minimum":0.01},"ignoreWarnings":{"$ref":"#/components/schemas/ignoreWarnings"},"autoRun":{"type":"boolean"}},"required":["accountId","hourlyVolume","maxPositionSize","productCode","strategyType"]},"alwaysPassive":{"type":"boolean","description":"Whether to set “post only” flag on each order.\nIf the order was rejected by the Exchange then it will be resent with a backoff policy:\n- initial backoff period = 1s\n- backoff period is doubled after each order rejection\n- strategy will be paused after 9 failed attempts"},"ignoreWarnings":{"type":"boolean","description":"If true, action will be performed regardless warnings."}}}}
```

## The CreateTwapRequest object

```json
{"openapi":"3.1.0","info":{"title":"Strategy Orchestrator API","version":"0.0.1"},"components":{"schemas":{"CreateTwapRequest":{"properties":{"strategyId":{"type":"string"},"strategyType":{"type":"string","minLength":1},"productCode":{"type":"string","minLength":1},"accountId":{"type":"string","minLength":1},"side":{"type":"string","enum":["BUY","SELL"]},"size":{"$ref":"#/components/schemas/size"},"priceLimit":{"$ref":"#/components/schemas/priceLimit"},"happyLevelLimit":{"type":"number"},"triggerPrice":{"$ref":"#/components/schemas/triggerPrice"},"triggerTime":{"type":"integer","format":"int32","description":"Time when strategy will be started, up 4 hours","minimum":0},"maxActiveTime":{"type":"integer","format":"int32","maximum":8640000,"minimum":600},"reduceOnlyEnabled":{"type":"boolean"},"alwaysPassive":{"$ref":"#/components/schemas/alwaysPassive"},"ignoreWarnings":{"$ref":"#/components/schemas/ignoreWarnings"},"autoRun":{"type":"boolean"}},"required":["accountId","productCode","side","size","strategyType"]},"size":{"type":"number","description":"Total size to buy/sell.","minimum":0},"priceLimit":{"type":"number","description":"Maximum (for buy side) / minimum (for sell side) price threshold used for every order.","minimum":0},"triggerPrice":{"type":"number","description":"When that price is crossed then execution of strategy is triggered. Must be greater or equal to product min price"},"alwaysPassive":{"type":"boolean","description":"Whether to set “post only” flag on each order.\nIf the order was rejected by the Exchange then it will be resent with a backoff policy:\n- initial backoff period = 1s\n- backoff period is doubled after each order rejection\n- strategy will be paused after 9 failed attempts"},"ignoreWarnings":{"type":"boolean","description":"If true, action will be performed regardless warnings."}}}}
```

## The CreateAlsRequest object

```json
{"openapi":"3.1.0","info":{"title":"Strategy Orchestrator API","version":"0.0.1"},"components":{"schemas":{"CreateAlsRequest":{"properties":{"strategyId":{"type":"string"},"strategyType":{"type":"string","minLength":1},"productCode":{"type":"string","minLength":1},"accountId":{"type":"string","minLength":1},"positionMode":{"type":"string","enum":["LONG","SHORT","COMBINED"]},"maxPositionSize":{"type":"number"},"aggressiveness":{"type":"number","default":0},"orderMaxSize":{"$ref":"#/components/schemas/orderMaxSize"},"alwaysPassive":{"$ref":"#/components/schemas/alwaysPassive"},"ignoreWarnings":{"$ref":"#/components/schemas/ignoreWarnings"},"autoRun":{"type":"boolean"}},"required":["accountId","maxPositionSize","positionMode","productCode","strategyType"]},"orderMaxSize":{"type":"number","description":"Max size sent in an order at once. (Iceberg)","minimum":0},"alwaysPassive":{"type":"boolean","description":"Whether to set “post only” flag on each order.\nIf the order was rejected by the Exchange then it will be resent with a backoff policy:\n- initial backoff period = 1s\n- backoff period is doubled after each order rejection\n- strategy will be paused after 9 failed attempts"},"ignoreWarnings":{"type":"boolean","description":"If true, action will be performed regardless warnings."}}}}
```

## The CreateAhRequest object

```json
{"openapi":"3.1.0","info":{"title":"Strategy Orchestrator API","version":"0.0.1"},"components":{"schemas":{"CreateAhRequest":{"properties":{"strategyId":{"type":"string"},"strategyType":{"type":"string","minLength":1},"cryptoAccountId":{"type":"string","minLength":1},"forexAccountId":{"type":"string"},"baits":{"type":"array","items":{"$ref":"#/components/schemas/Bait"}},"quoteCurrency":{"type":"string"},"runMode":{"type":"string","enum":["INSTANT","BACKGROUND"]},"maxProductImbalances":{"type":"array","items":{"$ref":"#/components/schemas/MaxProductImbalance"}},"alwaysPassive":{"$ref":"#/components/schemas/alwaysPassive"},"aggressiveness":{"type":"number"},"orderMaxValue":{"type":"number"},"maxOrderLifetime":{"type":"integer","format":"int32"},"fairPriceMargin":{"type":"number"},"ignoreWarnings":{"$ref":"#/components/schemas/ignoreWarnings"},"autoRun":{"type":"boolean"}},"required":["cryptoAccountId","strategyType"]},"Bait":{"properties":{"productCode":{"type":"string"},"side":{"type":"string","enum":["BUY","SELL"]},"size":{"type":"number"},"value":{"type":"number"}},"required":["productCode","side","size","value"]},"MaxProductImbalance":{"properties":{"productCode":{"type":"string"},"maxImbalance":{"type":"number"}},"required":["maxImbalance","productCode"]},"alwaysPassive":{"type":"boolean","description":"Whether to set “post only” flag on each order.\nIf the order was rejected by the Exchange then it will be resent with a backoff policy:\n- initial backoff period = 1s\n- backoff period is doubled after each order rejection\n- strategy will be paused after 9 failed attempts"},"ignoreWarnings":{"type":"boolean","description":"If true, action will be performed regardless warnings."}}}}
```

## The MaxProductImbalance object

```json
{"openapi":"3.1.0","info":{"title":"Strategy Orchestrator API","version":"0.0.1"},"components":{"schemas":{"MaxProductImbalance":{"properties":{"productCode":{"type":"string"},"maxImbalance":{"type":"number"}},"required":["maxImbalance","productCode"]}}}}
```

## The AccountSize object

```json
{"openapi":"3.1.0","info":{"title":"Strategy Orchestrator API","version":"0.0.1"},"components":{"schemas":{"AccountSize":{"properties":{"accountId":{"type":"string","minLength":1},"size":{"$ref":"#/components/schemas/size"}},"required":["accountId","size"]},"size":{"type":"number","description":"Total size to buy/sell.","minimum":0}}}}
```

## The CreateCtRequest object

```json
{"openapi":"3.1.0","info":{"title":"Strategy Orchestrator API","version":"0.0.1"},"components":{"schemas":{"CreateCtRequest":{"properties":{"strategyId":{"type":"string"},"strategyType":{"type":"string","minLength":1},"productCode":{"type":"string","minLength":1},"accountSizes":{"type":"array","items":{"$ref":"#/components/schemas/AccountSize"},"minItems":1},"side":{"type":"string","enum":["BUY","SELL"]},"priceLimit":{"$ref":"#/components/schemas/priceLimit"},"orderMaxSize":{"$ref":"#/components/schemas/orderMaxSize"},"aggressiveness":{"type":"number","description":"Used for calculating the price at which orders are being placed. Calculated price = bid + aggressiveness * avg_spread for BUY side or ask - aggressiveness * avg_spread for SELL side."},"useSpikeProtection":{"type":"boolean"},"triggerPrice":{"$ref":"#/components/schemas/triggerPrice"},"reduceOnlyEnabled":{"type":"boolean"},"alwaysPassive":{"$ref":"#/components/schemas/alwaysPassive"},"ignoreWarnings":{"$ref":"#/components/schemas/ignoreWarnings"},"autoRun":{"type":"boolean"}},"required":["accountSizes","productCode","side","strategyType"]},"AccountSize":{"properties":{"accountId":{"type":"string","minLength":1},"size":{"$ref":"#/components/schemas/size"}},"required":["accountId","size"]},"size":{"type":"number","description":"Total size to buy/sell.","minimum":0},"priceLimit":{"type":"number","description":"Maximum (for buy side) / minimum (for sell side) price threshold used for every order.","minimum":0},"orderMaxSize":{"type":"number","description":"Max size sent in an order at once. (Iceberg)","minimum":0},"triggerPrice":{"type":"number","description":"When that price is crossed then execution of strategy is triggered. Must be greater or equal to product min price"},"alwaysPassive":{"type":"boolean","description":"Whether to set “post only” flag on each order.\nIf the order was rejected by the Exchange then it will be resent with a backoff policy:\n- initial backoff period = 1s\n- backoff period is doubled after each order rejection\n- strategy will be paused after 9 failed attempts"},"ignoreWarnings":{"type":"boolean","description":"If true, action will be performed regardless warnings."}}}}
```

## The StrategyResult object

```json
{"openapi":"3.1.0","info":{"title":"Strategy Orchestrator API","version":"0.0.1"},"components":{"schemas":{"StrategyResult":{"properties":{"strategyId":{"type":"string"}}}}}}
```

## The ModifySoRequest object

```json
{"openapi":"3.1.0","info":{"title":"Strategy Orchestrator API","version":"0.0.1"},"components":{"schemas":{"ModifySoRequest":{"properties":{"priceLimit":{"$ref":"#/components/schemas/priceLimit"},"ignoreWarnings":{"$ref":"#/components/schemas/ignoreWarnings"}}},"priceLimit":{"type":"number","description":"Maximum (for buy side) / minimum (for sell side) price threshold used for every order.","minimum":0},"ignoreWarnings":{"type":"boolean","description":"If true, action will be performed regardless warnings."}}}}
```

## The ModifySmoRequest object

```json
{"openapi":"3.1.0","info":{"title":"Strategy Orchestrator API","version":"0.0.1"},"components":{"schemas":{"ModifySmoRequest":{"properties":{"priceLimit":{"$ref":"#/components/schemas/priceLimit"},"orderMaxSize":{"$ref":"#/components/schemas/orderMaxSize"},"aggressiveness":{"type":"number","default":0,"description":"Used for calculating the price at which orders are being placed. Calculated price = bid + aggressiveness * avg_spread for BUY side or ask - aggressiveness * avg_spread for SELL side.","maximum":1,"minimum":-100},"triggerPrice":{"$ref":"#/components/schemas/triggerPrice"},"ignoreWarnings":{"$ref":"#/components/schemas/ignoreWarnings"}}},"priceLimit":{"type":"number","description":"Maximum (for buy side) / minimum (for sell side) price threshold used for every order.","minimum":0},"orderMaxSize":{"type":"number","description":"Max size sent in an order at once. (Iceberg)","minimum":0},"triggerPrice":{"type":"number","description":"When that price is crossed then execution of strategy is triggered. Must be greater or equal to product min price"},"ignoreWarnings":{"type":"boolean","description":"If true, action will be performed regardless warnings."}}}}
```

## The ModifyScRequest object

```json
{"openapi":"3.1.0","info":{"title":"Strategy Orchestrator API","version":"0.0.1"},"components":{"schemas":{"ModifyScRequest":{"properties":{"priceLimit":{"$ref":"#/components/schemas/priceLimit"},"ignoreWarnings":{"$ref":"#/components/schemas/ignoreWarnings"}}},"priceLimit":{"type":"number","description":"Maximum (for buy side) / minimum (for sell side) price threshold used for every order.","minimum":0},"ignoreWarnings":{"type":"boolean","description":"If true, action will be performed regardless warnings."}}}}
```

## The ModifyTwapRequest object

```json
{"openapi":"3.1.0","info":{"title":"Strategy Orchestrator API","version":"0.0.1"},"components":{"schemas":{"ModifyTwapRequest":{"properties":{"priceLimit":{"$ref":"#/components/schemas/priceLimit"},"happyLevelLimit":{"type":"number"},"triggerPrice":{"$ref":"#/components/schemas/triggerPrice"},"ignoreWarnings":{"$ref":"#/components/schemas/ignoreWarnings"}}},"priceLimit":{"type":"number","description":"Maximum (for buy side) / minimum (for sell side) price threshold used for every order.","minimum":0},"triggerPrice":{"type":"number","description":"When that price is crossed then execution of strategy is triggered. Must be greater or equal to product min price"},"ignoreWarnings":{"type":"boolean","description":"If true, action will be performed regardless warnings."}}}}
```

## The ModifyTarbRequest object

```json
{"openapi":"3.1.0","info":{"title":"Strategy Orchestrator API","version":"0.0.1"},"components":{"schemas":{"ModifyTarbRequest":{"properties":{"priceLimit":{"$ref":"#/components/schemas/priceLimit"},"happyLevelLimitOpening":{"type":"number"},"happyLevelLimitTp":{"type":"number"},"triggerPrice":{"$ref":"#/components/schemas/triggerPrice"},"ignoreWarnings":{"$ref":"#/components/schemas/ignoreWarnings"}}},"priceLimit":{"type":"number","description":"Maximum (for buy side) / minimum (for sell side) price threshold used for every order.","minimum":0},"triggerPrice":{"type":"number","description":"When that price is crossed then execution of strategy is triggered. Must be greater or equal to product min price"},"ignoreWarnings":{"type":"boolean","description":"If true, action will be performed regardless warnings."}}}}
```

## The ModifyAloRequest object

```json
{"openapi":"3.1.0","info":{"title":"Strategy Orchestrator API","version":"0.0.1"},"components":{"schemas":{"ModifyAloRequest":{"properties":{"priceLimit":{"$ref":"#/components/schemas/priceLimit"},"aggressiveness":{"type":"number"},"orderMaxSize":{"type":"number"},"takeProfitPriceLimit":{"$ref":"#/components/schemas/priceLimit"},"takeProfitAggressiveness":{"type":"number"},"takeProfitOrderMaxSize":{"type":"number"},"stopLossPriceLimit":{"$ref":"#/components/schemas/priceLimit"},"stopLossTrigger":{"$ref":"#/components/schemas/priceLimit"},"stopLossAggressiveness":{"type":"number"},"ignoreWarnings":{"$ref":"#/components/schemas/ignoreWarnings"}}},"priceLimit":{"type":"number","description":"Maximum (for buy side) / minimum (for sell side) price threshold used for every order.","minimum":0},"ignoreWarnings":{"type":"boolean","description":"If true, action will be performed regardless warnings."}}}}
```

## The ModifyTmmRequest object

```json
{"openapi":"3.1.0","info":{"title":"Strategy Orchestrator API","version":"0.0.1"},"components":{"schemas":{"ModifyTmmRequest":{"properties":{"ignoreWarnings":{"$ref":"#/components/schemas/ignoreWarnings"}}},"ignoreWarnings":{"type":"boolean","description":"If true, action will be performed regardless warnings."}}}}
```

## The ModifyDmmRequest object

```json
{"openapi":"3.1.0","info":{"title":"Strategy Orchestrator API","version":"0.0.1"},"components":{"schemas":{"ModifyDmmRequest":{"properties":{"ignoreWarnings":{"$ref":"#/components/schemas/ignoreWarnings"}}},"ignoreWarnings":{"type":"boolean","description":"If true, action will be performed regardless warnings."}}}}
```

## The ModifySmmRequest object

```json
{"openapi":"3.1.0","info":{"title":"Strategy Orchestrator API","version":"0.0.1"},"components":{"schemas":{"ModifySmmRequest":{"properties":{"size":{"type":"number"},"orderMaxSize":{"$ref":"#/components/schemas/orderMaxSize"},"lossPercent":{"type":"number"},"maxDoublingLevels":{"type":"integer","format":"int32"},"hedgeLifeSec":{"type":"integer","format":"int32"},"ignoreWarnings":{"$ref":"#/components/schemas/ignoreWarnings"}}},"orderMaxSize":{"type":"number","description":"Max size sent in an order at once. (Iceberg)","minimum":0},"ignoreWarnings":{"type":"boolean","description":"If true, action will be performed regardless warnings."}}}}
```

## The ModifyCrabRequest object

```json
{"openapi":"3.1.0","info":{"title":"Strategy Orchestrator API","version":"0.0.1"},"components":{"schemas":{"ModifyCrabRequest":{"properties":{"ignoreWarnings":{"$ref":"#/components/schemas/ignoreWarnings"}}},"ignoreWarnings":{"type":"boolean","description":"If true, action will be performed regardless warnings."}}}}
```

## The ModifyBullRequest object

```json
{"openapi":"3.1.0","info":{"title":"Strategy Orchestrator API","version":"0.0.1"},"components":{"schemas":{"ModifyBullRequest":{"properties":{"ignoreWarnings":{"$ref":"#/components/schemas/ignoreWarnings"}}},"ignoreWarnings":{"type":"boolean","description":"If true, action will be performed regardless warnings."}}}}
```

## The ModifyBearRequest object

```json
{"openapi":"3.1.0","info":{"title":"Strategy Orchestrator API","version":"0.0.1"},"components":{"schemas":{"ModifyBearRequest":{"properties":{"ignoreWarnings":{"$ref":"#/components/schemas/ignoreWarnings"}}},"ignoreWarnings":{"type":"boolean","description":"If true, action will be performed regardless warnings."}}}}
```

## The StrategyParameter object

```json
{"openapi":"3.1.0","info":{"title":"Strategy Orchestrator API","version":"0.0.1"},"components":{"schemas":{"StrategyParameter":{"properties":{"mandatory":{"type":"boolean"},"name":{"type":"string"},"dataType":{"type":"string","enum":["STRING","DECIMAL","LONG","FLAG","DATE","TIME","DATETIME","COMPONENT"]},"mutability":{"type":"string","enum":["INIT","NOT_RUNNING","ALWAYS"]},"defaultValue":{"type":"string"}}}}}}
```

## The StrategyType object

```json
{"openapi":"3.1.0","info":{"title":"Strategy Orchestrator API","version":"0.0.1"},"components":{"schemas":{"StrategyType":{"properties":{"strategyType":{"type":"string"},"params":{"type":"array","items":{"$ref":"#/components/schemas/StrategyParameter"}}}},"StrategyParameter":{"properties":{"mandatory":{"type":"boolean"},"name":{"type":"string"},"dataType":{"type":"string","enum":["STRING","DECIMAL","LONG","FLAG","DATE","TIME","DATETIME","COMPONENT"]},"mutability":{"type":"string","enum":["INIT","NOT_RUNNING","ALWAYS"]},"defaultValue":{"type":"string"}}}}}}
```
