crypticorn 2.4.3__py3-none-any.whl → 2.4.5__py3-none-any.whl

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 (242) hide show
  1. crypticorn/auth/client/__init__.py +5 -5
  2. crypticorn/auth/client/api/admin_api.py +6 -6
  3. crypticorn/auth/client/api/auth_api.py +5 -5
  4. crypticorn/auth/client/api/service_api.py +5 -5
  5. crypticorn/auth/client/api/user_api.py +8 -8
  6. crypticorn/auth/client/api/wallet_api.py +5 -5
  7. crypticorn/auth/client/api_client.py +5 -5
  8. crypticorn/auth/client/configuration.py +13 -6
  9. crypticorn/auth/client/exceptions.py +5 -5
  10. crypticorn/auth/client/models/__init__.py +5 -5
  11. crypticorn/auth/client/models/add_wallet200_response.py +5 -5
  12. crypticorn/auth/client/models/add_wallet_request.py +5 -5
  13. crypticorn/auth/client/models/authorize_user200_response.py +5 -5
  14. crypticorn/auth/client/models/authorize_user200_response_auth.py +5 -5
  15. crypticorn/auth/client/models/authorize_user_request.py +5 -5
  16. crypticorn/auth/client/models/create_api_key200_response.py +5 -5
  17. crypticorn/auth/client/models/create_api_key_request.py +5 -5
  18. crypticorn/auth/client/models/create_user_request.py +5 -5
  19. crypticorn/auth/client/models/get_api_keys200_response_inner.py +5 -5
  20. crypticorn/auth/client/models/list_wallets200_response.py +5 -5
  21. crypticorn/auth/client/models/list_wallets200_response_balances_inner.py +5 -5
  22. crypticorn/auth/client/models/list_wallets200_response_balances_inner_sale_round.py +5 -5
  23. crypticorn/auth/client/models/list_wallets200_response_balances_inner_wallet.py +5 -5
  24. crypticorn/auth/client/models/list_wallets200_response_balances_inner_wallet_vesting_wallets_inner.py +5 -5
  25. crypticorn/auth/client/models/list_wallets200_response_data_inner.py +5 -5
  26. crypticorn/auth/client/models/list_wallets200_response_user_value.py +5 -5
  27. crypticorn/auth/client/models/logout_default_response.py +5 -5
  28. crypticorn/auth/client/models/logout_default_response_issues_inner.py +5 -5
  29. crypticorn/auth/client/models/oauth_callback200_response.py +5 -5
  30. crypticorn/auth/client/models/oauth_callback200_response_user.py +5 -5
  31. crypticorn/auth/client/models/refresh_token_info200_response.py +5 -5
  32. crypticorn/auth/client/models/refresh_token_info200_response_user_session.py +5 -5
  33. crypticorn/auth/client/models/resend_verification_email_request.py +5 -5
  34. crypticorn/auth/client/models/revoke_user_tokens_request.py +5 -5
  35. crypticorn/auth/client/models/rotate_tokens200_response.py +5 -5
  36. crypticorn/auth/client/models/token_info200_response.py +5 -5
  37. crypticorn/auth/client/models/unlink_wallet_request.py +5 -5
  38. crypticorn/auth/client/models/update_user_request.py +8 -6
  39. crypticorn/auth/client/models/user_reset_password_request.py +5 -5
  40. crypticorn/auth/client/models/user_set_password_request.py +5 -5
  41. crypticorn/auth/client/models/verify200_response.py +5 -5
  42. crypticorn/auth/client/models/verify_email200_response.py +5 -5
  43. crypticorn/auth/client/models/verify_email200_response_auth.py +5 -5
  44. crypticorn/auth/client/models/verify_email200_response_auth_auth.py +5 -5
  45. crypticorn/auth/client/models/verify_email_request.py +5 -5
  46. crypticorn/auth/client/models/verify_wallet_request.py +5 -5
  47. crypticorn/auth/client/models/wallet_verified200_response.py +5 -5
  48. crypticorn/auth/client/models/whoami200_response.py +5 -5
  49. crypticorn/auth/client/rest.py +9 -6
  50. crypticorn/client.py +28 -11
  51. crypticorn/common/auth.py +1 -1
  52. crypticorn/common/errors.py +11 -14
  53. crypticorn/common/scopes.py +5 -0
  54. crypticorn/common/sorter.py +2 -2
  55. crypticorn/common/utils.py +4 -2
  56. crypticorn/hive/client/__init__.py +5 -5
  57. crypticorn/hive/client/api/data_api.py +5 -5
  58. crypticorn/hive/client/api/models_api.py +5 -5
  59. crypticorn/hive/client/api/status_api.py +5 -5
  60. crypticorn/hive/client/api_client.py +5 -5
  61. crypticorn/hive/client/configuration.py +5 -5
  62. crypticorn/hive/client/exceptions.py +5 -5
  63. crypticorn/hive/client/models/__init__.py +5 -5
  64. crypticorn/hive/client/models/coins.py +5 -5
  65. crypticorn/hive/client/models/data_download_response.py +5 -5
  66. crypticorn/hive/client/models/data_info.py +5 -5
  67. crypticorn/hive/client/models/data_value_value_value_inner.py +5 -5
  68. crypticorn/hive/client/models/data_version.py +5 -5
  69. crypticorn/hive/client/models/download_links.py +5 -5
  70. crypticorn/hive/client/models/evaluation.py +5 -5
  71. crypticorn/hive/client/models/evaluation_response.py +5 -5
  72. crypticorn/hive/client/models/feature_size.py +5 -5
  73. crypticorn/hive/client/models/http_validation_error.py +5 -5
  74. crypticorn/hive/client/models/model.py +5 -5
  75. crypticorn/hive/client/models/model_create.py +5 -5
  76. crypticorn/hive/client/models/model_status.py +5 -5
  77. crypticorn/hive/client/models/model_update.py +5 -5
  78. crypticorn/hive/client/models/target.py +5 -5
  79. crypticorn/hive/client/models/target_type.py +5 -5
  80. crypticorn/hive/client/models/validation_error.py +5 -5
  81. crypticorn/hive/client/models/validation_error_loc_inner.py +5 -5
  82. crypticorn/hive/client/rest.py +5 -5
  83. crypticorn/klines/client/__init__.py +5 -5
  84. crypticorn/klines/client/api/funding_rates_api.py +5 -5
  85. crypticorn/klines/client/api/health_check_api.py +5 -5
  86. crypticorn/klines/client/api/ohlcv_data_api.py +5 -5
  87. crypticorn/klines/client/api/symbols_api.py +5 -5
  88. crypticorn/klines/client/api/udf_api.py +5 -5
  89. crypticorn/klines/client/api_client.py +5 -5
  90. crypticorn/klines/client/configuration.py +5 -5
  91. crypticorn/klines/client/exceptions.py +5 -5
  92. crypticorn/klines/client/models/__init__.py +5 -5
  93. crypticorn/klines/client/models/base_response_health_check_response.py +5 -5
  94. crypticorn/klines/client/models/base_response_list_funding_rate_response.py +5 -5
  95. crypticorn/klines/client/models/base_response_list_str.py +5 -5
  96. crypticorn/klines/client/models/base_response_ohlcv_response.py +5 -5
  97. crypticorn/klines/client/models/error_response.py +5 -5
  98. crypticorn/klines/client/models/exchange.py +5 -5
  99. crypticorn/klines/client/models/funding_rate_response.py +5 -5
  100. crypticorn/klines/client/models/health_check_response.py +5 -5
  101. crypticorn/klines/client/models/history_error_response.py +5 -5
  102. crypticorn/klines/client/models/history_no_data_response.py +5 -5
  103. crypticorn/klines/client/models/history_success_response.py +5 -5
  104. crypticorn/klines/client/models/http_validation_error.py +5 -5
  105. crypticorn/klines/client/models/market.py +5 -5
  106. crypticorn/klines/client/models/ohlcv_response.py +5 -5
  107. crypticorn/klines/client/models/resolution.py +5 -5
  108. crypticorn/klines/client/models/response_get_history_udf_history_get.py +5 -5
  109. crypticorn/klines/client/models/search_symbol_response.py +5 -5
  110. crypticorn/klines/client/models/sort_direction.py +5 -5
  111. crypticorn/klines/client/models/symbol_group_response.py +5 -5
  112. crypticorn/klines/client/models/symbol_info_response.py +5 -5
  113. crypticorn/klines/client/models/symbol_type.py +5 -5
  114. crypticorn/klines/client/models/timeframe.py +5 -5
  115. crypticorn/klines/client/models/udf_config_response.py +5 -5
  116. crypticorn/klines/client/models/validation_error.py +5 -5
  117. crypticorn/klines/client/models/validation_error_loc_inner.py +5 -5
  118. crypticorn/klines/client/rest.py +5 -5
  119. crypticorn/metrics/client/__init__.py +8 -6
  120. crypticorn/metrics/client/api/exchanges_api.py +62 -42
  121. crypticorn/metrics/client/api/health_check_api.py +5 -5
  122. crypticorn/metrics/client/api/indicators_api.py +47 -35
  123. crypticorn/metrics/client/api/logs_api.py +6 -6
  124. crypticorn/metrics/client/api/marketcap_api.py +22 -22
  125. crypticorn/metrics/client/api/markets_api.py +41 -28
  126. crypticorn/metrics/client/api/tokens_api.py +6 -6
  127. crypticorn/metrics/client/api_client.py +5 -5
  128. crypticorn/metrics/client/configuration.py +84 -39
  129. crypticorn/metrics/client/exceptions.py +5 -5
  130. crypticorn/metrics/client/models/__init__.py +8 -6
  131. crypticorn/metrics/client/models/base_response_dict.py +5 -5
  132. crypticorn/metrics/client/models/base_response_health_check_response.py +5 -5
  133. crypticorn/metrics/client/models/base_response_list_dict.py +5 -5
  134. crypticorn/metrics/client/models/base_response_list_exchange_mapping.py +5 -5
  135. crypticorn/metrics/client/models/base_response_list_str.py +5 -5
  136. crypticorn/metrics/client/models/error_response.py +5 -5
  137. crypticorn/metrics/client/models/exchange_mapping.py +5 -5
  138. crypticorn/metrics/client/models/health_check_response.py +5 -5
  139. crypticorn/metrics/client/models/http_validation_error.py +5 -5
  140. crypticorn/metrics/client/models/market.py +5 -5
  141. crypticorn/metrics/client/models/market_type.py +35 -0
  142. crypticorn/metrics/client/models/severity.py +5 -5
  143. crypticorn/metrics/client/models/time_interval.py +38 -0
  144. crypticorn/metrics/client/models/trading_status.py +35 -0
  145. crypticorn/metrics/client/models/validation_error.py +5 -5
  146. crypticorn/metrics/client/models/validation_error_loc_inner.py +5 -5
  147. crypticorn/metrics/client/rest.py +9 -6
  148. crypticorn/metrics/main.py +2 -2
  149. crypticorn/pay/client/__init__.py +6 -8
  150. crypticorn/pay/client/api/now_payments_api.py +5 -5
  151. crypticorn/pay/client/api/payments_api.py +73 -6
  152. crypticorn/pay/client/api/products_api.py +21 -23
  153. crypticorn/pay/client/api/status_api.py +5 -5
  154. crypticorn/pay/client/api_client.py +5 -5
  155. crypticorn/pay/client/configuration.py +13 -6
  156. crypticorn/pay/client/exceptions.py +5 -5
  157. crypticorn/pay/client/models/__init__.py +6 -8
  158. crypticorn/pay/client/models/api_status_res.py +5 -5
  159. crypticorn/pay/client/models/body_create_now_invoice.py +5 -5
  160. crypticorn/pay/client/models/body_create_product.py +5 -5
  161. crypticorn/pay/client/models/body_get_products.py +5 -5
  162. crypticorn/pay/client/models/body_handle_now_webhook.py +5 -5
  163. crypticorn/pay/client/models/body_update_product.py +5 -5
  164. crypticorn/pay/client/models/combined_payment_history.py +5 -5
  165. crypticorn/pay/client/models/create_invoice_req.py +5 -5
  166. crypticorn/pay/client/models/create_invoice_res.py +5 -5
  167. crypticorn/pay/client/models/currency.py +5 -5
  168. crypticorn/pay/client/models/estimate_price_req.py +5 -5
  169. crypticorn/pay/client/models/estimate_price_res.py +5 -5
  170. crypticorn/pay/client/models/get_currencies_res.py +5 -5
  171. crypticorn/pay/client/models/get_payment_status_res.py +5 -5
  172. crypticorn/pay/client/models/get_payments_list_res.py +5 -5
  173. crypticorn/pay/client/models/http_validation_error.py +5 -5
  174. crypticorn/pay/client/models/min_amount_req.py +5 -5
  175. crypticorn/pay/client/models/min_amount_res.py +5 -5
  176. crypticorn/pay/client/models/now_api_status_res.py +5 -5
  177. crypticorn/pay/client/models/now_create_invoice_req.py +5 -5
  178. crypticorn/pay/client/models/now_create_invoice_res.py +5 -5
  179. crypticorn/pay/client/models/now_fee_structure.py +5 -5
  180. crypticorn/pay/client/models/now_payment_model.py +5 -5
  181. crypticorn/pay/client/models/now_payment_status.py +5 -5
  182. crypticorn/pay/client/models/now_webhook_payload.py +5 -5
  183. crypticorn/pay/client/models/partial_product_update_model.py +5 -5
  184. crypticorn/pay/client/models/payment.py +5 -5
  185. crypticorn/pay/client/models/payment_status.py +5 -5
  186. crypticorn/pay/client/models/product.py +5 -5
  187. crypticorn/pay/client/models/product_model.py +5 -5
  188. crypticorn/pay/client/models/product_subs_model.py +5 -5
  189. crypticorn/pay/client/models/product_update_model.py +11 -11
  190. crypticorn/pay/client/models/scope.py +7 -7
  191. crypticorn/pay/client/models/services.py +5 -5
  192. crypticorn/pay/client/models/unified_payment_model.py +5 -5
  193. crypticorn/pay/client/models/validation_error.py +5 -5
  194. crypticorn/pay/client/models/validation_error_loc_inner.py +5 -5
  195. crypticorn/pay/client/rest.py +9 -6
  196. crypticorn/trade/client/__init__.py +5 -5
  197. crypticorn/trade/client/api/api_keys_api.py +5 -5
  198. crypticorn/trade/client/api/bots_api.py +5 -5
  199. crypticorn/trade/client/api/exchanges_api.py +5 -5
  200. crypticorn/trade/client/api/futures_trading_panel_api.py +5 -5
  201. crypticorn/trade/client/api/notifications_api.py +5 -5
  202. crypticorn/trade/client/api/orders_api.py +5 -5
  203. crypticorn/trade/client/api/status_api.py +5 -5
  204. crypticorn/trade/client/api/strategies_api.py +5 -5
  205. crypticorn/trade/client/api/trading_actions_api.py +5 -5
  206. crypticorn/trade/client/api_client.py +5 -5
  207. crypticorn/trade/client/configuration.py +13 -6
  208. crypticorn/trade/client/exceptions.py +5 -5
  209. crypticorn/trade/client/models/__init__.py +5 -5
  210. crypticorn/trade/client/models/action_model.py +5 -5
  211. crypticorn/trade/client/models/api_error_identifier.py +7 -6
  212. crypticorn/trade/client/models/api_error_level.py +5 -5
  213. crypticorn/trade/client/models/api_error_type.py +5 -5
  214. crypticorn/trade/client/models/api_key_model.py +5 -5
  215. crypticorn/trade/client/models/bot_model.py +5 -5
  216. crypticorn/trade/client/models/bot_status.py +5 -5
  217. crypticorn/trade/client/models/exchange.py +5 -5
  218. crypticorn/trade/client/models/exchange_key_model.py +5 -5
  219. crypticorn/trade/client/models/execution_ids.py +7 -7
  220. crypticorn/trade/client/models/futures_balance.py +5 -5
  221. crypticorn/trade/client/models/futures_trading_action.py +5 -5
  222. crypticorn/trade/client/models/http_validation_error.py +5 -5
  223. crypticorn/trade/client/models/margin_mode.py +5 -5
  224. crypticorn/trade/client/models/market_type.py +5 -5
  225. crypticorn/trade/client/models/notification_model.py +5 -5
  226. crypticorn/trade/client/models/order_model.py +5 -5
  227. crypticorn/trade/client/models/order_status.py +5 -5
  228. crypticorn/trade/client/models/post_futures_action.py +5 -5
  229. crypticorn/trade/client/models/strategy_exchange_info.py +5 -5
  230. crypticorn/trade/client/models/strategy_model_input.py +5 -5
  231. crypticorn/trade/client/models/strategy_model_output.py +5 -5
  232. crypticorn/trade/client/models/tpsl.py +5 -5
  233. crypticorn/trade/client/models/trading_action_type.py +5 -5
  234. crypticorn/trade/client/models/validation_error.py +5 -5
  235. crypticorn/trade/client/models/validation_error_loc_inner.py +5 -5
  236. crypticorn/trade/client/rest.py +9 -6
  237. {crypticorn-2.4.3.dist-info → crypticorn-2.4.5.dist-info}/METADATA +8 -9
  238. crypticorn-2.4.5.dist-info/RECORD +280 -0
  239. crypticorn-2.4.3.dist-info/RECORD +0 -277
  240. {crypticorn-2.4.3.dist-info → crypticorn-2.4.5.dist-info}/WHEEL +0 -0
  241. {crypticorn-2.4.3.dist-info → crypticorn-2.4.5.dist-info}/entry_points.txt +0 -0
  242. {crypticorn-2.4.3.dist-info → crypticorn-2.4.5.dist-info}/top_level.txt +0 -0
