# 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"}}}}}}
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.volven.io/api/volven-api/strategy-api/models.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
