From 173f97b01d127aaf958e1019bbb90fba209872b9 Mon Sep 17 00:00:00 2001 From: Shanshan Li Date: Wed, 25 Mar 2026 10:34:07 +0800 Subject: [PATCH] release v1.33.0 --- README.md | 5 +- cobo_waas2/__init__.py | 2 +- cobo_waas2/api/payment_api.py | 154 +++++++++++++++++++++++++ cobo_waas2/api_client.py | 2 +- cobo_waas2/models/transaction_extra.py | 40 +++++-- docs/PaymentApi.md | 68 +++++++++++ docs/TransactionExtra.md | 3 + pyproject.toml | 2 +- setup.py | 2 +- test/test_payment_api.py | 11 ++ test/test_transaction_extra.py | 5 +- 11 files changed, 279 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index d13ca76b..3d826751 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ For more information about the WaaS 2.0 API, see [Introduction to WaaS 2.0](http This Python package is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project: - API version: v2 -- Package version: 1.32.0 +- Package version: 1.33.0 - Generator version: 7.6.0 - Build package: org.openapitools.codegen.languages.PythonClientCodegen For more information, please visit [https://www.cobo.com/waas](https://www.cobo.com/waas) @@ -27,7 +27,7 @@ Python 3.7+ ### pip install ```sh -pip install cobo-waas2==1.32.0 +pip install cobo-waas2==1.33.0 ``` Then import the package: @@ -144,6 +144,7 @@ Class | Method | HTTP request | Description *PaymentApi* | [**create_refund**](docs/PaymentApi.md#create_refund) | **POST** /payments/refunds | Create refund order *PaymentApi* | [**create_refund_link**](docs/PaymentApi.md#create_refund_link) | **POST** /payments/links/refunds | Create refund link *PaymentApi* | [**create_report**](docs/PaymentApi.md#create_report) | **POST** /payments/reports | Generate reports +*PaymentApi* | [**create_sdk_link**](docs/PaymentApi.md#create_sdk_link) | **POST** /payments/links/sdk | Create SDK link *PaymentApi* | [**create_settlement_request**](docs/PaymentApi.md#create_settlement_request) | **POST** /payments/settlement_requests | Create settlement request *PaymentApi* | [**create_top_up_addresses**](docs/PaymentApi.md#create_top_up_addresses) | **POST** /payments/topup/address | Batch create top-up addresses *PaymentApi* | [**delete_counterparty_by_id**](docs/PaymentApi.md#delete_counterparty_by_id) | **DELETE** /payments/counterparty/{counterparty_id} | Delete counterparty diff --git a/cobo_waas2/__init__.py b/cobo_waas2/__init__.py index f3f8f3f6..5917f4e4 100644 --- a/cobo_waas2/__init__.py +++ b/cobo_waas2/__init__.py @@ -12,7 +12,7 @@ """ # noqa: E501 -__version__ = "1.32.0" +__version__ = "1.33.0" # import apis into sdk package from cobo_waas2.api.address_books_api import AddressBooksApi diff --git a/cobo_waas2/api/payment_api.py b/cobo_waas2/api/payment_api.py index 3b72237c..9e7e301b 100644 --- a/cobo_waas2/api/payment_api.py +++ b/cobo_waas2/api/payment_api.py @@ -3018,6 +3018,160 @@ def _create_report_serialize( files=_files, ) + @validate_call + def create_sdk_link( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[ + Annotated[StrictFloat, Field(gt=0)], + Annotated[StrictFloat, Field(gt=0)] + ] + ] = None, + ) -> Link: + """Create SDK link + + This operation creates a payment link for use with the front-end SDK integration. The returned URL and token can be used to initialize the Cobo payment SDK in your front-end application. For more information, see [Cobo Payment Guide](https://www.cobo.com/payments/en/guides/overview). + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._create_sdk_link_serialize( + ) + + _response_types_map: Dict[str, Optional[str]] = { + '201': "Link", + '4XX': "ErrorResponse", + '5XX': "ErrorResponse", + } + response_data = self.api_client.call_api( + *_param, + _request_timeout=_request_timeout + ) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def create_sdk_link_with_http_info( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[ + Annotated[StrictFloat, Field(gt=0)], + Annotated[StrictFloat, Field(gt=0)] + ] + ] = None, + ) -> ApiResponse[Link]: + """Create SDK link + + This operation creates a payment link for use with the front-end SDK integration. The returned URL and token can be used to initialize the Cobo payment SDK in your front-end application. For more information, see [Cobo Payment Guide](https://www.cobo.com/payments/en/guides/overview). + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._create_sdk_link_serialize( + ) + + _response_types_map: Dict[str, Optional[str]] = { + '201': "Link", + '4XX': "ErrorResponse", + '5XX': "ErrorResponse", + } + response_data = self.api_client.call_api( + *_param, + _request_timeout=_request_timeout + ) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def create_sdk_link_without_preload_content( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[ + Annotated[StrictFloat, Field(gt=0)], + Annotated[StrictFloat, Field(gt=0)] + ] + ] = None, + ) -> RESTResponseType: + """Create SDK link + + This operation creates a payment link for use with the front-end SDK integration. The returned URL and token can be used to initialize the Cobo payment SDK in your front-end application. For more information, see [Cobo Payment Guide](https://www.cobo.com/payments/en/guides/overview). + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._create_sdk_link_serialize( + ) + + _response_types_map: Dict[str, Optional[str]] = { + '201': "Link", + '4XX': "ErrorResponse", + '5XX': "ErrorResponse", + } + response_data = self.api_client.call_api( + *_param, + _request_timeout=_request_timeout + ) + return response_data.response + + def _create_sdk_link_serialize( + self, + ) -> RequestSerialized: + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + _header_params = { + "Accept": "application/json", + "Content-Type": "application/json" + } + + return self.api_client.param_serialize( + method='POST', + resource_path='/payments/links/sdk', + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + ) + @validate_call def create_settlement_request( self, diff --git a/cobo_waas2/api_client.py b/cobo_waas2/api_client.py index 51723858..d683770d 100644 --- a/cobo_waas2/api_client.py +++ b/cobo_waas2/api_client.py @@ -68,7 +68,7 @@ def __init__( self.rest_client = rest.RESTClientObject(configuration) self.default_headers = {} # Set default User-Agent. - self.user_agent = 'cobo-waas2-python-sdk/1.32.0' + self.user_agent = 'cobo-waas2-python-sdk/1.33.0' def __enter__(self): return self diff --git a/cobo_waas2/models/transaction_extra.py b/cobo_waas2/models/transaction_extra.py index 0b533f5f..6792fa3b 100644 --- a/cobo_waas2/models/transaction_extra.py +++ b/cobo_waas2/models/transaction_extra.py @@ -18,11 +18,12 @@ from cobo_waas2.models.transaction_babylon_business_info import TransactionBabylonBusinessInfo from cobo_waas2.models.transaction_babylon_tx_parameters import TransactionBabylonTxParameters from cobo_waas2.models.transaction_core_stake_info import TransactionCoreStakeInfo +from cobo_waas2.models.transaction_wallet_connect_info import TransactionWalletConnectInfo from pydantic import StrictStr, Field from typing import Union, List, Set, Optional, Dict from typing_extensions import Literal, Self -TRANSACTIONEXTRA_ONE_OF_SCHEMAS = ["TransactionBabylonBusinessInfo", "TransactionBabylonTxParameters", "TransactionCoreStakeInfo"] +TRANSACTIONEXTRA_ONE_OF_SCHEMAS = ["TransactionBabylonBusinessInfo", "TransactionBabylonTxParameters", "TransactionCoreStakeInfo", "TransactionWalletConnectInfo"] class TransactionExtra(BaseModel): """ @@ -34,8 +35,10 @@ class TransactionExtra(BaseModel): oneof_schema_2_validator: Optional[TransactionBabylonTxParameters] = None # data type: TransactionCoreStakeInfo oneof_schema_3_validator: Optional[TransactionCoreStakeInfo] = None - actual_instance: Optional[Union[TransactionBabylonBusinessInfo, TransactionBabylonTxParameters, TransactionCoreStakeInfo]] = None - one_of_schemas: Set[str] = { "TransactionBabylonBusinessInfo", "TransactionBabylonTxParameters", "TransactionCoreStakeInfo" } + # data type: TransactionWalletConnectInfo + oneof_schema_4_validator: Optional[TransactionWalletConnectInfo] = None + actual_instance: Optional[Union[TransactionBabylonBusinessInfo, TransactionBabylonTxParameters, TransactionCoreStakeInfo, TransactionWalletConnectInfo]] = None + one_of_schemas: Set[str] = { "TransactionBabylonBusinessInfo", "TransactionBabylonTxParameters", "TransactionCoreStakeInfo", "TransactionWalletConnectInfo" } model_config = ConfigDict( validate_assignment=True, @@ -76,12 +79,17 @@ def actual_instance_must_validate_oneof(cls, v): error_messages.append(f"Error! Input type `{type(v)}` is not `TransactionCoreStakeInfo`") else: match += 1 + # validate data type: TransactionWalletConnectInfo + if not isinstance(v, TransactionWalletConnectInfo): + error_messages.append(f"Error! Input type `{type(v)}` is not `TransactionWalletConnectInfo`") + else: + match += 1 if match > 1: # more than 1 match - raise ValueError("Multiple matches found when setting `actual_instance` in TransactionExtra with oneOf schemas: TransactionBabylonBusinessInfo, TransactionBabylonTxParameters, TransactionCoreStakeInfo. Details: " + ", ".join(error_messages)) + raise ValueError("Multiple matches found when setting `actual_instance` in TransactionExtra with oneOf schemas: TransactionBabylonBusinessInfo, TransactionBabylonTxParameters, TransactionCoreStakeInfo, TransactionWalletConnectInfo. Details: " + ", ".join(error_messages)) elif match == 0: # no match - raise ValueError("No match found when setting `actual_instance` in TransactionExtra with oneOf schemas: TransactionBabylonBusinessInfo, TransactionBabylonTxParameters, TransactionCoreStakeInfo. Details: " + ", ".join(error_messages)) + raise ValueError("No match found when setting `actual_instance` in TransactionExtra with oneOf schemas: TransactionBabylonBusinessInfo, TransactionBabylonTxParameters, TransactionCoreStakeInfo, TransactionWalletConnectInfo. Details: " + ", ".join(error_messages)) else: return v @@ -116,6 +124,11 @@ def from_json(cls, json_str: str) -> Self: instance.actual_instance = TransactionCoreStakeInfo.from_json(json_str) return instance + # check if data type is `TransactionWalletConnectInfo` + if _data_type == "WalletConnectInfo": + instance.actual_instance = TransactionWalletConnectInfo.from_json(json_str) + return instance + # check if data type is `TransactionBabylonBusinessInfo` if _data_type == "TransactionBabylonBusinessInfo": instance.actual_instance = TransactionBabylonBusinessInfo.from_json(json_str) @@ -131,6 +144,11 @@ def from_json(cls, json_str: str) -> Self: instance.actual_instance = TransactionCoreStakeInfo.from_json(json_str) return instance + # check if data type is `TransactionWalletConnectInfo` + if _data_type == "TransactionWalletConnectInfo": + instance.actual_instance = TransactionWalletConnectInfo.from_json(json_str) + return instance + return instance # deserialize data into TransactionBabylonBusinessInfo try: @@ -150,14 +168,20 @@ def from_json(cls, json_str: str) -> Self: match += 1 except (ValidationError, ValueError) as e: error_messages.append(str(e)) + # deserialize data into TransactionWalletConnectInfo + try: + instance.actual_instance = TransactionWalletConnectInfo.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) if match > 1: # more than 1 match - raise ValueError("Multiple matches found when deserializing the JSON string into TransactionExtra with oneOf schemas: TransactionBabylonBusinessInfo, TransactionBabylonTxParameters, TransactionCoreStakeInfo. Details: " + ", ".join(error_messages)) + raise ValueError("Multiple matches found when deserializing the JSON string into TransactionExtra with oneOf schemas: TransactionBabylonBusinessInfo, TransactionBabylonTxParameters, TransactionCoreStakeInfo, TransactionWalletConnectInfo. Details: " + ", ".join(error_messages)) elif match == 0: # no match return instance - # raise ValueError("No match found when deserializing the JSON string into TransactionExtra with oneOf schemas: TransactionBabylonBusinessInfo, TransactionBabylonTxParameters, TransactionCoreStakeInfo. Details: " + ", ".join(error_messages)) + # raise ValueError("No match found when deserializing the JSON string into TransactionExtra with oneOf schemas: TransactionBabylonBusinessInfo, TransactionBabylonTxParameters, TransactionCoreStakeInfo, TransactionWalletConnectInfo. Details: " + ", ".join(error_messages)) else: return instance @@ -171,7 +195,7 @@ def to_json(self) -> str: else: return json.dumps(self.actual_instance) - def to_dict(self) -> Optional[Union[Dict[str, Any], TransactionBabylonBusinessInfo, TransactionBabylonTxParameters, TransactionCoreStakeInfo]]: + def to_dict(self) -> Optional[Union[Dict[str, Any], TransactionBabylonBusinessInfo, TransactionBabylonTxParameters, TransactionCoreStakeInfo, TransactionWalletConnectInfo]]: """Returns the dict representation of the actual instance""" if self.actual_instance is None: return None diff --git a/docs/PaymentApi.md b/docs/PaymentApi.md index 4bcb602f..a3a05b09 100644 --- a/docs/PaymentApi.md +++ b/docs/PaymentApi.md @@ -21,6 +21,7 @@ Method | HTTP request | Description [**create_refund**](PaymentApi.md#create_refund) | **POST** /payments/refunds | Create refund order [**create_refund_link**](PaymentApi.md#create_refund_link) | **POST** /payments/links/refunds | Create refund link [**create_report**](PaymentApi.md#create_report) | **POST** /payments/reports | Generate reports +[**create_sdk_link**](PaymentApi.md#create_sdk_link) | **POST** /payments/links/sdk | Create SDK link [**create_settlement_request**](PaymentApi.md#create_settlement_request) | **POST** /payments/settlement_requests | Create settlement request [**create_top_up_addresses**](PaymentApi.md#create_top_up_addresses) | **POST** /payments/topup/address | Batch create top-up addresses [**delete_counterparty_by_id**](PaymentApi.md#delete_counterparty_by_id) | **DELETE** /payments/counterparty/{counterparty_id} | Delete counterparty @@ -1315,6 +1316,73 @@ Name | Type | Description | Notes [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) +# **create_sdk_link** +> Link create_sdk_link() + +Create SDK link + +This operation creates a payment link for use with the front-end SDK integration. The returned URL and token can be used to initialize the Cobo payment SDK in your front-end application. For more information, see [Cobo Payment Guide](https://www.cobo.com/payments/en/guides/overview). + +### Example + +* Api Key Authentication (CoboAuth): + +```python +import cobo_waas2 +from cobo_waas2.models.link import Link +from cobo_waas2.rest import ApiException +from pprint import pprint + +# See configuration.py for a list of all supported configurations. +configuration = cobo_waas2.Configuration( + # Replace `` with your private key + api_private_key="", + # Select the development environment. To use the production environment, change the URL to https://api.cobo.com/v2. + host="https://api.dev.cobo.com/v2" +) +# Enter a context with an instance of the API client +with cobo_waas2.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = cobo_waas2.PaymentApi(api_client) + + try: + # Create SDK link + api_response = api_instance.create_sdk_link() + print("The response of PaymentApi->create_sdk_link:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling PaymentApi->create_sdk_link: %s\n" % e) +``` + + + +### Parameters + +This endpoint does not need any parameter. + +### Return type + +[**Link**](Link.md) + +### Authorization + +[CoboAuth](../README.md#CoboAuth) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**201** | Link created successfully. | - | +**4XX** | Bad request. Your request contains malformed syntax or invalid parameters. | - | +**5XX** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + # **create_settlement_request** > Settlement create_settlement_request(create_settlement_request_request=create_settlement_request_request) diff --git a/docs/TransactionExtra.md b/docs/TransactionExtra.md index 48bf2464..3f3a62c1 100644 --- a/docs/TransactionExtra.md +++ b/docs/TransactionExtra.md @@ -18,6 +18,9 @@ Name | Type | Description | Notes **change_address** | **str** | The change address on the Bitcoin chain. If not provided, the source wallet's address will be used as the change address. | [optional] **validator_address** | **str** | The validator's EVM address. | [optional] **reward_address** | **str** | The EVM address used to receive staking rewards. | [optional] +**dapp_name** | **str** | The dapp name that initiated this transaction. | [optional] +**dapp_domain** | **str** | The dapp domain that initiated this transaction | [optional] +**session_id** | **str** | The session id that initiated this transaction | [optional] ## Example diff --git a/pyproject.toml b/pyproject.toml index 511d93a7..cb66708b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "cobo_waas2" -version = "1.32.0" +version = "1.33.0" description = "Cobo Wallet as a Service 2.0" authors = ["Cobo WaaS "] license = "Apache 2.0" diff --git a/setup.py b/setup.py index c74c7b1b..86df5c32 100644 --- a/setup.py +++ b/setup.py @@ -19,7 +19,7 @@ # prerequisite: setuptools # http://pypi.python.org/pypi/setuptools NAME = "cobo-waas2" -VERSION = "1.32.0" +VERSION = "1.33.0" PYTHON_REQUIRES = ">=3.9" REQUIRES = [ "urllib3 >= 2.6.0", diff --git a/test/test_payment_api.py b/test/test_payment_api.py index a973f2d0..c47e8930 100644 --- a/test/test_payment_api.py +++ b/test/test_payment_api.py @@ -234,6 +234,17 @@ def test_create_report(self) -> None: api_response = self.api.create_report(create_report_request=create_report_request) """ + def test_create_sdk_link(self) -> None: + """ + Test case for create_sdk_link + + Create SDK link + """ + """ + + api_response = self.api.create_sdk_link() + """ + def test_create_settlement_request(self) -> None: """ Test case for create_settlement_request diff --git a/test/test_transaction_extra.py b/test/test_transaction_extra.py index ff6da5cd..4747e4a8 100644 --- a/test/test_transaction_extra.py +++ b/test/test_transaction_extra.py @@ -72,7 +72,10 @@ def make_instance(self, include_optional) -> TransactionExtra: timelock = 56, change_address = '', validator_address = '', - reward_address = '' + reward_address = '', + dapp_name = '', + dapp_domain = '', + session_id = '' ) else: return TransactionExtra(