@@ -1,14 +1,14 @@
1
1
  # coding: utf-8
2
2
 
3
3
  """
4
- Crypticorn Auth API
4
+ Crypticorn Auth API
5
5
 
6
- OpenAPI compliant REST API built using tRPC with Express
6
+ OpenAPI compliant REST API built using tRPC with Express
7
7
 
8
- The version of the OpenAPI document: 1.0.0
9
- Generated by OpenAPI Generator (https://openapi-generator.tech)
8
+ The version of the OpenAPI document: 1.0.0
9
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
10
10
 
11
- Do not edit the class manually.
11
+ Do not edit the class manually.
12
12
  """ # noqa: E501
13
13
 
14
14
 
@@ -1,14 +1,14 @@
1
1
  # coding: utf-8
2
2
 
3
3
  """
4
- Crypticorn Auth API
4
+ Crypticorn Auth API
5
5
 
6
- OpenAPI compliant REST API built using tRPC with Express
6
+ OpenAPI compliant REST API built using tRPC with Express
7
7
 
8
- The version of the OpenAPI document: 1.0.0
9
- Generated by OpenAPI Generator (https://openapi-generator.tech)
8
+ The version of the OpenAPI document: 1.0.0
9
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
10
10
 
11
- Do not edit the class manually.
11
+ Do not edit the class manually.
12
12
  """ # noqa: E501
