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.
Files changed (306) hide show
  1. {crypticorn-2.12.0 → crypticorn-2.13.0}/CHANGELOG.md +16 -0
  2. {crypticorn-2.12.0/crypticorn.egg-info → crypticorn-2.13.0}/PKG-INFO +1 -1
  3. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/common/errors.py +44 -4
  4. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/common/exceptions.py +2 -1
  5. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/metrics/client/api/exchanges_api.py +343 -0
  6. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/metrics/client/configuration.py +4 -2
  7. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/metrics/client/models/api_error_identifier.py +8 -2
  8. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/trade/client/api/api_keys_api.py +61 -19
  9. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/trade/client/api/orders_api.py +3 -0
  10. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/trade/client/models/api_error_identifier.py +1 -1
  11. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/trade/client/models/exchange_key.py +13 -6
  12. {crypticorn-2.12.0 → crypticorn-2.13.0/crypticorn.egg-info}/PKG-INFO +1 -1
  13. {crypticorn-2.12.0 → crypticorn-2.13.0}/pyproject.toml +1 -1
  14. {crypticorn-2.12.0 → crypticorn-2.13.0}/LICENSE +0 -0
  15. {crypticorn-2.12.0 → crypticorn-2.13.0}/MANIFEST.in +0 -0
  16. {crypticorn-2.12.0 → crypticorn-2.13.0}/README.md +0 -0
  17. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/__init__.py +0 -0
  18. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/__init__.py +0 -0
  19. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/client/__init__.py +0 -0
  20. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/client/api/__init__.py +0 -0
  21. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/client/api/admin_api.py +0 -0
  22. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/client/api/auth_api.py +0 -0
  23. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/client/api/service_api.py +0 -0
  24. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/client/api/user_api.py +0 -0
  25. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/client/api/wallet_api.py +0 -0
  26. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/client/api_client.py +0 -0
  27. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/client/api_response.py +0 -0
  28. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/client/configuration.py +0 -0
  29. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/client/exceptions.py +0 -0
  30. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/client/models/__init__.py +0 -0
  31. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/client/models/add_wallet200_response.py +0 -0
  32. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/client/models/add_wallet_request.py +0 -0
  33. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/client/models/authorize_user200_response.py +0 -0
  34. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/client/models/authorize_user200_response_auth.py +0 -0
  35. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/client/models/authorize_user_request.py +0 -0
  36. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/client/models/create_api_key200_response.py +0 -0
  37. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/client/models/create_api_key_request.py +0 -0
  38. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/client/models/create_user_request.py +0 -0
  39. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/client/models/get_api_keys200_response_inner.py +0 -0
  40. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/client/models/list_wallets200_response.py +0 -0
  41. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/client/models/list_wallets200_response_balances_inner.py +0 -0
  42. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/client/models/list_wallets200_response_balances_inner_sale_round.py +0 -0
  43. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/client/models/list_wallets200_response_balances_inner_wallet.py +0 -0
  44. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/client/models/list_wallets200_response_balances_inner_wallet_vesting_wallets_inner.py +0 -0
  45. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/client/models/list_wallets200_response_data_inner.py +0 -0
  46. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/client/models/list_wallets200_response_user_value.py +0 -0
  47. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/client/models/logout_default_response.py +0 -0
  48. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/client/models/logout_default_response_issues_inner.py +0 -0
  49. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/client/models/oauth_callback200_response.py +0 -0
  50. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/client/models/oauth_callback200_response_user.py +0 -0
  51. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/client/models/refresh_token_info200_response.py +0 -0
  52. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/client/models/refresh_token_info200_response_user_session.py +0 -0
  53. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/client/models/resend_verification_email_request.py +0 -0
  54. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/client/models/revoke_user_tokens_request.py +0 -0
  55. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/client/models/rotate_tokens200_response.py +0 -0
  56. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/client/models/token_info200_response.py +0 -0
  57. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/client/models/unlink_wallet_request.py +0 -0
  58. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/client/models/update_user_request.py +0 -0
  59. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/client/models/user_by_username200_response.py +0 -0
  60. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/client/models/user_reset_password_request.py +0 -0
  61. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/client/models/user_set_password_request.py +0 -0
  62. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/client/models/verify200_response.py +0 -0
  63. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/client/models/verify_email200_response.py +0 -0
  64. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/client/models/verify_email200_response_auth.py +0 -0
  65. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/client/models/verify_email200_response_auth_auth.py +0 -0
  66. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/client/models/verify_email_request.py +0 -0
  67. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/client/models/verify_wallet_request.py +0 -0
  68. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/client/models/wallet_verified200_response.py +0 -0
  69. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/client/models/whoami200_response.py +0 -0
  70. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/client/py.typed +0 -0
  71. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/client/rest.py +0 -0
  72. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/auth/main.py +0 -0
  73. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/cli/__init__.py +0 -0
  74. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/cli/__main__.py +0 -0
  75. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/cli/init.py +0 -0
  76. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/cli/templates/Dockerfile +0 -0
  77. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/cli/templates/__init__.py +0 -0
  78. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/cli/templates/auth.py +0 -0
  79. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/cli/templates/dependabot.yml +0 -0
  80. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/cli/templates/merge-env.sh +0 -0
  81. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/cli/templates/ruff.yml +0 -0
  82. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/cli/version.py +0 -0
  83. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/client.py +0 -0
  84. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/common/__init__.py +0 -0
  85. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/common/ansi_colors.py +0 -0
  86. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/common/auth.py +0 -0
  87. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/common/decorators.py +0 -0
  88. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/common/enums.py +0 -0
  89. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/common/logging.py +0 -0
  90. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/common/middleware.py +0 -0
  91. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/common/mixins.py +0 -0
  92. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/common/openapi.py +0 -0
  93. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/common/pagination.py +0 -0
  94. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/common/router/admin_router.py +0 -0
  95. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/common/router/status_router.py +0 -0
  96. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/common/scopes.py +0 -0
  97. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/common/urls.py +0 -0
  98. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/common/utils.py +0 -0
  99. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/common/warnings.py +0 -0
  100. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/hive/__init__.py +0 -0
  101. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/hive/client/__init__.py +0 -0
  102. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/hive/client/api/__init__.py +0 -0
  103. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/hive/client/api/admin_api.py +0 -0
  104. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/hive/client/api/data_api.py +0 -0
  105. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/hive/client/api/models_api.py +0 -0
  106. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/hive/client/api/status_api.py +0 -0
  107. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/hive/client/api_client.py +0 -0
  108. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/hive/client/api_response.py +0 -0
  109. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/hive/client/configuration.py +0 -0
  110. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/hive/client/exceptions.py +0 -0
  111. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/hive/client/models/__init__.py +0 -0
  112. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/hive/client/models/api_error_identifier.py +0 -0
  113. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/hive/client/models/api_error_level.py +0 -0
  114. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/hive/client/models/api_error_type.py +0 -0
  115. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/hive/client/models/coin_info.py +0 -0
  116. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/hive/client/models/coins.py +0 -0
  117. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/hive/client/models/data_download_response.py +0 -0
  118. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/hive/client/models/data_info.py +0 -0
  119. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/hive/client/models/data_options.py +0 -0
  120. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/hive/client/models/data_version.py +0 -0
  121. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/hive/client/models/data_version_info.py +0 -0
  122. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/hive/client/models/download_links.py +0 -0
  123. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/hive/client/models/evaluation.py +0 -0
  124. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/hive/client/models/evaluation_response.py +0 -0
  125. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/hive/client/models/exception_detail.py +0 -0
  126. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/hive/client/models/feature_size.py +0 -0
  127. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/hive/client/models/log_level.py +0 -0
  128. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/hive/client/models/model_create.py +0 -0
  129. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/hive/client/models/model_read.py +0 -0
  130. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/hive/client/models/model_status.py +0 -0
  131. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/hive/client/models/model_update.py +0 -0
  132. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/hive/client/models/target.py +0 -0
  133. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/hive/client/models/target_info.py +0 -0
  134. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/hive/client/models/target_type.py +0 -0
  135. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/hive/client/py.typed +0 -0
  136. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/hive/client/rest.py +0 -0
  137. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/hive/main.py +0 -0
  138. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/hive/utils.py +0 -0
  139. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/klines/__init__.py +0 -0
  140. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/klines/client/__init__.py +0 -0
  141. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/klines/client/api/__init__.py +0 -0
  142. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/klines/client/api/admin_api.py +0 -0
  143. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/klines/client/api/change_in_timeframe_api.py +0 -0
  144. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/klines/client/api/funding_rates_api.py +0 -0
  145. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/klines/client/api/ohlcv_data_api.py +0 -0
  146. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/klines/client/api/status_api.py +0 -0
  147. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/klines/client/api/symbols_api.py +0 -0
  148. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/klines/client/api/udf_api.py +0 -0
  149. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/klines/client/api_client.py +0 -0
  150. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/klines/client/api_response.py +0 -0
  151. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/klines/client/configuration.py +0 -0
  152. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/klines/client/exceptions.py +0 -0
  153. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/klines/client/models/__init__.py +0 -0
  154. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/klines/client/models/api_error_identifier.py +0 -0
  155. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/klines/client/models/api_error_level.py +0 -0
  156. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/klines/client/models/api_error_type.py +0 -0
  157. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/klines/client/models/change_in_timeframe.py +0 -0
  158. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/klines/client/models/exception_detail.py +0 -0
  159. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/klines/client/models/funding_rate.py +0 -0
  160. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/klines/client/models/funding_rate_response.py +0 -0
  161. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/klines/client/models/internal_exchange.py +0 -0
  162. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/klines/client/models/log_level.py +0 -0
  163. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/klines/client/models/market_type.py +0 -0
  164. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/klines/client/models/ohlcv.py +0 -0
  165. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/klines/client/models/resolution.py +0 -0
  166. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/klines/client/models/search_symbol.py +0 -0
  167. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/klines/client/models/sort_direction.py +0 -0
  168. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/klines/client/models/symbol_group.py +0 -0
  169. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/klines/client/models/symbol_info.py +0 -0
  170. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/klines/client/models/symbol_type.py +0 -0
  171. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/klines/client/models/timeframe.py +0 -0
  172. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/klines/client/models/udf_config.py +0 -0
  173. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/klines/client/py.typed +0 -0
  174. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/klines/client/rest.py +0 -0
  175. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/klines/main.py +0 -0
  176. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/metrics/__init__.py +0 -0
  177. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/metrics/client/__init__.py +0 -0
  178. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/metrics/client/api/__init__.py +0 -0
  179. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/metrics/client/api/admin_api.py +0 -0
  180. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/metrics/client/api/indicators_api.py +0 -0
  181. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/metrics/client/api/logs_api.py +0 -0
  182. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/metrics/client/api/marketcap_api.py +0 -0
  183. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/metrics/client/api/markets_api.py +0 -0
  184. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/metrics/client/api/quote_currencies_api.py +0 -0
  185. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/metrics/client/api/status_api.py +0 -0
  186. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/metrics/client/api/tokens_api.py +0 -0
  187. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/metrics/client/api_client.py +0 -0
  188. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/metrics/client/api_response.py +0 -0
  189. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/metrics/client/exceptions.py +0 -0
  190. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/metrics/client/models/__init__.py +0 -0
  191. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/metrics/client/models/api_error_level.py +0 -0
  192. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/metrics/client/models/api_error_type.py +0 -0
  193. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/metrics/client/models/exception_detail.py +0 -0
  194. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/metrics/client/models/exchange_availability.py +0 -0
  195. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/metrics/client/models/exchange_mapping.py +0 -0
  196. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/metrics/client/models/internal_exchange.py +0 -0
  197. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/metrics/client/models/log_level.py +0 -0
  198. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/metrics/client/models/market_type.py +0 -0
  199. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/metrics/client/models/marketcap_ranking.py +0 -0
  200. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/metrics/client/models/marketcap_symbol_ranking.py +0 -0
  201. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/metrics/client/models/ohlcv.py +0 -0
  202. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/metrics/client/models/severity.py +0 -0
  203. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/metrics/client/models/time_interval.py +0 -0
  204. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/metrics/client/models/trading_status.py +0 -0
  205. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/metrics/client/py.typed +0 -0
  206. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/metrics/client/rest.py +0 -0
  207. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/metrics/main.py +0 -0
  208. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/pay/__init__.py +0 -0
  209. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/pay/client/__init__.py +0 -0
  210. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/pay/client/api/__init__.py +0 -0
  211. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/pay/client/api/admin_api.py +0 -0
  212. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/pay/client/api/now_payments_api.py +0 -0
  213. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/pay/client/api/payments_api.py +0 -0
  214. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/pay/client/api/products_api.py +0 -0
  215. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/pay/client/api/status_api.py +0 -0
  216. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/pay/client/api_client.py +0 -0
  217. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/pay/client/api_response.py +0 -0
  218. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/pay/client/configuration.py +0 -0
  219. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/pay/client/exceptions.py +0 -0
  220. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/pay/client/models/__init__.py +0 -0
  221. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/pay/client/models/api_error_identifier.py +0 -0
  222. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/pay/client/models/api_error_level.py +0 -0
  223. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/pay/client/models/api_error_type.py +0 -0
  224. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/pay/client/models/exception_detail.py +0 -0
  225. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/pay/client/models/log_level.py +0 -0
  226. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/pay/client/models/now_create_invoice_req.py +0 -0
  227. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/pay/client/models/now_create_invoice_res.py +0 -0
  228. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/pay/client/models/payment.py +0 -0
  229. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/pay/client/models/payment_status.py +0 -0
  230. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/pay/client/models/product.py +0 -0
  231. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/pay/client/models/product_create.py +0 -0
  232. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/pay/client/models/product_update.py +0 -0
  233. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/pay/client/models/provider.py +0 -0
  234. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/pay/client/models/scope.py +0 -0
  235. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/pay/client/models/subscription.py +0 -0
  236. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/pay/client/py.typed +0 -0
  237. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/pay/client/rest.py +0 -0
  238. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/pay/main.py +0 -0
  239. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/trade/__init__.py +0 -0
  240. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/trade/client/__init__.py +0 -0
  241. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/trade/client/api/__init__.py +0 -0
  242. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/trade/client/api/admin_api.py +0 -0
  243. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/trade/client/api/bots_api.py +0 -0
  244. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/trade/client/api/exchanges_api.py +0 -0
  245. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/trade/client/api/futures_trading_panel_api.py +0 -0
  246. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/trade/client/api/notifications_api.py +0 -0
  247. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/trade/client/api/status_api.py +0 -0
  248. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/trade/client/api/strategies_api.py +0 -0
  249. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/trade/client/api/trading_actions_api.py +0 -0
  250. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/trade/client/api_client.py +0 -0
  251. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/trade/client/api_response.py +0 -0
  252. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/trade/client/configuration.py +0 -0
  253. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/trade/client/exceptions.py +0 -0
  254. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/trade/client/models/__init__.py +0 -0
  255. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/trade/client/models/api_error_level.py +0 -0
  256. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/trade/client/models/api_error_type.py +0 -0
  257. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/trade/client/models/bot.py +5 -5
  258. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/trade/client/models/bot_create.py +0 -0
  259. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/trade/client/models/bot_status.py +0 -0
  260. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/trade/client/models/bot_update.py +0 -0
  261. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/trade/client/models/exception_detail.py +0 -0
  262. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/trade/client/models/exchange.py +0 -0
  263. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/trade/client/models/exchange_key_create.py +0 -0
  264. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/trade/client/models/exchange_key_update.py +0 -0
  265. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/trade/client/models/execution_ids.py +0 -0
  266. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/trade/client/models/futures_balance.py +0 -0
  267. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/trade/client/models/futures_trading_action.py +5 -5
  268. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/trade/client/models/futures_trading_action_create.py +0 -0
  269. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/trade/client/models/log_level.py +0 -0
  270. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/trade/client/models/margin_mode.py +0 -0
  271. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/trade/client/models/market_type.py +0 -0
  272. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/trade/client/models/notification.py +5 -5
  273. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/trade/client/models/notification_create.py +0 -0
  274. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/trade/client/models/notification_update.py +0 -0
  275. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/trade/client/models/order.py +5 -5
  276. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/trade/client/models/order_status.py +0 -0
  277. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/trade/client/models/post_futures_action.py +0 -0
  278. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/trade/client/models/spot_trading_action_create.py +0 -0
  279. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/trade/client/models/strategy.py +5 -5
  280. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/trade/client/models/strategy_create.py +0 -0
  281. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/trade/client/models/strategy_exchange_info.py +0 -0
  282. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/trade/client/models/strategy_update.py +0 -0
  283. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/trade/client/models/tpsl.py +0 -0
  284. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/trade/client/models/trading_action_type.py +0 -0
  285. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/trade/client/py.typed +0 -0
  286. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/trade/client/rest.py +0 -0
  287. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn/trade/main.py +0 -0
  288. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn.egg-info/SOURCES.txt +0 -0
  289. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn.egg-info/dependency_links.txt +0 -0
  290. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn.egg-info/entry_points.txt +0 -0
  291. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn.egg-info/requires.txt +0 -0
  292. {crypticorn-2.12.0 → crypticorn-2.13.0}/crypticorn.egg-info/top_level.txt +0 -0
  293. {crypticorn-2.12.0 → crypticorn-2.13.0}/requirements/dev.txt +0 -0
  294. {crypticorn-2.12.0 → crypticorn-2.13.0}/requirements/extra.txt +0 -0
  295. {crypticorn-2.12.0 → crypticorn-2.13.0}/requirements/main.txt +0 -0
  296. {crypticorn-2.12.0 → crypticorn-2.13.0}/requirements/test.txt +0 -0
  297. {crypticorn-2.12.0 → crypticorn-2.13.0}/setup.cfg +0 -0
  298. {crypticorn-2.12.0 → crypticorn-2.13.0}/static/favicon.svg +0 -0
  299. {crypticorn-2.12.0 → crypticorn-2.13.0}/static/logo.svg +0 -0
  300. {crypticorn-2.12.0 → crypticorn-2.13.0}/static/pip-structure.drawio +0 -0
  301. {crypticorn-2.12.0 → crypticorn-2.13.0}/static/pip-structure.svg +0 -0
  302. {crypticorn-2.12.0 → crypticorn-2.13.0}/tests/test_auth_client.py +0 -0
  303. {crypticorn-2.12.0 → crypticorn-2.13.0}/tests/test_config.py +0 -0
  304. {crypticorn-2.12.0 → crypticorn-2.13.0}/tests/test_enums.py +0 -0
  305. {crypticorn-2.12.0 → crypticorn-2.13.0}/tests/test_errors.py +0 -0
  306. {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
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: crypticorn
3
- Version: 2.12.0
3
+ Version: 2.13.0
4
4
  Summary: Maximise Your Crypto Trading Profits with Machine Learning
5
5
  Author-email: Crypticorn <timon@crypticorn.com>
6
6
  License-Expression: MIT
@@ -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
- TRADING_ACTION_SKIPPED = "trading_action_skipped"
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
- TRADING_ACTION_SKIPPED = (
488
- ApiErrorIdentifier.TRADING_ACTION_SKIPPED,
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.TRADING_ACTION_SKIPPED: (
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 = "http://localhost/v1/metrics" if host is None else host
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": "http://localhost/v1/metrics",
562
+ "url": "https://api.crypticorn.dev/v1/metrics",
561
563
  "description": "No description provided",
562
564
  }
563
565
  ]
@@ -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
- MODEL_NAME_NOT_UNIQUE = "model_name_not_unique"
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
- TRADING_ACTION_SKIPPED = "trading_action_skipped"
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"