crypticorn 2.2.2__tar.gz → 2.2.4__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.2.2 → crypticorn-2.2.4}/PKG-INFO +1 -1
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/auth/client/models/authorize_user_request.py +10 -4
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/auth/client/models/create_api_key_request.py +19 -19
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/auth/client/models/get_api_keys200_response_inner.py +18 -10
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/auth/client/models/refresh_token_info200_response_user_session.py +11 -7
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/auth/client/models/verify200_response.py +15 -9
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/auth/client/models/verify_email200_response_auth_auth.py +15 -9
- crypticorn-2.2.4/crypticorn/common/enums.py +26 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/common/errors.py +63 -16
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/common/pydantic.py +2 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/common/scopes.py +3 -3
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/common/sorter.py +8 -6
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/trade/client/api/api_keys_api.py +50 -50
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/trade/client/api/bots_api.py +3 -3
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/trade/client/api/futures_trading_panel_api.py +15 -15
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn.egg-info/PKG-INFO +1 -1
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn.egg-info/SOURCES.txt +3 -1
- {crypticorn-2.2.2 → crypticorn-2.2.4}/pyproject.toml +1 -1
- crypticorn-2.2.4/tests/test_errors.py +32 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/README.md +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/__init__.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/auth/__init__.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/auth/client/__init__.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/auth/client/api/__init__.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/auth/client/api/admin_api.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/auth/client/api/auth_api.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/auth/client/api/service_api.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/auth/client/api/user_api.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/auth/client/api/wallet_api.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/auth/client/api_client.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/auth/client/api_response.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/auth/client/configuration.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/auth/client/exceptions.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/auth/client/models/__init__.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/auth/client/models/add_wallet200_response.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/auth/client/models/add_wallet_request.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/auth/client/models/authorize_user200_response.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/auth/client/models/authorize_user200_response_auth.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/auth/client/models/create_api_key200_response.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/auth/client/models/create_user_request.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/auth/client/models/list_wallets200_response.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/auth/client/models/list_wallets200_response_balances_inner.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/auth/client/models/list_wallets200_response_balances_inner_sale_round.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/auth/client/models/list_wallets200_response_balances_inner_wallet.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/auth/client/models/list_wallets200_response_balances_inner_wallet_vesting_wallets_inner.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/auth/client/models/list_wallets200_response_data_inner.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/auth/client/models/list_wallets200_response_user_value.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/auth/client/models/logout_default_response.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/auth/client/models/logout_default_response_issues_inner.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/auth/client/models/oauth_callback200_response.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/auth/client/models/oauth_callback200_response_user.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/auth/client/models/refresh_token_info200_response.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/auth/client/models/resend_verification_email_request.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/auth/client/models/revoke_user_tokens_request.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/auth/client/models/rotate_tokens200_response.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/auth/client/models/token_info200_response.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/auth/client/models/unlink_wallet_request.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/auth/client/models/update_user_request.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/auth/client/models/user_reset_password_request.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/auth/client/models/user_set_password_request.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/auth/client/models/verify_email200_response.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/auth/client/models/verify_email200_response_auth.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/auth/client/models/verify_email_request.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/auth/client/models/verify_wallet_request.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/auth/client/models/wallet_verified200_response.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/auth/client/models/whoami200_response.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/auth/client/py.typed +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/auth/client/rest.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/auth/main.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/client.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/common/__init__.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/common/auth.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/common/urls.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/hive/__init__.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/hive/client/__init__.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/hive/client/api/__init__.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/hive/client/api/data_api.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/hive/client/api/models_api.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/hive/client/api/status_api.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/hive/client/api_client.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/hive/client/api_response.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/hive/client/configuration.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/hive/client/exceptions.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/hive/client/models/__init__.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/hive/client/models/coins.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/hive/client/models/data_download_response.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/hive/client/models/data_info.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/hive/client/models/data_value_value_value_inner.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/hive/client/models/data_version.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/hive/client/models/download_links.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/hive/client/models/evaluation.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/hive/client/models/evaluation_response.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/hive/client/models/feature_size.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/hive/client/models/http_validation_error.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/hive/client/models/model.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/hive/client/models/model_create.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/hive/client/models/model_status.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/hive/client/models/model_update.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/hive/client/models/target.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/hive/client/models/target_type.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/hive/client/models/validation_error.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/hive/client/models/validation_error_loc_inner.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/hive/client/py.typed +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/hive/client/rest.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/hive/main.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/klines/__init__.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/klines/client/__init__.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/klines/client/api/__init__.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/klines/client/api/funding_rates_api.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/klines/client/api/health_check_api.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/klines/client/api/ohlcv_data_api.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/klines/client/api/symbols_api.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/klines/client/api/udf_api.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/klines/client/api_client.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/klines/client/api_response.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/klines/client/configuration.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/klines/client/exceptions.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/klines/client/models/__init__.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/klines/client/models/base_response_health_check_response.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/klines/client/models/base_response_list_funding_rate_response.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/klines/client/models/base_response_list_str.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/klines/client/models/base_response_ohlcv_response.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/klines/client/models/error_response.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/klines/client/models/exchange.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/klines/client/models/funding_rate_response.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/klines/client/models/health_check_response.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/klines/client/models/history_error_response.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/klines/client/models/history_no_data_response.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/klines/client/models/history_success_response.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/klines/client/models/http_validation_error.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/klines/client/models/market.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/klines/client/models/ohlcv_response.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/klines/client/models/resolution.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/klines/client/models/response_get_history_udf_history_get.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/klines/client/models/search_symbol_response.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/klines/client/models/sort_direction.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/klines/client/models/symbol_group_response.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/klines/client/models/symbol_info_response.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/klines/client/models/symbol_type.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/klines/client/models/timeframe.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/klines/client/models/udf_config_response.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/klines/client/models/validation_error.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/klines/client/models/validation_error_loc_inner.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/klines/client/py.typed +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/klines/client/rest.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/klines/main.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/metrics/__init__.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/metrics/client/__init__.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/metrics/client/api/__init__.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/metrics/client/api/exchanges_api.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/metrics/client/api/health_check_api.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/metrics/client/api/indicators_api.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/metrics/client/api/logs_api.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/metrics/client/api/marketcap_api.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/metrics/client/api/markets_api.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/metrics/client/api/tokens_api.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/metrics/client/api_client.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/metrics/client/api_response.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/metrics/client/configuration.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/metrics/client/exceptions.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/metrics/client/models/__init__.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/metrics/client/models/base_response_dict.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/metrics/client/models/base_response_health_check_response.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/metrics/client/models/base_response_list_dict.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/metrics/client/models/base_response_list_exchange_mapping.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/metrics/client/models/base_response_list_str.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/metrics/client/models/error_response.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/metrics/client/models/exchange_mapping.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/metrics/client/models/health_check_response.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/metrics/client/models/http_validation_error.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/metrics/client/models/market.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/metrics/client/models/severity.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/metrics/client/models/validation_error.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/metrics/client/models/validation_error_loc_inner.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/metrics/client/py.typed +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/metrics/client/rest.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/metrics/main.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/pay/__init__.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/pay/client/__init__.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/pay/client/api/__init__.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/pay/client/api/now_payments_api.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/pay/client/api/payments_api.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/pay/client/api/products_api.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/pay/client/api/status_api.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/pay/client/api_client.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/pay/client/api_response.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/pay/client/configuration.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/pay/client/exceptions.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/pay/client/models/__init__.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/pay/client/models/api_status_res.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/pay/client/models/body_create_now_invoice.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/pay/client/models/body_create_product.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/pay/client/models/body_get_products.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/pay/client/models/body_handle_now_webhook.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/pay/client/models/body_update_product.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/pay/client/models/combined_payment_history.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/pay/client/models/create_invoice_req.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/pay/client/models/create_invoice_res.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/pay/client/models/currency.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/pay/client/models/estimate_price_req.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/pay/client/models/estimate_price_res.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/pay/client/models/get_currencies_res.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/pay/client/models/get_payment_status_res.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/pay/client/models/get_payments_list_res.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/pay/client/models/http_validation_error.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/pay/client/models/min_amount_req.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/pay/client/models/min_amount_res.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/pay/client/models/now_api_status_res.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/pay/client/models/now_create_invoice_req.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/pay/client/models/now_create_invoice_res.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/pay/client/models/now_fee_structure.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/pay/client/models/now_payment_model.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/pay/client/models/now_payment_status.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/pay/client/models/now_webhook_payload.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/pay/client/models/partial_product_update_model.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/pay/client/models/payment.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/pay/client/models/payment_status.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/pay/client/models/product.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/pay/client/models/product_model.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/pay/client/models/product_subs_model.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/pay/client/models/product_update_model.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/pay/client/models/scope.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/pay/client/models/services.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/pay/client/models/unified_payment_model.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/pay/client/models/validation_error.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/pay/client/models/validation_error_loc_inner.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/pay/client/py.typed +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/pay/client/rest.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/pay/main.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/trade/__init__.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/trade/client/__init__.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/trade/client/api/__init__.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/trade/client/api/exchanges_api.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/trade/client/api/notifications_api.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/trade/client/api/orders_api.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/trade/client/api/status_api.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/trade/client/api/strategies_api.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/trade/client/api/trading_actions_api.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/trade/client/api_client.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/trade/client/api_response.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/trade/client/configuration.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/trade/client/exceptions.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/trade/client/models/__init__.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/trade/client/models/action_model.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/trade/client/models/api_error_identifier.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/trade/client/models/api_error_level.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/trade/client/models/api_error_type.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/trade/client/models/api_key_model.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/trade/client/models/bot_model.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/trade/client/models/bot_status.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/trade/client/models/exchange.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/trade/client/models/execution_ids.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/trade/client/models/futures_balance.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/trade/client/models/futures_trading_action.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/trade/client/models/http_validation_error.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/trade/client/models/margin_mode.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/trade/client/models/market_type.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/trade/client/models/notification_model.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/trade/client/models/order_model.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/trade/client/models/order_status.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/trade/client/models/post_futures_action.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/trade/client/models/strategy_exchange_info.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/trade/client/models/strategy_model_input.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/trade/client/models/strategy_model_output.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/trade/client/models/tpsl.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/trade/client/models/trading_action_type.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/trade/client/models/validation_error.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/trade/client/models/validation_error_loc_inner.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/trade/client/py.typed +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/trade/client/rest.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/trade/main.py +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn.egg-info/dependency_links.txt +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn.egg-info/requires.txt +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn.egg-info/top_level.txt +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/requirements/dev.txt +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/requirements/main.txt +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/requirements/test.txt +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/setup.cfg +0 -0
- {crypticorn-2.2.2 → crypticorn-2.2.4}/tests/test_auth_client.py +0 -0
{crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/auth/client/models/authorize_user_request.py
RENAMED
@@ -29,11 +29,17 @@ class AuthorizeUserRequest(BaseModel):
|
|
29
29
|
AuthorizeUserRequest
|
30
30
|
""" # noqa: E501
|
31
31
|
|
32
|
-
email: Annotated[str, Field(min_length=1, strict=True)]
|
33
|
-
|
34
|
-
|
32
|
+
email: Annotated[str, Field(min_length=1, strict=True)] = Field(
|
33
|
+
description="Email of the user"
|
34
|
+
)
|
35
|
+
password: Annotated[str, Field(min_length=1, strict=True)] = Field(
|
36
|
+
description="Password of the user"
|
37
|
+
)
|
38
|
+
admin: Optional[StrictBool] = Field(
|
39
|
+
default=None, description="Whether the user is an admin"
|
40
|
+
)
|
35
41
|
captcha_token: Annotated[str, Field(min_length=1, strict=True)] = Field(
|
36
|
-
alias="captchaToken"
|
42
|
+
description="Captcha token of the authorization request", alias="captchaToken"
|
37
43
|
)
|
38
44
|
__properties: ClassVar[List[str]] = ["email", "password", "admin", "captchaToken"]
|
39
45
|
|
{crypticorn-2.2.2 → crypticorn-2.2.4}/crypticorn/auth/client/models/create_api_key_request.py
RENAMED
@@ -17,16 +17,9 @@ import pprint
|
|
17
17
|
import re # noqa: F401
|
18
18
|
import json
|
19
19
|
|
20
|
-
from
|
21
|
-
|
22
|
-
|
23
|
-
Field,
|
24
|
-
StrictFloat,
|
25
|
-
StrictInt,
|
26
|
-
StrictStr,
|
27
|
-
field_validator,
|
28
|
-
)
|
29
|
-
from typing import Any, ClassVar, Dict, List, Optional, Union
|
20
|
+
from datetime import datetime
|
21
|
+
from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator
|
22
|
+
from typing import Any, ClassVar, Dict, List, Optional
|
30
23
|
from typing_extensions import Annotated
|
31
24
|
from typing import Optional, Set
|
32
25
|
from typing_extensions import Self
|
@@ -37,12 +30,18 @@ class CreateApiKeyRequest(BaseModel):
|
|
37
30
|
CreateApiKeyRequest
|
38
31
|
""" # noqa: E501
|
39
32
|
|
40
|
-
name: StrictStr
|
41
|
-
scopes: Annotated[List[StrictStr], Field(min_length=1)]
|
42
|
-
|
43
|
-
default=None, alias="expiresIn"
|
33
|
+
name: StrictStr = Field(description="Name of the API key")
|
34
|
+
scopes: Annotated[List[StrictStr], Field(min_length=1)] = Field(
|
35
|
+
description="Scopes of the API key"
|
44
36
|
)
|
45
|
-
|
37
|
+
expires_at: Optional[datetime] = Field(
|
38
|
+
default=None, description="Expiration time of the API key as a date"
|
39
|
+
)
|
40
|
+
ip_whitelist: Optional[List[StrictStr]] = Field(
|
41
|
+
default=None,
|
42
|
+
description="IP addresses that can access the API key. If empty, the API key will be accessible from any IP address.",
|
43
|
+
)
|
44
|
+
__properties: ClassVar[List[str]] = ["name", "scopes", "expires_at", "ip_whitelist"]
|
46
45
|
|
47
46
|
@field_validator("scopes")
|
48
47
|
def scopes_validate_enum(cls, value):
|
@@ -55,8 +54,8 @@ class CreateApiKeyRequest(BaseModel):
|
|
55
54
|
"write:hive:model",
|
56
55
|
"read:trade:bots",
|
57
56
|
"write:trade:bots",
|
58
|
-
"read:trade:
|
59
|
-
"write:trade:
|
57
|
+
"read:trade:exchangekeys",
|
58
|
+
"write:trade:exchangekeys",
|
60
59
|
"read:trade:orders",
|
61
60
|
"read:trade:actions",
|
62
61
|
"write:trade:actions",
|
@@ -76,7 +75,7 @@ class CreateApiKeyRequest(BaseModel):
|
|
76
75
|
]
|
77
76
|
):
|
78
77
|
raise ValueError(
|
79
|
-
"each list item must be one of ('read:hive:model', 'read:hive:data', 'write:hive:model', 'read:trade:bots', 'write:trade:bots', 'read:trade:
|
78
|
+
"each list item must be one of ('read:hive:model', 'read:hive:data', 'write:hive:model', 'read:trade:bots', 'write:trade:bots', 'read:trade:exchangekeys', 'write:trade:exchangekeys', 'read:trade:orders', 'read:trade:actions', 'write:trade:actions', 'read:trade:exchanges', 'read:trade:futures', 'write:trade:futures', 'read:trade:notifications', 'write:trade:notifications', 'read:trade:strategies', 'write:trade:strategies', 'read:pay:payments', 'read:pay:products', 'write:pay:products', 'read:pay:now', 'write:pay:now', 'read:predictions')"
|
80
79
|
)
|
81
80
|
return value
|
82
81
|
|
@@ -132,7 +131,8 @@ class CreateApiKeyRequest(BaseModel):
|
|
132
131
|
{
|
133
132
|
"name": obj.get("name"),
|
134
133
|
"scopes": obj.get("scopes"),
|
135
|
-
"
|
134
|
+
"expires_at": obj.get("expires_at"),
|
135
|
+
"ip_whitelist": obj.get("ip_whitelist"),
|
136
136
|
}
|
137
137
|
)
|
138
138
|
return _obj
|
@@ -18,7 +18,7 @@ import re # noqa: F401
|
|
18
18
|
import json
|
19
19
|
|
20
20
|
from datetime import datetime
|
21
|
-
from pydantic import BaseModel, ConfigDict, StrictStr, field_validator
|
21
|
+
from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator
|
22
22
|
from typing import Any, ClassVar, Dict, List, Optional
|
23
23
|
from typing import Optional, Set
|
24
24
|
from typing_extensions import Self
|
@@ -29,12 +29,18 @@ class GetApiKeys200ResponseInner(BaseModel):
|
|
29
29
|
GetApiKeys200ResponseInner
|
30
30
|
""" # noqa: E501
|
31
31
|
|
32
|
-
id: StrictStr
|
33
|
-
user_id: StrictStr
|
34
|
-
scopes: List[StrictStr]
|
35
|
-
name: StrictStr
|
36
|
-
expires_at: Optional[datetime] =
|
37
|
-
|
32
|
+
id: StrictStr = Field(description="ID of the API key")
|
33
|
+
user_id: StrictStr = Field(description="User ID of the API key")
|
34
|
+
scopes: List[StrictStr] = Field(description="Scopes of the API key")
|
35
|
+
name: StrictStr = Field(description="Name of the API key")
|
36
|
+
expires_at: Optional[datetime] = Field(
|
37
|
+
default=None, description="Expiration time of the API key as a date"
|
38
|
+
)
|
39
|
+
created_at: datetime = Field(description="Creation time of the API key as a date")
|
40
|
+
ip_whitelist: Optional[List[StrictStr]] = Field(
|
41
|
+
default=None,
|
42
|
+
description="IP addresses that can access the API key. If empty, the API key will be accessible from any IP address.",
|
43
|
+
)
|
38
44
|
__properties: ClassVar[List[str]] = [
|
39
45
|
"id",
|
40
46
|
"user_id",
|
@@ -42,6 +48,7 @@ class GetApiKeys200ResponseInner(BaseModel):
|
|
42
48
|
"name",
|
43
49
|
"expires_at",
|
44
50
|
"created_at",
|
51
|
+
"ip_whitelist",
|
45
52
|
]
|
46
53
|
|
47
54
|
@field_validator("scopes")
|
@@ -55,8 +62,8 @@ class GetApiKeys200ResponseInner(BaseModel):
|
|
55
62
|
"write:hive:model",
|
56
63
|
"read:trade:bots",
|
57
64
|
"write:trade:bots",
|
58
|
-
"read:trade:
|
59
|
-
"write:trade:
|
65
|
+
"read:trade:exchangekeys",
|
66
|
+
"write:trade:exchangekeys",
|
60
67
|
"read:trade:orders",
|
61
68
|
"read:trade:actions",
|
62
69
|
"write:trade:actions",
|
@@ -76,7 +83,7 @@ class GetApiKeys200ResponseInner(BaseModel):
|
|
76
83
|
]
|
77
84
|
):
|
78
85
|
raise ValueError(
|
79
|
-
"each list item must be one of ('read:hive:model', 'read:hive:data', 'write:hive:model', 'read:trade:bots', 'write:trade:bots', 'read:trade:
|
86
|
+
"each list item must be one of ('read:hive:model', 'read:hive:data', 'write:hive:model', 'read:trade:bots', 'write:trade:bots', 'read:trade:exchangekeys', 'write:trade:exchangekeys', 'read:trade:orders', 'read:trade:actions', 'write:trade:actions', 'read:trade:exchanges', 'read:trade:futures', 'write:trade:futures', 'read:trade:notifications', 'write:trade:notifications', 'read:trade:strategies', 'write:trade:strategies', 'read:pay:payments', 'read:pay:products', 'write:pay:products', 'read:pay:now', 'write:pay:now', 'read:predictions')"
|
80
87
|
)
|
81
88
|
return value
|
82
89
|
|
@@ -136,6 +143,7 @@ class GetApiKeys200ResponseInner(BaseModel):
|
|
136
143
|
"name": obj.get("name"),
|
137
144
|
"expires_at": obj.get("expires_at"),
|
138
145
|
"created_at": obj.get("created_at"),
|
146
|
+
"ip_whitelist": obj.get("ip_whitelist"),
|
139
147
|
}
|
140
148
|
)
|
141
149
|
return _obj
|
@@ -18,7 +18,7 @@ import re # noqa: F401
|
|
18
18
|
import json
|
19
19
|
|
20
20
|
from datetime import datetime
|
21
|
-
from pydantic import BaseModel, ConfigDict, StrictStr
|
21
|
+
from pydantic import BaseModel, ConfigDict, Field, StrictStr
|
22
22
|
from typing import Any, ClassVar, Dict, List, Optional
|
23
23
|
from typing import Optional, Set
|
24
24
|
from typing_extensions import Self
|
@@ -29,12 +29,16 @@ class RefreshTokenInfo200ResponseUserSession(BaseModel):
|
|
29
29
|
RefreshTokenInfo200ResponseUserSession
|
30
30
|
""" # noqa: E501
|
31
31
|
|
32
|
-
id: StrictStr
|
33
|
-
user_id: StrictStr
|
34
|
-
token: StrictStr
|
35
|
-
expires_at: datetime
|
36
|
-
client_ip: Optional[StrictStr] =
|
37
|
-
|
32
|
+
id: StrictStr = Field(description="ID of the user session")
|
33
|
+
user_id: StrictStr = Field(description="User ID of the user session")
|
34
|
+
token: StrictStr = Field(description="Token of the user session")
|
35
|
+
expires_at: datetime = Field(description="Expiration time of the user session")
|
36
|
+
client_ip: Optional[StrictStr] = Field(
|
37
|
+
default=None, description="Client IP address of the user session"
|
38
|
+
)
|
39
|
+
user_agent: Optional[StrictStr] = Field(
|
40
|
+
default=None, description="User agent of the user session"
|
41
|
+
)
|
38
42
|
__properties: ClassVar[List[str]] = [
|
39
43
|
"id",
|
40
44
|
"user_id",
|
@@ -17,7 +17,7 @@ import pprint
|
|
17
17
|
import re # noqa: F401
|
18
18
|
import json
|
19
19
|
|
20
|
-
from pydantic import BaseModel, ConfigDict, StrictFloat, StrictInt, StrictStr
|
20
|
+
from pydantic import BaseModel, ConfigDict, Field, StrictFloat, StrictInt, StrictStr
|
21
21
|
from typing import Any, ClassVar, Dict, List, Optional, Union
|
22
22
|
from typing import Optional, Set
|
23
23
|
from typing_extensions import Self
|
@@ -28,14 +28,20 @@ class Verify200Response(BaseModel):
|
|
28
28
|
Verify200Response
|
29
29
|
""" # noqa: E501
|
30
30
|
|
31
|
-
iss: Optional[StrictStr] = None
|
32
|
-
sub: Optional[StrictStr] = None
|
33
|
-
aud: Optional[StrictStr] = None
|
34
|
-
exp: Optional[Union[StrictFloat, StrictInt]] =
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
31
|
+
iss: Optional[StrictStr] = Field(default=None, description="Issuer")
|
32
|
+
sub: Optional[StrictStr] = Field(default=None, description="Subject")
|
33
|
+
aud: Optional[StrictStr] = Field(default=None, description="Audience")
|
34
|
+
exp: Optional[Union[StrictFloat, StrictInt]] = Field(
|
35
|
+
default=None, description="Expiration time"
|
36
|
+
)
|
37
|
+
nbf: Optional[Union[StrictFloat, StrictInt]] = Field(
|
38
|
+
default=None, description="Not valid before time"
|
39
|
+
)
|
40
|
+
iat: Optional[Union[StrictFloat, StrictInt]] = Field(
|
41
|
+
default=None, description="Issued at time"
|
42
|
+
)
|
43
|
+
jti: Optional[StrictStr] = Field(default=None, description="JWT ID")
|
44
|
+
scopes: Optional[List[StrictStr]] = Field(default=None, description="Scopes")
|
39
45
|
__properties: ClassVar[List[str]] = [
|
40
46
|
"iss",
|
41
47
|
"sub",
|
@@ -17,7 +17,7 @@ import pprint
|
|
17
17
|
import re # noqa: F401
|
18
18
|
import json
|
19
19
|
|
20
|
-
from pydantic import BaseModel, ConfigDict, StrictFloat, StrictInt, StrictStr
|
20
|
+
from pydantic import BaseModel, ConfigDict, Field, StrictFloat, StrictInt, StrictStr
|
21
21
|
from typing import Any, ClassVar, Dict, List, Optional, Union
|
22
22
|
from typing import Optional, Set
|
23
23
|
from typing_extensions import Self
|
@@ -28,14 +28,20 @@ class VerifyEmail200ResponseAuthAuth(BaseModel):
|
|
28
28
|
VerifyEmail200ResponseAuthAuth
|
29
29
|
""" # noqa: E501
|
30
30
|
|
31
|
-
iss: Optional[StrictStr] = None
|
32
|
-
sub: Optional[StrictStr] = None
|
33
|
-
aud: Optional[StrictStr] = None
|
34
|
-
exp: Optional[Union[StrictFloat, StrictInt]] =
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
31
|
+
iss: Optional[StrictStr] = Field(default=None, description="Issuer")
|
32
|
+
sub: Optional[StrictStr] = Field(default=None, description="Subject")
|
33
|
+
aud: Optional[StrictStr] = Field(default=None, description="Audience")
|
34
|
+
exp: Optional[Union[StrictFloat, StrictInt]] = Field(
|
35
|
+
default=None, description="Expiration time"
|
36
|
+
)
|
37
|
+
nbf: Optional[Union[StrictFloat, StrictInt]] = Field(
|
38
|
+
default=None, description="Not valid before time"
|
39
|
+
)
|
40
|
+
iat: Optional[Union[StrictFloat, StrictInt]] = Field(
|
41
|
+
default=None, description="Issued at time"
|
42
|
+
)
|
43
|
+
jti: Optional[StrictStr] = Field(default=None, description="JWT ID")
|
44
|
+
scopes: Optional[List[StrictStr]] = Field(default=None, description="Scopes")
|
39
45
|
__properties: ClassVar[List[str]] = [
|
40
46
|
"iss",
|
41
47
|
"sub",
|
@@ -0,0 +1,26 @@
|
|
1
|
+
from enum import StrEnum
|
2
|
+
|
3
|
+
|
4
|
+
class Exchange(StrEnum):
|
5
|
+
"""Supported exchanges for trading"""
|
6
|
+
|
7
|
+
KUCOIN = "kucoin"
|
8
|
+
BINGX = "bingx"
|
9
|
+
|
10
|
+
|
11
|
+
class InternalExchange(Exchange):
|
12
|
+
"""All exchanges we are using, including public (Exchange)"""
|
13
|
+
|
14
|
+
BINANCE = "binance"
|
15
|
+
BYBIT = "bybit"
|
16
|
+
HYPERLIQUID = "hyperliquid"
|
17
|
+
BITGET = "bitget"
|
18
|
+
|
19
|
+
|
20
|
+
class MarketType(StrEnum):
|
21
|
+
"""
|
22
|
+
Market types
|
23
|
+
"""
|
24
|
+
|
25
|
+
SPOT = "spot"
|
26
|
+
FUTURES = "futures"
|
@@ -1,4 +1,16 @@
|
|
1
|
-
from enum import Enum
|
1
|
+
from enum import Enum, EnumMeta
|
2
|
+
import logging
|
3
|
+
|
4
|
+
logger = logging.getLogger(__name__)
|
5
|
+
|
6
|
+
|
7
|
+
class Fallback(EnumMeta):
|
8
|
+
def __getattr__(cls, name):
|
9
|
+
"""Fallback to UNKNOWN_ERROR for error codes not yet published to PyPI."""
|
10
|
+
logger.warning(
|
11
|
+
f"Unknown error code '{name}' - update crypticorn package or check for typos"
|
12
|
+
)
|
13
|
+
return cls.UNKNOWN_ERROR
|
2
14
|
|
3
15
|
|
4
16
|
class ApiErrorType(str, Enum):
|
@@ -17,7 +29,8 @@ class ApiErrorType(str, Enum):
|
|
17
29
|
class ApiErrorIdentifier(str, Enum):
|
18
30
|
"""API error identifiers"""
|
19
31
|
|
20
|
-
|
32
|
+
ALLOCATION_BELOW_EXPOSURE = "allocation_below_current_exposure"
|
33
|
+
ALLOCATION_BELOW_MINIMUM = "allocation_below_min_amount"
|
21
34
|
BLACK_SWAN = "black_swan"
|
22
35
|
BOT_ALREADY_DELETED = "bot_already_deleted"
|
23
36
|
BOT_DISABLED = "bot_disabled"
|
@@ -25,18 +38,19 @@ class ApiErrorIdentifier(str, Enum):
|
|
25
38
|
CLIENT_ORDER_ID_REPEATED = "client_order_id_already_exists"
|
26
39
|
CONTENT_TYPE_ERROR = "invalid_content_type"
|
27
40
|
DELETE_BOT_ERROR = "delete_bot_error"
|
28
|
-
EXCHANGE_API_KEY_IN_USE = "exchange_api_key_in_use"
|
29
41
|
EXCHANGE_INVALID_SIGNATURE = "exchange_invalid_signature"
|
30
42
|
EXCHANGE_INVALID_TIMESTAMP = "exchange_invalid_timestamp"
|
31
43
|
EXCHANGE_IP_RESTRICTED = "exchange_ip_address_is_not_authorized"
|
44
|
+
EXCHANGE_KEY_ALREADY_EXISTS = "exchange_key_already_exists"
|
45
|
+
EXCHANGE_KEY_IN_USE = "exchange_key_in_use"
|
32
46
|
EXCHANGE_MAINTENANCE = "exchange_system_under_maintenance"
|
33
47
|
EXCHANGE_RATE_LIMIT = "exchange_rate_limit_exceeded"
|
48
|
+
EXCHANGE_PERMISSION_DENIED = "insufficient_permissions_spot_and_futures_required"
|
34
49
|
EXCHANGE_SERVICE_UNAVAILABLE = "exchange_service_temporarily_unavailable"
|
35
50
|
EXCHANGE_SYSTEM_BUSY = "exchange_system_is_busy"
|
36
51
|
EXCHANGE_SYSTEM_CONFIG_ERROR = "exchange_system_configuration_error"
|
37
52
|
EXCHANGE_SYSTEM_ERROR = "exchange_internal_system_error"
|
38
53
|
EXCHANGE_USER_FROZEN = "exchange_user_account_is_frozen"
|
39
|
-
EXCHANGE_PERMISSION_DENIED = "insufficient_permissions_spot_and_futures_required"
|
40
54
|
HEDGE_MODE_NOT_ACTIVE = "hedge_mode_not_active"
|
41
55
|
HTTP_ERROR = "http_request_error"
|
42
56
|
INSUFFICIENT_BALANCE = "insufficient_balance"
|
@@ -51,6 +65,7 @@ class ApiErrorIdentifier(str, Enum):
|
|
51
65
|
LEVERAGE_EXCEEDED = "leverage_limit_exceeded"
|
52
66
|
LIQUIDATION_PRICE_VIOLATION = "order_violates_liquidation_price_constraints"
|
53
67
|
NO_CREDENTIALS = "no_credentials"
|
68
|
+
NOW_API_DOWN = "now_api_down"
|
54
69
|
OBJECT_NOT_FOUND = "object_not_found"
|
55
70
|
ORDER_ALREADY_FILLED = "order_is_already_filled"
|
56
71
|
ORDER_IN_PROCESS = "order_is_being_processed"
|
@@ -68,11 +83,13 @@ class ApiErrorIdentifier(str, Enum):
|
|
68
83
|
RPC_TIMEOUT = "rpc_timeout"
|
69
84
|
SETTLEMENT_IN_PROGRESS = "system_settlement_in_process"
|
70
85
|
STRATEGY_DISABLED = "strategy_disabled"
|
86
|
+
STRATEGY_LEVERAGE_MISMATCH = "strategy_leverage_mismatch"
|
87
|
+
STRATEGY_NOT_SUPPORTING_EXCHANGE = "strategy_not_supporting_exchange"
|
71
88
|
SUCCESS = "success"
|
72
89
|
SYMBOL_NOT_FOUND = "symbol_does_not_exist"
|
73
|
-
TRADING_LOCKED = "trading_has_been_locked"
|
74
90
|
TRADING_ACTION_EXPIRED = "trading_action_expired"
|
75
91
|
TRADING_ACTION_SKIPPED = "trading_action_skipped"
|
92
|
+
TRADING_LOCKED = "trading_has_been_locked"
|
76
93
|
TRADING_SUSPENDED = "trading_is_suspended"
|
77
94
|
UNKNOWN_ERROR = "unknown_error_occurred"
|
78
95
|
URL_NOT_FOUND = "requested_resource_not_found"
|
@@ -87,11 +104,16 @@ class ApiErrorLevel(str, Enum):
|
|
87
104
|
WARNING = "warning"
|
88
105
|
|
89
106
|
|
90
|
-
class ApiError(Enum):
|
107
|
+
class ApiError(Enum, metaclass=Fallback):
|
91
108
|
"""API error codes"""
|
92
109
|
|
93
|
-
|
94
|
-
ApiErrorIdentifier.
|
110
|
+
ALLOCATION_BELOW_EXPOSURE = (
|
111
|
+
ApiErrorIdentifier.ALLOCATION_BELOW_EXPOSURE,
|
112
|
+
ApiErrorType.USER_ERROR,
|
113
|
+
ApiErrorLevel.ERROR,
|
114
|
+
)
|
115
|
+
ALLOCATION_BELOW_MINIMUM = (
|
116
|
+
ApiErrorIdentifier.ALLOCATION_BELOW_MINIMUM,
|
95
117
|
ApiErrorType.USER_ERROR,
|
96
118
|
ApiErrorLevel.ERROR,
|
97
119
|
)
|
@@ -145,8 +167,13 @@ class ApiError(Enum):
|
|
145
167
|
ApiErrorType.SERVER_ERROR,
|
146
168
|
ApiErrorLevel.ERROR,
|
147
169
|
)
|
148
|
-
|
149
|
-
ApiErrorIdentifier.
|
170
|
+
EXCHANGE_KEY_ALREADY_EXISTS = (
|
171
|
+
ApiErrorIdentifier.EXCHANGE_KEY_ALREADY_EXISTS,
|
172
|
+
ApiErrorType.USER_ERROR,
|
173
|
+
ApiErrorLevel.ERROR,
|
174
|
+
)
|
175
|
+
EXCHANGE_KEY_IN_USE = (
|
176
|
+
ApiErrorIdentifier.EXCHANGE_KEY_IN_USE,
|
150
177
|
ApiErrorType.SERVER_ERROR,
|
151
178
|
ApiErrorLevel.ERROR,
|
152
179
|
)
|
@@ -155,16 +182,16 @@ class ApiError(Enum):
|
|
155
182
|
ApiErrorType.EXCHANGE_ERROR,
|
156
183
|
ApiErrorLevel.ERROR,
|
157
184
|
)
|
158
|
-
EXCHANGE_PERMISSION_DENIED = (
|
159
|
-
ApiErrorIdentifier.EXCHANGE_PERMISSION_DENIED,
|
160
|
-
ApiErrorType.USER_ERROR,
|
161
|
-
ApiErrorLevel.ERROR,
|
162
|
-
)
|
163
185
|
EXCHANGE_RATE_LIMIT = (
|
164
186
|
ApiErrorIdentifier.EXCHANGE_RATE_LIMIT,
|
165
187
|
ApiErrorType.EXCHANGE_ERROR,
|
166
188
|
ApiErrorLevel.ERROR,
|
167
189
|
)
|
190
|
+
EXCHANGE_PERMISSION_DENIED = (
|
191
|
+
ApiErrorIdentifier.EXCHANGE_PERMISSION_DENIED,
|
192
|
+
ApiErrorType.USER_ERROR,
|
193
|
+
ApiErrorLevel.ERROR,
|
194
|
+
)
|
168
195
|
EXCHANGE_SERVICE_UNAVAILABLE = (
|
169
196
|
ApiErrorIdentifier.EXCHANGE_SERVICE_UNAVAILABLE,
|
170
197
|
ApiErrorType.EXCHANGE_ERROR,
|
@@ -260,6 +287,11 @@ class ApiError(Enum):
|
|
260
287
|
ApiErrorType.USER_ERROR,
|
261
288
|
ApiErrorLevel.ERROR,
|
262
289
|
)
|
290
|
+
NOW_API_DOWN = (
|
291
|
+
ApiErrorIdentifier.NOW_API_DOWN,
|
292
|
+
ApiErrorType.SERVER_ERROR,
|
293
|
+
ApiErrorLevel.ERROR,
|
294
|
+
)
|
263
295
|
OBJECT_NOT_FOUND = (
|
264
296
|
ApiErrorIdentifier.OBJECT_NOT_FOUND,
|
265
297
|
ApiErrorType.SERVER_ERROR,
|
@@ -342,7 +374,17 @@ class ApiError(Enum):
|
|
342
374
|
)
|
343
375
|
STRATEGY_DISABLED = (
|
344
376
|
ApiErrorIdentifier.STRATEGY_DISABLED,
|
345
|
-
ApiErrorType.
|
377
|
+
ApiErrorType.USER_ERROR,
|
378
|
+
ApiErrorLevel.ERROR,
|
379
|
+
)
|
380
|
+
STRATEGY_LEVERAGE_MISMATCH = (
|
381
|
+
ApiErrorIdentifier.STRATEGY_LEVERAGE_MISMATCH,
|
382
|
+
ApiErrorType.USER_ERROR,
|
383
|
+
ApiErrorLevel.ERROR,
|
384
|
+
)
|
385
|
+
STRATEGY_NOT_SUPPORTING_EXCHANGE = (
|
386
|
+
ApiErrorIdentifier.STRATEGY_NOT_SUPPORTING_EXCHANGE,
|
387
|
+
ApiErrorType.USER_ERROR,
|
346
388
|
ApiErrorLevel.ERROR,
|
347
389
|
)
|
348
390
|
SUCCESS = (ApiErrorIdentifier.SUCCESS, ApiErrorType.NO_ERROR, ApiErrorLevel.SUCCESS)
|
@@ -393,3 +435,8 @@ class ApiError(Enum):
|
|
393
435
|
@property
|
394
436
|
def level(self) -> ApiErrorLevel:
|
395
437
|
return self.value[2]
|
438
|
+
|
439
|
+
|
440
|
+
assert len(list(ApiErrorIdentifier)) == len(
|
441
|
+
list(ApiError)
|
442
|
+
), f"{len(list(ApiErrorIdentifier))} != {len(list(ApiError))}"
|
@@ -7,6 +7,7 @@ from pydantic.fields import FieldInfo
|
|
7
7
|
|
8
8
|
def partial_model(model: Type[BaseModel]) -> Type[BaseModel]:
|
9
9
|
"""Marks all fields of a model as optional. Useful for updating models.
|
10
|
+
Inherits all fields, docstrings, and the model name.
|
10
11
|
|
11
12
|
>>> @partial_model
|
12
13
|
>>> class Model(BaseModel):
|
@@ -29,6 +30,7 @@ def partial_model(model: Type[BaseModel]) -> Type[BaseModel]:
|
|
29
30
|
model.__name__,
|
30
31
|
__base__=model,
|
31
32
|
__module__=model.__module__,
|
33
|
+
__doc__=model.__doc__,
|
32
34
|
**{
|
33
35
|
field_name: make_field_optional(field_info)
|
34
36
|
for field_name, field_info in model.model_fields.items()
|
@@ -20,8 +20,8 @@ class Scope(StrEnum):
|
|
20
20
|
# Trade scopes
|
21
21
|
READ_TRADE_BOTS = "read:trade:bots"
|
22
22
|
WRITE_TRADE_BOTS = "write:trade:bots"
|
23
|
-
|
24
|
-
|
23
|
+
READ_TRADE_EXCHANGEKEYS = "read:trade:exchangekeys"
|
24
|
+
WRITE_TRADE_EXCHANGEKEYS = "write:trade:exchangekeys"
|
25
25
|
READ_TRADE_ORDERS = "read:trade:orders"
|
26
26
|
READ_TRADE_ACTIONS = "read:trade:actions"
|
27
27
|
WRITE_TRADE_ACTIONS = "write:trade:actions"
|
@@ -40,5 +40,5 @@ class Scope(StrEnum):
|
|
40
40
|
READ_PAY_NOW = "read:pay:now"
|
41
41
|
WRITE_PAY_NOW = "write:pay:now"
|
42
42
|
|
43
|
-
#
|
43
|
+
# Scopes that can be purchased - these actually exist in the jwt token
|
44
44
|
READ_PREDICTIONS = "read:predictions"
|
@@ -2,11 +2,11 @@ import re
|
|
2
2
|
import pyperclip
|
3
3
|
|
4
4
|
|
5
|
-
def sort_api_errors(file_content):
|
5
|
+
def sort_api_errors(file_content, class_name="ApiErrorIdentifier"):
|
6
6
|
# Find the start of the ApiError class definition
|
7
|
-
class_start = file_content.find("class
|
7
|
+
class_start = file_content.find(f"class {class_name}(str, Enum):")
|
8
8
|
if class_start == -1:
|
9
|
-
return "Could not find
|
9
|
+
return f"Could not find {class_name} class"
|
10
10
|
|
11
11
|
# Find all enum definitions
|
12
12
|
enum_pattern = r' ([A-Z_]+)\s*=\s*"([a-z_]+)"'
|
@@ -23,7 +23,7 @@ def sort_api_errors(file_content):
|
|
23
23
|
sorted_entries = sorted(enum_entries, key=lambda x: x[0])
|
24
24
|
|
25
25
|
# Reconstruct the class content
|
26
|
-
class_header = "class
|
26
|
+
class_header = f"class {class_name}(str, Enum):\n\n"
|
27
27
|
sorted_content = class_header + "\n ".join(entry[1] for entry in sorted_entries)
|
28
28
|
|
29
29
|
return sorted_content
|
@@ -34,5 +34,7 @@ if __name__ == "__main__":
|
|
34
34
|
with open("python/crypticorn/common/errors.py", "r") as f:
|
35
35
|
content = f.read()
|
36
36
|
|
37
|
-
sorted_content = sort_api_errors(content)
|
38
|
-
|
37
|
+
sorted_content = sort_api_errors(content, "ApiErrorIdentifier")
|
38
|
+
print(sorted_content)
|
39
|
+
sorted_content = sort_api_errors(content, "ApiError")
|
40
|
+
print(sorted_content)
|