13
13
 
14
14
 
@@ -1,14 +1,14 @@
1
1
  # coding: utf-8
2
2
 
3
3
  """
4
- Crypticorn Auth API
4
+ Crypticorn Auth API
5
5
 
6
- OpenAPI compliant REST API built using tRPC with Express
6
+ OpenAPI compliant REST API built using tRPC with Express
7
7
 
8
- The version of the OpenAPI document: 1.0.0
9
- Generated by OpenAPI Generator (https://openapi-generator.tech)
8
+ The version of the OpenAPI document: 1.0.0
9
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
10
10
 
11
- Do not edit the class manually.
11
+ Do not edit the class manually.
12
12
  """ # noqa: E501
13
13
 
14
14
 
@@ -1,14 +1,14 @@
1
1
  # coding: utf-8
2
2
 
3
3
  """
4
- Crypticorn Auth API
4
+ Crypticorn Auth API
5
5
 
6
- OpenAPI compliant REST API built using tRPC with Express
6
+ OpenAPI compliant REST API built using tRPC with Express
7
7
 
8
- The version of the OpenAPI document: 1.0.0
9
- Generated by OpenAPI Generator (https://openapi-generator.tech)
8
+ The version of the OpenAPI document: 1.0.0
9
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
10
10
 
11
- Do not edit the class manually.
11
+ Do not edit the class manually.
12
12
  """ # noqa: E501
