From 5b72b56fbb3b1611e49dae0bf1788a86e8d7138b Mon Sep 17 00:00:00 2001 From: Herklos Date: Sat, 16 May 2026 23:47:05 +0200 Subject: [PATCH 1/2] [Protocol] generate:typescript: snake_case fields, slim publishable lib MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Switches `generate:typescript` to `-g typescript` (plain) with `modelPropertyNaming=original` so schema field names stay snake_case (e.g. `created_at`, `pair_settings`). Adds a post-processor (`scripts/postprocess-protocol-typescript.mjs`) that strips the now-broken `HttpFile` import emitted under `--global-property models` (no `http/` supporting dir generated) and writes a `models/index.ts` barrel re-exporting every model. The `octobot_protocol_ts/` shell package is slimmed to a types-only npm package: `types: "./models/index.ts"`, `files: ["models"]`, no runtime `index.js`. Clean script keep-set narrowed to `package.json` only — `index.js`, `index.d.ts`, `schema.d.ts` no longer needed. Resulting package: ~12 kB packed, 86 files. Co-Authored-By: Claude Opus 4.7 (1M context) --- packages/protocol/.gitignore | 1 - packages/protocol/.openapi-generator/FILES | 9 - packages/protocol/docs/CopyConfiguration.md | 2 +- .../docs/CreateAccountConfiguration.md | 2 +- .../docs/CreateAutomationConfiguration.md | 2 +- packages/protocol/docs/DCAConfiguration.md | 2 +- .../docs/DeleteAccountConfiguration.md | 2 +- .../docs/EMAMomentumEvaluatorConfiguration.md | 2 +- .../protocol/docs/EditAccountConfiguration.md | 2 +- .../docs/EditAutomationConfiguration.md | 2 +- .../EvaluatorConfigurationConfiguration.md | 2 +- .../docs/GenericProcessConfiguration.md | 2 +- .../docs/GenericWorkflowConfiguration.md | 2 +- packages/protocol/docs/GridConfiguration.md | 2 +- packages/protocol/docs/IndexConfiguration.md | 2 +- .../docs/MarketMakingConfiguration.md | 2 +- .../docs/RSIMomentumEvaluatorConfiguration.md | 2 +- .../docs/RefreshAccountsConfiguration.md | 2 +- .../docs/StopAutomationConfiguration.md | 2 +- .../protocol/docs/StrategyConfiguration.md | 2 +- .../protocol/docs/UserActionConfiguration.md | 2 +- .../octobot_protocol/models/__init__.py | 3 - .../models/action_configuration_type.py | 42 ----- .../models/copy_configuration.py | 12 +- .../models/create_account_configuration.py | 12 +- .../models/create_automation_configuration.py | 12 +- .../models/dca_configuration.py | 10 +- .../models/delete_account_configuration.py | 12 +- .../models/edit_account_configuration.py | 12 +- .../models/edit_automation_configuration.py | 12 +- .../ema_momentum_evaluator_configuration.py | 12 +- .../octobot_protocol/models/evaluator_type.py | 37 ---- .../models/generic_process_configuration.py | 12 +- .../models/generic_workflow_configuration.py | 12 +- .../models/grid_configuration.py | 12 +- .../models/index_configuration.py | 12 +- .../models/market_making_configuration.py | 12 +- .../models/refresh_accounts_configuration.py | 12 +- .../rsi_momentum_evaluator_configuration.py | 12 +- .../models/stop_automation_configuration.py | 12 +- .../models/user_action_type.py | 42 ----- .../octobot_protocol_ts/models/Account.ts | 89 +++++++++ .../models/AccountActionResult.ts | 63 +++++++ .../models/AccountActionResultErrorMessage.ts | 17 ++ .../models/AccountDetails.ts | 38 ++++ .../models/AccountReference.ts | 38 ++++ .../models/AccountState.ts | 49 +++++ .../models/AccountStatus.ts | 17 ++ .../models/AccountStatusMessage.ts | 17 ++ .../octobot_protocol_ts/models/AccountType.ts | 17 ++ .../models/AccountsState.ts | 46 +++++ .../octobot_protocol_ts/models/Action.ts | 90 +++++++++ .../models/ActiveOrderSwapStrategy.ts | 55 ++++++ .../models/ActiveOrderSwapStrategyType.ts | 17 ++ .../octobot_protocol_ts/models/Asset.ts | 66 +++++++ .../models/AutomationActionResult.ts | 70 +++++++ .../AutomationActionResultErrorMessage.ts | 17 ++ .../models/AutomationConfiguration.ts | 75 ++++++++ .../models/AutomationMetadata.ts | 59 ++++++ .../models/AutomationState.ts | 117 ++++++++++++ .../models/BlockchainAccount.ts | 79 ++++++++ .../models/CancelPolicy.ts | 48 +++++ .../models/CancelPolicyType.ts | 17 ++ .../models/CopiedAccount.ts | 76 ++++++++ .../octobot_protocol_ts/models/CopiedAsset.ts | 59 ++++++ .../models/CopyConfiguration.ts | 48 +++++ .../models/CreateAccountConfiguration.ts | 49 +++++ .../models/CreateAutomationConfiguration.ts | 49 +++++ .../models/DCAConfiguration.ts | 121 ++++++++++++ .../models/DeleteAccountConfiguration.ts | 48 +++++ .../EMAMomentumEvaluatorConfiguration.ts | 62 +++++++ .../models/EditAccountConfiguration.ts | 56 ++++++ .../models/EditAutomationConfiguration.ts | 56 ++++++ .../models/EvaluatorConfiguration.ts | 39 ++++ .../EvaluatorConfigurationConfiguration.ts | 35 ++++ .../models/ExchangeAccount.ts | 119 ++++++++++++ .../models/GenericAccount.ts | 52 ++++++ .../models/GenericProcessConfiguration.ts | 48 +++++ .../models/GenericWorkflowConfiguration.ts | 49 +++++ .../models/GridConfiguration.ts | 109 +++++++++++ .../octobot_protocol_ts/models/IndexCoin.ts | 45 +++++ .../models/IndexConfiguration.ts | 56 ++++++ .../models/MarketMakingConfiguration.ts | 49 +++++ .../models/MarketMakingFundsDistribution.ts | 17 ++ .../models/MarketMakingHedgingEngine.ts | 83 +++++++++ .../models/MarketMakingOrderBookDepth.ts | 45 +++++ .../models/MarketMakingOrdersDistribution.ts | 17 ++ .../models/MarketMakingReferencePair.ts | 75 ++++++++ .../models/MarketMakingScheduledVolume.ts | 59 ++++++ .../models/MarketMakingStopConditions.ts | 69 +++++++ .../models/MarketMakingSymbolConfiguration.ts | 171 +++++++++++++++++ .../octobot_protocol_ts/models/Order.ts | 172 ++++++++++++++++++ .../octobot_protocol_ts/models/OrderGroup.ts | 56 ++++++ .../models/OrderGroupType.ts | 17 ++ .../octobot_protocol_ts/models/OrderStatus.ts | 17 ++ .../models/OrderSummary.ts | 45 +++++ .../octobot_protocol_ts/models/OrderType.ts | 17 ++ .../octobot_protocol_ts/models/Position.ts | 91 +++++++++ .../models/PositionStatus.ts | 17 ++ .../models/PositionSummary.ts | 45 +++++ .../RSIMomentumEvaluatorConfiguration.ts | 62 +++++++ .../models/RefreshAccountsConfiguration.ts | 48 +++++ .../octobot_protocol_ts/models/Side.ts | 17 ++ .../models/StopAutomationConfiguration.ts | 48 +++++ .../models/StrategiesState.ts | 46 +++++ .../octobot_protocol_ts/models/Strategy.ts | 81 +++++++++ .../models/StrategyConfiguration.ts | 50 +++++ .../models/StrategyReference.ts | 52 ++++++ .../octobot_protocol_ts/models/TaskStatus.ts | 17 ++ .../octobot_protocol_ts/models/TimeFrame.ts | 17 ++ .../octobot_protocol_ts/models/Trade.ts | 99 ++++++++++ .../models/TradeSummary.ts | 45 +++++ .../octobot_protocol_ts/models/TradingType.ts | 17 ++ .../models/TrailingProfile.ts | 48 +++++ .../models/TrailingProfileType.ts | 17 ++ .../octobot_protocol_ts/models/UserAction.ts | 78 ++++++++ .../models/UserActionConfiguration.ts | 50 +++++ .../models/UserActionResult.ts | 35 ++++ .../models/UserActionResultType.ts | 17 ++ .../models/UserActionStatus.ts | 17 ++ .../models/UserActionsState.ts | 46 +++++ .../models/UserDataState.ts | 54 ++++++ .../octobot_protocol_ts/models/index.ts | 81 +++++++++ .../protocol/octobot_protocol_ts/package.json | 9 + packages/protocol/openapi.json | 98 ++++------ packages/protocol/package.json | 2 +- .../scripts/clean-protocol-codegen-output.mjs | 2 +- .../postprocess-protocol-typescript.mjs | 41 +++++ .../test/test_action_configuration_type.py | 33 ---- .../protocol/test/test_copy_configuration.py | 4 +- .../test/test_create_account_configuration.py | 4 +- .../protocol/test/test_dca_configuration.py | 4 +- .../test/test_delete_account_configuration.py | 4 +- .../test/test_edit_account_configuration.py | 4 +- .../test_edit_automation_configuration.py | 4 +- ...st_ema_momentum_evaluator_configuration.py | 4 +- ...t_evaluator_configuration_configuration.py | 4 +- packages/protocol/test/test_evaluator_type.py | 33 ---- .../test_generic_process_configuration.py | 4 +- .../test_generic_workflow_configuration.py | 4 +- .../protocol/test/test_grid_configuration.py | 4 +- .../protocol/test/test_index_configuration.py | 4 +- .../test/test_market_making_configuration.py | 4 +- .../test_refresh_accounts_configuration.py | 4 +- .../test_stop_automation_configuration.py | 4 +- .../test/test_strategy_configuration.py | 4 +- .../test/test_user_action_configuration.py | 4 +- .../protocol/test/test_user_action_type.py | 33 ---- 148 files changed, 4661 insertions(+), 401 deletions(-) delete mode 100644 packages/protocol/octobot_protocol/models/action_configuration_type.py delete mode 100644 packages/protocol/octobot_protocol/models/evaluator_type.py delete mode 100644 packages/protocol/octobot_protocol/models/user_action_type.py create mode 100644 packages/protocol/octobot_protocol_ts/models/Account.ts create mode 100644 packages/protocol/octobot_protocol_ts/models/AccountActionResult.ts create mode 100644 packages/protocol/octobot_protocol_ts/models/AccountActionResultErrorMessage.ts create mode 100644 packages/protocol/octobot_protocol_ts/models/AccountDetails.ts create mode 100644 packages/protocol/octobot_protocol_ts/models/AccountReference.ts create mode 100644 packages/protocol/octobot_protocol_ts/models/AccountState.ts create mode 100644 packages/protocol/octobot_protocol_ts/models/AccountStatus.ts create mode 100644 packages/protocol/octobot_protocol_ts/models/AccountStatusMessage.ts create mode 100644 packages/protocol/octobot_protocol_ts/models/AccountType.ts create mode 100644 packages/protocol/octobot_protocol_ts/models/AccountsState.ts create mode 100644 packages/protocol/octobot_protocol_ts/models/Action.ts create mode 100644 packages/protocol/octobot_protocol_ts/models/ActiveOrderSwapStrategy.ts create mode 100644 packages/protocol/octobot_protocol_ts/models/ActiveOrderSwapStrategyType.ts create mode 100644 packages/protocol/octobot_protocol_ts/models/Asset.ts create mode 100644 packages/protocol/octobot_protocol_ts/models/AutomationActionResult.ts create mode 100644 packages/protocol/octobot_protocol_ts/models/AutomationActionResultErrorMessage.ts create mode 100644 packages/protocol/octobot_protocol_ts/models/AutomationConfiguration.ts create mode 100644 packages/protocol/octobot_protocol_ts/models/AutomationMetadata.ts create mode 100644 packages/protocol/octobot_protocol_ts/models/AutomationState.ts create mode 100644 packages/protocol/octobot_protocol_ts/models/BlockchainAccount.ts create mode 100644 packages/protocol/octobot_protocol_ts/models/CancelPolicy.ts create mode 100644 packages/protocol/octobot_protocol_ts/models/CancelPolicyType.ts create mode 100644 packages/protocol/octobot_protocol_ts/models/CopiedAccount.ts create mode 100644 packages/protocol/octobot_protocol_ts/models/CopiedAsset.ts create mode 100644 packages/protocol/octobot_protocol_ts/models/CopyConfiguration.ts create mode 100644 packages/protocol/octobot_protocol_ts/models/CreateAccountConfiguration.ts create mode 100644 packages/protocol/octobot_protocol_ts/models/CreateAutomationConfiguration.ts create mode 100644 packages/protocol/octobot_protocol_ts/models/DCAConfiguration.ts create mode 100644 packages/protocol/octobot_protocol_ts/models/DeleteAccountConfiguration.ts create mode 100644 packages/protocol/octobot_protocol_ts/models/EMAMomentumEvaluatorConfiguration.ts create mode 100644 packages/protocol/octobot_protocol_ts/models/EditAccountConfiguration.ts create mode 100644 packages/protocol/octobot_protocol_ts/models/EditAutomationConfiguration.ts create mode 100644 packages/protocol/octobot_protocol_ts/models/EvaluatorConfiguration.ts create mode 100644 packages/protocol/octobot_protocol_ts/models/EvaluatorConfigurationConfiguration.ts create mode 100644 packages/protocol/octobot_protocol_ts/models/ExchangeAccount.ts create mode 100644 packages/protocol/octobot_protocol_ts/models/GenericAccount.ts create mode 100644 packages/protocol/octobot_protocol_ts/models/GenericProcessConfiguration.ts create mode 100644 packages/protocol/octobot_protocol_ts/models/GenericWorkflowConfiguration.ts create mode 100644 packages/protocol/octobot_protocol_ts/models/GridConfiguration.ts create mode 100644 packages/protocol/octobot_protocol_ts/models/IndexCoin.ts create mode 100644 packages/protocol/octobot_protocol_ts/models/IndexConfiguration.ts create mode 100644 packages/protocol/octobot_protocol_ts/models/MarketMakingConfiguration.ts create mode 100644 packages/protocol/octobot_protocol_ts/models/MarketMakingFundsDistribution.ts create mode 100644 packages/protocol/octobot_protocol_ts/models/MarketMakingHedgingEngine.ts create mode 100644 packages/protocol/octobot_protocol_ts/models/MarketMakingOrderBookDepth.ts create mode 100644 packages/protocol/octobot_protocol_ts/models/MarketMakingOrdersDistribution.ts create mode 100644 packages/protocol/octobot_protocol_ts/models/MarketMakingReferencePair.ts create mode 100644 packages/protocol/octobot_protocol_ts/models/MarketMakingScheduledVolume.ts create mode 100644 packages/protocol/octobot_protocol_ts/models/MarketMakingStopConditions.ts create mode 100644 packages/protocol/octobot_protocol_ts/models/MarketMakingSymbolConfiguration.ts create mode 100644 packages/protocol/octobot_protocol_ts/models/Order.ts create mode 100644 packages/protocol/octobot_protocol_ts/models/OrderGroup.ts create mode 100644 packages/protocol/octobot_protocol_ts/models/OrderGroupType.ts create mode 100644 packages/protocol/octobot_protocol_ts/models/OrderStatus.ts create mode 100644 packages/protocol/octobot_protocol_ts/models/OrderSummary.ts create mode 100644 packages/protocol/octobot_protocol_ts/models/OrderType.ts create mode 100644 packages/protocol/octobot_protocol_ts/models/Position.ts create mode 100644 packages/protocol/octobot_protocol_ts/models/PositionStatus.ts create mode 100644 packages/protocol/octobot_protocol_ts/models/PositionSummary.ts create mode 100644 packages/protocol/octobot_protocol_ts/models/RSIMomentumEvaluatorConfiguration.ts create mode 100644 packages/protocol/octobot_protocol_ts/models/RefreshAccountsConfiguration.ts create mode 100644 packages/protocol/octobot_protocol_ts/models/Side.ts create mode 100644 packages/protocol/octobot_protocol_ts/models/StopAutomationConfiguration.ts create mode 100644 packages/protocol/octobot_protocol_ts/models/StrategiesState.ts create mode 100644 packages/protocol/octobot_protocol_ts/models/Strategy.ts create mode 100644 packages/protocol/octobot_protocol_ts/models/StrategyConfiguration.ts create mode 100644 packages/protocol/octobot_protocol_ts/models/StrategyReference.ts create mode 100644 packages/protocol/octobot_protocol_ts/models/TaskStatus.ts create mode 100644 packages/protocol/octobot_protocol_ts/models/TimeFrame.ts create mode 100644 packages/protocol/octobot_protocol_ts/models/Trade.ts create mode 100644 packages/protocol/octobot_protocol_ts/models/TradeSummary.ts create mode 100644 packages/protocol/octobot_protocol_ts/models/TradingType.ts create mode 100644 packages/protocol/octobot_protocol_ts/models/TrailingProfile.ts create mode 100644 packages/protocol/octobot_protocol_ts/models/TrailingProfileType.ts create mode 100644 packages/protocol/octobot_protocol_ts/models/UserAction.ts create mode 100644 packages/protocol/octobot_protocol_ts/models/UserActionConfiguration.ts create mode 100644 packages/protocol/octobot_protocol_ts/models/UserActionResult.ts create mode 100644 packages/protocol/octobot_protocol_ts/models/UserActionResultType.ts create mode 100644 packages/protocol/octobot_protocol_ts/models/UserActionStatus.ts create mode 100644 packages/protocol/octobot_protocol_ts/models/UserActionsState.ts create mode 100644 packages/protocol/octobot_protocol_ts/models/UserDataState.ts create mode 100644 packages/protocol/octobot_protocol_ts/models/index.ts create mode 100644 packages/protocol/octobot_protocol_ts/package.json create mode 100644 packages/protocol/scripts/postprocess-protocol-typescript.mjs delete mode 100644 packages/protocol/test/test_action_configuration_type.py delete mode 100644 packages/protocol/test/test_evaluator_type.py delete mode 100644 packages/protocol/test/test_user_action_type.py diff --git a/packages/protocol/.gitignore b/packages/protocol/.gitignore index 02c496f3f..c7ef1e068 100644 --- a/packages/protocol/.gitignore +++ b/packages/protocol/.gitignore @@ -1,2 +1 @@ -octobot_protocol_ts octobot_protocol_rs \ No newline at end of file diff --git a/packages/protocol/.openapi-generator/FILES b/packages/protocol/.openapi-generator/FILES index c70efe28c..66276b361 100644 --- a/packages/protocol/.openapi-generator/FILES +++ b/packages/protocol/.openapi-generator/FILES @@ -9,7 +9,6 @@ docs/AccountStatusMessage.md docs/AccountType.md docs/AccountsState.md docs/Action.md -docs/ActionConfigurationType.md docs/ActiveOrderSwapStrategy.md docs/ActiveOrderSwapStrategyType.md docs/Asset.md @@ -33,7 +32,6 @@ docs/EditAccountConfiguration.md docs/EditAutomationConfiguration.md docs/EvaluatorConfiguration.md docs/EvaluatorConfigurationConfiguration.md -docs/EvaluatorType.md docs/ExchangeAccount.md docs/GenericAccount.md docs/GenericProcessConfiguration.md @@ -79,7 +77,6 @@ docs/UserActionConfiguration.md docs/UserActionResult.md docs/UserActionResultType.md docs/UserActionStatus.md -docs/UserActionType.md docs/UserActionsState.md docs/UserDataState.md octobot_protocol/__init__.py @@ -96,7 +93,6 @@ octobot_protocol/models/account_status_message.py octobot_protocol/models/account_type.py octobot_protocol/models/accounts_state.py octobot_protocol/models/action.py -octobot_protocol/models/action_configuration_type.py octobot_protocol/models/active_order_swap_strategy.py octobot_protocol/models/active_order_swap_strategy_type.py octobot_protocol/models/asset.py @@ -120,7 +116,6 @@ octobot_protocol/models/edit_automation_configuration.py octobot_protocol/models/ema_momentum_evaluator_configuration.py octobot_protocol/models/evaluator_configuration.py octobot_protocol/models/evaluator_configuration_configuration.py -octobot_protocol/models/evaluator_type.py octobot_protocol/models/exchange_account.py octobot_protocol/models/generic_account.py octobot_protocol/models/generic_process_configuration.py @@ -166,7 +161,6 @@ octobot_protocol/models/user_action_configuration.py octobot_protocol/models/user_action_result.py octobot_protocol/models/user_action_result_type.py octobot_protocol/models/user_action_status.py -octobot_protocol/models/user_action_type.py octobot_protocol/models/user_actions_state.py octobot_protocol/models/user_data_state.py test/__init__.py @@ -181,7 +175,6 @@ test/test_account_status_message.py test/test_account_type.py test/test_accounts_state.py test/test_action.py -test/test_action_configuration_type.py test/test_active_order_swap_strategy.py test/test_active_order_swap_strategy_type.py test/test_asset.py @@ -205,7 +198,6 @@ test/test_edit_automation_configuration.py test/test_ema_momentum_evaluator_configuration.py test/test_evaluator_configuration.py test/test_evaluator_configuration_configuration.py -test/test_evaluator_type.py test/test_exchange_account.py test/test_generic_account.py test/test_generic_process_configuration.py @@ -251,6 +243,5 @@ test/test_user_action_configuration.py test/test_user_action_result.py test/test_user_action_result_type.py test/test_user_action_status.py -test/test_user_action_type.py test/test_user_actions_state.py test/test_user_data_state.py diff --git a/packages/protocol/docs/CopyConfiguration.md b/packages/protocol/docs/CopyConfiguration.md index 3c0c1a9e4..621cc42b4 100644 --- a/packages/protocol/docs/CopyConfiguration.md +++ b/packages/protocol/docs/CopyConfiguration.md @@ -6,7 +6,7 @@ CopyConfiguration Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**configuration_type** | [**ActionConfigurationType**](ActionConfigurationType.md) | copy | +**configuration_type** | **str** | | **strategy_id** | **str** | | ## Example diff --git a/packages/protocol/docs/CreateAccountConfiguration.md b/packages/protocol/docs/CreateAccountConfiguration.md index ae77468ee..d94f59202 100644 --- a/packages/protocol/docs/CreateAccountConfiguration.md +++ b/packages/protocol/docs/CreateAccountConfiguration.md @@ -6,7 +6,7 @@ CreateAccountConfiguration Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**action_type** | [**UserActionType**](UserActionType.md) | account_create | +**action_type** | **str** | | **configuration** | [**Account**](Account.md) | | ## Example diff --git a/packages/protocol/docs/CreateAutomationConfiguration.md b/packages/protocol/docs/CreateAutomationConfiguration.md index d2eff5f85..081789ffc 100644 --- a/packages/protocol/docs/CreateAutomationConfiguration.md +++ b/packages/protocol/docs/CreateAutomationConfiguration.md @@ -6,7 +6,7 @@ CreateAutomationConfiguration Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**action_type** | [**UserActionType**](UserActionType.md) | automation_create | +**action_type** | **str** | | **configuration** | [**AutomationConfiguration**](AutomationConfiguration.md) | | ## Example diff --git a/packages/protocol/docs/DCAConfiguration.md b/packages/protocol/docs/DCAConfiguration.md index 2308c7fec..e72d1f8dc 100644 --- a/packages/protocol/docs/DCAConfiguration.md +++ b/packages/protocol/docs/DCAConfiguration.md @@ -6,7 +6,7 @@ DCAConfiguration Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**configuration_type** | [**ActionConfigurationType**](ActionConfigurationType.md) | dca | +**configuration_type** | **str** | | **symbols** | **List[str]** | | **buy_orders_count** | **float** | | **percent_amount_per_buy_order** | **float** | | diff --git a/packages/protocol/docs/DeleteAccountConfiguration.md b/packages/protocol/docs/DeleteAccountConfiguration.md index 0efdb9038..3f2a1d6be 100644 --- a/packages/protocol/docs/DeleteAccountConfiguration.md +++ b/packages/protocol/docs/DeleteAccountConfiguration.md @@ -6,7 +6,7 @@ DeleteAccountConfiguration Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**action_type** | [**UserActionType**](UserActionType.md) | account_delete | +**action_type** | **str** | | **id** | **str** | | ## Example diff --git a/packages/protocol/docs/EMAMomentumEvaluatorConfiguration.md b/packages/protocol/docs/EMAMomentumEvaluatorConfiguration.md index 21bbe828f..15807fecc 100644 --- a/packages/protocol/docs/EMAMomentumEvaluatorConfiguration.md +++ b/packages/protocol/docs/EMAMomentumEvaluatorConfiguration.md @@ -6,7 +6,7 @@ EMAMomentumEvaluatorConfiguration Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**configuration_type** | [**EvaluatorType**](EvaluatorType.md) | EMAMomentumEvaluator | +**configuration_type** | **str** | | **period_length** | **float** | | **price_threshold_percent** | **float** | | **reverse_signal** | **bool** | | [default to False] diff --git a/packages/protocol/docs/EditAccountConfiguration.md b/packages/protocol/docs/EditAccountConfiguration.md index 6a1ba4714..29bd50e57 100644 --- a/packages/protocol/docs/EditAccountConfiguration.md +++ b/packages/protocol/docs/EditAccountConfiguration.md @@ -6,7 +6,7 @@ EditAccountConfiguration Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**action_type** | [**UserActionType**](UserActionType.md) | account_edit | +**action_type** | **str** | | **id** | **str** | | **configuration** | [**Account**](Account.md) | | [optional] diff --git a/packages/protocol/docs/EditAutomationConfiguration.md b/packages/protocol/docs/EditAutomationConfiguration.md index 7eb3b851d..bfb8521e9 100644 --- a/packages/protocol/docs/EditAutomationConfiguration.md +++ b/packages/protocol/docs/EditAutomationConfiguration.md @@ -7,7 +7,7 @@ EditAutomationConfiguration Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- **id** | **str** | | -**action_type** | [**UserActionType**](UserActionType.md) | automation_edit | +**action_type** | **str** | | **configuration** | [**AutomationConfiguration**](AutomationConfiguration.md) | | ## Example diff --git a/packages/protocol/docs/EvaluatorConfigurationConfiguration.md b/packages/protocol/docs/EvaluatorConfigurationConfiguration.md index 6ceed22b5..cf14d3741 100644 --- a/packages/protocol/docs/EvaluatorConfigurationConfiguration.md +++ b/packages/protocol/docs/EvaluatorConfigurationConfiguration.md @@ -5,7 +5,7 @@ Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**configuration_type** | [**EvaluatorType**](EvaluatorType.md) | EMAMomentumEvaluator | +**configuration_type** | **str** | | **period_length** | **float** | | **short_threshold** | **float** | | **long_threshold** | **float** | | diff --git a/packages/protocol/docs/GenericProcessConfiguration.md b/packages/protocol/docs/GenericProcessConfiguration.md index 835439699..b8a0ba5c2 100644 --- a/packages/protocol/docs/GenericProcessConfiguration.md +++ b/packages/protocol/docs/GenericProcessConfiguration.md @@ -6,7 +6,7 @@ GenericProcessConfiguration Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**configuration_type** | [**ActionConfigurationType**](ActionConfigurationType.md) | generic_process | +**configuration_type** | **str** | | **profile_data** | **object** | | ## Example diff --git a/packages/protocol/docs/GenericWorkflowConfiguration.md b/packages/protocol/docs/GenericWorkflowConfiguration.md index 9fd8d1da8..7e441e907 100644 --- a/packages/protocol/docs/GenericWorkflowConfiguration.md +++ b/packages/protocol/docs/GenericWorkflowConfiguration.md @@ -6,7 +6,7 @@ GenericWorkflowConfiguration Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**configuration_type** | [**ActionConfigurationType**](ActionConfigurationType.md) | generic_workflow | +**configuration_type** | **str** | | **actions** | [**List[Action]**](Action.md) | | ## Example diff --git a/packages/protocol/docs/GridConfiguration.md b/packages/protocol/docs/GridConfiguration.md index 85c8d4ea4..37ec47f4f 100644 --- a/packages/protocol/docs/GridConfiguration.md +++ b/packages/protocol/docs/GridConfiguration.md @@ -6,7 +6,7 @@ GridConfiguration Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**configuration_type** | [**ActionConfigurationType**](ActionConfigurationType.md) | grid | +**configuration_type** | **str** | | **symbol** | **str** | | **spread** | **float** | Price difference between the closest buy and sell orders. Denominated in the quote currency (600 for a 600 USDT spread on BTC/USDT). | **increment** | **float** | Price difference between two orders of the same side. Denominated in the quote currency (200 for a 200 USDT spread on BTC/USDT). | diff --git a/packages/protocol/docs/IndexConfiguration.md b/packages/protocol/docs/IndexConfiguration.md index ea284ba20..ac1f55643 100644 --- a/packages/protocol/docs/IndexConfiguration.md +++ b/packages/protocol/docs/IndexConfiguration.md @@ -6,7 +6,7 @@ IndexConfiguration Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**configuration_type** | [**ActionConfigurationType**](ActionConfigurationType.md) | index | +**configuration_type** | **str** | | **coins** | [**List[IndexCoin]**](IndexCoin.md) | | **rebalance_trigger_min_percent** | **float** | | diff --git a/packages/protocol/docs/MarketMakingConfiguration.md b/packages/protocol/docs/MarketMakingConfiguration.md index 7cf1dbb2a..c9e2110fd 100644 --- a/packages/protocol/docs/MarketMakingConfiguration.md +++ b/packages/protocol/docs/MarketMakingConfiguration.md @@ -6,7 +6,7 @@ Per-symbol market making parameters. Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**configuration_type** | [**ActionConfigurationType**](ActionConfigurationType.md) | market_making | +**configuration_type** | **str** | | **pair_settings** | [**List[MarketMakingSymbolConfiguration]**](MarketMakingSymbolConfiguration.md) | | ## Example diff --git a/packages/protocol/docs/RSIMomentumEvaluatorConfiguration.md b/packages/protocol/docs/RSIMomentumEvaluatorConfiguration.md index a0a24a2cc..054e21fcf 100644 --- a/packages/protocol/docs/RSIMomentumEvaluatorConfiguration.md +++ b/packages/protocol/docs/RSIMomentumEvaluatorConfiguration.md @@ -6,7 +6,7 @@ RSIMomentumEvaluatorConfiguration Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**configuration_type** | [**EvaluatorType**](EvaluatorType.md) | RSIMomentumEvaluator | +**configuration_type** | **str** | | **period_length** | **float** | | **short_threshold** | **float** | | **long_threshold** | **float** | | diff --git a/packages/protocol/docs/RefreshAccountsConfiguration.md b/packages/protocol/docs/RefreshAccountsConfiguration.md index 91b63859c..b6d261151 100644 --- a/packages/protocol/docs/RefreshAccountsConfiguration.md +++ b/packages/protocol/docs/RefreshAccountsConfiguration.md @@ -6,7 +6,7 @@ RefreshAccountsConfiguration Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**action_type** | [**UserActionType**](UserActionType.md) | accounts_refresh | +**action_type** | **str** | | **account_ids** | **List[str]** | | [optional] ## Example diff --git a/packages/protocol/docs/StopAutomationConfiguration.md b/packages/protocol/docs/StopAutomationConfiguration.md index 2516eb326..a9ad935a2 100644 --- a/packages/protocol/docs/StopAutomationConfiguration.md +++ b/packages/protocol/docs/StopAutomationConfiguration.md @@ -7,7 +7,7 @@ StopAutomationConfiguration Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- **id** | **str** | | -**action_type** | [**UserActionType**](UserActionType.md) | automation_stop | +**action_type** | **str** | | ## Example diff --git a/packages/protocol/docs/StrategyConfiguration.md b/packages/protocol/docs/StrategyConfiguration.md index a0a73bc56..e55b59b2e 100644 --- a/packages/protocol/docs/StrategyConfiguration.md +++ b/packages/protocol/docs/StrategyConfiguration.md @@ -5,7 +5,7 @@ Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**configuration_type** | [**ActionConfigurationType**](ActionConfigurationType.md) | generic_workflow | +**configuration_type** | **str** | | **pair_settings** | [**List[MarketMakingSymbolConfiguration]**](MarketMakingSymbolConfiguration.md) | | **symbols** | **List[str]** | | **buy_orders_count** | **float** | | diff --git a/packages/protocol/docs/UserActionConfiguration.md b/packages/protocol/docs/UserActionConfiguration.md index 52b8be861..9c4758766 100644 --- a/packages/protocol/docs/UserActionConfiguration.md +++ b/packages/protocol/docs/UserActionConfiguration.md @@ -5,7 +5,7 @@ Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**action_type** | [**UserActionType**](UserActionType.md) | accounts_refresh | +**action_type** | **str** | | **configuration** | [**Account**](Account.md) | | **id** | **str** | | **account_ids** | **List[str]** | | [optional] diff --git a/packages/protocol/octobot_protocol/models/__init__.py b/packages/protocol/octobot_protocol/models/__init__.py index 22e15ebdd..403d34862 100644 --- a/packages/protocol/octobot_protocol/models/__init__.py +++ b/packages/protocol/octobot_protocol/models/__init__.py @@ -24,7 +24,6 @@ from octobot_protocol.models.account_type import AccountType from octobot_protocol.models.accounts_state import AccountsState from octobot_protocol.models.action import Action -from octobot_protocol.models.action_configuration_type import ActionConfigurationType from octobot_protocol.models.active_order_swap_strategy import ActiveOrderSwapStrategy from octobot_protocol.models.active_order_swap_strategy_type import ActiveOrderSwapStrategyType from octobot_protocol.models.asset import Asset @@ -48,7 +47,6 @@ from octobot_protocol.models.edit_automation_configuration import EditAutomationConfiguration from octobot_protocol.models.evaluator_configuration import EvaluatorConfiguration from octobot_protocol.models.evaluator_configuration_configuration import EvaluatorConfigurationConfiguration -from octobot_protocol.models.evaluator_type import EvaluatorType from octobot_protocol.models.exchange_account import ExchangeAccount from octobot_protocol.models.generic_account import GenericAccount from octobot_protocol.models.generic_process_configuration import GenericProcessConfiguration @@ -94,7 +92,6 @@ from octobot_protocol.models.user_action_result import UserActionResult from octobot_protocol.models.user_action_result_type import UserActionResultType from octobot_protocol.models.user_action_status import UserActionStatus -from octobot_protocol.models.user_action_type import UserActionType from octobot_protocol.models.user_actions_state import UserActionsState from octobot_protocol.models.user_data_state import UserDataState diff --git a/packages/protocol/octobot_protocol/models/action_configuration_type.py b/packages/protocol/octobot_protocol/models/action_configuration_type.py deleted file mode 100644 index 765ecf938..000000000 --- a/packages/protocol/octobot_protocol/models/action_configuration_type.py +++ /dev/null @@ -1,42 +0,0 @@ -# coding: utf-8 - -""" - OctoBot protocol types - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: 1.0.0 - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import json -from enum import Enum -from typing_extensions import Self - - -class ActionConfigurationType(str, Enum): - """ - ActionConfigurationType - """ - - """ - allowed enum values - """ - MARKET_MAKING = 'market_making' - DCA = 'dca' - INDEX = 'index' - GRID = 'grid' - COPY = 'copy' - GENERIC_PROCESS = 'generic_process' - GENERIC_WORKFLOW = 'generic_workflow' - - @classmethod - def from_json(cls, json_str: str) -> Self: - """Create an instance of ActionConfigurationType from a JSON string""" - return cls(json.loads(json_str)) - - diff --git a/packages/protocol/octobot_protocol/models/copy_configuration.py b/packages/protocol/octobot_protocol/models/copy_configuration.py index ce890aa90..fdd69cd32 100644 --- a/packages/protocol/octobot_protocol/models/copy_configuration.py +++ b/packages/protocol/octobot_protocol/models/copy_configuration.py @@ -17,9 +17,8 @@ import re # noqa: F401 import json -from pydantic import BaseModel, ConfigDict, Field, StrictStr +from pydantic import BaseModel, ConfigDict, StrictStr, field_validator from typing import Any, ClassVar, Dict, List -from octobot_protocol.models.action_configuration_type import ActionConfigurationType from typing import Optional, Set from typing_extensions import Self from pydantic_core import to_jsonable_python @@ -28,10 +27,17 @@ class CopyConfiguration(BaseModel): """ CopyConfiguration """ # noqa: E501 - configuration_type: ActionConfigurationType = Field(description="copy") + configuration_type: StrictStr strategy_id: StrictStr __properties: ClassVar[List[str]] = ["configuration_type", "strategy_id"] + @field_validator('configuration_type') + def configuration_type_validate_enum(cls, value): + """Validates the enum""" + if value not in set(['CopyConfiguration']): + raise ValueError("must be one of enum values ('CopyConfiguration')") + return value + model_config = ConfigDict( validate_by_name=True, validate_by_alias=True, diff --git a/packages/protocol/octobot_protocol/models/create_account_configuration.py b/packages/protocol/octobot_protocol/models/create_account_configuration.py index c327c6eb8..9e0f91151 100644 --- a/packages/protocol/octobot_protocol/models/create_account_configuration.py +++ b/packages/protocol/octobot_protocol/models/create_account_configuration.py @@ -17,10 +17,9 @@ import re # noqa: F401 import json -from pydantic import BaseModel, ConfigDict, Field +from pydantic import BaseModel, ConfigDict, StrictStr, field_validator from typing import Any, ClassVar, Dict, List from octobot_protocol.models.account import Account -from octobot_protocol.models.user_action_type import UserActionType from typing import Optional, Set from typing_extensions import Self from pydantic_core import to_jsonable_python @@ -29,10 +28,17 @@ class CreateAccountConfiguration(BaseModel): """ CreateAccountConfiguration """ # noqa: E501 - action_type: UserActionType = Field(description="account_create") + action_type: StrictStr configuration: Account __properties: ClassVar[List[str]] = ["action_type", "configuration"] + @field_validator('action_type') + def action_type_validate_enum(cls, value): + """Validates the enum""" + if value not in set(['account_create']): + raise ValueError("must be one of enum values ('account_create')") + return value + model_config = ConfigDict( validate_by_name=True, validate_by_alias=True, diff --git a/packages/protocol/octobot_protocol/models/create_automation_configuration.py b/packages/protocol/octobot_protocol/models/create_automation_configuration.py index 4aecf74c9..cbd3d52d6 100644 --- a/packages/protocol/octobot_protocol/models/create_automation_configuration.py +++ b/packages/protocol/octobot_protocol/models/create_automation_configuration.py @@ -17,10 +17,9 @@ import re # noqa: F401 import json -from pydantic import BaseModel, ConfigDict, Field +from pydantic import BaseModel, ConfigDict, StrictStr, field_validator from typing import Any, ClassVar, Dict, List from octobot_protocol.models.automation_configuration import AutomationConfiguration -from octobot_protocol.models.user_action_type import UserActionType from typing import Optional, Set from typing_extensions import Self from pydantic_core import to_jsonable_python @@ -29,10 +28,17 @@ class CreateAutomationConfiguration(BaseModel): """ CreateAutomationConfiguration """ # noqa: E501 - action_type: UserActionType = Field(description="automation_create") + action_type: StrictStr configuration: AutomationConfiguration __properties: ClassVar[List[str]] = ["action_type", "configuration"] + @field_validator('action_type') + def action_type_validate_enum(cls, value): + """Validates the enum""" + if value not in set(['automation_create']): + raise ValueError("must be one of enum values ('automation_create')") + return value + model_config = ConfigDict( validate_by_name=True, validate_by_alias=True, diff --git a/packages/protocol/octobot_protocol/models/dca_configuration.py b/packages/protocol/octobot_protocol/models/dca_configuration.py index 6ab253bd4..2951595a7 100644 --- a/packages/protocol/octobot_protocol/models/dca_configuration.py +++ b/packages/protocol/octobot_protocol/models/dca_configuration.py @@ -20,7 +20,6 @@ from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr, field_validator from typing import Any, ClassVar, Dict, List, Union from typing_extensions import Annotated -from octobot_protocol.models.action_configuration_type import ActionConfigurationType from octobot_protocol.models.evaluator_configuration import EvaluatorConfiguration from octobot_protocol.models.time_frame import TimeFrame from typing import Optional, Set @@ -31,7 +30,7 @@ class DCAConfiguration(BaseModel): """ DCAConfiguration """ # noqa: E501 - configuration_type: ActionConfigurationType = Field(description="dca") + configuration_type: StrictStr symbols: List[StrictStr] buy_orders_count: Union[Annotated[float, Field(strict=True, ge=1)], Annotated[int, Field(strict=True, ge=1)]] percent_amount_per_buy_order: Union[Annotated[float, Field(le=100, strict=True, ge=0)], Annotated[int, Field(le=100, strict=True, ge=0)]] @@ -45,6 +44,13 @@ class DCAConfiguration(BaseModel): evaluators: List[EvaluatorConfiguration] __properties: ClassVar[List[str]] = ["configuration_type", "symbols", "buy_orders_count", "percent_amount_per_buy_order", "profit_target_percent", "buy_order_price_discount_percent", "enable_stop_loss", "stop_loss_price_discount_percent", "trigger_mode", "use_init_entry_orders", "time_frames", "evaluators"] + @field_validator('configuration_type') + def configuration_type_validate_enum(cls, value): + """Validates the enum""" + if value not in set(['DCAConfiguration']): + raise ValueError("must be one of enum values ('DCAConfiguration')") + return value + @field_validator('trigger_mode') def trigger_mode_validate_enum(cls, value): """Validates the enum""" diff --git a/packages/protocol/octobot_protocol/models/delete_account_configuration.py b/packages/protocol/octobot_protocol/models/delete_account_configuration.py index 7c73d3fa8..e0d218b99 100644 --- a/packages/protocol/octobot_protocol/models/delete_account_configuration.py +++ b/packages/protocol/octobot_protocol/models/delete_account_configuration.py @@ -17,9 +17,8 @@ import re # noqa: F401 import json -from pydantic import BaseModel, ConfigDict, Field, StrictStr +from pydantic import BaseModel, ConfigDict, StrictStr, field_validator from typing import Any, ClassVar, Dict, List -from octobot_protocol.models.user_action_type import UserActionType from typing import Optional, Set from typing_extensions import Self from pydantic_core import to_jsonable_python @@ -28,10 +27,17 @@ class DeleteAccountConfiguration(BaseModel): """ DeleteAccountConfiguration """ # noqa: E501 - action_type: UserActionType = Field(description="account_delete") + action_type: StrictStr id: StrictStr __properties: ClassVar[List[str]] = ["action_type", "id"] + @field_validator('action_type') + def action_type_validate_enum(cls, value): + """Validates the enum""" + if value not in set(['account_delete']): + raise ValueError("must be one of enum values ('account_delete')") + return value + model_config = ConfigDict( validate_by_name=True, validate_by_alias=True, diff --git a/packages/protocol/octobot_protocol/models/edit_account_configuration.py b/packages/protocol/octobot_protocol/models/edit_account_configuration.py index 78255739e..c9ff38c8e 100644 --- a/packages/protocol/octobot_protocol/models/edit_account_configuration.py +++ b/packages/protocol/octobot_protocol/models/edit_account_configuration.py @@ -17,10 +17,9 @@ import re # noqa: F401 import json -from pydantic import BaseModel, ConfigDict, Field, StrictStr +from pydantic import BaseModel, ConfigDict, StrictStr, field_validator from typing import Any, ClassVar, Dict, List, Optional from octobot_protocol.models.account import Account -from octobot_protocol.models.user_action_type import UserActionType from typing import Optional, Set from typing_extensions import Self from pydantic_core import to_jsonable_python @@ -29,11 +28,18 @@ class EditAccountConfiguration(BaseModel): """ EditAccountConfiguration """ # noqa: E501 - action_type: UserActionType = Field(description="account_edit") + action_type: StrictStr id: StrictStr configuration: Optional[Account] = None __properties: ClassVar[List[str]] = ["action_type", "id", "configuration"] + @field_validator('action_type') + def action_type_validate_enum(cls, value): + """Validates the enum""" + if value not in set(['account_edit']): + raise ValueError("must be one of enum values ('account_edit')") + return value + model_config = ConfigDict( validate_by_name=True, validate_by_alias=True, diff --git a/packages/protocol/octobot_protocol/models/edit_automation_configuration.py b/packages/protocol/octobot_protocol/models/edit_automation_configuration.py index d3e15fb2d..3e6b94730 100644 --- a/packages/protocol/octobot_protocol/models/edit_automation_configuration.py +++ b/packages/protocol/octobot_protocol/models/edit_automation_configuration.py @@ -17,10 +17,9 @@ import re # noqa: F401 import json -from pydantic import BaseModel, ConfigDict, Field, StrictStr +from pydantic import BaseModel, ConfigDict, StrictStr, field_validator from typing import Any, ClassVar, Dict, List from octobot_protocol.models.automation_configuration import AutomationConfiguration -from octobot_protocol.models.user_action_type import UserActionType from typing import Optional, Set from typing_extensions import Self from pydantic_core import to_jsonable_python @@ -30,10 +29,17 @@ class EditAutomationConfiguration(BaseModel): EditAutomationConfiguration """ # noqa: E501 id: StrictStr - action_type: UserActionType = Field(description="automation_edit") + action_type: StrictStr configuration: AutomationConfiguration __properties: ClassVar[List[str]] = ["id", "action_type", "configuration"] + @field_validator('action_type') + def action_type_validate_enum(cls, value): + """Validates the enum""" + if value not in set(['automation_edit']): + raise ValueError("must be one of enum values ('automation_edit')") + return value + model_config = ConfigDict( validate_by_name=True, validate_by_alias=True, diff --git a/packages/protocol/octobot_protocol/models/ema_momentum_evaluator_configuration.py b/packages/protocol/octobot_protocol/models/ema_momentum_evaluator_configuration.py index 75ee4b092..f7b571695 100644 --- a/packages/protocol/octobot_protocol/models/ema_momentum_evaluator_configuration.py +++ b/packages/protocol/octobot_protocol/models/ema_momentum_evaluator_configuration.py @@ -17,10 +17,9 @@ import re # noqa: F401 import json -from pydantic import BaseModel, ConfigDict, Field, StrictBool +from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr, field_validator from typing import Any, ClassVar, Dict, List, Union from typing_extensions import Annotated -from octobot_protocol.models.evaluator_type import EvaluatorType from typing import Optional, Set from typing_extensions import Self from pydantic_core import to_jsonable_python @@ -29,12 +28,19 @@ class EMAMomentumEvaluatorConfiguration(BaseModel): """ EMAMomentumEvaluatorConfiguration """ # noqa: E501 - configuration_type: EvaluatorType = Field(description="EMAMomentumEvaluator") + configuration_type: StrictStr period_length: Union[Annotated[float, Field(strict=True, ge=1)], Annotated[int, Field(strict=True, ge=1)]] price_threshold_percent: Union[Annotated[float, Field(le=100, strict=True, ge=0)], Annotated[int, Field(le=100, strict=True, ge=0)]] reverse_signal: StrictBool __properties: ClassVar[List[str]] = ["configuration_type", "period_length", "price_threshold_percent", "reverse_signal"] + @field_validator('configuration_type') + def configuration_type_validate_enum(cls, value): + """Validates the enum""" + if value not in set(['EMAMomentumEvaluator']): + raise ValueError("must be one of enum values ('EMAMomentumEvaluator')") + return value + model_config = ConfigDict( validate_by_name=True, validate_by_alias=True, diff --git a/packages/protocol/octobot_protocol/models/evaluator_type.py b/packages/protocol/octobot_protocol/models/evaluator_type.py deleted file mode 100644 index 57e55ffbd..000000000 --- a/packages/protocol/octobot_protocol/models/evaluator_type.py +++ /dev/null @@ -1,37 +0,0 @@ -# coding: utf-8 - -""" - OctoBot protocol types - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: 1.0.0 - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import json -from enum import Enum -from typing_extensions import Self - - -class EvaluatorType(str, Enum): - """ - EvaluatorType - """ - - """ - allowed enum values - """ - RSIMOMENTUMEVALUATOR = 'RSIMomentumEvaluator' - EMAMOMENTUMEVALUATOR = 'EMAMomentumEvaluator' - - @classmethod - def from_json(cls, json_str: str) -> Self: - """Create an instance of EvaluatorType from a JSON string""" - return cls(json.loads(json_str)) - - diff --git a/packages/protocol/octobot_protocol/models/generic_process_configuration.py b/packages/protocol/octobot_protocol/models/generic_process_configuration.py index d00208b89..594c80452 100644 --- a/packages/protocol/octobot_protocol/models/generic_process_configuration.py +++ b/packages/protocol/octobot_protocol/models/generic_process_configuration.py @@ -17,9 +17,8 @@ import re # noqa: F401 import json -from pydantic import BaseModel, ConfigDict, Field +from pydantic import BaseModel, ConfigDict, StrictStr, field_validator from typing import Any, ClassVar, Dict, List -from octobot_protocol.models.action_configuration_type import ActionConfigurationType from typing import Optional, Set from typing_extensions import Self from pydantic_core import to_jsonable_python @@ -28,10 +27,17 @@ class GenericProcessConfiguration(BaseModel): """ GenericProcessConfiguration """ # noqa: E501 - configuration_type: ActionConfigurationType = Field(description="generic_process") + configuration_type: StrictStr profile_data: Dict[str, Any] __properties: ClassVar[List[str]] = ["configuration_type", "profile_data"] + @field_validator('configuration_type') + def configuration_type_validate_enum(cls, value): + """Validates the enum""" + if value not in set(['GenericProcessConfiguration']): + raise ValueError("must be one of enum values ('GenericProcessConfiguration')") + return value + model_config = ConfigDict( validate_by_name=True, validate_by_alias=True, diff --git a/packages/protocol/octobot_protocol/models/generic_workflow_configuration.py b/packages/protocol/octobot_protocol/models/generic_workflow_configuration.py index 4e8ac3675..0f372d3ad 100644 --- a/packages/protocol/octobot_protocol/models/generic_workflow_configuration.py +++ b/packages/protocol/octobot_protocol/models/generic_workflow_configuration.py @@ -17,10 +17,9 @@ import re # noqa: F401 import json -from pydantic import BaseModel, ConfigDict, Field +from pydantic import BaseModel, ConfigDict, StrictStr, field_validator from typing import Any, ClassVar, Dict, List from octobot_protocol.models.action import Action -from octobot_protocol.models.action_configuration_type import ActionConfigurationType from typing import Optional, Set from typing_extensions import Self from pydantic_core import to_jsonable_python @@ -29,10 +28,17 @@ class GenericWorkflowConfiguration(BaseModel): """ GenericWorkflowConfiguration """ # noqa: E501 - configuration_type: ActionConfigurationType = Field(description="generic_workflow") + configuration_type: StrictStr actions: List[Action] __properties: ClassVar[List[str]] = ["configuration_type", "actions"] + @field_validator('configuration_type') + def configuration_type_validate_enum(cls, value): + """Validates the enum""" + if value not in set(['GenericWorkflowConfiguration']): + raise ValueError("must be one of enum values ('GenericWorkflowConfiguration')") + return value + model_config = ConfigDict( validate_by_name=True, validate_by_alias=True, diff --git a/packages/protocol/octobot_protocol/models/grid_configuration.py b/packages/protocol/octobot_protocol/models/grid_configuration.py index c94e5e2a3..968d13ba7 100644 --- a/packages/protocol/octobot_protocol/models/grid_configuration.py +++ b/packages/protocol/octobot_protocol/models/grid_configuration.py @@ -17,10 +17,9 @@ import re # noqa: F401 import json -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr +from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr, field_validator from typing import Any, ClassVar, Dict, List, Union from typing_extensions import Annotated -from octobot_protocol.models.action_configuration_type import ActionConfigurationType from typing import Optional, Set from typing_extensions import Self from pydantic_core import to_jsonable_python @@ -29,7 +28,7 @@ class GridConfiguration(BaseModel): """ GridConfiguration """ # noqa: E501 - configuration_type: ActionConfigurationType = Field(description="grid") + configuration_type: StrictStr symbol: StrictStr spread: Union[Annotated[float, Field(strict=True, ge=0)], Annotated[int, Field(strict=True, ge=0)]] = Field(description="Price difference between the closest buy and sell orders. Denominated in the quote currency (600 for a 600 USDT spread on BTC/USDT).") increment: Union[Annotated[float, Field(strict=True, ge=0)], Annotated[int, Field(strict=True, ge=0)]] = Field(description="Price difference between two orders of the same side. Denominated in the quote currency (200 for a 200 USDT spread on BTC/USDT).") @@ -40,6 +39,13 @@ class GridConfiguration(BaseModel): order_by_order_trailing: StrictBool __properties: ClassVar[List[str]] = ["configuration_type", "symbol", "spread", "increment", "buy_count", "sell_count", "enable_trailing_up", "enable_trailing_down", "order_by_order_trailing"] + @field_validator('configuration_type') + def configuration_type_validate_enum(cls, value): + """Validates the enum""" + if value not in set(['GridConfiguration']): + raise ValueError("must be one of enum values ('GridConfiguration')") + return value + model_config = ConfigDict( validate_by_name=True, validate_by_alias=True, diff --git a/packages/protocol/octobot_protocol/models/index_configuration.py b/packages/protocol/octobot_protocol/models/index_configuration.py index 91c685907..a6dc1727c 100644 --- a/packages/protocol/octobot_protocol/models/index_configuration.py +++ b/packages/protocol/octobot_protocol/models/index_configuration.py @@ -17,10 +17,9 @@ import re # noqa: F401 import json -from pydantic import BaseModel, ConfigDict, Field +from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator from typing import Any, ClassVar, Dict, List, Union from typing_extensions import Annotated -from octobot_protocol.models.action_configuration_type import ActionConfigurationType from octobot_protocol.models.index_coin import IndexCoin from typing import Optional, Set from typing_extensions import Self @@ -30,11 +29,18 @@ class IndexConfiguration(BaseModel): """ IndexConfiguration """ # noqa: E501 - configuration_type: ActionConfigurationType = Field(description="index") + configuration_type: StrictStr coins: List[IndexCoin] rebalance_trigger_min_percent: Union[Annotated[float, Field(le=100, strict=True, ge=0)], Annotated[int, Field(le=100, strict=True, ge=0)]] __properties: ClassVar[List[str]] = ["configuration_type", "coins", "rebalance_trigger_min_percent"] + @field_validator('configuration_type') + def configuration_type_validate_enum(cls, value): + """Validates the enum""" + if value not in set(['IndexConfiguration']): + raise ValueError("must be one of enum values ('IndexConfiguration')") + return value + model_config = ConfigDict( validate_by_name=True, validate_by_alias=True, diff --git a/packages/protocol/octobot_protocol/models/market_making_configuration.py b/packages/protocol/octobot_protocol/models/market_making_configuration.py index b6177a562..de82e3691 100644 --- a/packages/protocol/octobot_protocol/models/market_making_configuration.py +++ b/packages/protocol/octobot_protocol/models/market_making_configuration.py @@ -17,9 +17,8 @@ import re # noqa: F401 import json -from pydantic import BaseModel, ConfigDict, Field +from pydantic import BaseModel, ConfigDict, StrictStr, field_validator from typing import Any, ClassVar, Dict, List -from octobot_protocol.models.action_configuration_type import ActionConfigurationType from octobot_protocol.models.market_making_symbol_configuration import MarketMakingSymbolConfiguration from typing import Optional, Set from typing_extensions import Self @@ -29,10 +28,17 @@ class MarketMakingConfiguration(BaseModel): """ Per-symbol market making parameters. """ # noqa: E501 - configuration_type: ActionConfigurationType = Field(description="market_making") + configuration_type: StrictStr pair_settings: List[MarketMakingSymbolConfiguration] __properties: ClassVar[List[str]] = ["configuration_type", "pair_settings"] + @field_validator('configuration_type') + def configuration_type_validate_enum(cls, value): + """Validates the enum""" + if value not in set(['MarketMakingConfiguration']): + raise ValueError("must be one of enum values ('MarketMakingConfiguration')") + return value + model_config = ConfigDict( validate_by_name=True, validate_by_alias=True, diff --git a/packages/protocol/octobot_protocol/models/refresh_accounts_configuration.py b/packages/protocol/octobot_protocol/models/refresh_accounts_configuration.py index 3cc627d29..b0d87ebf5 100644 --- a/packages/protocol/octobot_protocol/models/refresh_accounts_configuration.py +++ b/packages/protocol/octobot_protocol/models/refresh_accounts_configuration.py @@ -17,9 +17,8 @@ import re # noqa: F401 import json -from pydantic import BaseModel, ConfigDict, Field, StrictStr +from pydantic import BaseModel, ConfigDict, StrictStr, field_validator from typing import Any, ClassVar, Dict, List, Optional -from octobot_protocol.models.user_action_type import UserActionType from typing import Optional, Set from typing_extensions import Self from pydantic_core import to_jsonable_python @@ -28,10 +27,17 @@ class RefreshAccountsConfiguration(BaseModel): """ RefreshAccountsConfiguration """ # noqa: E501 - action_type: UserActionType = Field(description="accounts_refresh") + action_type: StrictStr account_ids: Optional[List[StrictStr]] = None __properties: ClassVar[List[str]] = ["action_type", "account_ids"] + @field_validator('action_type') + def action_type_validate_enum(cls, value): + """Validates the enum""" + if value not in set(['accounts_refresh']): + raise ValueError("must be one of enum values ('accounts_refresh')") + return value + model_config = ConfigDict( validate_by_name=True, validate_by_alias=True, diff --git a/packages/protocol/octobot_protocol/models/rsi_momentum_evaluator_configuration.py b/packages/protocol/octobot_protocol/models/rsi_momentum_evaluator_configuration.py index 0a8d585f8..c8b33670b 100644 --- a/packages/protocol/octobot_protocol/models/rsi_momentum_evaluator_configuration.py +++ b/packages/protocol/octobot_protocol/models/rsi_momentum_evaluator_configuration.py @@ -17,10 +17,9 @@ import re # noqa: F401 import json -from pydantic import BaseModel, ConfigDict, Field +from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator from typing import Any, ClassVar, Dict, List, Union from typing_extensions import Annotated -from octobot_protocol.models.evaluator_type import EvaluatorType from typing import Optional, Set from typing_extensions import Self from pydantic_core import to_jsonable_python @@ -29,12 +28,19 @@ class RSIMomentumEvaluatorConfiguration(BaseModel): """ RSIMomentumEvaluatorConfiguration """ # noqa: E501 - configuration_type: EvaluatorType = Field(description="RSIMomentumEvaluator") + configuration_type: StrictStr period_length: Union[Annotated[float, Field(strict=True, ge=1)], Annotated[int, Field(strict=True, ge=1)]] short_threshold: Union[Annotated[float, Field(le=100, strict=True, ge=0)], Annotated[int, Field(le=100, strict=True, ge=0)]] long_threshold: Union[Annotated[float, Field(le=100, strict=True, ge=0)], Annotated[int, Field(le=100, strict=True, ge=0)]] __properties: ClassVar[List[str]] = ["configuration_type", "period_length", "short_threshold", "long_threshold"] + @field_validator('configuration_type') + def configuration_type_validate_enum(cls, value): + """Validates the enum""" + if value not in set(['RSIMomentumEvaluator']): + raise ValueError("must be one of enum values ('RSIMomentumEvaluator')") + return value + model_config = ConfigDict( validate_by_name=True, validate_by_alias=True, diff --git a/packages/protocol/octobot_protocol/models/stop_automation_configuration.py b/packages/protocol/octobot_protocol/models/stop_automation_configuration.py index 3a5dac6bf..3403dc21e 100644 --- a/packages/protocol/octobot_protocol/models/stop_automation_configuration.py +++ b/packages/protocol/octobot_protocol/models/stop_automation_configuration.py @@ -17,9 +17,8 @@ import re # noqa: F401 import json -from pydantic import BaseModel, ConfigDict, Field, StrictStr +from pydantic import BaseModel, ConfigDict, StrictStr, field_validator from typing import Any, ClassVar, Dict, List -from octobot_protocol.models.user_action_type import UserActionType from typing import Optional, Set from typing_extensions import Self from pydantic_core import to_jsonable_python @@ -29,9 +28,16 @@ class StopAutomationConfiguration(BaseModel): StopAutomationConfiguration """ # noqa: E501 id: StrictStr - action_type: UserActionType = Field(description="automation_stop") + action_type: StrictStr __properties: ClassVar[List[str]] = ["id", "action_type"] + @field_validator('action_type') + def action_type_validate_enum(cls, value): + """Validates the enum""" + if value not in set(['automation_stop']): + raise ValueError("must be one of enum values ('automation_stop')") + return value + model_config = ConfigDict( validate_by_name=True, validate_by_alias=True, diff --git a/packages/protocol/octobot_protocol/models/user_action_type.py b/packages/protocol/octobot_protocol/models/user_action_type.py deleted file mode 100644 index 4612bdb76..000000000 --- a/packages/protocol/octobot_protocol/models/user_action_type.py +++ /dev/null @@ -1,42 +0,0 @@ -# coding: utf-8 - -""" - OctoBot protocol types - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: 1.0.0 - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import json -from enum import Enum -from typing_extensions import Self - - -class UserActionType(str, Enum): - """ - UserActionType - """ - - """ - allowed enum values - """ - AUTOMATION_CREATE = 'automation_create' - AUTOMATION_EDIT = 'automation_edit' - AUTOMATION_STOP = 'automation_stop' - ACCOUNT_CREATE = 'account_create' - ACCOUNT_EDIT = 'account_edit' - ACCOUNT_DELETE = 'account_delete' - ACCOUNTS_REFRESH = 'accounts_refresh' - - @classmethod - def from_json(cls, json_str: str) -> Self: - """Create an instance of UserActionType from a JSON string""" - return cls(json.loads(json_str)) - - diff --git a/packages/protocol/octobot_protocol_ts/models/Account.ts b/packages/protocol/octobot_protocol_ts/models/Account.ts new file mode 100644 index 000000000..698328a26 --- /dev/null +++ b/packages/protocol/octobot_protocol_ts/models/Account.ts @@ -0,0 +1,89 @@ +/** + * OctoBot protocol types + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { AccountDetails } from '../models/AccountDetails'; +import { AccountState } from '../models/AccountState'; + +/** +* Account +*/ +export class Account { + 'id': string; + 'name': string; + 'is_simulated': boolean; + 'description'?: string; + 'state'?: AccountState; + 'created_at': string; + 'updated_at': string; + 'details'?: AccountDetails; + + static readonly discriminator: string | undefined = undefined; + + static readonly mapping: {[index: string]: string} | undefined = undefined; + + static readonly attributeTypeMap: Array<{name: string, baseName: string, type: string, format: string}> = [ + { + "name": "id", + "baseName": "id", + "type": "string", + "format": "" + }, + { + "name": "name", + "baseName": "name", + "type": "string", + "format": "" + }, + { + "name": "is_simulated", + "baseName": "is_simulated", + "type": "boolean", + "format": "" + }, + { + "name": "description", + "baseName": "description", + "type": "string", + "format": "" + }, + { + "name": "state", + "baseName": "state", + "type": "AccountState", + "format": "" + }, + { + "name": "created_at", + "baseName": "created_at", + "type": "Date", + "format": "date-time" + }, + { + "name": "updated_at", + "baseName": "updated_at", + "type": "Date", + "format": "date-time" + }, + { + "name": "details", + "baseName": "details", + "type": "AccountDetails", + "format": "" + } ]; + + static getAttributeTypeMap() { + return Account.attributeTypeMap; + } + + public constructor() { + } +} diff --git a/packages/protocol/octobot_protocol_ts/models/AccountActionResult.ts b/packages/protocol/octobot_protocol_ts/models/AccountActionResult.ts new file mode 100644 index 000000000..431c4e5db --- /dev/null +++ b/packages/protocol/octobot_protocol_ts/models/AccountActionResult.ts @@ -0,0 +1,63 @@ +/** + * OctoBot protocol types + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { AccountActionResultErrorMessage } from '../models/AccountActionResultErrorMessage'; +import { UserActionResultType } from '../models/UserActionResultType'; + +/** +* AccountActionResult +*/ +export class AccountActionResult { + 'updated_at': string; + 'error_message'?: AccountActionResultErrorMessage; + 'error_details'?: string; + 'result_type': UserActionResultType; + + static readonly discriminator: string | undefined = undefined; + + static readonly mapping: {[index: string]: string} | undefined = undefined; + + static readonly attributeTypeMap: Array<{name: string, baseName: string, type: string, format: string}> = [ + { + "name": "updated_at", + "baseName": "updated_at", + "type": "Date", + "format": "date-time" + }, + { + "name": "error_message", + "baseName": "error_message", + "type": "AccountActionResultErrorMessage", + "format": "" + }, + { + "name": "error_details", + "baseName": "error_details", + "type": "string", + "format": "" + }, + { + "name": "result_type", + "baseName": "result_type", + "type": "UserActionResultType", + "format": "" + } ]; + + static getAttributeTypeMap() { + return AccountActionResult.attributeTypeMap; + } + + public constructor() { + } +} + + diff --git a/packages/protocol/octobot_protocol_ts/models/AccountActionResultErrorMessage.ts b/packages/protocol/octobot_protocol_ts/models/AccountActionResultErrorMessage.ts new file mode 100644 index 000000000..fa059521d --- /dev/null +++ b/packages/protocol/octobot_protocol_ts/models/AccountActionResultErrorMessage.ts @@ -0,0 +1,17 @@ +/** + * OctoBot protocol types + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +/** +* AccountActionResultErrorMessage +*/ +export type AccountActionResultErrorMessage = 'account_not_found' | 'invalid_configuration' | 'internal_error' diff --git a/packages/protocol/octobot_protocol_ts/models/AccountDetails.ts b/packages/protocol/octobot_protocol_ts/models/AccountDetails.ts new file mode 100644 index 000000000..55606f280 --- /dev/null +++ b/packages/protocol/octobot_protocol_ts/models/AccountDetails.ts @@ -0,0 +1,38 @@ +/** + * OctoBot protocol types + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { BlockchainAccount } from '../models/BlockchainAccount'; +import { ExchangeAccount } from '../models/ExchangeAccount'; +import { GenericAccount } from '../models/GenericAccount'; + +/** + * @type AccountDetails + * Type + * @export + */ +export type AccountDetails = BlockchainAccount | ExchangeAccount | GenericAccount; + +/** +* @type AccountDetailsClass +* @export +*/ +export class AccountDetailsClass { + static readonly discriminator: string | undefined = "account_type"; + + static readonly mapping: {[index: string]: string} | undefined = { + "blockchain": "BlockchainAccount", + "exchange": "ExchangeAccount", + "generic": "GenericAccount", + }; +} + + diff --git a/packages/protocol/octobot_protocol_ts/models/AccountReference.ts b/packages/protocol/octobot_protocol_ts/models/AccountReference.ts new file mode 100644 index 000000000..c51cfb35c --- /dev/null +++ b/packages/protocol/octobot_protocol_ts/models/AccountReference.ts @@ -0,0 +1,38 @@ +/** + * OctoBot protocol types + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +/** +* AccountReference +*/ +export class AccountReference { + 'id': string; + + static readonly discriminator: string | undefined = undefined; + + static readonly mapping: {[index: string]: string} | undefined = undefined; + + static readonly attributeTypeMap: Array<{name: string, baseName: string, type: string, format: string}> = [ + { + "name": "id", + "baseName": "id", + "type": "string", + "format": "" + } ]; + + static getAttributeTypeMap() { + return AccountReference.attributeTypeMap; + } + + public constructor() { + } +} diff --git a/packages/protocol/octobot_protocol_ts/models/AccountState.ts b/packages/protocol/octobot_protocol_ts/models/AccountState.ts new file mode 100644 index 000000000..6ec0d783b --- /dev/null +++ b/packages/protocol/octobot_protocol_ts/models/AccountState.ts @@ -0,0 +1,49 @@ +/** + * OctoBot protocol types + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { AccountStatus } from '../models/AccountStatus'; +import { AccountStatusMessage } from '../models/AccountStatusMessage'; + +/** +* AccountState +*/ +export class AccountState { + 'status': AccountStatus; + 'message'?: AccountStatusMessage; + + static readonly discriminator: string | undefined = undefined; + + static readonly mapping: {[index: string]: string} | undefined = undefined; + + static readonly attributeTypeMap: Array<{name: string, baseName: string, type: string, format: string}> = [ + { + "name": "status", + "baseName": "status", + "type": "AccountStatus", + "format": "" + }, + { + "name": "message", + "baseName": "message", + "type": "AccountStatusMessage", + "format": "" + } ]; + + static getAttributeTypeMap() { + return AccountState.attributeTypeMap; + } + + public constructor() { + } +} + + diff --git a/packages/protocol/octobot_protocol_ts/models/AccountStatus.ts b/packages/protocol/octobot_protocol_ts/models/AccountStatus.ts new file mode 100644 index 000000000..3db71449b --- /dev/null +++ b/packages/protocol/octobot_protocol_ts/models/AccountStatus.ts @@ -0,0 +1,17 @@ +/** + * OctoBot protocol types + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +/** +* AccountStatus +*/ +export type AccountStatus = 'valid' | 'invalid' | 'unknown' diff --git a/packages/protocol/octobot_protocol_ts/models/AccountStatusMessage.ts b/packages/protocol/octobot_protocol_ts/models/AccountStatusMessage.ts new file mode 100644 index 000000000..93af3e27e --- /dev/null +++ b/packages/protocol/octobot_protocol_ts/models/AccountStatusMessage.ts @@ -0,0 +1,17 @@ +/** + * OctoBot protocol types + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +/** +* AccountStatusMessage +*/ +export type AccountStatusMessage = 'pending_validation' | 'valid' | 'invalid_api_keys' | 'missing_api_trading_rights' | 'revoke_api_withdrawal_rights' | 'invalid_api_ip_whitelist' | 'internal_server_error' | 'account_too_old' | 'incompatible_account_referral' diff --git a/packages/protocol/octobot_protocol_ts/models/AccountType.ts b/packages/protocol/octobot_protocol_ts/models/AccountType.ts new file mode 100644 index 000000000..8bfa992bf --- /dev/null +++ b/packages/protocol/octobot_protocol_ts/models/AccountType.ts @@ -0,0 +1,17 @@ +/** + * OctoBot protocol types + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +/** +* Account category discriminator. +*/ +export type AccountType = 'generic' | 'exchange' | 'blockchain' diff --git a/packages/protocol/octobot_protocol_ts/models/AccountsState.ts b/packages/protocol/octobot_protocol_ts/models/AccountsState.ts new file mode 100644 index 000000000..0bd47747f --- /dev/null +++ b/packages/protocol/octobot_protocol_ts/models/AccountsState.ts @@ -0,0 +1,46 @@ +/** + * OctoBot protocol types + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { Account } from '../models/Account'; + +/** +* AccountsState +*/ +export class AccountsState { + 'version': string; + 'accounts'?: Array; + + static readonly discriminator: string | undefined = undefined; + + static readonly mapping: {[index: string]: string} | undefined = undefined; + + static readonly attributeTypeMap: Array<{name: string, baseName: string, type: string, format: string}> = [ + { + "name": "version", + "baseName": "version", + "type": "string", + "format": "" + }, + { + "name": "accounts", + "baseName": "accounts", + "type": "Array", + "format": "" + } ]; + + static getAttributeTypeMap() { + return AccountsState.attributeTypeMap; + } + + public constructor() { + } +} diff --git a/packages/protocol/octobot_protocol_ts/models/Action.ts b/packages/protocol/octobot_protocol_ts/models/Action.ts new file mode 100644 index 000000000..c434fdb5e --- /dev/null +++ b/packages/protocol/octobot_protocol_ts/models/Action.ts @@ -0,0 +1,90 @@ +/** + * OctoBot protocol types + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { TaskStatus } from '../models/TaskStatus'; + +/** +* Action +*/ +export class Action { + 'id': string; + 'action_type': string; + 'status': TaskStatus; + 'dsl'?: string; + 'configuration'?: { [key: string]: any; }; + 'result'?: string; + 'error'?: string; + 'completed_at'?: string; + + static readonly discriminator: string | undefined = undefined; + + static readonly mapping: {[index: string]: string} | undefined = undefined; + + static readonly attributeTypeMap: Array<{name: string, baseName: string, type: string, format: string}> = [ + { + "name": "id", + "baseName": "id", + "type": "string", + "format": "" + }, + { + "name": "action_type", + "baseName": "action_type", + "type": "string", + "format": "" + }, + { + "name": "status", + "baseName": "status", + "type": "TaskStatus", + "format": "" + }, + { + "name": "dsl", + "baseName": "dsl", + "type": "string", + "format": "" + }, + { + "name": "configuration", + "baseName": "configuration", + "type": "{ [key: string]: any; }", + "format": "" + }, + { + "name": "result", + "baseName": "result", + "type": "string", + "format": "" + }, + { + "name": "error", + "baseName": "error", + "type": "string", + "format": "" + }, + { + "name": "completed_at", + "baseName": "completed_at", + "type": "Date", + "format": "date-time" + } ]; + + static getAttributeTypeMap() { + return Action.attributeTypeMap; + } + + public constructor() { + } +} + + diff --git a/packages/protocol/octobot_protocol_ts/models/ActiveOrderSwapStrategy.ts b/packages/protocol/octobot_protocol_ts/models/ActiveOrderSwapStrategy.ts new file mode 100644 index 000000000..aef86622d --- /dev/null +++ b/packages/protocol/octobot_protocol_ts/models/ActiveOrderSwapStrategy.ts @@ -0,0 +1,55 @@ +/** + * OctoBot protocol types + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { ActiveOrderSwapStrategyType } from '../models/ActiveOrderSwapStrategyType'; + +/** +* ActiveOrderSwapStrategy +*/ +export class ActiveOrderSwapStrategy { + 'type': ActiveOrderSwapStrategyType; + 'trigger_price_configuration'?: any; + 'timeout'?: number; + + static readonly discriminator: string | undefined = undefined; + + static readonly mapping: {[index: string]: string} | undefined = undefined; + + static readonly attributeTypeMap: Array<{name: string, baseName: string, type: string, format: string}> = [ + { + "name": "type", + "baseName": "type", + "type": "ActiveOrderSwapStrategyType", + "format": "" + }, + { + "name": "trigger_price_configuration", + "baseName": "trigger_price_configuration", + "type": "any", + "format": "" + }, + { + "name": "timeout", + "baseName": "timeout", + "type": "number", + "format": "" + } ]; + + static getAttributeTypeMap() { + return ActiveOrderSwapStrategy.attributeTypeMap; + } + + public constructor() { + } +} + + diff --git a/packages/protocol/octobot_protocol_ts/models/ActiveOrderSwapStrategyType.ts b/packages/protocol/octobot_protocol_ts/models/ActiveOrderSwapStrategyType.ts new file mode 100644 index 000000000..0ce268a95 --- /dev/null +++ b/packages/protocol/octobot_protocol_ts/models/ActiveOrderSwapStrategyType.ts @@ -0,0 +1,17 @@ +/** + * OctoBot protocol types + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +/** +* Active order swap strategy class name (mirrors octobot_trading active_order_swap_strategy_factory). +*/ +export type ActiveOrderSwapStrategyType = 'StopFirstActiveOrderSwapStrategy' | 'TakeProfitFirstActiveOrderSwapStrategy' diff --git a/packages/protocol/octobot_protocol_ts/models/Asset.ts b/packages/protocol/octobot_protocol_ts/models/Asset.ts new file mode 100644 index 000000000..689aa3f0d --- /dev/null +++ b/packages/protocol/octobot_protocol_ts/models/Asset.ts @@ -0,0 +1,66 @@ +/** + * OctoBot protocol types + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +/** +* Asset +*/ +export class Asset { + 'symbol': string; + 'total': number; + 'available': number; + 'value'?: number; + 'unit'?: string; + + static readonly discriminator: string | undefined = undefined; + + static readonly mapping: {[index: string]: string} | undefined = undefined; + + static readonly attributeTypeMap: Array<{name: string, baseName: string, type: string, format: string}> = [ + { + "name": "symbol", + "baseName": "symbol", + "type": "string", + "format": "" + }, + { + "name": "total", + "baseName": "total", + "type": "number", + "format": "" + }, + { + "name": "available", + "baseName": "available", + "type": "number", + "format": "" + }, + { + "name": "value", + "baseName": "value", + "type": "number", + "format": "" + }, + { + "name": "unit", + "baseName": "unit", + "type": "string", + "format": "" + } ]; + + static getAttributeTypeMap() { + return Asset.attributeTypeMap; + } + + public constructor() { + } +} diff --git a/packages/protocol/octobot_protocol_ts/models/AutomationActionResult.ts b/packages/protocol/octobot_protocol_ts/models/AutomationActionResult.ts new file mode 100644 index 000000000..4e8e4c84e --- /dev/null +++ b/packages/protocol/octobot_protocol_ts/models/AutomationActionResult.ts @@ -0,0 +1,70 @@ +/** + * OctoBot protocol types + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { AutomationActionResultErrorMessage } from '../models/AutomationActionResultErrorMessage'; +import { UserActionResultType } from '../models/UserActionResultType'; + +/** +* AutomationActionResult +*/ +export class AutomationActionResult { + 'updated_at': string; + 'error_message'?: AutomationActionResultErrorMessage; + 'error_details'?: string; + 'created_automation_id'?: string; + 'result_type': UserActionResultType; + + static readonly discriminator: string | undefined = undefined; + + static readonly mapping: {[index: string]: string} | undefined = undefined; + + static readonly attributeTypeMap: Array<{name: string, baseName: string, type: string, format: string}> = [ + { + "name": "updated_at", + "baseName": "updated_at", + "type": "Date", + "format": "date-time" + }, + { + "name": "error_message", + "baseName": "error_message", + "type": "AutomationActionResultErrorMessage", + "format": "" + }, + { + "name": "error_details", + "baseName": "error_details", + "type": "string", + "format": "" + }, + { + "name": "created_automation_id", + "baseName": "created_automation_id", + "type": "string", + "format": "" + }, + { + "name": "result_type", + "baseName": "result_type", + "type": "UserActionResultType", + "format": "" + } ]; + + static getAttributeTypeMap() { + return AutomationActionResult.attributeTypeMap; + } + + public constructor() { + } +} + + diff --git a/packages/protocol/octobot_protocol_ts/models/AutomationActionResultErrorMessage.ts b/packages/protocol/octobot_protocol_ts/models/AutomationActionResultErrorMessage.ts new file mode 100644 index 000000000..9f3fe1da3 --- /dev/null +++ b/packages/protocol/octobot_protocol_ts/models/AutomationActionResultErrorMessage.ts @@ -0,0 +1,17 @@ +/** + * OctoBot protocol types + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +/** +* AutomationActionResultErrorMessage +*/ +export type AutomationActionResultErrorMessage = 'automation_not_found' | 'invalid_configuration' | 'strategy_not_found' | 'strategy_version_not_found' | 'account_not_found' | 'internal_error' diff --git a/packages/protocol/octobot_protocol_ts/models/AutomationConfiguration.ts b/packages/protocol/octobot_protocol_ts/models/AutomationConfiguration.ts new file mode 100644 index 000000000..8fb0f539c --- /dev/null +++ b/packages/protocol/octobot_protocol_ts/models/AutomationConfiguration.ts @@ -0,0 +1,75 @@ +/** + * OctoBot protocol types + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { AccountReference } from '../models/AccountReference'; +import { StrategyReference } from '../models/StrategyReference'; + +/** +* AutomationConfiguration +*/ +export class AutomationConfiguration { + 'name': string; + 'description'?: string; + 'created_at': string; + 'updated_at'?: string; + 'strategy': StrategyReference; + 'accounts': Array; + + static readonly discriminator: string | undefined = undefined; + + static readonly mapping: {[index: string]: string} | undefined = undefined; + + static readonly attributeTypeMap: Array<{name: string, baseName: string, type: string, format: string}> = [ + { + "name": "name", + "baseName": "name", + "type": "string", + "format": "" + }, + { + "name": "description", + "baseName": "description", + "type": "string", + "format": "" + }, + { + "name": "created_at", + "baseName": "created_at", + "type": "Date", + "format": "date-time" + }, + { + "name": "updated_at", + "baseName": "updated_at", + "type": "Date", + "format": "date-time" + }, + { + "name": "strategy", + "baseName": "strategy", + "type": "StrategyReference", + "format": "" + }, + { + "name": "accounts", + "baseName": "accounts", + "type": "Array", + "format": "" + } ]; + + static getAttributeTypeMap() { + return AutomationConfiguration.attributeTypeMap; + } + + public constructor() { + } +} diff --git a/packages/protocol/octobot_protocol_ts/models/AutomationMetadata.ts b/packages/protocol/octobot_protocol_ts/models/AutomationMetadata.ts new file mode 100644 index 000000000..6c6327725 --- /dev/null +++ b/packages/protocol/octobot_protocol_ts/models/AutomationMetadata.ts @@ -0,0 +1,59 @@ +/** + * OctoBot protocol types + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +/** +* AutomationMetadata +*/ +export class AutomationMetadata { + 'name': string; + 'description': string; + 'created_at'?: string; + 'updated_at'?: string; + + static readonly discriminator: string | undefined = undefined; + + static readonly mapping: {[index: string]: string} | undefined = undefined; + + static readonly attributeTypeMap: Array<{name: string, baseName: string, type: string, format: string}> = [ + { + "name": "name", + "baseName": "name", + "type": "string", + "format": "" + }, + { + "name": "description", + "baseName": "description", + "type": "string", + "format": "" + }, + { + "name": "created_at", + "baseName": "created_at", + "type": "Date", + "format": "date-time" + }, + { + "name": "updated_at", + "baseName": "updated_at", + "type": "Date", + "format": "date-time" + } ]; + + static getAttributeTypeMap() { + return AutomationMetadata.attributeTypeMap; + } + + public constructor() { + } +} diff --git a/packages/protocol/octobot_protocol_ts/models/AutomationState.ts b/packages/protocol/octobot_protocol_ts/models/AutomationState.ts new file mode 100644 index 000000000..e7650b295 --- /dev/null +++ b/packages/protocol/octobot_protocol_ts/models/AutomationState.ts @@ -0,0 +1,117 @@ +/** + * OctoBot protocol types + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { Action } from '../models/Action'; +import { Asset } from '../models/Asset'; +import { AutomationMetadata } from '../models/AutomationMetadata'; +import { OrderSummary } from '../models/OrderSummary'; +import { PositionSummary } from '../models/PositionSummary'; +import { TaskStatus } from '../models/TaskStatus'; +import { TradeSummary } from '../models/TradeSummary'; + +/** +* AutomationState +*/ +export class AutomationState { + 'id': string; + 'status': TaskStatus; + 'metadata': AutomationMetadata; + 'actions'?: Array; + 'priority_actions'?: Array; + 'exchanges'?: Array; + 'exchange_account_ids'?: Array; + 'assets'?: Array; + 'orders'?: Array; + 'trades'?: Array; + 'positions'?: Array; + + static readonly discriminator: string | undefined = undefined; + + static readonly mapping: {[index: string]: string} | undefined = undefined; + + static readonly attributeTypeMap: Array<{name: string, baseName: string, type: string, format: string}> = [ + { + "name": "id", + "baseName": "id", + "type": "string", + "format": "" + }, + { + "name": "status", + "baseName": "status", + "type": "TaskStatus", + "format": "" + }, + { + "name": "metadata", + "baseName": "metadata", + "type": "AutomationMetadata", + "format": "" + }, + { + "name": "actions", + "baseName": "actions", + "type": "Array", + "format": "" + }, + { + "name": "priority_actions", + "baseName": "priority_actions", + "type": "Array", + "format": "" + }, + { + "name": "exchanges", + "baseName": "exchanges", + "type": "Array", + "format": "" + }, + { + "name": "exchange_account_ids", + "baseName": "exchange_account_ids", + "type": "Array", + "format": "" + }, + { + "name": "assets", + "baseName": "assets", + "type": "Array", + "format": "" + }, + { + "name": "orders", + "baseName": "orders", + "type": "Array", + "format": "" + }, + { + "name": "trades", + "baseName": "trades", + "type": "Array", + "format": "" + }, + { + "name": "positions", + "baseName": "positions", + "type": "Array", + "format": "" + } ]; + + static getAttributeTypeMap() { + return AutomationState.attributeTypeMap; + } + + public constructor() { + } +} + + diff --git a/packages/protocol/octobot_protocol_ts/models/BlockchainAccount.ts b/packages/protocol/octobot_protocol_ts/models/BlockchainAccount.ts new file mode 100644 index 000000000..ec245f4d9 --- /dev/null +++ b/packages/protocol/octobot_protocol_ts/models/BlockchainAccount.ts @@ -0,0 +1,79 @@ +/** + * OctoBot protocol types + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { AccountType } from '../models/AccountType'; + +/** +* BlockchainAccount +*/ +export class BlockchainAccount { + /** + * blockchain + */ + 'account_type': AccountType; + 'blockchain': string; + 'network'?: string; + 'public_key'?: string; + 'private_key'?: string; + 'passphrase'?: string; + + static readonly discriminator: string | undefined = undefined; + + static readonly mapping: {[index: string]: string} | undefined = undefined; + + static readonly attributeTypeMap: Array<{name: string, baseName: string, type: string, format: string}> = [ + { + "name": "account_type", + "baseName": "account_type", + "type": "AccountType", + "format": "" + }, + { + "name": "blockchain", + "baseName": "blockchain", + "type": "string", + "format": "" + }, + { + "name": "network", + "baseName": "network", + "type": "string", + "format": "" + }, + { + "name": "public_key", + "baseName": "public_key", + "type": "string", + "format": "" + }, + { + "name": "private_key", + "baseName": "private_key", + "type": "string", + "format": "" + }, + { + "name": "passphrase", + "baseName": "passphrase", + "type": "string", + "format": "" + } ]; + + static getAttributeTypeMap() { + return BlockchainAccount.attributeTypeMap; + } + + public constructor() { + } +} + + diff --git a/packages/protocol/octobot_protocol_ts/models/CancelPolicy.ts b/packages/protocol/octobot_protocol_ts/models/CancelPolicy.ts new file mode 100644 index 000000000..ec06d20c0 --- /dev/null +++ b/packages/protocol/octobot_protocol_ts/models/CancelPolicy.ts @@ -0,0 +1,48 @@ +/** + * OctoBot protocol types + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { CancelPolicyType } from '../models/CancelPolicyType'; + +/** +* CancelPolicy +*/ +export class CancelPolicy { + 'type': CancelPolicyType; + 'details'?: any; + + static readonly discriminator: string | undefined = undefined; + + static readonly mapping: {[index: string]: string} | undefined = undefined; + + static readonly attributeTypeMap: Array<{name: string, baseName: string, type: string, format: string}> = [ + { + "name": "type", + "baseName": "type", + "type": "CancelPolicyType", + "format": "" + }, + { + "name": "details", + "baseName": "details", + "type": "any", + "format": "" + } ]; + + static getAttributeTypeMap() { + return CancelPolicy.attributeTypeMap; + } + + public constructor() { + } +} + + diff --git a/packages/protocol/octobot_protocol_ts/models/CancelPolicyType.ts b/packages/protocol/octobot_protocol_ts/models/CancelPolicyType.ts new file mode 100644 index 000000000..91b30b99c --- /dev/null +++ b/packages/protocol/octobot_protocol_ts/models/CancelPolicyType.ts @@ -0,0 +1,17 @@ +/** + * OctoBot protocol types + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +/** +* Cancel policy class name (mirrors octobot_trading cancel_policy_factory). +*/ +export type CancelPolicyType = 'ExpirationTimeOrderCancelPolicy' | 'ChainedOrderFillingPriceOrderCancelPolicy' diff --git a/packages/protocol/octobot_protocol_ts/models/CopiedAccount.ts b/packages/protocol/octobot_protocol_ts/models/CopiedAccount.ts new file mode 100644 index 000000000..8c478be5c --- /dev/null +++ b/packages/protocol/octobot_protocol_ts/models/CopiedAccount.ts @@ -0,0 +1,76 @@ +/** + * OctoBot protocol types + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { CopiedAsset } from '../models/CopiedAsset'; +import { Order } from '../models/Order'; +import { Position } from '../models/Position'; + +/** +* CopiedAccount +*/ +export class CopiedAccount { + 'version': string; + 'updated_at': number; + 'copied_assets': Array; + 'orders'?: Array; + 'positions'?: Array; + 'historical_snapshots'?: Array; + + static readonly discriminator: string | undefined = undefined; + + static readonly mapping: {[index: string]: string} | undefined = undefined; + + static readonly attributeTypeMap: Array<{name: string, baseName: string, type: string, format: string}> = [ + { + "name": "version", + "baseName": "version", + "type": "string", + "format": "" + }, + { + "name": "updated_at", + "baseName": "updated_at", + "type": "number", + "format": "" + }, + { + "name": "copied_assets", + "baseName": "copied_assets", + "type": "Array", + "format": "" + }, + { + "name": "orders", + "baseName": "orders", + "type": "Array", + "format": "" + }, + { + "name": "positions", + "baseName": "positions", + "type": "Array", + "format": "" + }, + { + "name": "historical_snapshots", + "baseName": "historical_snapshots", + "type": "Array", + "format": "" + } ]; + + static getAttributeTypeMap() { + return CopiedAccount.attributeTypeMap; + } + + public constructor() { + } +} diff --git a/packages/protocol/octobot_protocol_ts/models/CopiedAsset.ts b/packages/protocol/octobot_protocol_ts/models/CopiedAsset.ts new file mode 100644 index 000000000..07920ba17 --- /dev/null +++ b/packages/protocol/octobot_protocol_ts/models/CopiedAsset.ts @@ -0,0 +1,59 @@ +/** + * OctoBot protocol types + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +/** +* CopiedAsset +*/ +export class CopiedAsset { + 'name': string; + 'total': number; + 'available': number; + 'ratio': number; + + static readonly discriminator: string | undefined = undefined; + + static readonly mapping: {[index: string]: string} | undefined = undefined; + + static readonly attributeTypeMap: Array<{name: string, baseName: string, type: string, format: string}> = [ + { + "name": "name", + "baseName": "name", + "type": "string", + "format": "" + }, + { + "name": "total", + "baseName": "total", + "type": "number", + "format": "" + }, + { + "name": "available", + "baseName": "available", + "type": "number", + "format": "" + }, + { + "name": "ratio", + "baseName": "ratio", + "type": "number", + "format": "" + } ]; + + static getAttributeTypeMap() { + return CopiedAsset.attributeTypeMap; + } + + public constructor() { + } +} diff --git a/packages/protocol/octobot_protocol_ts/models/CopyConfiguration.ts b/packages/protocol/octobot_protocol_ts/models/CopyConfiguration.ts new file mode 100644 index 000000000..451fed162 --- /dev/null +++ b/packages/protocol/octobot_protocol_ts/models/CopyConfiguration.ts @@ -0,0 +1,48 @@ +/** + * OctoBot protocol types + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +/** +* CopyConfiguration +*/ +export class CopyConfiguration { + 'configuration_type': CopyConfigurationConfigurationTypeEnum; + 'strategy_id': string; + + static readonly discriminator: string | undefined = undefined; + + static readonly mapping: {[index: string]: string} | undefined = undefined; + + static readonly attributeTypeMap: Array<{name: string, baseName: string, type: string, format: string}> = [ + { + "name": "configuration_type", + "baseName": "configuration_type", + "type": "CopyConfigurationConfigurationTypeEnum", + "format": "" + }, + { + "name": "strategy_id", + "baseName": "strategy_id", + "type": "string", + "format": "" + } ]; + + static getAttributeTypeMap() { + return CopyConfiguration.attributeTypeMap; + } + + public constructor() { + } +} + +export type CopyConfigurationConfigurationTypeEnum = 'CopyConfiguration' + diff --git a/packages/protocol/octobot_protocol_ts/models/CreateAccountConfiguration.ts b/packages/protocol/octobot_protocol_ts/models/CreateAccountConfiguration.ts new file mode 100644 index 000000000..3b5978fc4 --- /dev/null +++ b/packages/protocol/octobot_protocol_ts/models/CreateAccountConfiguration.ts @@ -0,0 +1,49 @@ +/** + * OctoBot protocol types + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { Account } from '../models/Account'; + +/** +* CreateAccountConfiguration +*/ +export class CreateAccountConfiguration { + 'action_type': CreateAccountConfigurationActionTypeEnum; + 'configuration': Account; + + static readonly discriminator: string | undefined = undefined; + + static readonly mapping: {[index: string]: string} | undefined = undefined; + + static readonly attributeTypeMap: Array<{name: string, baseName: string, type: string, format: string}> = [ + { + "name": "action_type", + "baseName": "action_type", + "type": "CreateAccountConfigurationActionTypeEnum", + "format": "" + }, + { + "name": "configuration", + "baseName": "configuration", + "type": "Account", + "format": "" + } ]; + + static getAttributeTypeMap() { + return CreateAccountConfiguration.attributeTypeMap; + } + + public constructor() { + } +} + +export type CreateAccountConfigurationActionTypeEnum = 'account_create' + diff --git a/packages/protocol/octobot_protocol_ts/models/CreateAutomationConfiguration.ts b/packages/protocol/octobot_protocol_ts/models/CreateAutomationConfiguration.ts new file mode 100644 index 000000000..aeb62f265 --- /dev/null +++ b/packages/protocol/octobot_protocol_ts/models/CreateAutomationConfiguration.ts @@ -0,0 +1,49 @@ +/** + * OctoBot protocol types + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { AutomationConfiguration } from '../models/AutomationConfiguration'; + +/** +* CreateAutomationConfiguration +*/ +export class CreateAutomationConfiguration { + 'action_type': CreateAutomationConfigurationActionTypeEnum; + 'configuration': AutomationConfiguration; + + static readonly discriminator: string | undefined = undefined; + + static readonly mapping: {[index: string]: string} | undefined = undefined; + + static readonly attributeTypeMap: Array<{name: string, baseName: string, type: string, format: string}> = [ + { + "name": "action_type", + "baseName": "action_type", + "type": "CreateAutomationConfigurationActionTypeEnum", + "format": "" + }, + { + "name": "configuration", + "baseName": "configuration", + "type": "AutomationConfiguration", + "format": "" + } ]; + + static getAttributeTypeMap() { + return CreateAutomationConfiguration.attributeTypeMap; + } + + public constructor() { + } +} + +export type CreateAutomationConfigurationActionTypeEnum = 'automation_create' + diff --git a/packages/protocol/octobot_protocol_ts/models/DCAConfiguration.ts b/packages/protocol/octobot_protocol_ts/models/DCAConfiguration.ts new file mode 100644 index 000000000..5c31c0c52 --- /dev/null +++ b/packages/protocol/octobot_protocol_ts/models/DCAConfiguration.ts @@ -0,0 +1,121 @@ +/** + * OctoBot protocol types + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { EvaluatorConfiguration } from '../models/EvaluatorConfiguration'; +import { TimeFrame } from '../models/TimeFrame'; + +/** +* DCAConfiguration +*/ +export class DCAConfiguration { + 'configuration_type': DCAConfigurationConfigurationTypeEnum; + 'symbols': Array; + 'buy_orders_count': number; + 'percent_amount_per_buy_order': number; + 'profit_target_percent': number; + 'buy_order_price_discount_percent': number; + 'enable_stop_loss': boolean; + 'stop_loss_price_discount_percent': number; + 'trigger_mode': DCAConfigurationTriggerModeEnum; + 'use_init_entry_orders': boolean; + 'time_frames': Array; + 'evaluators': Array; + + static readonly discriminator: string | undefined = undefined; + + static readonly mapping: {[index: string]: string} | undefined = undefined; + + static readonly attributeTypeMap: Array<{name: string, baseName: string, type: string, format: string}> = [ + { + "name": "configuration_type", + "baseName": "configuration_type", + "type": "DCAConfigurationConfigurationTypeEnum", + "format": "" + }, + { + "name": "symbols", + "baseName": "symbols", + "type": "Array", + "format": "" + }, + { + "name": "buy_orders_count", + "baseName": "buy_orders_count", + "type": "number", + "format": "" + }, + { + "name": "percent_amount_per_buy_order", + "baseName": "percent_amount_per_buy_order", + "type": "number", + "format": "" + }, + { + "name": "profit_target_percent", + "baseName": "profit_target_percent", + "type": "number", + "format": "" + }, + { + "name": "buy_order_price_discount_percent", + "baseName": "buy_order_price_discount_percent", + "type": "number", + "format": "" + }, + { + "name": "enable_stop_loss", + "baseName": "enable_stop_loss", + "type": "boolean", + "format": "" + }, + { + "name": "stop_loss_price_discount_percent", + "baseName": "stop_loss_price_discount_percent", + "type": "number", + "format": "" + }, + { + "name": "trigger_mode", + "baseName": "trigger_mode", + "type": "DCAConfigurationTriggerModeEnum", + "format": "" + }, + { + "name": "use_init_entry_orders", + "baseName": "use_init_entry_orders", + "type": "boolean", + "format": "" + }, + { + "name": "time_frames", + "baseName": "time_frames", + "type": "Array", + "format": "" + }, + { + "name": "evaluators", + "baseName": "evaluators", + "type": "Array", + "format": "" + } ]; + + static getAttributeTypeMap() { + return DCAConfiguration.attributeTypeMap; + } + + public constructor() { + } +} + +export type DCAConfigurationConfigurationTypeEnum = 'DCAConfiguration' +export type DCAConfigurationTriggerModeEnum = 'Maximum evaluators signals based' | 'Time based' + diff --git a/packages/protocol/octobot_protocol_ts/models/DeleteAccountConfiguration.ts b/packages/protocol/octobot_protocol_ts/models/DeleteAccountConfiguration.ts new file mode 100644 index 000000000..61812a5a4 --- /dev/null +++ b/packages/protocol/octobot_protocol_ts/models/DeleteAccountConfiguration.ts @@ -0,0 +1,48 @@ +/** + * OctoBot protocol types + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +/** +* DeleteAccountConfiguration +*/ +export class DeleteAccountConfiguration { + 'action_type': DeleteAccountConfigurationActionTypeEnum; + 'id': string; + + static readonly discriminator: string | undefined = undefined; + + static readonly mapping: {[index: string]: string} | undefined = undefined; + + static readonly attributeTypeMap: Array<{name: string, baseName: string, type: string, format: string}> = [ + { + "name": "action_type", + "baseName": "action_type", + "type": "DeleteAccountConfigurationActionTypeEnum", + "format": "" + }, + { + "name": "id", + "baseName": "id", + "type": "string", + "format": "" + } ]; + + static getAttributeTypeMap() { + return DeleteAccountConfiguration.attributeTypeMap; + } + + public constructor() { + } +} + +export type DeleteAccountConfigurationActionTypeEnum = 'account_delete' + diff --git a/packages/protocol/octobot_protocol_ts/models/EMAMomentumEvaluatorConfiguration.ts b/packages/protocol/octobot_protocol_ts/models/EMAMomentumEvaluatorConfiguration.ts new file mode 100644 index 000000000..492566cb1 --- /dev/null +++ b/packages/protocol/octobot_protocol_ts/models/EMAMomentumEvaluatorConfiguration.ts @@ -0,0 +1,62 @@ +/** + * OctoBot protocol types + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +/** +* EMAMomentumEvaluatorConfiguration +*/ +export class EMAMomentumEvaluatorConfiguration { + 'configuration_type': EMAMomentumEvaluatorConfigurationConfigurationTypeEnum; + 'period_length': number; + 'price_threshold_percent': number; + 'reverse_signal': boolean; + + static readonly discriminator: string | undefined = undefined; + + static readonly mapping: {[index: string]: string} | undefined = undefined; + + static readonly attributeTypeMap: Array<{name: string, baseName: string, type: string, format: string}> = [ + { + "name": "configuration_type", + "baseName": "configuration_type", + "type": "EMAMomentumEvaluatorConfigurationConfigurationTypeEnum", + "format": "" + }, + { + "name": "period_length", + "baseName": "period_length", + "type": "number", + "format": "" + }, + { + "name": "price_threshold_percent", + "baseName": "price_threshold_percent", + "type": "number", + "format": "" + }, + { + "name": "reverse_signal", + "baseName": "reverse_signal", + "type": "boolean", + "format": "" + } ]; + + static getAttributeTypeMap() { + return EMAMomentumEvaluatorConfiguration.attributeTypeMap; + } + + public constructor() { + } +} + +export type EMAMomentumEvaluatorConfigurationConfigurationTypeEnum = 'EMAMomentumEvaluator' + diff --git a/packages/protocol/octobot_protocol_ts/models/EditAccountConfiguration.ts b/packages/protocol/octobot_protocol_ts/models/EditAccountConfiguration.ts new file mode 100644 index 000000000..9676b4d30 --- /dev/null +++ b/packages/protocol/octobot_protocol_ts/models/EditAccountConfiguration.ts @@ -0,0 +1,56 @@ +/** + * OctoBot protocol types + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { Account } from '../models/Account'; + +/** +* EditAccountConfiguration +*/ +export class EditAccountConfiguration { + 'action_type': EditAccountConfigurationActionTypeEnum; + 'id': string; + 'configuration'?: Account; + + static readonly discriminator: string | undefined = undefined; + + static readonly mapping: {[index: string]: string} | undefined = undefined; + + static readonly attributeTypeMap: Array<{name: string, baseName: string, type: string, format: string}> = [ + { + "name": "action_type", + "baseName": "action_type", + "type": "EditAccountConfigurationActionTypeEnum", + "format": "" + }, + { + "name": "id", + "baseName": "id", + "type": "string", + "format": "" + }, + { + "name": "configuration", + "baseName": "configuration", + "type": "Account", + "format": "" + } ]; + + static getAttributeTypeMap() { + return EditAccountConfiguration.attributeTypeMap; + } + + public constructor() { + } +} + +export type EditAccountConfigurationActionTypeEnum = 'account_edit' + diff --git a/packages/protocol/octobot_protocol_ts/models/EditAutomationConfiguration.ts b/packages/protocol/octobot_protocol_ts/models/EditAutomationConfiguration.ts new file mode 100644 index 000000000..97ad1923e --- /dev/null +++ b/packages/protocol/octobot_protocol_ts/models/EditAutomationConfiguration.ts @@ -0,0 +1,56 @@ +/** + * OctoBot protocol types + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { AutomationConfiguration } from '../models/AutomationConfiguration'; + +/** +* EditAutomationConfiguration +*/ +export class EditAutomationConfiguration { + 'id': string; + 'action_type': EditAutomationConfigurationActionTypeEnum; + 'configuration': AutomationConfiguration; + + static readonly discriminator: string | undefined = undefined; + + static readonly mapping: {[index: string]: string} | undefined = undefined; + + static readonly attributeTypeMap: Array<{name: string, baseName: string, type: string, format: string}> = [ + { + "name": "id", + "baseName": "id", + "type": "string", + "format": "" + }, + { + "name": "action_type", + "baseName": "action_type", + "type": "EditAutomationConfigurationActionTypeEnum", + "format": "" + }, + { + "name": "configuration", + "baseName": "configuration", + "type": "AutomationConfiguration", + "format": "" + } ]; + + static getAttributeTypeMap() { + return EditAutomationConfiguration.attributeTypeMap; + } + + public constructor() { + } +} + +export type EditAutomationConfigurationActionTypeEnum = 'automation_edit' + diff --git a/packages/protocol/octobot_protocol_ts/models/EvaluatorConfiguration.ts b/packages/protocol/octobot_protocol_ts/models/EvaluatorConfiguration.ts new file mode 100644 index 000000000..19c325a88 --- /dev/null +++ b/packages/protocol/octobot_protocol_ts/models/EvaluatorConfiguration.ts @@ -0,0 +1,39 @@ +/** + * OctoBot protocol types + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { EvaluatorConfigurationConfiguration } from '../models/EvaluatorConfigurationConfiguration'; + +/** +* EvaluatorConfiguration +*/ +export class EvaluatorConfiguration { + 'configuration': EvaluatorConfigurationConfiguration; + + static readonly discriminator: string | undefined = undefined; + + static readonly mapping: {[index: string]: string} | undefined = undefined; + + static readonly attributeTypeMap: Array<{name: string, baseName: string, type: string, format: string}> = [ + { + "name": "configuration", + "baseName": "configuration", + "type": "EvaluatorConfigurationConfiguration", + "format": "" + } ]; + + static getAttributeTypeMap() { + return EvaluatorConfiguration.attributeTypeMap; + } + + public constructor() { + } +} diff --git a/packages/protocol/octobot_protocol_ts/models/EvaluatorConfigurationConfiguration.ts b/packages/protocol/octobot_protocol_ts/models/EvaluatorConfigurationConfiguration.ts new file mode 100644 index 000000000..f53ebd12a --- /dev/null +++ b/packages/protocol/octobot_protocol_ts/models/EvaluatorConfigurationConfiguration.ts @@ -0,0 +1,35 @@ +/** + * OctoBot protocol types + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { EMAMomentumEvaluatorConfiguration } from '../models/EMAMomentumEvaluatorConfiguration'; +import { RSIMomentumEvaluatorConfiguration } from '../models/RSIMomentumEvaluatorConfiguration'; + +/** + * @type EvaluatorConfigurationConfiguration + * Type + * @export + */ +export type EvaluatorConfigurationConfiguration = EMAMomentumEvaluatorConfiguration | RSIMomentumEvaluatorConfiguration; + +/** +* @type EvaluatorConfigurationConfigurationClass +* @export +*/ +export class EvaluatorConfigurationConfigurationClass { + static readonly discriminator: string | undefined = "configuration_type"; + + static readonly mapping: {[index: string]: string} | undefined = { + "EMAMomentumEvaluator": "EMAMomentumEvaluatorConfiguration", + "RSIMomentumEvaluator": "RSIMomentumEvaluatorConfiguration", + }; +} + diff --git a/packages/protocol/octobot_protocol_ts/models/ExchangeAccount.ts b/packages/protocol/octobot_protocol_ts/models/ExchangeAccount.ts new file mode 100644 index 000000000..74e3c1384 --- /dev/null +++ b/packages/protocol/octobot_protocol_ts/models/ExchangeAccount.ts @@ -0,0 +1,119 @@ +/** + * OctoBot protocol types + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { AccountType } from '../models/AccountType'; +import { Asset } from '../models/Asset'; +import { Order } from '../models/Order'; +import { Position } from '../models/Position'; +import { Trade } from '../models/Trade'; +import { TradingType } from '../models/TradingType'; + +/** +* ExchangeAccount +*/ +export class ExchangeAccount { + /** + * exchange + */ + 'account_type': AccountType; + 'trading_type': TradingType; + 'exchange': string; + 'remote_account_id': string; + 'api_key': string; + 'api_secret': string; + 'api_passphrase'?: string; + 'assets'?: Array; + 'orders'?: Array; + 'trades'?: Array; + 'positions'?: Array; + + static readonly discriminator: string | undefined = undefined; + + static readonly mapping: {[index: string]: string} | undefined = undefined; + + static readonly attributeTypeMap: Array<{name: string, baseName: string, type: string, format: string}> = [ + { + "name": "account_type", + "baseName": "account_type", + "type": "AccountType", + "format": "" + }, + { + "name": "trading_type", + "baseName": "trading_type", + "type": "TradingType", + "format": "" + }, + { + "name": "exchange", + "baseName": "exchange", + "type": "string", + "format": "" + }, + { + "name": "remote_account_id", + "baseName": "remote_account_id", + "type": "string", + "format": "" + }, + { + "name": "api_key", + "baseName": "api_key", + "type": "string", + "format": "" + }, + { + "name": "api_secret", + "baseName": "api_secret", + "type": "string", + "format": "" + }, + { + "name": "api_passphrase", + "baseName": "api_passphrase", + "type": "string", + "format": "" + }, + { + "name": "assets", + "baseName": "assets", + "type": "Array", + "format": "" + }, + { + "name": "orders", + "baseName": "orders", + "type": "Array", + "format": "" + }, + { + "name": "trades", + "baseName": "trades", + "type": "Array", + "format": "" + }, + { + "name": "positions", + "baseName": "positions", + "type": "Array", + "format": "" + } ]; + + static getAttributeTypeMap() { + return ExchangeAccount.attributeTypeMap; + } + + public constructor() { + } +} + + diff --git a/packages/protocol/octobot_protocol_ts/models/GenericAccount.ts b/packages/protocol/octobot_protocol_ts/models/GenericAccount.ts new file mode 100644 index 000000000..adb236570 --- /dev/null +++ b/packages/protocol/octobot_protocol_ts/models/GenericAccount.ts @@ -0,0 +1,52 @@ +/** + * OctoBot protocol types + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { AccountType } from '../models/AccountType'; +import { Asset } from '../models/Asset'; + +/** +* GenericAccount +*/ +export class GenericAccount { + /** + * generic + */ + 'account_type': AccountType; + 'assets'?: Array; + + static readonly discriminator: string | undefined = undefined; + + static readonly mapping: {[index: string]: string} | undefined = undefined; + + static readonly attributeTypeMap: Array<{name: string, baseName: string, type: string, format: string}> = [ + { + "name": "account_type", + "baseName": "account_type", + "type": "AccountType", + "format": "" + }, + { + "name": "assets", + "baseName": "assets", + "type": "Array", + "format": "" + } ]; + + static getAttributeTypeMap() { + return GenericAccount.attributeTypeMap; + } + + public constructor() { + } +} + + diff --git a/packages/protocol/octobot_protocol_ts/models/GenericProcessConfiguration.ts b/packages/protocol/octobot_protocol_ts/models/GenericProcessConfiguration.ts new file mode 100644 index 000000000..89116aec8 --- /dev/null +++ b/packages/protocol/octobot_protocol_ts/models/GenericProcessConfiguration.ts @@ -0,0 +1,48 @@ +/** + * OctoBot protocol types + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +/** +* GenericProcessConfiguration +*/ +export class GenericProcessConfiguration { + 'configuration_type': GenericProcessConfigurationConfigurationTypeEnum; + 'profile_data': any; + + static readonly discriminator: string | undefined = undefined; + + static readonly mapping: {[index: string]: string} | undefined = undefined; + + static readonly attributeTypeMap: Array<{name: string, baseName: string, type: string, format: string}> = [ + { + "name": "configuration_type", + "baseName": "configuration_type", + "type": "GenericProcessConfigurationConfigurationTypeEnum", + "format": "" + }, + { + "name": "profile_data", + "baseName": "profile_data", + "type": "any", + "format": "" + } ]; + + static getAttributeTypeMap() { + return GenericProcessConfiguration.attributeTypeMap; + } + + public constructor() { + } +} + +export type GenericProcessConfigurationConfigurationTypeEnum = 'GenericProcessConfiguration' + diff --git a/packages/protocol/octobot_protocol_ts/models/GenericWorkflowConfiguration.ts b/packages/protocol/octobot_protocol_ts/models/GenericWorkflowConfiguration.ts new file mode 100644 index 000000000..d7549e367 --- /dev/null +++ b/packages/protocol/octobot_protocol_ts/models/GenericWorkflowConfiguration.ts @@ -0,0 +1,49 @@ +/** + * OctoBot protocol types + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { Action } from '../models/Action'; + +/** +* GenericWorkflowConfiguration +*/ +export class GenericWorkflowConfiguration { + 'configuration_type': GenericWorkflowConfigurationConfigurationTypeEnum; + 'actions': Array; + + static readonly discriminator: string | undefined = undefined; + + static readonly mapping: {[index: string]: string} | undefined = undefined; + + static readonly attributeTypeMap: Array<{name: string, baseName: string, type: string, format: string}> = [ + { + "name": "configuration_type", + "baseName": "configuration_type", + "type": "GenericWorkflowConfigurationConfigurationTypeEnum", + "format": "" + }, + { + "name": "actions", + "baseName": "actions", + "type": "Array", + "format": "" + } ]; + + static getAttributeTypeMap() { + return GenericWorkflowConfiguration.attributeTypeMap; + } + + public constructor() { + } +} + +export type GenericWorkflowConfigurationConfigurationTypeEnum = 'GenericWorkflowConfiguration' + diff --git a/packages/protocol/octobot_protocol_ts/models/GridConfiguration.ts b/packages/protocol/octobot_protocol_ts/models/GridConfiguration.ts new file mode 100644 index 000000000..7a96b6526 --- /dev/null +++ b/packages/protocol/octobot_protocol_ts/models/GridConfiguration.ts @@ -0,0 +1,109 @@ +/** + * OctoBot protocol types + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +/** +* GridConfiguration +*/ +export class GridConfiguration { + 'configuration_type': GridConfigurationConfigurationTypeEnum; + 'symbol': string; + /** + * Price difference between the closest buy and sell orders. Denominated in the quote currency (600 for a 600 USDT spread on BTC/USDT). + */ + 'spread': number; + /** + * Price difference between two orders of the same side. Denominated in the quote currency (200 for a 200 USDT spread on BTC/USDT). + */ + 'increment': number; + /** + * Number of initial buy orders to create. Make sure to have enough funds to create that many orders. + */ + 'buy_count': number; + /** + * Number of initial sell orders to create. Make sure to have enough funds to create that many orders. + */ + 'sell_count': number; + 'enable_trailing_up': boolean; + 'enable_trailing_down': boolean; + 'order_by_order_trailing': boolean; + + static readonly discriminator: string | undefined = undefined; + + static readonly mapping: {[index: string]: string} | undefined = undefined; + + static readonly attributeTypeMap: Array<{name: string, baseName: string, type: string, format: string}> = [ + { + "name": "configuration_type", + "baseName": "configuration_type", + "type": "GridConfigurationConfigurationTypeEnum", + "format": "" + }, + { + "name": "symbol", + "baseName": "symbol", + "type": "string", + "format": "" + }, + { + "name": "spread", + "baseName": "spread", + "type": "number", + "format": "" + }, + { + "name": "increment", + "baseName": "increment", + "type": "number", + "format": "" + }, + { + "name": "buy_count", + "baseName": "buy_count", + "type": "number", + "format": "" + }, + { + "name": "sell_count", + "baseName": "sell_count", + "type": "number", + "format": "" + }, + { + "name": "enable_trailing_up", + "baseName": "enable_trailing_up", + "type": "boolean", + "format": "" + }, + { + "name": "enable_trailing_down", + "baseName": "enable_trailing_down", + "type": "boolean", + "format": "" + }, + { + "name": "order_by_order_trailing", + "baseName": "order_by_order_trailing", + "type": "boolean", + "format": "" + } ]; + + static getAttributeTypeMap() { + return GridConfiguration.attributeTypeMap; + } + + public constructor() { + } +} + +export type GridConfigurationConfigurationTypeEnum = 'GridConfiguration' + diff --git a/packages/protocol/octobot_protocol_ts/models/IndexCoin.ts b/packages/protocol/octobot_protocol_ts/models/IndexCoin.ts new file mode 100644 index 000000000..ce59af793 --- /dev/null +++ b/packages/protocol/octobot_protocol_ts/models/IndexCoin.ts @@ -0,0 +1,45 @@ +/** + * OctoBot protocol types + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +/** +* IndexCoin +*/ +export class IndexCoin { + 'name': string; + 'ratio': number; + + static readonly discriminator: string | undefined = undefined; + + static readonly mapping: {[index: string]: string} | undefined = undefined; + + static readonly attributeTypeMap: Array<{name: string, baseName: string, type: string, format: string}> = [ + { + "name": "name", + "baseName": "name", + "type": "string", + "format": "" + }, + { + "name": "ratio", + "baseName": "ratio", + "type": "number", + "format": "" + } ]; + + static getAttributeTypeMap() { + return IndexCoin.attributeTypeMap; + } + + public constructor() { + } +} diff --git a/packages/protocol/octobot_protocol_ts/models/IndexConfiguration.ts b/packages/protocol/octobot_protocol_ts/models/IndexConfiguration.ts new file mode 100644 index 000000000..41d0015cb --- /dev/null +++ b/packages/protocol/octobot_protocol_ts/models/IndexConfiguration.ts @@ -0,0 +1,56 @@ +/** + * OctoBot protocol types + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { IndexCoin } from '../models/IndexCoin'; + +/** +* IndexConfiguration +*/ +export class IndexConfiguration { + 'configuration_type': IndexConfigurationConfigurationTypeEnum; + 'coins': Array; + 'rebalance_trigger_min_percent': number; + + static readonly discriminator: string | undefined = undefined; + + static readonly mapping: {[index: string]: string} | undefined = undefined; + + static readonly attributeTypeMap: Array<{name: string, baseName: string, type: string, format: string}> = [ + { + "name": "configuration_type", + "baseName": "configuration_type", + "type": "IndexConfigurationConfigurationTypeEnum", + "format": "" + }, + { + "name": "coins", + "baseName": "coins", + "type": "Array", + "format": "" + }, + { + "name": "rebalance_trigger_min_percent", + "baseName": "rebalance_trigger_min_percent", + "type": "number", + "format": "" + } ]; + + static getAttributeTypeMap() { + return IndexConfiguration.attributeTypeMap; + } + + public constructor() { + } +} + +export type IndexConfigurationConfigurationTypeEnum = 'IndexConfiguration' + diff --git a/packages/protocol/octobot_protocol_ts/models/MarketMakingConfiguration.ts b/packages/protocol/octobot_protocol_ts/models/MarketMakingConfiguration.ts new file mode 100644 index 000000000..15407a014 --- /dev/null +++ b/packages/protocol/octobot_protocol_ts/models/MarketMakingConfiguration.ts @@ -0,0 +1,49 @@ +/** + * OctoBot protocol types + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { MarketMakingSymbolConfiguration } from '../models/MarketMakingSymbolConfiguration'; + +/** +* Per-symbol market making parameters. +*/ +export class MarketMakingConfiguration { + 'configuration_type': MarketMakingConfigurationConfigurationTypeEnum; + 'pair_settings': Array; + + static readonly discriminator: string | undefined = undefined; + + static readonly mapping: {[index: string]: string} | undefined = undefined; + + static readonly attributeTypeMap: Array<{name: string, baseName: string, type: string, format: string}> = [ + { + "name": "configuration_type", + "baseName": "configuration_type", + "type": "MarketMakingConfigurationConfigurationTypeEnum", + "format": "" + }, + { + "name": "pair_settings", + "baseName": "pair_settings", + "type": "Array", + "format": "" + } ]; + + static getAttributeTypeMap() { + return MarketMakingConfiguration.attributeTypeMap; + } + + public constructor() { + } +} + +export type MarketMakingConfigurationConfigurationTypeEnum = 'MarketMakingConfiguration' + diff --git a/packages/protocol/octobot_protocol_ts/models/MarketMakingFundsDistribution.ts b/packages/protocol/octobot_protocol_ts/models/MarketMakingFundsDistribution.ts new file mode 100644 index 000000000..43a07f074 --- /dev/null +++ b/packages/protocol/octobot_protocol_ts/models/MarketMakingFundsDistribution.ts @@ -0,0 +1,17 @@ +/** + * OctoBot protocol types + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +/** +* How allocated funds are spread across ladder levels. +*/ +export type MarketMakingFundsDistribution = 'flat' | 'valley' | 'random' diff --git a/packages/protocol/octobot_protocol_ts/models/MarketMakingHedgingEngine.ts b/packages/protocol/octobot_protocol_ts/models/MarketMakingHedgingEngine.ts new file mode 100644 index 000000000..b4438e2eb --- /dev/null +++ b/packages/protocol/octobot_protocol_ts/models/MarketMakingHedgingEngine.ts @@ -0,0 +1,83 @@ +/** + * OctoBot protocol types + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +/** +* Optional cross-exchange hedging configuration. +*/ +export class MarketMakingHedgingEngine { + 'average_price_counted_minutes'?: number; + 'hedging_engine_type'?: MarketMakingHedgingEngineHedgingEngineTypeEnum; + 'hedging_exchange'?: string; + 'hedging_max_loss_threshold'?: number; + 'hedging_profit_threshold'?: number; + 'max_negative_percent_price_change'?: number; + 'max_positive_percent_price_change'?: number; + + static readonly discriminator: string | undefined = undefined; + + static readonly mapping: {[index: string]: string} | undefined = undefined; + + static readonly attributeTypeMap: Array<{name: string, baseName: string, type: string, format: string}> = [ + { + "name": "average_price_counted_minutes", + "baseName": "average_price_counted_minutes", + "type": "number", + "format": "" + }, + { + "name": "hedging_engine_type", + "baseName": "hedging_engine_type", + "type": "MarketMakingHedgingEngineHedgingEngineTypeEnum", + "format": "" + }, + { + "name": "hedging_exchange", + "baseName": "hedging_exchange", + "type": "string", + "format": "" + }, + { + "name": "hedging_max_loss_threshold", + "baseName": "hedging_max_loss_threshold", + "type": "number", + "format": "" + }, + { + "name": "hedging_profit_threshold", + "baseName": "hedging_profit_threshold", + "type": "number", + "format": "" + }, + { + "name": "max_negative_percent_price_change", + "baseName": "max_negative_percent_price_change", + "type": "number", + "format": "" + }, + { + "name": "max_positive_percent_price_change", + "baseName": "max_positive_percent_price_change", + "type": "number", + "format": "" + } ]; + + static getAttributeTypeMap() { + return MarketMakingHedgingEngine.attributeTypeMap; + } + + public constructor() { + } +} + +export type MarketMakingHedgingEngineHedgingEngineTypeEnum = 'spot' | 'perpetual_futures' + diff --git a/packages/protocol/octobot_protocol_ts/models/MarketMakingOrderBookDepth.ts b/packages/protocol/octobot_protocol_ts/models/MarketMakingOrderBookDepth.ts new file mode 100644 index 000000000..78875fb10 --- /dev/null +++ b/packages/protocol/octobot_protocol_ts/models/MarketMakingOrderBookDepth.ts @@ -0,0 +1,45 @@ +/** + * OctoBot protocol types + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +/** +* Order book depth parameters (cumulated volume and daily volume fraction). +*/ +export class MarketMakingOrderBookDepth { + 'cumulated_volume_percent': number; + 'percent_daily_trading_volume': number; + + static readonly discriminator: string | undefined = undefined; + + static readonly mapping: {[index: string]: string} | undefined = undefined; + + static readonly attributeTypeMap: Array<{name: string, baseName: string, type: string, format: string}> = [ + { + "name": "cumulated_volume_percent", + "baseName": "cumulated_volume_percent", + "type": "number", + "format": "" + }, + { + "name": "percent_daily_trading_volume", + "baseName": "percent_daily_trading_volume", + "type": "number", + "format": "" + } ]; + + static getAttributeTypeMap() { + return MarketMakingOrderBookDepth.attributeTypeMap; + } + + public constructor() { + } +} diff --git a/packages/protocol/octobot_protocol_ts/models/MarketMakingOrdersDistribution.ts b/packages/protocol/octobot_protocol_ts/models/MarketMakingOrdersDistribution.ts new file mode 100644 index 000000000..762abafbd --- /dev/null +++ b/packages/protocol/octobot_protocol_ts/models/MarketMakingOrdersDistribution.ts @@ -0,0 +1,17 @@ +/** + * OctoBot protocol types + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +/** +* How order prices are spaced across the book. +*/ +export type MarketMakingOrdersDistribution = 'linear' diff --git a/packages/protocol/octobot_protocol_ts/models/MarketMakingReferencePair.ts b/packages/protocol/octobot_protocol_ts/models/MarketMakingReferencePair.ts new file mode 100644 index 000000000..5b1562a0c --- /dev/null +++ b/packages/protocol/octobot_protocol_ts/models/MarketMakingReferencePair.ts @@ -0,0 +1,75 @@ +/** + * OctoBot protocol types + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { TimeFrame } from '../models/TimeFrame'; + +/** +* Reference price source for market making (exchange pair, weighting, and optional formula). +*/ +export class MarketMakingReferencePair { + /** + * Exchange id, or a sentinel such as local exchange price when supported by the trading mode. + */ + 'exchange': string; + 'pair': string; + 'weight'?: number; + /** + * Optional formula overriding the default latest price for this source. + */ + 'formula'?: string; + 'time_frame'?: TimeFrame; + + static readonly discriminator: string | undefined = undefined; + + static readonly mapping: {[index: string]: string} | undefined = undefined; + + static readonly attributeTypeMap: Array<{name: string, baseName: string, type: string, format: string}> = [ + { + "name": "exchange", + "baseName": "exchange", + "type": "string", + "format": "" + }, + { + "name": "pair", + "baseName": "pair", + "type": "string", + "format": "" + }, + { + "name": "weight", + "baseName": "weight", + "type": "number", + "format": "" + }, + { + "name": "formula", + "baseName": "formula", + "type": "string", + "format": "" + }, + { + "name": "time_frame", + "baseName": "time_frame", + "type": "TimeFrame", + "format": "" + } ]; + + static getAttributeTypeMap() { + return MarketMakingReferencePair.attributeTypeMap; + } + + public constructor() { + } +} + + diff --git a/packages/protocol/octobot_protocol_ts/models/MarketMakingScheduledVolume.ts b/packages/protocol/octobot_protocol_ts/models/MarketMakingScheduledVolume.ts new file mode 100644 index 000000000..efd4d2ad9 --- /dev/null +++ b/packages/protocol/octobot_protocol_ts/models/MarketMakingScheduledVolume.ts @@ -0,0 +1,59 @@ +/** + * OctoBot protocol types + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +/** +* Scheduled volume order sizing and timing in quote currency. +*/ +export class MarketMakingScheduledVolume { + 'min_amount': number; + 'max_amount': number; + 'min_interval_seconds': number; + 'max_interval_seconds': number; + + static readonly discriminator: string | undefined = undefined; + + static readonly mapping: {[index: string]: string} | undefined = undefined; + + static readonly attributeTypeMap: Array<{name: string, baseName: string, type: string, format: string}> = [ + { + "name": "min_amount", + "baseName": "min_amount", + "type": "number", + "format": "" + }, + { + "name": "max_amount", + "baseName": "max_amount", + "type": "number", + "format": "" + }, + { + "name": "min_interval_seconds", + "baseName": "min_interval_seconds", + "type": "number", + "format": "" + }, + { + "name": "max_interval_seconds", + "baseName": "max_interval_seconds", + "type": "number", + "format": "" + } ]; + + static getAttributeTypeMap() { + return MarketMakingScheduledVolume.attributeTypeMap; + } + + public constructor() { + } +} diff --git a/packages/protocol/octobot_protocol_ts/models/MarketMakingStopConditions.ts b/packages/protocol/octobot_protocol_ts/models/MarketMakingStopConditions.ts new file mode 100644 index 000000000..d9fd57a26 --- /dev/null +++ b/packages/protocol/octobot_protocol_ts/models/MarketMakingStopConditions.ts @@ -0,0 +1,69 @@ +/** + * OctoBot protocol types + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +/** +* Optional holdings and volatility thresholds used for automations / stop behavior. +*/ +export class MarketMakingStopConditions { + 'min_base_holding'?: number; + 'min_quote_holding'?: number; + 'max_positive_percent_price_change'?: number; + 'max_negative_percent_price_change'?: number; + /** + * Minutes window for average price when evaluating volatility stops. + */ + 'average_price_counted_minutes'?: number; + + static readonly discriminator: string | undefined = undefined; + + static readonly mapping: {[index: string]: string} | undefined = undefined; + + static readonly attributeTypeMap: Array<{name: string, baseName: string, type: string, format: string}> = [ + { + "name": "min_base_holding", + "baseName": "min_base_holding", + "type": "number", + "format": "" + }, + { + "name": "min_quote_holding", + "baseName": "min_quote_holding", + "type": "number", + "format": "" + }, + { + "name": "max_positive_percent_price_change", + "baseName": "max_positive_percent_price_change", + "type": "number", + "format": "" + }, + { + "name": "max_negative_percent_price_change", + "baseName": "max_negative_percent_price_change", + "type": "number", + "format": "" + }, + { + "name": "average_price_counted_minutes", + "baseName": "average_price_counted_minutes", + "type": "number", + "format": "" + } ]; + + static getAttributeTypeMap() { + return MarketMakingStopConditions.attributeTypeMap; + } + + public constructor() { + } +} diff --git a/packages/protocol/octobot_protocol_ts/models/MarketMakingSymbolConfiguration.ts b/packages/protocol/octobot_protocol_ts/models/MarketMakingSymbolConfiguration.ts new file mode 100644 index 000000000..2003df8d3 --- /dev/null +++ b/packages/protocol/octobot_protocol_ts/models/MarketMakingSymbolConfiguration.ts @@ -0,0 +1,171 @@ +/** + * OctoBot protocol types + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { MarketMakingFundsDistribution } from '../models/MarketMakingFundsDistribution'; +import { MarketMakingHedgingEngine } from '../models/MarketMakingHedgingEngine'; +import { MarketMakingOrderBookDepth } from '../models/MarketMakingOrderBookDepth'; +import { MarketMakingOrdersDistribution } from '../models/MarketMakingOrdersDistribution'; +import { MarketMakingReferencePair } from '../models/MarketMakingReferencePair'; +import { MarketMakingScheduledVolume } from '../models/MarketMakingScheduledVolume'; +import { MarketMakingStopConditions } from '../models/MarketMakingStopConditions'; + +/** +* MarketMakingSymbolConfiguration +*/ +export class MarketMakingSymbolConfiguration { + 'trading_pair': string; + 'reference_price': Array; + /** + * Minimum spread as a percentage (e.g. 0.5 for 0.5%). + */ + 'min_spread': number; + /** + * Maximum spread as a percentage. + */ + 'max_spread': number; + 'order_book_depth'?: MarketMakingOrderBookDepth; + 'scheduled_volume'?: MarketMakingScheduledVolume; + 'stop_conditions'?: MarketMakingStopConditions; + 'bids_count': number; + 'asks_count': number; + 'orders_distribution': MarketMakingOrdersDistribution; + 'funds_distribution': MarketMakingFundsDistribution; + 'exchange': string; + /** + * 0 means unlimited when supported. + */ + 'max_base_budget'?: number; + /** + * 0 means unlimited when supported. + */ + 'max_quote_budget'?: number; + 'min_base_budget'?: number; + 'min_quote_budget'?: number; + 'hedging_engine'?: MarketMakingHedgingEngine; + + static readonly discriminator: string | undefined = undefined; + + static readonly mapping: {[index: string]: string} | undefined = undefined; + + static readonly attributeTypeMap: Array<{name: string, baseName: string, type: string, format: string}> = [ + { + "name": "trading_pair", + "baseName": "trading_pair", + "type": "string", + "format": "" + }, + { + "name": "reference_price", + "baseName": "reference_price", + "type": "Array", + "format": "" + }, + { + "name": "min_spread", + "baseName": "min_spread", + "type": "number", + "format": "" + }, + { + "name": "max_spread", + "baseName": "max_spread", + "type": "number", + "format": "" + }, + { + "name": "order_book_depth", + "baseName": "order_book_depth", + "type": "MarketMakingOrderBookDepth", + "format": "" + }, + { + "name": "scheduled_volume", + "baseName": "scheduled_volume", + "type": "MarketMakingScheduledVolume", + "format": "" + }, + { + "name": "stop_conditions", + "baseName": "stop_conditions", + "type": "MarketMakingStopConditions", + "format": "" + }, + { + "name": "bids_count", + "baseName": "bids_count", + "type": "number", + "format": "" + }, + { + "name": "asks_count", + "baseName": "asks_count", + "type": "number", + "format": "" + }, + { + "name": "orders_distribution", + "baseName": "orders_distribution", + "type": "MarketMakingOrdersDistribution", + "format": "" + }, + { + "name": "funds_distribution", + "baseName": "funds_distribution", + "type": "MarketMakingFundsDistribution", + "format": "" + }, + { + "name": "exchange", + "baseName": "exchange", + "type": "string", + "format": "" + }, + { + "name": "max_base_budget", + "baseName": "max_base_budget", + "type": "number", + "format": "" + }, + { + "name": "max_quote_budget", + "baseName": "max_quote_budget", + "type": "number", + "format": "" + }, + { + "name": "min_base_budget", + "baseName": "min_base_budget", + "type": "number", + "format": "" + }, + { + "name": "min_quote_budget", + "baseName": "min_quote_budget", + "type": "number", + "format": "" + }, + { + "name": "hedging_engine", + "baseName": "hedging_engine", + "type": "MarketMakingHedgingEngine", + "format": "" + } ]; + + static getAttributeTypeMap() { + return MarketMakingSymbolConfiguration.attributeTypeMap; + } + + public constructor() { + } +} + + diff --git a/packages/protocol/octobot_protocol_ts/models/Order.ts b/packages/protocol/octobot_protocol_ts/models/Order.ts new file mode 100644 index 000000000..c5b776ec9 --- /dev/null +++ b/packages/protocol/octobot_protocol_ts/models/Order.ts @@ -0,0 +1,172 @@ +/** + * OctoBot protocol types + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { CancelPolicy } from '../models/CancelPolicy'; +import { OrderGroup } from '../models/OrderGroup'; +import { OrderStatus } from '../models/OrderStatus'; +import { OrderType } from '../models/OrderType'; +import { Side } from '../models/Side'; +import { TrailingProfile } from '../models/TrailingProfile'; + +/** +* Order +*/ +export class Order { + 'id': string; + 'symbol': string; + 'price': number; + 'quantity': number; + 'filled': number; + 'exchange_id': string; + 'side': Side; + 'type': OrderType; + 'trigger_above'?: boolean; + 'reduce_only'?: boolean; + 'is_active'?: boolean; + 'status': OrderStatus; + 'created_at': string; + 'entries'?: Array; + 'update_with_triggering_order_fees'?: boolean; + 'order_group'?: OrderGroup; + 'trailing_profile'?: TrailingProfile; + 'cancel_policy'?: CancelPolicy; + 'chained_orders'?: Array; + + static readonly discriminator: string | undefined = undefined; + + static readonly mapping: {[index: string]: string} | undefined = undefined; + + static readonly attributeTypeMap: Array<{name: string, baseName: string, type: string, format: string}> = [ + { + "name": "id", + "baseName": "id", + "type": "string", + "format": "" + }, + { + "name": "symbol", + "baseName": "symbol", + "type": "string", + "format": "" + }, + { + "name": "price", + "baseName": "price", + "type": "number", + "format": "" + }, + { + "name": "quantity", + "baseName": "quantity", + "type": "number", + "format": "" + }, + { + "name": "filled", + "baseName": "filled", + "type": "number", + "format": "" + }, + { + "name": "exchange_id", + "baseName": "exchange_id", + "type": "string", + "format": "" + }, + { + "name": "side", + "baseName": "side", + "type": "Side", + "format": "" + }, + { + "name": "type", + "baseName": "type", + "type": "OrderType", + "format": "" + }, + { + "name": "trigger_above", + "baseName": "trigger_above", + "type": "boolean", + "format": "" + }, + { + "name": "reduce_only", + "baseName": "reduce_only", + "type": "boolean", + "format": "" + }, + { + "name": "is_active", + "baseName": "is_active", + "type": "boolean", + "format": "" + }, + { + "name": "status", + "baseName": "status", + "type": "OrderStatus", + "format": "" + }, + { + "name": "created_at", + "baseName": "created_at", + "type": "Date", + "format": "date-time" + }, + { + "name": "entries", + "baseName": "entries", + "type": "Array", + "format": "" + }, + { + "name": "update_with_triggering_order_fees", + "baseName": "update_with_triggering_order_fees", + "type": "boolean", + "format": "" + }, + { + "name": "order_group", + "baseName": "order_group", + "type": "OrderGroup", + "format": "" + }, + { + "name": "trailing_profile", + "baseName": "trailing_profile", + "type": "TrailingProfile", + "format": "" + }, + { + "name": "cancel_policy", + "baseName": "cancel_policy", + "type": "CancelPolicy", + "format": "" + }, + { + "name": "chained_orders", + "baseName": "chained_orders", + "type": "Array", + "format": "" + } ]; + + static getAttributeTypeMap() { + return Order.attributeTypeMap; + } + + public constructor() { + } +} + + diff --git a/packages/protocol/octobot_protocol_ts/models/OrderGroup.ts b/packages/protocol/octobot_protocol_ts/models/OrderGroup.ts new file mode 100644 index 000000000..50652051d --- /dev/null +++ b/packages/protocol/octobot_protocol_ts/models/OrderGroup.ts @@ -0,0 +1,56 @@ +/** + * OctoBot protocol types + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { ActiveOrderSwapStrategy } from '../models/ActiveOrderSwapStrategy'; +import { OrderGroupType } from '../models/OrderGroupType'; + +/** +* OrderGroup +*/ +export class OrderGroup { + 'id': string; + 'type'?: OrderGroupType; + 'active_order_swap_strategy'?: ActiveOrderSwapStrategy; + + static readonly discriminator: string | undefined = undefined; + + static readonly mapping: {[index: string]: string} | undefined = undefined; + + static readonly attributeTypeMap: Array<{name: string, baseName: string, type: string, format: string}> = [ + { + "name": "id", + "baseName": "id", + "type": "string", + "format": "" + }, + { + "name": "type", + "baseName": "type", + "type": "OrderGroupType", + "format": "" + }, + { + "name": "active_order_swap_strategy", + "baseName": "active_order_swap_strategy", + "type": "ActiveOrderSwapStrategy", + "format": "" + } ]; + + static getAttributeTypeMap() { + return OrderGroup.attributeTypeMap; + } + + public constructor() { + } +} + + diff --git a/packages/protocol/octobot_protocol_ts/models/OrderGroupType.ts b/packages/protocol/octobot_protocol_ts/models/OrderGroupType.ts new file mode 100644 index 000000000..4b85b4284 --- /dev/null +++ b/packages/protocol/octobot_protocol_ts/models/OrderGroupType.ts @@ -0,0 +1,17 @@ +/** + * OctoBot protocol types + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +/** +* Order group class name (mirrors persisted OrderGroup.__name__ in octobot_trading). +*/ +export type OrderGroupType = 'BalancedTakeProfitAndStopOrderGroup' | 'TrailingOnFilledTPBalancedOrderGroup' | 'OneCancelsTheOtherOrderGroup' diff --git a/packages/protocol/octobot_protocol_ts/models/OrderStatus.ts b/packages/protocol/octobot_protocol_ts/models/OrderStatus.ts new file mode 100644 index 000000000..adc2b57bb --- /dev/null +++ b/packages/protocol/octobot_protocol_ts/models/OrderStatus.ts @@ -0,0 +1,17 @@ +/** + * OctoBot protocol types + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +/** +* Lifecycle state of an order. +*/ +export type OrderStatus = 'pending_creation' | 'open' | 'partially_filled' | 'filled' | 'canceled' | 'canceling' | 'closed' | 'expired' | 'rejected' | 'unknown' diff --git a/packages/protocol/octobot_protocol_ts/models/OrderSummary.ts b/packages/protocol/octobot_protocol_ts/models/OrderSummary.ts new file mode 100644 index 000000000..f8ffe84e0 --- /dev/null +++ b/packages/protocol/octobot_protocol_ts/models/OrderSummary.ts @@ -0,0 +1,45 @@ +/** + * OctoBot protocol types + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +/** +* OrderSummary +*/ +export class OrderSummary { + 'id': string; + 'symbol': string; + + static readonly discriminator: string | undefined = undefined; + + static readonly mapping: {[index: string]: string} | undefined = undefined; + + static readonly attributeTypeMap: Array<{name: string, baseName: string, type: string, format: string}> = [ + { + "name": "id", + "baseName": "id", + "type": "string", + "format": "" + }, + { + "name": "symbol", + "baseName": "symbol", + "type": "string", + "format": "" + } ]; + + static getAttributeTypeMap() { + return OrderSummary.attributeTypeMap; + } + + public constructor() { + } +} diff --git a/packages/protocol/octobot_protocol_ts/models/OrderType.ts b/packages/protocol/octobot_protocol_ts/models/OrderType.ts new file mode 100644 index 000000000..89887dfde --- /dev/null +++ b/packages/protocol/octobot_protocol_ts/models/OrderType.ts @@ -0,0 +1,17 @@ +/** + * OctoBot protocol types + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +/** +* Exchange order type. +*/ +export type OrderType = 'limit' | 'market' | 'stop_loss' | 'stop_loss_limit' | 'take_profit' | 'take_profit_limit' diff --git a/packages/protocol/octobot_protocol_ts/models/Position.ts b/packages/protocol/octobot_protocol_ts/models/Position.ts new file mode 100644 index 000000000..f8401de21 --- /dev/null +++ b/packages/protocol/octobot_protocol_ts/models/Position.ts @@ -0,0 +1,91 @@ +/** + * OctoBot protocol types + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { PositionStatus } from '../models/PositionStatus'; +import { Side } from '../models/Side'; + +/** +* Position +*/ +export class Position { + 'id': string; + 'symbol': string; + 'side': Side; + 'quantity': number; + 'entry_price': number; + 'mark_price': number; + 'liquidation_price': number; + 'status': PositionStatus; + + static readonly discriminator: string | undefined = undefined; + + static readonly mapping: {[index: string]: string} | undefined = undefined; + + static readonly attributeTypeMap: Array<{name: string, baseName: string, type: string, format: string}> = [ + { + "name": "id", + "baseName": "id", + "type": "string", + "format": "" + }, + { + "name": "symbol", + "baseName": "symbol", + "type": "string", + "format": "" + }, + { + "name": "side", + "baseName": "side", + "type": "Side", + "format": "" + }, + { + "name": "quantity", + "baseName": "quantity", + "type": "number", + "format": "" + }, + { + "name": "entry_price", + "baseName": "entry_price", + "type": "number", + "format": "" + }, + { + "name": "mark_price", + "baseName": "mark_price", + "type": "number", + "format": "" + }, + { + "name": "liquidation_price", + "baseName": "liquidation_price", + "type": "number", + "format": "" + }, + { + "name": "status", + "baseName": "status", + "type": "PositionStatus", + "format": "" + } ]; + + static getAttributeTypeMap() { + return Position.attributeTypeMap; + } + + public constructor() { + } +} + + diff --git a/packages/protocol/octobot_protocol_ts/models/PositionStatus.ts b/packages/protocol/octobot_protocol_ts/models/PositionStatus.ts new file mode 100644 index 000000000..2f4540cee --- /dev/null +++ b/packages/protocol/octobot_protocol_ts/models/PositionStatus.ts @@ -0,0 +1,17 @@ +/** + * OctoBot protocol types + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +/** +* PositionStatus +*/ +export type PositionStatus = 'open' | 'liquidated' | 'liquidating' | 'auto_deleveraging' diff --git a/packages/protocol/octobot_protocol_ts/models/PositionSummary.ts b/packages/protocol/octobot_protocol_ts/models/PositionSummary.ts new file mode 100644 index 000000000..6d6d19685 --- /dev/null +++ b/packages/protocol/octobot_protocol_ts/models/PositionSummary.ts @@ -0,0 +1,45 @@ +/** + * OctoBot protocol types + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +/** +* PositionSummary +*/ +export class PositionSummary { + 'id': string; + 'symbol': string; + + static readonly discriminator: string | undefined = undefined; + + static readonly mapping: {[index: string]: string} | undefined = undefined; + + static readonly attributeTypeMap: Array<{name: string, baseName: string, type: string, format: string}> = [ + { + "name": "id", + "baseName": "id", + "type": "string", + "format": "" + }, + { + "name": "symbol", + "baseName": "symbol", + "type": "string", + "format": "" + } ]; + + static getAttributeTypeMap() { + return PositionSummary.attributeTypeMap; + } + + public constructor() { + } +} diff --git a/packages/protocol/octobot_protocol_ts/models/RSIMomentumEvaluatorConfiguration.ts b/packages/protocol/octobot_protocol_ts/models/RSIMomentumEvaluatorConfiguration.ts new file mode 100644 index 000000000..84a0eac25 --- /dev/null +++ b/packages/protocol/octobot_protocol_ts/models/RSIMomentumEvaluatorConfiguration.ts @@ -0,0 +1,62 @@ +/** + * OctoBot protocol types + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +/** +* RSIMomentumEvaluatorConfiguration +*/ +export class RSIMomentumEvaluatorConfiguration { + 'configuration_type': RSIMomentumEvaluatorConfigurationConfigurationTypeEnum; + 'period_length': number; + 'short_threshold': number; + 'long_threshold': number; + + static readonly discriminator: string | undefined = undefined; + + static readonly mapping: {[index: string]: string} | undefined = undefined; + + static readonly attributeTypeMap: Array<{name: string, baseName: string, type: string, format: string}> = [ + { + "name": "configuration_type", + "baseName": "configuration_type", + "type": "RSIMomentumEvaluatorConfigurationConfigurationTypeEnum", + "format": "" + }, + { + "name": "period_length", + "baseName": "period_length", + "type": "number", + "format": "" + }, + { + "name": "short_threshold", + "baseName": "short_threshold", + "type": "number", + "format": "" + }, + { + "name": "long_threshold", + "baseName": "long_threshold", + "type": "number", + "format": "" + } ]; + + static getAttributeTypeMap() { + return RSIMomentumEvaluatorConfiguration.attributeTypeMap; + } + + public constructor() { + } +} + +export type RSIMomentumEvaluatorConfigurationConfigurationTypeEnum = 'RSIMomentumEvaluator' + diff --git a/packages/protocol/octobot_protocol_ts/models/RefreshAccountsConfiguration.ts b/packages/protocol/octobot_protocol_ts/models/RefreshAccountsConfiguration.ts new file mode 100644 index 000000000..ff290f321 --- /dev/null +++ b/packages/protocol/octobot_protocol_ts/models/RefreshAccountsConfiguration.ts @@ -0,0 +1,48 @@ +/** + * OctoBot protocol types + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +/** +* RefreshAccountsConfiguration +*/ +export class RefreshAccountsConfiguration { + 'action_type': RefreshAccountsConfigurationActionTypeEnum; + 'account_ids'?: Array; + + static readonly discriminator: string | undefined = undefined; + + static readonly mapping: {[index: string]: string} | undefined = undefined; + + static readonly attributeTypeMap: Array<{name: string, baseName: string, type: string, format: string}> = [ + { + "name": "action_type", + "baseName": "action_type", + "type": "RefreshAccountsConfigurationActionTypeEnum", + "format": "" + }, + { + "name": "account_ids", + "baseName": "account_ids", + "type": "Array", + "format": "" + } ]; + + static getAttributeTypeMap() { + return RefreshAccountsConfiguration.attributeTypeMap; + } + + public constructor() { + } +} + +export type RefreshAccountsConfigurationActionTypeEnum = 'accounts_refresh' + diff --git a/packages/protocol/octobot_protocol_ts/models/Side.ts b/packages/protocol/octobot_protocol_ts/models/Side.ts new file mode 100644 index 000000000..1fd3f1d83 --- /dev/null +++ b/packages/protocol/octobot_protocol_ts/models/Side.ts @@ -0,0 +1,17 @@ +/** + * OctoBot protocol types + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +/** +* Order execution side. +*/ +export type Side = 'buy' | 'sell' diff --git a/packages/protocol/octobot_protocol_ts/models/StopAutomationConfiguration.ts b/packages/protocol/octobot_protocol_ts/models/StopAutomationConfiguration.ts new file mode 100644 index 000000000..7d2c16f98 --- /dev/null +++ b/packages/protocol/octobot_protocol_ts/models/StopAutomationConfiguration.ts @@ -0,0 +1,48 @@ +/** + * OctoBot protocol types + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +/** +* StopAutomationConfiguration +*/ +export class StopAutomationConfiguration { + 'id': string; + 'action_type': StopAutomationConfigurationActionTypeEnum; + + static readonly discriminator: string | undefined = undefined; + + static readonly mapping: {[index: string]: string} | undefined = undefined; + + static readonly attributeTypeMap: Array<{name: string, baseName: string, type: string, format: string}> = [ + { + "name": "id", + "baseName": "id", + "type": "string", + "format": "" + }, + { + "name": "action_type", + "baseName": "action_type", + "type": "StopAutomationConfigurationActionTypeEnum", + "format": "" + } ]; + + static getAttributeTypeMap() { + return StopAutomationConfiguration.attributeTypeMap; + } + + public constructor() { + } +} + +export type StopAutomationConfigurationActionTypeEnum = 'automation_stop' + diff --git a/packages/protocol/octobot_protocol_ts/models/StrategiesState.ts b/packages/protocol/octobot_protocol_ts/models/StrategiesState.ts new file mode 100644 index 000000000..cec90f48f --- /dev/null +++ b/packages/protocol/octobot_protocol_ts/models/StrategiesState.ts @@ -0,0 +1,46 @@ +/** + * OctoBot protocol types + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { Strategy } from '../models/Strategy'; + +/** +* StrategiesState +*/ +export class StrategiesState { + 'version': string; + 'strategies': Array; + + static readonly discriminator: string | undefined = undefined; + + static readonly mapping: {[index: string]: string} | undefined = undefined; + + static readonly attributeTypeMap: Array<{name: string, baseName: string, type: string, format: string}> = [ + { + "name": "version", + "baseName": "version", + "type": "string", + "format": "" + }, + { + "name": "strategies", + "baseName": "strategies", + "type": "Array", + "format": "" + } ]; + + static getAttributeTypeMap() { + return StrategiesState.attributeTypeMap; + } + + public constructor() { + } +} diff --git a/packages/protocol/octobot_protocol_ts/models/Strategy.ts b/packages/protocol/octobot_protocol_ts/models/Strategy.ts new file mode 100644 index 000000000..04beb980c --- /dev/null +++ b/packages/protocol/octobot_protocol_ts/models/Strategy.ts @@ -0,0 +1,81 @@ +/** + * OctoBot protocol types + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { StrategyConfiguration } from '../models/StrategyConfiguration'; + +/** +* Strategy +*/ +export class Strategy { + 'id': string; + 'version': string; + 'name'?: string; + 'description'?: string; + 'created_at'?: string; + 'updated_at'?: string; + 'configuration': StrategyConfiguration; + + static readonly discriminator: string | undefined = undefined; + + static readonly mapping: {[index: string]: string} | undefined = undefined; + + static readonly attributeTypeMap: Array<{name: string, baseName: string, type: string, format: string}> = [ + { + "name": "id", + "baseName": "id", + "type": "string", + "format": "" + }, + { + "name": "version", + "baseName": "version", + "type": "string", + "format": "" + }, + { + "name": "name", + "baseName": "name", + "type": "string", + "format": "" + }, + { + "name": "description", + "baseName": "description", + "type": "string", + "format": "" + }, + { + "name": "created_at", + "baseName": "created_at", + "type": "Date", + "format": "date-time" + }, + { + "name": "updated_at", + "baseName": "updated_at", + "type": "Date", + "format": "date-time" + }, + { + "name": "configuration", + "baseName": "configuration", + "type": "StrategyConfiguration", + "format": "" + } ]; + + static getAttributeTypeMap() { + return Strategy.attributeTypeMap; + } + + public constructor() { + } +} diff --git a/packages/protocol/octobot_protocol_ts/models/StrategyConfiguration.ts b/packages/protocol/octobot_protocol_ts/models/StrategyConfiguration.ts new file mode 100644 index 000000000..d60054146 --- /dev/null +++ b/packages/protocol/octobot_protocol_ts/models/StrategyConfiguration.ts @@ -0,0 +1,50 @@ +/** + * OctoBot protocol types + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { CopyConfiguration } from '../models/CopyConfiguration'; +import { DCAConfiguration } from '../models/DCAConfiguration'; +import { GenericProcessConfiguration } from '../models/GenericProcessConfiguration'; +import { GenericWorkflowConfiguration } from '../models/GenericWorkflowConfiguration'; +import { GridConfiguration } from '../models/GridConfiguration'; +import { IndexConfiguration } from '../models/IndexConfiguration'; +import { MarketMakingConfiguration } from '../models/MarketMakingConfiguration'; + +/** + * @type StrategyConfiguration + * Type + * @export + */ +export type StrategyConfiguration = CopyConfiguration | DCAConfiguration | GenericProcessConfiguration | GenericWorkflowConfiguration | GridConfiguration | IndexConfiguration | MarketMakingConfiguration; + +/** +* @type StrategyConfigurationClass +* @export +*/ +export class StrategyConfigurationClass { + static readonly discriminator: string | undefined = "configuration_type"; + + static readonly mapping: {[index: string]: string} | undefined = { + "CopyConfiguration": "CopyConfiguration", + "DCAConfiguration": "DCAConfiguration", + "GenericProcessConfiguration": "GenericProcessConfiguration", + "GenericWorkflowConfiguration": "GenericWorkflowConfiguration", + "GridConfiguration": "GridConfiguration", + "IndexConfiguration": "IndexConfiguration", + "MarketMakingConfiguration": "MarketMakingConfiguration", + }; +} + + + + + + diff --git a/packages/protocol/octobot_protocol_ts/models/StrategyReference.ts b/packages/protocol/octobot_protocol_ts/models/StrategyReference.ts new file mode 100644 index 000000000..95035f8ac --- /dev/null +++ b/packages/protocol/octobot_protocol_ts/models/StrategyReference.ts @@ -0,0 +1,52 @@ +/** + * OctoBot protocol types + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +/** +* StrategyReference +*/ +export class StrategyReference { + 'id': string; + 'version': string; + 'emit_signals'?: boolean; + + static readonly discriminator: string | undefined = undefined; + + static readonly mapping: {[index: string]: string} | undefined = undefined; + + static readonly attributeTypeMap: Array<{name: string, baseName: string, type: string, format: string}> = [ + { + "name": "id", + "baseName": "id", + "type": "string", + "format": "" + }, + { + "name": "version", + "baseName": "version", + "type": "string", + "format": "" + }, + { + "name": "emit_signals", + "baseName": "emit_signals", + "type": "boolean", + "format": "" + } ]; + + static getAttributeTypeMap() { + return StrategyReference.attributeTypeMap; + } + + public constructor() { + } +} diff --git a/packages/protocol/octobot_protocol_ts/models/TaskStatus.ts b/packages/protocol/octobot_protocol_ts/models/TaskStatus.ts new file mode 100644 index 000000000..22cb4850f --- /dev/null +++ b/packages/protocol/octobot_protocol_ts/models/TaskStatus.ts @@ -0,0 +1,17 @@ +/** + * OctoBot protocol types + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +/** +* TaskStatus +*/ +export type TaskStatus = 'pending' | 'scheduled' | 'periodic' | 'running' | 'completed' | 'failed' diff --git a/packages/protocol/octobot_protocol_ts/models/TimeFrame.ts b/packages/protocol/octobot_protocol_ts/models/TimeFrame.ts new file mode 100644 index 000000000..9bdd82834 --- /dev/null +++ b/packages/protocol/octobot_protocol_ts/models/TimeFrame.ts @@ -0,0 +1,17 @@ +/** + * OctoBot protocol types + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +/** +* TimeFrame +*/ +export type TimeFrame = '1m' | '5m' | '15m' | '30m' | '1h' | '4h' | '6h' | '8h' | '12h' | '1d' | '3d' | '1w' diff --git a/packages/protocol/octobot_protocol_ts/models/Trade.ts b/packages/protocol/octobot_protocol_ts/models/Trade.ts new file mode 100644 index 000000000..27bb93d3f --- /dev/null +++ b/packages/protocol/octobot_protocol_ts/models/Trade.ts @@ -0,0 +1,99 @@ +/** + * OctoBot protocol types + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { OrderStatus } from '../models/OrderStatus'; +import { OrderType } from '../models/OrderType'; +import { Side } from '../models/Side'; + +/** +* Trade +*/ +export class Trade { + 'id': string; + 'trade_id': string; + 'type': OrderType; + 'symbol': string; + 'side': Side; + 'quantity': number; + 'price': number; + 'status': OrderStatus; + 'executed_at': string; + + static readonly discriminator: string | undefined = undefined; + + static readonly mapping: {[index: string]: string} | undefined = undefined; + + static readonly attributeTypeMap: Array<{name: string, baseName: string, type: string, format: string}> = [ + { + "name": "id", + "baseName": "id", + "type": "string", + "format": "" + }, + { + "name": "trade_id", + "baseName": "trade_id", + "type": "string", + "format": "" + }, + { + "name": "type", + "baseName": "type", + "type": "OrderType", + "format": "" + }, + { + "name": "symbol", + "baseName": "symbol", + "type": "string", + "format": "" + }, + { + "name": "side", + "baseName": "side", + "type": "Side", + "format": "" + }, + { + "name": "quantity", + "baseName": "quantity", + "type": "number", + "format": "" + }, + { + "name": "price", + "baseName": "price", + "type": "number", + "format": "" + }, + { + "name": "status", + "baseName": "status", + "type": "OrderStatus", + "format": "" + }, + { + "name": "executed_at", + "baseName": "executed_at", + "type": "Date", + "format": "date-time" + } ]; + + static getAttributeTypeMap() { + return Trade.attributeTypeMap; + } + + public constructor() { + } +} + + diff --git a/packages/protocol/octobot_protocol_ts/models/TradeSummary.ts b/packages/protocol/octobot_protocol_ts/models/TradeSummary.ts new file mode 100644 index 000000000..c0827b3aa --- /dev/null +++ b/packages/protocol/octobot_protocol_ts/models/TradeSummary.ts @@ -0,0 +1,45 @@ +/** + * OctoBot protocol types + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +/** +* TradeSummary +*/ +export class TradeSummary { + 'id': string; + 'symbol': string; + + static readonly discriminator: string | undefined = undefined; + + static readonly mapping: {[index: string]: string} | undefined = undefined; + + static readonly attributeTypeMap: Array<{name: string, baseName: string, type: string, format: string}> = [ + { + "name": "id", + "baseName": "id", + "type": "string", + "format": "" + }, + { + "name": "symbol", + "baseName": "symbol", + "type": "string", + "format": "" + } ]; + + static getAttributeTypeMap() { + return TradeSummary.attributeTypeMap; + } + + public constructor() { + } +} diff --git a/packages/protocol/octobot_protocol_ts/models/TradingType.ts b/packages/protocol/octobot_protocol_ts/models/TradingType.ts new file mode 100644 index 000000000..efa6a860e --- /dev/null +++ b/packages/protocol/octobot_protocol_ts/models/TradingType.ts @@ -0,0 +1,17 @@ +/** + * OctoBot protocol types + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +/** +* TradingType +*/ +export type TradingType = 'spot' | 'futures' | 'options' | 'margin' diff --git a/packages/protocol/octobot_protocol_ts/models/TrailingProfile.ts b/packages/protocol/octobot_protocol_ts/models/TrailingProfile.ts new file mode 100644 index 000000000..51ac5035b --- /dev/null +++ b/packages/protocol/octobot_protocol_ts/models/TrailingProfile.ts @@ -0,0 +1,48 @@ +/** + * OctoBot protocol types + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { TrailingProfileType } from '../models/TrailingProfileType'; + +/** +* TrailingProfile +*/ +export class TrailingProfile { + 'type': TrailingProfileType; + 'details'?: any; + + static readonly discriminator: string | undefined = undefined; + + static readonly mapping: {[index: string]: string} | undefined = undefined; + + static readonly attributeTypeMap: Array<{name: string, baseName: string, type: string, format: string}> = [ + { + "name": "type", + "baseName": "type", + "type": "TrailingProfileType", + "format": "" + }, + { + "name": "details", + "baseName": "details", + "type": "any", + "format": "" + } ]; + + static getAttributeTypeMap() { + return TrailingProfile.attributeTypeMap; + } + + public constructor() { + } +} + + diff --git a/packages/protocol/octobot_protocol_ts/models/TrailingProfileType.ts b/packages/protocol/octobot_protocol_ts/models/TrailingProfileType.ts new file mode 100644 index 000000000..5f262b4eb --- /dev/null +++ b/packages/protocol/octobot_protocol_ts/models/TrailingProfileType.ts @@ -0,0 +1,17 @@ +/** + * OctoBot protocol types + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +/** +* Trailing profile discriminator (mirrors octobot_trading TrailingProfileTypes values). +*/ +export type TrailingProfileType = 'filled_take_profit' diff --git a/packages/protocol/octobot_protocol_ts/models/UserAction.ts b/packages/protocol/octobot_protocol_ts/models/UserAction.ts new file mode 100644 index 000000000..5f6398f17 --- /dev/null +++ b/packages/protocol/octobot_protocol_ts/models/UserAction.ts @@ -0,0 +1,78 @@ +/** + * OctoBot protocol types + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { UserActionConfiguration } from '../models/UserActionConfiguration'; +import { UserActionResult } from '../models/UserActionResult'; +import { UserActionStatus } from '../models/UserActionStatus'; + +/** +* UserAction +*/ +export class UserAction { + 'id': string; + 'status'?: UserActionStatus; + 'created_at'?: string; + 'updated_at'?: string; + 'configuration'?: UserActionConfiguration; + 'result'?: UserActionResult; + + static readonly discriminator: string | undefined = undefined; + + static readonly mapping: {[index: string]: string} | undefined = undefined; + + static readonly attributeTypeMap: Array<{name: string, baseName: string, type: string, format: string}> = [ + { + "name": "id", + "baseName": "id", + "type": "string", + "format": "" + }, + { + "name": "status", + "baseName": "status", + "type": "UserActionStatus", + "format": "" + }, + { + "name": "created_at", + "baseName": "created_at", + "type": "Date", + "format": "date-time" + }, + { + "name": "updated_at", + "baseName": "updated_at", + "type": "Date", + "format": "date-time" + }, + { + "name": "configuration", + "baseName": "configuration", + "type": "UserActionConfiguration", + "format": "" + }, + { + "name": "result", + "baseName": "result", + "type": "UserActionResult", + "format": "" + } ]; + + static getAttributeTypeMap() { + return UserAction.attributeTypeMap; + } + + public constructor() { + } +} + + diff --git a/packages/protocol/octobot_protocol_ts/models/UserActionConfiguration.ts b/packages/protocol/octobot_protocol_ts/models/UserActionConfiguration.ts new file mode 100644 index 000000000..3304f8a4d --- /dev/null +++ b/packages/protocol/octobot_protocol_ts/models/UserActionConfiguration.ts @@ -0,0 +1,50 @@ +/** + * OctoBot protocol types + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { CreateAccountConfiguration } from '../models/CreateAccountConfiguration'; +import { CreateAutomationConfiguration } from '../models/CreateAutomationConfiguration'; +import { DeleteAccountConfiguration } from '../models/DeleteAccountConfiguration'; +import { EditAccountConfiguration } from '../models/EditAccountConfiguration'; +import { EditAutomationConfiguration } from '../models/EditAutomationConfiguration'; +import { RefreshAccountsConfiguration } from '../models/RefreshAccountsConfiguration'; +import { StopAutomationConfiguration } from '../models/StopAutomationConfiguration'; + +/** + * @type UserActionConfiguration + * Type + * @export + */ +export type UserActionConfiguration = CreateAccountConfiguration | CreateAutomationConfiguration | DeleteAccountConfiguration | EditAccountConfiguration | EditAutomationConfiguration | RefreshAccountsConfiguration | StopAutomationConfiguration; + +/** +* @type UserActionConfigurationClass +* @export +*/ +export class UserActionConfigurationClass { + static readonly discriminator: string | undefined = "action_type"; + + static readonly mapping: {[index: string]: string} | undefined = { + "account_create": "CreateAccountConfiguration", + "account_delete": "DeleteAccountConfiguration", + "account_edit": "EditAccountConfiguration", + "accounts_refresh": "RefreshAccountsConfiguration", + "automation_create": "CreateAutomationConfiguration", + "automation_edit": "EditAutomationConfiguration", + "automation_stop": "StopAutomationConfiguration", + }; +} + + + + + + diff --git a/packages/protocol/octobot_protocol_ts/models/UserActionResult.ts b/packages/protocol/octobot_protocol_ts/models/UserActionResult.ts new file mode 100644 index 000000000..7cf50ec88 --- /dev/null +++ b/packages/protocol/octobot_protocol_ts/models/UserActionResult.ts @@ -0,0 +1,35 @@ +/** + * OctoBot protocol types + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { AccountActionResult } from '../models/AccountActionResult'; +import { AutomationActionResult } from '../models/AutomationActionResult'; + +/** + * @type UserActionResult + * Type + * @export + */ +export type UserActionResult = AccountActionResult | AutomationActionResult; + +/** +* @type UserActionResultClass +* @export +*/ +export class UserActionResultClass { + static readonly discriminator: string | undefined = "result_type"; + + static readonly mapping: {[index: string]: string} | undefined = { + "account": "AccountActionResult", + "automation": "AutomationActionResult", + }; +} + diff --git a/packages/protocol/octobot_protocol_ts/models/UserActionResultType.ts b/packages/protocol/octobot_protocol_ts/models/UserActionResultType.ts new file mode 100644 index 000000000..bbb749ce0 --- /dev/null +++ b/packages/protocol/octobot_protocol_ts/models/UserActionResultType.ts @@ -0,0 +1,17 @@ +/** + * OctoBot protocol types + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +/** +* UserActionResultType +*/ +export type UserActionResultType = 'automation' | 'account' diff --git a/packages/protocol/octobot_protocol_ts/models/UserActionStatus.ts b/packages/protocol/octobot_protocol_ts/models/UserActionStatus.ts new file mode 100644 index 000000000..de26234b9 --- /dev/null +++ b/packages/protocol/octobot_protocol_ts/models/UserActionStatus.ts @@ -0,0 +1,17 @@ +/** + * OctoBot protocol types + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +/** +* UserActionStatus +*/ +export type UserActionStatus = 'pending' | 'running' | 'completed' | 'failed' diff --git a/packages/protocol/octobot_protocol_ts/models/UserActionsState.ts b/packages/protocol/octobot_protocol_ts/models/UserActionsState.ts new file mode 100644 index 000000000..5dc50ae5e --- /dev/null +++ b/packages/protocol/octobot_protocol_ts/models/UserActionsState.ts @@ -0,0 +1,46 @@ +/** + * OctoBot protocol types + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { UserAction } from '../models/UserAction'; + +/** +* UserActionsState +*/ +export class UserActionsState { + 'version': string; + 'user_actions'?: Array; + + static readonly discriminator: string | undefined = undefined; + + static readonly mapping: {[index: string]: string} | undefined = undefined; + + static readonly attributeTypeMap: Array<{name: string, baseName: string, type: string, format: string}> = [ + { + "name": "version", + "baseName": "version", + "type": "string", + "format": "" + }, + { + "name": "user_actions", + "baseName": "user_actions", + "type": "Array", + "format": "" + } ]; + + static getAttributeTypeMap() { + return UserActionsState.attributeTypeMap; + } + + public constructor() { + } +} diff --git a/packages/protocol/octobot_protocol_ts/models/UserDataState.ts b/packages/protocol/octobot_protocol_ts/models/UserDataState.ts new file mode 100644 index 000000000..a23360188 --- /dev/null +++ b/packages/protocol/octobot_protocol_ts/models/UserDataState.ts @@ -0,0 +1,54 @@ +/** + * OctoBot protocol types + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { AutomationState } from '../models/AutomationState'; +import { UserAction } from '../models/UserAction'; + +/** +* UserDataState +*/ +export class UserDataState { + 'version': string; + 'automations'?: Array; + 'user_actions'?: Array; + + static readonly discriminator: string | undefined = undefined; + + static readonly mapping: {[index: string]: string} | undefined = undefined; + + static readonly attributeTypeMap: Array<{name: string, baseName: string, type: string, format: string}> = [ + { + "name": "version", + "baseName": "version", + "type": "string", + "format": "" + }, + { + "name": "automations", + "baseName": "automations", + "type": "Array", + "format": "" + }, + { + "name": "user_actions", + "baseName": "user_actions", + "type": "Array", + "format": "" + } ]; + + static getAttributeTypeMap() { + return UserDataState.attributeTypeMap; + } + + public constructor() { + } +} diff --git a/packages/protocol/octobot_protocol_ts/models/index.ts b/packages/protocol/octobot_protocol_ts/models/index.ts new file mode 100644 index 000000000..2b738e16a --- /dev/null +++ b/packages/protocol/octobot_protocol_ts/models/index.ts @@ -0,0 +1,81 @@ +export * from "./Account"; +export * from "./AccountActionResult"; +export * from "./AccountActionResultErrorMessage"; +export * from "./AccountDetails"; +export * from "./AccountReference"; +export * from "./AccountState"; +export * from "./AccountStatus"; +export * from "./AccountStatusMessage"; +export * from "./AccountType"; +export * from "./AccountsState"; +export * from "./Action"; +export * from "./ActiveOrderSwapStrategy"; +export * from "./ActiveOrderSwapStrategyType"; +export * from "./Asset"; +export * from "./AutomationActionResult"; +export * from "./AutomationActionResultErrorMessage"; +export * from "./AutomationConfiguration"; +export * from "./AutomationMetadata"; +export * from "./AutomationState"; +export * from "./BlockchainAccount"; +export * from "./CancelPolicy"; +export * from "./CancelPolicyType"; +export * from "./CopiedAccount"; +export * from "./CopiedAsset"; +export * from "./CopyConfiguration"; +export * from "./CreateAccountConfiguration"; +export * from "./CreateAutomationConfiguration"; +export * from "./DCAConfiguration"; +export * from "./DeleteAccountConfiguration"; +export * from "./EMAMomentumEvaluatorConfiguration"; +export * from "./EditAccountConfiguration"; +export * from "./EditAutomationConfiguration"; +export * from "./EvaluatorConfiguration"; +export * from "./EvaluatorConfigurationConfiguration"; +export * from "./ExchangeAccount"; +export * from "./GenericAccount"; +export * from "./GenericProcessConfiguration"; +export * from "./GenericWorkflowConfiguration"; +export * from "./GridConfiguration"; +export * from "./IndexCoin"; +export * from "./IndexConfiguration"; +export * from "./MarketMakingConfiguration"; +export * from "./MarketMakingFundsDistribution"; +export * from "./MarketMakingHedgingEngine"; +export * from "./MarketMakingOrderBookDepth"; +export * from "./MarketMakingOrdersDistribution"; +export * from "./MarketMakingReferencePair"; +export * from "./MarketMakingScheduledVolume"; +export * from "./MarketMakingStopConditions"; +export * from "./MarketMakingSymbolConfiguration"; +export * from "./Order"; +export * from "./OrderGroup"; +export * from "./OrderGroupType"; +export * from "./OrderStatus"; +export * from "./OrderSummary"; +export * from "./OrderType"; +export * from "./Position"; +export * from "./PositionStatus"; +export * from "./PositionSummary"; +export * from "./RSIMomentumEvaluatorConfiguration"; +export * from "./RefreshAccountsConfiguration"; +export * from "./Side"; +export * from "./StopAutomationConfiguration"; +export * from "./StrategiesState"; +export * from "./Strategy"; +export * from "./StrategyConfiguration"; +export * from "./StrategyReference"; +export * from "./TaskStatus"; +export * from "./TimeFrame"; +export * from "./Trade"; +export * from "./TradeSummary"; +export * from "./TradingType"; +export * from "./TrailingProfile"; +export * from "./TrailingProfileType"; +export * from "./UserAction"; +export * from "./UserActionConfiguration"; +export * from "./UserActionResult"; +export * from "./UserActionResultType"; +export * from "./UserActionStatus"; +export * from "./UserActionsState"; +export * from "./UserDataState"; diff --git a/packages/protocol/octobot_protocol_ts/package.json b/packages/protocol/octobot_protocol_ts/package.json new file mode 100644 index 000000000..652bdf631 --- /dev/null +++ b/packages/protocol/octobot_protocol_ts/package.json @@ -0,0 +1,9 @@ +{ + "name": "@drakkar.software/octobot-protocol", + "version": "0.2.0", + "description": "TypeScript types generated from OctoBot OpenAPI schema", + "types": "./models/index.ts", + "files": ["models"], + "license": "GPL-3.0", + "sideEffects": false +} diff --git a/packages/protocol/openapi.json b/packages/protocol/openapi.json index e1f0db671..8491fda36 100644 --- a/packages/protocol/openapi.json +++ b/packages/protocol/openapi.json @@ -900,19 +900,6 @@ "1w" ] }, - "ActionConfigurationType": { - "description": "ActionConfigurationType", - "type": "string", - "enum": [ - "market_making", - "dca", - "index", - "grid", - "copy", - "generic_process", - "generic_workflow" - ] - }, "MarketMakingReferencePair": { "description": "Reference price source for market making (exchange pair, weighting, and optional formula).", "type": "object", @@ -1174,8 +1161,8 @@ ], "properties": { "configuration_type": { - "$ref": "#/components/schemas/ActionConfigurationType", - "description": "market_making" + "type": "string", + "enum": ["MarketMakingConfiguration"] }, "pair_settings": { "type": "array", @@ -1185,14 +1172,6 @@ } } }, - "EvaluatorType": { - "description": "EvaluatorType", - "type": "string", - "enum": [ - "RSIMomentumEvaluator", - "EMAMomentumEvaluator" - ] - }, "RSIMomentumEvaluatorConfiguration": { "description": "RSIMomentumEvaluatorConfiguration", "type": "object", @@ -1204,8 +1183,8 @@ ], "properties": { "configuration_type": { - "$ref": "#/components/schemas/EvaluatorType", - "description": "RSIMomentumEvaluator" + "type": "string", + "enum": ["RSIMomentumEvaluator"] }, "period_length": { "type": "number", @@ -1234,8 +1213,8 @@ ], "properties": { "configuration_type": { - "$ref": "#/components/schemas/EvaluatorType", - "description": "EMAMomentumEvaluator" + "type": "string", + "enum": ["EMAMomentumEvaluator"] }, "period_length": { "type": "number", @@ -1297,8 +1276,8 @@ ], "properties": { "configuration_type": { - "$ref": "#/components/schemas/ActionConfigurationType", - "description": "dca" + "type": "string", + "enum": ["DCAConfiguration"] }, "symbols": { "type": "array", @@ -1385,8 +1364,8 @@ ], "properties": { "configuration_type": { - "$ref": "#/components/schemas/ActionConfigurationType", - "description": "copy" + "type": "string", + "enum": ["CopyConfiguration"] }, "strategy_id": { "type": "string" @@ -1403,8 +1382,8 @@ ], "properties": { "configuration_type": { - "$ref": "#/components/schemas/ActionConfigurationType", - "description": "index" + "type": "string", + "enum": ["IndexConfiguration"] }, "coins": { "type": "array", @@ -1435,8 +1414,8 @@ ], "properties": { "configuration_type": { - "$ref": "#/components/schemas/ActionConfigurationType", - "description": "grid" + "type": "string", + "enum": ["GridConfiguration"] }, "symbol": { "type": "string" @@ -1484,8 +1463,8 @@ ], "properties": { "configuration_type": { - "$ref": "#/components/schemas/ActionConfigurationType", - "description": "generic_process" + "type": "string", + "enum": ["GenericProcessConfiguration"] }, "profile_data": { "type": "object" @@ -1501,8 +1480,8 @@ ], "properties": { "configuration_type": { - "$ref": "#/components/schemas/ActionConfigurationType", - "description": "generic_workflow" + "type": "string", + "enum": ["GenericWorkflowConfiguration"] }, "actions": { "type": "array", @@ -1588,8 +1567,8 @@ ], "properties": { "action_type": { - "$ref": "#/components/schemas/UserActionType", - "description": "automation_create" + "type": "string", + "enum": ["automation_create"] }, "configuration": { "$ref": "#/components/schemas/AutomationConfiguration" @@ -1609,8 +1588,8 @@ "type": "string" }, "action_type": { - "$ref": "#/components/schemas/UserActionType", - "description": "automation_edit" + "type": "string", + "enum": ["automation_edit"] }, "configuration": { "$ref": "#/components/schemas/AutomationConfiguration" @@ -1629,8 +1608,8 @@ "type": "string" }, "action_type": { - "$ref": "#/components/schemas/UserActionType", - "description": "automation_stop" + "type": "string", + "enum": ["automation_stop"] } } }, @@ -1643,8 +1622,8 @@ ], "properties": { "action_type": { - "$ref": "#/components/schemas/UserActionType", - "description": "account_create" + "type": "string", + "enum": ["account_create"] }, "configuration": { "$ref": "#/components/schemas/Account" @@ -1660,8 +1639,8 @@ ], "properties": { "action_type": { - "$ref": "#/components/schemas/UserActionType", - "description": "account_edit" + "type": "string", + "enum": ["account_edit"] }, "id": { "type": "string" @@ -1680,8 +1659,8 @@ ], "properties": { "action_type": { - "$ref": "#/components/schemas/UserActionType", - "description": "account_delete" + "type": "string", + "enum": ["account_delete"] }, "id": { "type": "string" @@ -1696,8 +1675,8 @@ ], "properties": { "action_type": { - "$ref": "#/components/schemas/UserActionType", - "description": "accounts_refresh" + "type": "string", + "enum": ["accounts_refresh"] }, "account_ids": { "type": "array", @@ -1707,19 +1686,6 @@ } } }, - "UserActionType": { - "description": "UserActionType", - "type": "string", - "enum": [ - "automation_create", - "automation_edit", - "automation_stop", - "account_create", - "account_edit", - "account_delete", - "accounts_refresh" - ] - }, "UserActionStatus": { "description": "UserActionStatus", "type": "string", diff --git a/packages/protocol/package.json b/packages/protocol/package.json index 094a1ecc2..7f65e35dd 100644 --- a/packages/protocol/package.json +++ b/packages/protocol/package.json @@ -7,7 +7,7 @@ "test:models": "python -m unittest discover -s test", "generate:python": "node scripts/clean-protocol-codegen-output.mjs python && openapi-generator-cli generate -i openapi.json -g python -o . -t openapi_generator_templates/python --global-property models,modelTests=true,supportingFiles=__init__.py --additional-properties packageName=octobot_protocol,useOneOfDiscriminatorLookup=true && npm run test:models", "gen": "npm run generate:python", - "generate:typescript": "node scripts/clean-protocol-codegen-output.mjs typescript && openapi-generator-cli generate -i openapi.json -g typescript -o octobot_protocol_ts --global-property models --additional-properties supportsES6=true,npmName=@drakkar.software/octobot-protocol,npmVersion=0.1.0,useOneOfDiscriminatorLookup=true", + "generate:typescript": "node scripts/clean-protocol-codegen-output.mjs typescript && openapi-generator-cli generate -i openapi.json -g typescript -o octobot_protocol_ts --global-property models --additional-properties modelPropertyNaming=original,stringEnums=true,supportsES6=true,useOneOfDiscriminatorLookup=true && node scripts/postprocess-protocol-typescript.mjs", "generate:rust": "node scripts/clean-protocol-codegen-output.mjs rust && openapi-generator-cli generate -i openapi.json -g rust -o octobot_protocol_rs --global-property models --additional-properties packageName=octobot_protocol_rs,useOneOfDiscriminatorLookup=true", "generate:all": "npm run generate:python && npm run generate:typescript && npm run generate:rust" }, diff --git a/packages/protocol/scripts/clean-protocol-codegen-output.mjs b/packages/protocol/scripts/clean-protocol-codegen-output.mjs index c108c4955..dcc36149b 100644 --- a/packages/protocol/scripts/clean-protocol-codegen-output.mjs +++ b/packages/protocol/scripts/clean-protocol-codegen-output.mjs @@ -18,7 +18,7 @@ const targets = { }, typescript: { dir: path.join(protocolDir, "octobot_protocol_ts"), - keep: new Set(["README.md", "package.json", "index.js", "index.d.ts"]), + keep: new Set(["package.json"]), }, rust: { dir: path.join(protocolDir, "octobot_protocol_rs"), diff --git a/packages/protocol/scripts/postprocess-protocol-typescript.mjs b/packages/protocol/scripts/postprocess-protocol-typescript.mjs new file mode 100644 index 000000000..db05576b7 --- /dev/null +++ b/packages/protocol/scripts/postprocess-protocol-typescript.mjs @@ -0,0 +1,41 @@ +#!/usr/bin/env node +import fs from "node:fs"; +import path from "node:path"; +import url from "node:url"; + +const protocolDir = path.dirname(path.dirname(url.fileURLToPath(import.meta.url))); +const modelsDir = path.join(protocolDir, "octobot_protocol_ts", "models"); + +const HTTP_IMPORT = /^import \{ HttpFile \} from '\.\.\/http\/http';\n/m; +const DATE_FIELD = /^(\s*'[^']+'?\??:\s*)Date\b/gm; +const ENUM_BLOCK = /export enum (\w+) \{([^}]+)\}/g; + +function enumBodyToUnion(body) { + return body + .split(",") + .map((line) => { + const match = line.match(/=\s*'([^']*)'/); + return match ? `'${match[1]}'` : null; + }) + .filter(Boolean) + .join(" | "); +} + +const files = fs.readdirSync(modelsDir).filter((f) => f.endsWith(".ts") && f !== "index.ts"); +for (const file of files) { + const full = path.join(modelsDir, file); + const src = fs.readFileSync(full, "utf8"); + let next = src.replace(HTTP_IMPORT, "").replace(DATE_FIELD, "$1string"); + next = next.replace(ENUM_BLOCK, (whole, name, body) => { + const union = enumBodyToUnion(body); + return union ? `export type ${name} = ${union}` : whole; + }); + if (next !== src) fs.writeFileSync(full, next); +} + +const barrel = files + .map((f) => path.basename(f, ".ts")) + .sort() + .map((name) => `export * from "./${name}";`) + .join("\n") + "\n"; +fs.writeFileSync(path.join(modelsDir, "index.ts"), barrel); diff --git a/packages/protocol/test/test_action_configuration_type.py b/packages/protocol/test/test_action_configuration_type.py deleted file mode 100644 index 69e7f31bc..000000000 --- a/packages/protocol/test/test_action_configuration_type.py +++ /dev/null @@ -1,33 +0,0 @@ -# coding: utf-8 - -""" - OctoBot protocol types - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: 1.0.0 - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -import unittest - -from octobot_protocol.models.action_configuration_type import ActionConfigurationType - -class TestActionConfigurationType(unittest.TestCase): - """ActionConfigurationType unit test stubs""" - - def setUp(self): - pass - - def tearDown(self): - pass - - def testActionConfigurationType(self): - """Test ActionConfigurationType""" - # inst = ActionConfigurationType() - -if __name__ == '__main__': - unittest.main() diff --git a/packages/protocol/test/test_copy_configuration.py b/packages/protocol/test/test_copy_configuration.py index 9a6db7456..ffca6123a 100644 --- a/packages/protocol/test/test_copy_configuration.py +++ b/packages/protocol/test/test_copy_configuration.py @@ -35,12 +35,12 @@ def make_instance(self, include_optional) -> CopyConfiguration: model = CopyConfiguration() if include_optional: return CopyConfiguration( - configuration_type = 'market_making', + configuration_type = 'CopyConfiguration', strategy_id = '' ) else: return CopyConfiguration( - configuration_type = 'market_making', + configuration_type = 'CopyConfiguration', strategy_id = '', ) """ diff --git a/packages/protocol/test/test_create_account_configuration.py b/packages/protocol/test/test_create_account_configuration.py index 2941c42f6..30143d757 100644 --- a/packages/protocol/test/test_create_account_configuration.py +++ b/packages/protocol/test/test_create_account_configuration.py @@ -35,7 +35,7 @@ def make_instance(self, include_optional) -> CreateAccountConfiguration: model = CreateAccountConfiguration() if include_optional: return CreateAccountConfiguration( - action_type = 'automation_create', + action_type = 'account_create', configuration = octobot_protocol.models.account.Account( id = '', name = '', @@ -50,7 +50,7 @@ def make_instance(self, include_optional) -> CreateAccountConfiguration: ) else: return CreateAccountConfiguration( - action_type = 'automation_create', + action_type = 'account_create', configuration = octobot_protocol.models.account.Account( id = '', name = '', diff --git a/packages/protocol/test/test_dca_configuration.py b/packages/protocol/test/test_dca_configuration.py index f42e70b03..b789fc1a1 100644 --- a/packages/protocol/test/test_dca_configuration.py +++ b/packages/protocol/test/test_dca_configuration.py @@ -35,7 +35,7 @@ def make_instance(self, include_optional) -> DCAConfiguration: model = DCAConfiguration() if include_optional: return DCAConfiguration( - configuration_type = 'market_making', + configuration_type = 'DCAConfiguration', symbols = [ '' ], @@ -57,7 +57,7 @@ def make_instance(self, include_optional) -> DCAConfiguration: ) else: return DCAConfiguration( - configuration_type = 'market_making', + configuration_type = 'DCAConfiguration', symbols = [ '' ], diff --git a/packages/protocol/test/test_delete_account_configuration.py b/packages/protocol/test/test_delete_account_configuration.py index 0d0826384..f28eefaf8 100644 --- a/packages/protocol/test/test_delete_account_configuration.py +++ b/packages/protocol/test/test_delete_account_configuration.py @@ -35,12 +35,12 @@ def make_instance(self, include_optional) -> DeleteAccountConfiguration: model = DeleteAccountConfiguration() if include_optional: return DeleteAccountConfiguration( - action_type = 'automation_create', + action_type = 'account_delete', id = '' ) else: return DeleteAccountConfiguration( - action_type = 'automation_create', + action_type = 'account_delete', id = '', ) """ diff --git a/packages/protocol/test/test_edit_account_configuration.py b/packages/protocol/test/test_edit_account_configuration.py index 15c7e80b1..e489ef039 100644 --- a/packages/protocol/test/test_edit_account_configuration.py +++ b/packages/protocol/test/test_edit_account_configuration.py @@ -35,7 +35,7 @@ def make_instance(self, include_optional) -> EditAccountConfiguration: model = EditAccountConfiguration() if include_optional: return EditAccountConfiguration( - action_type = 'automation_create', + action_type = 'account_edit', id = '', configuration = octobot_protocol.models.account.Account( id = '', @@ -51,7 +51,7 @@ def make_instance(self, include_optional) -> EditAccountConfiguration: ) else: return EditAccountConfiguration( - action_type = 'automation_create', + action_type = 'account_edit', id = '', ) """ diff --git a/packages/protocol/test/test_edit_automation_configuration.py b/packages/protocol/test/test_edit_automation_configuration.py index ac7e315b9..638d90439 100644 --- a/packages/protocol/test/test_edit_automation_configuration.py +++ b/packages/protocol/test/test_edit_automation_configuration.py @@ -36,7 +36,7 @@ def make_instance(self, include_optional) -> EditAutomationConfiguration: if include_optional: return EditAutomationConfiguration( id = '', - action_type = 'automation_create', + action_type = 'automation_edit', configuration = octobot_protocol.models.automation_configuration.AutomationConfiguration( name = '', description = '', @@ -54,7 +54,7 @@ def make_instance(self, include_optional) -> EditAutomationConfiguration: else: return EditAutomationConfiguration( id = '', - action_type = 'automation_create', + action_type = 'automation_edit', configuration = octobot_protocol.models.automation_configuration.AutomationConfiguration( name = '', description = '', diff --git a/packages/protocol/test/test_ema_momentum_evaluator_configuration.py b/packages/protocol/test/test_ema_momentum_evaluator_configuration.py index 2c7ab5262..bfd490089 100644 --- a/packages/protocol/test/test_ema_momentum_evaluator_configuration.py +++ b/packages/protocol/test/test_ema_momentum_evaluator_configuration.py @@ -35,14 +35,14 @@ def make_instance(self, include_optional) -> EMAMomentumEvaluatorConfiguration: model = EMAMomentumEvaluatorConfiguration() if include_optional: return EMAMomentumEvaluatorConfiguration( - configuration_type = 'RSIMomentumEvaluator', + configuration_type = 'EMAMomentumEvaluator', period_length = 1, price_threshold_percent = 0, reverse_signal = True ) else: return EMAMomentumEvaluatorConfiguration( - configuration_type = 'RSIMomentumEvaluator', + configuration_type = 'EMAMomentumEvaluator', period_length = 1, price_threshold_percent = 0, reverse_signal = True, diff --git a/packages/protocol/test/test_evaluator_configuration_configuration.py b/packages/protocol/test/test_evaluator_configuration_configuration.py index 7e9a39183..7fbb4597c 100644 --- a/packages/protocol/test/test_evaluator_configuration_configuration.py +++ b/packages/protocol/test/test_evaluator_configuration_configuration.py @@ -35,7 +35,7 @@ def make_instance(self, include_optional) -> EvaluatorConfigurationConfiguration model = EvaluatorConfigurationConfiguration() if include_optional: return EvaluatorConfigurationConfiguration( - configuration_type = 'RSIMomentumEvaluator', + configuration_type = 'EMAMomentumEvaluator', period_length = 1, short_threshold = 0, long_threshold = 0, @@ -44,7 +44,7 @@ def make_instance(self, include_optional) -> EvaluatorConfigurationConfiguration ) else: return EvaluatorConfigurationConfiguration( - configuration_type = 'RSIMomentumEvaluator', + configuration_type = 'EMAMomentumEvaluator', period_length = 1, short_threshold = 0, long_threshold = 0, diff --git a/packages/protocol/test/test_evaluator_type.py b/packages/protocol/test/test_evaluator_type.py deleted file mode 100644 index cf083279f..000000000 --- a/packages/protocol/test/test_evaluator_type.py +++ /dev/null @@ -1,33 +0,0 @@ -# coding: utf-8 - -""" - OctoBot protocol types - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: 1.0.0 - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -import unittest - -from octobot_protocol.models.evaluator_type import EvaluatorType - -class TestEvaluatorType(unittest.TestCase): - """EvaluatorType unit test stubs""" - - def setUp(self): - pass - - def tearDown(self): - pass - - def testEvaluatorType(self): - """Test EvaluatorType""" - # inst = EvaluatorType() - -if __name__ == '__main__': - unittest.main() diff --git a/packages/protocol/test/test_generic_process_configuration.py b/packages/protocol/test/test_generic_process_configuration.py index eee48f8e1..d995edc04 100644 --- a/packages/protocol/test/test_generic_process_configuration.py +++ b/packages/protocol/test/test_generic_process_configuration.py @@ -35,12 +35,12 @@ def make_instance(self, include_optional) -> GenericProcessConfiguration: model = GenericProcessConfiguration() if include_optional: return GenericProcessConfiguration( - configuration_type = 'market_making', + configuration_type = 'GenericProcessConfiguration', profile_data = octobot_protocol.models.trigger_price_configuration.trigger_price_configuration() ) else: return GenericProcessConfiguration( - configuration_type = 'market_making', + configuration_type = 'GenericProcessConfiguration', profile_data = octobot_protocol.models.trigger_price_configuration.trigger_price_configuration(), ) """ diff --git a/packages/protocol/test/test_generic_workflow_configuration.py b/packages/protocol/test/test_generic_workflow_configuration.py index c2fe9cd52..8fa7ce3ce 100644 --- a/packages/protocol/test/test_generic_workflow_configuration.py +++ b/packages/protocol/test/test_generic_workflow_configuration.py @@ -35,7 +35,7 @@ def make_instance(self, include_optional) -> GenericWorkflowConfiguration: model = GenericWorkflowConfiguration() if include_optional: return GenericWorkflowConfiguration( - configuration_type = 'market_making', + configuration_type = 'GenericWorkflowConfiguration', actions = [ octobot_protocol.models.action.Action( id = '', @@ -50,7 +50,7 @@ def make_instance(self, include_optional) -> GenericWorkflowConfiguration: ) else: return GenericWorkflowConfiguration( - configuration_type = 'market_making', + configuration_type = 'GenericWorkflowConfiguration', actions = [ octobot_protocol.models.action.Action( id = '', diff --git a/packages/protocol/test/test_grid_configuration.py b/packages/protocol/test/test_grid_configuration.py index 7259fc719..b9b9a0353 100644 --- a/packages/protocol/test/test_grid_configuration.py +++ b/packages/protocol/test/test_grid_configuration.py @@ -35,7 +35,7 @@ def make_instance(self, include_optional) -> GridConfiguration: model = GridConfiguration() if include_optional: return GridConfiguration( - configuration_type = 'market_making', + configuration_type = 'GridConfiguration', symbol = '', spread = 0, increment = 0, @@ -47,7 +47,7 @@ def make_instance(self, include_optional) -> GridConfiguration: ) else: return GridConfiguration( - configuration_type = 'market_making', + configuration_type = 'GridConfiguration', symbol = '', spread = 0, increment = 0, diff --git a/packages/protocol/test/test_index_configuration.py b/packages/protocol/test/test_index_configuration.py index d2e125149..e504c9ea0 100644 --- a/packages/protocol/test/test_index_configuration.py +++ b/packages/protocol/test/test_index_configuration.py @@ -35,7 +35,7 @@ def make_instance(self, include_optional) -> IndexConfiguration: model = IndexConfiguration() if include_optional: return IndexConfiguration( - configuration_type = 'market_making', + configuration_type = 'IndexConfiguration', coins = [ octobot_protocol.models.index_coin.IndexCoin( name = '', @@ -45,7 +45,7 @@ def make_instance(self, include_optional) -> IndexConfiguration: ) else: return IndexConfiguration( - configuration_type = 'market_making', + configuration_type = 'IndexConfiguration', coins = [ octobot_protocol.models.index_coin.IndexCoin( name = '', diff --git a/packages/protocol/test/test_market_making_configuration.py b/packages/protocol/test/test_market_making_configuration.py index d64e51937..e6ee046f0 100644 --- a/packages/protocol/test/test_market_making_configuration.py +++ b/packages/protocol/test/test_market_making_configuration.py @@ -35,7 +35,7 @@ def make_instance(self, include_optional) -> MarketMakingConfiguration: model = MarketMakingConfiguration() if include_optional: return MarketMakingConfiguration( - configuration_type = 'market_making', + configuration_type = 'MarketMakingConfiguration', pair_settings = [ octobot_protocol.models.market_making_symbol_configuration.MarketMakingSymbolConfiguration( trading_pair = '', @@ -84,7 +84,7 @@ def make_instance(self, include_optional) -> MarketMakingConfiguration: ) else: return MarketMakingConfiguration( - configuration_type = 'market_making', + configuration_type = 'MarketMakingConfiguration', pair_settings = [ octobot_protocol.models.market_making_symbol_configuration.MarketMakingSymbolConfiguration( trading_pair = '', diff --git a/packages/protocol/test/test_refresh_accounts_configuration.py b/packages/protocol/test/test_refresh_accounts_configuration.py index c887f9e41..99a9aeb0b 100644 --- a/packages/protocol/test/test_refresh_accounts_configuration.py +++ b/packages/protocol/test/test_refresh_accounts_configuration.py @@ -35,14 +35,14 @@ def make_instance(self, include_optional) -> RefreshAccountsConfiguration: model = RefreshAccountsConfiguration() if include_optional: return RefreshAccountsConfiguration( - action_type = 'automation_create', + action_type = 'accounts_refresh', account_ids = [ '' ] ) else: return RefreshAccountsConfiguration( - action_type = 'automation_create', + action_type = 'accounts_refresh', ) """ diff --git a/packages/protocol/test/test_stop_automation_configuration.py b/packages/protocol/test/test_stop_automation_configuration.py index 1ac9be0a5..ad9305e8f 100644 --- a/packages/protocol/test/test_stop_automation_configuration.py +++ b/packages/protocol/test/test_stop_automation_configuration.py @@ -36,12 +36,12 @@ def make_instance(self, include_optional) -> StopAutomationConfiguration: if include_optional: return StopAutomationConfiguration( id = '', - action_type = 'automation_create' + action_type = 'automation_stop' ) else: return StopAutomationConfiguration( id = '', - action_type = 'automation_create', + action_type = 'automation_stop', ) """ diff --git a/packages/protocol/test/test_strategy_configuration.py b/packages/protocol/test/test_strategy_configuration.py index 0b298c3fa..e294bcda3 100644 --- a/packages/protocol/test/test_strategy_configuration.py +++ b/packages/protocol/test/test_strategy_configuration.py @@ -35,7 +35,7 @@ def make_instance(self, include_optional) -> StrategyConfiguration: model = StrategyConfiguration() if include_optional: return StrategyConfiguration( - configuration_type = 'market_making', + configuration_type = 'GenericWorkflowConfiguration', pair_settings = [ octobot_protocol.models.market_making_symbol_configuration.MarketMakingSymbolConfiguration( trading_pair = '', @@ -129,7 +129,7 @@ def make_instance(self, include_optional) -> StrategyConfiguration: ) else: return StrategyConfiguration( - configuration_type = 'market_making', + configuration_type = 'GenericWorkflowConfiguration', pair_settings = [ octobot_protocol.models.market_making_symbol_configuration.MarketMakingSymbolConfiguration( trading_pair = '', diff --git a/packages/protocol/test/test_user_action_configuration.py b/packages/protocol/test/test_user_action_configuration.py index 1bc2adf80..60cb35c74 100644 --- a/packages/protocol/test/test_user_action_configuration.py +++ b/packages/protocol/test/test_user_action_configuration.py @@ -35,7 +35,7 @@ def make_instance(self, include_optional) -> UserActionConfiguration: model = UserActionConfiguration() if include_optional: return UserActionConfiguration( - action_type = 'automation_create', + action_type = 'accounts_refresh', configuration = octobot_protocol.models.account.Account( id = '', name = '', @@ -54,7 +54,7 @@ def make_instance(self, include_optional) -> UserActionConfiguration: ) else: return UserActionConfiguration( - action_type = 'automation_create', + action_type = 'accounts_refresh', configuration = octobot_protocol.models.account.Account( id = '', name = '', diff --git a/packages/protocol/test/test_user_action_type.py b/packages/protocol/test/test_user_action_type.py deleted file mode 100644 index a8ef9775e..000000000 --- a/packages/protocol/test/test_user_action_type.py +++ /dev/null @@ -1,33 +0,0 @@ -# coding: utf-8 - -""" - OctoBot protocol types - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: 1.0.0 - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -import unittest - -from octobot_protocol.models.user_action_type import UserActionType - -class TestUserActionType(unittest.TestCase): - """UserActionType unit test stubs""" - - def setUp(self): - pass - - def tearDown(self): - pass - - def testUserActionType(self): - """Test UserActionType""" - # inst = UserActionType() - -if __name__ == '__main__': - unittest.main() From 6eea6b9dc597a230f431786bfe36bc74d9afd276 Mon Sep 17 00:00:00 2001 From: Herklos Date: Sun, 17 May 2026 10:20:07 +0200 Subject: [PATCH 2/2] [Protocol] Narrow TypeScript discriminator literals via post-process MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit openapi-generator types each variant's discriminator field as the shared enum union (e.g. ActionConfigurationType), losing per-variant narrowing on the TypeScript side. Fix in post-process, no schema changes: - scripts/postprocess-protocol-typescript.mjs already strips the broken HttpFile import, rewrites Date typings to string, and converts string enums to literal unions. Add a narrowing pass that walks openapi.json for any property with both \$ref and description, and rewrites the variant TS file so that field's type becomes the description literal (which is the wire value for each variant in this spec). - Logic factored into scripts/postprocess-protocol-typescript.lib.mjs so it is unit-testable. - Tests live in the test/ folder next to the auto-generated Python tests (different extension so unittest ignores them): * test/postprocess-typescript.test.mjs — 14 unit tests * test/postprocess-typescript.codegen.test.mjs — 8 integration - Update clean-protocol-codegen-output.mjs to preserve \`.mjs\` test files in test/ while still wiping the auto-generated Python tests on each codegen run. - \`npm test\` runs postprocess unit + codegen integration + python model tests. Bumps @drakkar.software/octobot-protocol to 0.3.0. Co-Authored-By: Claude Opus 4.7 --- packages/protocol/.openapi-generator/FILES | 9 ++ packages/protocol/docs/CopyConfiguration.md | 2 +- .../docs/CreateAccountConfiguration.md | 2 +- .../docs/CreateAutomationConfiguration.md | 2 +- packages/protocol/docs/DCAConfiguration.md | 2 +- .../docs/DeleteAccountConfiguration.md | 2 +- .../docs/EMAMomentumEvaluatorConfiguration.md | 2 +- .../protocol/docs/EditAccountConfiguration.md | 2 +- .../docs/EditAutomationConfiguration.md | 2 +- .../EvaluatorConfigurationConfiguration.md | 2 +- .../docs/GenericProcessConfiguration.md | 2 +- .../docs/GenericWorkflowConfiguration.md | 2 +- packages/protocol/docs/GridConfiguration.md | 2 +- packages/protocol/docs/IndexConfiguration.md | 2 +- .../docs/MarketMakingConfiguration.md | 2 +- .../docs/RSIMomentumEvaluatorConfiguration.md | 2 +- .../docs/RefreshAccountsConfiguration.md | 2 +- .../docs/StopAutomationConfiguration.md | 2 +- .../protocol/docs/StrategyConfiguration.md | 2 +- .../protocol/docs/UserActionConfiguration.md | 2 +- .../octobot_protocol/models/__init__.py | 3 + .../models/action_configuration_type.py | 42 ++++++ .../models/copy_configuration.py | 12 +- .../models/create_account_configuration.py | 12 +- .../models/create_automation_configuration.py | 12 +- .../models/dca_configuration.py | 10 +- .../models/delete_account_configuration.py | 12 +- .../models/edit_account_configuration.py | 12 +- .../models/edit_automation_configuration.py | 12 +- .../ema_momentum_evaluator_configuration.py | 12 +- .../octobot_protocol/models/evaluator_type.py | 37 +++++ .../models/generic_process_configuration.py | 12 +- .../models/generic_workflow_configuration.py | 12 +- .../models/grid_configuration.py | 12 +- .../models/index_configuration.py | 12 +- .../models/market_making_configuration.py | 12 +- .../models/refresh_accounts_configuration.py | 12 +- .../rsi_momentum_evaluator_configuration.py | 12 +- .../models/stop_automation_configuration.py | 12 +- .../models/user_action_type.py | 42 ++++++ .../models/ActionConfigurationType.ts | 17 +++ .../models/BlockchainAccount.ts | 2 +- .../models/CopyConfiguration.ts | 9 +- .../models/CreateAccountConfiguration.ts | 9 +- .../models/CreateAutomationConfiguration.ts | 9 +- .../models/DCAConfiguration.ts | 9 +- .../models/DeleteAccountConfiguration.ts | 9 +- .../EMAMomentumEvaluatorConfiguration.ts | 9 +- .../models/EditAccountConfiguration.ts | 9 +- .../models/EditAutomationConfiguration.ts | 9 +- .../models/EvaluatorType.ts | 17 +++ .../models/ExchangeAccount.ts | 2 +- .../models/GenericAccount.ts | 2 +- .../models/GenericProcessConfiguration.ts | 9 +- .../models/GenericWorkflowConfiguration.ts | 9 +- .../models/GridConfiguration.ts | 9 +- .../models/IndexConfiguration.ts | 9 +- .../models/MarketMakingConfiguration.ts | 9 +- .../RSIMomentumEvaluatorConfiguration.ts | 9 +- .../models/RefreshAccountsConfiguration.ts | 9 +- .../models/StopAutomationConfiguration.ts | 9 +- .../models/UserActionType.ts | 17 +++ .../octobot_protocol_ts/models/index.ts | 3 + .../protocol/octobot_protocol_ts/package.json | 2 +- packages/protocol/openapi.json | 98 ++++++++----- packages/protocol/package.json | 3 + .../scripts/clean-protocol-codegen-output.mjs | 8 +- .../postprocess-protocol-typescript.lib.mjs | 49 +++++++ .../postprocess-protocol-typescript.mjs | 30 ++-- .../postprocess-typescript.codegen.test.mjs | 61 ++++++++ .../test/postprocess-typescript.test.mjs | 135 ++++++++++++++++++ .../test/test_action_configuration_type.py | 33 +++++ .../protocol/test/test_copy_configuration.py | 4 +- .../test/test_create_account_configuration.py | 4 +- .../protocol/test/test_dca_configuration.py | 4 +- .../test/test_delete_account_configuration.py | 4 +- .../test/test_edit_account_configuration.py | 4 +- .../test_edit_automation_configuration.py | 4 +- ...st_ema_momentum_evaluator_configuration.py | 4 +- ...t_evaluator_configuration_configuration.py | 4 +- packages/protocol/test/test_evaluator_type.py | 33 +++++ .../test_generic_process_configuration.py | 4 +- .../test_generic_workflow_configuration.py | 4 +- .../protocol/test/test_grid_configuration.py | 4 +- .../protocol/test/test_index_configuration.py | 4 +- .../test/test_market_making_configuration.py | 4 +- .../test_refresh_accounts_configuration.py | 4 +- .../test_stop_automation_configuration.py | 4 +- .../test/test_strategy_configuration.py | 4 +- .../test/test_user_action_configuration.py | 4 +- .../protocol/test/test_user_action_type.py | 33 +++++ 91 files changed, 815 insertions(+), 303 deletions(-) create mode 100644 packages/protocol/octobot_protocol/models/action_configuration_type.py create mode 100644 packages/protocol/octobot_protocol/models/evaluator_type.py create mode 100644 packages/protocol/octobot_protocol/models/user_action_type.py create mode 100644 packages/protocol/octobot_protocol_ts/models/ActionConfigurationType.ts create mode 100644 packages/protocol/octobot_protocol_ts/models/EvaluatorType.ts create mode 100644 packages/protocol/octobot_protocol_ts/models/UserActionType.ts create mode 100644 packages/protocol/scripts/postprocess-protocol-typescript.lib.mjs create mode 100644 packages/protocol/test/postprocess-typescript.codegen.test.mjs create mode 100644 packages/protocol/test/postprocess-typescript.test.mjs create mode 100644 packages/protocol/test/test_action_configuration_type.py create mode 100644 packages/protocol/test/test_evaluator_type.py create mode 100644 packages/protocol/test/test_user_action_type.py diff --git a/packages/protocol/.openapi-generator/FILES b/packages/protocol/.openapi-generator/FILES index 66276b361..c70efe28c 100644 --- a/packages/protocol/.openapi-generator/FILES +++ b/packages/protocol/.openapi-generator/FILES @@ -9,6 +9,7 @@ docs/AccountStatusMessage.md docs/AccountType.md docs/AccountsState.md docs/Action.md +docs/ActionConfigurationType.md docs/ActiveOrderSwapStrategy.md docs/ActiveOrderSwapStrategyType.md docs/Asset.md @@ -32,6 +33,7 @@ docs/EditAccountConfiguration.md docs/EditAutomationConfiguration.md docs/EvaluatorConfiguration.md docs/EvaluatorConfigurationConfiguration.md +docs/EvaluatorType.md docs/ExchangeAccount.md docs/GenericAccount.md docs/GenericProcessConfiguration.md @@ -77,6 +79,7 @@ docs/UserActionConfiguration.md docs/UserActionResult.md docs/UserActionResultType.md docs/UserActionStatus.md +docs/UserActionType.md docs/UserActionsState.md docs/UserDataState.md octobot_protocol/__init__.py @@ -93,6 +96,7 @@ octobot_protocol/models/account_status_message.py octobot_protocol/models/account_type.py octobot_protocol/models/accounts_state.py octobot_protocol/models/action.py +octobot_protocol/models/action_configuration_type.py octobot_protocol/models/active_order_swap_strategy.py octobot_protocol/models/active_order_swap_strategy_type.py octobot_protocol/models/asset.py @@ -116,6 +120,7 @@ octobot_protocol/models/edit_automation_configuration.py octobot_protocol/models/ema_momentum_evaluator_configuration.py octobot_protocol/models/evaluator_configuration.py octobot_protocol/models/evaluator_configuration_configuration.py +octobot_protocol/models/evaluator_type.py octobot_protocol/models/exchange_account.py octobot_protocol/models/generic_account.py octobot_protocol/models/generic_process_configuration.py @@ -161,6 +166,7 @@ octobot_protocol/models/user_action_configuration.py octobot_protocol/models/user_action_result.py octobot_protocol/models/user_action_result_type.py octobot_protocol/models/user_action_status.py +octobot_protocol/models/user_action_type.py octobot_protocol/models/user_actions_state.py octobot_protocol/models/user_data_state.py test/__init__.py @@ -175,6 +181,7 @@ test/test_account_status_message.py test/test_account_type.py test/test_accounts_state.py test/test_action.py +test/test_action_configuration_type.py test/test_active_order_swap_strategy.py test/test_active_order_swap_strategy_type.py test/test_asset.py @@ -198,6 +205,7 @@ test/test_edit_automation_configuration.py test/test_ema_momentum_evaluator_configuration.py test/test_evaluator_configuration.py test/test_evaluator_configuration_configuration.py +test/test_evaluator_type.py test/test_exchange_account.py test/test_generic_account.py test/test_generic_process_configuration.py @@ -243,5 +251,6 @@ test/test_user_action_configuration.py test/test_user_action_result.py test/test_user_action_result_type.py test/test_user_action_status.py +test/test_user_action_type.py test/test_user_actions_state.py test/test_user_data_state.py diff --git a/packages/protocol/docs/CopyConfiguration.md b/packages/protocol/docs/CopyConfiguration.md index 621cc42b4..3c0c1a9e4 100644 --- a/packages/protocol/docs/CopyConfiguration.md +++ b/packages/protocol/docs/CopyConfiguration.md @@ -6,7 +6,7 @@ CopyConfiguration Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**configuration_type** | **str** | | +**configuration_type** | [**ActionConfigurationType**](ActionConfigurationType.md) | copy | **strategy_id** | **str** | | ## Example diff --git a/packages/protocol/docs/CreateAccountConfiguration.md b/packages/protocol/docs/CreateAccountConfiguration.md index d94f59202..ae77468ee 100644 --- a/packages/protocol/docs/CreateAccountConfiguration.md +++ b/packages/protocol/docs/CreateAccountConfiguration.md @@ -6,7 +6,7 @@ CreateAccountConfiguration Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**action_type** | **str** | | +**action_type** | [**UserActionType**](UserActionType.md) | account_create | **configuration** | [**Account**](Account.md) | | ## Example diff --git a/packages/protocol/docs/CreateAutomationConfiguration.md b/packages/protocol/docs/CreateAutomationConfiguration.md index 081789ffc..d2eff5f85 100644 --- a/packages/protocol/docs/CreateAutomationConfiguration.md +++ b/packages/protocol/docs/CreateAutomationConfiguration.md @@ -6,7 +6,7 @@ CreateAutomationConfiguration Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**action_type** | **str** | | +**action_type** | [**UserActionType**](UserActionType.md) | automation_create | **configuration** | [**AutomationConfiguration**](AutomationConfiguration.md) | | ## Example diff --git a/packages/protocol/docs/DCAConfiguration.md b/packages/protocol/docs/DCAConfiguration.md index e72d1f8dc..2308c7fec 100644 --- a/packages/protocol/docs/DCAConfiguration.md +++ b/packages/protocol/docs/DCAConfiguration.md @@ -6,7 +6,7 @@ DCAConfiguration Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**configuration_type** | **str** | | +**configuration_type** | [**ActionConfigurationType**](ActionConfigurationType.md) | dca | **symbols** | **List[str]** | | **buy_orders_count** | **float** | | **percent_amount_per_buy_order** | **float** | | diff --git a/packages/protocol/docs/DeleteAccountConfiguration.md b/packages/protocol/docs/DeleteAccountConfiguration.md index 3f2a1d6be..0efdb9038 100644 --- a/packages/protocol/docs/DeleteAccountConfiguration.md +++ b/packages/protocol/docs/DeleteAccountConfiguration.md @@ -6,7 +6,7 @@ DeleteAccountConfiguration Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**action_type** | **str** | | +**action_type** | [**UserActionType**](UserActionType.md) | account_delete | **id** | **str** | | ## Example diff --git a/packages/protocol/docs/EMAMomentumEvaluatorConfiguration.md b/packages/protocol/docs/EMAMomentumEvaluatorConfiguration.md index 15807fecc..21bbe828f 100644 --- a/packages/protocol/docs/EMAMomentumEvaluatorConfiguration.md +++ b/packages/protocol/docs/EMAMomentumEvaluatorConfiguration.md @@ -6,7 +6,7 @@ EMAMomentumEvaluatorConfiguration Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**configuration_type** | **str** | | +**configuration_type** | [**EvaluatorType**](EvaluatorType.md) | EMAMomentumEvaluator | **period_length** | **float** | | **price_threshold_percent** | **float** | | **reverse_signal** | **bool** | | [default to False] diff --git a/packages/protocol/docs/EditAccountConfiguration.md b/packages/protocol/docs/EditAccountConfiguration.md index 29bd50e57..6a1ba4714 100644 --- a/packages/protocol/docs/EditAccountConfiguration.md +++ b/packages/protocol/docs/EditAccountConfiguration.md @@ -6,7 +6,7 @@ EditAccountConfiguration Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**action_type** | **str** | | +**action_type** | [**UserActionType**](UserActionType.md) | account_edit | **id** | **str** | | **configuration** | [**Account**](Account.md) | | [optional] diff --git a/packages/protocol/docs/EditAutomationConfiguration.md b/packages/protocol/docs/EditAutomationConfiguration.md index bfb8521e9..7eb3b851d 100644 --- a/packages/protocol/docs/EditAutomationConfiguration.md +++ b/packages/protocol/docs/EditAutomationConfiguration.md @@ -7,7 +7,7 @@ EditAutomationConfiguration Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- **id** | **str** | | -**action_type** | **str** | | +**action_type** | [**UserActionType**](UserActionType.md) | automation_edit | **configuration** | [**AutomationConfiguration**](AutomationConfiguration.md) | | ## Example diff --git a/packages/protocol/docs/EvaluatorConfigurationConfiguration.md b/packages/protocol/docs/EvaluatorConfigurationConfiguration.md index cf14d3741..6ceed22b5 100644 --- a/packages/protocol/docs/EvaluatorConfigurationConfiguration.md +++ b/packages/protocol/docs/EvaluatorConfigurationConfiguration.md @@ -5,7 +5,7 @@ Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**configuration_type** | **str** | | +**configuration_type** | [**EvaluatorType**](EvaluatorType.md) | EMAMomentumEvaluator | **period_length** | **float** | | **short_threshold** | **float** | | **long_threshold** | **float** | | diff --git a/packages/protocol/docs/GenericProcessConfiguration.md b/packages/protocol/docs/GenericProcessConfiguration.md index b8a0ba5c2..835439699 100644 --- a/packages/protocol/docs/GenericProcessConfiguration.md +++ b/packages/protocol/docs/GenericProcessConfiguration.md @@ -6,7 +6,7 @@ GenericProcessConfiguration Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**configuration_type** | **str** | | +**configuration_type** | [**ActionConfigurationType**](ActionConfigurationType.md) | generic_process | **profile_data** | **object** | | ## Example diff --git a/packages/protocol/docs/GenericWorkflowConfiguration.md b/packages/protocol/docs/GenericWorkflowConfiguration.md index 7e441e907..9fd8d1da8 100644 --- a/packages/protocol/docs/GenericWorkflowConfiguration.md +++ b/packages/protocol/docs/GenericWorkflowConfiguration.md @@ -6,7 +6,7 @@ GenericWorkflowConfiguration Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**configuration_type** | **str** | | +**configuration_type** | [**ActionConfigurationType**](ActionConfigurationType.md) | generic_workflow | **actions** | [**List[Action]**](Action.md) | | ## Example diff --git a/packages/protocol/docs/GridConfiguration.md b/packages/protocol/docs/GridConfiguration.md index 37ec47f4f..85c8d4ea4 100644 --- a/packages/protocol/docs/GridConfiguration.md +++ b/packages/protocol/docs/GridConfiguration.md @@ -6,7 +6,7 @@ GridConfiguration Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**configuration_type** | **str** | | +**configuration_type** | [**ActionConfigurationType**](ActionConfigurationType.md) | grid | **symbol** | **str** | | **spread** | **float** | Price difference between the closest buy and sell orders. Denominated in the quote currency (600 for a 600 USDT spread on BTC/USDT). | **increment** | **float** | Price difference between two orders of the same side. Denominated in the quote currency (200 for a 200 USDT spread on BTC/USDT). | diff --git a/packages/protocol/docs/IndexConfiguration.md b/packages/protocol/docs/IndexConfiguration.md index ac1f55643..ea284ba20 100644 --- a/packages/protocol/docs/IndexConfiguration.md +++ b/packages/protocol/docs/IndexConfiguration.md @@ -6,7 +6,7 @@ IndexConfiguration Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**configuration_type** | **str** | | +**configuration_type** | [**ActionConfigurationType**](ActionConfigurationType.md) | index | **coins** | [**List[IndexCoin]**](IndexCoin.md) | | **rebalance_trigger_min_percent** | **float** | | diff --git a/packages/protocol/docs/MarketMakingConfiguration.md b/packages/protocol/docs/MarketMakingConfiguration.md index c9e2110fd..7cf1dbb2a 100644 --- a/packages/protocol/docs/MarketMakingConfiguration.md +++ b/packages/protocol/docs/MarketMakingConfiguration.md @@ -6,7 +6,7 @@ Per-symbol market making parameters. Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**configuration_type** | **str** | | +**configuration_type** | [**ActionConfigurationType**](ActionConfigurationType.md) | market_making | **pair_settings** | [**List[MarketMakingSymbolConfiguration]**](MarketMakingSymbolConfiguration.md) | | ## Example diff --git a/packages/protocol/docs/RSIMomentumEvaluatorConfiguration.md b/packages/protocol/docs/RSIMomentumEvaluatorConfiguration.md index 054e21fcf..a0a24a2cc 100644 --- a/packages/protocol/docs/RSIMomentumEvaluatorConfiguration.md +++ b/packages/protocol/docs/RSIMomentumEvaluatorConfiguration.md @@ -6,7 +6,7 @@ RSIMomentumEvaluatorConfiguration Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**configuration_type** | **str** | | +**configuration_type** | [**EvaluatorType**](EvaluatorType.md) | RSIMomentumEvaluator | **period_length** | **float** | | **short_threshold** | **float** | | **long_threshold** | **float** | | diff --git a/packages/protocol/docs/RefreshAccountsConfiguration.md b/packages/protocol/docs/RefreshAccountsConfiguration.md index b6d261151..91b63859c 100644 --- a/packages/protocol/docs/RefreshAccountsConfiguration.md +++ b/packages/protocol/docs/RefreshAccountsConfiguration.md @@ -6,7 +6,7 @@ RefreshAccountsConfiguration Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**action_type** | **str** | | +**action_type** | [**UserActionType**](UserActionType.md) | accounts_refresh | **account_ids** | **List[str]** | | [optional] ## Example diff --git a/packages/protocol/docs/StopAutomationConfiguration.md b/packages/protocol/docs/StopAutomationConfiguration.md index a9ad935a2..2516eb326 100644 --- a/packages/protocol/docs/StopAutomationConfiguration.md +++ b/packages/protocol/docs/StopAutomationConfiguration.md @@ -7,7 +7,7 @@ StopAutomationConfiguration Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- **id** | **str** | | -**action_type** | **str** | | +**action_type** | [**UserActionType**](UserActionType.md) | automation_stop | ## Example diff --git a/packages/protocol/docs/StrategyConfiguration.md b/packages/protocol/docs/StrategyConfiguration.md index e55b59b2e..a0a73bc56 100644 --- a/packages/protocol/docs/StrategyConfiguration.md +++ b/packages/protocol/docs/StrategyConfiguration.md @@ -5,7 +5,7 @@ Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**configuration_type** | **str** | | +**configuration_type** | [**ActionConfigurationType**](ActionConfigurationType.md) | generic_workflow | **pair_settings** | [**List[MarketMakingSymbolConfiguration]**](MarketMakingSymbolConfiguration.md) | | **symbols** | **List[str]** | | **buy_orders_count** | **float** | | diff --git a/packages/protocol/docs/UserActionConfiguration.md b/packages/protocol/docs/UserActionConfiguration.md index 9c4758766..52b8be861 100644 --- a/packages/protocol/docs/UserActionConfiguration.md +++ b/packages/protocol/docs/UserActionConfiguration.md @@ -5,7 +5,7 @@ Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**action_type** | **str** | | +**action_type** | [**UserActionType**](UserActionType.md) | accounts_refresh | **configuration** | [**Account**](Account.md) | | **id** | **str** | | **account_ids** | **List[str]** | | [optional] diff --git a/packages/protocol/octobot_protocol/models/__init__.py b/packages/protocol/octobot_protocol/models/__init__.py index 403d34862..22e15ebdd 100644 --- a/packages/protocol/octobot_protocol/models/__init__.py +++ b/packages/protocol/octobot_protocol/models/__init__.py @@ -24,6 +24,7 @@ from octobot_protocol.models.account_type import AccountType from octobot_protocol.models.accounts_state import AccountsState from octobot_protocol.models.action import Action +from octobot_protocol.models.action_configuration_type import ActionConfigurationType from octobot_protocol.models.active_order_swap_strategy import ActiveOrderSwapStrategy from octobot_protocol.models.active_order_swap_strategy_type import ActiveOrderSwapStrategyType from octobot_protocol.models.asset import Asset @@ -47,6 +48,7 @@ from octobot_protocol.models.edit_automation_configuration import EditAutomationConfiguration from octobot_protocol.models.evaluator_configuration import EvaluatorConfiguration from octobot_protocol.models.evaluator_configuration_configuration import EvaluatorConfigurationConfiguration +from octobot_protocol.models.evaluator_type import EvaluatorType from octobot_protocol.models.exchange_account import ExchangeAccount from octobot_protocol.models.generic_account import GenericAccount from octobot_protocol.models.generic_process_configuration import GenericProcessConfiguration @@ -92,6 +94,7 @@ from octobot_protocol.models.user_action_result import UserActionResult from octobot_protocol.models.user_action_result_type import UserActionResultType from octobot_protocol.models.user_action_status import UserActionStatus +from octobot_protocol.models.user_action_type import UserActionType from octobot_protocol.models.user_actions_state import UserActionsState from octobot_protocol.models.user_data_state import UserDataState diff --git a/packages/protocol/octobot_protocol/models/action_configuration_type.py b/packages/protocol/octobot_protocol/models/action_configuration_type.py new file mode 100644 index 000000000..765ecf938 --- /dev/null +++ b/packages/protocol/octobot_protocol/models/action_configuration_type.py @@ -0,0 +1,42 @@ +# coding: utf-8 + +""" + OctoBot protocol types + + No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + + The version of the OpenAPI document: 1.0.0 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +from __future__ import annotations +import json +from enum import Enum +from typing_extensions import Self + + +class ActionConfigurationType(str, Enum): + """ + ActionConfigurationType + """ + + """ + allowed enum values + """ + MARKET_MAKING = 'market_making' + DCA = 'dca' + INDEX = 'index' + GRID = 'grid' + COPY = 'copy' + GENERIC_PROCESS = 'generic_process' + GENERIC_WORKFLOW = 'generic_workflow' + + @classmethod + def from_json(cls, json_str: str) -> Self: + """Create an instance of ActionConfigurationType from a JSON string""" + return cls(json.loads(json_str)) + + diff --git a/packages/protocol/octobot_protocol/models/copy_configuration.py b/packages/protocol/octobot_protocol/models/copy_configuration.py index fdd69cd32..ce890aa90 100644 --- a/packages/protocol/octobot_protocol/models/copy_configuration.py +++ b/packages/protocol/octobot_protocol/models/copy_configuration.py @@ -17,8 +17,9 @@ import re # noqa: F401 import json -from pydantic import BaseModel, ConfigDict, StrictStr, field_validator +from pydantic import BaseModel, ConfigDict, Field, StrictStr from typing import Any, ClassVar, Dict, List +from octobot_protocol.models.action_configuration_type import ActionConfigurationType from typing import Optional, Set from typing_extensions import Self from pydantic_core import to_jsonable_python @@ -27,17 +28,10 @@ class CopyConfiguration(BaseModel): """ CopyConfiguration """ # noqa: E501 - configuration_type: StrictStr + configuration_type: ActionConfigurationType = Field(description="copy") strategy_id: StrictStr __properties: ClassVar[List[str]] = ["configuration_type", "strategy_id"] - @field_validator('configuration_type') - def configuration_type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['CopyConfiguration']): - raise ValueError("must be one of enum values ('CopyConfiguration')") - return value - model_config = ConfigDict( validate_by_name=True, validate_by_alias=True, diff --git a/packages/protocol/octobot_protocol/models/create_account_configuration.py b/packages/protocol/octobot_protocol/models/create_account_configuration.py index 9e0f91151..c327c6eb8 100644 --- a/packages/protocol/octobot_protocol/models/create_account_configuration.py +++ b/packages/protocol/octobot_protocol/models/create_account_configuration.py @@ -17,9 +17,10 @@ import re # noqa: F401 import json -from pydantic import BaseModel, ConfigDict, StrictStr, field_validator +from pydantic import BaseModel, ConfigDict, Field from typing import Any, ClassVar, Dict, List from octobot_protocol.models.account import Account +from octobot_protocol.models.user_action_type import UserActionType from typing import Optional, Set from typing_extensions import Self from pydantic_core import to_jsonable_python @@ -28,17 +29,10 @@ class CreateAccountConfiguration(BaseModel): """ CreateAccountConfiguration """ # noqa: E501 - action_type: StrictStr + action_type: UserActionType = Field(description="account_create") configuration: Account __properties: ClassVar[List[str]] = ["action_type", "configuration"] - @field_validator('action_type') - def action_type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['account_create']): - raise ValueError("must be one of enum values ('account_create')") - return value - model_config = ConfigDict( validate_by_name=True, validate_by_alias=True, diff --git a/packages/protocol/octobot_protocol/models/create_automation_configuration.py b/packages/protocol/octobot_protocol/models/create_automation_configuration.py index cbd3d52d6..4aecf74c9 100644 --- a/packages/protocol/octobot_protocol/models/create_automation_configuration.py +++ b/packages/protocol/octobot_protocol/models/create_automation_configuration.py @@ -17,9 +17,10 @@ import re # noqa: F401 import json -from pydantic import BaseModel, ConfigDict, StrictStr, field_validator +from pydantic import BaseModel, ConfigDict, Field from typing import Any, ClassVar, Dict, List from octobot_protocol.models.automation_configuration import AutomationConfiguration +from octobot_protocol.models.user_action_type import UserActionType from typing import Optional, Set from typing_extensions import Self from pydantic_core import to_jsonable_python @@ -28,17 +29,10 @@ class CreateAutomationConfiguration(BaseModel): """ CreateAutomationConfiguration """ # noqa: E501 - action_type: StrictStr + action_type: UserActionType = Field(description="automation_create") configuration: AutomationConfiguration __properties: ClassVar[List[str]] = ["action_type", "configuration"] - @field_validator('action_type') - def action_type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['automation_create']): - raise ValueError("must be one of enum values ('automation_create')") - return value - model_config = ConfigDict( validate_by_name=True, validate_by_alias=True, diff --git a/packages/protocol/octobot_protocol/models/dca_configuration.py b/packages/protocol/octobot_protocol/models/dca_configuration.py index 2951595a7..6ab253bd4 100644 --- a/packages/protocol/octobot_protocol/models/dca_configuration.py +++ b/packages/protocol/octobot_protocol/models/dca_configuration.py @@ -20,6 +20,7 @@ from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr, field_validator from typing import Any, ClassVar, Dict, List, Union from typing_extensions import Annotated +from octobot_protocol.models.action_configuration_type import ActionConfigurationType from octobot_protocol.models.evaluator_configuration import EvaluatorConfiguration from octobot_protocol.models.time_frame import TimeFrame from typing import Optional, Set @@ -30,7 +31,7 @@ class DCAConfiguration(BaseModel): """ DCAConfiguration """ # noqa: E501 - configuration_type: StrictStr + configuration_type: ActionConfigurationType = Field(description="dca") symbols: List[StrictStr] buy_orders_count: Union[Annotated[float, Field(strict=True, ge=1)], Annotated[int, Field(strict=True, ge=1)]] percent_amount_per_buy_order: Union[Annotated[float, Field(le=100, strict=True, ge=0)], Annotated[int, Field(le=100, strict=True, ge=0)]] @@ -44,13 +45,6 @@ class DCAConfiguration(BaseModel): evaluators: List[EvaluatorConfiguration] __properties: ClassVar[List[str]] = ["configuration_type", "symbols", "buy_orders_count", "percent_amount_per_buy_order", "profit_target_percent", "buy_order_price_discount_percent", "enable_stop_loss", "stop_loss_price_discount_percent", "trigger_mode", "use_init_entry_orders", "time_frames", "evaluators"] - @field_validator('configuration_type') - def configuration_type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['DCAConfiguration']): - raise ValueError("must be one of enum values ('DCAConfiguration')") - return value - @field_validator('trigger_mode') def trigger_mode_validate_enum(cls, value): """Validates the enum""" diff --git a/packages/protocol/octobot_protocol/models/delete_account_configuration.py b/packages/protocol/octobot_protocol/models/delete_account_configuration.py index e0d218b99..7c73d3fa8 100644 --- a/packages/protocol/octobot_protocol/models/delete_account_configuration.py +++ b/packages/protocol/octobot_protocol/models/delete_account_configuration.py @@ -17,8 +17,9 @@ import re # noqa: F401 import json -from pydantic import BaseModel, ConfigDict, StrictStr, field_validator +from pydantic import BaseModel, ConfigDict, Field, StrictStr from typing import Any, ClassVar, Dict, List +from octobot_protocol.models.user_action_type import UserActionType from typing import Optional, Set from typing_extensions import Self from pydantic_core import to_jsonable_python @@ -27,17 +28,10 @@ class DeleteAccountConfiguration(BaseModel): """ DeleteAccountConfiguration """ # noqa: E501 - action_type: StrictStr + action_type: UserActionType = Field(description="account_delete") id: StrictStr __properties: ClassVar[List[str]] = ["action_type", "id"] - @field_validator('action_type') - def action_type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['account_delete']): - raise ValueError("must be one of enum values ('account_delete')") - return value - model_config = ConfigDict( validate_by_name=True, validate_by_alias=True, diff --git a/packages/protocol/octobot_protocol/models/edit_account_configuration.py b/packages/protocol/octobot_protocol/models/edit_account_configuration.py index c9ff38c8e..78255739e 100644 --- a/packages/protocol/octobot_protocol/models/edit_account_configuration.py +++ b/packages/protocol/octobot_protocol/models/edit_account_configuration.py @@ -17,9 +17,10 @@ import re # noqa: F401 import json -from pydantic import BaseModel, ConfigDict, StrictStr, field_validator +from pydantic import BaseModel, ConfigDict, Field, StrictStr from typing import Any, ClassVar, Dict, List, Optional from octobot_protocol.models.account import Account +from octobot_protocol.models.user_action_type import UserActionType from typing import Optional, Set from typing_extensions import Self from pydantic_core import to_jsonable_python @@ -28,18 +29,11 @@ class EditAccountConfiguration(BaseModel): """ EditAccountConfiguration """ # noqa: E501 - action_type: StrictStr + action_type: UserActionType = Field(description="account_edit") id: StrictStr configuration: Optional[Account] = None __properties: ClassVar[List[str]] = ["action_type", "id", "configuration"] - @field_validator('action_type') - def action_type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['account_edit']): - raise ValueError("must be one of enum values ('account_edit')") - return value - model_config = ConfigDict( validate_by_name=True, validate_by_alias=True, diff --git a/packages/protocol/octobot_protocol/models/edit_automation_configuration.py b/packages/protocol/octobot_protocol/models/edit_automation_configuration.py index 3e6b94730..d3e15fb2d 100644 --- a/packages/protocol/octobot_protocol/models/edit_automation_configuration.py +++ b/packages/protocol/octobot_protocol/models/edit_automation_configuration.py @@ -17,9 +17,10 @@ import re # noqa: F401 import json -from pydantic import BaseModel, ConfigDict, StrictStr, field_validator +from pydantic import BaseModel, ConfigDict, Field, StrictStr from typing import Any, ClassVar, Dict, List from octobot_protocol.models.automation_configuration import AutomationConfiguration +from octobot_protocol.models.user_action_type import UserActionType from typing import Optional, Set from typing_extensions import Self from pydantic_core import to_jsonable_python @@ -29,17 +30,10 @@ class EditAutomationConfiguration(BaseModel): EditAutomationConfiguration """ # noqa: E501 id: StrictStr - action_type: StrictStr + action_type: UserActionType = Field(description="automation_edit") configuration: AutomationConfiguration __properties: ClassVar[List[str]] = ["id", "action_type", "configuration"] - @field_validator('action_type') - def action_type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['automation_edit']): - raise ValueError("must be one of enum values ('automation_edit')") - return value - model_config = ConfigDict( validate_by_name=True, validate_by_alias=True, diff --git a/packages/protocol/octobot_protocol/models/ema_momentum_evaluator_configuration.py b/packages/protocol/octobot_protocol/models/ema_momentum_evaluator_configuration.py index f7b571695..75ee4b092 100644 --- a/packages/protocol/octobot_protocol/models/ema_momentum_evaluator_configuration.py +++ b/packages/protocol/octobot_protocol/models/ema_momentum_evaluator_configuration.py @@ -17,9 +17,10 @@ import re # noqa: F401 import json -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr, field_validator +from pydantic import BaseModel, ConfigDict, Field, StrictBool from typing import Any, ClassVar, Dict, List, Union from typing_extensions import Annotated +from octobot_protocol.models.evaluator_type import EvaluatorType from typing import Optional, Set from typing_extensions import Self from pydantic_core import to_jsonable_python @@ -28,19 +29,12 @@ class EMAMomentumEvaluatorConfiguration(BaseModel): """ EMAMomentumEvaluatorConfiguration """ # noqa: E501 - configuration_type: StrictStr + configuration_type: EvaluatorType = Field(description="EMAMomentumEvaluator") period_length: Union[Annotated[float, Field(strict=True, ge=1)], Annotated[int, Field(strict=True, ge=1)]] price_threshold_percent: Union[Annotated[float, Field(le=100, strict=True, ge=0)], Annotated[int, Field(le=100, strict=True, ge=0)]] reverse_signal: StrictBool __properties: ClassVar[List[str]] = ["configuration_type", "period_length", "price_threshold_percent", "reverse_signal"] - @field_validator('configuration_type') - def configuration_type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['EMAMomentumEvaluator']): - raise ValueError("must be one of enum values ('EMAMomentumEvaluator')") - return value - model_config = ConfigDict( validate_by_name=True, validate_by_alias=True, diff --git a/packages/protocol/octobot_protocol/models/evaluator_type.py b/packages/protocol/octobot_protocol/models/evaluator_type.py new file mode 100644 index 000000000..57e55ffbd --- /dev/null +++ b/packages/protocol/octobot_protocol/models/evaluator_type.py @@ -0,0 +1,37 @@ +# coding: utf-8 + +""" + OctoBot protocol types + + No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + + The version of the OpenAPI document: 1.0.0 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +from __future__ import annotations +import json +from enum import Enum +from typing_extensions import Self + + +class EvaluatorType(str, Enum): + """ + EvaluatorType + """ + + """ + allowed enum values + """ + RSIMOMENTUMEVALUATOR = 'RSIMomentumEvaluator' + EMAMOMENTUMEVALUATOR = 'EMAMomentumEvaluator' + + @classmethod + def from_json(cls, json_str: str) -> Self: + """Create an instance of EvaluatorType from a JSON string""" + return cls(json.loads(json_str)) + + diff --git a/packages/protocol/octobot_protocol/models/generic_process_configuration.py b/packages/protocol/octobot_protocol/models/generic_process_configuration.py index 594c80452..d00208b89 100644 --- a/packages/protocol/octobot_protocol/models/generic_process_configuration.py +++ b/packages/protocol/octobot_protocol/models/generic_process_configuration.py @@ -17,8 +17,9 @@ import re # noqa: F401 import json -from pydantic import BaseModel, ConfigDict, StrictStr, field_validator +from pydantic import BaseModel, ConfigDict, Field from typing import Any, ClassVar, Dict, List +from octobot_protocol.models.action_configuration_type import ActionConfigurationType from typing import Optional, Set from typing_extensions import Self from pydantic_core import to_jsonable_python @@ -27,17 +28,10 @@ class GenericProcessConfiguration(BaseModel): """ GenericProcessConfiguration """ # noqa: E501 - configuration_type: StrictStr + configuration_type: ActionConfigurationType = Field(description="generic_process") profile_data: Dict[str, Any] __properties: ClassVar[List[str]] = ["configuration_type", "profile_data"] - @field_validator('configuration_type') - def configuration_type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['GenericProcessConfiguration']): - raise ValueError("must be one of enum values ('GenericProcessConfiguration')") - return value - model_config = ConfigDict( validate_by_name=True, validate_by_alias=True, diff --git a/packages/protocol/octobot_protocol/models/generic_workflow_configuration.py b/packages/protocol/octobot_protocol/models/generic_workflow_configuration.py index 0f372d3ad..4e8ac3675 100644 --- a/packages/protocol/octobot_protocol/models/generic_workflow_configuration.py +++ b/packages/protocol/octobot_protocol/models/generic_workflow_configuration.py @@ -17,9 +17,10 @@ import re # noqa: F401 import json -from pydantic import BaseModel, ConfigDict, StrictStr, field_validator +from pydantic import BaseModel, ConfigDict, Field from typing import Any, ClassVar, Dict, List from octobot_protocol.models.action import Action +from octobot_protocol.models.action_configuration_type import ActionConfigurationType from typing import Optional, Set from typing_extensions import Self from pydantic_core import to_jsonable_python @@ -28,17 +29,10 @@ class GenericWorkflowConfiguration(BaseModel): """ GenericWorkflowConfiguration """ # noqa: E501 - configuration_type: StrictStr + configuration_type: ActionConfigurationType = Field(description="generic_workflow") actions: List[Action] __properties: ClassVar[List[str]] = ["configuration_type", "actions"] - @field_validator('configuration_type') - def configuration_type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['GenericWorkflowConfiguration']): - raise ValueError("must be one of enum values ('GenericWorkflowConfiguration')") - return value - model_config = ConfigDict( validate_by_name=True, validate_by_alias=True, diff --git a/packages/protocol/octobot_protocol/models/grid_configuration.py b/packages/protocol/octobot_protocol/models/grid_configuration.py index 968d13ba7..c94e5e2a3 100644 --- a/packages/protocol/octobot_protocol/models/grid_configuration.py +++ b/packages/protocol/octobot_protocol/models/grid_configuration.py @@ -17,9 +17,10 @@ import re # noqa: F401 import json -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr, field_validator +from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr from typing import Any, ClassVar, Dict, List, Union from typing_extensions import Annotated +from octobot_protocol.models.action_configuration_type import ActionConfigurationType from typing import Optional, Set from typing_extensions import Self from pydantic_core import to_jsonable_python @@ -28,7 +29,7 @@ class GridConfiguration(BaseModel): """ GridConfiguration """ # noqa: E501 - configuration_type: StrictStr + configuration_type: ActionConfigurationType = Field(description="grid") symbol: StrictStr spread: Union[Annotated[float, Field(strict=True, ge=0)], Annotated[int, Field(strict=True, ge=0)]] = Field(description="Price difference between the closest buy and sell orders. Denominated in the quote currency (600 for a 600 USDT spread on BTC/USDT).") increment: Union[Annotated[float, Field(strict=True, ge=0)], Annotated[int, Field(strict=True, ge=0)]] = Field(description="Price difference between two orders of the same side. Denominated in the quote currency (200 for a 200 USDT spread on BTC/USDT).") @@ -39,13 +40,6 @@ class GridConfiguration(BaseModel): order_by_order_trailing: StrictBool __properties: ClassVar[List[str]] = ["configuration_type", "symbol", "spread", "increment", "buy_count", "sell_count", "enable_trailing_up", "enable_trailing_down", "order_by_order_trailing"] - @field_validator('configuration_type') - def configuration_type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['GridConfiguration']): - raise ValueError("must be one of enum values ('GridConfiguration')") - return value - model_config = ConfigDict( validate_by_name=True, validate_by_alias=True, diff --git a/packages/protocol/octobot_protocol/models/index_configuration.py b/packages/protocol/octobot_protocol/models/index_configuration.py index a6dc1727c..91c685907 100644 --- a/packages/protocol/octobot_protocol/models/index_configuration.py +++ b/packages/protocol/octobot_protocol/models/index_configuration.py @@ -17,9 +17,10 @@ import re # noqa: F401 import json -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator +from pydantic import BaseModel, ConfigDict, Field from typing import Any, ClassVar, Dict, List, Union from typing_extensions import Annotated +from octobot_protocol.models.action_configuration_type import ActionConfigurationType from octobot_protocol.models.index_coin import IndexCoin from typing import Optional, Set from typing_extensions import Self @@ -29,18 +30,11 @@ class IndexConfiguration(BaseModel): """ IndexConfiguration """ # noqa: E501 - configuration_type: StrictStr + configuration_type: ActionConfigurationType = Field(description="index") coins: List[IndexCoin] rebalance_trigger_min_percent: Union[Annotated[float, Field(le=100, strict=True, ge=0)], Annotated[int, Field(le=100, strict=True, ge=0)]] __properties: ClassVar[List[str]] = ["configuration_type", "coins", "rebalance_trigger_min_percent"] - @field_validator('configuration_type') - def configuration_type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['IndexConfiguration']): - raise ValueError("must be one of enum values ('IndexConfiguration')") - return value - model_config = ConfigDict( validate_by_name=True, validate_by_alias=True, diff --git a/packages/protocol/octobot_protocol/models/market_making_configuration.py b/packages/protocol/octobot_protocol/models/market_making_configuration.py index de82e3691..b6177a562 100644 --- a/packages/protocol/octobot_protocol/models/market_making_configuration.py +++ b/packages/protocol/octobot_protocol/models/market_making_configuration.py @@ -17,8 +17,9 @@ import re # noqa: F401 import json -from pydantic import BaseModel, ConfigDict, StrictStr, field_validator +from pydantic import BaseModel, ConfigDict, Field from typing import Any, ClassVar, Dict, List +from octobot_protocol.models.action_configuration_type import ActionConfigurationType from octobot_protocol.models.market_making_symbol_configuration import MarketMakingSymbolConfiguration from typing import Optional, Set from typing_extensions import Self @@ -28,17 +29,10 @@ class MarketMakingConfiguration(BaseModel): """ Per-symbol market making parameters. """ # noqa: E501 - configuration_type: StrictStr + configuration_type: ActionConfigurationType = Field(description="market_making") pair_settings: List[MarketMakingSymbolConfiguration] __properties: ClassVar[List[str]] = ["configuration_type", "pair_settings"] - @field_validator('configuration_type') - def configuration_type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['MarketMakingConfiguration']): - raise ValueError("must be one of enum values ('MarketMakingConfiguration')") - return value - model_config = ConfigDict( validate_by_name=True, validate_by_alias=True, diff --git a/packages/protocol/octobot_protocol/models/refresh_accounts_configuration.py b/packages/protocol/octobot_protocol/models/refresh_accounts_configuration.py index b0d87ebf5..3cc627d29 100644 --- a/packages/protocol/octobot_protocol/models/refresh_accounts_configuration.py +++ b/packages/protocol/octobot_protocol/models/refresh_accounts_configuration.py @@ -17,8 +17,9 @@ import re # noqa: F401 import json -from pydantic import BaseModel, ConfigDict, StrictStr, field_validator +from pydantic import BaseModel, ConfigDict, Field, StrictStr from typing import Any, ClassVar, Dict, List, Optional +from octobot_protocol.models.user_action_type import UserActionType from typing import Optional, Set from typing_extensions import Self from pydantic_core import to_jsonable_python @@ -27,17 +28,10 @@ class RefreshAccountsConfiguration(BaseModel): """ RefreshAccountsConfiguration """ # noqa: E501 - action_type: StrictStr + action_type: UserActionType = Field(description="accounts_refresh") account_ids: Optional[List[StrictStr]] = None __properties: ClassVar[List[str]] = ["action_type", "account_ids"] - @field_validator('action_type') - def action_type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['accounts_refresh']): - raise ValueError("must be one of enum values ('accounts_refresh')") - return value - model_config = ConfigDict( validate_by_name=True, validate_by_alias=True, diff --git a/packages/protocol/octobot_protocol/models/rsi_momentum_evaluator_configuration.py b/packages/protocol/octobot_protocol/models/rsi_momentum_evaluator_configuration.py index c8b33670b..0a8d585f8 100644 --- a/packages/protocol/octobot_protocol/models/rsi_momentum_evaluator_configuration.py +++ b/packages/protocol/octobot_protocol/models/rsi_momentum_evaluator_configuration.py @@ -17,9 +17,10 @@ import re # noqa: F401 import json -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator +from pydantic import BaseModel, ConfigDict, Field from typing import Any, ClassVar, Dict, List, Union from typing_extensions import Annotated +from octobot_protocol.models.evaluator_type import EvaluatorType from typing import Optional, Set from typing_extensions import Self from pydantic_core import to_jsonable_python @@ -28,19 +29,12 @@ class RSIMomentumEvaluatorConfiguration(BaseModel): """ RSIMomentumEvaluatorConfiguration """ # noqa: E501 - configuration_type: StrictStr + configuration_type: EvaluatorType = Field(description="RSIMomentumEvaluator") period_length: Union[Annotated[float, Field(strict=True, ge=1)], Annotated[int, Field(strict=True, ge=1)]] short_threshold: Union[Annotated[float, Field(le=100, strict=True, ge=0)], Annotated[int, Field(le=100, strict=True, ge=0)]] long_threshold: Union[Annotated[float, Field(le=100, strict=True, ge=0)], Annotated[int, Field(le=100, strict=True, ge=0)]] __properties: ClassVar[List[str]] = ["configuration_type", "period_length", "short_threshold", "long_threshold"] - @field_validator('configuration_type') - def configuration_type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['RSIMomentumEvaluator']): - raise ValueError("must be one of enum values ('RSIMomentumEvaluator')") - return value - model_config = ConfigDict( validate_by_name=True, validate_by_alias=True, diff --git a/packages/protocol/octobot_protocol/models/stop_automation_configuration.py b/packages/protocol/octobot_protocol/models/stop_automation_configuration.py index 3403dc21e..3a5dac6bf 100644 --- a/packages/protocol/octobot_protocol/models/stop_automation_configuration.py +++ b/packages/protocol/octobot_protocol/models/stop_automation_configuration.py @@ -17,8 +17,9 @@ import re # noqa: F401 import json -from pydantic import BaseModel, ConfigDict, StrictStr, field_validator +from pydantic import BaseModel, ConfigDict, Field, StrictStr from typing import Any, ClassVar, Dict, List +from octobot_protocol.models.user_action_type import UserActionType from typing import Optional, Set from typing_extensions import Self from pydantic_core import to_jsonable_python @@ -28,16 +29,9 @@ class StopAutomationConfiguration(BaseModel): StopAutomationConfiguration """ # noqa: E501 id: StrictStr - action_type: StrictStr + action_type: UserActionType = Field(description="automation_stop") __properties: ClassVar[List[str]] = ["id", "action_type"] - @field_validator('action_type') - def action_type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['automation_stop']): - raise ValueError("must be one of enum values ('automation_stop')") - return value - model_config = ConfigDict( validate_by_name=True, validate_by_alias=True, diff --git a/packages/protocol/octobot_protocol/models/user_action_type.py b/packages/protocol/octobot_protocol/models/user_action_type.py new file mode 100644 index 000000000..4612bdb76 --- /dev/null +++ b/packages/protocol/octobot_protocol/models/user_action_type.py @@ -0,0 +1,42 @@ +# coding: utf-8 + +""" + OctoBot protocol types + + No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + + The version of the OpenAPI document: 1.0.0 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +from __future__ import annotations +import json +from enum import Enum +from typing_extensions import Self + + +class UserActionType(str, Enum): + """ + UserActionType + """ + + """ + allowed enum values + """ + AUTOMATION_CREATE = 'automation_create' + AUTOMATION_EDIT = 'automation_edit' + AUTOMATION_STOP = 'automation_stop' + ACCOUNT_CREATE = 'account_create' + ACCOUNT_EDIT = 'account_edit' + ACCOUNT_DELETE = 'account_delete' + ACCOUNTS_REFRESH = 'accounts_refresh' + + @classmethod + def from_json(cls, json_str: str) -> Self: + """Create an instance of UserActionType from a JSON string""" + return cls(json.loads(json_str)) + + diff --git a/packages/protocol/octobot_protocol_ts/models/ActionConfigurationType.ts b/packages/protocol/octobot_protocol_ts/models/ActionConfigurationType.ts new file mode 100644 index 000000000..d4e20e118 --- /dev/null +++ b/packages/protocol/octobot_protocol_ts/models/ActionConfigurationType.ts @@ -0,0 +1,17 @@ +/** + * OctoBot protocol types + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +/** +* ActionConfigurationType +*/ +export type ActionConfigurationType = 'market_making' | 'dca' | 'index' | 'grid' | 'copy' | 'generic_process' | 'generic_workflow' diff --git a/packages/protocol/octobot_protocol_ts/models/BlockchainAccount.ts b/packages/protocol/octobot_protocol_ts/models/BlockchainAccount.ts index ec245f4d9..a4e5c8802 100644 --- a/packages/protocol/octobot_protocol_ts/models/BlockchainAccount.ts +++ b/packages/protocol/octobot_protocol_ts/models/BlockchainAccount.ts @@ -19,7 +19,7 @@ export class BlockchainAccount { /** * blockchain */ - 'account_type': AccountType; + 'account_type': 'blockchain'; 'blockchain': string; 'network'?: string; 'public_key'?: string; diff --git a/packages/protocol/octobot_protocol_ts/models/CopyConfiguration.ts b/packages/protocol/octobot_protocol_ts/models/CopyConfiguration.ts index 451fed162..3218f75db 100644 --- a/packages/protocol/octobot_protocol_ts/models/CopyConfiguration.ts +++ b/packages/protocol/octobot_protocol_ts/models/CopyConfiguration.ts @@ -10,12 +10,16 @@ * Do not edit the class manually. */ +import { ActionConfigurationType } from '../models/ActionConfigurationType'; /** * CopyConfiguration */ export class CopyConfiguration { - 'configuration_type': CopyConfigurationConfigurationTypeEnum; + /** + * copy + */ + 'configuration_type': 'copy'; 'strategy_id': string; static readonly discriminator: string | undefined = undefined; @@ -26,7 +30,7 @@ export class CopyConfiguration { { "name": "configuration_type", "baseName": "configuration_type", - "type": "CopyConfigurationConfigurationTypeEnum", + "type": "ActionConfigurationType", "format": "" }, { @@ -44,5 +48,4 @@ export class CopyConfiguration { } } -export type CopyConfigurationConfigurationTypeEnum = 'CopyConfiguration' diff --git a/packages/protocol/octobot_protocol_ts/models/CreateAccountConfiguration.ts b/packages/protocol/octobot_protocol_ts/models/CreateAccountConfiguration.ts index 3b5978fc4..1d37b2910 100644 --- a/packages/protocol/octobot_protocol_ts/models/CreateAccountConfiguration.ts +++ b/packages/protocol/octobot_protocol_ts/models/CreateAccountConfiguration.ts @@ -11,12 +11,16 @@ */ import { Account } from '../models/Account'; +import { UserActionType } from '../models/UserActionType'; /** * CreateAccountConfiguration */ export class CreateAccountConfiguration { - 'action_type': CreateAccountConfigurationActionTypeEnum; + /** + * account_create + */ + 'action_type': 'account_create'; 'configuration': Account; static readonly discriminator: string | undefined = undefined; @@ -27,7 +31,7 @@ export class CreateAccountConfiguration { { "name": "action_type", "baseName": "action_type", - "type": "CreateAccountConfigurationActionTypeEnum", + "type": "UserActionType", "format": "" }, { @@ -45,5 +49,4 @@ export class CreateAccountConfiguration { } } -export type CreateAccountConfigurationActionTypeEnum = 'account_create' diff --git a/packages/protocol/octobot_protocol_ts/models/CreateAutomationConfiguration.ts b/packages/protocol/octobot_protocol_ts/models/CreateAutomationConfiguration.ts index aeb62f265..05962053d 100644 --- a/packages/protocol/octobot_protocol_ts/models/CreateAutomationConfiguration.ts +++ b/packages/protocol/octobot_protocol_ts/models/CreateAutomationConfiguration.ts @@ -11,12 +11,16 @@ */ import { AutomationConfiguration } from '../models/AutomationConfiguration'; +import { UserActionType } from '../models/UserActionType'; /** * CreateAutomationConfiguration */ export class CreateAutomationConfiguration { - 'action_type': CreateAutomationConfigurationActionTypeEnum; + /** + * automation_create + */ + 'action_type': 'automation_create'; 'configuration': AutomationConfiguration; static readonly discriminator: string | undefined = undefined; @@ -27,7 +31,7 @@ export class CreateAutomationConfiguration { { "name": "action_type", "baseName": "action_type", - "type": "CreateAutomationConfigurationActionTypeEnum", + "type": "UserActionType", "format": "" }, { @@ -45,5 +49,4 @@ export class CreateAutomationConfiguration { } } -export type CreateAutomationConfigurationActionTypeEnum = 'automation_create' diff --git a/packages/protocol/octobot_protocol_ts/models/DCAConfiguration.ts b/packages/protocol/octobot_protocol_ts/models/DCAConfiguration.ts index 5c31c0c52..821d0fb60 100644 --- a/packages/protocol/octobot_protocol_ts/models/DCAConfiguration.ts +++ b/packages/protocol/octobot_protocol_ts/models/DCAConfiguration.ts @@ -10,6 +10,7 @@ * Do not edit the class manually. */ +import { ActionConfigurationType } from '../models/ActionConfigurationType'; import { EvaluatorConfiguration } from '../models/EvaluatorConfiguration'; import { TimeFrame } from '../models/TimeFrame'; @@ -17,7 +18,10 @@ import { TimeFrame } from '../models/TimeFrame'; * DCAConfiguration */ export class DCAConfiguration { - 'configuration_type': DCAConfigurationConfigurationTypeEnum; + /** + * dca + */ + 'configuration_type': 'dca'; 'symbols': Array; 'buy_orders_count': number; 'percent_amount_per_buy_order': number; @@ -38,7 +42,7 @@ export class DCAConfiguration { { "name": "configuration_type", "baseName": "configuration_type", - "type": "DCAConfigurationConfigurationTypeEnum", + "type": "ActionConfigurationType", "format": "" }, { @@ -116,6 +120,5 @@ export class DCAConfiguration { } } -export type DCAConfigurationConfigurationTypeEnum = 'DCAConfiguration' export type DCAConfigurationTriggerModeEnum = 'Maximum evaluators signals based' | 'Time based' diff --git a/packages/protocol/octobot_protocol_ts/models/DeleteAccountConfiguration.ts b/packages/protocol/octobot_protocol_ts/models/DeleteAccountConfiguration.ts index 61812a5a4..b3d7e8a20 100644 --- a/packages/protocol/octobot_protocol_ts/models/DeleteAccountConfiguration.ts +++ b/packages/protocol/octobot_protocol_ts/models/DeleteAccountConfiguration.ts @@ -10,12 +10,16 @@ * Do not edit the class manually. */ +import { UserActionType } from '../models/UserActionType'; /** * DeleteAccountConfiguration */ export class DeleteAccountConfiguration { - 'action_type': DeleteAccountConfigurationActionTypeEnum; + /** + * account_delete + */ + 'action_type': 'account_delete'; 'id': string; static readonly discriminator: string | undefined = undefined; @@ -26,7 +30,7 @@ export class DeleteAccountConfiguration { { "name": "action_type", "baseName": "action_type", - "type": "DeleteAccountConfigurationActionTypeEnum", + "type": "UserActionType", "format": "" }, { @@ -44,5 +48,4 @@ export class DeleteAccountConfiguration { } } -export type DeleteAccountConfigurationActionTypeEnum = 'account_delete' diff --git a/packages/protocol/octobot_protocol_ts/models/EMAMomentumEvaluatorConfiguration.ts b/packages/protocol/octobot_protocol_ts/models/EMAMomentumEvaluatorConfiguration.ts index 492566cb1..fc565bb7e 100644 --- a/packages/protocol/octobot_protocol_ts/models/EMAMomentumEvaluatorConfiguration.ts +++ b/packages/protocol/octobot_protocol_ts/models/EMAMomentumEvaluatorConfiguration.ts @@ -10,12 +10,16 @@ * Do not edit the class manually. */ +import { EvaluatorType } from '../models/EvaluatorType'; /** * EMAMomentumEvaluatorConfiguration */ export class EMAMomentumEvaluatorConfiguration { - 'configuration_type': EMAMomentumEvaluatorConfigurationConfigurationTypeEnum; + /** + * EMAMomentumEvaluator + */ + 'configuration_type': 'EMAMomentumEvaluator'; 'period_length': number; 'price_threshold_percent': number; 'reverse_signal': boolean; @@ -28,7 +32,7 @@ export class EMAMomentumEvaluatorConfiguration { { "name": "configuration_type", "baseName": "configuration_type", - "type": "EMAMomentumEvaluatorConfigurationConfigurationTypeEnum", + "type": "EvaluatorType", "format": "" }, { @@ -58,5 +62,4 @@ export class EMAMomentumEvaluatorConfiguration { } } -export type EMAMomentumEvaluatorConfigurationConfigurationTypeEnum = 'EMAMomentumEvaluator' diff --git a/packages/protocol/octobot_protocol_ts/models/EditAccountConfiguration.ts b/packages/protocol/octobot_protocol_ts/models/EditAccountConfiguration.ts index 9676b4d30..5ec550847 100644 --- a/packages/protocol/octobot_protocol_ts/models/EditAccountConfiguration.ts +++ b/packages/protocol/octobot_protocol_ts/models/EditAccountConfiguration.ts @@ -11,12 +11,16 @@ */ import { Account } from '../models/Account'; +import { UserActionType } from '../models/UserActionType'; /** * EditAccountConfiguration */ export class EditAccountConfiguration { - 'action_type': EditAccountConfigurationActionTypeEnum; + /** + * account_edit + */ + 'action_type': 'account_edit'; 'id': string; 'configuration'?: Account; @@ -28,7 +32,7 @@ export class EditAccountConfiguration { { "name": "action_type", "baseName": "action_type", - "type": "EditAccountConfigurationActionTypeEnum", + "type": "UserActionType", "format": "" }, { @@ -52,5 +56,4 @@ export class EditAccountConfiguration { } } -export type EditAccountConfigurationActionTypeEnum = 'account_edit' diff --git a/packages/protocol/octobot_protocol_ts/models/EditAutomationConfiguration.ts b/packages/protocol/octobot_protocol_ts/models/EditAutomationConfiguration.ts index 97ad1923e..dac3f3fd1 100644 --- a/packages/protocol/octobot_protocol_ts/models/EditAutomationConfiguration.ts +++ b/packages/protocol/octobot_protocol_ts/models/EditAutomationConfiguration.ts @@ -11,13 +11,17 @@ */ import { AutomationConfiguration } from '../models/AutomationConfiguration'; +import { UserActionType } from '../models/UserActionType'; /** * EditAutomationConfiguration */ export class EditAutomationConfiguration { 'id': string; - 'action_type': EditAutomationConfigurationActionTypeEnum; + /** + * automation_edit + */ + 'action_type': 'automation_edit'; 'configuration': AutomationConfiguration; static readonly discriminator: string | undefined = undefined; @@ -34,7 +38,7 @@ export class EditAutomationConfiguration { { "name": "action_type", "baseName": "action_type", - "type": "EditAutomationConfigurationActionTypeEnum", + "type": "UserActionType", "format": "" }, { @@ -52,5 +56,4 @@ export class EditAutomationConfiguration { } } -export type EditAutomationConfigurationActionTypeEnum = 'automation_edit' diff --git a/packages/protocol/octobot_protocol_ts/models/EvaluatorType.ts b/packages/protocol/octobot_protocol_ts/models/EvaluatorType.ts new file mode 100644 index 000000000..d58b6fe9f --- /dev/null +++ b/packages/protocol/octobot_protocol_ts/models/EvaluatorType.ts @@ -0,0 +1,17 @@ +/** + * OctoBot protocol types + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +/** +* EvaluatorType +*/ +export type EvaluatorType = 'RSIMomentumEvaluator' | 'EMAMomentumEvaluator' diff --git a/packages/protocol/octobot_protocol_ts/models/ExchangeAccount.ts b/packages/protocol/octobot_protocol_ts/models/ExchangeAccount.ts index 74e3c1384..97ea07a43 100644 --- a/packages/protocol/octobot_protocol_ts/models/ExchangeAccount.ts +++ b/packages/protocol/octobot_protocol_ts/models/ExchangeAccount.ts @@ -24,7 +24,7 @@ export class ExchangeAccount { /** * exchange */ - 'account_type': AccountType; + 'account_type': 'exchange'; 'trading_type': TradingType; 'exchange': string; 'remote_account_id': string; diff --git a/packages/protocol/octobot_protocol_ts/models/GenericAccount.ts b/packages/protocol/octobot_protocol_ts/models/GenericAccount.ts index adb236570..6e6a72891 100644 --- a/packages/protocol/octobot_protocol_ts/models/GenericAccount.ts +++ b/packages/protocol/octobot_protocol_ts/models/GenericAccount.ts @@ -20,7 +20,7 @@ export class GenericAccount { /** * generic */ - 'account_type': AccountType; + 'account_type': 'generic'; 'assets'?: Array; static readonly discriminator: string | undefined = undefined; diff --git a/packages/protocol/octobot_protocol_ts/models/GenericProcessConfiguration.ts b/packages/protocol/octobot_protocol_ts/models/GenericProcessConfiguration.ts index 89116aec8..c8dd13a72 100644 --- a/packages/protocol/octobot_protocol_ts/models/GenericProcessConfiguration.ts +++ b/packages/protocol/octobot_protocol_ts/models/GenericProcessConfiguration.ts @@ -10,12 +10,16 @@ * Do not edit the class manually. */ +import { ActionConfigurationType } from '../models/ActionConfigurationType'; /** * GenericProcessConfiguration */ export class GenericProcessConfiguration { - 'configuration_type': GenericProcessConfigurationConfigurationTypeEnum; + /** + * generic_process + */ + 'configuration_type': 'generic_process'; 'profile_data': any; static readonly discriminator: string | undefined = undefined; @@ -26,7 +30,7 @@ export class GenericProcessConfiguration { { "name": "configuration_type", "baseName": "configuration_type", - "type": "GenericProcessConfigurationConfigurationTypeEnum", + "type": "ActionConfigurationType", "format": "" }, { @@ -44,5 +48,4 @@ export class GenericProcessConfiguration { } } -export type GenericProcessConfigurationConfigurationTypeEnum = 'GenericProcessConfiguration' diff --git a/packages/protocol/octobot_protocol_ts/models/GenericWorkflowConfiguration.ts b/packages/protocol/octobot_protocol_ts/models/GenericWorkflowConfiguration.ts index d7549e367..d07b94333 100644 --- a/packages/protocol/octobot_protocol_ts/models/GenericWorkflowConfiguration.ts +++ b/packages/protocol/octobot_protocol_ts/models/GenericWorkflowConfiguration.ts @@ -11,12 +11,16 @@ */ import { Action } from '../models/Action'; +import { ActionConfigurationType } from '../models/ActionConfigurationType'; /** * GenericWorkflowConfiguration */ export class GenericWorkflowConfiguration { - 'configuration_type': GenericWorkflowConfigurationConfigurationTypeEnum; + /** + * generic_workflow + */ + 'configuration_type': 'generic_workflow'; 'actions': Array; static readonly discriminator: string | undefined = undefined; @@ -27,7 +31,7 @@ export class GenericWorkflowConfiguration { { "name": "configuration_type", "baseName": "configuration_type", - "type": "GenericWorkflowConfigurationConfigurationTypeEnum", + "type": "ActionConfigurationType", "format": "" }, { @@ -45,5 +49,4 @@ export class GenericWorkflowConfiguration { } } -export type GenericWorkflowConfigurationConfigurationTypeEnum = 'GenericWorkflowConfiguration' diff --git a/packages/protocol/octobot_protocol_ts/models/GridConfiguration.ts b/packages/protocol/octobot_protocol_ts/models/GridConfiguration.ts index 7a96b6526..551a4db82 100644 --- a/packages/protocol/octobot_protocol_ts/models/GridConfiguration.ts +++ b/packages/protocol/octobot_protocol_ts/models/GridConfiguration.ts @@ -10,12 +10,16 @@ * Do not edit the class manually. */ +import { ActionConfigurationType } from '../models/ActionConfigurationType'; /** * GridConfiguration */ export class GridConfiguration { - 'configuration_type': GridConfigurationConfigurationTypeEnum; + /** + * grid + */ + 'configuration_type': 'grid'; 'symbol': string; /** * Price difference between the closest buy and sell orders. Denominated in the quote currency (600 for a 600 USDT spread on BTC/USDT). @@ -45,7 +49,7 @@ export class GridConfiguration { { "name": "configuration_type", "baseName": "configuration_type", - "type": "GridConfigurationConfigurationTypeEnum", + "type": "ActionConfigurationType", "format": "" }, { @@ -105,5 +109,4 @@ export class GridConfiguration { } } -export type GridConfigurationConfigurationTypeEnum = 'GridConfiguration' diff --git a/packages/protocol/octobot_protocol_ts/models/IndexConfiguration.ts b/packages/protocol/octobot_protocol_ts/models/IndexConfiguration.ts index 41d0015cb..696aa7c46 100644 --- a/packages/protocol/octobot_protocol_ts/models/IndexConfiguration.ts +++ b/packages/protocol/octobot_protocol_ts/models/IndexConfiguration.ts @@ -10,13 +10,17 @@ * Do not edit the class manually. */ +import { ActionConfigurationType } from '../models/ActionConfigurationType'; import { IndexCoin } from '../models/IndexCoin'; /** * IndexConfiguration */ export class IndexConfiguration { - 'configuration_type': IndexConfigurationConfigurationTypeEnum; + /** + * index + */ + 'configuration_type': 'index'; 'coins': Array; 'rebalance_trigger_min_percent': number; @@ -28,7 +32,7 @@ export class IndexConfiguration { { "name": "configuration_type", "baseName": "configuration_type", - "type": "IndexConfigurationConfigurationTypeEnum", + "type": "ActionConfigurationType", "format": "" }, { @@ -52,5 +56,4 @@ export class IndexConfiguration { } } -export type IndexConfigurationConfigurationTypeEnum = 'IndexConfiguration' diff --git a/packages/protocol/octobot_protocol_ts/models/MarketMakingConfiguration.ts b/packages/protocol/octobot_protocol_ts/models/MarketMakingConfiguration.ts index 15407a014..82405b37f 100644 --- a/packages/protocol/octobot_protocol_ts/models/MarketMakingConfiguration.ts +++ b/packages/protocol/octobot_protocol_ts/models/MarketMakingConfiguration.ts @@ -10,13 +10,17 @@ * Do not edit the class manually. */ +import { ActionConfigurationType } from '../models/ActionConfigurationType'; import { MarketMakingSymbolConfiguration } from '../models/MarketMakingSymbolConfiguration'; /** * Per-symbol market making parameters. */ export class MarketMakingConfiguration { - 'configuration_type': MarketMakingConfigurationConfigurationTypeEnum; + /** + * market_making + */ + 'configuration_type': 'market_making'; 'pair_settings': Array; static readonly discriminator: string | undefined = undefined; @@ -27,7 +31,7 @@ export class MarketMakingConfiguration { { "name": "configuration_type", "baseName": "configuration_type", - "type": "MarketMakingConfigurationConfigurationTypeEnum", + "type": "ActionConfigurationType", "format": "" }, { @@ -45,5 +49,4 @@ export class MarketMakingConfiguration { } } -export type MarketMakingConfigurationConfigurationTypeEnum = 'MarketMakingConfiguration' diff --git a/packages/protocol/octobot_protocol_ts/models/RSIMomentumEvaluatorConfiguration.ts b/packages/protocol/octobot_protocol_ts/models/RSIMomentumEvaluatorConfiguration.ts index 84a0eac25..d2e325d06 100644 --- a/packages/protocol/octobot_protocol_ts/models/RSIMomentumEvaluatorConfiguration.ts +++ b/packages/protocol/octobot_protocol_ts/models/RSIMomentumEvaluatorConfiguration.ts @@ -10,12 +10,16 @@ * Do not edit the class manually. */ +import { EvaluatorType } from '../models/EvaluatorType'; /** * RSIMomentumEvaluatorConfiguration */ export class RSIMomentumEvaluatorConfiguration { - 'configuration_type': RSIMomentumEvaluatorConfigurationConfigurationTypeEnum; + /** + * RSIMomentumEvaluator + */ + 'configuration_type': 'RSIMomentumEvaluator'; 'period_length': number; 'short_threshold': number; 'long_threshold': number; @@ -28,7 +32,7 @@ export class RSIMomentumEvaluatorConfiguration { { "name": "configuration_type", "baseName": "configuration_type", - "type": "RSIMomentumEvaluatorConfigurationConfigurationTypeEnum", + "type": "EvaluatorType", "format": "" }, { @@ -58,5 +62,4 @@ export class RSIMomentumEvaluatorConfiguration { } } -export type RSIMomentumEvaluatorConfigurationConfigurationTypeEnum = 'RSIMomentumEvaluator' diff --git a/packages/protocol/octobot_protocol_ts/models/RefreshAccountsConfiguration.ts b/packages/protocol/octobot_protocol_ts/models/RefreshAccountsConfiguration.ts index ff290f321..eca2cfe12 100644 --- a/packages/protocol/octobot_protocol_ts/models/RefreshAccountsConfiguration.ts +++ b/packages/protocol/octobot_protocol_ts/models/RefreshAccountsConfiguration.ts @@ -10,12 +10,16 @@ * Do not edit the class manually. */ +import { UserActionType } from '../models/UserActionType'; /** * RefreshAccountsConfiguration */ export class RefreshAccountsConfiguration { - 'action_type': RefreshAccountsConfigurationActionTypeEnum; + /** + * accounts_refresh + */ + 'action_type': 'accounts_refresh'; 'account_ids'?: Array; static readonly discriminator: string | undefined = undefined; @@ -26,7 +30,7 @@ export class RefreshAccountsConfiguration { { "name": "action_type", "baseName": "action_type", - "type": "RefreshAccountsConfigurationActionTypeEnum", + "type": "UserActionType", "format": "" }, { @@ -44,5 +48,4 @@ export class RefreshAccountsConfiguration { } } -export type RefreshAccountsConfigurationActionTypeEnum = 'accounts_refresh' diff --git a/packages/protocol/octobot_protocol_ts/models/StopAutomationConfiguration.ts b/packages/protocol/octobot_protocol_ts/models/StopAutomationConfiguration.ts index 7d2c16f98..efd85ce33 100644 --- a/packages/protocol/octobot_protocol_ts/models/StopAutomationConfiguration.ts +++ b/packages/protocol/octobot_protocol_ts/models/StopAutomationConfiguration.ts @@ -10,13 +10,17 @@ * Do not edit the class manually. */ +import { UserActionType } from '../models/UserActionType'; /** * StopAutomationConfiguration */ export class StopAutomationConfiguration { 'id': string; - 'action_type': StopAutomationConfigurationActionTypeEnum; + /** + * automation_stop + */ + 'action_type': 'automation_stop'; static readonly discriminator: string | undefined = undefined; @@ -32,7 +36,7 @@ export class StopAutomationConfiguration { { "name": "action_type", "baseName": "action_type", - "type": "StopAutomationConfigurationActionTypeEnum", + "type": "UserActionType", "format": "" } ]; @@ -44,5 +48,4 @@ export class StopAutomationConfiguration { } } -export type StopAutomationConfigurationActionTypeEnum = 'automation_stop' diff --git a/packages/protocol/octobot_protocol_ts/models/UserActionType.ts b/packages/protocol/octobot_protocol_ts/models/UserActionType.ts new file mode 100644 index 000000000..ca9726060 --- /dev/null +++ b/packages/protocol/octobot_protocol_ts/models/UserActionType.ts @@ -0,0 +1,17 @@ +/** + * OctoBot protocol types + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +/** +* UserActionType +*/ +export type UserActionType = 'automation_create' | 'automation_edit' | 'automation_stop' | 'account_create' | 'account_edit' | 'account_delete' | 'accounts_refresh' diff --git a/packages/protocol/octobot_protocol_ts/models/index.ts b/packages/protocol/octobot_protocol_ts/models/index.ts index 2b738e16a..019bc01a3 100644 --- a/packages/protocol/octobot_protocol_ts/models/index.ts +++ b/packages/protocol/octobot_protocol_ts/models/index.ts @@ -9,6 +9,7 @@ export * from "./AccountStatusMessage"; export * from "./AccountType"; export * from "./AccountsState"; export * from "./Action"; +export * from "./ActionConfigurationType"; export * from "./ActiveOrderSwapStrategy"; export * from "./ActiveOrderSwapStrategyType"; export * from "./Asset"; @@ -32,6 +33,7 @@ export * from "./EditAccountConfiguration"; export * from "./EditAutomationConfiguration"; export * from "./EvaluatorConfiguration"; export * from "./EvaluatorConfigurationConfiguration"; +export * from "./EvaluatorType"; export * from "./ExchangeAccount"; export * from "./GenericAccount"; export * from "./GenericProcessConfiguration"; @@ -77,5 +79,6 @@ export * from "./UserActionConfiguration"; export * from "./UserActionResult"; export * from "./UserActionResultType"; export * from "./UserActionStatus"; +export * from "./UserActionType"; export * from "./UserActionsState"; export * from "./UserDataState"; diff --git a/packages/protocol/octobot_protocol_ts/package.json b/packages/protocol/octobot_protocol_ts/package.json index 652bdf631..342edf62c 100644 --- a/packages/protocol/octobot_protocol_ts/package.json +++ b/packages/protocol/octobot_protocol_ts/package.json @@ -1,6 +1,6 @@ { "name": "@drakkar.software/octobot-protocol", - "version": "0.2.0", + "version": "0.3.0", "description": "TypeScript types generated from OctoBot OpenAPI schema", "types": "./models/index.ts", "files": ["models"], diff --git a/packages/protocol/openapi.json b/packages/protocol/openapi.json index 8491fda36..e1f0db671 100644 --- a/packages/protocol/openapi.json +++ b/packages/protocol/openapi.json @@ -900,6 +900,19 @@ "1w" ] }, + "ActionConfigurationType": { + "description": "ActionConfigurationType", + "type": "string", + "enum": [ + "market_making", + "dca", + "index", + "grid", + "copy", + "generic_process", + "generic_workflow" + ] + }, "MarketMakingReferencePair": { "description": "Reference price source for market making (exchange pair, weighting, and optional formula).", "type": "object", @@ -1161,8 +1174,8 @@ ], "properties": { "configuration_type": { - "type": "string", - "enum": ["MarketMakingConfiguration"] + "$ref": "#/components/schemas/ActionConfigurationType", + "description": "market_making" }, "pair_settings": { "type": "array", @@ -1172,6 +1185,14 @@ } } }, + "EvaluatorType": { + "description": "EvaluatorType", + "type": "string", + "enum": [ + "RSIMomentumEvaluator", + "EMAMomentumEvaluator" + ] + }, "RSIMomentumEvaluatorConfiguration": { "description": "RSIMomentumEvaluatorConfiguration", "type": "object", @@ -1183,8 +1204,8 @@ ], "properties": { "configuration_type": { - "type": "string", - "enum": ["RSIMomentumEvaluator"] + "$ref": "#/components/schemas/EvaluatorType", + "description": "RSIMomentumEvaluator" }, "period_length": { "type": "number", @@ -1213,8 +1234,8 @@ ], "properties": { "configuration_type": { - "type": "string", - "enum": ["EMAMomentumEvaluator"] + "$ref": "#/components/schemas/EvaluatorType", + "description": "EMAMomentumEvaluator" }, "period_length": { "type": "number", @@ -1276,8 +1297,8 @@ ], "properties": { "configuration_type": { - "type": "string", - "enum": ["DCAConfiguration"] + "$ref": "#/components/schemas/ActionConfigurationType", + "description": "dca" }, "symbols": { "type": "array", @@ -1364,8 +1385,8 @@ ], "properties": { "configuration_type": { - "type": "string", - "enum": ["CopyConfiguration"] + "$ref": "#/components/schemas/ActionConfigurationType", + "description": "copy" }, "strategy_id": { "type": "string" @@ -1382,8 +1403,8 @@ ], "properties": { "configuration_type": { - "type": "string", - "enum": ["IndexConfiguration"] + "$ref": "#/components/schemas/ActionConfigurationType", + "description": "index" }, "coins": { "type": "array", @@ -1414,8 +1435,8 @@ ], "properties": { "configuration_type": { - "type": "string", - "enum": ["GridConfiguration"] + "$ref": "#/components/schemas/ActionConfigurationType", + "description": "grid" }, "symbol": { "type": "string" @@ -1463,8 +1484,8 @@ ], "properties": { "configuration_type": { - "type": "string", - "enum": ["GenericProcessConfiguration"] + "$ref": "#/components/schemas/ActionConfigurationType", + "description": "generic_process" }, "profile_data": { "type": "object" @@ -1480,8 +1501,8 @@ ], "properties": { "configuration_type": { - "type": "string", - "enum": ["GenericWorkflowConfiguration"] + "$ref": "#/components/schemas/ActionConfigurationType", + "description": "generic_workflow" }, "actions": { "type": "array", @@ -1567,8 +1588,8 @@ ], "properties": { "action_type": { - "type": "string", - "enum": ["automation_create"] + "$ref": "#/components/schemas/UserActionType", + "description": "automation_create" }, "configuration": { "$ref": "#/components/schemas/AutomationConfiguration" @@ -1588,8 +1609,8 @@ "type": "string" }, "action_type": { - "type": "string", - "enum": ["automation_edit"] + "$ref": "#/components/schemas/UserActionType", + "description": "automation_edit" }, "configuration": { "$ref": "#/components/schemas/AutomationConfiguration" @@ -1608,8 +1629,8 @@ "type": "string" }, "action_type": { - "type": "string", - "enum": ["automation_stop"] + "$ref": "#/components/schemas/UserActionType", + "description": "automation_stop" } } }, @@ -1622,8 +1643,8 @@ ], "properties": { "action_type": { - "type": "string", - "enum": ["account_create"] + "$ref": "#/components/schemas/UserActionType", + "description": "account_create" }, "configuration": { "$ref": "#/components/schemas/Account" @@ -1639,8 +1660,8 @@ ], "properties": { "action_type": { - "type": "string", - "enum": ["account_edit"] + "$ref": "#/components/schemas/UserActionType", + "description": "account_edit" }, "id": { "type": "string" @@ -1659,8 +1680,8 @@ ], "properties": { "action_type": { - "type": "string", - "enum": ["account_delete"] + "$ref": "#/components/schemas/UserActionType", + "description": "account_delete" }, "id": { "type": "string" @@ -1675,8 +1696,8 @@ ], "properties": { "action_type": { - "type": "string", - "enum": ["accounts_refresh"] + "$ref": "#/components/schemas/UserActionType", + "description": "accounts_refresh" }, "account_ids": { "type": "array", @@ -1686,6 +1707,19 @@ } } }, + "UserActionType": { + "description": "UserActionType", + "type": "string", + "enum": [ + "automation_create", + "automation_edit", + "automation_stop", + "account_create", + "account_edit", + "account_delete", + "accounts_refresh" + ] + }, "UserActionStatus": { "description": "UserActionStatus", "type": "string", diff --git a/packages/protocol/package.json b/packages/protocol/package.json index 7f65e35dd..fec9e5f3c 100644 --- a/packages/protocol/package.json +++ b/packages/protocol/package.json @@ -5,6 +5,9 @@ "description": "JSON Schema protocol types and codegen", "scripts": { "test:models": "python -m unittest discover -s test", + "test:postprocess": "node --test test/postprocess-typescript.test.mjs", + "test:postprocess:codegen": "node --test test/postprocess-typescript.codegen.test.mjs", + "test": "npm run test:postprocess && npm run test:postprocess:codegen && npm run test:models", "generate:python": "node scripts/clean-protocol-codegen-output.mjs python && openapi-generator-cli generate -i openapi.json -g python -o . -t openapi_generator_templates/python --global-property models,modelTests=true,supportingFiles=__init__.py --additional-properties packageName=octobot_protocol,useOneOfDiscriminatorLookup=true && npm run test:models", "gen": "npm run generate:python", "generate:typescript": "node scripts/clean-protocol-codegen-output.mjs typescript && openapi-generator-cli generate -i openapi.json -g typescript -o octobot_protocol_ts --global-property models --additional-properties modelPropertyNaming=original,stringEnums=true,supportsES6=true,useOneOfDiscriminatorLookup=true && node scripts/postprocess-protocol-typescript.mjs", diff --git a/packages/protocol/scripts/clean-protocol-codegen-output.mjs b/packages/protocol/scripts/clean-protocol-codegen-output.mjs index dcc36149b..f38caab68 100644 --- a/packages/protocol/scripts/clean-protocol-codegen-output.mjs +++ b/packages/protocol/scripts/clean-protocol-codegen-output.mjs @@ -27,6 +27,7 @@ const targets = { test: { dir: path.join(protocolDir, "test"), keep: new Set(), + keepPredicate: (name) => name.endsWith(".mjs"), }, }; @@ -38,15 +39,14 @@ function cleanTarget(key) { ); process.exit(1); } - const { dir, keep } = config; + const { dir, keep, keepPredicate } = config; if (!fs.existsSync(dir)) { fs.mkdirSync(dir, { recursive: true }); return; } for (const entryName of fs.readdirSync(dir)) { - if (keep.has(entryName)) { - continue; - } + if (keep.has(entryName)) continue; + if (keepPredicate && keepPredicate(entryName)) continue; fs.rmSync(path.join(dir, entryName), { recursive: true, force: true }); } } diff --git a/packages/protocol/scripts/postprocess-protocol-typescript.lib.mjs b/packages/protocol/scripts/postprocess-protocol-typescript.lib.mjs new file mode 100644 index 000000000..7900a0aa0 --- /dev/null +++ b/packages/protocol/scripts/postprocess-protocol-typescript.lib.mjs @@ -0,0 +1,49 @@ +const HTTP_IMPORT = /^import \{ HttpFile \} from '\.\.\/http\/http';\n/m; +const DATE_FIELD = /^(\s*'[^']+'?\??:\s*)Date\b/gm; +const ENUM_BLOCK = /export enum (\w+) \{([^}]+)\}/g; + +export function stripHttpImport(src) { + return src.replace(HTTP_IMPORT, ""); +} + +export function dateFieldsToString(src) { + return src.replace(DATE_FIELD, "$1string"); +} + +export function enumBlockToUnion(src) { + return src.replace(ENUM_BLOCK, (whole, name, body) => { + const union = body + .split(",") + .map((line) => { + const match = line.match(/=\s*'([^']*)'/); + return match ? `'${match[1]}'` : null; + }) + .filter(Boolean) + .join(" | "); + return union ? `export type ${name} = ${union}` : whole; + }); +} + +export function narrowDiscriminatorField(src, field, literal) { + const pattern = new RegExp(`(['\"]${field}['\"]\\??:\\s*)[A-Za-z_]\\w*(?=\\s*[;,])`, "g"); + return src.replace(pattern, `$1'${literal}'`); +} + +export function collectVariantNarrowings(openapi) { + const result = new Map(); + const schemas = openapi?.components?.schemas; + if (!schemas) return result; + for (const [name, schema] of Object.entries(schemas)) { + const props = schema?.properties; + if (!props) continue; + for (const [propName, prop] of Object.entries(props)) { + if (!prop || typeof prop !== "object") continue; + if (typeof prop.$ref !== "string") continue; + if (typeof prop.description !== "string") continue; + const list = result.get(name) ?? []; + list.push({ field: propName, literal: prop.description }); + result.set(name, list); + } + } + return result; +} diff --git a/packages/protocol/scripts/postprocess-protocol-typescript.mjs b/packages/protocol/scripts/postprocess-protocol-typescript.mjs index db05576b7..142f4ebb4 100644 --- a/packages/protocol/scripts/postprocess-protocol-typescript.mjs +++ b/packages/protocol/scripts/postprocess-protocol-typescript.mjs @@ -2,34 +2,26 @@ import fs from "node:fs"; import path from "node:path"; import url from "node:url"; +import { stripHttpImport, dateFieldsToString, enumBlockToUnion, narrowDiscriminatorField, collectVariantNarrowings } from "./postprocess-protocol-typescript.lib.mjs"; const protocolDir = path.dirname(path.dirname(url.fileURLToPath(import.meta.url))); const modelsDir = path.join(protocolDir, "octobot_protocol_ts", "models"); +const openapiPath = path.join(protocolDir, "openapi.json"); -const HTTP_IMPORT = /^import \{ HttpFile \} from '\.\.\/http\/http';\n/m; -const DATE_FIELD = /^(\s*'[^']+'?\??:\s*)Date\b/gm; -const ENUM_BLOCK = /export enum (\w+) \{([^}]+)\}/g; - -function enumBodyToUnion(body) { - return body - .split(",") - .map((line) => { - const match = line.match(/=\s*'([^']*)'/); - return match ? `'${match[1]}'` : null; - }) - .filter(Boolean) - .join(" | "); -} +const openapi = JSON.parse(fs.readFileSync(openapiPath, "utf8")); +const narrowings = collectVariantNarrowings(openapi); const files = fs.readdirSync(modelsDir).filter((f) => f.endsWith(".ts") && f !== "index.ts"); for (const file of files) { const full = path.join(modelsDir, file); const src = fs.readFileSync(full, "utf8"); - let next = src.replace(HTTP_IMPORT, "").replace(DATE_FIELD, "$1string"); - next = next.replace(ENUM_BLOCK, (whole, name, body) => { - const union = enumBodyToUnion(body); - return union ? `export type ${name} = ${union}` : whole; - }); + const variant = path.basename(file, ".ts"); + let next = stripHttpImport(src); + next = dateFieldsToString(next); + next = enumBlockToUnion(next); + for (const { field, literal } of narrowings.get(variant) ?? []) { + next = narrowDiscriminatorField(next, field, literal); + } if (next !== src) fs.writeFileSync(full, next); } diff --git a/packages/protocol/test/postprocess-typescript.codegen.test.mjs b/packages/protocol/test/postprocess-typescript.codegen.test.mjs new file mode 100644 index 000000000..8d837eefb --- /dev/null +++ b/packages/protocol/test/postprocess-typescript.codegen.test.mjs @@ -0,0 +1,61 @@ +import { test } from "node:test"; +import assert from "node:assert/strict"; +import fs from "node:fs"; +import path from "node:path"; +import url from "node:url"; + +const protocolDir = path.dirname(path.dirname(url.fileURLToPath(import.meta.url))); +const modelsDir = path.join(protocolDir, "octobot_protocol_ts", "models"); + +function read(name) { + return fs.readFileSync(path.join(modelsDir, name), "utf8"); +} + +const exists = fs.existsSync(path.join(modelsDir, "MarketMakingConfiguration.ts")); +const skip = !exists; +const reason = skip ? "skipped: codegen output missing — run `npm run generate:typescript` first" : undefined; + +test("real codegen output narrows MarketMakingConfiguration.configuration_type", { skip: reason }, () => { + const src = read("MarketMakingConfiguration.ts"); + assert.match(src, /'configuration_type':\s*'market_making'\s*;/); + assert.doesNotMatch(src, /'configuration_type'\s*:\s*ActionConfigurationType\b/); +}); + +test("real codegen output narrows DCAConfiguration.configuration_type", { skip: reason }, () => { + const src = read("DCAConfiguration.ts"); + assert.match(src, /'configuration_type':\s*'dca'\s*;/); +}); + +test("real codegen output narrows CreateAutomationConfiguration.action_type", { skip: reason }, () => { + const src = read("CreateAutomationConfiguration.ts"); + assert.match(src, /'action_type':\s*'automation_create'\s*;/); +}); + +test("real codegen output narrows RSIMomentumEvaluatorConfiguration.configuration_type", { skip: reason }, () => { + const src = read("RSIMomentumEvaluatorConfiguration.ts"); + assert.match(src, /'configuration_type':\s*'RSIMomentumEvaluator'\s*;/); +}); + +test("real codegen output keeps ActionConfigurationType as full union", { skip: reason }, () => { + const src = read("ActionConfigurationType.ts"); + assert.match(src, /'market_making'.*'dca'.*'index'.*'grid'.*'copy'.*'generic_process'.*'generic_workflow'/s); +}); + +test("real codegen output keeps UserActionType as full union", { skip: reason }, () => { + const src = read("UserActionType.ts"); + assert.match(src, /'automation_create'.*'accounts_refresh'/s); +}); + +test("real codegen output has no leftover HttpFile import", { skip: reason }, () => { + const files = fs.readdirSync(modelsDir).filter((f) => f.endsWith(".ts")); + for (const f of files) { + assert.doesNotMatch(read(f), /HttpFile/, `${f} still references HttpFile`); + } +}); + +test("real codegen output has no Date typings on properties", { skip: reason }, () => { + const files = fs.readdirSync(modelsDir).filter((f) => f.endsWith(".ts")); + for (const f of files) { + assert.doesNotMatch(read(f), /^\s*'[^']+'?\??:\s*Date\b/m, `${f} still has Date property typing`); + } +}); diff --git a/packages/protocol/test/postprocess-typescript.test.mjs b/packages/protocol/test/postprocess-typescript.test.mjs new file mode 100644 index 000000000..8f1cbb315 --- /dev/null +++ b/packages/protocol/test/postprocess-typescript.test.mjs @@ -0,0 +1,135 @@ +import { test } from "node:test"; +import assert from "node:assert/strict"; +import { + stripHttpImport, + dateFieldsToString, + enumBlockToUnion, + narrowDiscriminatorField, + collectVariantNarrowings, +} from "../scripts/postprocess-protocol-typescript.lib.mjs"; + +test("stripHttpImport removes the broken HttpFile import line", () => { + const src = "import { HttpFile } from '../http/http';\nexport type X = string;\n"; + assert.equal(stripHttpImport(src), "export type X = string;\n"); +}); + +test("stripHttpImport leaves source untouched when no HttpFile import", () => { + const src = "export type X = string;\n"; + assert.equal(stripHttpImport(src), src); +}); + +test("dateFieldsToString rewrites Date typings to string", () => { + const src = " 'created_at'?: Date;\n 'updated_at': Date;\n"; + assert.equal( + dateFieldsToString(src), + " 'created_at'?: string;\n 'updated_at': string;\n", + ); +}); + +test("dateFieldsToString leaves non-Date typings alone", () => { + const src = " 'count'?: number;\n"; + assert.equal(dateFieldsToString(src), src); +}); + +test("enumBlockToUnion converts string enums to literal unions", () => { + const src = "export enum Color {\n Red = 'red',\n Blue = 'blue'\n}"; + assert.equal(enumBlockToUnion(src), "export type Color = 'red' | 'blue'"); +}); + +test("enumBlockToUnion leaves non-string enums untouched", () => { + const src = "export enum Code {\n Ok = 200,\n NotFound = 404\n}"; + assert.equal(enumBlockToUnion(src), src); +}); + +test("narrowDiscriminatorField replaces shared enum reference with literal", () => { + const src = "export class MM {\n 'configuration_type'?: ActionConfigurationType;\n 'pair_settings': string[];\n}\n"; + const out = narrowDiscriminatorField(src, "configuration_type", "market_making"); + assert.match(out, /'configuration_type'\?:\s*'market_making';/); +}); + +test("narrowDiscriminatorField handles required field (no `?`)", () => { + const src = " 'action_type': UserActionType;\n"; + const out = narrowDiscriminatorField(src, "action_type", "automation_create"); + assert.equal(out, " 'action_type': 'automation_create';\n"); +}); + +test("narrowDiscriminatorField leaves attributeTypeMap string entries alone", () => { + const src = ` [\n {\n "name": "configuration_type",\n "baseName": "configuration_type",\n "type": "ActionConfigurationType",\n "format": ""\n }\n ];\n`; + const out = narrowDiscriminatorField(src, "configuration_type", "market_making"); + assert.equal(out, src); +}); + +test("narrowDiscriminatorField does not match other fields", () => { + const src = " 'name'?: string;\n 'configuration_type'?: ActionConfigurationType;\n"; + const out = narrowDiscriminatorField(src, "configuration_type", "market_making"); + assert.match(out, /'name'\?:\s*string;/); + assert.match(out, /'configuration_type'\?:\s*'market_making';/); +}); + +test("collectVariantNarrowings reads $ref+description properties", () => { + const openapi = { + components: { + schemas: { + ActionConfigurationType: { type: "string", enum: ["market_making", "dca"] }, + MarketMakingConfiguration: { + properties: { + configuration_type: { + $ref: "#/components/schemas/ActionConfigurationType", + description: "market_making", + }, + pair_settings: { type: "array" }, + }, + }, + DCAConfiguration: { + properties: { + configuration_type: { + $ref: "#/components/schemas/ActionConfigurationType", + description: "dca", + }, + }, + }, + }, + }, + }; + const result = collectVariantNarrowings(openapi); + assert.deepEqual(result.get("MarketMakingConfiguration"), [ + { field: "configuration_type", literal: "market_making" }, + ]); + assert.deepEqual(result.get("DCAConfiguration"), [ + { field: "configuration_type", literal: "dca" }, + ]); +}); + +test("collectVariantNarrowings ignores properties without description", () => { + const openapi = { + components: { + schemas: { + Foo: { + properties: { + kind: { $ref: "#/components/schemas/Kind" }, + }, + }, + }, + }, + }; + assert.equal(collectVariantNarrowings(openapi).size, 0); +}); + +test("collectVariantNarrowings ignores properties without $ref", () => { + const openapi = { + components: { + schemas: { + Foo: { + properties: { + kind: { type: "string", description: "some kind" }, + }, + }, + }, + }, + }; + assert.equal(collectVariantNarrowings(openapi).size, 0); +}); + +test("collectVariantNarrowings returns empty map on empty spec", () => { + assert.equal(collectVariantNarrowings({}).size, 0); +}); diff --git a/packages/protocol/test/test_action_configuration_type.py b/packages/protocol/test/test_action_configuration_type.py new file mode 100644 index 000000000..69e7f31bc --- /dev/null +++ b/packages/protocol/test/test_action_configuration_type.py @@ -0,0 +1,33 @@ +# coding: utf-8 + +""" + OctoBot protocol types + + No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + + The version of the OpenAPI document: 1.0.0 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +import unittest + +from octobot_protocol.models.action_configuration_type import ActionConfigurationType + +class TestActionConfigurationType(unittest.TestCase): + """ActionConfigurationType unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def testActionConfigurationType(self): + """Test ActionConfigurationType""" + # inst = ActionConfigurationType() + +if __name__ == '__main__': + unittest.main() diff --git a/packages/protocol/test/test_copy_configuration.py b/packages/protocol/test/test_copy_configuration.py index ffca6123a..9a6db7456 100644 --- a/packages/protocol/test/test_copy_configuration.py +++ b/packages/protocol/test/test_copy_configuration.py @@ -35,12 +35,12 @@ def make_instance(self, include_optional) -> CopyConfiguration: model = CopyConfiguration() if include_optional: return CopyConfiguration( - configuration_type = 'CopyConfiguration', + configuration_type = 'market_making', strategy_id = '' ) else: return CopyConfiguration( - configuration_type = 'CopyConfiguration', + configuration_type = 'market_making', strategy_id = '', ) """ diff --git a/packages/protocol/test/test_create_account_configuration.py b/packages/protocol/test/test_create_account_configuration.py index 30143d757..2941c42f6 100644 --- a/packages/protocol/test/test_create_account_configuration.py +++ b/packages/protocol/test/test_create_account_configuration.py @@ -35,7 +35,7 @@ def make_instance(self, include_optional) -> CreateAccountConfiguration: model = CreateAccountConfiguration() if include_optional: return CreateAccountConfiguration( - action_type = 'account_create', + action_type = 'automation_create', configuration = octobot_protocol.models.account.Account( id = '', name = '', @@ -50,7 +50,7 @@ def make_instance(self, include_optional) -> CreateAccountConfiguration: ) else: return CreateAccountConfiguration( - action_type = 'account_create', + action_type = 'automation_create', configuration = octobot_protocol.models.account.Account( id = '', name = '', diff --git a/packages/protocol/test/test_dca_configuration.py b/packages/protocol/test/test_dca_configuration.py index b789fc1a1..f42e70b03 100644 --- a/packages/protocol/test/test_dca_configuration.py +++ b/packages/protocol/test/test_dca_configuration.py @@ -35,7 +35,7 @@ def make_instance(self, include_optional) -> DCAConfiguration: model = DCAConfiguration() if include_optional: return DCAConfiguration( - configuration_type = 'DCAConfiguration', + configuration_type = 'market_making', symbols = [ '' ], @@ -57,7 +57,7 @@ def make_instance(self, include_optional) -> DCAConfiguration: ) else: return DCAConfiguration( - configuration_type = 'DCAConfiguration', + configuration_type = 'market_making', symbols = [ '' ], diff --git a/packages/protocol/test/test_delete_account_configuration.py b/packages/protocol/test/test_delete_account_configuration.py index f28eefaf8..0d0826384 100644 --- a/packages/protocol/test/test_delete_account_configuration.py +++ b/packages/protocol/test/test_delete_account_configuration.py @@ -35,12 +35,12 @@ def make_instance(self, include_optional) -> DeleteAccountConfiguration: model = DeleteAccountConfiguration() if include_optional: return DeleteAccountConfiguration( - action_type = 'account_delete', + action_type = 'automation_create', id = '' ) else: return DeleteAccountConfiguration( - action_type = 'account_delete', + action_type = 'automation_create', id = '', ) """ diff --git a/packages/protocol/test/test_edit_account_configuration.py b/packages/protocol/test/test_edit_account_configuration.py index e489ef039..15c7e80b1 100644 --- a/packages/protocol/test/test_edit_account_configuration.py +++ b/packages/protocol/test/test_edit_account_configuration.py @@ -35,7 +35,7 @@ def make_instance(self, include_optional) -> EditAccountConfiguration: model = EditAccountConfiguration() if include_optional: return EditAccountConfiguration( - action_type = 'account_edit', + action_type = 'automation_create', id = '', configuration = octobot_protocol.models.account.Account( id = '', @@ -51,7 +51,7 @@ def make_instance(self, include_optional) -> EditAccountConfiguration: ) else: return EditAccountConfiguration( - action_type = 'account_edit', + action_type = 'automation_create', id = '', ) """ diff --git a/packages/protocol/test/test_edit_automation_configuration.py b/packages/protocol/test/test_edit_automation_configuration.py index 638d90439..ac7e315b9 100644 --- a/packages/protocol/test/test_edit_automation_configuration.py +++ b/packages/protocol/test/test_edit_automation_configuration.py @@ -36,7 +36,7 @@ def make_instance(self, include_optional) -> EditAutomationConfiguration: if include_optional: return EditAutomationConfiguration( id = '', - action_type = 'automation_edit', + action_type = 'automation_create', configuration = octobot_protocol.models.automation_configuration.AutomationConfiguration( name = '', description = '', @@ -54,7 +54,7 @@ def make_instance(self, include_optional) -> EditAutomationConfiguration: else: return EditAutomationConfiguration( id = '', - action_type = 'automation_edit', + action_type = 'automation_create', configuration = octobot_protocol.models.automation_configuration.AutomationConfiguration( name = '', description = '', diff --git a/packages/protocol/test/test_ema_momentum_evaluator_configuration.py b/packages/protocol/test/test_ema_momentum_evaluator_configuration.py index bfd490089..2c7ab5262 100644 --- a/packages/protocol/test/test_ema_momentum_evaluator_configuration.py +++ b/packages/protocol/test/test_ema_momentum_evaluator_configuration.py @@ -35,14 +35,14 @@ def make_instance(self, include_optional) -> EMAMomentumEvaluatorConfiguration: model = EMAMomentumEvaluatorConfiguration() if include_optional: return EMAMomentumEvaluatorConfiguration( - configuration_type = 'EMAMomentumEvaluator', + configuration_type = 'RSIMomentumEvaluator', period_length = 1, price_threshold_percent = 0, reverse_signal = True ) else: return EMAMomentumEvaluatorConfiguration( - configuration_type = 'EMAMomentumEvaluator', + configuration_type = 'RSIMomentumEvaluator', period_length = 1, price_threshold_percent = 0, reverse_signal = True, diff --git a/packages/protocol/test/test_evaluator_configuration_configuration.py b/packages/protocol/test/test_evaluator_configuration_configuration.py index 7fbb4597c..7e9a39183 100644 --- a/packages/protocol/test/test_evaluator_configuration_configuration.py +++ b/packages/protocol/test/test_evaluator_configuration_configuration.py @@ -35,7 +35,7 @@ def make_instance(self, include_optional) -> EvaluatorConfigurationConfiguration model = EvaluatorConfigurationConfiguration() if include_optional: return EvaluatorConfigurationConfiguration( - configuration_type = 'EMAMomentumEvaluator', + configuration_type = 'RSIMomentumEvaluator', period_length = 1, short_threshold = 0, long_threshold = 0, @@ -44,7 +44,7 @@ def make_instance(self, include_optional) -> EvaluatorConfigurationConfiguration ) else: return EvaluatorConfigurationConfiguration( - configuration_type = 'EMAMomentumEvaluator', + configuration_type = 'RSIMomentumEvaluator', period_length = 1, short_threshold = 0, long_threshold = 0, diff --git a/packages/protocol/test/test_evaluator_type.py b/packages/protocol/test/test_evaluator_type.py new file mode 100644 index 000000000..cf083279f --- /dev/null +++ b/packages/protocol/test/test_evaluator_type.py @@ -0,0 +1,33 @@ +# coding: utf-8 + +""" + OctoBot protocol types + + No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + + The version of the OpenAPI document: 1.0.0 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +import unittest + +from octobot_protocol.models.evaluator_type import EvaluatorType + +class TestEvaluatorType(unittest.TestCase): + """EvaluatorType unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def testEvaluatorType(self): + """Test EvaluatorType""" + # inst = EvaluatorType() + +if __name__ == '__main__': + unittest.main() diff --git a/packages/protocol/test/test_generic_process_configuration.py b/packages/protocol/test/test_generic_process_configuration.py index d995edc04..eee48f8e1 100644 --- a/packages/protocol/test/test_generic_process_configuration.py +++ b/packages/protocol/test/test_generic_process_configuration.py @@ -35,12 +35,12 @@ def make_instance(self, include_optional) -> GenericProcessConfiguration: model = GenericProcessConfiguration() if include_optional: return GenericProcessConfiguration( - configuration_type = 'GenericProcessConfiguration', + configuration_type = 'market_making', profile_data = octobot_protocol.models.trigger_price_configuration.trigger_price_configuration() ) else: return GenericProcessConfiguration( - configuration_type = 'GenericProcessConfiguration', + configuration_type = 'market_making', profile_data = octobot_protocol.models.trigger_price_configuration.trigger_price_configuration(), ) """ diff --git a/packages/protocol/test/test_generic_workflow_configuration.py b/packages/protocol/test/test_generic_workflow_configuration.py index 8fa7ce3ce..c2fe9cd52 100644 --- a/packages/protocol/test/test_generic_workflow_configuration.py +++ b/packages/protocol/test/test_generic_workflow_configuration.py @@ -35,7 +35,7 @@ def make_instance(self, include_optional) -> GenericWorkflowConfiguration: model = GenericWorkflowConfiguration() if include_optional: return GenericWorkflowConfiguration( - configuration_type = 'GenericWorkflowConfiguration', + configuration_type = 'market_making', actions = [ octobot_protocol.models.action.Action( id = '', @@ -50,7 +50,7 @@ def make_instance(self, include_optional) -> GenericWorkflowConfiguration: ) else: return GenericWorkflowConfiguration( - configuration_type = 'GenericWorkflowConfiguration', + configuration_type = 'market_making', actions = [ octobot_protocol.models.action.Action( id = '', diff --git a/packages/protocol/test/test_grid_configuration.py b/packages/protocol/test/test_grid_configuration.py index b9b9a0353..7259fc719 100644 --- a/packages/protocol/test/test_grid_configuration.py +++ b/packages/protocol/test/test_grid_configuration.py @@ -35,7 +35,7 @@ def make_instance(self, include_optional) -> GridConfiguration: model = GridConfiguration() if include_optional: return GridConfiguration( - configuration_type = 'GridConfiguration', + configuration_type = 'market_making', symbol = '', spread = 0, increment = 0, @@ -47,7 +47,7 @@ def make_instance(self, include_optional) -> GridConfiguration: ) else: return GridConfiguration( - configuration_type = 'GridConfiguration', + configuration_type = 'market_making', symbol = '', spread = 0, increment = 0, diff --git a/packages/protocol/test/test_index_configuration.py b/packages/protocol/test/test_index_configuration.py index e504c9ea0..d2e125149 100644 --- a/packages/protocol/test/test_index_configuration.py +++ b/packages/protocol/test/test_index_configuration.py @@ -35,7 +35,7 @@ def make_instance(self, include_optional) -> IndexConfiguration: model = IndexConfiguration() if include_optional: return IndexConfiguration( - configuration_type = 'IndexConfiguration', + configuration_type = 'market_making', coins = [ octobot_protocol.models.index_coin.IndexCoin( name = '', @@ -45,7 +45,7 @@ def make_instance(self, include_optional) -> IndexConfiguration: ) else: return IndexConfiguration( - configuration_type = 'IndexConfiguration', + configuration_type = 'market_making', coins = [ octobot_protocol.models.index_coin.IndexCoin( name = '', diff --git a/packages/protocol/test/test_market_making_configuration.py b/packages/protocol/test/test_market_making_configuration.py index e6ee046f0..d64e51937 100644 --- a/packages/protocol/test/test_market_making_configuration.py +++ b/packages/protocol/test/test_market_making_configuration.py @@ -35,7 +35,7 @@ def make_instance(self, include_optional) -> MarketMakingConfiguration: model = MarketMakingConfiguration() if include_optional: return MarketMakingConfiguration( - configuration_type = 'MarketMakingConfiguration', + configuration_type = 'market_making', pair_settings = [ octobot_protocol.models.market_making_symbol_configuration.MarketMakingSymbolConfiguration( trading_pair = '', @@ -84,7 +84,7 @@ def make_instance(self, include_optional) -> MarketMakingConfiguration: ) else: return MarketMakingConfiguration( - configuration_type = 'MarketMakingConfiguration', + configuration_type = 'market_making', pair_settings = [ octobot_protocol.models.market_making_symbol_configuration.MarketMakingSymbolConfiguration( trading_pair = '', diff --git a/packages/protocol/test/test_refresh_accounts_configuration.py b/packages/protocol/test/test_refresh_accounts_configuration.py index 99a9aeb0b..c887f9e41 100644 --- a/packages/protocol/test/test_refresh_accounts_configuration.py +++ b/packages/protocol/test/test_refresh_accounts_configuration.py @@ -35,14 +35,14 @@ def make_instance(self, include_optional) -> RefreshAccountsConfiguration: model = RefreshAccountsConfiguration() if include_optional: return RefreshAccountsConfiguration( - action_type = 'accounts_refresh', + action_type = 'automation_create', account_ids = [ '' ] ) else: return RefreshAccountsConfiguration( - action_type = 'accounts_refresh', + action_type = 'automation_create', ) """ diff --git a/packages/protocol/test/test_stop_automation_configuration.py b/packages/protocol/test/test_stop_automation_configuration.py index ad9305e8f..1ac9be0a5 100644 --- a/packages/protocol/test/test_stop_automation_configuration.py +++ b/packages/protocol/test/test_stop_automation_configuration.py @@ -36,12 +36,12 @@ def make_instance(self, include_optional) -> StopAutomationConfiguration: if include_optional: return StopAutomationConfiguration( id = '', - action_type = 'automation_stop' + action_type = 'automation_create' ) else: return StopAutomationConfiguration( id = '', - action_type = 'automation_stop', + action_type = 'automation_create', ) """ diff --git a/packages/protocol/test/test_strategy_configuration.py b/packages/protocol/test/test_strategy_configuration.py index e294bcda3..0b298c3fa 100644 --- a/packages/protocol/test/test_strategy_configuration.py +++ b/packages/protocol/test/test_strategy_configuration.py @@ -35,7 +35,7 @@ def make_instance(self, include_optional) -> StrategyConfiguration: model = StrategyConfiguration() if include_optional: return StrategyConfiguration( - configuration_type = 'GenericWorkflowConfiguration', + configuration_type = 'market_making', pair_settings = [ octobot_protocol.models.market_making_symbol_configuration.MarketMakingSymbolConfiguration( trading_pair = '', @@ -129,7 +129,7 @@ def make_instance(self, include_optional) -> StrategyConfiguration: ) else: return StrategyConfiguration( - configuration_type = 'GenericWorkflowConfiguration', + configuration_type = 'market_making', pair_settings = [ octobot_protocol.models.market_making_symbol_configuration.MarketMakingSymbolConfiguration( trading_pair = '', diff --git a/packages/protocol/test/test_user_action_configuration.py b/packages/protocol/test/test_user_action_configuration.py index 60cb35c74..1bc2adf80 100644 --- a/packages/protocol/test/test_user_action_configuration.py +++ b/packages/protocol/test/test_user_action_configuration.py @@ -35,7 +35,7 @@ def make_instance(self, include_optional) -> UserActionConfiguration: model = UserActionConfiguration() if include_optional: return UserActionConfiguration( - action_type = 'accounts_refresh', + action_type = 'automation_create', configuration = octobot_protocol.models.account.Account( id = '', name = '', @@ -54,7 +54,7 @@ def make_instance(self, include_optional) -> UserActionConfiguration: ) else: return UserActionConfiguration( - action_type = 'accounts_refresh', + action_type = 'automation_create', configuration = octobot_protocol.models.account.Account( id = '', name = '', diff --git a/packages/protocol/test/test_user_action_type.py b/packages/protocol/test/test_user_action_type.py new file mode 100644 index 000000000..a8ef9775e --- /dev/null +++ b/packages/protocol/test/test_user_action_type.py @@ -0,0 +1,33 @@ +# coding: utf-8 + +""" + OctoBot protocol types + + No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + + The version of the OpenAPI document: 1.0.0 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +import unittest + +from octobot_protocol.models.user_action_type import UserActionType + +class TestUserActionType(unittest.TestCase): + """UserActionType unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def testUserActionType(self): + """Test UserActionType""" + # inst = UserActionType() + +if __name__ == '__main__': + unittest.main()