crypticorn 2.12.0__tar.gz → 2.13.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {crypticorn-2.12.0 → crypticorn-2.13.0}/CHANGELOG.md +16 -0
- {crypticorn-2.12.0/crypticorn.egg-info → crypticorn-2.13.0}/PKG-INFO +1 -1
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/common/errors.py +44 -4
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/common/exceptions.py +2 -1
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/metrics/client/api/exchanges_api.py +343 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/metrics/client/configuration.py +4 -2
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/metrics/client/models/api_error_identifier.py +8 -2
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/trade/client/api/api_keys_api.py +61 -19
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/trade/client/api/orders_api.py +3 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/trade/client/models/api_error_identifier.py +1 -1
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/trade/client/models/exchange_key.py +13 -6
- {crypticorn-2.12.0 → crypticorn-2.13.0/crypticorn.egg-info}/PKG-INFO +1 -1
- {crypticorn-2.12.0 → crypticorn-2.13.0}/pyproject.toml +1 -1
- {crypticorn-2.12.0 → crypticorn-2.13.0}/LICENSE +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/MANIFEST.in +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/README.md +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/__init__.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/__init__.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/client/__init__.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/client/api/__init__.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/client/api/admin_api.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/client/api/auth_api.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/client/api/service_api.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/client/api/user_api.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/client/api/wallet_api.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/client/api_client.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/client/api_response.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/client/configuration.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/client/exceptions.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/client/models/__init__.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/client/models/add_wallet200_response.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/client/models/add_wallet_request.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/client/models/authorize_user200_response.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/client/models/authorize_user200_response_auth.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/client/models/authorize_user_request.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/client/models/create_api_key200_response.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/client/models/create_api_key_request.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/client/models/create_user_request.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/client/models/get_api_keys200_response_inner.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/client/models/list_wallets200_response.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/client/models/list_wallets200_response_balances_inner.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/client/models/list_wallets200_response_balances_inner_sale_round.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/client/models/list_wallets200_response_balances_inner_wallet.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/client/models/list_wallets200_response_balances_inner_wallet_vesting_wallets_inner.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/client/models/list_wallets200_response_data_inner.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/client/models/list_wallets200_response_user_value.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/client/models/logout_default_response.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/client/models/logout_default_response_issues_inner.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/client/models/oauth_callback200_response.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/client/models/oauth_callback200_response_user.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/client/models/refresh_token_info200_response.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/client/models/refresh_token_info200_response_user_session.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/client/models/resend_verification_email_request.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/client/models/revoke_user_tokens_request.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/client/models/rotate_tokens200_response.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/client/models/token_info200_response.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/client/models/unlink_wallet_request.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/client/models/update_user_request.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/client/models/user_by_username200_response.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/client/models/user_reset_password_request.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/client/models/user_set_password_request.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/client/models/verify200_response.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/client/models/verify_email200_response.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/client/models/verify_email200_response_auth.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/client/models/verify_email200_response_auth_auth.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/client/models/verify_email_request.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/client/models/verify_wallet_request.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/client/models/wallet_verified200_response.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/client/models/whoami200_response.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/client/py.typed +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/client/rest.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/main.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/cli/__init__.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/cli/__main__.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/cli/init.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/cli/templates/Dockerfile +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/cli/templates/__init__.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/cli/templates/auth.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/cli/templates/dependabot.yml +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/cli/templates/merge-env.sh +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/cli/templates/ruff.yml +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/cli/version.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/client.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/common/__init__.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/common/ansi_colors.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/common/auth.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/common/decorators.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/common/enums.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/common/logging.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/common/middleware.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/common/mixins.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/common/openapi.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/common/pagination.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/common/router/admin_router.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/common/router/status_router.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/common/scopes.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/common/urls.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/common/utils.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/common/warnings.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/hive/__init__.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/hive/client/__init__.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/hive/client/api/__init__.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/hive/client/api/admin_api.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/hive/client/api/data_api.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/hive/client/api/models_api.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/hive/client/api/status_api.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/hive/client/api_client.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/hive/client/api_response.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/hive/client/configuration.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/hive/client/exceptions.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/hive/client/models/__init__.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/hive/client/models/api_error_identifier.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/hive/client/models/api_error_level.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/hive/client/models/api_error_type.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/hive/client/models/coin_info.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/hive/client/models/coins.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/hive/client/models/data_download_response.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/hive/client/models/data_info.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/hive/client/models/data_options.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/hive/client/models/data_version.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/hive/client/models/data_version_info.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/hive/client/models/download_links.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/hive/client/models/evaluation.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/hive/client/models/evaluation_response.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/hive/client/models/exception_detail.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/hive/client/models/feature_size.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/hive/client/models/log_level.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/hive/client/models/model_create.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/hive/client/models/model_read.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/hive/client/models/model_status.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/hive/client/models/model_update.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/hive/client/models/target.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/hive/client/models/target_info.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/hive/client/models/target_type.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/hive/client/py.typed +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/hive/client/rest.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/hive/main.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/hive/utils.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/klines/__init__.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/klines/client/__init__.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/klines/client/api/__init__.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/klines/client/api/admin_api.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/klines/client/api/change_in_timeframe_api.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/klines/client/api/funding_rates_api.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/klines/client/api/ohlcv_data_api.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/klines/client/api/status_api.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/klines/client/api/symbols_api.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/klines/client/api/udf_api.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/klines/client/api_client.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/klines/client/api_response.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/klines/client/configuration.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/klines/client/exceptions.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/klines/client/models/__init__.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/klines/client/models/api_error_identifier.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/klines/client/models/api_error_level.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/klines/client/models/api_error_type.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/klines/client/models/change_in_timeframe.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/klines/client/models/exception_detail.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/klines/client/models/funding_rate.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/klines/client/models/funding_rate_response.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/klines/client/models/internal_exchange.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/klines/client/models/log_level.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/klines/client/models/market_type.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/klines/client/models/ohlcv.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/klines/client/models/resolution.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/klines/client/models/search_symbol.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/klines/client/models/sort_direction.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/klines/client/models/symbol_group.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/klines/client/models/symbol_info.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/klines/client/models/symbol_type.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/klines/client/models/timeframe.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/klines/client/models/udf_config.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/klines/client/py.typed +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/klines/client/rest.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/klines/main.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/metrics/__init__.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/metrics/client/__init__.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/metrics/client/api/__init__.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/metrics/client/api/admin_api.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/metrics/client/api/indicators_api.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/metrics/client/api/logs_api.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/metrics/client/api/marketcap_api.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/metrics/client/api/markets_api.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/metrics/client/api/quote_currencies_api.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/metrics/client/api/status_api.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/metrics/client/api/tokens_api.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/metrics/client/api_client.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/metrics/client/api_response.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/metrics/client/exceptions.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/metrics/client/models/__init__.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/metrics/client/models/api_error_level.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/metrics/client/models/api_error_type.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/metrics/client/models/exception_detail.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/metrics/client/models/exchange_availability.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/metrics/client/models/exchange_mapping.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/metrics/client/models/internal_exchange.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/metrics/client/models/log_level.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/metrics/client/models/market_type.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/metrics/client/models/marketcap_ranking.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/metrics/client/models/marketcap_symbol_ranking.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/metrics/client/models/ohlcv.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/metrics/client/models/severity.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/metrics/client/models/time_interval.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/metrics/client/models/trading_status.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/metrics/client/py.typed +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/metrics/client/rest.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/metrics/main.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/pay/__init__.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/pay/client/__init__.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/pay/client/api/__init__.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/pay/client/api/admin_api.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/pay/client/api/now_payments_api.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/pay/client/api/payments_api.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/pay/client/api/products_api.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/pay/client/api/status_api.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/pay/client/api_client.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/pay/client/api_response.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/pay/client/configuration.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/pay/client/exceptions.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/pay/client/models/__init__.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/pay/client/models/api_error_identifier.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/pay/client/models/api_error_level.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/pay/client/models/api_error_type.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/pay/client/models/exception_detail.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/pay/client/models/log_level.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/pay/client/models/now_create_invoice_req.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/pay/client/models/now_create_invoice_res.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/pay/client/models/payment.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/pay/client/models/payment_status.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/pay/client/models/product.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/pay/client/models/product_create.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/pay/client/models/product_update.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/pay/client/models/provider.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/pay/client/models/scope.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/pay/client/models/subscription.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/pay/client/py.typed +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/pay/client/rest.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/pay/main.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/trade/__init__.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/trade/client/__init__.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/trade/client/api/__init__.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/trade/client/api/admin_api.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/trade/client/api/bots_api.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/trade/client/api/exchanges_api.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/trade/client/api/futures_trading_panel_api.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/trade/client/api/notifications_api.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/trade/client/api/status_api.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/trade/client/api/strategies_api.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/trade/client/api/trading_actions_api.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/trade/client/api_client.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/trade/client/api_response.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/trade/client/configuration.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/trade/client/exceptions.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/trade/client/models/__init__.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/trade/client/models/api_error_level.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/trade/client/models/api_error_type.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/trade/client/models/bot.py +5 -5
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/trade/client/models/bot_create.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/trade/client/models/bot_status.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/trade/client/models/bot_update.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/trade/client/models/exception_detail.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/trade/client/models/exchange.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/trade/client/models/exchange_key_create.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/trade/client/models/exchange_key_update.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/trade/client/models/execution_ids.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/trade/client/models/futures_balance.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/trade/client/models/futures_trading_action.py +5 -5
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/trade/client/models/futures_trading_action_create.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/trade/client/models/log_level.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/trade/client/models/margin_mode.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/trade/client/models/market_type.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/trade/client/models/notification.py +5 -5
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/trade/client/models/notification_create.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/trade/client/models/notification_update.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/trade/client/models/order.py +5 -5
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/trade/client/models/order_status.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/trade/client/models/post_futures_action.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/trade/client/models/spot_trading_action_create.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/trade/client/models/strategy.py +5 -5
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/trade/client/models/strategy_create.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/trade/client/models/strategy_exchange_info.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/trade/client/models/strategy_update.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/trade/client/models/tpsl.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/trade/client/models/trading_action_type.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/trade/client/py.typed +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/trade/client/rest.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/trade/main.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn.egg-info/SOURCES.txt +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn.egg-info/dependency_links.txt +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn.egg-info/entry_points.txt +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn.egg-info/requires.txt +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn.egg-info/top_level.txt +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/requirements/dev.txt +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/requirements/extra.txt +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/requirements/main.txt +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/requirements/test.txt +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/setup.cfg +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/static/favicon.svg +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/static/logo.svg +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/static/pip-structure.drawio +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/static/pip-structure.svg +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/tests/test_auth_client.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/tests/test_config.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/tests/test_enums.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/tests/test_errors.py +0 -0
- {crypticorn-2.12.0 → crypticorn-2.13.0}/tests/test_pagination.py +0 -0
@@ -1,6 +1,22 @@
|
|
1
1
|
# CHANGELOG
|
2
2
|
|
3
3
|
|
4
|
+
## v2.13.0 (2025-05-23)
|
5
|
+
|
6
|
+
### Features
|
7
|
+
|
8
|
+
- New endpoint in metrics client (get symbol mappings for any pair)
|
9
|
+
([`a1f3b6a`](https://github.com/crypticorn-ai/api-client/commit/a1f3b6a31df3d8e6c148fa087d6ab158842c82dc))
|
10
|
+
|
11
|
+
|
12
|
+
## v2.12.1 (2025-05-22)
|
13
|
+
|
14
|
+
### Bug Fixes
|
15
|
+
|
16
|
+
- New error codes
|
17
|
+
([`d499bc8`](https://github.com/crypticorn-ai/api-client/commit/d499bc853c695da19aa5671ff786c27dcdd52fbf))
|
18
|
+
|
19
|
+
|
4
20
|
## v2.12.0 (2025-05-21)
|
5
21
|
|
6
22
|
### Features
|
@@ -33,6 +33,7 @@ class ApiErrorIdentifier(StrEnum):
|
|
33
33
|
BOT_DISABLED = "bot_disabled"
|
34
34
|
BOT_STOPPING_COMPLETED = "bot_stopping_completed"
|
35
35
|
BOT_STOPPING_STARTED = "bot_stopping_started"
|
36
|
+
CANCELLED_OPEN_ORDER = "cancelled_open_order"
|
36
37
|
CLIENT_ORDER_ID_REPEATED = "client_order_id_already_exists"
|
37
38
|
CONTENT_TYPE_ERROR = "invalid_content_type"
|
38
39
|
DELETE_BOT_ERROR = "delete_bot_error"
|
@@ -51,6 +52,7 @@ class ApiErrorIdentifier(StrEnum):
|
|
51
52
|
EXCHANGE_USER_FROZEN = "exchange_user_account_is_frozen"
|
52
53
|
EXPIRED_API_KEY = "api_key_expired"
|
53
54
|
EXPIRED_BEARER = "bearer_token_expired"
|
55
|
+
FAILED_OPEN_ORDER = "open_order_expired"
|
54
56
|
FORBIDDEN = "forbidden"
|
55
57
|
HEDGE_MODE_NOT_ACTIVE = "hedge_mode_not_active"
|
56
58
|
HTTP_ERROR = "http_request_error"
|
@@ -84,6 +86,8 @@ class ApiErrorIdentifier(StrEnum):
|
|
84
86
|
ORDER_PRICE_INVALID = "order_price_is_invalid"
|
85
87
|
ORDER_SIZE_TOO_LARGE = "order_size_too_large"
|
86
88
|
ORDER_SIZE_TOO_SMALL = "order_size_too_small"
|
89
|
+
ORPHAN_OPEN_ORDER = "orphan_open_order"
|
90
|
+
ORPHAN_CLOSE_ORDER = "orphan_close_order"
|
87
91
|
POSITION_LIMIT_EXCEEDED = "position_limit_exceeded"
|
88
92
|
POSITION_NOT_FOUND = "position_does_not_exist"
|
89
93
|
POSITION_SUSPENDED = "position_opening_temporarily_suspended"
|
@@ -99,7 +103,7 @@ class ApiErrorIdentifier(StrEnum):
|
|
99
103
|
SUCCESS = "success"
|
100
104
|
SYMBOL_NOT_FOUND = "symbol_does_not_exist"
|
101
105
|
TRADING_ACTION_EXPIRED = "trading_action_expired"
|
102
|
-
|
106
|
+
TRADING_ACTION_SKIPPED_BOT_STOPPING = "TRADING_ACTION_SKIPPED_BOT_STOPPING"
|
103
107
|
TRADING_LOCKED = "trading_has_been_locked"
|
104
108
|
TRADING_SUSPENDED = "trading_is_suspended"
|
105
109
|
UNKNOWN_ERROR = "unknown_error_occurred"
|
@@ -158,6 +162,11 @@ class ApiError(Enum, metaclass=ApiErrorFallback):
|
|
158
162
|
ApiErrorType.NO_ERROR,
|
159
163
|
ApiErrorLevel.INFO,
|
160
164
|
)
|
165
|
+
CANCELLED_OPEN_ORDER = (
|
166
|
+
ApiErrorIdentifier.CANCELLED_OPEN_ORDER,
|
167
|
+
ApiErrorType.NO_ERROR,
|
168
|
+
ApiErrorLevel.INFO,
|
169
|
+
)
|
161
170
|
CLIENT_ORDER_ID_REPEATED = (
|
162
171
|
ApiErrorIdentifier.CLIENT_ORDER_ID_REPEATED,
|
163
172
|
ApiErrorType.SERVER_ERROR,
|
@@ -248,6 +257,11 @@ class ApiError(Enum, metaclass=ApiErrorFallback):
|
|
248
257
|
ApiErrorType.USER_ERROR,
|
249
258
|
ApiErrorLevel.ERROR,
|
250
259
|
)
|
260
|
+
FAILED_OPEN_ORDER = (
|
261
|
+
ApiErrorIdentifier.FAILED_OPEN_ORDER,
|
262
|
+
ApiErrorType.NO_ERROR,
|
263
|
+
ApiErrorLevel.INFO,
|
264
|
+
)
|
251
265
|
FORBIDDEN = (
|
252
266
|
ApiErrorIdentifier.FORBIDDEN,
|
253
267
|
ApiErrorType.USER_ERROR,
|
@@ -413,6 +427,16 @@ class ApiError(Enum, metaclass=ApiErrorFallback):
|
|
413
427
|
ApiErrorType.USER_ERROR,
|
414
428
|
ApiErrorLevel.WARNING,
|
415
429
|
)
|
430
|
+
ORPHAN_OPEN_ORDER = (
|
431
|
+
ApiErrorIdentifier.ORPHAN_OPEN_ORDER,
|
432
|
+
ApiErrorType.SERVER_ERROR,
|
433
|
+
ApiErrorLevel.INFO,
|
434
|
+
)
|
435
|
+
ORPHAN_CLOSE_ORDER = (
|
436
|
+
ApiErrorIdentifier.ORPHAN_CLOSE_ORDER,
|
437
|
+
ApiErrorType.NO_ERROR,
|
438
|
+
ApiErrorLevel.INFO,
|
439
|
+
)
|
416
440
|
POSITION_LIMIT_EXCEEDED = (
|
417
441
|
ApiErrorIdentifier.POSITION_LIMIT_EXCEEDED,
|
418
442
|
ApiErrorType.USER_ERROR,
|
@@ -484,8 +508,8 @@ class ApiError(Enum, metaclass=ApiErrorFallback):
|
|
484
508
|
ApiErrorType.NO_ERROR,
|
485
509
|
ApiErrorLevel.INFO,
|
486
510
|
)
|
487
|
-
|
488
|
-
ApiErrorIdentifier.
|
511
|
+
TRADING_ACTION_SKIPPED_BOT_STOPPING = (
|
512
|
+
ApiErrorIdentifier.TRADING_ACTION_SKIPPED_BOT_STOPPING,
|
489
513
|
ApiErrorType.NO_ERROR,
|
490
514
|
ApiErrorLevel.INFO,
|
491
515
|
)
|
@@ -797,6 +821,14 @@ class StatusCodeMapper:
|
|
797
821
|
status.HTTP_400_BAD_REQUEST,
|
798
822
|
status.WS_1008_POLICY_VIOLATION,
|
799
823
|
),
|
824
|
+
ApiError.ORPHAN_OPEN_ORDER: (
|
825
|
+
status.HTTP_400_BAD_REQUEST,
|
826
|
+
status.WS_1008_POLICY_VIOLATION,
|
827
|
+
),
|
828
|
+
ApiError.ORPHAN_CLOSE_ORDER: (
|
829
|
+
status.HTTP_400_BAD_REQUEST,
|
830
|
+
status.WS_1008_POLICY_VIOLATION,
|
831
|
+
),
|
800
832
|
ApiError.POSITION_LIMIT_EXCEEDED: (
|
801
833
|
status.HTTP_400_BAD_REQUEST,
|
802
834
|
status.WS_1008_POLICY_VIOLATION,
|
@@ -825,7 +857,7 @@ class StatusCodeMapper:
|
|
825
857
|
status.HTTP_400_BAD_REQUEST,
|
826
858
|
status.WS_1008_POLICY_VIOLATION,
|
827
859
|
),
|
828
|
-
ApiError.
|
860
|
+
ApiError.TRADING_ACTION_SKIPPED_BOT_STOPPING: (
|
829
861
|
status.HTTP_400_BAD_REQUEST,
|
830
862
|
status.WS_1008_POLICY_VIOLATION,
|
831
863
|
),
|
@@ -848,6 +880,14 @@ class StatusCodeMapper:
|
|
848
880
|
status.HTTP_204_NO_CONTENT,
|
849
881
|
status.WS_1000_NORMAL_CLOSURE,
|
850
882
|
),
|
883
|
+
ApiError.CANCELLED_OPEN_ORDER: (
|
884
|
+
status.HTTP_200_OK,
|
885
|
+
status.WS_1008_POLICY_VIOLATION,
|
886
|
+
),
|
887
|
+
ApiError.FAILED_OPEN_ORDER: (
|
888
|
+
status.HTTP_200_OK,
|
889
|
+
status.WS_1008_POLICY_VIOLATION,
|
890
|
+
),
|
851
891
|
# Miscellaneous
|
852
892
|
ApiError.OBJECT_LOCKED: (
|
853
893
|
status.HTTP_423_LOCKED,
|
@@ -155,6 +155,7 @@ exception_response = {
|
|
155
155
|
"default": {"model": ExceptionDetail, "description": "Error response"}
|
156
156
|
}
|
157
157
|
|
158
|
+
|
158
159
|
class CrypticornException(Exception):
|
159
160
|
"""A custom exception class for Crypticorn."""
|
160
161
|
|
@@ -163,4 +164,4 @@ class CrypticornException(Exception):
|
|
163
164
|
self.error = error
|
164
165
|
|
165
166
|
def __str__(self):
|
166
|
-
return f"{self.error.identifier}: {self.message}"
|
167
|
+
return f"{self.error.identifier}: {self.message}"
|
@@ -989,3 +989,346 @@ class ExchangesApi:
|
|
989
989
|
_host=_host,
|
990
990
|
_request_auth=_request_auth,
|
991
991
|
)
|
992
|
+
|
993
|
+
@validate_call
|
994
|
+
async def get_exchange_mappings_for_pair(
|
995
|
+
self,
|
996
|
+
pair: Annotated[
|
997
|
+
StrictStr,
|
998
|
+
Field(
|
999
|
+
description="Trading pair to find mappings for (e.g., 'BTCUSDT', '1000SHIBUSDT')"
|
1000
|
+
),
|
1001
|
+
],
|
1002
|
+
market: Annotated[
|
1003
|
+
Optional[MarketType],
|
1004
|
+
Field(description="Market type (spot or futures). Defaults to futures."),
|
1005
|
+
] = None,
|
1006
|
+
exchange: Annotated[
|
1007
|
+
Optional[InternalExchange],
|
1008
|
+
Field(
|
1009
|
+
description="Optional exchange name to filter by. If not provided, returns all exchanges."
|
1010
|
+
),
|
1011
|
+
] = None,
|
1012
|
+
quote_currency: Annotated[
|
1013
|
+
Optional[StrictStr],
|
1014
|
+
Field(description="Quote currency to filter by. Defaults to USDT."),
|
1015
|
+
] = None,
|
1016
|
+
_request_timeout: Union[
|
1017
|
+
None,
|
1018
|
+
Annotated[StrictFloat, Field(gt=0)],
|
1019
|
+
Tuple[
|
1020
|
+
Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]
|
1021
|
+
],
|
1022
|
+
] = None,
|
1023
|
+
_request_auth: Optional[Dict[StrictStr, Any]] = None,
|
1024
|
+
_content_type: Optional[StrictStr] = None,
|
1025
|
+
_headers: Optional[Dict[StrictStr, Any]] = None,
|
1026
|
+
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
1027
|
+
) -> List[ExchangeMapping]:
|
1028
|
+
"""Get Exchange Mappings For Pair
|
1029
|
+
|
1030
|
+
Get exchange mappings for a specific trading pair across all exchanges or a specific exchange. This endpoint finds the underlying symbol for a given pair and returns all perpetual contracts (excluding quarterly/dated contracts) with the specified quote currency.
|
1031
|
+
|
1032
|
+
:param pair: Trading pair to find mappings for (e.g., 'BTCUSDT', '1000SHIBUSDT') (required)
|
1033
|
+
:type pair: str
|
1034
|
+
:param market: Market type (spot or futures). Defaults to futures.
|
1035
|
+
:type market: MarketType
|
1036
|
+
:param exchange: Optional exchange name to filter by. If not provided, returns all exchanges.
|
1037
|
+
:type exchange: InternalExchange
|
1038
|
+
:param quote_currency: Quote currency to filter by. Defaults to USDT.
|
1039
|
+
:type quote_currency: str
|
1040
|
+
:param _request_timeout: timeout setting for this request. If one
|
1041
|
+
number provided, it will be total request
|
1042
|
+
timeout. It can also be a pair (tuple) of
|
1043
|
+
(connection, read) timeouts.
|
1044
|
+
:type _request_timeout: int, tuple(int, int), optional
|
1045
|
+
:param _request_auth: set to override the auth_settings for an a single
|
1046
|
+
request; this effectively ignores the
|
1047
|
+
authentication in the spec for a single request.
|
1048
|
+
:type _request_auth: dict, optional
|
1049
|
+
:param _content_type: force content-type for the request.
|
1050
|
+
:type _content_type: str, Optional
|
1051
|
+
:param _headers: set to override the headers for a single
|
1052
|
+
request; this effectively ignores the headers
|
1053
|
+
in the spec for a single request.
|
1054
|
+
:type _headers: dict, optional
|
1055
|
+
:param _host_index: set to override the host_index for a single
|
1056
|
+
request; this effectively ignores the host_index
|
1057
|
+
in the spec for a single request.
|
1058
|
+
:type _host_index: int, optional
|
1059
|
+
:return: Returns the result object.
|
1060
|
+
""" # noqa: E501
|
1061
|
+
|
1062
|
+
_param = self._get_exchange_mappings_for_pair_serialize(
|
1063
|
+
pair=pair,
|
1064
|
+
market=market,
|
1065
|
+
exchange=exchange,
|
1066
|
+
quote_currency=quote_currency,
|
1067
|
+
_request_auth=_request_auth,
|
1068
|
+
_content_type=_content_type,
|
1069
|
+
_headers=_headers,
|
1070
|
+
_host_index=_host_index,
|
1071
|
+
)
|
1072
|
+
|
1073
|
+
_response_types_map: Dict[str, Optional[str]] = {
|
1074
|
+
"200": "List[ExchangeMapping]",
|
1075
|
+
}
|
1076
|
+
response_data = await self.api_client.call_api(
|
1077
|
+
*_param, _request_timeout=_request_timeout
|
1078
|
+
)
|
1079
|
+
await response_data.read()
|
1080
|
+
return self.api_client.response_deserialize(
|
1081
|
+
response_data=response_data,
|
1082
|
+
response_types_map=_response_types_map,
|
1083
|
+
).data
|
1084
|
+
|
1085
|
+
@validate_call
|
1086
|
+
async def get_exchange_mappings_for_pair_with_http_info(
|
1087
|
+
self,
|
1088
|
+
pair: Annotated[
|
1089
|
+
StrictStr,
|
1090
|
+
Field(
|
1091
|
+
description="Trading pair to find mappings for (e.g., 'BTCUSDT', '1000SHIBUSDT')"
|
1092
|
+
),
|
1093
|
+
],
|
1094
|
+
market: Annotated[
|
1095
|
+
Optional[MarketType],
|
1096
|
+
Field(description="Market type (spot or futures). Defaults to futures."),
|
1097
|
+
] = None,
|
1098
|
+
exchange: Annotated[
|
1099
|
+
Optional[InternalExchange],
|
1100
|
+
Field(
|
1101
|
+
description="Optional exchange name to filter by. If not provided, returns all exchanges."
|
1102
|
+
),
|
1103
|
+
] = None,
|
1104
|
+
quote_currency: Annotated[
|
1105
|
+
Optional[StrictStr],
|
1106
|
+
Field(description="Quote currency to filter by. Defaults to USDT."),
|
1107
|
+
] = None,
|
1108
|
+
_request_timeout: Union[
|
1109
|
+
None,
|
1110
|
+
Annotated[StrictFloat, Field(gt=0)],
|
1111
|
+
Tuple[
|
1112
|
+
Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]
|
1113
|
+
],
|
1114
|
+
] = None,
|
1115
|
+
_request_auth: Optional[Dict[StrictStr, Any]] = None,
|
1116
|
+
_content_type: Optional[StrictStr] = None,
|
1117
|
+
_headers: Optional[Dict[StrictStr, Any]] = None,
|
1118
|
+
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
1119
|
+
) -> ApiResponse[List[ExchangeMapping]]:
|
1120
|
+
"""Get Exchange Mappings For Pair
|
1121
|
+
|
1122
|
+
Get exchange mappings for a specific trading pair across all exchanges or a specific exchange. This endpoint finds the underlying symbol for a given pair and returns all perpetual contracts (excluding quarterly/dated contracts) with the specified quote currency.
|
1123
|
+
|
1124
|
+
:param pair: Trading pair to find mappings for (e.g., 'BTCUSDT', '1000SHIBUSDT') (required)
|
1125
|
+
:type pair: str
|
1126
|
+
:param market: Market type (spot or futures). Defaults to futures.
|
1127
|
+
:type market: MarketType
|
1128
|
+
:param exchange: Optional exchange name to filter by. If not provided, returns all exchanges.
|
1129
|
+
:type exchange: InternalExchange
|
1130
|
+
:param quote_currency: Quote currency to filter by. Defaults to USDT.
|
1131
|
+
:type quote_currency: str
|
1132
|
+
:param _request_timeout: timeout setting for this request. If one
|
1133
|
+
number provided, it will be total request
|
1134
|
+
timeout. It can also be a pair (tuple) of
|
1135
|
+
(connection, read) timeouts.
|
1136
|
+
:type _request_timeout: int, tuple(int, int), optional
|
1137
|
+
:param _request_auth: set to override the auth_settings for an a single
|
1138
|
+
request; this effectively ignores the
|
1139
|
+
authentication in the spec for a single request.
|
1140
|
+
:type _request_auth: dict, optional
|
1141
|
+
:param _content_type: force content-type for the request.
|
1142
|
+
:type _content_type: str, Optional
|
1143
|
+
:param _headers: set to override the headers for a single
|
1144
|
+
request; this effectively ignores the headers
|
1145
|
+
in the spec for a single request.
|
1146
|
+
:type _headers: dict, optional
|
1147
|
+
:param _host_index: set to override the host_index for a single
|
1148
|
+
request; this effectively ignores the host_index
|
1149
|
+
in the spec for a single request.
|
1150
|
+
:type _host_index: int, optional
|
1151
|
+
:return: Returns the result object.
|
1152
|
+
""" # noqa: E501
|
1153
|
+
|
1154
|
+
_param = self._get_exchange_mappings_for_pair_serialize(
|
1155
|
+
pair=pair,
|
1156
|
+
market=market,
|
1157
|
+
exchange=exchange,
|
1158
|
+
quote_currency=quote_currency,
|
1159
|
+
_request_auth=_request_auth,
|
1160
|
+
_content_type=_content_type,
|
1161
|
+
_headers=_headers,
|
1162
|
+
_host_index=_host_index,
|
1163
|
+
)
|
1164
|
+
|
1165
|
+
_response_types_map: Dict[str, Optional[str]] = {
|
1166
|
+
"200": "List[ExchangeMapping]",
|
1167
|
+
}
|
1168
|
+
response_data = await self.api_client.call_api(
|
1169
|
+
*_param, _request_timeout=_request_timeout
|
1170
|
+
)
|
1171
|
+
await response_data.read()
|
1172
|
+
return self.api_client.response_deserialize(
|
1173
|
+
response_data=response_data,
|
1174
|
+
response_types_map=_response_types_map,
|
1175
|
+
)
|
1176
|
+
|
1177
|
+
@validate_call
|
1178
|
+
async def get_exchange_mappings_for_pair_without_preload_content(
|
1179
|
+
self,
|
1180
|
+
pair: Annotated[
|
1181
|
+
StrictStr,
|
1182
|
+
Field(
|
1183
|
+
description="Trading pair to find mappings for (e.g., 'BTCUSDT', '1000SHIBUSDT')"
|
1184
|
+
),
|
1185
|
+
],
|
1186
|
+
market: Annotated[
|
1187
|
+
Optional[MarketType],
|
1188
|
+
Field(description="Market type (spot or futures). Defaults to futures."),
|
1189
|
+
] = None,
|
1190
|
+
exchange: Annotated[
|
1191
|
+
Optional[InternalExchange],
|
1192
|
+
Field(
|
1193
|
+
description="Optional exchange name to filter by. If not provided, returns all exchanges."
|
1194
|
+
),
|
1195
|
+
] = None,
|
1196
|
+
quote_currency: Annotated[
|
1197
|
+
Optional[StrictStr],
|
1198
|
+
Field(description="Quote currency to filter by. Defaults to USDT."),
|
1199
|
+
] = None,
|
1200
|
+
_request_timeout: Union[
|
1201
|
+
None,
|
1202
|
+
Annotated[StrictFloat, Field(gt=0)],
|
1203
|
+
Tuple[
|
1204
|
+
Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]
|
1205
|
+
],
|
1206
|
+
] = None,
|
1207
|
+
_request_auth: Optional[Dict[StrictStr, Any]] = None,
|
1208
|
+
_content_type: Optional[StrictStr] = None,
|
1209
|
+
_headers: Optional[Dict[StrictStr, Any]] = None,
|
1210
|
+
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
1211
|
+
) -> RESTResponseType:
|
1212
|
+
"""Get Exchange Mappings For Pair
|
1213
|
+
|
1214
|
+
Get exchange mappings for a specific trading pair across all exchanges or a specific exchange. This endpoint finds the underlying symbol for a given pair and returns all perpetual contracts (excluding quarterly/dated contracts) with the specified quote currency.
|
1215
|
+
|
1216
|
+
:param pair: Trading pair to find mappings for (e.g., 'BTCUSDT', '1000SHIBUSDT') (required)
|
1217
|
+
:type pair: str
|
1218
|
+
:param market: Market type (spot or futures). Defaults to futures.
|
1219
|
+
:type market: MarketType
|
1220
|
+
:param exchange: Optional exchange name to filter by. If not provided, returns all exchanges.
|
1221
|
+
:type exchange: InternalExchange
|
1222
|
+
:param quote_currency: Quote currency to filter by. Defaults to USDT.
|
1223
|
+
:type quote_currency: str
|
1224
|
+
:param _request_timeout: timeout setting for this request. If one
|
1225
|
+
number provided, it will be total request
|
1226
|
+
timeout. It can also be a pair (tuple) of
|
1227
|
+
(connection, read) timeouts.
|
1228
|
+
:type _request_timeout: int, tuple(int, int), optional
|
1229
|
+
:param _request_auth: set to override the auth_settings for an a single
|
1230
|
+
request; this effectively ignores the
|
1231
|
+
authentication in the spec for a single request.
|
1232
|
+
:type _request_auth: dict, optional
|
1233
|
+
:param _content_type: force content-type for the request.
|
1234
|
+
:type _content_type: str, Optional
|
1235
|
+
:param _headers: set to override the headers for a single
|
1236
|
+
request; this effectively ignores the headers
|
1237
|
+
in the spec for a single request.
|
1238
|
+
:type _headers: dict, optional
|
1239
|
+
:param _host_index: set to override the host_index for a single
|
1240
|
+
request; this effectively ignores the host_index
|
1241
|
+
in the spec for a single request.
|
1242
|
+
:type _host_index: int, optional
|
1243
|
+
:return: Returns the result object.
|
1244
|
+
""" # noqa: E501
|
1245
|
+
|
1246
|
+
_param = self._get_exchange_mappings_for_pair_serialize(
|
1247
|
+
pair=pair,
|
1248
|
+
market=market,
|
1249
|
+
exchange=exchange,
|
1250
|
+
quote_currency=quote_currency,
|
1251
|
+
_request_auth=_request_auth,
|
1252
|
+
_content_type=_content_type,
|
1253
|
+
_headers=_headers,
|
1254
|
+
_host_index=_host_index,
|
1255
|
+
)
|
1256
|
+
|
1257
|
+
_response_types_map: Dict[str, Optional[str]] = {
|
1258
|
+
"200": "List[ExchangeMapping]",
|
1259
|
+
}
|
1260
|
+
response_data = await self.api_client.call_api(
|
1261
|
+
*_param, _request_timeout=_request_timeout
|
1262
|
+
)
|
1263
|
+
return response_data.response
|
1264
|
+
|
1265
|
+
def _get_exchange_mappings_for_pair_serialize(
|
1266
|
+
self,
|
1267
|
+
pair,
|
1268
|
+
market,
|
1269
|
+
exchange,
|
1270
|
+
quote_currency,
|
1271
|
+
_request_auth,
|
1272
|
+
_content_type,
|
1273
|
+
_headers,
|
1274
|
+
_host_index,
|
1275
|
+
) -> RequestSerialized:
|
1276
|
+
|
1277
|
+
_host = None
|
1278
|
+
|
1279
|
+
_collection_formats: Dict[str, str] = {}
|
1280
|
+
|
1281
|
+
_path_params: Dict[str, str] = {}
|
1282
|
+
_query_params: List[Tuple[str, str]] = []
|
1283
|
+
_header_params: Dict[str, Optional[str]] = _headers or {}
|
1284
|
+
_form_params: List[Tuple[str, str]] = []
|
1285
|
+
_files: Dict[
|
1286
|
+
str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
|
1287
|
+
] = {}
|
1288
|
+
_body_params: Optional[bytes] = None
|
1289
|
+
|
1290
|
+
# process the path parameters
|
1291
|
+
# process the query parameters
|
1292
|
+
if pair is not None:
|
1293
|
+
|
1294
|
+
_query_params.append(("pair", pair))
|
1295
|
+
|
1296
|
+
if market is not None:
|
1297
|
+
|
1298
|
+
_query_params.append(("market", market.value))
|
1299
|
+
|
1300
|
+
if exchange is not None:
|
1301
|
+
|
1302
|
+
_query_params.append(("exchange", exchange.value))
|
1303
|
+
|
1304
|
+
if quote_currency is not None:
|
1305
|
+
|
1306
|
+
_query_params.append(("quote_currency", quote_currency))
|
1307
|
+
|
1308
|
+
# process the header parameters
|
1309
|
+
# process the form parameters
|
1310
|
+
# process the body parameter
|
1311
|
+
|
1312
|
+
# set the HTTP header `Accept`
|
1313
|
+
if "Accept" not in _header_params:
|
1314
|
+
_header_params["Accept"] = self.api_client.select_header_accept(
|
1315
|
+
["application/json"]
|
1316
|
+
)
|
1317
|
+
|
1318
|
+
# authentication setting
|
1319
|
+
_auth_settings: List[str] = ["APIKeyHeader", "HTTPBearer"]
|
1320
|
+
|
1321
|
+
return self.api_client.param_serialize(
|
1322
|
+
method="GET",
|
1323
|
+
resource_path="/exchanges/pair-mappings",
|
1324
|
+
path_params=_path_params,
|
1325
|
+
query_params=_query_params,
|
1326
|
+
header_params=_header_params,
|
1327
|
+
body=_body_params,
|
1328
|
+
post_params=_form_params,
|
1329
|
+
files=_files,
|
1330
|
+
auth_settings=_auth_settings,
|
1331
|
+
collection_formats=_collection_formats,
|
1332
|
+
_host=_host,
|
1333
|
+
_request_auth=_request_auth,
|
1334
|
+
)
|
@@ -215,7 +215,9 @@ class Configuration:
|
|
215
215
|
debug: Optional[bool] = None,
|
216
216
|
) -> None:
|
217
217
|
"""Constructor"""
|
218
|
-
self._base_path =
|
218
|
+
self._base_path = (
|
219
|
+
"https://api.crypticorn.dev/v1/metrics" if host is None else host
|
220
|
+
)
|
219
221
|
"""Default Base url
|
220
222
|
"""
|
221
223
|
self.server_index = 0 if server_index is None and host is None else server_index
|
@@ -557,7 +559,7 @@ class Configuration:
|
|
557
559
|
"""
|
558
560
|
return [
|
559
561
|
{
|
560
|
-
"url": "
|
562
|
+
"url": "https://api.crypticorn.dev/v1/metrics",
|
561
563
|
"description": "No description provided",
|
562
564
|
}
|
563
565
|
]
|
{crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/metrics/client/models/api_error_identifier.py
RENAMED
@@ -33,6 +33,7 @@ class ApiErrorIdentifier(str, Enum):
|
|
33
33
|
BOT_DISABLED = "bot_disabled"
|
34
34
|
BOT_STOPPING_COMPLETED = "bot_stopping_completed"
|
35
35
|
BOT_STOPPING_STARTED = "bot_stopping_started"
|
36
|
+
CANCELLED_OPEN_ORDER = "cancelled_open_order"
|
36
37
|
CLIENT_ORDER_ID_ALREADY_EXISTS = "client_order_id_already_exists"
|
37
38
|
INVALID_CONTENT_TYPE = "invalid_content_type"
|
38
39
|
DELETE_BOT_ERROR = "delete_bot_error"
|
@@ -55,6 +56,7 @@ class ApiErrorIdentifier(str, Enum):
|
|
55
56
|
EXCHANGE_USER_ACCOUNT_IS_FROZEN = "exchange_user_account_is_frozen"
|
56
57
|
API_KEY_EXPIRED = "api_key_expired"
|
57
58
|
BEARER_TOKEN_EXPIRED = "bearer_token_expired"
|
59
|
+
OPEN_ORDER_EXPIRED = "open_order_expired"
|
58
60
|
FORBIDDEN = "forbidden"
|
59
61
|
HEDGE_MODE_NOT_ACTIVE = "hedge_mode_not_active"
|
60
62
|
HTTP_REQUEST_ERROR = "http_request_error"
|
@@ -73,12 +75,14 @@ class ApiErrorIdentifier(str, Enum):
|
|
73
75
|
ORDER_VIOLATES_LIQUIDATION_PRICE_CONSTRAINTS = (
|
74
76
|
"order_violates_liquidation_price_constraints"
|
75
77
|
)
|
76
|
-
|
78
|
+
MARGIN_MODE_CLASH = "margin_mode_clash"
|
79
|
+
NAME_NOT_UNIQUE = "name_not_unique"
|
77
80
|
NO_CREDENTIALS = "no_credentials"
|
78
81
|
NOW_API_DOWN = "now_api_down"
|
79
82
|
OBJECT_ALREADY_EXISTS = "object_already_exists"
|
80
83
|
OBJECT_CREATED = "object_created"
|
81
84
|
OBJECT_DELETED = "object_deleted"
|
85
|
+
OBJECT_LOCKED = "object_locked"
|
82
86
|
OBJECT_NOT_FOUND = "object_not_found"
|
83
87
|
OBJECT_UPDATED = "object_updated"
|
84
88
|
ORDER_IS_ALREADY_FILLED = "order_is_already_filled"
|
@@ -88,6 +92,8 @@ class ApiErrorIdentifier(str, Enum):
|
|
88
92
|
ORDER_PRICE_IS_INVALID = "order_price_is_invalid"
|
89
93
|
ORDER_SIZE_TOO_LARGE = "order_size_too_large"
|
90
94
|
ORDER_SIZE_TOO_SMALL = "order_size_too_small"
|
95
|
+
ORPHAN_OPEN_ORDER = "orphan_open_order"
|
96
|
+
ORPHAN_CLOSE_ORDER = "orphan_close_order"
|
91
97
|
POSITION_LIMIT_EXCEEDED = "position_limit_exceeded"
|
92
98
|
POSITION_DOES_NOT_EXIST = "position_does_not_exist"
|
93
99
|
POSITION_OPENING_TEMPORARILY_SUSPENDED = "position_opening_temporarily_suspended"
|
@@ -103,7 +109,7 @@ class ApiErrorIdentifier(str, Enum):
|
|
103
109
|
SUCCESS = "success"
|
104
110
|
SYMBOL_DOES_NOT_EXIST = "symbol_does_not_exist"
|
105
111
|
TRADING_ACTION_EXPIRED = "trading_action_expired"
|
106
|
-
|
112
|
+
TRADING_ACTION_SKIPPED_BOT_STOPPING = "TRADING_ACTION_SKIPPED_BOT_STOPPING"
|
107
113
|
TRADING_HAS_BEEN_LOCKED = "trading_has_been_locked"
|
108
114
|
TRADING_IS_SUSPENDED = "trading_is_suspended"
|
109
115
|
UNKNOWN_ERROR_OCCURRED = "unknown_error_occurred"
|