13
13
 
14
14
 
@@ -1,14 +1,14 @@
1
1
  # coding: utf-8
2
2
 
3
3
  """
4
- Crypticorn Auth API
4
+ Crypticorn Auth API
5
5
 
6
- OpenAPI compliant REST API built using tRPC with Express
6
+ OpenAPI compliant REST API built using tRPC with Express
7
7
 
8
- The version of the OpenAPI document: 1.0.0
9
- Generated by OpenAPI Generator (https://openapi-generator.tech)
8
+ The version of the OpenAPI document: 1.0.0
9
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
10
10
 
11
- Do not edit the class manually.
11
+ Do not edit the class manually.
12
12
  """ # noqa: E501
13
13
 
14
14
 
@@ -1,14 +1,14 @@
1
1
  # coding: utf-8
2
2
 
3
3
  """
4
- Crypticorn Auth API
4
+ Crypticorn Auth API
5
5
 
6
- OpenAPI compliant REST API built using tRPC with Express
6
+ OpenAPI compliant REST API built using tRPC with Express
7
7
 
8
- The version of the OpenAPI document: 1.0.0
9
- Generated by OpenAPI Generator (https://openapi-generator.tech)
8
+ The version of the OpenAPI document: 1.0.0
9
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
10
10
 
11
- Do not edit the class manually.
11
+ Do not edit the class manually.
12
12
  """ # noqa: E501
13
13
 
14
14
 
@@ -1,14 +1,14 @@
1
1
  # coding: utf-8
2
2
 
