opinion-clob-sdk 0.1.4__py3-none-any.whl → 0.1.6__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.
Potentially problematic release.
This version of opinion-clob-sdk might be problematic. Click here for more details.
- opinion_clob_sdk/__init__.py +1 -1
- opinion_clob_sdk/opinion_clob_sdk/__init__.py +1 -1
- opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/__init__.py +1 -1
- opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/__init__.py +1 -1
- opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/__init__.py +26 -0
- opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/__init__.py +0 -0
- opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/contract_caller.py +390 -0
- opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/contracts/__init__.py +0 -0
- opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/contracts/conditional_tokens.py +707 -0
- opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/contracts/erc20.py +111 -0
- opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/exception.py +11 -0
- opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/__init__.py +0 -0
- opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/builders/__init__.py +0 -0
- opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/builders/base_builder.py +41 -0
- opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/builders/exception.py +2 -0
- opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/builders/order_builder.py +90 -0
- opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/builders/order_builder_test.py +40 -0
- opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/constants.py +2 -0
- opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/model/__init__.py +0 -0
- opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/model/order.py +254 -0
- opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/model/order_type.py +9 -0
- opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/model/sides.py +8 -0
- opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/model/signatures.py +8 -0
- opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/signer.py +20 -0
- opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/utils.py +109 -0
- opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/__init__.py +0 -0
- opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/constants.py +19 -0
- opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/eip712/__init__.py +176 -0
- opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/enums.py +6 -0
- opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/exceptions.py +94 -0
- opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/multisend.py +347 -0
- opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/safe.py +141 -0
- opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/safe_contracts/__init__.py +0 -0
- opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/safe_contracts/compatibility_fallback_handler_v1_3_0.py +327 -0
- opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/safe_contracts/multisend_v1_3_0.py +22 -0
- opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/safe_contracts/safe_v1_3_0.py +1035 -0
- opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/safe_contracts/utils.py +26 -0
- opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/safe_signature.py +364 -0
- opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/safe_test.py +37 -0
- opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/safe_tx.py +437 -0
- opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/signatures.py +63 -0
- opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/typing.py +17 -0
- opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/utils.py +218 -0
- opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/config.py +4 -0
- opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/model.py +19 -0
- opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/__init__.py +26 -0
- opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/__init__.py +0 -0
- opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/contract_caller.py +390 -0
- opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/contracts/__init__.py +0 -0
- opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/contracts/conditional_tokens.py +707 -0
- opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/contracts/erc20.py +111 -0
- opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/exception.py +11 -0
- opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/__init__.py +0 -0
- opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/builders/__init__.py +0 -0
- opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/builders/base_builder.py +41 -0
- opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/builders/exception.py +2 -0
- opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/builders/order_builder.py +90 -0
- opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/builders/order_builder_test.py +40 -0
- opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/constants.py +2 -0
- opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/model/__init__.py +0 -0
- opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/model/order.py +254 -0
- opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/model/order_type.py +9 -0
- opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/model/sides.py +8 -0
- opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/model/signatures.py +8 -0
- opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/signer.py +20 -0
- opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/utils.py +109 -0
- opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/__init__.py +0 -0
- opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/constants.py +19 -0
- opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/eip712/__init__.py +176 -0
- opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/enums.py +6 -0
- opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/exceptions.py +94 -0
- opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/multisend.py +347 -0
- opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/safe.py +141 -0
- opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/safe_contracts/__init__.py +0 -0
- opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/safe_contracts/compatibility_fallback_handler_v1_3_0.py +327 -0
- opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/safe_contracts/multisend_v1_3_0.py +22 -0
- opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/safe_contracts/safe_v1_3_0.py +1035 -0
- opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/safe_contracts/utils.py +26 -0
- opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/safe_signature.py +364 -0
- opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/safe_test.py +37 -0
- opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/safe_tx.py +437 -0
- opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/signatures.py +63 -0
- opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/typing.py +17 -0
- opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/utils.py +218 -0
- opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/config.py +4 -0
- opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/model.py +19 -0
- opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/sdk.py +950 -0
- opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/sdk.py +950 -0
- opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/sdk.py +16 -13
- opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/verify_api_calls.py +135 -0
- opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/sdk.py +16 -13
- opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/verify_api_calls.py +135 -0
- opinion_clob_sdk/opinion_clob_sdk/sdk.py +16 -13
- opinion_clob_sdk/sdk.py +16 -13
- {opinion_clob_sdk-0.1.4.dist-info → opinion_clob_sdk-0.1.6.dist-info}/METADATA +1 -1
- {opinion_clob_sdk-0.1.4.dist-info → opinion_clob_sdk-0.1.6.dist-info}/RECORD +98 -12
- {opinion_clob_sdk-0.1.4.dist-info → opinion_clob_sdk-0.1.6.dist-info}/WHEEL +0 -0
- {opinion_clob_sdk-0.1.4.dist-info → opinion_clob_sdk-0.1.6.dist-info}/top_level.txt +0 -0
|
@@ -314,7 +314,7 @@ class Client:
|
|
|
314
314
|
|
|
315
315
|
result = self.market_api.openapi_market_get(
|
|
316
316
|
apikey=self.api_key,
|
|
317
|
-
|
|
317
|
+
market_type=topic_type.value if topic_type else None,
|
|
318
318
|
page=page,
|
|
319
319
|
limit=limit,
|
|
320
320
|
chain_id=str(self.chain_id),
|
|
@@ -376,8 +376,15 @@ class Client:
|
|
|
376
376
|
logging.error(f"API error: {e}")
|
|
377
377
|
raise OpenApiError(f"Failed to get categorical market: {e}")
|
|
378
378
|
|
|
379
|
-
def get_price_history(self, token_id, interval="
|
|
380
|
-
"""Get price history/candlestick data for a token
|
|
379
|
+
def get_price_history(self, token_id, interval="1h", start_at=None, end_at=None):
|
|
380
|
+
"""Get price history/candlestick data for a token
|
|
381
|
+
|
|
382
|
+
Args:
|
|
383
|
+
token_id: Token ID
|
|
384
|
+
interval: Price data interval: 1m, 1h, 1d, 1w, max (default: 1h)
|
|
385
|
+
start_at: Start timestamp in Unix seconds (optional)
|
|
386
|
+
end_at: End timestamp in Unix seconds (optional)
|
|
387
|
+
"""
|
|
381
388
|
try:
|
|
382
389
|
if not token_id:
|
|
383
390
|
raise InvalidParamError(MISSING_TOKEN_ID_MSG)
|
|
@@ -389,8 +396,8 @@ class Client:
|
|
|
389
396
|
apikey=self.api_key,
|
|
390
397
|
token_id=token_id,
|
|
391
398
|
interval=interval,
|
|
392
|
-
|
|
393
|
-
|
|
399
|
+
start_at=start_at,
|
|
400
|
+
end_at=end_at
|
|
394
401
|
)
|
|
395
402
|
return result
|
|
396
403
|
except InvalidParamError as e:
|
|
@@ -521,7 +528,7 @@ class Client:
|
|
|
521
528
|
order_exp_time='0'
|
|
522
529
|
)
|
|
523
530
|
|
|
524
|
-
result = self.market_api.openapi_order_post(apikey=self.api_key,
|
|
531
|
+
result = self.market_api.openapi_order_post(apikey=self.api_key, add_order_req=v2_add_order_req)
|
|
525
532
|
return result
|
|
526
533
|
except InvalidParamError as e:
|
|
527
534
|
logging.error(f"Validation error: {e}")
|
|
@@ -647,7 +654,7 @@ class Client:
|
|
|
647
654
|
|
|
648
655
|
# Internally use trans_no for API compatibility
|
|
649
656
|
request_body = OpenapiCancelOrderRequestOpenAPI(trans_no=order_id)
|
|
650
|
-
result = self.market_api.openapi_order_cancel_post(apikey=self.api_key,
|
|
657
|
+
result = self.market_api.openapi_order_cancel_post(apikey=self.api_key, cancel_order_req=request_body)
|
|
651
658
|
return result
|
|
652
659
|
|
|
653
660
|
def place_orders_batch(self, orders: List[PlaceOrderDataInput], check_approval: bool = False) -> List[Any]:
|
|
@@ -901,15 +908,11 @@ class Client:
|
|
|
901
908
|
logging.error(f"API error: {e}")
|
|
902
909
|
raise OpenApiError(f"Failed to get positions: {e}")
|
|
903
910
|
|
|
904
|
-
def get_my_balances(self
|
|
905
|
-
"""Get user's balances"""
|
|
911
|
+
def get_my_balances(self):
|
|
912
|
+
"""Get user's balances (uses authenticated user from apikey)"""
|
|
906
913
|
try:
|
|
907
|
-
if not wallet_address:
|
|
908
|
-
wallet_address = self.contract_caller.signer.address()
|
|
909
|
-
|
|
910
914
|
result = self.market_api.openapi_user_balance_get(
|
|
911
915
|
apikey=self.api_key,
|
|
912
|
-
wallet_address=wallet_address,
|
|
913
916
|
chain_id=str(self.chain_id)
|
|
914
917
|
)
|
|
915
918
|
return result
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Verification script to check all API method signatures in opinion_clob_sdk
|
|
3
|
+
This script validates that all API calls pass the correct parameters to opinion_api
|
|
4
|
+
"""
|
|
5
|
+
|
|
6
|
+
import inspect
|
|
7
|
+
from opinion_api.api.prediction_market_api import PredictionMarketApi
|
|
8
|
+
from opinion_api.api.user_api import UserApi
|
|
9
|
+
|
|
10
|
+
# Expected API calls with required parameters
|
|
11
|
+
EXPECTED_API_CALLS = {
|
|
12
|
+
# Market API calls
|
|
13
|
+
'openapi_quote_token_get': ['apikey', 'chain_id'], # chain_id should be str
|
|
14
|
+
'openapi_market_get': ['apikey', 'chain_id'], # chain_id should be str
|
|
15
|
+
'openapi_market_market_id_get': ['apikey', 'market_id'],
|
|
16
|
+
'openapi_market_categorical_market_id_get': ['apikey', 'market_id'],
|
|
17
|
+
'openapi_token_price_history_get': ['apikey', 'token_id', 'interval', 'start_time', 'bars'],
|
|
18
|
+
'openapi_token_orderbook_get': ['apikey', 'token_id'],
|
|
19
|
+
'openapi_token_latest_price_get': ['apikey', 'token_id'],
|
|
20
|
+
'openapi_token_fee_rates_get': ['apikey', 'token_id'],
|
|
21
|
+
'openapi_order_post': ['apikey', 'v2_add_order_req'],
|
|
22
|
+
'openapi_order_cancel_post': ['apikey', 'openapi_cancel_order_request_open_api'],
|
|
23
|
+
'openapi_order_get': ['apikey', 'chain_id'], # chain_id should be str
|
|
24
|
+
'openapi_order_order_id_get': ['apikey', 'order_id'],
|
|
25
|
+
'openapi_positions_get': ['apikey', 'chain_id'], # chain_id should be str
|
|
26
|
+
'openapi_user_balance_get': ['apikey', 'wallet_address', 'chain_id'], # chain_id should be str
|
|
27
|
+
'openapi_trade_get': ['apikey', 'chain_id'], # chain_id should be str
|
|
28
|
+
|
|
29
|
+
# User API calls
|
|
30
|
+
'openapi_user_auth_get': ['apikey'],
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
def verify_api_signatures():
|
|
34
|
+
"""Verify that all API methods have the expected signatures"""
|
|
35
|
+
errors = []
|
|
36
|
+
|
|
37
|
+
# Check PredictionMarketApi methods
|
|
38
|
+
for method_name, expected_params in EXPECTED_API_CALLS.items():
|
|
39
|
+
if method_name == 'openapi_user_auth_get':
|
|
40
|
+
continue # This is in UserApi
|
|
41
|
+
|
|
42
|
+
if not hasattr(PredictionMarketApi, method_name):
|
|
43
|
+
errors.append(f"❌ Method {method_name} not found in PredictionMarketApi")
|
|
44
|
+
continue
|
|
45
|
+
|
|
46
|
+
method = getattr(PredictionMarketApi, method_name)
|
|
47
|
+
sig = inspect.signature(method)
|
|
48
|
+
params = list(sig.parameters.keys())
|
|
49
|
+
|
|
50
|
+
# Remove 'self' from params
|
|
51
|
+
if 'self' in params:
|
|
52
|
+
params.remove('self')
|
|
53
|
+
|
|
54
|
+
# Check if all expected params are in the signature
|
|
55
|
+
for expected_param in expected_params:
|
|
56
|
+
if expected_param not in params:
|
|
57
|
+
errors.append(f"❌ {method_name}: missing parameter '{expected_param}'")
|
|
58
|
+
|
|
59
|
+
# Check UserApi methods
|
|
60
|
+
if hasattr(UserApi, 'openapi_user_auth_get'):
|
|
61
|
+
method = getattr(UserApi, 'openapi_user_auth_get')
|
|
62
|
+
sig = inspect.signature(method)
|
|
63
|
+
params = list(sig.parameters.keys())
|
|
64
|
+
|
|
65
|
+
if 'self' in params:
|
|
66
|
+
params.remove('self')
|
|
67
|
+
|
|
68
|
+
if 'apikey' not in params:
|
|
69
|
+
errors.append("❌ openapi_user_auth_get: missing parameter 'apikey'")
|
|
70
|
+
else:
|
|
71
|
+
errors.append("❌ Method openapi_user_auth_get not found in UserApi")
|
|
72
|
+
|
|
73
|
+
return errors
|
|
74
|
+
|
|
75
|
+
def check_sdk_calls():
|
|
76
|
+
"""Check that SDK methods call the API with correct parameters"""
|
|
77
|
+
import re
|
|
78
|
+
|
|
79
|
+
# Read sdk.py
|
|
80
|
+
with open('/Users/nikli/Work/openapi/openapi/python_sdk/opinion_clob_sdk/sdk.py', 'r') as f:
|
|
81
|
+
sdk_content = f.read()
|
|
82
|
+
|
|
83
|
+
issues = []
|
|
84
|
+
|
|
85
|
+
# Find all API calls in SDK
|
|
86
|
+
api_call_pattern = r'self\.(market_api|user_api)\.(\w+)\((.*?)\)'
|
|
87
|
+
matches = re.finditer(api_call_pattern, sdk_content, re.MULTILINE | re.DOTALL)
|
|
88
|
+
|
|
89
|
+
for match in matches:
|
|
90
|
+
api_type = match.group(1)
|
|
91
|
+
method_name = match.group(2)
|
|
92
|
+
params_str = match.group(3)
|
|
93
|
+
|
|
94
|
+
# Check for apikey parameter
|
|
95
|
+
if 'apikey=' not in params_str:
|
|
96
|
+
issues.append(f"⚠️ {method_name}: missing apikey parameter")
|
|
97
|
+
elif 'apikey=self.api_key' not in params_str:
|
|
98
|
+
issues.append(f"⚠️ {method_name}: apikey should be self.api_key")
|
|
99
|
+
|
|
100
|
+
# Check for chain_id parameter (should be str)
|
|
101
|
+
if 'chain_id=' in params_str:
|
|
102
|
+
if 'chain_id=str(self.chain_id)' not in params_str:
|
|
103
|
+
issues.append(f"⚠️ {method_name}: chain_id should be str(self.chain_id)")
|
|
104
|
+
|
|
105
|
+
return issues
|
|
106
|
+
|
|
107
|
+
if __name__ == '__main__':
|
|
108
|
+
print("=" * 70)
|
|
109
|
+
print("Verifying API Signatures in opinion_api")
|
|
110
|
+
print("=" * 70)
|
|
111
|
+
|
|
112
|
+
errors = verify_api_signatures()
|
|
113
|
+
if errors:
|
|
114
|
+
for error in errors:
|
|
115
|
+
print(error)
|
|
116
|
+
print(f"\n❌ Found {len(errors)} signature issues")
|
|
117
|
+
else:
|
|
118
|
+
print("✅ All API signatures verified successfully")
|
|
119
|
+
|
|
120
|
+
print("\n" + "=" * 70)
|
|
121
|
+
print("Checking SDK API Calls")
|
|
122
|
+
print("=" * 70)
|
|
123
|
+
|
|
124
|
+
issues = check_sdk_calls()
|
|
125
|
+
if issues:
|
|
126
|
+
for issue in issues:
|
|
127
|
+
print(issue)
|
|
128
|
+
print(f"\n⚠️ Found {len(issues)} potential issues in SDK calls")
|
|
129
|
+
else:
|
|
130
|
+
print("✅ All SDK API calls verified successfully")
|
|
131
|
+
|
|
132
|
+
if not errors and not issues:
|
|
133
|
+
print("\n" + "=" * 70)
|
|
134
|
+
print("🎉 All verifications passed!")
|
|
135
|
+
print("=" * 70)
|
|
@@ -314,7 +314,7 @@ class Client:
|
|
|
314
314
|
|
|
315
315
|
result = self.market_api.openapi_market_get(
|
|
316
316
|
apikey=self.api_key,
|
|
317
|
-
|
|
317
|
+
market_type=topic_type.value if topic_type else None,
|
|
318
318
|
page=page,
|
|
319
319
|
limit=limit,
|
|
320
320
|
chain_id=str(self.chain_id),
|
|
@@ -376,8 +376,15 @@ class Client:
|
|
|
376
376
|
logging.error(f"API error: {e}")
|
|
377
377
|
raise OpenApiError(f"Failed to get categorical market: {e}")
|
|
378
378
|
|
|
379
|
-
def get_price_history(self, token_id, interval="
|
|
380
|
-
"""Get price history/candlestick data for a token
|
|
379
|
+
def get_price_history(self, token_id, interval="1h", start_at=None, end_at=None):
|
|
380
|
+
"""Get price history/candlestick data for a token
|
|
381
|
+
|
|
382
|
+
Args:
|
|
383
|
+
token_id: Token ID
|
|
384
|
+
interval: Price data interval: 1m, 1h, 1d, 1w, max (default: 1h)
|
|
385
|
+
start_at: Start timestamp in Unix seconds (optional)
|
|
386
|
+
end_at: End timestamp in Unix seconds (optional)
|
|
387
|
+
"""
|
|
381
388
|
try:
|
|
382
389
|
if not token_id:
|
|
383
390
|
raise InvalidParamError(MISSING_TOKEN_ID_MSG)
|
|
@@ -389,8 +396,8 @@ class Client:
|
|
|
389
396
|
apikey=self.api_key,
|
|
390
397
|
token_id=token_id,
|
|
391
398
|
interval=interval,
|
|
392
|
-
|
|
393
|
-
|
|
399
|
+
start_at=start_at,
|
|
400
|
+
end_at=end_at
|
|
394
401
|
)
|
|
395
402
|
return result
|
|
396
403
|
except InvalidParamError as e:
|
|
@@ -521,7 +528,7 @@ class Client:
|
|
|
521
528
|
order_exp_time='0'
|
|
522
529
|
)
|
|
523
530
|
|
|
524
|
-
result = self.market_api.openapi_order_post(apikey=self.api_key,
|
|
531
|
+
result = self.market_api.openapi_order_post(apikey=self.api_key, add_order_req=v2_add_order_req)
|
|
525
532
|
return result
|
|
526
533
|
except InvalidParamError as e:
|
|
527
534
|
logging.error(f"Validation error: {e}")
|
|
@@ -647,7 +654,7 @@ class Client:
|
|
|
647
654
|
|
|
648
655
|
# Internally use trans_no for API compatibility
|
|
649
656
|
request_body = OpenapiCancelOrderRequestOpenAPI(trans_no=order_id)
|
|
650
|
-
result = self.market_api.openapi_order_cancel_post(apikey=self.api_key,
|
|
657
|
+
result = self.market_api.openapi_order_cancel_post(apikey=self.api_key, cancel_order_req=request_body)
|
|
651
658
|
return result
|
|
652
659
|
|
|
653
660
|
def place_orders_batch(self, orders: List[PlaceOrderDataInput], check_approval: bool = False) -> List[Any]:
|
|
@@ -901,15 +908,11 @@ class Client:
|
|
|
901
908
|
logging.error(f"API error: {e}")
|
|
902
909
|
raise OpenApiError(f"Failed to get positions: {e}")
|
|
903
910
|
|
|
904
|
-
def get_my_balances(self
|
|
905
|
-
"""Get user's balances"""
|
|
911
|
+
def get_my_balances(self):
|
|
912
|
+
"""Get user's balances (uses authenticated user from apikey)"""
|
|
906
913
|
try:
|
|
907
|
-
if not wallet_address:
|
|
908
|
-
wallet_address = self.contract_caller.signer.address()
|
|
909
|
-
|
|
910
914
|
result = self.market_api.openapi_user_balance_get(
|
|
911
915
|
apikey=self.api_key,
|
|
912
|
-
wallet_address=wallet_address,
|
|
913
916
|
chain_id=str(self.chain_id)
|
|
914
917
|
)
|
|
915
918
|
return result
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Verification script to check all API method signatures in opinion_clob_sdk
|
|
3
|
+
This script validates that all API calls pass the correct parameters to opinion_api
|
|
4
|
+
"""
|
|
5
|
+
|
|
6
|
+
import inspect
|
|
7
|
+
from opinion_api.api.prediction_market_api import PredictionMarketApi
|
|
8
|
+
from opinion_api.api.user_api import UserApi
|
|
9
|
+
|
|
10
|
+
# Expected API calls with required parameters
|
|
11
|
+
EXPECTED_API_CALLS = {
|
|
12
|
+
# Market API calls
|
|
13
|
+
'openapi_quote_token_get': ['apikey', 'chain_id'], # chain_id should be str
|
|
14
|
+
'openapi_market_get': ['apikey', 'chain_id'], # chain_id should be str
|
|
15
|
+
'openapi_market_market_id_get': ['apikey', 'market_id'],
|
|
16
|
+
'openapi_market_categorical_market_id_get': ['apikey', 'market_id'],
|
|
17
|
+
'openapi_token_price_history_get': ['apikey', 'token_id', 'interval', 'start_time', 'bars'],
|
|
18
|
+
'openapi_token_orderbook_get': ['apikey', 'token_id'],
|
|
19
|
+
'openapi_token_latest_price_get': ['apikey', 'token_id'],
|
|
20
|
+
'openapi_token_fee_rates_get': ['apikey', 'token_id'],
|
|
21
|
+
'openapi_order_post': ['apikey', 'v2_add_order_req'],
|
|
22
|
+
'openapi_order_cancel_post': ['apikey', 'openapi_cancel_order_request_open_api'],
|
|
23
|
+
'openapi_order_get': ['apikey', 'chain_id'], # chain_id should be str
|
|
24
|
+
'openapi_order_order_id_get': ['apikey', 'order_id'],
|
|
25
|
+
'openapi_positions_get': ['apikey', 'chain_id'], # chain_id should be str
|
|
26
|
+
'openapi_user_balance_get': ['apikey', 'wallet_address', 'chain_id'], # chain_id should be str
|
|
27
|
+
'openapi_trade_get': ['apikey', 'chain_id'], # chain_id should be str
|
|
28
|
+
|
|
29
|
+
# User API calls
|
|
30
|
+
'openapi_user_auth_get': ['apikey'],
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
def verify_api_signatures():
|
|
34
|
+
"""Verify that all API methods have the expected signatures"""
|
|
35
|
+
errors = []
|
|
36
|
+
|
|
37
|
+
# Check PredictionMarketApi methods
|
|
38
|
+
for method_name, expected_params in EXPECTED_API_CALLS.items():
|
|
39
|
+
if method_name == 'openapi_user_auth_get':
|
|
40
|
+
continue # This is in UserApi
|
|
41
|
+
|
|
42
|
+
if not hasattr(PredictionMarketApi, method_name):
|
|
43
|
+
errors.append(f"❌ Method {method_name} not found in PredictionMarketApi")
|
|
44
|
+
continue
|
|
45
|
+
|
|
46
|
+
method = getattr(PredictionMarketApi, method_name)
|
|
47
|
+
sig = inspect.signature(method)
|
|
48
|
+
params = list(sig.parameters.keys())
|
|
49
|
+
|
|
50
|
+
# Remove 'self' from params
|
|
51
|
+
if 'self' in params:
|
|
52
|
+
params.remove('self')
|
|
53
|
+
|
|
54
|
+
# Check if all expected params are in the signature
|
|
55
|
+
for expected_param in expected_params:
|
|
56
|
+
if expected_param not in params:
|
|
57
|
+
errors.append(f"❌ {method_name}: missing parameter '{expected_param}'")
|
|
58
|
+
|
|
59
|
+
# Check UserApi methods
|
|
60
|
+
if hasattr(UserApi, 'openapi_user_auth_get'):
|
|
61
|
+
method = getattr(UserApi, 'openapi_user_auth_get')
|
|
62
|
+
sig = inspect.signature(method)
|
|
63
|
+
params = list(sig.parameters.keys())
|
|
64
|
+
|
|
65
|
+
if 'self' in params:
|
|
66
|
+
params.remove('self')
|
|
67
|
+
|
|
68
|
+
if 'apikey' not in params:
|
|
69
|
+
errors.append("❌ openapi_user_auth_get: missing parameter 'apikey'")
|
|
70
|
+
else:
|
|
71
|
+
errors.append("❌ Method openapi_user_auth_get not found in UserApi")
|
|
72
|
+
|
|
73
|
+
return errors
|
|
74
|
+
|
|
75
|
+
def check_sdk_calls():
|
|
76
|
+
"""Check that SDK methods call the API with correct parameters"""
|
|
77
|
+
import re
|
|
78
|
+
|
|
79
|
+
# Read sdk.py
|
|
80
|
+
with open('/Users/nikli/Work/openapi/openapi/python_sdk/opinion_clob_sdk/sdk.py', 'r') as f:
|
|
81
|
+
sdk_content = f.read()
|
|
82
|
+
|
|
83
|
+
issues = []
|
|
84
|
+
|
|
85
|
+
# Find all API calls in SDK
|
|
86
|
+
api_call_pattern = r'self\.(market_api|user_api)\.(\w+)\((.*?)\)'
|
|
87
|
+
matches = re.finditer(api_call_pattern, sdk_content, re.MULTILINE | re.DOTALL)
|
|
88
|
+
|
|
89
|
+
for match in matches:
|
|
90
|
+
api_type = match.group(1)
|
|
91
|
+
method_name = match.group(2)
|
|
92
|
+
params_str = match.group(3)
|
|
93
|
+
|
|
94
|
+
# Check for apikey parameter
|
|
95
|
+
if 'apikey=' not in params_str:
|
|
96
|
+
issues.append(f"⚠️ {method_name}: missing apikey parameter")
|
|
97
|
+
elif 'apikey=self.api_key' not in params_str:
|
|
98
|
+
issues.append(f"⚠️ {method_name}: apikey should be self.api_key")
|
|
99
|
+
|
|
100
|
+
# Check for chain_id parameter (should be str)
|
|
101
|
+
if 'chain_id=' in params_str:
|
|
102
|
+
if 'chain_id=str(self.chain_id)' not in params_str:
|
|
103
|
+
issues.append(f"⚠️ {method_name}: chain_id should be str(self.chain_id)")
|
|
104
|
+
|
|
105
|
+
return issues
|
|
106
|
+
|
|
107
|
+
if __name__ == '__main__':
|
|
108
|
+
print("=" * 70)
|
|
109
|
+
print("Verifying API Signatures in opinion_api")
|
|
110
|
+
print("=" * 70)
|
|
111
|
+
|
|
112
|
+
errors = verify_api_signatures()
|
|
113
|
+
if errors:
|
|
114
|
+
for error in errors:
|
|
115
|
+
print(error)
|
|
116
|
+
print(f"\n❌ Found {len(errors)} signature issues")
|
|
117
|
+
else:
|
|
118
|
+
print("✅ All API signatures verified successfully")
|
|
119
|
+
|
|
120
|
+
print("\n" + "=" * 70)
|
|
121
|
+
print("Checking SDK API Calls")
|
|
122
|
+
print("=" * 70)
|
|
123
|
+
|
|
124
|
+
issues = check_sdk_calls()
|
|
125
|
+
if issues:
|
|
126
|
+
for issue in issues:
|
|
127
|
+
print(issue)
|
|
128
|
+
print(f"\n⚠️ Found {len(issues)} potential issues in SDK calls")
|
|
129
|
+
else:
|
|
130
|
+
print("✅ All SDK API calls verified successfully")
|
|
131
|
+
|
|
132
|
+
if not errors and not issues:
|
|
133
|
+
print("\n" + "=" * 70)
|
|
134
|
+
print("🎉 All verifications passed!")
|
|
135
|
+
print("=" * 70)
|
|
@@ -314,7 +314,7 @@ class Client:
|
|
|
314
314
|
|
|
315
315
|
result = self.market_api.openapi_market_get(
|
|
316
316
|
apikey=self.api_key,
|
|
317
|
-
|
|
317
|
+
market_type=topic_type.value if topic_type else None,
|
|
318
318
|
page=page,
|
|
319
319
|
limit=limit,
|
|
320
320
|
chain_id=str(self.chain_id),
|
|
@@ -376,8 +376,15 @@ class Client:
|
|
|
376
376
|
logging.error(f"API error: {e}")
|
|
377
377
|
raise OpenApiError(f"Failed to get categorical market: {e}")
|
|
378
378
|
|
|
379
|
-
def get_price_history(self, token_id, interval="
|
|
380
|
-
"""Get price history/candlestick data for a token
|
|
379
|
+
def get_price_history(self, token_id, interval="1h", start_at=None, end_at=None):
|
|
380
|
+
"""Get price history/candlestick data for a token
|
|
381
|
+
|
|
382
|
+
Args:
|
|
383
|
+
token_id: Token ID
|
|
384
|
+
interval: Price data interval: 1m, 1h, 1d, 1w, max (default: 1h)
|
|
385
|
+
start_at: Start timestamp in Unix seconds (optional)
|
|
386
|
+
end_at: End timestamp in Unix seconds (optional)
|
|
387
|
+
"""
|
|
381
388
|
try:
|
|
382
389
|
if not token_id:
|
|
383
390
|
raise InvalidParamError(MISSING_TOKEN_ID_MSG)
|
|
@@ -389,8 +396,8 @@ class Client:
|
|
|
389
396
|
apikey=self.api_key,
|
|
390
397
|
token_id=token_id,
|
|
391
398
|
interval=interval,
|
|
392
|
-
|
|
393
|
-
|
|
399
|
+
start_at=start_at,
|
|
400
|
+
end_at=end_at
|
|
394
401
|
)
|
|
395
402
|
return result
|
|
396
403
|
except InvalidParamError as e:
|
|
@@ -521,7 +528,7 @@ class Client:
|
|
|
521
528
|
order_exp_time='0'
|
|
522
529
|
)
|
|
523
530
|
|
|
524
|
-
result = self.market_api.openapi_order_post(apikey=self.api_key,
|
|
531
|
+
result = self.market_api.openapi_order_post(apikey=self.api_key, add_order_req=v2_add_order_req)
|
|
525
532
|
return result
|
|
526
533
|
except InvalidParamError as e:
|
|
527
534
|
logging.error(f"Validation error: {e}")
|
|
@@ -647,7 +654,7 @@ class Client:
|
|
|
647
654
|
|
|
648
655
|
# Internally use trans_no for API compatibility
|
|
649
656
|
request_body = OpenapiCancelOrderRequestOpenAPI(trans_no=order_id)
|
|
650
|
-
result = self.market_api.openapi_order_cancel_post(apikey=self.api_key,
|
|
657
|
+
result = self.market_api.openapi_order_cancel_post(apikey=self.api_key, cancel_order_req=request_body)
|
|
651
658
|
return result
|
|
652
659
|
|
|
653
660
|
def place_orders_batch(self, orders: List[PlaceOrderDataInput], check_approval: bool = False) -> List[Any]:
|
|
@@ -901,15 +908,11 @@ class Client:
|
|
|
901
908
|
logging.error(f"API error: {e}")
|
|
902
909
|
raise OpenApiError(f"Failed to get positions: {e}")
|
|
903
910
|
|
|
904
|
-
def get_my_balances(self
|
|
905
|
-
"""Get user's balances"""
|
|
911
|
+
def get_my_balances(self):
|
|
912
|
+
"""Get user's balances (uses authenticated user from apikey)"""
|
|
906
913
|
try:
|
|
907
|
-
if not wallet_address:
|
|
908
|
-
wallet_address = self.contract_caller.signer.address()
|
|
909
|
-
|
|
910
914
|
result = self.market_api.openapi_user_balance_get(
|
|
911
915
|
apikey=self.api_key,
|
|
912
|
-
wallet_address=wallet_address,
|
|
913
916
|
chain_id=str(self.chain_id)
|
|
914
917
|
)
|
|
915
918
|
return result
|
opinion_clob_sdk/sdk.py
CHANGED
|
@@ -314,7 +314,7 @@ class Client:
|
|
|
314
314
|
|
|
315
315
|
result = self.market_api.openapi_market_get(
|
|
316
316
|
apikey=self.api_key,
|
|
317
|
-
|
|
317
|
+
market_type=topic_type.value if topic_type else None,
|
|
318
318
|
page=page,
|
|
319
319
|
limit=limit,
|
|
320
320
|
chain_id=str(self.chain_id),
|
|
@@ -376,8 +376,15 @@ class Client:
|
|
|
376
376
|
logging.error(f"API error: {e}")
|
|
377
377
|
raise OpenApiError(f"Failed to get categorical market: {e}")
|
|
378
378
|
|
|
379
|
-
def get_price_history(self, token_id, interval="
|
|
380
|
-
"""Get price history/candlestick data for a token
|
|
379
|
+
def get_price_history(self, token_id, interval="1h", start_at=None, end_at=None):
|
|
380
|
+
"""Get price history/candlestick data for a token
|
|
381
|
+
|
|
382
|
+
Args:
|
|
383
|
+
token_id: Token ID
|
|
384
|
+
interval: Price data interval: 1m, 1h, 1d, 1w, max (default: 1h)
|
|
385
|
+
start_at: Start timestamp in Unix seconds (optional)
|
|
386
|
+
end_at: End timestamp in Unix seconds (optional)
|
|
387
|
+
"""
|
|
381
388
|
try:
|
|
382
389
|
if not token_id:
|
|
383
390
|
raise InvalidParamError(MISSING_TOKEN_ID_MSG)
|
|
@@ -389,8 +396,8 @@ class Client:
|
|
|
389
396
|
apikey=self.api_key,
|
|
390
397
|
token_id=token_id,
|
|
391
398
|
interval=interval,
|
|
392
|
-
|
|
393
|
-
|
|
399
|
+
start_at=start_at,
|
|
400
|
+
end_at=end_at
|
|
394
401
|
)
|
|
395
402
|
return result
|
|
396
403
|
except InvalidParamError as e:
|
|
@@ -521,7 +528,7 @@ class Client:
|
|
|
521
528
|
order_exp_time='0'
|
|
522
529
|
)
|
|
523
530
|
|
|
524
|
-
result = self.market_api.openapi_order_post(apikey=self.api_key,
|
|
531
|
+
result = self.market_api.openapi_order_post(apikey=self.api_key, add_order_req=v2_add_order_req)
|
|
525
532
|
return result
|
|
526
533
|
except InvalidParamError as e:
|
|
527
534
|
logging.error(f"Validation error: {e}")
|
|
@@ -647,7 +654,7 @@ class Client:
|
|
|
647
654
|
|
|
648
655
|
# Internally use trans_no for API compatibility
|
|
649
656
|
request_body = OpenapiCancelOrderRequestOpenAPI(trans_no=order_id)
|
|
650
|
-
result = self.market_api.openapi_order_cancel_post(apikey=self.api_key,
|
|
657
|
+
result = self.market_api.openapi_order_cancel_post(apikey=self.api_key, cancel_order_req=request_body)
|
|
651
658
|
return result
|
|
652
659
|
|
|
653
660
|
def place_orders_batch(self, orders: List[PlaceOrderDataInput], check_approval: bool = False) -> List[Any]:
|
|
@@ -901,15 +908,11 @@ class Client:
|
|
|
901
908
|
logging.error(f"API error: {e}")
|
|
902
909
|
raise OpenApiError(f"Failed to get positions: {e}")
|
|
903
910
|
|
|
904
|
-
def get_my_balances(self
|
|
905
|
-
"""Get user's balances"""
|
|
911
|
+
def get_my_balances(self):
|
|
912
|
+
"""Get user's balances (uses authenticated user from apikey)"""
|
|
906
913
|
try:
|
|
907
|
-
if not wallet_address:
|
|
908
|
-
wallet_address = self.contract_caller.signer.address()
|
|
909
|
-
|
|
910
914
|
result = self.market_api.openapi_user_balance_get(
|
|
911
915
|
apikey=self.api_key,
|
|
912
|
-
wallet_address=wallet_address,
|
|
913
916
|
chain_id=str(self.chain_id)
|
|
914
917
|
)
|
|
915
918
|
return result
|