crypticorn 2.15.0__py3-none-any.whl → 2.17.0__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.
- crypticorn/__init__.py +2 -2
- crypticorn/auth/client/api/admin_api.py +397 -13
- crypticorn/auth/client/api/auth_api.py +3610 -341
- crypticorn/auth/client/api/service_api.py +249 -7
- crypticorn/auth/client/api/user_api.py +2295 -179
- crypticorn/auth/client/api/wallet_api.py +1468 -81
- crypticorn/auth/client/configuration.py +2 -2
- crypticorn/auth/client/models/create_api_key_request.py +2 -1
- crypticorn/auth/client/models/get_api_keys200_response_inner.py +2 -1
- crypticorn/auth/client/rest.py +23 -4
- crypticorn/auth/main.py +8 -5
- crypticorn/cli/init.py +1 -1
- crypticorn/cli/templates/.env.docker.temp +3 -0
- crypticorn/cli/templates/.env.example.temp +4 -0
- crypticorn/cli/templates/Dockerfile +5 -2
- crypticorn/client.py +226 -59
- crypticorn/common/__init__.py +1 -0
- crypticorn/common/auth.py +45 -14
- crypticorn/common/decorators.py +1 -2
- crypticorn/common/enums.py +0 -2
- crypticorn/common/errors.py +10 -0
- crypticorn/common/metrics.py +30 -0
- crypticorn/common/middleware.py +94 -1
- crypticorn/common/pagination.py +252 -18
- crypticorn/common/router/admin_router.py +2 -2
- crypticorn/common/router/status_router.py +40 -2
- crypticorn/common/scopes.py +2 -0
- crypticorn/common/warnings.py +8 -0
- crypticorn/dex/__init__.py +6 -0
- crypticorn/dex/client/__init__.py +49 -0
- crypticorn/dex/client/api/__init__.py +6 -0
- crypticorn/dex/client/api/admin_api.py +2986 -0
- crypticorn/dex/client/api/signals_api.py +1798 -0
- crypticorn/dex/client/api/status_api.py +892 -0
- crypticorn/dex/client/api_client.py +758 -0
- crypticorn/dex/client/api_response.py +20 -0
- crypticorn/dex/client/configuration.py +620 -0
- crypticorn/dex/client/exceptions.py +220 -0
- crypticorn/dex/client/models/__init__.py +30 -0
- crypticorn/dex/client/models/api_error_identifier.py +121 -0
- crypticorn/dex/client/models/api_error_level.py +37 -0
- crypticorn/dex/client/models/api_error_type.py +37 -0
- crypticorn/dex/client/models/exception_detail.py +117 -0
- crypticorn/dex/client/models/log_level.py +38 -0
- crypticorn/dex/client/models/paginated_response_signal_with_token.py +134 -0
- crypticorn/dex/client/models/risk.py +86 -0
- crypticorn/dex/client/models/signal_overview_stats.py +158 -0
- crypticorn/dex/client/models/signal_volume.py +84 -0
- crypticorn/dex/client/models/signal_with_token.py +163 -0
- crypticorn/dex/client/models/token_data.py +127 -0
- crypticorn/dex/client/models/token_detail.py +116 -0
- crypticorn/dex/client/py.typed +0 -0
- crypticorn/dex/client/rest.py +217 -0
- crypticorn/dex/main.py +1 -0
- crypticorn/hive/client/api/admin_api.py +1173 -47
- crypticorn/hive/client/api/data_api.py +499 -17
- crypticorn/hive/client/api/models_api.py +1595 -87
- crypticorn/hive/client/api/status_api.py +397 -16
- crypticorn/hive/client/api_client.py +0 -5
- crypticorn/hive/client/models/api_error_identifier.py +1 -1
- crypticorn/hive/client/models/coin_info.py +1 -1
- crypticorn/hive/client/models/exception_detail.py +1 -1
- crypticorn/hive/client/models/target_info.py +1 -1
- crypticorn/hive/client/rest.py +23 -4
- crypticorn/hive/main.py +99 -25
- crypticorn/hive/utils.py +2 -2
- crypticorn/klines/client/api/admin_api.py +1173 -47
- crypticorn/klines/client/api/change_in_timeframe_api.py +269 -11
- crypticorn/klines/client/api/funding_rates_api.py +315 -11
- crypticorn/klines/client/api/ohlcv_data_api.py +390 -11
- crypticorn/klines/client/api/status_api.py +397 -16
- crypticorn/klines/client/api/symbols_api.py +216 -11
- crypticorn/klines/client/api/udf_api.py +1268 -51
- crypticorn/klines/client/api_client.py +0 -5
- crypticorn/klines/client/models/api_error_identifier.py +3 -1
- crypticorn/klines/client/models/exception_detail.py +1 -1
- crypticorn/klines/client/models/ohlcv.py +1 -1
- crypticorn/klines/client/models/symbol_group.py +1 -1
- crypticorn/klines/client/models/udf_config.py +1 -1
- crypticorn/klines/client/rest.py +23 -4
- crypticorn/klines/main.py +89 -12
- crypticorn/metrics/client/api/admin_api.py +1173 -47
- crypticorn/metrics/client/api/exchanges_api.py +1370 -145
- crypticorn/metrics/client/api/indicators_api.py +622 -17
- crypticorn/metrics/client/api/logs_api.py +296 -11
- crypticorn/metrics/client/api/marketcap_api.py +1207 -67
- crypticorn/metrics/client/api/markets_api.py +343 -11
- crypticorn/metrics/client/api/quote_currencies_api.py +228 -11
- crypticorn/metrics/client/api/status_api.py +397 -16
- crypticorn/metrics/client/api/tokens_api.py +382 -15
- crypticorn/metrics/client/api_client.py +0 -5
- crypticorn/metrics/client/configuration.py +4 -2
- crypticorn/metrics/client/models/exception_detail.py +1 -1
- crypticorn/metrics/client/models/exchange_mapping.py +1 -1
- crypticorn/metrics/client/models/marketcap_ranking.py +1 -1
- crypticorn/metrics/client/models/marketcap_symbol_ranking.py +1 -1
- crypticorn/metrics/client/models/ohlcv.py +1 -1
- crypticorn/metrics/client/rest.py +23 -4
- crypticorn/metrics/main.py +113 -19
- crypticorn/pay/client/api/admin_api.py +1585 -57
- crypticorn/pay/client/api/now_payments_api.py +961 -39
- crypticorn/pay/client/api/payments_api.py +562 -17
- crypticorn/pay/client/api/products_api.py +880 -30
- crypticorn/pay/client/api/status_api.py +397 -16
- crypticorn/pay/client/api_client.py +0 -5
- crypticorn/pay/client/configuration.py +2 -2
- crypticorn/pay/client/models/api_error_identifier.py +7 -7
- crypticorn/pay/client/models/exception_detail.py +1 -1
- crypticorn/pay/client/models/now_create_invoice_req.py +1 -1
- crypticorn/pay/client/models/now_create_invoice_res.py +1 -1
- crypticorn/pay/client/models/product.py +1 -1
- crypticorn/pay/client/models/product_create.py +1 -1
- crypticorn/pay/client/models/product_update.py +1 -1
- crypticorn/pay/client/models/scope.py +1 -0
- crypticorn/pay/client/rest.py +23 -4
- crypticorn/pay/main.py +10 -6
- crypticorn/trade/client/__init__.py +11 -1
- crypticorn/trade/client/api/__init__.py +0 -1
- crypticorn/trade/client/api/admin_api.py +1184 -55
- crypticorn/trade/client/api/api_keys_api.py +1678 -162
- crypticorn/trade/client/api/bots_api.py +7563 -187
- crypticorn/trade/client/api/exchanges_api.py +565 -19
- crypticorn/trade/client/api/notifications_api.py +1290 -116
- crypticorn/trade/client/api/orders_api.py +393 -55
- crypticorn/trade/client/api/status_api.py +397 -13
- crypticorn/trade/client/api/strategies_api.py +1133 -77
- crypticorn/trade/client/api/trading_actions_api.py +786 -65
- crypticorn/trade/client/models/__init__.py +11 -0
- crypticorn/trade/client/models/actions_count.py +88 -0
- crypticorn/trade/client/models/api_error_identifier.py +8 -7
- crypticorn/trade/client/models/bot.py +7 -18
- crypticorn/trade/client/models/bot_create.py +17 -1
- crypticorn/trade/client/models/bot_update.py +17 -1
- crypticorn/trade/client/models/exchange.py +6 -1
- crypticorn/trade/client/models/exchange_key.py +1 -1
- crypticorn/trade/client/models/exchange_key_balance.py +111 -0
- crypticorn/trade/client/models/exchange_key_create.py +17 -1
- crypticorn/trade/client/models/exchange_key_update.py +17 -1
- crypticorn/trade/client/models/execution_ids.py +1 -1
- crypticorn/trade/client/models/futures_balance.py +27 -25
- crypticorn/trade/client/models/futures_trading_action.py +6 -28
- crypticorn/trade/client/models/futures_trading_action_create.py +10 -13
- crypticorn/trade/client/models/notification.py +17 -1
- crypticorn/trade/client/models/notification_create.py +18 -2
- crypticorn/trade/client/models/notification_update.py +17 -1
- crypticorn/trade/client/models/order.py +2 -14
- crypticorn/trade/client/models/orders_count.py +88 -0
- crypticorn/trade/client/models/paginated_response_futures_trading_action.py +134 -0
- crypticorn/trade/client/models/paginated_response_order.py +134 -0
- crypticorn/trade/client/models/pn_l.py +95 -0
- crypticorn/trade/client/models/post_futures_action.py +1 -1
- crypticorn/trade/client/models/spot_balance.py +109 -0
- crypticorn/trade/client/models/spot_trading_action_create.py +4 -1
- crypticorn/trade/client/models/strategy.py +22 -4
- crypticorn/trade/client/models/strategy_create.py +23 -5
- crypticorn/trade/client/models/strategy_exchange_info.py +16 -4
- crypticorn/trade/client/models/strategy_update.py +19 -3
- crypticorn/trade/client/models/tpsl.py +4 -27
- crypticorn/trade/client/models/tpsl_create.py +6 -19
- crypticorn/trade/client/rest.py +23 -4
- crypticorn/trade/main.py +15 -12
- {crypticorn-2.15.0.dist-info → crypticorn-2.17.0.dist-info}/METADATA +65 -20
- {crypticorn-2.15.0.dist-info → crypticorn-2.17.0.dist-info}/RECORD +167 -132
- crypticorn/trade/client/api/futures_trading_panel_api.py +0 -1285
- {crypticorn-2.15.0.dist-info → crypticorn-2.17.0.dist-info}/WHEEL +0 -0
- {crypticorn-2.15.0.dist-info → crypticorn-2.17.0.dist-info}/entry_points.txt +0 -0
- {crypticorn-2.15.0.dist-info → crypticorn-2.17.0.dist-info}/licenses/LICENSE +0 -0
- {crypticorn-2.15.0.dist-info → crypticorn-2.17.0.dist-info}/top_level.txt +0 -0
@@ -33,8 +33,12 @@ class FuturesTradingAction(BaseModel):
|
|
33
33
|
Model for futures trading actions
|
34
34
|
""" # noqa: E501
|
35
35
|
|
36
|
-
leverage: Optional[Annotated[int, Field(strict=True, ge=1)]]
|
37
|
-
|
36
|
+
leverage: Optional[Annotated[int, Field(strict=True, ge=1)]] = Field(
|
37
|
+
default=1, description="Leverage to use for futures trades. Default is 1."
|
38
|
+
)
|
39
|
+
margin_mode: Optional[MarginMode] = Field(
|
40
|
+
default=None, description="Margin mode for futures trades. Default is isolated."
|
41
|
+
)
|
38
42
|
created_at: Optional[StrictInt] = Field(
|
39
43
|
default=None, description="Timestamp of creation"
|
40
44
|
)
|
@@ -60,8 +64,6 @@ class FuturesTradingAction(BaseModel):
|
|
60
64
|
take_profit: Optional[List[TPSL]] = None
|
61
65
|
stop_loss: Optional[List[TPSL]] = None
|
62
66
|
expiry_timestamp: Optional[StrictInt] = None
|
63
|
-
client_order_id: Optional[StrictStr] = None
|
64
|
-
position_id: Optional[StrictStr] = None
|
65
67
|
__properties: ClassVar[List[str]] = [
|
66
68
|
"leverage",
|
67
69
|
"margin_mode",
|
@@ -80,8 +82,6 @@ class FuturesTradingAction(BaseModel):
|
|
80
82
|
"take_profit",
|
81
83
|
"stop_loss",
|
82
84
|
"expiry_timestamp",
|
83
|
-
"client_order_id",
|
84
|
-
"position_id",
|
85
85
|
]
|
86
86
|
|
87
87
|
model_config = ConfigDict(
|
@@ -135,16 +135,6 @@ class FuturesTradingAction(BaseModel):
|
|
135
135
|
if _item_stop_loss:
|
136
136
|
_items.append(_item_stop_loss.to_dict())
|
137
137
|
_dict["stop_loss"] = _items
|
138
|
-
# set to None if leverage (nullable) is None
|
139
|
-
# and model_fields_set contains the field
|
140
|
-
if self.leverage is None and "leverage" in self.model_fields_set:
|
141
|
-
_dict["leverage"] = None
|
142
|
-
|
143
|
-
# set to None if margin_mode (nullable) is None
|
144
|
-
# and model_fields_set contains the field
|
145
|
-
if self.margin_mode is None and "margin_mode" in self.model_fields_set:
|
146
|
-
_dict["margin_mode"] = None
|
147
|
-
|
148
138
|
# set to None if execution_id (nullable) is None
|
149
139
|
# and model_fields_set contains the field
|
150
140
|
if self.execution_id is None and "execution_id" in self.model_fields_set:
|
@@ -186,16 +176,6 @@ class FuturesTradingAction(BaseModel):
|
|
186
176
|
):
|
187
177
|
_dict["expiry_timestamp"] = None
|
188
178
|
|
189
|
-
# set to None if client_order_id (nullable) is None
|
190
|
-
# and model_fields_set contains the field
|
191
|
-
if self.client_order_id is None and "client_order_id" in self.model_fields_set:
|
192
|
-
_dict["client_order_id"] = None
|
193
|
-
|
194
|
-
# set to None if position_id (nullable) is None
|
195
|
-
# and model_fields_set contains the field
|
196
|
-
if self.position_id is None and "position_id" in self.model_fields_set:
|
197
|
-
_dict["position_id"] = None
|
198
|
-
|
199
179
|
return _dict
|
200
180
|
|
201
181
|
@classmethod
|
@@ -236,8 +216,6 @@ class FuturesTradingAction(BaseModel):
|
|
236
216
|
else None
|
237
217
|
),
|
238
218
|
"expiry_timestamp": obj.get("expiry_timestamp"),
|
239
|
-
"client_order_id": obj.get("client_order_id"),
|
240
|
-
"position_id": obj.get("position_id"),
|
241
219
|
}
|
242
220
|
)
|
243
221
|
return _obj
|
@@ -33,12 +33,19 @@ class FuturesTradingActionCreate(BaseModel):
|
|
33
33
|
Model for sending futures trading actions
|
34
34
|
""" # noqa: E501
|
35
35
|
|
36
|
-
leverage: Optional[Annotated[int, Field(strict=True, ge=1)]]
|
37
|
-
|
36
|
+
leverage: Optional[Annotated[int, Field(strict=True, ge=1)]] = Field(
|
37
|
+
default=1, description="Leverage to use for futures trades. Default is 1."
|
38
|
+
)
|
39
|
+
margin_mode: Optional[MarginMode] = Field(
|
40
|
+
default=None, description="Margin mode for futures trades. Default is isolated."
|
41
|
+
)
|
38
42
|
execution_id: Optional[StrictStr] = None
|
39
43
|
open_order_execution_id: Optional[StrictStr] = None
|
40
44
|
action_type: TradingActionType = Field(description="The type of action.")
|
41
|
-
market_type: MarketType = Field(
|
45
|
+
market_type: Optional[MarketType] = Field(
|
46
|
+
default=None,
|
47
|
+
description="The type of market the action is for. Must be set to futures.",
|
48
|
+
)
|
42
49
|
strategy_id: StrictStr = Field(description="UID for the strategy.")
|
43
50
|
symbol: StrictStr = Field(
|
44
51
|
description="Trading symbol or asset pair in format: 'symbol/quote_currency' (see market service for valid symbols)"
|
@@ -119,16 +126,6 @@ class FuturesTradingActionCreate(BaseModel):
|
|
119
126
|
if _item_stop_loss:
|
120
127
|
_items.append(_item_stop_loss.to_dict())
|
121
128
|
_dict["stop_loss"] = _items
|
122
|
-
# set to None if leverage (nullable) is None
|
123
|
-
# and model_fields_set contains the field
|
124
|
-
if self.leverage is None and "leverage" in self.model_fields_set:
|
125
|
-
_dict["leverage"] = None
|
126
|
-
|
127
|
-
# set to None if margin_mode (nullable) is None
|
128
|
-
# and model_fields_set contains the field
|
129
|
-
if self.margin_mode is None and "margin_mode" in self.model_fields_set:
|
130
|
-
_dict["margin_mode"] = None
|
131
|
-
|
132
129
|
# set to None if execution_id (nullable) is None
|
133
130
|
# and model_fields_set contains the field
|
134
131
|
if self.execution_id is None and "execution_id" in self.model_fields_set:
|
@@ -56,6 +56,7 @@ class Notification(BaseModel):
|
|
56
56
|
type: ApiErrorType = Field(
|
57
57
|
description="Type of the notification. Of type ApiErrorType"
|
58
58
|
)
|
59
|
+
additional_properties: Dict[str, Any] = {}
|
59
60
|
__properties: ClassVar[List[str]] = [
|
60
61
|
"user_id",
|
61
62
|
"created_at",
|
@@ -97,14 +98,24 @@ class Notification(BaseModel):
|
|
97
98
|
* `None` is only added to the output dict for nullable fields that
|
98
99
|
were set at model initialization. Other fields with value `None`
|
99
100
|
are ignored.
|
101
|
+
* Fields in `self.additional_properties` are added to the output dict.
|
100
102
|
"""
|
101
|
-
excluded_fields: Set[str] = set(
|
103
|
+
excluded_fields: Set[str] = set(
|
104
|
+
[
|
105
|
+
"additional_properties",
|
106
|
+
]
|
107
|
+
)
|
102
108
|
|
103
109
|
_dict = self.model_dump(
|
104
110
|
by_alias=True,
|
105
111
|
exclude=excluded_fields,
|
106
112
|
exclude_none=True,
|
107
113
|
)
|
114
|
+
# puts key-value pairs in additional_properties in the top level
|
115
|
+
if self.additional_properties is not None:
|
116
|
+
for _key, _value in self.additional_properties.items():
|
117
|
+
_dict[_key] = _value
|
118
|
+
|
108
119
|
return _dict
|
109
120
|
|
110
121
|
@classmethod
|
@@ -129,4 +140,9 @@ class Notification(BaseModel):
|
|
129
140
|
"type": obj.get("type"),
|
130
141
|
}
|
131
142
|
)
|
143
|
+
# store additional fields in additional_properties
|
144
|
+
for _key in obj.keys():
|
145
|
+
if _key not in cls.__properties:
|
146
|
+
_obj.additional_properties[_key] = obj.get(_key)
|
147
|
+
|
132
148
|
return _obj
|
@@ -28,7 +28,7 @@ from typing_extensions import Self
|
|
28
28
|
|
29
29
|
class NotificationCreate(BaseModel):
|
30
30
|
"""
|
31
|
-
Notification model for
|
31
|
+
Notification model for creating new system alerts and messages.
|
32
32
|
""" # noqa: E501
|
33
33
|
|
34
34
|
viewed: Optional[StrictBool] = Field(
|
@@ -46,6 +46,7 @@ class NotificationCreate(BaseModel):
|
|
46
46
|
type: ApiErrorType = Field(
|
47
47
|
description="Type of the notification. Of type ApiErrorType"
|
48
48
|
)
|
49
|
+
additional_properties: Dict[str, Any] = {}
|
49
50
|
__properties: ClassVar[List[str]] = [
|
50
51
|
"viewed",
|
51
52
|
"sent",
|
@@ -83,14 +84,24 @@ class NotificationCreate(BaseModel):
|
|
83
84
|
* `None` is only added to the output dict for nullable fields that
|
84
85
|
were set at model initialization. Other fields with value `None`
|
85
86
|
are ignored.
|
87
|
+
* Fields in `self.additional_properties` are added to the output dict.
|
86
88
|
"""
|
87
|
-
excluded_fields: Set[str] = set(
|
89
|
+
excluded_fields: Set[str] = set(
|
90
|
+
[
|
91
|
+
"additional_properties",
|
92
|
+
]
|
93
|
+
)
|
88
94
|
|
89
95
|
_dict = self.model_dump(
|
90
96
|
by_alias=True,
|
91
97
|
exclude=excluded_fields,
|
92
98
|
exclude_none=True,
|
93
99
|
)
|
100
|
+
# puts key-value pairs in additional_properties in the top level
|
101
|
+
if self.additional_properties is not None:
|
102
|
+
for _key, _value in self.additional_properties.items():
|
103
|
+
_dict[_key] = _value
|
104
|
+
|
94
105
|
return _dict
|
95
106
|
|
96
107
|
@classmethod
|
@@ -111,4 +122,9 @@ class NotificationCreate(BaseModel):
|
|
111
122
|
"type": obj.get("type"),
|
112
123
|
}
|
113
124
|
)
|
125
|
+
# store additional fields in additional_properties
|
126
|
+
for _key in obj.keys():
|
127
|
+
if _key not in cls.__properties:
|
128
|
+
_obj.additional_properties[_key] = obj.get(_key)
|
129
|
+
|
114
130
|
return _obj
|
@@ -30,6 +30,7 @@ class NotificationUpdate(BaseModel):
|
|
30
30
|
|
31
31
|
viewed: Optional[StrictBool] = None
|
32
32
|
sent: Optional[StrictBool] = None
|
33
|
+
additional_properties: Dict[str, Any] = {}
|
33
34
|
__properties: ClassVar[List[str]] = ["viewed", "sent"]
|
34
35
|
|
35
36
|
model_config = ConfigDict(
|
@@ -61,14 +62,24 @@ class NotificationUpdate(BaseModel):
|
|
61
62
|
* `None` is only added to the output dict for nullable fields that
|
62
63
|
were set at model initialization. Other fields with value `None`
|
63
64
|
are ignored.
|
65
|
+
* Fields in `self.additional_properties` are added to the output dict.
|
64
66
|
"""
|
65
|
-
excluded_fields: Set[str] = set(
|
67
|
+
excluded_fields: Set[str] = set(
|
68
|
+
[
|
69
|
+
"additional_properties",
|
70
|
+
]
|
71
|
+
)
|
66
72
|
|
67
73
|
_dict = self.model_dump(
|
68
74
|
by_alias=True,
|
69
75
|
exclude=excluded_fields,
|
70
76
|
exclude_none=True,
|
71
77
|
)
|
78
|
+
# puts key-value pairs in additional_properties in the top level
|
79
|
+
if self.additional_properties is not None:
|
80
|
+
for _key, _value in self.additional_properties.items():
|
81
|
+
_dict[_key] = _value
|
82
|
+
|
72
83
|
# set to None if viewed (nullable) is None
|
73
84
|
# and model_fields_set contains the field
|
74
85
|
if self.viewed is None and "viewed" in self.model_fields_set:
|
@@ -93,4 +104,9 @@ class NotificationUpdate(BaseModel):
|
|
93
104
|
_obj = cls.model_validate(
|
94
105
|
{"viewed": obj.get("viewed"), "sent": obj.get("sent")}
|
95
106
|
)
|
107
|
+
# store additional fields in additional_properties
|
108
|
+
for _key in obj.keys():
|
109
|
+
if _key not in cls.__properties:
|
110
|
+
_obj.additional_properties[_key] = obj.get(_key)
|
111
|
+
|
96
112
|
return _obj
|
@@ -65,7 +65,7 @@ class Order(BaseModel):
|
|
65
65
|
sent_qty: Optional[StrictStr] = None
|
66
66
|
fee: Optional[StrictStr] = None
|
67
67
|
leverage: Optional[StrictInt] = None
|
68
|
-
order_details: Optional[Any] = Field(
|
68
|
+
order_details: Optional[Dict[str, Any]] = Field(
|
69
69
|
default=None, description="Exchange specific details of the order"
|
70
70
|
)
|
71
71
|
pnl: Optional[StrictStr] = None
|
@@ -138,9 +138,6 @@ class Order(BaseModel):
|
|
138
138
|
exclude=excluded_fields,
|
139
139
|
exclude_none=True,
|
140
140
|
)
|
141
|
-
# override the default output from pydantic by calling `to_dict()` of order_details
|
142
|
-
if self.order_details:
|
143
|
-
_dict["order_details"] = self.order_details.to_dict()
|
144
141
|
# set to None if trading_action_id (nullable) is None
|
145
142
|
# and model_fields_set contains the field
|
146
143
|
if (
|
@@ -257,11 +254,6 @@ class Order(BaseModel):
|
|
257
254
|
if self.leverage is None and "leverage" in self.model_fields_set:
|
258
255
|
_dict["leverage"] = None
|
259
256
|
|
260
|
-
# set to None if order_details (nullable) is None
|
261
|
-
# and model_fields_set contains the field
|
262
|
-
if self.order_details is None and "order_details" in self.model_fields_set:
|
263
|
-
_dict["order_details"] = None
|
264
|
-
|
265
257
|
# set to None if pnl (nullable) is None
|
266
258
|
# and model_fields_set contains the field
|
267
259
|
if self.pnl is None and "pnl" in self.model_fields_set:
|
@@ -310,11 +302,7 @@ class Order(BaseModel):
|
|
310
302
|
"sent_qty": obj.get("sent_qty"),
|
311
303
|
"fee": obj.get("fee"),
|
312
304
|
"leverage": obj.get("leverage"),
|
313
|
-
"order_details": (
|
314
|
-
AnyOf.from_dict(obj["order_details"])
|
315
|
-
if obj.get("order_details") is not None
|
316
|
-
else None
|
317
|
-
),
|
305
|
+
"order_details": obj.get("order_details"),
|
318
306
|
"pnl": obj.get("pnl"),
|
319
307
|
"order_time": obj.get("order_time"),
|
320
308
|
}
|
@@ -0,0 +1,88 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
|
3
|
+
"""
|
4
|
+
Trading API
|
5
|
+
|
6
|
+
API for automated trading and exchange interface. This API is used to trade on the exchange and manage bots, API keys, orders, and more.
|
7
|
+
|
8
|
+
The version of the OpenAPI document: 1.0.0
|
9
|
+
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
10
|
+
|
11
|
+
Do not edit the class manually.
|
12
|
+
""" # noqa: E501
|
13
|
+
|
14
|
+
|
15
|
+
from __future__ import annotations
|
16
|
+
import pprint
|
17
|
+
import re # noqa: F401
|
18
|
+
import json
|
19
|
+
|
20
|
+
from pydantic import BaseModel, ConfigDict, Field, StrictInt
|
21
|
+
from typing import Any, ClassVar, Dict, List
|
22
|
+
from typing import Optional, Set
|
23
|
+
from typing_extensions import Self
|
24
|
+
|
25
|
+
|
26
|
+
class OrdersCount(BaseModel):
|
27
|
+
"""
|
28
|
+
The number of orders for a user by day
|
29
|
+
""" # noqa: E501
|
30
|
+
|
31
|
+
timestamp: StrictInt = Field(
|
32
|
+
description="Timestamp of the latest order for the day"
|
33
|
+
)
|
34
|
+
count: StrictInt = Field(description="The number of orders for the day")
|
35
|
+
__properties: ClassVar[List[str]] = ["timestamp", "count"]
|
36
|
+
|
37
|
+
model_config = ConfigDict(
|
38
|
+
populate_by_name=True,
|
39
|
+
validate_assignment=True,
|
40
|
+
protected_namespaces=(),
|
41
|
+
)
|
42
|
+
|
43
|
+
def to_str(self) -> str:
|
44
|
+
"""Returns the string representation of the model using alias"""
|
45
|
+
return pprint.pformat(self.model_dump(by_alias=True))
|
46
|
+
|
47
|
+
def to_json(self) -> str:
|
48
|
+
"""Returns the JSON representation of the model using alias"""
|
49
|
+
# TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
|
50
|
+
return json.dumps(self.to_dict())
|
51
|
+
|
52
|
+
@classmethod
|
53
|
+
def from_json(cls, json_str: str) -> Optional[Self]:
|
54
|
+
"""Create an instance of OrdersCount from a JSON string"""
|
55
|
+
return cls.from_dict(json.loads(json_str))
|
56
|
+
|
57
|
+
def to_dict(self) -> Dict[str, Any]:
|
58
|
+
"""Return the dictionary representation of the model using alias.
|
59
|
+
|
60
|
+
This has the following differences from calling pydantic's
|
61
|
+
`self.model_dump(by_alias=True)`:
|
62
|
+
|
63
|
+
* `None` is only added to the output dict for nullable fields that
|
64
|
+
were set at model initialization. Other fields with value `None`
|
65
|
+
are ignored.
|
66
|
+
"""
|
67
|
+
excluded_fields: Set[str] = set([])
|
68
|
+
|
69
|
+
_dict = self.model_dump(
|
70
|
+
by_alias=True,
|
71
|
+
exclude=excluded_fields,
|
72
|
+
exclude_none=True,
|
73
|
+
)
|
74
|
+
return _dict
|
75
|
+
|
76
|
+
@classmethod
|
77
|
+
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
|
78
|
+
"""Create an instance of OrdersCount from a dict"""
|
79
|
+
if obj is None:
|
80
|
+
return None
|
81
|
+
|
82
|
+
if not isinstance(obj, dict):
|
83
|
+
return cls.model_validate(obj)
|
84
|
+
|
85
|
+
_obj = cls.model_validate(
|
86
|
+
{"timestamp": obj.get("timestamp"), "count": obj.get("count")}
|
87
|
+
)
|
88
|
+
return _obj
|
@@ -0,0 +1,134 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
|
3
|
+
"""
|
4
|
+
Trading API
|
5
|
+
|
6
|
+
API for automated trading and exchange interface. This API is used to trade on the exchange and manage bots, API keys, orders, and more.
|
7
|
+
|
8
|
+
The version of the OpenAPI document: 1.0.0
|
9
|
+
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
10
|
+
|
11
|
+
Do not edit the class manually.
|
12
|
+
""" # noqa: E501
|
13
|
+
|
14
|
+
|
15
|
+
from __future__ import annotations
|
16
|
+
import pprint
|
17
|
+
import re # noqa: F401
|
18
|
+
import json
|
19
|
+
|
20
|
+
from pydantic import BaseModel, ConfigDict, Field, StrictInt
|
21
|
+
from typing import Any, ClassVar, Dict, List, Optional
|
22
|
+
from crypticorn.trade.client.models.futures_trading_action import FuturesTradingAction
|
23
|
+
from typing import Optional, Set
|
24
|
+
from typing_extensions import Self
|
25
|
+
|
26
|
+
|
27
|
+
class PaginatedResponseFuturesTradingAction(BaseModel):
|
28
|
+
"""
|
29
|
+
PaginatedResponseFuturesTradingAction
|
30
|
+
""" # noqa: E501
|
31
|
+
|
32
|
+
data: List[FuturesTradingAction]
|
33
|
+
total: StrictInt = Field(description="The total number of items")
|
34
|
+
page: StrictInt = Field(description="The current page number")
|
35
|
+
page_size: StrictInt = Field(description="The number of items per page")
|
36
|
+
prev: Optional[StrictInt] = None
|
37
|
+
next: Optional[StrictInt] = None
|
38
|
+
last: Optional[StrictInt] = None
|
39
|
+
__properties: ClassVar[List[str]] = [
|
40
|
+
"data",
|
41
|
+
"total",
|
42
|
+
"page",
|
43
|
+
"page_size",
|
44
|
+
"prev",
|
45
|
+
"next",
|
46
|
+
"last",
|
47
|
+
]
|
48
|
+
|
49
|
+
model_config = ConfigDict(
|
50
|
+
populate_by_name=True,
|
51
|
+
validate_assignment=True,
|
52
|
+
protected_namespaces=(),
|
53
|
+
)
|
54
|
+
|
55
|
+
def to_str(self) -> str:
|
56
|
+
"""Returns the string representation of the model using alias"""
|
57
|
+
return pprint.pformat(self.model_dump(by_alias=True))
|
58
|
+
|
59
|
+
def to_json(self) -> str:
|
60
|
+
"""Returns the JSON representation of the model using alias"""
|
61
|
+
# TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
|
62
|
+
return json.dumps(self.to_dict())
|
63
|
+
|
64
|
+
@classmethod
|
65
|
+
def from_json(cls, json_str: str) -> Optional[Self]:
|
66
|
+
"""Create an instance of PaginatedResponseFuturesTradingAction from a JSON string"""
|
67
|
+
return cls.from_dict(json.loads(json_str))
|
68
|
+
|
69
|
+
def to_dict(self) -> Dict[str, Any]:
|
70
|
+
"""Return the dictionary representation of the model using alias.
|
71
|
+
|
72
|
+
This has the following differences from calling pydantic's
|
73
|
+
`self.model_dump(by_alias=True)`:
|
74
|
+
|
75
|
+
* `None` is only added to the output dict for nullable fields that
|
76
|
+
were set at model initialization. Other fields with value `None`
|
77
|
+
are ignored.
|
78
|
+
"""
|
79
|
+
excluded_fields: Set[str] = set([])
|
80
|
+
|
81
|
+
_dict = self.model_dump(
|
82
|
+
by_alias=True,
|
83
|
+
exclude=excluded_fields,
|
84
|
+
exclude_none=True,
|
85
|
+
)
|
86
|
+
# override the default output from pydantic by calling `to_dict()` of each item in data (list)
|
87
|
+
_items = []
|
88
|
+
if self.data:
|
89
|
+
for _item_data in self.data:
|
90
|
+
if _item_data:
|
91
|
+
_items.append(_item_data.to_dict())
|
92
|
+
_dict["data"] = _items
|
93
|
+
# set to None if prev (nullable) is None
|
94
|
+
# and model_fields_set contains the field
|
95
|
+
if self.prev is None and "prev" in self.model_fields_set:
|
96
|
+
_dict["prev"] = None
|
97
|
+
|
98
|
+
# set to None if next (nullable) is None
|
99
|
+
# and model_fields_set contains the field
|
100
|
+
if self.next is None and "next" in self.model_fields_set:
|
101
|
+
_dict["next"] = None
|
102
|
+
|
103
|
+
# set to None if last (nullable) is None
|
104
|
+
# and model_fields_set contains the field
|
105
|
+
if self.last is None and "last" in self.model_fields_set:
|
106
|
+
_dict["last"] = None
|
107
|
+
|
108
|
+
return _dict
|
109
|
+
|
110
|
+
@classmethod
|
111
|
+
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
|
112
|
+
"""Create an instance of PaginatedResponseFuturesTradingAction from a dict"""
|
113
|
+
if obj is None:
|
114
|
+
return None
|
115
|
+
|
116
|
+
if not isinstance(obj, dict):
|
117
|
+
return cls.model_validate(obj)
|
118
|
+
|
119
|
+
_obj = cls.model_validate(
|
120
|
+
{
|
121
|
+
"data": (
|
122
|
+
[FuturesTradingAction.from_dict(_item) for _item in obj["data"]]
|
123
|
+
if obj.get("data") is not None
|
124
|
+
else None
|
125
|
+
),
|
126
|
+
"total": obj.get("total"),
|
127
|
+
"page": obj.get("page"),
|
128
|
+
"page_size": obj.get("page_size"),
|
129
|
+
"prev": obj.get("prev"),
|
130
|
+
"next": obj.get("next"),
|
131
|
+
"last": obj.get("last"),
|
132
|
+
}
|
133
|
+
)
|
134
|
+
return _obj
|
@@ -0,0 +1,134 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
|
3
|
+
"""
|
4
|
+
Trading API
|
5
|
+
|
6
|
+
API for automated trading and exchange interface. This API is used to trade on the exchange and manage bots, API keys, orders, and more.
|
7
|
+
|
8
|
+
The version of the OpenAPI document: 1.0.0
|
9
|
+
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
10
|
+
|
11
|
+
Do not edit the class manually.
|
12
|
+
""" # noqa: E501
|
13
|
+
|
14
|
+
|
15
|
+
from __future__ import annotations
|
16
|
+
import pprint
|
17
|
+
import re # noqa: F401
|
18
|
+
import json
|
19
|
+
|
20
|
+
from pydantic import BaseModel, ConfigDict, Field, StrictInt
|
21
|
+
from typing import Any, ClassVar, Dict, List, Optional
|
22
|
+
from crypticorn.trade.client.models.order import Order
|
23
|
+
from typing import Optional, Set
|
24
|
+
from typing_extensions import Self
|
25
|
+
|
26
|
+
|
27
|
+
class PaginatedResponseOrder(BaseModel):
|
28
|
+
"""
|
29
|
+
PaginatedResponseOrder
|
30
|
+
""" # noqa: E501
|
31
|
+
|
32
|
+
data: List[Order]
|
33
|
+
total: StrictInt = Field(description="The total number of items")
|
34
|
+
page: StrictInt = Field(description="The current page number")
|
35
|
+
page_size: StrictInt = Field(description="The number of items per page")
|
36
|
+
prev: Optional[StrictInt] = None
|
37
|
+
next: Optional[StrictInt] = None
|
38
|
+
last: Optional[StrictInt] = None
|
39
|
+
__properties: ClassVar[List[str]] = [
|
40
|
+
"data",
|
41
|
+
"total",
|
42
|
+
"page",
|
43
|
+
"page_size",
|
44
|
+
"prev",
|
45
|
+
"next",
|
46
|
+
"last",
|
47
|
+
]
|
48
|
+
|
49
|
+
model_config = ConfigDict(
|
50
|
+
populate_by_name=True,
|
51
|
+
validate_assignment=True,
|
52
|
+
protected_namespaces=(),
|
53
|
+
)
|
54
|
+
|
55
|
+
def to_str(self) -> str:
|
56
|
+
"""Returns the string representation of the model using alias"""
|
57
|
+
return pprint.pformat(self.model_dump(by_alias=True))
|
58
|
+
|
59
|
+
def to_json(self) -> str:
|
60
|
+
"""Returns the JSON representation of the model using alias"""
|
61
|
+
# TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
|
62
|
+
return json.dumps(self.to_dict())
|
63
|
+
|
64
|
+
@classmethod
|
65
|
+
def from_json(cls, json_str: str) -> Optional[Self]:
|
66
|
+
"""Create an instance of PaginatedResponseOrder from a JSON string"""
|
67
|
+
return cls.from_dict(json.loads(json_str))
|
68
|
+
|
69
|
+
def to_dict(self) -> Dict[str, Any]:
|
70
|
+
"""Return the dictionary representation of the model using alias.
|
71
|
+
|
72
|
+
This has the following differences from calling pydantic's
|
73
|
+
`self.model_dump(by_alias=True)`:
|
74
|
+
|
75
|
+
* `None` is only added to the output dict for nullable fields that
|
76
|
+
were set at model initialization. Other fields with value `None`
|
77
|
+
are ignored.
|
78
|
+
"""
|
79
|
+
excluded_fields: Set[str] = set([])
|
80
|
+
|
81
|
+
_dict = self.model_dump(
|
82
|
+
by_alias=True,
|
83
|
+
exclude=excluded_fields,
|
84
|
+
exclude_none=True,
|
85
|
+
)
|
86
|
+
# override the default output from pydantic by calling `to_dict()` of each item in data (list)
|
87
|
+
_items = []
|
88
|
+
if self.data:
|
89
|
+
for _item_data in self.data:
|
90
|
+
if _item_data:
|
91
|
+
_items.append(_item_data.to_dict())
|
92
|
+
_dict["data"] = _items
|
93
|
+
# set to None if prev (nullable) is None
|
94
|
+
# and model_fields_set contains the field
|
95
|
+
if self.prev is None and "prev" in self.model_fields_set:
|
96
|
+
_dict["prev"] = None
|
97
|
+
|
98
|
+
# set to None if next (nullable) is None
|
99
|
+
# and model_fields_set contains the field
|
100
|
+
if self.next is None and "next" in self.model_fields_set:
|
101
|
+
_dict["next"] = None
|
102
|
+
|
103
|
+
# set to None if last (nullable) is None
|
104
|
+
# and model_fields_set contains the field
|
105
|
+
if self.last is None and "last" in self.model_fields_set:
|
106
|
+
_dict["last"] = None
|
107
|
+
|
108
|
+
return _dict
|
109
|
+
|
110
|
+
@classmethod
|
111
|
+
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
|
112
|
+
"""Create an instance of PaginatedResponseOrder from a dict"""
|
113
|
+
if obj is None:
|
114
|
+
return None
|
115
|
+
|
116
|
+
if not isinstance(obj, dict):
|
117
|
+
return cls.model_validate(obj)
|
118
|
+
|
119
|
+
_obj = cls.model_validate(
|
120
|
+
{
|
121
|
+
"data": (
|
122
|
+
[Order.from_dict(_item) for _item in obj["data"]]
|
123
|
+
if obj.get("data") is not None
|
124
|
+
else None
|
125
|
+
),
|
126
|
+
"total": obj.get("total"),
|
127
|
+
"page": obj.get("page"),
|
128
|
+
"page_size": obj.get("page_size"),
|
129
|
+
"prev": obj.get("prev"),
|
130
|
+
"next": obj.get("next"),
|
131
|
+
"last": obj.get("last"),
|
132
|
+
}
|
133
|
+
)
|
134
|
+
return _obj
|