3
3
  """
4
- Crypticorn Auth API
4
+ Crypticorn Auth API
5
5
 
6
- OpenAPI compliant REST API built using tRPC with Express
6
+ OpenAPI compliant REST API built using tRPC with Express
7
7
 
8
- The version of the OpenAPI document: 1.0.0
9
- Generated by OpenAPI Generator (https://openapi-generator.tech)
8
+ The version of the OpenAPI document: 1.0.0
9
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
10
10
 
11
- Do not edit the class manually.
11
+ Do not edit the class manually.
12
12
  """ # noqa: E501
13
13
 
14
14
 
@@ -1,14 +1,14 @@
1
1
  # coding: utf-8
2
2
 
3
3
  """
4
- Crypticorn Auth API
4
+ Crypticorn Auth API
5
5
 
6
- OpenAPI compliant REST API built using tRPC with Express
6
+ OpenAPI compliant REST API built using tRPC with Express
7
7
 
8
- The version of the OpenAPI document: 1.0.0
9
- Generated by OpenAPI Generator (https://openapi-generator.tech)
8
+ The version of the OpenAPI document: 1.0.0
9
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
10
10
 
11
- Do not edit the class manually.
11
+ Do not edit the class manually.
12
12
  """ # noqa: E501
13
13
 
14
14
 
@@ -1,14 +1,14 @@
1
1
  # coding: utf-8
2
2
 
3
3
  """
4
- Crypticorn Auth API
4
+ Crypticorn Auth API
5
5
 
6
- OpenAPI compliant REST API built using tRPC with Express
6
+ OpenAPI compliant REST API built using tRPC with Express
7
7
 
8
- The version of the OpenAPI document: 1.0.0
9
- Generated by OpenAPI Generator (https://openapi-generator.tech)
8
+ The version of the OpenAPI document: 1.0.0
9
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
10
10
 
11
- Do not edit the class manually.
11
+ Do not edit the class manually.
12
12
  """ # noqa: E501
13
13
 
14
14
 
@@ -1,14 +1,14 @@
1
1
  # coding: utf-8
2
2
 
3
3
  """
4
- Crypticorn Auth API
4
+ Crypticorn Auth API
5
5
 
6
- OpenAPI compliant REST API built using tRPC with Express
6
+ OpenAPI compliant REST API built using tRPC with Express
7
7
 
8
- The version of the OpenAPI document: 1.0.0
9
- Generated by OpenAPI Generator (https://openapi-generator.tech)
8
+ The version of the OpenAPI document: 1.0.0
9
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
10
10
 
11
- Do not edit the class manually.
11
+ Do not edit the class manually.
12
12
  """ # noqa: E501
13
13
 
14
14
 
@@ -32,7 +32,8 @@ class UpdateUserRequest(BaseModel):
32
32
  name: Optional[StrictStr] = None
33
33
  email: Optional[StrictStr] = None
34
34
  username: Optional[StrictStr] = None
35
- __properties: ClassVar[List[str]] = ["id", "name", "email", "username"]
35
+ picture: Optional[StrictStr] = None
36
+ __properties: ClassVar[List[str]] = ["id", "name", "email", "username", "picture"]
36
37
 
37
38
  model_config = ConfigDict(
38
39
  populate_by_name=True,
@@ -88,6 +89,7 @@ class UpdateUserRequest(BaseModel):
88
89
  "name": obj.get("name"),
89
90
  "email": obj.get("email"),
90
91
  "username": obj.get("username"),
92
+ "picture": obj.get("picture"),
91
93
  }
92
94
  )
93
95
  return _obj
@@ -1,14 +1,14 @@
1
1
  # coding: utf-8
2
2
 
3
3
  """
4
- Crypticorn Auth API
4
+ Crypticorn Auth API
5
5
 
6
- OpenAPI compliant REST API built using tRPC with Express
6
+ OpenAPI compliant REST API built using tRPC with Express
7
7
 
8
- The version of the OpenAPI document: 1.0.0
9
- Generated by OpenAPI Generator (https://openapi-generator.tech)
8
+ The version of the OpenAPI document: 1.0.0
9
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
10
10
 
11
- Do not edit the class manually.
11
+ Do not edit the class manually.
12
12
  """ # noqa: E501
13
13
 
14
14
 
@@ -1,14 +1,14 @@
1
1
  # coding: utf-8
2
2
 
3
3
  """
4
- Crypticorn Auth API
4
+ Crypticorn Auth API
5
5
 
6
- OpenAPI compliant REST API built using tRPC with Express
6
+ OpenAPI compliant REST API built using tRPC with Express
7
7
 
8
- The version of the OpenAPI document: 1.0.0
9
- Generated by OpenAPI Generator (https://openapi-generator.tech)
8
+ The version of the OpenAPI document: 1.0.0
9
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
10
10
 
11
- Do not edit the class manually.
11
+ Do not edit the class manually.
12
12
  """ # noqa: E501
13
13
 
14
14
 
@@ -1,14 +1,14 @@
1
1
  # coding: utf-8
2
2
 
3
3
  """
4
- Crypticorn Auth API
4
+ Crypticorn Auth API
5
5
 
6
- OpenAPI compliant REST API built using tRPC with Express
6
+ OpenAPI compliant REST API built using tRPC with Express
7
7
 
8
- The version of the OpenAPI document: 1.0.0
9
- Generated by OpenAPI Generator (https://openapi-generator.tech)
8
+ The version of the OpenAPI document: 1.0.0
9
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
10
10
 
11
- Do not edit the class manually.
11
+ Do not edit the class manually.
12
12
  """ # noqa: E501
13
13
 
14
14
 
@@ -1,14 +1,14 @@
1
1
  # coding: utf-8
2
2
 
