crypticorn 2.17.0rc5__py3-none-any.whl → 2.17.0rc6__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/auth/client/api/admin_api.py +6 -24
- crypticorn/auth/client/api/auth_api.py +36 -144
- crypticorn/auth/client/api/service_api.py +3 -12
- crypticorn/auth/client/api/user_api.py +33 -132
- crypticorn/auth/client/api/wallet_api.py +18 -72
- crypticorn/cli/templates/Dockerfile +5 -2
- crypticorn/common/auth.py +30 -0
- crypticorn/common/errors.py +10 -0
- crypticorn/common/pagination.py +1 -1
- crypticorn/common/router/admin_router.py +1 -11
- crypticorn/common/router/status_router.py +33 -2
- crypticorn/common/scopes.py +2 -2
- crypticorn/dex/client/api/admin_api.py +21 -84
- crypticorn/dex/client/api/signals_api.py +9 -36
- crypticorn/dex/client/api/status_api.py +6 -24
- crypticorn/hive/client/api/admin_api.py +18 -72
- crypticorn/hive/client/api/data_api.py +6 -24
- crypticorn/hive/client/api/models_api.py +21 -84
- crypticorn/hive/client/api/status_api.py +6 -24
- crypticorn/klines/client/api/admin_api.py +18 -72
- crypticorn/klines/client/api/change_in_timeframe_api.py +3 -12
- crypticorn/klines/client/api/funding_rates_api.py +3 -12
- crypticorn/klines/client/api/ohlcv_data_api.py +3 -12
- crypticorn/klines/client/api/status_api.py +6 -24
- crypticorn/klines/client/api/symbols_api.py +3 -12
- crypticorn/klines/client/api/udf_api.py +18 -72
- crypticorn/metrics/client/api/admin_api.py +18 -72
- crypticorn/metrics/client/api/exchanges_api.py +12 -48
- crypticorn/metrics/client/api/indicators_api.py +6 -24
- crypticorn/metrics/client/api/logs_api.py +3 -12
- crypticorn/metrics/client/api/marketcap_api.py +12 -48
- crypticorn/metrics/client/api/markets_api.py +3 -12
- crypticorn/metrics/client/api/quote_currencies_api.py +3 -12
- crypticorn/metrics/client/api/status_api.py +6 -24
- crypticorn/metrics/client/api/tokens_api.py +6 -24
- crypticorn/pay/client/api/admin_api.py +21 -84
- crypticorn/pay/client/api/now_payments_api.py +15 -60
- crypticorn/pay/client/api/payments_api.py +6 -24
- crypticorn/pay/client/api/products_api.py +12 -48
- crypticorn/pay/client/api/status_api.py +6 -24
- crypticorn/trade/client/__init__.py +10 -0
- crypticorn/trade/client/api/admin_api.py +21 -84
- crypticorn/trade/client/api/api_keys_api.py +207 -184
- crypticorn/trade/client/api/bots_api.py +2435 -662
- crypticorn/trade/client/api/exchanges_api.py +9 -36
- crypticorn/trade/client/api/notifications_api.py +18 -72
- crypticorn/trade/client/api/orders_api.py +3 -12
- crypticorn/trade/client/api/status_api.py +6 -24
- crypticorn/trade/client/api/strategies_api.py +15 -60
- crypticorn/trade/client/api/trading_actions_api.py +431 -112
- crypticorn/trade/client/configuration.py +2 -2
- crypticorn/trade/client/models/__init__.py +10 -0
- crypticorn/trade/client/models/paginated_response_futures_trading_action.py +134 -0
- crypticorn/trade/client/models/paginated_response_union_futures_trading_action_spot_trading_action.py +141 -0
- crypticorn/trade/client/models/paginated_response_union_futures_trading_action_spot_trading_action_data_inner.py +165 -0
- crypticorn/trade/client/models/spot_trading_action.py +207 -0
- {crypticorn-2.17.0rc5.dist-info → crypticorn-2.17.0rc6.dist-info}/METADATA +3 -3
- {crypticorn-2.17.0rc5.dist-info → crypticorn-2.17.0rc6.dist-info}/RECORD +62 -58
- {crypticorn-2.17.0rc5.dist-info → crypticorn-2.17.0rc6.dist-info}/WHEEL +0 -0
- {crypticorn-2.17.0rc5.dist-info → crypticorn-2.17.0rc6.dist-info}/entry_points.txt +0 -0
- {crypticorn-2.17.0rc5.dist-info → crypticorn-2.17.0rc6.dist-info}/licenses/LICENSE +0 -0
- {crypticorn-2.17.0rc5.dist-info → crypticorn-2.17.0rc6.dist-info}/top_level.txt +0 -0
crypticorn/common/auth.py
CHANGED
@@ -15,9 +15,11 @@ from fastapi.security import (
|
|
15
15
|
SecurityScopes,
|
16
16
|
HTTPBearer,
|
17
17
|
APIKeyHeader,
|
18
|
+
HTTPBasic,
|
18
19
|
)
|
19
20
|
from typing_extensions import Annotated
|
20
21
|
from typing import Union
|
22
|
+
from fastapi.security import HTTPBasicCredentials
|
21
23
|
|
22
24
|
# Auth Schemes
|
23
25
|
http_bearer = HTTPBearer(
|
@@ -32,6 +34,12 @@ apikey_header = APIKeyHeader(
|
|
32
34
|
description="The API key to use for authentication.",
|
33
35
|
)
|
34
36
|
|
37
|
+
basic_auth = HTTPBasic(
|
38
|
+
scheme_name="Basic",
|
39
|
+
auto_error=False,
|
40
|
+
description="The username and password to use for authentication. Only used in /admin/metrics",
|
41
|
+
)
|
42
|
+
|
35
43
|
|
36
44
|
# Auth Handler
|
37
45
|
class AuthHandler:
|
@@ -150,6 +158,7 @@ class AuthHandler:
|
|
150
158
|
error=ApiError.NO_API_KEY,
|
151
159
|
message="No credentials provided. API key is required",
|
152
160
|
),
|
161
|
+
headers={"WWW-Authenticate": "X-API-Key"},
|
153
162
|
)
|
154
163
|
raise e
|
155
164
|
|
@@ -175,6 +184,7 @@ class AuthHandler:
|
|
175
184
|
error=ApiError.NO_BEARER,
|
176
185
|
message="No credentials provided. Bearer token is required",
|
177
186
|
),
|
187
|
+
headers={"WWW-Authenticate": "Bearer"},
|
178
188
|
)
|
179
189
|
raise e
|
180
190
|
|
@@ -222,6 +232,7 @@ class AuthHandler:
|
|
222
232
|
error=ApiError.NO_CREDENTIALS,
|
223
233
|
message="No credentials provided. Either API key or bearer token is required.",
|
224
234
|
),
|
235
|
+
headers={"WWW-Authenticate": "Bearer, X-API-Key"},
|
225
236
|
)
|
226
237
|
|
227
238
|
async def ws_api_key_auth(
|
@@ -266,3 +277,22 @@ class AuthHandler:
|
|
266
277
|
else None
|
267
278
|
)
|
268
279
|
return await self.combined_auth(bearer=credentials, api_key=api_key, sec=sec)
|
280
|
+
|
281
|
+
async def basic_auth(
|
282
|
+
self,
|
283
|
+
credentials: Annotated[HTTPBasicCredentials, Depends(basic_auth)],
|
284
|
+
):
|
285
|
+
"""
|
286
|
+
Verifies the basic authentication credentials. This authentication method should just be used for special cases like /admin/metrics, where JWT and API key authentication are not desired or not possible.
|
287
|
+
"""
|
288
|
+
try:
|
289
|
+
await self.client.login.verify_basic_auth(credentials.username, credentials.password)
|
290
|
+
except ApiException as e:
|
291
|
+
raise HTTPException(
|
292
|
+
content=ExceptionContent(
|
293
|
+
error=ApiError.INVALID_BASIC_AUTH,
|
294
|
+
message="Invalid basic authentication credentials",
|
295
|
+
),
|
296
|
+
headers={"WWW-Authenticate": "Basic"},
|
297
|
+
)
|
298
|
+
return credentials.username
|
crypticorn/common/errors.py
CHANGED
@@ -70,6 +70,7 @@ class ApiErrorIdentifier(StrEnum):
|
|
70
70
|
INSUFFICIENT_MARGIN = "insufficient_margin"
|
71
71
|
INSUFFICIENT_SCOPES = "insufficient_scopes"
|
72
72
|
INVALID_API_KEY = "invalid_api_key"
|
73
|
+
INVALID_BASIC_AUTH = "invalid_basic_auth"
|
73
74
|
INVALID_BEARER = "invalid_bearer"
|
74
75
|
INVALID_DATA_REQUEST = "invalid_data"
|
75
76
|
INVALID_DATA_RESPONSE = "invalid_data_response"
|
@@ -302,6 +303,11 @@ class ApiError(Enum, metaclass=ApiErrorFallback):
|
|
302
303
|
ApiErrorType.USER_ERROR,
|
303
304
|
ApiErrorLevel.ERROR,
|
304
305
|
)
|
306
|
+
INVALID_BASIC_AUTH = (
|
307
|
+
ApiErrorIdentifier.INVALID_BASIC_AUTH,
|
308
|
+
ApiErrorType.USER_ERROR,
|
309
|
+
ApiErrorLevel.ERROR,
|
310
|
+
)
|
305
311
|
INVALID_BEARER = (
|
306
312
|
ApiErrorIdentifier.INVALID_BEARER,
|
307
313
|
ApiErrorType.USER_ERROR,
|
@@ -569,6 +575,10 @@ class StatusCodeMapper:
|
|
569
575
|
status.HTTP_401_UNAUTHORIZED,
|
570
576
|
status.WS_1008_POLICY_VIOLATION,
|
571
577
|
),
|
578
|
+
ApiError.INVALID_BASIC_AUTH: (
|
579
|
+
status.HTTP_401_UNAUTHORIZED,
|
580
|
+
status.WS_1008_POLICY_VIOLATION,
|
581
|
+
),
|
572
582
|
ApiError.INVALID_BEARER: (
|
573
583
|
status.HTTP_401_UNAUTHORIZED,
|
574
584
|
status.WS_1008_POLICY_VIOLATION,
|
crypticorn/common/pagination.py
CHANGED
@@ -139,7 +139,7 @@ class FilterParams(BaseModel, Generic[T]):
|
|
139
139
|
"""
|
140
140
|
|
141
141
|
filter_by: Optional[str] = Field(None, description="The field to filter by")
|
142
|
-
filter_value: Optional[str] = Field(None, description="The value to filter with")
|
142
|
+
filter_value: Optional[str] = Field(None, description="The value to filter with")
|
143
143
|
# currently openapi-gen does not support typing.Any in combo with None, so we use str
|
144
144
|
# this is fine since the input is a string anyways from the request and the correct type is enforced by the model validator from the filter_by field
|
145
145
|
|
@@ -13,10 +13,8 @@ import psutil
|
|
13
13
|
import re
|
14
14
|
import logging
|
15
15
|
from typing import Literal
|
16
|
-
from fastapi import APIRouter, Query
|
17
|
-
from prometheus_client import generate_latest, CONTENT_TYPE_LATEST
|
16
|
+
from fastapi import APIRouter, Query
|
18
17
|
from crypticorn.common.logging import LogLevel
|
19
|
-
from crypticorn.common.metrics import registry
|
20
18
|
|
21
19
|
router = APIRouter(tags=["Admin"], prefix="/admin")
|
22
20
|
|
@@ -106,11 +104,3 @@ def list_installed_packages(
|
|
106
104
|
or any(re.match(pattern, dist.metadata["Name"]) for pattern in include)
|
107
105
|
}
|
108
106
|
return dict(sorted(packages.items()))
|
109
|
-
|
110
|
-
|
111
|
-
@router.get("/metrics", operation_id="getMetrics")
|
112
|
-
def metrics():
|
113
|
-
"""
|
114
|
-
Get Prometheus metrics for the application. Returns plain text.
|
115
|
-
"""
|
116
|
-
return Response(generate_latest(registry), media_type=CONTENT_TYPE_LATEST)
|
@@ -2,14 +2,36 @@
|
|
2
2
|
This module contains the status router for the API.
|
3
3
|
It provides endpoints for checking the status of the API and get the server's time.
|
4
4
|
SHOULD ALLOW ACCESS TO THIS ROUTER WITHOUT AUTH.
|
5
|
+
To enable metrics, pass enable_metrics=True and the auth_handler to the router.
|
6
|
+
>>> status_router.enable_metrics = True
|
7
|
+
>>> status_router.auth_handler = auth_handler
|
8
|
+
Then include the router in the FastAPI app.
|
5
9
|
>>> app.include_router(status_router)
|
6
10
|
"""
|
7
11
|
|
8
12
|
from datetime import datetime
|
9
|
-
from typing import Literal
|
10
13
|
from fastapi import APIRouter, Request
|
14
|
+
from typing import Annotated, Literal
|
15
|
+
from fastapi import APIRouter, Response, Depends
|
16
|
+
from prometheus_client import generate_latest, CONTENT_TYPE_LATEST
|
17
|
+
from crypticorn.common.metrics import registry
|
18
|
+
from crypticorn.common.auth import AuthHandler, basic_auth
|
11
19
|
|
12
|
-
|
20
|
+
class EnhancedApiRouter(APIRouter):
|
21
|
+
def __init__(self, enable_metrics: bool = False, auth_handler: AuthHandler = None, *args, **kwargs):
|
22
|
+
"""
|
23
|
+
Enhanced API Router that allows for metrics and authentication.
|
24
|
+
If enable_metrics is True, the router will include the metrics endpoint.
|
25
|
+
If auth_handler is provided, the router will use the auth handler to authenticate requests with
|
26
|
+
"""
|
27
|
+
super().__init__(*args, **kwargs)
|
28
|
+
self.enable_metrics = enable_metrics
|
29
|
+
self.auth_handler = auth_handler
|
30
|
+
|
31
|
+
if self.enable_metrics and not self.auth_handler:
|
32
|
+
raise ValueError("auth_handler must be provided if enable_metrics is True")
|
33
|
+
|
34
|
+
router = EnhancedApiRouter(tags=["Status"], prefix="", enable_metrics=False, auth_handler=None)
|
13
35
|
|
14
36
|
|
15
37
|
@router.get("/", operation_id="ping")
|
@@ -29,3 +51,12 @@ async def time(type: Literal["iso", "unix"] = "iso") -> str:
|
|
29
51
|
return datetime.now().isoformat()
|
30
52
|
elif type == "unix":
|
31
53
|
return str(int(datetime.now().timestamp()))
|
54
|
+
|
55
|
+
|
56
|
+
@router.get("/metrics", operation_id="getMetrics", include_in_schema=router.enable_metrics)
|
57
|
+
def metrics(username: Annotated[str, Depends(basic_auth)]):
|
58
|
+
"""
|
59
|
+
Get Prometheus metrics for the application. Returns plain text.
|
60
|
+
"""
|
61
|
+
return Response(generate_latest(registry), media_type=CONTENT_TYPE_LATEST)
|
62
|
+
|
crypticorn/common/scopes.py
CHANGED
@@ -16,7 +16,7 @@ class Scope(StrEnum):
|
|
16
16
|
|
17
17
|
# Scopes that can be purchased - these actually exist in the jwt token
|
18
18
|
READ_PREDICTIONS = "read:predictions"
|
19
|
-
|
19
|
+
READ_DEX_SIGNALS = "read:dex:signals"
|
20
20
|
|
21
21
|
# Hive scopes
|
22
22
|
READ_HIVE_MODEL = "read:hive:model"
|
@@ -88,5 +88,5 @@ class Scope(StrEnum):
|
|
88
88
|
cls.READ_METRICS_MARKETS,
|
89
89
|
cls.READ_KLINES,
|
90
90
|
cls.READ_SENTIMENT,
|
91
|
-
cls.
|
91
|
+
cls.READ_DEX_SIGNALS,
|
92
92
|
]
|
@@ -69,10 +69,7 @@ class AdminApi:
|
|
69
69
|
_headers: Optional[Dict[StrictStr, Any]] = None,
|
70
70
|
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
71
71
|
) -> Dict[str, object]:
|
72
|
-
"""Get Container Limits
|
73
|
-
|
74
|
-
This method can work in both sync and async modes based on the is_sync flag.
|
75
|
-
"""
|
72
|
+
"""Get Container Limits"""
|
76
73
|
if self.is_sync:
|
77
74
|
return self._get_container_limits_sync(
|
78
75
|
_request_timeout=_request_timeout,
|
@@ -106,10 +103,7 @@ class AdminApi:
|
|
106
103
|
_headers: Optional[Dict[StrictStr, Any]] = None,
|
107
104
|
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
108
105
|
) -> ApiResponse[Dict[str, object]]:
|
109
|
-
"""Get Container Limits with HTTP info
|
110
|
-
|
111
|
-
This method can work in both sync and async modes based on the is_sync flag.
|
112
|
-
"""
|
106
|
+
"""Get Container Limits with HTTP info"""
|
113
107
|
if self.is_sync:
|
114
108
|
return self._get_container_limits_sync_with_http_info(
|
115
109
|
_request_timeout=_request_timeout,
|
@@ -143,10 +137,7 @@ class AdminApi:
|
|
143
137
|
_headers: Optional[Dict[StrictStr, Any]] = None,
|
144
138
|
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
145
139
|
) -> RESTResponseType:
|
146
|
-
"""Get Container Limits without preloading content
|
147
|
-
|
148
|
-
This method can work in both sync and async modes based on the is_sync flag.
|
149
|
-
"""
|
140
|
+
"""Get Container Limits without preloading content"""
|
150
141
|
if self.is_sync:
|
151
142
|
return self._get_container_limits_sync_without_preload_content(
|
152
143
|
_request_timeout=_request_timeout,
|
@@ -486,10 +477,7 @@ class AdminApi:
|
|
486
477
|
_headers: Optional[Dict[StrictStr, Any]] = None,
|
487
478
|
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
488
479
|
) -> Dict[str, Optional[str]]:
|
489
|
-
"""List Installed Packages
|
490
|
-
|
491
|
-
This method can work in both sync and async modes based on the is_sync flag.
|
492
|
-
"""
|
480
|
+
"""List Installed Packages"""
|
493
481
|
if self.is_sync:
|
494
482
|
return self._get_dependencies_sync(
|
495
483
|
include=include,
|
@@ -531,10 +519,7 @@ class AdminApi:
|
|
531
519
|
_headers: Optional[Dict[StrictStr, Any]] = None,
|
532
520
|
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
533
521
|
) -> ApiResponse[Dict[str, Optional[str]]]:
|
534
|
-
"""List Installed Packages with HTTP info
|
535
|
-
|
536
|
-
This method can work in both sync and async modes based on the is_sync flag.
|
537
|
-
"""
|
522
|
+
"""List Installed Packages with HTTP info"""
|
538
523
|
if self.is_sync:
|
539
524
|
return self._get_dependencies_sync_with_http_info(
|
540
525
|
include=include,
|
@@ -576,10 +561,7 @@ class AdminApi:
|
|
576
561
|
_headers: Optional[Dict[StrictStr, Any]] = None,
|
577
562
|
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
578
563
|
) -> RESTResponseType:
|
579
|
-
"""List Installed Packages without preloading content
|
580
|
-
|
581
|
-
This method can work in both sync and async modes based on the is_sync flag.
|
582
|
-
"""
|
564
|
+
"""List Installed Packages without preloading content"""
|
583
565
|
if self.is_sync:
|
584
566
|
return self._get_dependencies_sync_without_preload_content(
|
585
567
|
include=include,
|
@@ -970,10 +952,7 @@ class AdminApi:
|
|
970
952
|
_headers: Optional[Dict[StrictStr, Any]] = None,
|
971
953
|
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
972
954
|
) -> LogLevel:
|
973
|
-
"""Get Logging Level
|
974
|
-
|
975
|
-
This method can work in both sync and async modes based on the is_sync flag.
|
976
|
-
"""
|
955
|
+
"""Get Logging Level"""
|
977
956
|
if self.is_sync:
|
978
957
|
return self._get_log_level_sync(
|
979
958
|
_request_timeout=_request_timeout,
|
@@ -1007,10 +986,7 @@ class AdminApi:
|
|
1007
986
|
_headers: Optional[Dict[StrictStr, Any]] = None,
|
1008
987
|
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
1009
988
|
) -> ApiResponse[LogLevel]:
|
1010
|
-
"""Get Logging Level with HTTP info
|
1011
|
-
|
1012
|
-
This method can work in both sync and async modes based on the is_sync flag.
|
1013
|
-
"""
|
989
|
+
"""Get Logging Level with HTTP info"""
|
1014
990
|
if self.is_sync:
|
1015
991
|
return self._get_log_level_sync_with_http_info(
|
1016
992
|
_request_timeout=_request_timeout,
|
@@ -1044,10 +1020,7 @@ class AdminApi:
|
|
1044
1020
|
_headers: Optional[Dict[StrictStr, Any]] = None,
|
1045
1021
|
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
1046
1022
|
) -> RESTResponseType:
|
1047
|
-
"""Get Logging Level without preloading content
|
1048
|
-
|
1049
|
-
This method can work in both sync and async modes based on the is_sync flag.
|
1050
|
-
"""
|
1023
|
+
"""Get Logging Level without preloading content"""
|
1051
1024
|
if self.is_sync:
|
1052
1025
|
return self._get_log_level_sync_without_preload_content(
|
1053
1026
|
_request_timeout=_request_timeout,
|
@@ -1384,10 +1357,7 @@ class AdminApi:
|
|
1384
1357
|
_headers: Optional[Dict[StrictStr, Any]] = None,
|
1385
1358
|
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
1386
1359
|
) -> float:
|
1387
|
-
"""Get Memory Usage
|
1388
|
-
|
1389
|
-
This method can work in both sync and async modes based on the is_sync flag.
|
1390
|
-
"""
|
1360
|
+
"""Get Memory Usage"""
|
1391
1361
|
if self.is_sync:
|
1392
1362
|
return self._get_memory_usage_sync(
|
1393
1363
|
_request_timeout=_request_timeout,
|
@@ -1421,10 +1391,7 @@ class AdminApi:
|
|
1421
1391
|
_headers: Optional[Dict[StrictStr, Any]] = None,
|
1422
1392
|
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
1423
1393
|
) -> ApiResponse[float]:
|
1424
|
-
"""Get Memory Usage with HTTP info
|
1425
|
-
|
1426
|
-
This method can work in both sync and async modes based on the is_sync flag.
|
1427
|
-
"""
|
1394
|
+
"""Get Memory Usage with HTTP info"""
|
1428
1395
|
if self.is_sync:
|
1429
1396
|
return self._get_memory_usage_sync_with_http_info(
|
1430
1397
|
_request_timeout=_request_timeout,
|
@@ -1458,10 +1425,7 @@ class AdminApi:
|
|
1458
1425
|
_headers: Optional[Dict[StrictStr, Any]] = None,
|
1459
1426
|
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
1460
1427
|
) -> RESTResponseType:
|
1461
|
-
"""Get Memory Usage without preloading content
|
1462
|
-
|
1463
|
-
This method can work in both sync and async modes based on the is_sync flag.
|
1464
|
-
"""
|
1428
|
+
"""Get Memory Usage without preloading content"""
|
1465
1429
|
if self.is_sync:
|
1466
1430
|
return self._get_memory_usage_sync_without_preload_content(
|
1467
1431
|
_request_timeout=_request_timeout,
|
@@ -1795,10 +1759,7 @@ class AdminApi:
|
|
1795
1759
|
_headers: Optional[Dict[StrictStr, Any]] = None,
|
1796
1760
|
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
1797
1761
|
) -> object:
|
1798
|
-
"""Metrics
|
1799
|
-
|
1800
|
-
This method can work in both sync and async modes based on the is_sync flag.
|
1801
|
-
"""
|
1762
|
+
"""Metrics"""
|
1802
1763
|
if self.is_sync:
|
1803
1764
|
return self._get_metrics_sync(
|
1804
1765
|
_request_timeout=_request_timeout,
|
@@ -1832,10 +1793,7 @@ class AdminApi:
|
|
1832
1793
|
_headers: Optional[Dict[StrictStr, Any]] = None,
|
1833
1794
|
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
1834
1795
|
) -> ApiResponse[object]:
|
1835
|
-
"""Metrics with HTTP info
|
1836
|
-
|
1837
|
-
This method can work in both sync and async modes based on the is_sync flag.
|
1838
|
-
"""
|
1796
|
+
"""Metrics with HTTP info"""
|
1839
1797
|
if self.is_sync:
|
1840
1798
|
return self._get_metrics_sync_with_http_info(
|
1841
1799
|
_request_timeout=_request_timeout,
|
@@ -1869,10 +1827,7 @@ class AdminApi:
|
|
1869
1827
|
_headers: Optional[Dict[StrictStr, Any]] = None,
|
1870
1828
|
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
1871
1829
|
) -> RESTResponseType:
|
1872
|
-
"""Metrics without preloading content
|
1873
|
-
|
1874
|
-
This method can work in both sync and async modes based on the is_sync flag.
|
1875
|
-
"""
|
1830
|
+
"""Metrics without preloading content"""
|
1876
1831
|
if self.is_sync:
|
1877
1832
|
return self._get_metrics_sync_without_preload_content(
|
1878
1833
|
_request_timeout=_request_timeout,
|
@@ -2206,10 +2161,7 @@ class AdminApi:
|
|
2206
2161
|
_headers: Optional[Dict[StrictStr, Any]] = None,
|
2207
2162
|
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
2208
2163
|
) -> Dict[str, object]:
|
2209
|
-
"""Get Threads
|
2210
|
-
|
2211
|
-
This method can work in both sync and async modes based on the is_sync flag.
|
2212
|
-
"""
|
2164
|
+
"""Get Threads"""
|
2213
2165
|
if self.is_sync:
|
2214
2166
|
return self._get_threads_sync(
|
2215
2167
|
_request_timeout=_request_timeout,
|
@@ -2243,10 +2195,7 @@ class AdminApi:
|
|
2243
2195
|
_headers: Optional[Dict[StrictStr, Any]] = None,
|
2244
2196
|
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
2245
2197
|
) -> ApiResponse[Dict[str, object]]:
|
2246
|
-
"""Get Threads with HTTP info
|
2247
|
-
|
2248
|
-
This method can work in both sync and async modes based on the is_sync flag.
|
2249
|
-
"""
|
2198
|
+
"""Get Threads with HTTP info"""
|
2250
2199
|
if self.is_sync:
|
2251
2200
|
return self._get_threads_sync_with_http_info(
|
2252
2201
|
_request_timeout=_request_timeout,
|
@@ -2280,10 +2229,7 @@ class AdminApi:
|
|
2280
2229
|
_headers: Optional[Dict[StrictStr, Any]] = None,
|
2281
2230
|
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
2282
2231
|
) -> RESTResponseType:
|
2283
|
-
"""Get Threads without preloading content
|
2284
|
-
|
2285
|
-
This method can work in both sync and async modes based on the is_sync flag.
|
2286
|
-
"""
|
2232
|
+
"""Get Threads without preloading content"""
|
2287
2233
|
if self.is_sync:
|
2288
2234
|
return self._get_threads_sync_without_preload_content(
|
2289
2235
|
_request_timeout=_request_timeout,
|
@@ -2618,10 +2564,7 @@ class AdminApi:
|
|
2618
2564
|
_headers: Optional[Dict[StrictStr, Any]] = None,
|
2619
2565
|
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
2620
2566
|
) -> str:
|
2621
|
-
"""Get Uptime
|
2622
|
-
|
2623
|
-
This method can work in both sync and async modes based on the is_sync flag.
|
2624
|
-
"""
|
2567
|
+
"""Get Uptime"""
|
2625
2568
|
if self.is_sync:
|
2626
2569
|
return self._get_uptime_sync(
|
2627
2570
|
type=type,
|
@@ -2658,10 +2601,7 @@ class AdminApi:
|
|
2658
2601
|
_headers: Optional[Dict[StrictStr, Any]] = None,
|
2659
2602
|
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
2660
2603
|
) -> ApiResponse[str]:
|
2661
|
-
"""Get Uptime with HTTP info
|
2662
|
-
|
2663
|
-
This method can work in both sync and async modes based on the is_sync flag.
|
2664
|
-
"""
|
2604
|
+
"""Get Uptime with HTTP info"""
|
2665
2605
|
if self.is_sync:
|
2666
2606
|
return self._get_uptime_sync_with_http_info(
|
2667
2607
|
type=type,
|
@@ -2698,10 +2638,7 @@ class AdminApi:
|
|
2698
2638
|
_headers: Optional[Dict[StrictStr, Any]] = None,
|
2699
2639
|
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
2700
2640
|
) -> RESTResponseType:
|
2701
|
-
"""Get Uptime without preloading content
|
2702
|
-
|
2703
|
-
This method can work in both sync and async modes based on the is_sync flag.
|
2704
|
-
"""
|
2641
|
+
"""Get Uptime without preloading content"""
|
2705
2642
|
if self.is_sync:
|
2706
2643
|
return self._get_uptime_sync_without_preload_content(
|
2707
2644
|
type=type,
|
@@ -71,10 +71,7 @@ class SignalsApi:
|
|
71
71
|
_headers: Optional[Dict[StrictStr, Any]] = None,
|
72
72
|
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
73
73
|
) -> SignalOverviewStats:
|
74
|
-
"""Get Stats
|
75
|
-
|
76
|
-
This method can work in both sync and async modes based on the is_sync flag.
|
77
|
-
"""
|
74
|
+
"""Get Stats"""
|
78
75
|
if self.is_sync:
|
79
76
|
return self._get_signal_stats_sync(
|
80
77
|
_request_timeout=_request_timeout,
|
@@ -108,10 +105,7 @@ class SignalsApi:
|
|
108
105
|
_headers: Optional[Dict[StrictStr, Any]] = None,
|
109
106
|
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
110
107
|
) -> ApiResponse[SignalOverviewStats]:
|
111
|
-
"""Get Stats with HTTP info
|
112
|
-
|
113
|
-
This method can work in both sync and async modes based on the is_sync flag.
|
114
|
-
"""
|
108
|
+
"""Get Stats with HTTP info"""
|
115
109
|
if self.is_sync:
|
116
110
|
return self._get_signal_stats_sync_with_http_info(
|
117
111
|
_request_timeout=_request_timeout,
|
@@ -145,10 +139,7 @@ class SignalsApi:
|
|
145
139
|
_headers: Optional[Dict[StrictStr, Any]] = None,
|
146
140
|
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
147
141
|
) -> RESTResponseType:
|
148
|
-
"""Get Stats without preloading content
|
149
|
-
|
150
|
-
This method can work in both sync and async modes based on the is_sync flag.
|
151
|
-
"""
|
142
|
+
"""Get Stats without preloading content"""
|
152
143
|
if self.is_sync:
|
153
144
|
return self._get_signal_stats_sync_without_preload_content(
|
154
145
|
_request_timeout=_request_timeout,
|
@@ -503,10 +494,7 @@ class SignalsApi:
|
|
503
494
|
_headers: Optional[Dict[StrictStr, Any]] = None,
|
504
495
|
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
505
496
|
) -> PaginatedResponseSignalWithToken:
|
506
|
-
"""Get Signals
|
507
|
-
|
508
|
-
This method can work in both sync and async modes based on the is_sync flag.
|
509
|
-
"""
|
497
|
+
"""Get Signals"""
|
510
498
|
if self.is_sync:
|
511
499
|
return self._get_signals_sync(
|
512
500
|
filter_by=filter_by,
|
@@ -573,10 +561,7 @@ class SignalsApi:
|
|
573
561
|
_headers: Optional[Dict[StrictStr, Any]] = None,
|
574
562
|
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
575
563
|
) -> ApiResponse[PaginatedResponseSignalWithToken]:
|
576
|
-
"""Get Signals with HTTP info
|
577
|
-
|
578
|
-
This method can work in both sync and async modes based on the is_sync flag.
|
579
|
-
"""
|
564
|
+
"""Get Signals with HTTP info"""
|
580
565
|
if self.is_sync:
|
581
566
|
return self._get_signals_sync_with_http_info(
|
582
567
|
filter_by=filter_by,
|
@@ -643,10 +628,7 @@ class SignalsApi:
|
|
643
628
|
_headers: Optional[Dict[StrictStr, Any]] = None,
|
644
629
|
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
645
630
|
) -> RESTResponseType:
|
646
|
-
"""Get Signals without preloading content
|
647
|
-
|
648
|
-
This method can work in both sync and async modes based on the is_sync flag.
|
649
|
-
"""
|
631
|
+
"""Get Signals without preloading content"""
|
650
632
|
if self.is_sync:
|
651
633
|
return self._get_signals_sync_without_preload_content(
|
652
634
|
filter_by=filter_by,
|
@@ -1235,10 +1217,7 @@ class SignalsApi:
|
|
1235
1217
|
_headers: Optional[Dict[StrictStr, Any]] = None,
|
1236
1218
|
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
1237
1219
|
) -> PaginatedResponseSignalWithToken:
|
1238
|
-
"""Get Top Signals
|
1239
|
-
|
1240
|
-
This method can work in both sync and async modes based on the is_sync flag.
|
1241
|
-
"""
|
1220
|
+
"""Get Top Signals"""
|
1242
1221
|
if self.is_sync:
|
1243
1222
|
return self._get_top_signals_sync(
|
1244
1223
|
page=page,
|
@@ -1293,10 +1272,7 @@ class SignalsApi:
|
|
1293
1272
|
_headers: Optional[Dict[StrictStr, Any]] = None,
|
1294
1273
|
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
1295
1274
|
) -> ApiResponse[PaginatedResponseSignalWithToken]:
|
1296
|
-
"""Get Top Signals with HTTP info
|
1297
|
-
|
1298
|
-
This method can work in both sync and async modes based on the is_sync flag.
|
1299
|
-
"""
|
1275
|
+
"""Get Top Signals with HTTP info"""
|
1300
1276
|
if self.is_sync:
|
1301
1277
|
return self._get_top_signals_sync_with_http_info(
|
1302
1278
|
page=page,
|
@@ -1351,10 +1327,7 @@ class SignalsApi:
|
|
1351
1327
|
_headers: Optional[Dict[StrictStr, Any]] = None,
|
1352
1328
|
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
1353
1329
|
) -> RESTResponseType:
|
1354
|
-
"""Get Top Signals without preloading content
|
1355
|
-
|
1356
|
-
This method can work in both sync and async modes based on the is_sync flag.
|
1357
|
-
"""
|
1330
|
+
"""Get Top Signals without preloading content"""
|
1358
1331
|
if self.is_sync:
|
1359
1332
|
return self._get_top_signals_sync_without_preload_content(
|
1360
1333
|
page=page,
|
@@ -68,10 +68,7 @@ class StatusApi:
|
|
68
68
|
_headers: Optional[Dict[StrictStr, Any]] = None,
|
69
69
|
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
70
70
|
) -> str:
|
71
|
-
"""Time
|
72
|
-
|
73
|
-
This method can work in both sync and async modes based on the is_sync flag.
|
74
|
-
"""
|
71
|
+
"""Time"""
|
75
72
|
if self.is_sync:
|
76
73
|
return self._get_time_sync(
|
77
74
|
type=type,
|
@@ -108,10 +105,7 @@ class StatusApi:
|
|
108
105
|
_headers: Optional[Dict[StrictStr, Any]] = None,
|
109
106
|
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
110
107
|
) -> ApiResponse[str]:
|
111
|
-
"""Time with HTTP info
|
112
|
-
|
113
|
-
This method can work in both sync and async modes based on the is_sync flag.
|
114
|
-
"""
|
108
|
+
"""Time with HTTP info"""
|
115
109
|
if self.is_sync:
|
116
110
|
return self._get_time_sync_with_http_info(
|
117
111
|
type=type,
|
@@ -148,10 +142,7 @@ class StatusApi:
|
|
148
142
|
_headers: Optional[Dict[StrictStr, Any]] = None,
|
149
143
|
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
150
144
|
) -> RESTResponseType:
|
151
|
-
"""Time without preloading content
|
152
|
-
|
153
|
-
This method can work in both sync and async modes based on the is_sync flag.
|
154
|
-
"""
|
145
|
+
"""Time without preloading content"""
|
155
146
|
if self.is_sync:
|
156
147
|
return self._get_time_sync_without_preload_content(
|
157
148
|
type=type,
|
@@ -510,10 +501,7 @@ class StatusApi:
|
|
510
501
|
_headers: Optional[Dict[StrictStr, Any]] = None,
|
511
502
|
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
512
503
|
) -> str:
|
513
|
-
"""Ping
|
514
|
-
|
515
|
-
This method can work in both sync and async modes based on the is_sync flag.
|
516
|
-
"""
|
504
|
+
"""Ping"""
|
517
505
|
if self.is_sync:
|
518
506
|
return self._ping_sync(
|
519
507
|
_request_timeout=_request_timeout,
|
@@ -547,10 +535,7 @@ class StatusApi:
|
|
547
535
|
_headers: Optional[Dict[StrictStr, Any]] = None,
|
548
536
|
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
549
537
|
) -> ApiResponse[str]:
|
550
|
-
"""Ping with HTTP info
|
551
|
-
|
552
|
-
This method can work in both sync and async modes based on the is_sync flag.
|
553
|
-
"""
|
538
|
+
"""Ping with HTTP info"""
|
554
539
|
if self.is_sync:
|
555
540
|
return self._ping_sync_with_http_info(
|
556
541
|
_request_timeout=_request_timeout,
|
@@ -584,10 +569,7 @@ class StatusApi:
|
|
584
569
|
_headers: Optional[Dict[StrictStr, Any]] = None,
|
585
570
|
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
586
571
|
) -> RESTResponseType:
|
587
|
-
"""Ping without preloading content
|
588
|
-
|
589
|
-
This method can work in both sync and async modes based on the is_sync flag.
|
590
|
-
"""
|
572
|
+
"""Ping without preloading content"""
|
591
573
|
if self.is_sync:
|
592
574
|
return self._ping_sync_without_preload_content(
|
593
575
|
_request_timeout=_request_timeout,
|