3
3
  """
4
- Crypticorn Auth API
4
+ Crypticorn Auth API
5
5
 
6
- OpenAPI compliant REST API built using tRPC with Express
6
+ OpenAPI compliant REST API built using tRPC with Express
7
7
 
8
- The version of the OpenAPI document: 1.0.0
9
- Generated by OpenAPI Generator (https://openapi-generator.tech)
8
+ The version of the OpenAPI document: 1.0.0
9
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
10
10
 
11
- Do not edit the class manually.
11
+ Do not edit the class manually.
12
12
  """ # noqa: E501
13
13
 
14
14
 
@@ -1,14 +1,14 @@
1
1
  # coding: utf-8
2
2
 
3
3
  """
4
- Crypticorn Auth API
4
+ Crypticorn Auth API
5
5
 
6
- OpenAPI compliant REST API built using tRPC with Express
6
+ OpenAPI compliant REST API built using tRPC with Express
7
7
 
8
- The version of the OpenAPI document: 1.0.0
9
- Generated by OpenAPI Generator (https://openapi-generator.tech)
8
+ The version of the OpenAPI document: 1.0.0
9
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
10
10
 
11
- Do not edit the class manually.
11
+ Do not edit the class manually.
12
12
  """ # noqa: E501
13
13
 
14
14
 
@@ -1,14 +1,14 @@
1
1
  # coding: utf-8
2
2
 
3
3
  """
4
- Crypticorn Auth API
4
+ Crypticorn Auth API
5
5
 
6
- OpenAPI compliant REST API built using tRPC with Express
6
+ OpenAPI compliant REST API built using tRPC with Express
7
7
 
8
- The version of the OpenAPI document: 1.0.0
9
- Generated by OpenAPI Generator (https://openapi-generator.tech)
8
+ The version of the OpenAPI document: 1.0.0
9
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
10
10
 
11
- Do not edit the class manually.
11
+ Do not edit the class manually.
12
12
  """ # noqa: E501
13
13
 
14
14
 
@@ -1,14 +1,14 @@
1
1
  # coding: utf-8
2
2
 
3
3
  """
4
- Crypticorn Auth API
4
+ Crypticorn Auth API
5
5
 
6
- OpenAPI compliant REST API built using tRPC with Express
6
+ OpenAPI compliant REST API built using tRPC with Express
7
7
 
8
- The version of the OpenAPI document: 1.0.0
9
- Generated by OpenAPI Generator (https://openapi-generator.tech)
8
+ The version of the OpenAPI document: 1.0.0
9
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
10
10
 
11
- Do not edit the class manually.
11
+ Do not edit the class manually.
12
12
  """ # noqa: E501
13
13
 
14
14
 
@@ -1,14 +1,14 @@
1
1
  # coding: utf-8
2
2
 
3
3
  """
4
- Crypticorn Auth API
4
+ Crypticorn Auth API
5
5
 
6
- OpenAPI compliant REST API built using tRPC with Express
6
+ OpenAPI compliant REST API built using tRPC with Express
7
7
 
8
- The version of the OpenAPI document: 1.0.0
9
- Generated by OpenAPI Generator (https://openapi-generator.tech)
8
+ The version of the OpenAPI document: 1.0.0
9
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
10
10
 
11
- Do not edit the class manually.
11
+ Do not edit the class manually.
12
12
  """ # noqa: E501
13
13
 
14
14
 
@@ -1,14 +1,14 @@
1
1
  # coding: utf-8
2
2
 
3
3
  """
4
- Crypticorn Auth API
4
+ Crypticorn Auth API
5
5
 
6
- OpenAPI compliant REST API built using tRPC with Express
6
+ OpenAPI compliant REST API built using tRPC with Express
7
7
 
8
- The version of the OpenAPI document: 1.0.0
9
- Generated by OpenAPI Generator (https://openapi-generator.tech)
8
+ The version of the OpenAPI document: 1.0.0
9
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
10
10
 
11
- Do not edit the class manually.
11
+ Do not edit the class manually.
12
12
  """ # noqa: E501
13
13
 
14
14
 
@@ -1,14 +1,14 @@
1
1
  # coding: utf-8
2
2
 
3
3
  """
4
- Crypticorn Auth API
4
+ Crypticorn Auth API
5
5
 
6
- OpenAPI compliant REST API built using tRPC with Express
6
+ OpenAPI compliant REST API built using tRPC with Express
7
7
 
8
- The version of the OpenAPI document: 1.0.0
9
- Generated by OpenAPI Generator (https://openapi-generator.tech)
8
+ The version of the OpenAPI document: 1.0.0
9
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
10
10
 
11
- Do not edit the class manually.
11
+ Do not edit the class manually.
12
12
  """ # noqa: E501
13
13
 
14
14
 
@@ -1,14 +1,14 @@
1
1
  # coding: utf-8
2
2
 
3
3
  """
4
- Crypticorn Auth API
4
+ Crypticorn Auth API
5
5
 
6
- OpenAPI compliant REST API built using tRPC with Express
6
+ OpenAPI compliant REST API built using tRPC with Express
7
7
 
8
- The version of the OpenAPI document: 1.0.0
9
- Generated by OpenAPI Generator (https://openapi-generator.tech)
8
+ The version of the OpenAPI document: 1.0.0
9
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
10
10
 
11
- Do not edit the class manually.
11
+ Do not edit the class manually.
12
12
  """ # noqa: E501
13
13
 
14
14
 
@@ -57,7 +57,10 @@ class RESTClientObject:
57
57
  # maxsize is number of requests to host that are allowed in parallel
58
58
  self.maxsize = configuration.connection_pool_maxsize
59
59
 
60
- self.ssl_context = ssl.create_default_context(cafile=configuration.ssl_ca_cert)
60
+ self.ssl_context = ssl.create_default_context(
61
+ cafile=configuration.ssl_ca_cert,
62
+ cadata=configuration.ca_cert_data,
63
+ )
61
64
  if configuration.cert_file:
62
65
  self.ssl_context.load_cert_chain(
63
66
  configuration.cert_file, keyfile=configuration.key_file
crypticorn/client.py CHANGED
@@ -1,9 +1,11 @@
1
- from crypticorn.hive import HiveClient, Configuration
2
- from crypticorn.klines import KlinesClient
3
- from crypticorn.pay import PayClient
4
- from crypticorn.trade import TradeClient
5
- from crypticorn.metrics import MetricsClient
6
- from crypticorn.auth import AuthClient
1
+ from typing import Union
2
+
3
+ from crypticorn.hive import HiveClient, Configuration as HiveConfig
4
+ from crypticorn.klines import KlinesClient, Configuration as KlinesConfig
5
+ from crypticorn.pay import PayClient, Configuration as PayConfig
6
+ from crypticorn.trade import TradeClient, Configuration as TradeConfig
7
+ from crypticorn.metrics import MetricsClient, Configuration as MetricsConfig
8
+ from crypticorn.auth import AuthClient, Configuration as AuthConfig
7
9
  from crypticorn.common import BaseUrl, ApiVersion, Service, apikey_header as aph
8
10
  import warnings
9
11
 
@@ -64,16 +66,31 @@ class ApiClient:
64
66
  """
65
67
  Get the default configuration for a given service.
66
68
  """
67
- return Configuration(
69
+ config_class = {
70
+ Service.HIVE: HiveConfig,
71
+ Service.TRADE: TradeConfig,
72
+ Service.KLINES: KlinesConfig,
73
+ Service.PAY: PayConfig,
74
+ Service.METRICS: MetricsConfig,
75
+ Service.AUTH: AuthConfig,
76
+ }[service]
77
+ return config_class(
68
78
  host=f"{self.base_url}/{version}/{service}",
69
79
  access_token=self.jwt,
70
80
  api_key={aph.scheme_name: self.api_key} if self.api_key else None,
71
- api_key_prefix=(
72
- {aph.scheme_name: aph.model.name} if self.api_key else None
73
- ),
81
+ # not necessary
82
+ # api_key_prefix=(
83
+ # {aph.scheme_name: aph.model.name} if self.api_key else None
84
+ # ),
74
85
  )
75
86
 
76
- def configure(self, config: Configuration, sub_client: any):
87
+ def configure(
88
+ self,
89
+ config: Union[
90
+ HiveConfig, TradeConfig, KlinesConfig, PayConfig, MetricsConfig, AuthConfig
91
+ ],
92
+ sub_client: any,
93
+ ):
77
94
  """
78
95
  Update a sub-client's configuration by overriding with the values set in the new config.
79
96
  Useful for testing a specific service against a local server instead of the default proxy.
crypticorn/common/auth.py CHANGED
@@ -53,7 +53,7 @@ class AuthHandler:
53
53
  detail=ApiError.NO_CREDENTIALS.identifier,
54
54
  )
55
55
 
56
- async def _verify_api_key(self, api_key: str) -> None:
56
+ async def _verify_api_key(self, api_key: str) -> Verify200Response:
57
57
  """
58
58
  Verifies the API key.
59
59
  """
@@ -1,4 +1,4 @@
1
- from enum import Enum, EnumMeta
1
+ from enum import Enum, EnumMeta, StrEnum
2
2
  import logging
3
3
  from fastapi import status
4
4
 
@@ -6,15 +6,19 @@ logger = logging.getLogger(__name__)
6
6
 
7
7
 
8
8
  class Fallback(EnumMeta):
9
+ """Fallback to UNKNOWN_ERROR for error codes not yet published to PyPI."""
10
+
9
11
  def __getattr__(cls, name):
10
- """Fallback to UNKNOWN_ERROR for error codes not yet published to PyPI."""
12
+ # Let Pydantic/internal stuff pass silently ! fragile
13
+ if name.startswith("__"):
14
+ raise AttributeError(name)
11
15
  logger.warning(
12
16
  f"Unknown error code '{name}' - update crypticorn package or check for typos"
13
17
  )
14
18
  return cls.UNKNOWN_ERROR
15
19
 
16
20
 
17
- class ApiErrorType(str, Enum):
21
+ class ApiErrorType(StrEnum):
18
22
  """Type of API error"""
19
23
 
20
24
  USER_ERROR = "user error"
@@ -27,7 +31,7 @@ class ApiErrorType(str, Enum):
27
31
  """error that does not need to be handled or does not affect the program or is a placeholder."""
28
32
 
29
33
 
30
- class ApiErrorIdentifier(str, Enum):
34
+ class ApiErrorIdentifier(StrEnum):
31
35
  """API error identifiers"""
32
36
 
33
37
  ALLOCATION_BELOW_EXPOSURE = "allocation_below_current_exposure"
@@ -97,7 +101,7 @@ class ApiErrorIdentifier(str, Enum):
97
101
  URL_NOT_FOUND = "requested_resource_not_found"
98
102
 
99
103
 
100
- class ApiErrorLevel(str, Enum):
104
+ class ApiErrorLevel(StrEnum):
101
105
  """API error levels"""
102
106
 
103
107
  ERROR = "error"
@@ -445,7 +449,7 @@ class ApiError(Enum, metaclass=Fallback):
445
449
  def level(self) -> ApiErrorLevel:
446
450
  """Level of the error."""
447
451
  return self.value[2]
448
-
452
+
449
453
  @property
450
454
  def status_code(self) -> int:
451
455
  """HTTP status code for the error."""
@@ -454,6 +458,7 @@ class ApiError(Enum, metaclass=Fallback):
454
458
 
455
459
  class HttpStatusMapper:
456
460
  """Map API errors to HTTP status codes."""
461
+
457
462
  # TODO: decide if we need all of these mappings, since most errors are not exposed to the client via HTTP
458
463
  # in case we remove some, update the pytest length check
459
464
  _mapping = {
@@ -466,33 +471,27 @@ class HttpStatusMapper:
466
471
  ApiError.EXCHANGE_PERMISSION_DENIED: status.HTTP_403_FORBIDDEN,
467
472
  ApiError.EXCHANGE_USER_FROZEN: status.HTTP_403_FORBIDDEN,
468
473
  ApiError.TRADING_LOCKED: status.HTTP_403_FORBIDDEN,
469
-
470
474
  # Not Found
471
475
  ApiError.URL_NOT_FOUND: status.HTTP_404_NOT_FOUND,
472
476
  ApiError.OBJECT_NOT_FOUND: status.HTTP_404_NOT_FOUND,
473
477
  ApiError.ORDER_NOT_FOUND: status.HTTP_404_NOT_FOUND,
474
478
  ApiError.POSITION_NOT_FOUND: status.HTTP_404_NOT_FOUND,
475
479
  ApiError.SYMBOL_NOT_FOUND: status.HTTP_404_NOT_FOUND,
476
-
477
480
  # Conflicts/Duplicates
478
481
  ApiError.CLIENT_ORDER_ID_REPEATED: status.HTTP_409_CONFLICT,
479
482
  ApiError.OBJECT_ALREADY_EXISTS: status.HTTP_409_CONFLICT,
480
483
  ApiError.EXCHANGE_KEY_ALREADY_EXISTS: status.HTTP_409_CONFLICT,
481
484
  ApiError.BOT_ALREADY_DELETED: status.HTTP_409_CONFLICT,
482
-
483
485
  # Invalid Content
484
486
  ApiError.CONTENT_TYPE_ERROR: status.HTTP_415_UNSUPPORTED_MEDIA_TYPE,
485
-
486
487
  # Rate Limits
487
488
  ApiError.EXCHANGE_RATE_LIMIT: status.HTTP_429_TOO_MANY_REQUESTS,
488
489
  ApiError.REQUEST_SCOPE_EXCEEDED: status.HTTP_429_TOO_MANY_REQUESTS,
489
-
490
490
  # Server Errors
491
491
  ApiError.UNKNOWN_ERROR: status.HTTP_500_INTERNAL_SERVER_ERROR,
492
492
  ApiError.EXCHANGE_SYSTEM_ERROR: status.HTTP_500_INTERNAL_SERVER_ERROR,
493
493
  ApiError.NOW_API_DOWN: status.HTTP_500_INTERNAL_SERVER_ERROR,
494
494
  ApiError.RPC_TIMEOUT: status.HTTP_500_INTERNAL_SERVER_ERROR,
495
-
496
495
  # Service Unavailable
497
496
  ApiError.EXCHANGE_SERVICE_UNAVAILABLE: status.HTTP_503_SERVICE_UNAVAILABLE,
498
497
  ApiError.EXCHANGE_MAINTENANCE: status.HTTP_503_SERVICE_UNAVAILABLE,
@@ -500,7 +499,6 @@ class HttpStatusMapper:
500
499
  ApiError.SETTLEMENT_IN_PROGRESS: status.HTTP_503_SERVICE_UNAVAILABLE,
501
500
  ApiError.POSITION_SUSPENDED: status.HTTP_503_SERVICE_UNAVAILABLE,
502
501
  ApiError.TRADING_SUSPENDED: status.HTTP_503_SERVICE_UNAVAILABLE,
503
-
504
502
  # Bad Requests (400) - Invalid parameters or states
505
503
  ApiError.ALLOCATION_BELOW_EXPOSURE: status.HTTP_400_BAD_REQUEST,
506
504
  ApiError.ALLOCATION_BELOW_MINIMUM: status.HTTP_400_BAD_REQUEST,
@@ -535,7 +533,6 @@ class HttpStatusMapper:
535
533
  ApiError.STRATEGY_NOT_SUPPORTING_EXCHANGE: status.HTTP_400_BAD_REQUEST,
536
534
  ApiError.TRADING_ACTION_EXPIRED: status.HTTP_400_BAD_REQUEST,
537
535
  ApiError.TRADING_ACTION_SKIPPED: status.HTTP_400_BAD_REQUEST,
538
-
539
536
  # Success cases
540
537
  ApiError.SUCCESS: status.HTTP_200_OK,
541
538
  ApiError.BOT_STOPPING_COMPLETED: status.HTTP_200_OK,
@@ -6,8 +6,13 @@ logger = logging.getLogger("uvicorn")
6
6
 
7
7
  class Fallback(EnumMeta):
8
8
  """Fallback to no scope for unknown scopes."""
9
+ # Note: This is a workaround to avoid the AttributeError when an unknown scope is accessed.
10
+ # As soon as we have stable scopes, we can remove this.
9
11
 
10
12
  def __getattr__(cls, name):
13
+ # Let Pydantic/internal stuff pass silently ! fragile
14
+ if name.startswith("__"):
15
+ raise AttributeError(name)
11
16
  logger.warning(
12
17
  f"Unknown scope '{name}' - falling back to no scope - update crypticorn package or check for typos"
13
18
  )