From 4a5849fc0f8444e7728f23a50e9bb267566b5d96 Mon Sep 17 00:00:00 2001 From: leonardog Date: Fri, 24 Oct 2025 11:32:38 +0200 Subject: [PATCH 01/10] fix generation of path param arguments --- templates/api.mustache | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/api.mustache b/templates/api.mustache index 6ac1711c..4f27a993 100644 --- a/templates/api.mustache +++ b/templates/api.mustache @@ -15,7 +15,7 @@ class {{classname}}(AdyenServiceBase): {{#operations}} {{#operation}} - def {{#lambda.snakecase}}{{#vendorExtensions.x-methodName}}{{.}}{{/vendorExtensions.x-methodName}}{{^vendorExtensions.x-methodName}}{{nickname}}{{/vendorExtensions.x-methodName}}{{/lambda.snakecase}}(self, {{#bodyParams}}request, {{/bodyParams}}{{#requiredParams}}{{^isQueryParam}}{{#lambda.camelcase}}{{paramName}}{{/lambda.camelcase}}, {{/isQueryParam}}{{/requiredParams}}idempotency_key=None, **kwargs): + def {{#lambda.snakecase}}{{#vendorExtensions.x-methodName}}{{.}}{{/vendorExtensions.x-methodName}}{{^vendorExtensions.x-methodName}}{{nickname}}{{/vendorExtensions.x-methodName}}{{/lambda.snakecase}}(self, {{#bodyParams}}request, {{/bodyParams}}{{#pathParams}}{{#lambda.camelcase}}{{paramName}}{{/lambda.camelcase}}, {{/pathParams}}idempotency_key=None, **kwargs): """ {{{summary}}}{{^summary}}{{operationId}}{{/summary}} {{#isDeprecated}} From b66bd0e0c82096d6152b2a3e887f65b92920a3a8 Mon Sep 17 00:00:00 2001 From: leonardog Date: Mon, 27 Oct 2025 12:03:50 +0100 Subject: [PATCH 02/10] wip update generator --- Adyen/services/balanceControl/__init__.py | 14 ++++ .../balanceControl/balance_control_api.py | 25 +++++++ Adyen/services/balancePlatform/__init__.py | 8 +++ .../authorized_card_users_api.py | 4 +- .../services/balancePlatform/balances_api.py | 4 +- .../sca_association_management_api.py | 39 +++++++++++ .../sca_device_management_api.py | 39 +++++++++++ ...ansfer_limits_balance_account_level_api.py | 63 +++++++++++++++++ ...nsfer_limits_balance_platform_level_api.py | 47 +++++++++++++ Adyen/services/binlookup/__init__.py | 14 ++++ Adyen/services/binlookup/bin_lookup_api.py | 31 +++++++++ Adyen/services/checkout/donations_api.py | 2 +- Adyen/services/checkout/utility_api.py | 8 +++ Adyen/services/dataProtection/__init__.py | 14 ++++ .../dataProtection/data_protection_api.py | 23 +++++++ Adyen/services/disputes/__init__.py | 14 ++++ Adyen/services/disputes/disputes_api.py | 55 +++++++++++++++ .../business_lines_api.py | 2 +- .../legalEntityManagement/documents_api.py | 2 +- .../hosted_onboarding_api.py | 2 +- .../legal_entities_api.py | 2 +- .../pci_questionnaires_api.py | 2 +- .../tax_e_delivery_consent_api.py | 2 +- .../terms_of_service_api.py | 2 +- .../transfer_instruments_api.py | 2 +- .../split_configuration_merchant_level_api.py | 14 ++-- .../services/paymentsApp/payments_app_api.py | 4 +- Adyen/services/posMobile/__init__.py | 14 ++++ Adyen/services/posMobile/pos_mobile_api.py | 23 +++++++ Adyen/services/recurring/__init__.py | 14 ++++ Adyen/services/recurring/recurring_api.py | 67 +++++++++++++++++++ .../session_authentication_api.py | 2 +- Adyen/services/storedValue/__init__.py | 14 ++++ .../services/storedValue/stored_value_api.py | 63 +++++++++++++++++ 34 files changed, 612 insertions(+), 23 deletions(-) create mode 100644 Adyen/services/balanceControl/__init__.py create mode 100644 Adyen/services/balanceControl/balance_control_api.py create mode 100644 Adyen/services/balancePlatform/sca_association_management_api.py create mode 100644 Adyen/services/balancePlatform/sca_device_management_api.py create mode 100644 Adyen/services/balancePlatform/transfer_limits_balance_account_level_api.py create mode 100644 Adyen/services/balancePlatform/transfer_limits_balance_platform_level_api.py create mode 100644 Adyen/services/binlookup/__init__.py create mode 100644 Adyen/services/binlookup/bin_lookup_api.py create mode 100644 Adyen/services/dataProtection/__init__.py create mode 100644 Adyen/services/dataProtection/data_protection_api.py create mode 100644 Adyen/services/disputes/__init__.py create mode 100644 Adyen/services/disputes/disputes_api.py create mode 100644 Adyen/services/posMobile/__init__.py create mode 100644 Adyen/services/posMobile/pos_mobile_api.py create mode 100644 Adyen/services/recurring/__init__.py create mode 100644 Adyen/services/recurring/recurring_api.py create mode 100644 Adyen/services/storedValue/__init__.py create mode 100644 Adyen/services/storedValue/stored_value_api.py diff --git a/Adyen/services/balanceControl/__init__.py b/Adyen/services/balanceControl/__init__.py new file mode 100644 index 00000000..008037ae --- /dev/null +++ b/Adyen/services/balanceControl/__init__.py @@ -0,0 +1,14 @@ +from ..base import AdyenServiceBase +from .balance_control_api import BalanceControlApi + + +class AdyenBalanceControlApi(AdyenServiceBase): + """NOTE: This class is auto generated by OpenAPI Generator + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + def __init__(self, client=None): + super(AdyenBalanceControlApi, self).__init__(client=client) + self.balance_control_api = BalanceControlApi(client=client) diff --git a/Adyen/services/balanceControl/balance_control_api.py b/Adyen/services/balanceControl/balance_control_api.py new file mode 100644 index 00000000..604c7fde --- /dev/null +++ b/Adyen/services/balanceControl/balance_control_api.py @@ -0,0 +1,25 @@ +from ..base import AdyenServiceBase + + +class BalanceControlApi(AdyenServiceBase): + """NOTE: This class is auto generated by OpenAPI Generator + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + def __init__(self, client=None): + super(BalanceControlApi, self).__init__(client=client) + self.service = "balanceControl" + self.baseUrl = "https://pal-test.adyen.com/pal/servlet/BalanceControl/v1" + + def balance_transfer(self, request, idempotency_key=None, **kwargs): + """ + Start a balance transfer + + Deprecated since Adyen Balance Control API v1 + """ + endpoint = self.baseUrl + f"/balanceTransfer" + method = "POST" + return self.client.call_adyen_api(request, self.service, method, endpoint, idempotency_key, **kwargs) + diff --git a/Adyen/services/balancePlatform/__init__.py b/Adyen/services/balancePlatform/__init__.py index 2bf3645e..66600a29 100644 --- a/Adyen/services/balancePlatform/__init__.py +++ b/Adyen/services/balancePlatform/__init__.py @@ -13,7 +13,11 @@ from .payment_instrument_groups_api import PaymentInstrumentGroupsApi from .payment_instruments_api import PaymentInstrumentsApi from .platform_api import PlatformApi +from .sca_association_management_api import SCAAssociationManagementApi +from .sca_device_management_api import SCADeviceManagementApi from .transaction_rules_api import TransactionRulesApi +from .transfer_limits_balance_account_level_api import TransferLimitsBalanceAccountLevelApi +from .transfer_limits_balance_platform_level_api import TransferLimitsBalancePlatformLevelApi from .transfer_routes_api import TransferRoutesApi @@ -40,5 +44,9 @@ def __init__(self, client=None): self.payment_instrument_groups_api = PaymentInstrumentGroupsApi(client=client) self.payment_instruments_api = PaymentInstrumentsApi(client=client) self.platform_api = PlatformApi(client=client) + self.sca_association_management_api = SCAAssociationManagementApi(client=client) + self.sca_device_management_api = SCADeviceManagementApi(client=client) self.transaction_rules_api = TransactionRulesApi(client=client) + self.transfer_limits_balance_account_level_api = TransferLimitsBalanceAccountLevelApi(client=client) + self.transfer_limits_balance_platform_level_api = TransferLimitsBalancePlatformLevelApi(client=client) self.transfer_routes_api = TransferRoutesApi(client=client) diff --git a/Adyen/services/balancePlatform/authorized_card_users_api.py b/Adyen/services/balancePlatform/authorized_card_users_api.py index d2f2e12b..c9b7e0d6 100644 --- a/Adyen/services/balancePlatform/authorized_card_users_api.py +++ b/Adyen/services/balancePlatform/authorized_card_users_api.py @@ -13,7 +13,7 @@ def __init__(self, client=None): self.service = "balancePlatform" self.baseUrl = "https://balanceplatform-api-test.adyen.com/bcl/v2" - def create_authorised_card_users(self, request, paymentInstrumentId, authorisedCardUsers, idempotency_key=None, **kwargs): + def create_authorised_card_users(self, request, paymentInstrumentId, idempotency_key=None, **kwargs): """ Create authorized users for a card. """ @@ -37,7 +37,7 @@ def get_all_authorised_card_users(self, paymentInstrumentId, idempotency_key=Non method = "GET" return self.client.call_adyen_api(None, self.service, method, endpoint, idempotency_key, **kwargs) - def update_authorised_card_users(self, request, paymentInstrumentId, authorisedCardUsers, idempotency_key=None, **kwargs): + def update_authorised_card_users(self, request, paymentInstrumentId, idempotency_key=None, **kwargs): """ Update the authorized users for a card. """ diff --git a/Adyen/services/balancePlatform/balances_api.py b/Adyen/services/balancePlatform/balances_api.py index 37fff7c9..a5b1e26e 100644 --- a/Adyen/services/balancePlatform/balances_api.py +++ b/Adyen/services/balancePlatform/balances_api.py @@ -13,7 +13,7 @@ def __init__(self, client=None): self.service = "balancePlatform" self.baseUrl = "https://balanceplatform-api-test.adyen.com/bcl/v2" - def create_webhook_setting(self, request, balancePlatformId, webhookId, balanceWebhookSettingInfo, idempotency_key=None, **kwargs): + def create_webhook_setting(self, request, balancePlatformId, webhookId, idempotency_key=None, **kwargs): """ Create a balance webhook setting """ @@ -45,7 +45,7 @@ def get_webhook_setting(self, balancePlatformId, webhookId, settingId, idempoten method = "GET" return self.client.call_adyen_api(None, self.service, method, endpoint, idempotency_key, **kwargs) - def update_webhook_setting(self, request, balancePlatformId, webhookId, settingId, balanceWebhookSettingInfoUpdate, idempotency_key=None, **kwargs): + def update_webhook_setting(self, request, balancePlatformId, webhookId, settingId, idempotency_key=None, **kwargs): """ Update a balance webhook setting by id """ diff --git a/Adyen/services/balancePlatform/sca_association_management_api.py b/Adyen/services/balancePlatform/sca_association_management_api.py new file mode 100644 index 00000000..127378e6 --- /dev/null +++ b/Adyen/services/balancePlatform/sca_association_management_api.py @@ -0,0 +1,39 @@ +Hfrom ..base import AdyenServiceBase + + +class SCAAssociationManagementApi(AdyenServiceBase): + """NOTE: This class is auto generated by OpenAPI Generator + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + def __init__(self, client=None): + super(SCAAssociationManagementApi, self).__init__(client=client) + self.service = "balancePlatform" + self.baseUrl = "https://balanceplatform-api-test.adyen.com/bcl/v2" + + def approve_association(self, request, idempotency_key=None, **kwargs): + """ + Approve a pending approval association + """ + endpoint = self.baseUrl + f"/scaAssociations" + method = "PATCH" + return self.client.call_adyen_api(request, self.service, method, endpoint, idempotency_key, **kwargs) + + def list_associations(self, idempotency_key=None, **kwargs): + """ + Get a list of devices associated with an entity + """ + endpoint = self.baseUrl + f"/scaAssociations" + method = "GET" + return self.client.call_adyen_api(None, self.service, method, endpoint, idempotency_key, **kwargs) + + def remove_association(self, request, idempotency_key=None, **kwargs): + """ + Delete association to devices + """ + endpoint = self.baseUrl + f"/scaAssociations" + method = "DELETE" + return self.client.call_adyen_api(request, self.service, method, endpoint, idempotency_key, **kwargs) + diff --git a/Adyen/services/balancePlatform/sca_device_management_api.py b/Adyen/services/balancePlatform/sca_device_management_api.py new file mode 100644 index 00000000..2f287676 --- /dev/null +++ b/Adyen/services/balancePlatform/sca_device_management_api.py @@ -0,0 +1,39 @@ +from ..base import AdyenServiceBase + + +class SCADeviceManagementApi(AdyenServiceBase): + """NOTE: This class is auto generated by OpenAPI Generator + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + def __init__(self, client=None): + super(SCADeviceManagementApi, self).__init__(client=client) + self.service = "balancePlatform" + self.baseUrl = "https://balanceplatform-api-test.adyen.com/bcl/v2" + + def begin_sca_device_registration(self, request, idempotency_key=None, **kwargs): + """ + Begin SCA device registration + """ + endpoint = self.baseUrl + f"/scaDevices" + method = "POST" + return self.client.call_adyen_api(request, self.service, method, endpoint, idempotency_key, **kwargs) + + def finish_sca_device_registration(self, request, deviceId, idempotency_key=None, **kwargs): + """ + Finish registration process for a SCA device + """ + endpoint = self.baseUrl + f"/scaDevices/{deviceId}" + method = "PATCH" + return self.client.call_adyen_api(request, self.service, method, endpoint, idempotency_key, **kwargs) + + def submit_sca_association(self, request, deviceId, idempotency_key=None, **kwargs): + """ + Create a new SCA association for a device + """ + endpoint = self.baseUrl + f"/scaDevices/{deviceId}/scaAssociations" + method = "POST" + return self.client.call_adyen_api(request, self.service, method, endpoint, idempotency_key, **kwargs) + diff --git a/Adyen/services/balancePlatform/transfer_limits_balance_account_level_api.py b/Adyen/services/balancePlatform/transfer_limits_balance_account_level_api.py new file mode 100644 index 00000000..81f4ae9e --- /dev/null +++ b/Adyen/services/balancePlatform/transfer_limits_balance_account_level_api.py @@ -0,0 +1,63 @@ +from ..base import AdyenServiceBase + + +class TransferLimitsBalanceAccountLevelApi(AdyenServiceBase): + """NOTE: This class is auto generated by OpenAPI Generator + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + def __init__(self, client=None): + super(TransferLimitsBalanceAccountLevelApi, self).__init__(client=client) + self.service = "balancePlatform" + self.baseUrl = "https://balanceplatform-api-test.adyen.com/bcl/v2" + + def approve_pending_transfer_limits(self, request, id, idempotency_key=None, **kwargs): + """ + Approve pending transfer limits + """ + endpoint = self.baseUrl + f"/balanceAccounts/{id}/transferLimits/approve" + method = "POST" + return self.client.call_adyen_api(request, self.service, method, endpoint, idempotency_key, **kwargs) + + def create_transfer_limit(self, request, id, idempotency_key=None, **kwargs): + """ + Create a transfer limit + """ + endpoint = self.baseUrl + f"/balanceAccounts/{id}/transferLimits" + method = "POST" + return self.client.call_adyen_api(request, self.service, method, endpoint, idempotency_key, **kwargs) + + def delete_pending_transfer_limit(self, id, transferLimitId, idempotency_key=None, **kwargs): + """ + Delete a scheduled or pending transfer limit + """ + endpoint = self.baseUrl + f"/balanceAccounts/{id}/transferLimits/{transferLimitId}" + method = "DELETE" + return self.client.call_adyen_api(None, self.service, method, endpoint, idempotency_key, **kwargs) + + def get_current_transfer_limits(self, id, idempotency_key=None, **kwargs): + """ + Get all current transfer limits + """ + endpoint = self.baseUrl + f"/balanceAccounts/{id}/transferLimits/current" + method = "GET" + return self.client.call_adyen_api(None, self.service, method, endpoint, idempotency_key, **kwargs) + + def get_specific_transfer_limit(self, id, transferLimitId, idempotency_key=None, **kwargs): + """ + Get the details of a transfer limit + """ + endpoint = self.baseUrl + f"/balanceAccounts/{id}/transferLimits/{transferLimitId}" + method = "GET" + return self.client.call_adyen_api(None, self.service, method, endpoint, idempotency_key, **kwargs) + + def get_transfer_limits(self, id, idempotency_key=None, **kwargs): + """ + Filter and view the transfer limits + """ + endpoint = self.baseUrl + f"/balanceAccounts/{id}/transferLimits" + method = "GET" + return self.client.call_adyen_api(None, self.service, method, endpoint, idempotency_key, **kwargs) + diff --git a/Adyen/services/balancePlatform/transfer_limits_balance_platform_level_api.py b/Adyen/services/balancePlatform/transfer_limits_balance_platform_level_api.py new file mode 100644 index 00000000..50403ed0 --- /dev/null +++ b/Adyen/services/balancePlatform/transfer_limits_balance_platform_level_api.py @@ -0,0 +1,47 @@ +from ..base import AdyenServiceBase + + +class TransferLimitsBalancePlatformLevelApi(AdyenServiceBase): + """NOTE: This class is auto generated by OpenAPI Generator + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + def __init__(self, client=None): + super(TransferLimitsBalancePlatformLevelApi, self).__init__(client=client) + self.service = "balancePlatform" + self.baseUrl = "https://balanceplatform-api-test.adyen.com/bcl/v2" + + def create_transfer_limit(self, request, id, idempotency_key=None, **kwargs): + """ + Create a transfer limit + """ + endpoint = self.baseUrl + f"/balancePlatforms/{id}/transferLimits" + method = "POST" + return self.client.call_adyen_api(request, self.service, method, endpoint, idempotency_key, **kwargs) + + def delete_pending_transfer_limit(self, id, transferLimitId, idempotency_key=None, **kwargs): + """ + Delete a scheduled or pending transfer limit + """ + endpoint = self.baseUrl + f"/balancePlatforms/{id}/transferLimits/{transferLimitId}" + method = "DELETE" + return self.client.call_adyen_api(None, self.service, method, endpoint, idempotency_key, **kwargs) + + def get_specific_transfer_limit(self, id, transferLimitId, idempotency_key=None, **kwargs): + """ + Get the details of a transfer limit + """ + endpoint = self.baseUrl + f"/balancePlatforms/{id}/transferLimits/{transferLimitId}" + method = "GET" + return self.client.call_adyen_api(None, self.service, method, endpoint, idempotency_key, **kwargs) + + def get_transfer_limits(self, id, idempotency_key=None, **kwargs): + """ + Filter and view the transfer limits + """ + endpoint = self.baseUrl + f"/balancePlatforms/{id}/transferLimits" + method = "GET" + return self.client.call_adyen_api(None, self.service, method, endpoint, idempotency_key, **kwargs) + diff --git a/Adyen/services/binlookup/__init__.py b/Adyen/services/binlookup/__init__.py new file mode 100644 index 00000000..7fe87267 --- /dev/null +++ b/Adyen/services/binlookup/__init__.py @@ -0,0 +1,14 @@ +from ..base import AdyenServiceBase +from .bin_lookup_api import BinLookupApi + + +class AdyenBinlookupApi(AdyenServiceBase): + """NOTE: This class is auto generated by OpenAPI Generator + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + def __init__(self, client=None): + super(AdyenBinlookupApi, self).__init__(client=client) + self.bin_lookup_api = BinLookupApi(client=client) diff --git a/Adyen/services/binlookup/bin_lookup_api.py b/Adyen/services/binlookup/bin_lookup_api.py new file mode 100644 index 00000000..f8507c5c --- /dev/null +++ b/Adyen/services/binlookup/bin_lookup_api.py @@ -0,0 +1,31 @@ +from ..base import AdyenServiceBase + + +class BinLookupApi(AdyenServiceBase): + """NOTE: This class is auto generated by OpenAPI Generator + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + def __init__(self, client=None): + super(BinLookupApi, self).__init__(client=client) + self.service = "binlookup" + self.baseUrl = "https://pal-test.adyen.com/pal/servlet/BinLookup/v54" + + def get3ds_availability(self, request, idempotency_key=None, **kwargs): + """ + Check if 3D Secure is available + """ + endpoint = self.baseUrl + f"/get3dsAvailability" + method = "POST" + return self.client.call_adyen_api(request, self.service, method, endpoint, idempotency_key, **kwargs) + + def get_cost_estimate(self, request, idempotency_key=None, **kwargs): + """ + Get a fees cost estimate + """ + endpoint = self.baseUrl + f"/getCostEstimate" + method = "POST" + return self.client.call_adyen_api(request, self.service, method, endpoint, idempotency_key, **kwargs) + diff --git a/Adyen/services/checkout/donations_api.py b/Adyen/services/checkout/donations_api.py index 28f3012d..1fcf66a5 100644 --- a/Adyen/services/checkout/donations_api.py +++ b/Adyen/services/checkout/donations_api.py @@ -23,7 +23,7 @@ def donation_campaigns(self, request, idempotency_key=None, **kwargs): def donations(self, request, idempotency_key=None, **kwargs): """ - Start a transaction for donations + Make a donation """ endpoint = self.baseUrl + f"/donations" method = "POST" diff --git a/Adyen/services/checkout/utility_api.py b/Adyen/services/checkout/utility_api.py index c13239c1..ca60de69 100644 --- a/Adyen/services/checkout/utility_api.py +++ b/Adyen/services/checkout/utility_api.py @@ -39,3 +39,11 @@ def updates_order_for_paypal_express_checkout(self, request, idempotency_key=Non method = "POST" return self.client.call_adyen_api(request, self.service, method, endpoint, idempotency_key, **kwargs) + def validate_shopper_id(self, request, idempotency_key=None, **kwargs): + """ + Validates shopper Id + """ + endpoint = self.baseUrl + f"/validateShopperId" + method = "POST" + return self.client.call_adyen_api(request, self.service, method, endpoint, idempotency_key, **kwargs) + diff --git a/Adyen/services/dataProtection/__init__.py b/Adyen/services/dataProtection/__init__.py new file mode 100644 index 00000000..a21fc549 --- /dev/null +++ b/Adyen/services/dataProtection/__init__.py @@ -0,0 +1,14 @@ +from ..base import AdyenServiceBase +from .data_protection_api import DataProtectionApi + + +class AdyenDataProtectionApi(AdyenServiceBase): + """NOTE: This class is auto generated by OpenAPI Generator + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + def __init__(self, client=None): + super(AdyenDataProtectionApi, self).__init__(client=client) + self.data_protection_api = DataProtectionApi(client=client) diff --git a/Adyen/services/dataProtection/data_protection_api.py b/Adyen/services/dataProtection/data_protection_api.py new file mode 100644 index 00000000..c18f1ecd --- /dev/null +++ b/Adyen/services/dataProtection/data_protection_api.py @@ -0,0 +1,23 @@ +from ..base import AdyenServiceBase + + +class DataProtectionApi(AdyenServiceBase): + """NOTE: This class is auto generated by OpenAPI Generator + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + def __init__(self, client=None): + super(DataProtectionApi, self).__init__(client=client) + self.service = "dataProtection" + self.baseUrl = "https://ca-test.adyen.com/ca/services/DataProtectionService/v1" + + def request_subject_erasure(self, request, idempotency_key=None, **kwargs): + """ + Submit a Subject Erasure Request. + """ + endpoint = self.baseUrl + f"/requestSubjectErasure" + method = "POST" + return self.client.call_adyen_api(request, self.service, method, endpoint, idempotency_key, **kwargs) + diff --git a/Adyen/services/disputes/__init__.py b/Adyen/services/disputes/__init__.py new file mode 100644 index 00000000..37f4c922 --- /dev/null +++ b/Adyen/services/disputes/__init__.py @@ -0,0 +1,14 @@ +from ..base import AdyenServiceBase +from .disputes_api import DisputesApi + + +class AdyenDisputesApi(AdyenServiceBase): + """NOTE: This class is auto generated by OpenAPI Generator + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + def __init__(self, client=None): + super(AdyenDisputesApi, self).__init__(client=client) + self.disputes_api = DisputesApi(client=client) diff --git a/Adyen/services/disputes/disputes_api.py b/Adyen/services/disputes/disputes_api.py new file mode 100644 index 00000000..39881dc6 --- /dev/null +++ b/Adyen/services/disputes/disputes_api.py @@ -0,0 +1,55 @@ +from ..base import AdyenServiceBase + + +class DisputesApi(AdyenServiceBase): + """NOTE: This class is auto generated by OpenAPI Generator + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + def __init__(self, client=None): + super(DisputesApi, self).__init__(client=client) + self.service = "disputes" + self.baseUrl = "https://ca-test.adyen.com/ca/services/DisputeService/v30" + + def accept_dispute(self, request, idempotency_key=None, **kwargs): + """ + Accept a dispute + """ + endpoint = self.baseUrl + f"/acceptDispute" + method = "POST" + return self.client.call_adyen_api(request, self.service, method, endpoint, idempotency_key, **kwargs) + + def defend_dispute(self, request, idempotency_key=None, **kwargs): + """ + Defend a dispute + """ + endpoint = self.baseUrl + f"/defendDispute" + method = "POST" + return self.client.call_adyen_api(request, self.service, method, endpoint, idempotency_key, **kwargs) + + def delete_dispute_defense_document(self, request, idempotency_key=None, **kwargs): + """ + Delete a defense document + """ + endpoint = self.baseUrl + f"/deleteDisputeDefenseDocument" + method = "POST" + return self.client.call_adyen_api(request, self.service, method, endpoint, idempotency_key, **kwargs) + + def retrieve_applicable_defense_reasons(self, request, idempotency_key=None, **kwargs): + """ + Get applicable defense reasons + """ + endpoint = self.baseUrl + f"/retrieveApplicableDefenseReasons" + method = "POST" + return self.client.call_adyen_api(request, self.service, method, endpoint, idempotency_key, **kwargs) + + def supply_defense_document(self, request, idempotency_key=None, **kwargs): + """ + Supply a defense document + """ + endpoint = self.baseUrl + f"/supplyDefenseDocument" + method = "POST" + return self.client.call_adyen_api(request, self.service, method, endpoint, idempotency_key, **kwargs) + diff --git a/Adyen/services/legalEntityManagement/business_lines_api.py b/Adyen/services/legalEntityManagement/business_lines_api.py index 61d43c19..2db24bc4 100644 --- a/Adyen/services/legalEntityManagement/business_lines_api.py +++ b/Adyen/services/legalEntityManagement/business_lines_api.py @@ -11,7 +11,7 @@ class BusinessLinesApi(AdyenServiceBase): def __init__(self, client=None): super(BusinessLinesApi, self).__init__(client=client) self.service = "legalEntityManagement" - self.baseUrl = "https://kyc-test.adyen.com/lem/v3" + self.baseUrl = "https://kyc-test.adyen.com/lem/v4" def create_business_line(self, request, idempotency_key=None, **kwargs): """ diff --git a/Adyen/services/legalEntityManagement/documents_api.py b/Adyen/services/legalEntityManagement/documents_api.py index 5c1a343c..191d1219 100644 --- a/Adyen/services/legalEntityManagement/documents_api.py +++ b/Adyen/services/legalEntityManagement/documents_api.py @@ -11,7 +11,7 @@ class DocumentsApi(AdyenServiceBase): def __init__(self, client=None): super(DocumentsApi, self).__init__(client=client) self.service = "legalEntityManagement" - self.baseUrl = "https://kyc-test.adyen.com/lem/v3" + self.baseUrl = "https://kyc-test.adyen.com/lem/v4" def delete_document(self, id, idempotency_key=None, **kwargs): """ diff --git a/Adyen/services/legalEntityManagement/hosted_onboarding_api.py b/Adyen/services/legalEntityManagement/hosted_onboarding_api.py index 075b3e76..acd9b2ca 100644 --- a/Adyen/services/legalEntityManagement/hosted_onboarding_api.py +++ b/Adyen/services/legalEntityManagement/hosted_onboarding_api.py @@ -11,7 +11,7 @@ class HostedOnboardingApi(AdyenServiceBase): def __init__(self, client=None): super(HostedOnboardingApi, self).__init__(client=client) self.service = "legalEntityManagement" - self.baseUrl = "https://kyc-test.adyen.com/lem/v3" + self.baseUrl = "https://kyc-test.adyen.com/lem/v4" def get_link_to_adyenhosted_onboarding_page(self, request, id, idempotency_key=None, **kwargs): """ diff --git a/Adyen/services/legalEntityManagement/legal_entities_api.py b/Adyen/services/legalEntityManagement/legal_entities_api.py index f1fec7b8..b443f18b 100644 --- a/Adyen/services/legalEntityManagement/legal_entities_api.py +++ b/Adyen/services/legalEntityManagement/legal_entities_api.py @@ -11,7 +11,7 @@ class LegalEntitiesApi(AdyenServiceBase): def __init__(self, client=None): super(LegalEntitiesApi, self).__init__(client=client) self.service = "legalEntityManagement" - self.baseUrl = "https://kyc-test.adyen.com/lem/v3" + self.baseUrl = "https://kyc-test.adyen.com/lem/v4" def check_legal_entitys_verification_errors(self, id, idempotency_key=None, **kwargs): """ diff --git a/Adyen/services/legalEntityManagement/pci_questionnaires_api.py b/Adyen/services/legalEntityManagement/pci_questionnaires_api.py index 13566c3c..6b0de30f 100644 --- a/Adyen/services/legalEntityManagement/pci_questionnaires_api.py +++ b/Adyen/services/legalEntityManagement/pci_questionnaires_api.py @@ -11,7 +11,7 @@ class PCIQuestionnairesApi(AdyenServiceBase): def __init__(self, client=None): super(PCIQuestionnairesApi, self).__init__(client=client) self.service = "legalEntityManagement" - self.baseUrl = "https://kyc-test.adyen.com/lem/v3" + self.baseUrl = "https://kyc-test.adyen.com/lem/v4" def calculate_pci_status_of_legal_entity(self, request, id, idempotency_key=None, **kwargs): """ diff --git a/Adyen/services/legalEntityManagement/tax_e_delivery_consent_api.py b/Adyen/services/legalEntityManagement/tax_e_delivery_consent_api.py index f2856849..18a856f4 100644 --- a/Adyen/services/legalEntityManagement/tax_e_delivery_consent_api.py +++ b/Adyen/services/legalEntityManagement/tax_e_delivery_consent_api.py @@ -11,7 +11,7 @@ class TaxEDeliveryConsentApi(AdyenServiceBase): def __init__(self, client=None): super(TaxEDeliveryConsentApi, self).__init__(client=client) self.service = "legalEntityManagement" - self.baseUrl = "https://kyc-test.adyen.com/lem/v3" + self.baseUrl = "https://kyc-test.adyen.com/lem/v4" def check_status_of_consent_for_electronic_delivery_of_tax_forms(self, id, idempotency_key=None, **kwargs): """ diff --git a/Adyen/services/legalEntityManagement/terms_of_service_api.py b/Adyen/services/legalEntityManagement/terms_of_service_api.py index 4638367d..6bd5287a 100644 --- a/Adyen/services/legalEntityManagement/terms_of_service_api.py +++ b/Adyen/services/legalEntityManagement/terms_of_service_api.py @@ -11,7 +11,7 @@ class TermsOfServiceApi(AdyenServiceBase): def __init__(self, client=None): super(TermsOfServiceApi, self).__init__(client=client) self.service = "legalEntityManagement" - self.baseUrl = "https://kyc-test.adyen.com/lem/v3" + self.baseUrl = "https://kyc-test.adyen.com/lem/v4" def accept_terms_of_service(self, request, id, termsofservicedocumentid, idempotency_key=None, **kwargs): """ diff --git a/Adyen/services/legalEntityManagement/transfer_instruments_api.py b/Adyen/services/legalEntityManagement/transfer_instruments_api.py index 1b9ccf17..bc53acd8 100644 --- a/Adyen/services/legalEntityManagement/transfer_instruments_api.py +++ b/Adyen/services/legalEntityManagement/transfer_instruments_api.py @@ -11,7 +11,7 @@ class TransferInstrumentsApi(AdyenServiceBase): def __init__(self, client=None): super(TransferInstrumentsApi, self).__init__(client=client) self.service = "legalEntityManagement" - self.baseUrl = "https://kyc-test.adyen.com/lem/v3" + self.baseUrl = "https://kyc-test.adyen.com/lem/v4" def create_transfer_instrument(self, request, idempotency_key=None, **kwargs): """ diff --git a/Adyen/services/management/split_configuration_merchant_level_api.py b/Adyen/services/management/split_configuration_merchant_level_api.py index c155db76..e7347b73 100644 --- a/Adyen/services/management/split_configuration_merchant_level_api.py +++ b/Adyen/services/management/split_configuration_merchant_level_api.py @@ -23,7 +23,7 @@ def create_rule(self, request, merchantId, splitConfigurationId, idempotency_key def create_split_configuration(self, request, merchantId, idempotency_key=None, **kwargs): """ - Create a split configuration + Create a split configuration profile """ endpoint = self.baseUrl + f"/merchants/{merchantId}/splitConfigurations" method = "POST" @@ -31,7 +31,7 @@ def create_split_configuration(self, request, merchantId, idempotency_key=None, def delete_split_configuration(self, merchantId, splitConfigurationId, idempotency_key=None, **kwargs): """ - Delete a split configuration + Delete a split configuration profile """ endpoint = self.baseUrl + f"/merchants/{merchantId}/splitConfigurations/{splitConfigurationId}" method = "DELETE" @@ -39,7 +39,7 @@ def delete_split_configuration(self, merchantId, splitConfigurationId, idempoten def delete_split_configuration_rule(self, merchantId, splitConfigurationId, ruleId, idempotency_key=None, **kwargs): """ - Delete a split configuration rule + Delete a rule """ endpoint = self.baseUrl + f"/merchants/{merchantId}/splitConfigurations/{splitConfigurationId}/rules/{ruleId}" method = "DELETE" @@ -47,7 +47,7 @@ def delete_split_configuration_rule(self, merchantId, splitConfigurationId, rule def get_split_configuration(self, merchantId, splitConfigurationId, idempotency_key=None, **kwargs): """ - Get a split configuration + Get a split configuration profile """ endpoint = self.baseUrl + f"/merchants/{merchantId}/splitConfigurations/{splitConfigurationId}" method = "GET" @@ -55,7 +55,7 @@ def get_split_configuration(self, merchantId, splitConfigurationId, idempotency_ def list_split_configurations(self, merchantId, idempotency_key=None, **kwargs): """ - Get a list of split configurations + Get a list of split configuration profiles """ endpoint = self.baseUrl + f"/merchants/{merchantId}/splitConfigurations" method = "GET" @@ -63,7 +63,7 @@ def list_split_configurations(self, merchantId, idempotency_key=None, **kwargs): def update_split_conditions(self, request, merchantId, splitConfigurationId, ruleId, idempotency_key=None, **kwargs): """ - Update split conditions + Update the split conditions """ endpoint = self.baseUrl + f"/merchants/{merchantId}/splitConfigurations/{splitConfigurationId}/rules/{ruleId}" method = "PATCH" @@ -71,7 +71,7 @@ def update_split_conditions(self, request, merchantId, splitConfigurationId, rul def update_split_configuration_description(self, request, merchantId, splitConfigurationId, idempotency_key=None, **kwargs): """ - Update split configuration description + Update the description of the split configuration profile """ endpoint = self.baseUrl + f"/merchants/{merchantId}/splitConfigurations/{splitConfigurationId}" method = "PATCH" diff --git a/Adyen/services/paymentsApp/payments_app_api.py b/Adyen/services/paymentsApp/payments_app_api.py index bcb6cb6f..6f7d671b 100644 --- a/Adyen/services/paymentsApp/payments_app_api.py +++ b/Adyen/services/paymentsApp/payments_app_api.py @@ -13,7 +13,7 @@ def __init__(self, client=None): self.service = "paymentsApp" self.baseUrl = "https://management-live.adyen.com/v1" - def generate_payments_app_boarding_token_for_merchant(self, request, merchantId, boardingTokenRequest, idempotency_key=None, **kwargs): + def generate_payments_app_boarding_token_for_merchant(self, request, merchantId, idempotency_key=None, **kwargs): """ Create a boarding token - merchant level """ @@ -21,7 +21,7 @@ def generate_payments_app_boarding_token_for_merchant(self, request, merchantId, method = "POST" return self.client.call_adyen_api(request, self.service, method, endpoint, idempotency_key, **kwargs) - def generate_payments_app_boarding_token_for_store(self, request, merchantId, storeId, boardingTokenRequest, idempotency_key=None, **kwargs): + def generate_payments_app_boarding_token_for_store(self, request, merchantId, storeId, idempotency_key=None, **kwargs): """ Create a boarding token - store level """ diff --git a/Adyen/services/posMobile/__init__.py b/Adyen/services/posMobile/__init__.py new file mode 100644 index 00000000..16dba4cc --- /dev/null +++ b/Adyen/services/posMobile/__init__.py @@ -0,0 +1,14 @@ +from ..base import AdyenServiceBase +from .pos_mobile_api import PosMobileApi + + +class AdyenPosMobileApi(AdyenServiceBase): + """NOTE: This class is auto generated by OpenAPI Generator + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + def __init__(self, client=None): + super(AdyenPosMobileApi, self).__init__(client=client) + self.pos_mobile_api = PosMobileApi(client=client) diff --git a/Adyen/services/posMobile/pos_mobile_api.py b/Adyen/services/posMobile/pos_mobile_api.py new file mode 100644 index 00000000..ff891b46 --- /dev/null +++ b/Adyen/services/posMobile/pos_mobile_api.py @@ -0,0 +1,23 @@ +from ..base import AdyenServiceBase + + +class PosMobileApi(AdyenServiceBase): + """NOTE: This class is auto generated by OpenAPI Generator + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + def __init__(self, client=None): + super(PosMobileApi, self).__init__(client=client) + self.service = "posMobile" + self.baseUrl = "https://checkout-test.adyen.com/checkout/possdk/v68" + + def create_communication_session(self, request, idempotency_key=None, **kwargs): + """ + Create a communication session + """ + endpoint = self.baseUrl + f"/sessions" + method = "POST" + return self.client.call_adyen_api(request, self.service, method, endpoint, idempotency_key, **kwargs) + diff --git a/Adyen/services/recurring/__init__.py b/Adyen/services/recurring/__init__.py new file mode 100644 index 00000000..8184fbda --- /dev/null +++ b/Adyen/services/recurring/__init__.py @@ -0,0 +1,14 @@ +from ..base import AdyenServiceBase +from .recurring_api import RecurringApi + + +class AdyenRecurringApi(AdyenServiceBase): + """NOTE: This class is auto generated by OpenAPI Generator + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + def __init__(self, client=None): + super(AdyenRecurringApi, self).__init__(client=client) + self.recurring_api = RecurringApi(client=client) diff --git a/Adyen/services/recurring/recurring_api.py b/Adyen/services/recurring/recurring_api.py new file mode 100644 index 00000000..15de377f --- /dev/null +++ b/Adyen/services/recurring/recurring_api.py @@ -0,0 +1,67 @@ +from ..base import AdyenServiceBase + + +class RecurringApi(AdyenServiceBase): + """NOTE: This class is auto generated by OpenAPI Generator + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + def __init__(self, client=None): + super(RecurringApi, self).__init__(client=client) + self.service = "recurring" + self.baseUrl = "https://pal-test.adyen.com/pal/servlet/Recurring/v68" + + def create_permit(self, request, idempotency_key=None, **kwargs): + """ + Create new permits linked to a recurring contract. + + Deprecated since Adyen Recurring API v68 + """ + endpoint = self.baseUrl + f"/createPermit" + method = "POST" + return self.client.call_adyen_api(request, self.service, method, endpoint, idempotency_key, **kwargs) + + def disable(self, request, idempotency_key=None, **kwargs): + """ + Disable stored payment details + """ + endpoint = self.baseUrl + f"/disable" + method = "POST" + return self.client.call_adyen_api(request, self.service, method, endpoint, idempotency_key, **kwargs) + + def disable_permit(self, request, idempotency_key=None, **kwargs): + """ + Disable an existing permit. + + Deprecated since Adyen Recurring API v68 + """ + endpoint = self.baseUrl + f"/disablePermit" + method = "POST" + return self.client.call_adyen_api(request, self.service, method, endpoint, idempotency_key, **kwargs) + + def list_recurring_details(self, request, idempotency_key=None, **kwargs): + """ + Get stored payment details + """ + endpoint = self.baseUrl + f"/listRecurringDetails" + method = "POST" + return self.client.call_adyen_api(request, self.service, method, endpoint, idempotency_key, **kwargs) + + def notify_shopper(self, request, idempotency_key=None, **kwargs): + """ + Ask issuer to notify the shopper + """ + endpoint = self.baseUrl + f"/notifyShopper" + method = "POST" + return self.client.call_adyen_api(request, self.service, method, endpoint, idempotency_key, **kwargs) + + def schedule_account_updater(self, request, idempotency_key=None, **kwargs): + """ + Schedule running the Account Updater + """ + endpoint = self.baseUrl + f"/scheduleAccountUpdater" + method = "POST" + return self.client.call_adyen_api(request, self.service, method, endpoint, idempotency_key, **kwargs) + diff --git a/Adyen/services/sessionAuthentication/session_authentication_api.py b/Adyen/services/sessionAuthentication/session_authentication_api.py index 83bb485a..49c77506 100644 --- a/Adyen/services/sessionAuthentication/session_authentication_api.py +++ b/Adyen/services/sessionAuthentication/session_authentication_api.py @@ -13,7 +13,7 @@ def __init__(self, client=None): self.service = "sessionAuthentication" self.baseUrl = "https://test.adyen.com/authe/api/v1" - def create_authentication_session(self, request, authenticationSessionRequest, idempotency_key=None, **kwargs): + def create_authentication_session(self, request, idempotency_key=None, **kwargs): """ Create a session token """ diff --git a/Adyen/services/storedValue/__init__.py b/Adyen/services/storedValue/__init__.py new file mode 100644 index 00000000..4c6de3eb --- /dev/null +++ b/Adyen/services/storedValue/__init__.py @@ -0,0 +1,14 @@ +from ..base import AdyenServiceBase +from .stored_value_api import StoredValueApi + + +class AdyenStoredValueApi(AdyenServiceBase): + """NOTE: This class is auto generated by OpenAPI Generator + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + def __init__(self, client=None): + super(AdyenStoredValueApi, self).__init__(client=client) + self.stored_value_api = StoredValueApi(client=client) diff --git a/Adyen/services/storedValue/stored_value_api.py b/Adyen/services/storedValue/stored_value_api.py new file mode 100644 index 00000000..9b5593d8 --- /dev/null +++ b/Adyen/services/storedValue/stored_value_api.py @@ -0,0 +1,63 @@ +from ..base import AdyenServiceBase + + +class StoredValueApi(AdyenServiceBase): + """NOTE: This class is auto generated by OpenAPI Generator + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + def __init__(self, client=None): + super(StoredValueApi, self).__init__(client=client) + self.service = "storedValue" + self.baseUrl = "https://pal-test.adyen.com/pal/servlet/StoredValue/v46" + + def change_status(self, request, idempotency_key=None, **kwargs): + """ + Changes the status of the payment method. + """ + endpoint = self.baseUrl + f"/changeStatus" + method = "POST" + return self.client.call_adyen_api(request, self.service, method, endpoint, idempotency_key, **kwargs) + + def check_balance(self, request, idempotency_key=None, **kwargs): + """ + Checks the balance. + """ + endpoint = self.baseUrl + f"/checkBalance" + method = "POST" + return self.client.call_adyen_api(request, self.service, method, endpoint, idempotency_key, **kwargs) + + def issue(self, request, idempotency_key=None, **kwargs): + """ + Issues a new card. + """ + endpoint = self.baseUrl + f"/issue" + method = "POST" + return self.client.call_adyen_api(request, self.service, method, endpoint, idempotency_key, **kwargs) + + def load(self, request, idempotency_key=None, **kwargs): + """ + Loads the payment method. + """ + endpoint = self.baseUrl + f"/load" + method = "POST" + return self.client.call_adyen_api(request, self.service, method, endpoint, idempotency_key, **kwargs) + + def merge_balance(self, request, idempotency_key=None, **kwargs): + """ + Merge the balance of two cards. + """ + endpoint = self.baseUrl + f"/mergeBalance" + method = "POST" + return self.client.call_adyen_api(request, self.service, method, endpoint, idempotency_key, **kwargs) + + def void_transaction(self, request, idempotency_key=None, **kwargs): + """ + Voids a transaction. + """ + endpoint = self.baseUrl + f"/voidTransaction" + method = "POST" + return self.client.call_adyen_api(request, self.service, method, endpoint, idempotency_key, **kwargs) + From a59c0b99c40f78e3bb0aa397e91d2dcfe33d9c8c Mon Sep 17 00:00:00 2001 From: leonardog Date: Mon, 27 Oct 2025 13:57:39 +0100 Subject: [PATCH 03/10] fix sca imports --- .../services/balancePlatform/sca_association_management_api.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Adyen/services/balancePlatform/sca_association_management_api.py b/Adyen/services/balancePlatform/sca_association_management_api.py index 127378e6..52c5857c 100644 --- a/Adyen/services/balancePlatform/sca_association_management_api.py +++ b/Adyen/services/balancePlatform/sca_association_management_api.py @@ -1,4 +1,4 @@ -Hfrom ..base import AdyenServiceBase +from ..base import AdyenServiceBase class SCAAssociationManagementApi(AdyenServiceBase): From 4b8d91b8e16034c5a3c71e506e88a1c5c385bcf2 Mon Sep 17 00:00:00 2001 From: leonardog Date: Mon, 27 Oct 2025 14:42:46 +0100 Subject: [PATCH 04/10] fix tests to use new module structure --- test/BinLookupTest.py | 6 +++--- test/DataProtectionTest.py | 4 ++-- test/DetermineEndpointTest.py | 6 +++--- test/DisputesTest.py | 14 +++++++------- test/RecurringTest.py | 8 ++++---- test/StoredValueTest.py | 14 +++++++------- 6 files changed, 26 insertions(+), 26 deletions(-) diff --git a/test/BinLookupTest.py b/test/BinLookupTest.py index 8a428765..e319f9b5 100644 --- a/test/BinLookupTest.py +++ b/test/BinLookupTest.py @@ -21,7 +21,7 @@ class TestBinLookup(unittest.TestCase): client.username = "YourWSUser" client.password = "YourWSPassword" client.platform = "test" - binLookup_version = ady.binlookup.baseUrl.split('/')[-1] + binLookup_version = ady.binlookup.bin_lookup_api.baseUrl.split('/')[-1] def test_get_cost_estimate_success(self): self.ady.client.http_client.request.reset_mock() @@ -49,7 +49,7 @@ def test_get_cost_estimate_success(self): filename='test/mocks/binlookup/getcostestimate-success.json' ) - result = self.ady.binlookup.get_cost_estimate(REQUEST_KWARGS) + result = self.ady.binlookup.bin_lookup_api.get_cost_estimate(REQUEST_KWARGS) self.assertEqual(expected, result.message) self.ady.client.http_client.request.assert_called_once_with( 'POST', @@ -74,7 +74,7 @@ def test_get_cost_estimate_error_mocked(self): ) ) - result = self.ady.binlookup.get_cost_estimate(REQUEST_KWARGS) + result = self.ady.binlookup.bin_lookup_api.get_cost_estimate(REQUEST_KWARGS) self.assertEqual(422, result.message['status']) self.assertEqual("101", result.message['errorCode']) self.assertEqual("Invalid card number", result.message['message']) diff --git a/test/DataProtectionTest.py b/test/DataProtectionTest.py index b4161e4d..16012ed2 100644 --- a/test/DataProtectionTest.py +++ b/test/DataProtectionTest.py @@ -15,7 +15,7 @@ class TestCheckout(unittest.TestCase): test = BaseTest(adyen) client.xapikey = "YourXapikey" client.platform = "test" - data_protection_url = adyen.dataProtection.baseUrl + data_protection_url = adyen.dataProtection.data_protection_api.baseUrl lib_version = settings.LIB_VERSION def test_data_erasure(self): @@ -26,7 +26,7 @@ def test_data_erasure(self): } self.adyen.client = self.test.create_client_from_file(200, request, "test/mocks/dataProtection/erasure-response.json") - result = self.adyen.dataProtection.request_subject_erasure(request) + result = self.adyen.dataProtection.data_protection_api.request_subject_erasure(request) self.adyen.client.http_client.request.assert_called_once_with( 'POST', f'{self.data_protection_url}' diff --git a/test/DetermineEndpointTest.py b/test/DetermineEndpointTest.py index aa9367a7..02d9c4fa 100644 --- a/test/DetermineEndpointTest.py +++ b/test/DetermineEndpointTest.py @@ -21,7 +21,7 @@ class TestDetermineUrl(unittest.TestCase): checkout_version = checkout_url.split('/')[-1] payment_url = adyen.payment.payments_api.baseUrl payment_version = payment_url.split('/')[-1] - binlookup_url = adyen.binlookup.baseUrl + binlookup_url = adyen.binlookup.bin_lookup_api.baseUrl management_url = adyen.management.account_merchant_level_api.baseUrl def test_checkout_api_url_custom(self): @@ -32,8 +32,8 @@ def test_checkout_api_url_custom(self): def test_pos_mobile_api_url_live(self): self.client.live_endpoint_prefix = "1797a841fbb37ca7-AdyenDemo" - pos_mobile_api = AdyenPosMobileApi(self.client) - pos_mobile_url = pos_mobile_api.baseUrl + pos_mobile = AdyenPosMobileApi(self.client) + pos_mobile_url = pos_mobile.pos_mobile_api.baseUrl pos_mobile_version = pos_mobile_url.split('/')[-1] url = self.adyen.client._determine_api_url("live", pos_mobile_url + "/sessions") self.assertEqual("https://1797a841fbb37ca7-AdyenDemo-checkout-" diff --git a/test/DisputesTest.py b/test/DisputesTest.py index 927fc8be..3a3f3557 100644 --- a/test/DisputesTest.py +++ b/test/DisputesTest.py @@ -15,7 +15,7 @@ class TestDisputes(unittest.TestCase): test = BaseTest(adyen) client.xapikey = "YourXapikey" client.platform = "test" - disputes_url = adyen.disputes.baseUrl + disputes_url = adyen.disputes.disputes_api.baseUrl def test_accept_dispute(self): request = { @@ -25,7 +25,7 @@ def test_accept_dispute(self): self.adyen.client = self.test.create_client_from_file(200, request, "test/mocks/disputes/" "post-acceptDispute-accept-dispute-200.json") - result = self.adyen.disputes.accept_dispute(request) + result = self.adyen.disputes.disputes_api.accept_dispute(request) self.adyen.client.http_client.request.assert_called_once_with( 'POST', @@ -44,7 +44,7 @@ def test_defend_dispute(self): self.adyen.client = self.test.create_client_from_file(200, request, "test/mocks/disputes/" "post-defendDispute-defend-dispute-200.json") - result = self.adyen.disputes.defend_dispute(request) + result = self.adyen.disputes.disputes_api.defend_dispute(request) self.adyen.client.http_client.request.assert_called_once_with( 'POST', @@ -63,7 +63,7 @@ def test_delete_defense_dispute_document(self): self.adyen.client = self.test.create_client_from_file(200, request, "test/mocks/disputes/" "post-deleteDisputeDefenseDocument-delete-dispute-defense-document-200.json") - result = self.adyen.disputes.delete_dispute_defense_document(request) + result = self.adyen.disputes.disputes_api.delete_dispute_defense_document(request) self.adyen.client.http_client.request.assert_called_once_with( 'POST', @@ -81,7 +81,7 @@ def test_download_dispute_defense_document(self): self.adyen.client = self.test.create_client_from_file(200, request, "test/mocks/disputes/" "post-downloadDisputeDefenseDocument-download-dispute-defense-document-200.json") - result = self.adyen.disputes.delete_dispute_defense_document(request) + result = self.adyen.disputes.disputes_api.delete_dispute_defense_document(request) self.adyen.client.http_client.request.assert_called_once_with( 'POST', @@ -99,7 +99,7 @@ def test_retrieve_applicable_defense_reasons(self): self.adyen.client = self.test.create_client_from_file(200, request, "test/mocks/disputes/" "post-retrieveApplicableDefenseReasons-retrieve-defense-reasons-200.json") - result = self.adyen.disputes.retrieve_applicable_defense_reasons(request) + result = self.adyen.disputes.disputes_api.retrieve_applicable_defense_reasons(request) self.adyen.client.http_client.request.assert_called_once_with( 'POST', @@ -124,7 +124,7 @@ def test_supply_defense_document(self): self.adyen.client = self.test.create_client_from_file(200, request, "test/mocks/disputes/" "post-supplyDefenseDocument-supply-defense-document-200.json") - result = self.adyen.disputes.supply_defense_document(request) + result = self.adyen.disputes.disputes_api.supply_defense_document(request) self.adyen.client.http_client.request.assert_called_once_with( 'POST', diff --git a/test/RecurringTest.py b/test/RecurringTest.py index 0783d9ec..755ea306 100644 --- a/test/RecurringTest.py +++ b/test/RecurringTest.py @@ -14,7 +14,7 @@ class TestRecurring(unittest.TestCase): client.username = "YourWSUser" client.password = "YourWSPassword" client.platform = "test" - baseUrl = adyen.recurring.baseUrl + baseUrl = adyen.recurring.recurring_api.baseUrl def test_list_recurring_details(self): request = {} @@ -30,7 +30,7 @@ def test_list_recurring_details(self): 'listRecurring' 'Details-' 'success.json') - result = self.adyen.recurring.list_recurring_details(request) + result = self.adyen.recurring.recurring_api.list_recurring_details(request) self.adyen.client.http_client.request.assert_called_once_with( 'POST', f'{self.baseUrl}/listRecurringDetails', @@ -57,7 +57,7 @@ def test_disable(self): 'recurring/' 'disable-success' '.json') - result = self.adyen.recurring.disable(request) + result = self.adyen.recurring.recurring_api.disable(request) self.adyen.client.http_client.request.assert_called_once_with( 'POST', f'{self.baseUrl}/disable', @@ -83,7 +83,7 @@ def test_disable_803(self): self.assertRaisesRegex( Adyen.AdyenAPIUnprocessableEntity, "AdyenAPIUnprocessableEntity:{'status': 422, 'errorCode': '803', 'message': 'PaymentDetail not found', 'errorType': 'validation'}", - self.adyen.recurring.disable, + self.adyen.recurring.recurring_api.disable, request ) diff --git a/test/StoredValueTest.py b/test/StoredValueTest.py index 790e9f68..3cda5d7a 100644 --- a/test/StoredValueTest.py +++ b/test/StoredValueTest.py @@ -15,7 +15,7 @@ class TestManagement(unittest.TestCase): test = BaseTest(adyen) client.xapikey = "YourXapikey" client.platform = "test" - stored_value_url = adyen.storedValue.baseUrl + stored_value_url = adyen.storedValue.stored_value_api.baseUrl def issue(self): request = { @@ -30,7 +30,7 @@ def issue(self): self.adyen.client = self.test.create_client_from_file(200, request, "test/mocks/storedValue/issue-giftcard.json") - result = self.adyen.storedValue.issue(request) + result = self.adyen.storedValue.stored_value_api.issue(request) self.assertEqual(result.message['paymentMethod']['type'], 'givex') self.adyen.client.http_client.request.assert_called_once_with( 'POST', @@ -58,7 +58,7 @@ def test_activate_giftcard(self): } self.adyen.client = self.test.create_client_from_file(200, request, "test/mocks/storedValue/activate-giftcards.json") - result = self.adyen.storedValue.change_status(request) + result = self.adyen.storedValue.stored_value_api.change_status(request) self.assertEqual(result.message['currentBalance']['value'], 1000) self.adyen.client.http_client.request.assert_called_once_with( 'POST', @@ -85,7 +85,7 @@ def test_load_funds(self): "reference": "YOUR_REFERENCE" } self.adyen.client = self.test.create_client_from_file(200, request, "test/mocks/storedValue/load-funds.json") - result = self.adyen.storedValue.load(request) + result = self.adyen.storedValue.stored_value_api.load(request) self.assertEqual(result.message['resultCode'], 'Success') self.adyen.client.http_client.request.assert_called_once_with( 'POST', @@ -107,7 +107,7 @@ def test_check_balance(self): "reference": "YOUR_REFERENCE" } self.adyen.client = self.test.create_client_from_file(200, request, "test/mocks/storedValue/check-balance.json") - result = self.adyen.storedValue.check_balance(request) + result = self.adyen.storedValue.stored_value_api.check_balance(request) self.assertEqual(result.message['currentBalance']['value'], 5600) self.adyen.client.http_client.request.assert_called_once_with( 'POST', @@ -133,7 +133,7 @@ def test_merge_balance(self): "reference": "YOUR_REFERENCE" } self.adyen.client = self.test.create_client_from_file(200, request, "test/mocks/storedValue/merge-balance.json") - result = self.adyen.storedValue.merge_balance(request) + result = self.adyen.storedValue.stored_value_api.merge_balance(request) self.assertEqual(result.message['pspReference'], "881564657480267D") self.adyen.client.http_client.request.assert_called_once_with( 'POST', @@ -151,7 +151,7 @@ def test_void_transaction(self): } self.adyen.client = self.test.create_client_from_file(200, request, "test/mocks/storedValue/undo-transaction.json") - result = self.adyen.storedValue.void_transaction(request) + result = self.adyen.storedValue.stored_value_api.void_transaction(request) self.adyen.client.http_client.request.assert_called_once_with( 'POST', f'{self.stored_value_url}/voidTransaction', From 0942ea42c857389c32d73ac829ad9e0ac0301612 Mon Sep 17 00:00:00 2001 From: leonardog Date: Mon, 27 Oct 2025 15:44:55 +0100 Subject: [PATCH 05/10] remove unused files --- Adyen/services/balanceControl.py | 25 ----------- Adyen/services/binlookup.py | 31 ------------- Adyen/services/dataProtection.py | 23 ---------- Adyen/services/disputes.py | 55 ----------------------- Adyen/services/posMobile.py | 23 ---------- Adyen/services/recurring.py | 75 -------------------------------- Adyen/services/storedValue.py | 63 --------------------------- 7 files changed, 295 deletions(-) delete mode 100644 Adyen/services/balanceControl.py delete mode 100644 Adyen/services/binlookup.py delete mode 100644 Adyen/services/dataProtection.py delete mode 100644 Adyen/services/disputes.py delete mode 100644 Adyen/services/posMobile.py delete mode 100644 Adyen/services/recurring.py delete mode 100644 Adyen/services/storedValue.py diff --git a/Adyen/services/balanceControl.py b/Adyen/services/balanceControl.py deleted file mode 100644 index d9994836..00000000 --- a/Adyen/services/balanceControl.py +++ /dev/null @@ -1,25 +0,0 @@ -from .base import AdyenServiceBase - - -class AdyenBalanceControlApi(AdyenServiceBase): - """NOTE: This class is auto generated by OpenAPI Generator - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - def __init__(self, client=None): - super(AdyenBalanceControlApi, self).__init__(client=client) - self.service = "balanceControl" - self.baseUrl = "https://pal-test.adyen.com/pal/servlet/BalanceControl/v1" - - def balance_transfer(self, request, idempotency_key=None, **kwargs): - """ - Start a balance transfer - - Deprecated since Adyen Balance Control API v1 - """ - endpoint = self.baseUrl + f"/balanceTransfer" - method = "POST" - return self.client.call_adyen_api(request, self.service, method, endpoint, idempotency_key, **kwargs) - diff --git a/Adyen/services/binlookup.py b/Adyen/services/binlookup.py deleted file mode 100644 index 34349db8..00000000 --- a/Adyen/services/binlookup.py +++ /dev/null @@ -1,31 +0,0 @@ -from .base import AdyenServiceBase - - -class AdyenBinlookupApi(AdyenServiceBase): - """NOTE: This class is auto generated by OpenAPI Generator - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - def __init__(self, client=None): - super(AdyenBinlookupApi, self).__init__(client=client) - self.service = "binlookup" - self.baseUrl = "https://pal-test.adyen.com/pal/servlet/BinLookup/v54" - - def get3ds_availability(self, request, idempotency_key=None, **kwargs): - """ - Check if 3D Secure is available - """ - endpoint = self.baseUrl + f"/get3dsAvailability" - method = "POST" - return self.client.call_adyen_api(request, self.service, method, endpoint, idempotency_key, **kwargs) - - def get_cost_estimate(self, request, idempotency_key=None, **kwargs): - """ - Get a fees cost estimate - """ - endpoint = self.baseUrl + f"/getCostEstimate" - method = "POST" - return self.client.call_adyen_api(request, self.service, method, endpoint, idempotency_key, **kwargs) - diff --git a/Adyen/services/dataProtection.py b/Adyen/services/dataProtection.py deleted file mode 100644 index dbda0a10..00000000 --- a/Adyen/services/dataProtection.py +++ /dev/null @@ -1,23 +0,0 @@ -from .base import AdyenServiceBase - - -class AdyenDataProtectionApi(AdyenServiceBase): - """NOTE: This class is auto generated by OpenAPI Generator - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - def __init__(self, client=None): - super(AdyenDataProtectionApi, self).__init__(client=client) - self.service = "dataProtection" - self.baseUrl = "https://ca-test.adyen.com/ca/services/DataProtectionService/v1" - - def request_subject_erasure(self, request, idempotency_key=None, **kwargs): - """ - Submit a Subject Erasure Request. - """ - endpoint = self.baseUrl + f"/requestSubjectErasure" - method = "POST" - return self.client.call_adyen_api(request, self.service, method, endpoint, idempotency_key, **kwargs) - diff --git a/Adyen/services/disputes.py b/Adyen/services/disputes.py deleted file mode 100644 index 977b750e..00000000 --- a/Adyen/services/disputes.py +++ /dev/null @@ -1,55 +0,0 @@ -from .base import AdyenServiceBase - - -class AdyenDisputesApi(AdyenServiceBase): - """NOTE: This class is auto generated by OpenAPI Generator - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - def __init__(self, client=None): - super(AdyenDisputesApi, self).__init__(client=client) - self.service = "disputes" - self.baseUrl = "https://ca-test.adyen.com/ca/services/DisputeService/v30" - - def accept_dispute(self, request, idempotency_key=None, **kwargs): - """ - Accept a dispute - """ - endpoint = self.baseUrl + f"/acceptDispute" - method = "POST" - return self.client.call_adyen_api(request, self.service, method, endpoint, idempotency_key, **kwargs) - - def defend_dispute(self, request, idempotency_key=None, **kwargs): - """ - Defend a dispute - """ - endpoint = self.baseUrl + f"/defendDispute" - method = "POST" - return self.client.call_adyen_api(request, self.service, method, endpoint, idempotency_key, **kwargs) - - def delete_dispute_defense_document(self, request, idempotency_key=None, **kwargs): - """ - Delete a defense document - """ - endpoint = self.baseUrl + f"/deleteDisputeDefenseDocument" - method = "POST" - return self.client.call_adyen_api(request, self.service, method, endpoint, idempotency_key, **kwargs) - - def retrieve_applicable_defense_reasons(self, request, idempotency_key=None, **kwargs): - """ - Get applicable defense reasons - """ - endpoint = self.baseUrl + f"/retrieveApplicableDefenseReasons" - method = "POST" - return self.client.call_adyen_api(request, self.service, method, endpoint, idempotency_key, **kwargs) - - def supply_defense_document(self, request, idempotency_key=None, **kwargs): - """ - Supply a defense document - """ - endpoint = self.baseUrl + f"/supplyDefenseDocument" - method = "POST" - return self.client.call_adyen_api(request, self.service, method, endpoint, idempotency_key, **kwargs) - diff --git a/Adyen/services/posMobile.py b/Adyen/services/posMobile.py deleted file mode 100644 index 2e6fca9e..00000000 --- a/Adyen/services/posMobile.py +++ /dev/null @@ -1,23 +0,0 @@ -from .base import AdyenServiceBase - - -class AdyenPosMobileApi(AdyenServiceBase): - """NOTE: This class is auto generated by OpenAPI Generator - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - def __init__(self, client=None): - super(AdyenPosMobileApi, self).__init__(client=client) - self.service = "posMobile" - self.baseUrl = "https://checkout-test.adyen.com/checkout/possdk/v68" - - def create_communication_session(self, request, idempotency_key=None, **kwargs): - """ - Create a communication session - """ - endpoint = self.baseUrl + f"/sessions" - method = "POST" - return self.client.call_adyen_api(request, self.service, method, endpoint, idempotency_key, **kwargs) - diff --git a/Adyen/services/recurring.py b/Adyen/services/recurring.py deleted file mode 100644 index cdbcb1b2..00000000 --- a/Adyen/services/recurring.py +++ /dev/null @@ -1,75 +0,0 @@ -from .base import AdyenServiceBase - - -class AdyenRecurringApi(AdyenServiceBase): - """NOTE: This class is auto generated by OpenAPI Generator - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - def __init__(self, client=None): - super(AdyenRecurringApi, self).__init__(client=client) - self.service = "recurring" - self.baseUrl = "https://pal-test.adyen.com/pal/servlet/Recurring/v68" - - def create_permit(self, request, idempotency_key=None, **kwargs): - """ - Create new permits linked to a recurring contract. - - Deprecated since Adyen Recurring API v68 - """ - endpoint = self.baseUrl + f"/createPermit" - method = "POST" - return self.client.call_adyen_api(request, self.service, method, endpoint, idempotency_key, **kwargs) - - def disable(self, request, idempotency_key=None, **kwargs): - """ - Disable stored payment details - - Deprecated since Adyen Recurring API v68 - """ - endpoint = self.baseUrl + f"/disable" - method = "POST" - return self.client.call_adyen_api(request, self.service, method, endpoint, idempotency_key, **kwargs) - - def disable_permit(self, request, idempotency_key=None, **kwargs): - """ - Disable an existing permit. - - Deprecated since Adyen Recurring API v68 - """ - endpoint = self.baseUrl + f"/disablePermit" - method = "POST" - return self.client.call_adyen_api(request, self.service, method, endpoint, idempotency_key, **kwargs) - - def list_recurring_details(self, request, idempotency_key=None, **kwargs): - """ - Get stored payment details - - Deprecated since Adyen Recurring API v68 - """ - endpoint = self.baseUrl + f"/listRecurringDetails" - method = "POST" - return self.client.call_adyen_api(request, self.service, method, endpoint, idempotency_key, **kwargs) - - def notify_shopper(self, request, idempotency_key=None, **kwargs): - """ - Ask issuer to notify the shopper - - Deprecated since Adyen Recurring API v68 - """ - endpoint = self.baseUrl + f"/notifyShopper" - method = "POST" - return self.client.call_adyen_api(request, self.service, method, endpoint, idempotency_key, **kwargs) - - def schedule_account_updater(self, request, idempotency_key=None, **kwargs): - """ - Schedule running the Account Updater - - Deprecated since Adyen Recurring API v68 - """ - endpoint = self.baseUrl + f"/scheduleAccountUpdater" - method = "POST" - return self.client.call_adyen_api(request, self.service, method, endpoint, idempotency_key, **kwargs) - diff --git a/Adyen/services/storedValue.py b/Adyen/services/storedValue.py deleted file mode 100644 index 05b7877e..00000000 --- a/Adyen/services/storedValue.py +++ /dev/null @@ -1,63 +0,0 @@ -from .base import AdyenServiceBase - - -class AdyenStoredValueApi(AdyenServiceBase): - """NOTE: This class is auto generated by OpenAPI Generator - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - def __init__(self, client=None): - super(AdyenStoredValueApi, self).__init__(client=client) - self.service = "storedValue" - self.baseUrl = "https://pal-test.adyen.com/pal/servlet/StoredValue/v46" - - def change_status(self, request, idempotency_key=None, **kwargs): - """ - Changes the status of the payment method. - """ - endpoint = self.baseUrl + f"/changeStatus" - method = "POST" - return self.client.call_adyen_api(request, self.service, method, endpoint, idempotency_key, **kwargs) - - def check_balance(self, request, idempotency_key=None, **kwargs): - """ - Checks the balance. - """ - endpoint = self.baseUrl + f"/checkBalance" - method = "POST" - return self.client.call_adyen_api(request, self.service, method, endpoint, idempotency_key, **kwargs) - - def issue(self, request, idempotency_key=None, **kwargs): - """ - Issues a new card. - """ - endpoint = self.baseUrl + f"/issue" - method = "POST" - return self.client.call_adyen_api(request, self.service, method, endpoint, idempotency_key, **kwargs) - - def load(self, request, idempotency_key=None, **kwargs): - """ - Loads the payment method. - """ - endpoint = self.baseUrl + f"/load" - method = "POST" - return self.client.call_adyen_api(request, self.service, method, endpoint, idempotency_key, **kwargs) - - def merge_balance(self, request, idempotency_key=None, **kwargs): - """ - Merge the balance of two cards. - """ - endpoint = self.baseUrl + f"/mergeBalance" - method = "POST" - return self.client.call_adyen_api(request, self.service, method, endpoint, idempotency_key, **kwargs) - - def void_transaction(self, request, idempotency_key=None, **kwargs): - """ - Voids a transaction. - """ - endpoint = self.baseUrl + f"/voidTransaction" - method = "POST" - return self.client.call_adyen_api(request, self.service, method, endpoint, idempotency_key, **kwargs) - From d53d517920d0a4682ce36ea5f16ea8233c40498d Mon Sep 17 00:00:00 2001 From: leonardog Date: Mon, 27 Oct 2025 16:00:12 +0100 Subject: [PATCH 06/10] remove sca management apis from release --- Adyen/services/balancePlatform/__init__.py | 4 -- .../sca_association_management_api.py | 39 ------------------- .../sca_device_management_api.py | 39 ------------------- 3 files changed, 82 deletions(-) delete mode 100644 Adyen/services/balancePlatform/sca_association_management_api.py delete mode 100644 Adyen/services/balancePlatform/sca_device_management_api.py diff --git a/Adyen/services/balancePlatform/__init__.py b/Adyen/services/balancePlatform/__init__.py index 66600a29..444738f7 100644 --- a/Adyen/services/balancePlatform/__init__.py +++ b/Adyen/services/balancePlatform/__init__.py @@ -13,8 +13,6 @@ from .payment_instrument_groups_api import PaymentInstrumentGroupsApi from .payment_instruments_api import PaymentInstrumentsApi from .platform_api import PlatformApi -from .sca_association_management_api import SCAAssociationManagementApi -from .sca_device_management_api import SCADeviceManagementApi from .transaction_rules_api import TransactionRulesApi from .transfer_limits_balance_account_level_api import TransferLimitsBalanceAccountLevelApi from .transfer_limits_balance_platform_level_api import TransferLimitsBalancePlatformLevelApi @@ -44,8 +42,6 @@ def __init__(self, client=None): self.payment_instrument_groups_api = PaymentInstrumentGroupsApi(client=client) self.payment_instruments_api = PaymentInstrumentsApi(client=client) self.platform_api = PlatformApi(client=client) - self.sca_association_management_api = SCAAssociationManagementApi(client=client) - self.sca_device_management_api = SCADeviceManagementApi(client=client) self.transaction_rules_api = TransactionRulesApi(client=client) self.transfer_limits_balance_account_level_api = TransferLimitsBalanceAccountLevelApi(client=client) self.transfer_limits_balance_platform_level_api = TransferLimitsBalancePlatformLevelApi(client=client) diff --git a/Adyen/services/balancePlatform/sca_association_management_api.py b/Adyen/services/balancePlatform/sca_association_management_api.py deleted file mode 100644 index 52c5857c..00000000 --- a/Adyen/services/balancePlatform/sca_association_management_api.py +++ /dev/null @@ -1,39 +0,0 @@ -from ..base import AdyenServiceBase - - -class SCAAssociationManagementApi(AdyenServiceBase): - """NOTE: This class is auto generated by OpenAPI Generator - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - def __init__(self, client=None): - super(SCAAssociationManagementApi, self).__init__(client=client) - self.service = "balancePlatform" - self.baseUrl = "https://balanceplatform-api-test.adyen.com/bcl/v2" - - def approve_association(self, request, idempotency_key=None, **kwargs): - """ - Approve a pending approval association - """ - endpoint = self.baseUrl + f"/scaAssociations" - method = "PATCH" - return self.client.call_adyen_api(request, self.service, method, endpoint, idempotency_key, **kwargs) - - def list_associations(self, idempotency_key=None, **kwargs): - """ - Get a list of devices associated with an entity - """ - endpoint = self.baseUrl + f"/scaAssociations" - method = "GET" - return self.client.call_adyen_api(None, self.service, method, endpoint, idempotency_key, **kwargs) - - def remove_association(self, request, idempotency_key=None, **kwargs): - """ - Delete association to devices - """ - endpoint = self.baseUrl + f"/scaAssociations" - method = "DELETE" - return self.client.call_adyen_api(request, self.service, method, endpoint, idempotency_key, **kwargs) - diff --git a/Adyen/services/balancePlatform/sca_device_management_api.py b/Adyen/services/balancePlatform/sca_device_management_api.py deleted file mode 100644 index 2f287676..00000000 --- a/Adyen/services/balancePlatform/sca_device_management_api.py +++ /dev/null @@ -1,39 +0,0 @@ -from ..base import AdyenServiceBase - - -class SCADeviceManagementApi(AdyenServiceBase): - """NOTE: This class is auto generated by OpenAPI Generator - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - def __init__(self, client=None): - super(SCADeviceManagementApi, self).__init__(client=client) - self.service = "balancePlatform" - self.baseUrl = "https://balanceplatform-api-test.adyen.com/bcl/v2" - - def begin_sca_device_registration(self, request, idempotency_key=None, **kwargs): - """ - Begin SCA device registration - """ - endpoint = self.baseUrl + f"/scaDevices" - method = "POST" - return self.client.call_adyen_api(request, self.service, method, endpoint, idempotency_key, **kwargs) - - def finish_sca_device_registration(self, request, deviceId, idempotency_key=None, **kwargs): - """ - Finish registration process for a SCA device - """ - endpoint = self.baseUrl + f"/scaDevices/{deviceId}" - method = "PATCH" - return self.client.call_adyen_api(request, self.service, method, endpoint, idempotency_key, **kwargs) - - def submit_sca_association(self, request, deviceId, idempotency_key=None, **kwargs): - """ - Create a new SCA association for a device - """ - endpoint = self.baseUrl + f"/scaDevices/{deviceId}/scaAssociations" - method = "POST" - return self.client.call_adyen_api(request, self.service, method, endpoint, idempotency_key, **kwargs) - From ceee545e7f04e87ff0ff4e47f24a20b4bea958b3 Mon Sep 17 00:00:00 2001 From: leonardog Date: Tue, 28 Oct 2025 10:57:07 +0100 Subject: [PATCH 07/10] add tests for payment urls --- test/CheckoutTest.py | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/test/CheckoutTest.py b/test/CheckoutTest.py index 441e1e19..3b638822 100644 --- a/test/CheckoutTest.py +++ b/test/CheckoutTest.py @@ -529,3 +529,24 @@ def test_update_payment_link(self): ) self.assertEqual("expired",result.message["status"]) + def test_service_name_validation(self): + """ + This test prevents a regression of a bug found in the Adyen Ruby library + where the `service` attribute of the `PaymentsApi` class was being + overridden due to the way Ruby handles open classes. + + This test validates that the `service` and `baseUrl` attributes of the + `payments_api` for both `checkout` and `payment` are set correctly and + are not being overridden by ensuring that each service has its own + `PaymentsApi` class in a separate module. + """ + checkout_service = self.adyen.checkout.payments_api.service + payment_service = self.adyen.payment.payments_api.service + checkout_base_url = self.adyen.checkout.payments_api.baseUrl + payment_base_url = self.adyen.payment.payments_api.baseUrl + + self.assertEqual("checkout", checkout_service) + self.assertEqual("payments", payment_service) + self.assertTrue(checkout_base_url.startswith("https://checkout-test.adyen.com/")) + self.assertTrue(payment_base_url.startswith("https://pal-test.adyen.com/pal/servlet/Payment/")) + From 83497f05fcc7453c81efb218935390db7cfcab3f Mon Sep 17 00:00:00 2001 From: leonardog Date: Tue, 28 Oct 2025 17:09:53 +0100 Subject: [PATCH 08/10] add new tests and update readme --- Adyen/__init__.py | 3 + Adyen/client.py | 8 ++- Adyen/services/__init__.py | 1 + README.md | 35 +++++----- test/BalancePlatformTest.py | 65 +++++++++++++++++++ test/SessionAuthenticationTest.py | 49 ++++++++++++++ .../configuration/transfer-limit-created.json | 16 +++++ .../webhook-setting-created.json | 17 +++++ .../authentication-session-created.json | 4 ++ 9 files changed, 179 insertions(+), 19 deletions(-) create mode 100644 test/SessionAuthenticationTest.py create mode 100644 test/mocks/configuration/transfer-limit-created.json create mode 100644 test/mocks/configuration/webhook-setting-created.json create mode 100644 test/mocks/sessionAuthentication/authentication-session-created.json diff --git a/Adyen/__init__.py b/Adyen/__init__.py index 3e9a8a82..12ecab19 100644 --- a/Adyen/__init__.py +++ b/Adyen/__init__.py @@ -26,6 +26,7 @@ AdyenStoredValueApi, AdyenBalancePlatformApi, AdyenDisputesApi, + AdyenSessionAuthenticationApi ) from .httpclient import HTTPClient @@ -47,6 +48,7 @@ def __init__(self, **kwargs): self.storedValue = AdyenStoredValueApi(client=self.client) self.balancePlatform = AdyenBalancePlatformApi(client=self.client) self.disputes = AdyenDisputesApi(client=self.client) + self.sessionAuthentication = AdyenSessionAuthenticationApi(client=self.client) _base_adyen_obj = Adyen() @@ -63,3 +65,4 @@ def __init__(self, **kwargs): storedValue = _base_adyen_obj.storedValue balancePlatform = _base_adyen_obj.balancePlatform disputes = _base_adyen_obj.disputes +sessionAuthentication = _base_adyen_obj.sessionAuthentication \ No newline at end of file diff --git a/Adyen/client.py b/Adyen/client.py index c0b6ea6d..9991c1ce 100644 --- a/Adyen/client.py +++ b/Adyen/client.py @@ -94,6 +94,7 @@ def __init__( api_stored_value_version=None, api_balance_platform_version=None, api_disputes_version=None, + api_session_authentication_version=None, ): self.username = username @@ -127,6 +128,7 @@ def __init__( self.api_stored_value_version = api_stored_value_version self.api_balance_platform_version = api_balance_platform_version self.api_disputes_version = api_disputes_version + self.api_session_authentication_version = api_session_authentication_version def _determine_api_url(self, platform, endpoint): if platform == "test": @@ -281,7 +283,8 @@ def _set_url_version(self, service, endpoint): "transfers": self.api_transfers_version, "storedValue": self.api_stored_value_version, "balancePlatform": self.api_balance_platform_version, - "disputes": self.api_disputes_version + "disputes": self.api_disputes_version, + "sessionAuthentication": self.api_session_authentication_version } new_version = f"v{version_lookup[service]}" @@ -337,7 +340,8 @@ def call_adyen_api( self.api_transfers_version, self.api_stored_value_version, self.api_balance_platform_version, - self.api_disputes_version] + self.api_disputes_version, + self.api_session_authentication_version] if any(versions): endpoint = self._set_url_version(service, endpoint) diff --git a/Adyen/services/__init__.py b/Adyen/services/__init__.py index 7d39da6f..8db9bcf1 100644 --- a/Adyen/services/__init__.py +++ b/Adyen/services/__init__.py @@ -12,3 +12,4 @@ from .storedValue import AdyenStoredValueApi from .balancePlatform import AdyenBalancePlatformApi from .disputes import AdyenDisputesApi +from .sessionAuthentication import AdyenSessionAuthenticationApi \ No newline at end of file diff --git a/README.md b/README.md index 2e9967b0..badcb154 100644 --- a/README.md +++ b/README.md @@ -8,23 +8,24 @@ This is the officially supported Python library for using Adyen's APIs. ## Supported API versions -| API | Description | Service Name | Supported version | -|-------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------|-------------------| -| [BIN lookup API](https://docs.adyen.com/api-explorer/BinLookup/54/overview) | The BIN Lookup API provides endpoints for retrieving information based on a given BIN. | binLookup | **v54** | -| [Balance Platform API](https://docs.adyen.com/api-explorer/balanceplatform/2/overview) | The Balance Platform API enables you to create a platform where you can onboard your users as account holders and create balance accounts, cards, and business accounts. | balancePlatform | **v2** | -| [Checkout API](https://docs.adyen.com/api-explorer/Checkout/71/overview) | Our latest integration for accepting online payments. | checkout | **v71** | -| [Data Protection API](https://docs.adyen.com/development-resources/data-protection-api) | Endpoint for requesting data erasure. | dataProtection | **v1** | -| [Legal Entity Management API](https://docs.adyen.com/api-explorer/legalentity/3/overview) | Endpoint to manage legal entities | legalEntityManagement | **v3** | -| [Management API](https://docs.adyen.com/api-explorer/Management/3/overview) | Configure and manage your Adyen company and merchant accounts, stores, and payment terminals. | management | **v3** | -| [Payments API](https://docs.adyen.com/api-explorer/Payment/68/overview) | Our classic integration for online payments. | payments | **v68** | -| [Payouts API](https://docs.adyen.com/api-explorer/Payout/68/overview) | Endpoints for sending funds to your customers. | payouts | **v68** | -| [POS Terminal Management API](https://docs.adyen.com/api-explorer/postfmapi/1/overview) | ~~Endpoints for managing your point-of-sale payment terminals.~~ ‼️ **Deprecated**: use instead the [Management API](https://docs.adyen.com/api-explorer/Management/latest/overview) for the management of your terminal fleet. | ~~terminal~~ | ~~**v1**~~ | -| [Recurring API](https://docs.adyen.com/api-explorer/Recurring/68/overview) | Endpoints for managing saved payment details. | recurring | **v68** | -| [Stored Value API](https://docs.adyen.com/payment-methods/gift-cards/stored-value-api) | Endpoints for managing gift cards. | storedValue | **v46** | -| [Transfers API](https://docs.adyen.com/api-explorer/transfers/4/overview) | Endpoints for managing transfers, getting information about transactions or moving fund | transfers | **v4** | -| [Disputes API](https://docs.adyen.com/api-explorer/Disputes/30/overview) | You can use the [Disputes API](https://docs.adyen.com/risk-management/disputes-api) to automate the dispute handling process so that you can respond to disputes and chargebacks as soon as they are initiated. The Disputes API lets you retrieve defense reasons, supply and delete defense documents, and accept or defend disputes. | disputes | **v30** | -| [POS Mobile API](https://docs.adyen.com/api-explorer/possdk/68/overview) | The POS Mobile API is used in the mutual authentication flow between an Adyen Android or iOS [POS Mobile SDK](https://docs.adyen.com/point-of-sale/ipp-mobile/) and the Adyen payments platform. The POS Mobile SDK for Android or iOS devices enables businesses to accept in-person payments using a commercial off-the-shelf (COTS) device like a phone. For example, Tap to Pay transactions, or transactions on a mobile device in combination with a card reader. | posMobile | **v68** | -| [Payments App API](https://docs.adyen.com/api-explorer/payments-app/1/overview) | The Payments App API is used to Board and manage the Adyen Payments App on your Android mobile devices. | paymentsApp | **v1** | +| API | Description | Service Name | Supported version | +|---------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------|-------------------| +| [BIN lookup API](https://docs.adyen.com/api-explorer/BinLookup/54/overview) | The BIN Lookup API provides endpoints for retrieving information based on a given BIN. | binLookup | **v54** | +| [Balance Platform API](https://docs.adyen.com/api-explorer/balanceplatform/2/overview) | The Balance Platform API enables you to create a platform where you can onboard your users as account holders and create balance accounts, cards, and business accounts. | balancePlatform | **v2** | +| [Checkout API](https://docs.adyen.com/api-explorer/Checkout/71/overview) | Our latest integration for accepting online payments. | checkout | **v71** | +| [Data Protection API](https://docs.adyen.com/development-resources/data-protection-api) | Endpoint for requesting data erasure. | dataProtection | **v1** | +| [Legal Entity Management API](https://docs.adyen.com/api-explorer/legalentity/3/overview) | Endpoint to manage legal entities | legalEntityManagement | **v4** | +| [Management API](https://docs.adyen.com/api-explorer/Management/3/overview) | Configure and manage your Adyen company and merchant accounts, stores, and payment terminals. | management | **v3** | +| [Payments API](https://docs.adyen.com/api-explorer/Payment/68/overview) | Our classic integration for online payments. | payments | **v68** | +| [Payouts API](https://docs.adyen.com/api-explorer/Payout/68/overview) | Endpoints for sending funds to your customers. | payouts | **v68** | +| [POS Terminal Management API](https://docs.adyen.com/api-explorer/postfmapi/1/overview) | ~~Endpoints for managing your point-of-sale payment terminals.~~ ‼️ **Deprecated**: use instead the [Management API](https://docs.adyen.com/api-explorer/Management/latest/overview) for the management of your terminal fleet. | ~~terminal~~ | ~~**v1**~~ | +| [Recurring API](https://docs.adyen.com/api-explorer/Recurring/68/overview) | Endpoints for managing saved payment details. | recurring | **v68** | +| [Stored Value API](https://docs.adyen.com/payment-methods/gift-cards/stored-value-api) | Endpoints for managing gift cards. | storedValue | **v46** | +| [Transfers API](https://docs.adyen.com/api-explorer/transfers/4/overview) | Endpoints for managing transfers, getting information about transactions or moving fund | transfers | **v4** | +| [Disputes API](https://docs.adyen.com/api-explorer/Disputes/30/overview) | You can use the [Disputes API](https://docs.adyen.com/risk-management/disputes-api) to automate the dispute handling process so that you can respond to disputes and chargebacks as soon as they are initiated. The Disputes API lets you retrieve defense reasons, supply and delete defense documents, and accept or defend disputes. | disputes | **v30** | +| [POS Mobile API](https://docs.adyen.com/api-explorer/possdk/68/overview) | The POS Mobile API is used in the mutual authentication flow between an Adyen Android or iOS [POS Mobile SDK](https://docs.adyen.com/point-of-sale/ipp-mobile/) and the Adyen payments platform. The POS Mobile SDK for Android or iOS devices enables businesses to accept in-person payments using a commercial off-the-shelf (COTS) device like a phone. For example, Tap to Pay transactions, or transactions on a mobile device in combination with a card reader. | posMobile | **v68** | +| [Payments App API](https://docs.adyen.com/api-explorer/payments-app/1/overview) | The Payments App API is used to Board and manage the Adyen Payments App on your Android mobile devices. | paymentsApp | **v1** | +| [SessionAuthentication API](https://docs.adyen.com/api-explorer/sessionauthentication/1/overview) | The Session authentication API enables you to create and manage the JSON Web Tokens (JWT) required for integrating | sessionAuthentication | **v1** | For more information, refer to our [documentation](https://docs.adyen.com/) or the [API Explorer](https://docs.adyen.com/api-explorer/). diff --git a/test/BalancePlatformTest.py b/test/BalancePlatformTest.py index fe29b681..656bbd39 100644 --- a/test/BalancePlatformTest.py +++ b/test/BalancePlatformTest.py @@ -87,6 +87,71 @@ def test_creating_payment_instrument(self): xapikey="YourXapikey" ) + def test_creating_transfer_limit(self): + request = { + "amount": { + "currency": "EUR", + "value": 10000 + }, + "reference": "Your reference for the transfer limit", + "scaInformation": { + "scaOnApproval": True + }, + "scope": "perTransaction", + "startsAt": "2025-08-15T06:36:20+01:00", + "endsAt": "2026-08-14T00:00:00+01:00", + "transferType": "all" + } + + balance_platform_id = 'YOUR_BALANCE_PLATFORM_ID' + + self.adyen.client = self.test.create_client_from_file(200, request, "test/mocks/configuration/" + "transfer-limit-created.json") + result = self.adyen.balancePlatform.transfer_limits_balance_platform_level_api.create_transfer_limit(request, + balance_platform_id) + self.assertEqual("TRLI00000000000000000000000001", result.message['id']) + self.adyen.client.http_client.request.assert_called_once_with( + 'POST', + f'{self.balance_platform_url}/balancePlatforms/{balance_platform_id}/transferLimits', + headers={'adyen-library-name': 'adyen-python-api-library', 'adyen-library-version': settings.LIB_VERSION}, + json=request, + xapikey="YourXapikey" + ) + + def test_creating_webhook(self): + request = { + "type": "balance", + "target": { + "type": "balanceAccount", + "id": "BA00000000000000000LIABLE" + }, + "currency": "USD", + "status": "active", + "conditions": [ + { + "balanceType": "available", + "conditionType": "lessThan", + "value": 500000 + } + ] + } + + balance_platform_id = 'YOUR_BALANCE_PLATFORM_ID' + webhook_id = 'YOUR_WEBHOOK_ID' + + self.adyen.client = self.test.create_client_from_file(200, request, "test/mocks/configuration/" + "webhook-setting-created.json") + result = self.adyen.balancePlatform.balances_api.create_webhook_setting(request, balance_platform_id, webhook_id) + self.assertEqual("active", result.message['status']) + self.assertEqual("BWHS00000000000000000000000001", result.message['id']) + self.adyen.client.http_client.request.assert_called_once_with( + 'POST', + f'{self.balance_platform_url}/balancePlatforms/{balance_platform_id}/webhooks/{webhook_id}/settings', + headers={'adyen-library-name': 'adyen-python-api-library', 'adyen-library-version': settings.LIB_VERSION}, + json=request, + xapikey="YourXapikey" + ) + def test_creating_payment_instrument_group(self): request = { "balancePlatform": "YOUR_BALANCE_PLATFORM", diff --git a/test/SessionAuthenticationTest.py b/test/SessionAuthenticationTest.py new file mode 100644 index 00000000..8f59b0f0 --- /dev/null +++ b/test/SessionAuthenticationTest.py @@ -0,0 +1,49 @@ +import Adyen +import unittest +from Adyen import settings + +try: + from BaseTest import BaseTest +except ImportError: + from .BaseTest import BaseTest + + +class TestSessionAuthentication(unittest.TestCase): + adyen = Adyen.Adyen() + + client = adyen.client + test = BaseTest(adyen) + client.xapikey = "YourXapikey" + client.platform = "test" + session_url = adyen.sessionAuthentication.session_authentication_api.baseUrl + + def test_create_session_token(self): + request = { + "allowOrigin": 'https://www.your-website.com', + "product": "platform", + "policy": { + "resources": [ + { + "type": "accountHolder", + "accountHolderId": "AH00000000000000000000001" + } + ], + "roles": [ + "Transactions Overview Component: View", + "Payouts Overview Component: View" + ] + } + } + self.adyen.client = self.test.create_client_from_file(200, request, + "test/mocks/sessionAuthentication/" + "authentication-session-created.json") + + result = self.adyen.sessionAuthentication.session_authentication_api.create_authentication_session(request) + self.assertEqual("long_session_token_string", result.message["sessionToken"]) + self.adyen.client.http_client.request.assert_called_once_with( + 'POST', + f'{self.session_url}/sessions', + headers={'adyen-library-name': 'adyen-python-api-library', 'adyen-library-version': settings.LIB_VERSION}, + json=request, + xapikey="YourXapikey" + ) diff --git a/test/mocks/configuration/transfer-limit-created.json b/test/mocks/configuration/transfer-limit-created.json new file mode 100644 index 00000000..65dd9a77 --- /dev/null +++ b/test/mocks/configuration/transfer-limit-created.json @@ -0,0 +1,16 @@ +{ + "amount": { + "value": 10000, + "currency": "EUR" + }, + "id": "TRLI00000000000000000000000001", + "scope": "perTransaction", + "reference": "Your reference for the transfer limit", + "scaInformation": { + "status": "pending" + }, + "startsAt": "2025-08-15T06:36:20+01:00", + "endsAt": "2026-08-13T23:00:00+01:00", + "limitStatus": "pendingSCA", + "transferType": "all" +} \ No newline at end of file diff --git a/test/mocks/configuration/webhook-setting-created.json b/test/mocks/configuration/webhook-setting-created.json new file mode 100644 index 00000000..b18a6abc --- /dev/null +++ b/test/mocks/configuration/webhook-setting-created.json @@ -0,0 +1,17 @@ +{ + "id": "BWHS00000000000000000000000001", + "type": "balance", + "target": { + "type": "balanceAccount", + "id": "BA00000000000000000LIABLE" + }, + "currency": "USD", + "status": "active", + "conditions": [ + { + "balanceType": "available", + "conditionType": "lessThan", + "value": 500000 + } + ] +} \ No newline at end of file diff --git a/test/mocks/sessionAuthentication/authentication-session-created.json b/test/mocks/sessionAuthentication/authentication-session-created.json new file mode 100644 index 00000000..82c8c177 --- /dev/null +++ b/test/mocks/sessionAuthentication/authentication-session-created.json @@ -0,0 +1,4 @@ +{ + "sessionToken": "long_session_token_string", + "expiresAt": "2025-10-07T12:00:00Z" +} \ No newline at end of file From 4be92de6a9bb03451a05f138e78a689226995d91 Mon Sep 17 00:00:00 2001 From: leonardog Date: Thu, 30 Oct 2025 15:45:48 +0100 Subject: [PATCH 09/10] feat: add support for sessionauth endpoints --- Adyen/client.py | 2 ++ test/DetermineEndpointTest.py | 10 ++++++++++ 2 files changed, 12 insertions(+) diff --git a/Adyen/client.py b/Adyen/client.py index 9991c1ce..5d4146e6 100644 --- a/Adyen/client.py +++ b/Adyen/client.py @@ -154,6 +154,8 @@ def _determine_api_url(self, platform, endpoint): else: endpoint = endpoint.replace("https://checkout-test.adyen.com/", "https://" + self.live_endpoint_prefix + "-checkout-live.adyenpayments.com/checkout/") + elif "authe/api" in endpoint: + endpoint = endpoint.replace("https://test.adyen.com", "https://authe-live.adyen.com") endpoint = endpoint.replace("-test", "-live") diff --git a/test/DetermineEndpointTest.py b/test/DetermineEndpointTest.py index 02d9c4fa..eef76e0f 100644 --- a/test/DetermineEndpointTest.py +++ b/test/DetermineEndpointTest.py @@ -23,6 +23,8 @@ class TestDetermineUrl(unittest.TestCase): payment_version = payment_url.split('/')[-1] binlookup_url = adyen.binlookup.bin_lookup_api.baseUrl management_url = adyen.management.account_merchant_level_api.baseUrl + sessionauth_url = adyen.sessionAuthentication.session_authentication_api.baseUrl + sessionauth_version = sessionauth_url.split('/')[-1] def test_checkout_api_url_custom(self): self.client.live_endpoint_prefix = "1797a841fbb37ca7-AdyenDemo" @@ -133,3 +135,11 @@ def test_management_api_url_companies(self): companyId = "YOUR_COMPANY_ID" url = self.adyen.client._determine_api_url("test", self.management_url + f'/companies/{companyId}/users') self.assertEqual(url, f"{self.management_url}/companies/{companyId}/users") + + def test_secureauthentication_api_url(self): + url = self.adyen.client._determine_api_url("test", self.sessionauth_url) + self.assertEqual(url, self.sessionauth_url) + + def test_live_secureauthentication_api_url(self): + url = self.adyen.client._determine_api_url("live", self.sessionauth_url + "/sessions") + self.assertEqual(url, f"https://authe-live.adyen.com/authe/api/{self.sessionauth_version}/sessions") From a7506cece49bffb61cce8d2a67a06b39f0d3b3d0 Mon Sep 17 00:00:00 2001 From: leonardog Date: Thu, 30 Oct 2025 15:48:28 +0100 Subject: [PATCH 10/10] fix: update readme with new lem descriptions --- README.md | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/README.md b/README.md index badcb154..9fb2ad5d 100644 --- a/README.md +++ b/README.md @@ -8,24 +8,24 @@ This is the officially supported Python library for using Adyen's APIs. ## Supported API versions -| API | Description | Service Name | Supported version | -|---------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------|-------------------| -| [BIN lookup API](https://docs.adyen.com/api-explorer/BinLookup/54/overview) | The BIN Lookup API provides endpoints for retrieving information based on a given BIN. | binLookup | **v54** | -| [Balance Platform API](https://docs.adyen.com/api-explorer/balanceplatform/2/overview) | The Balance Platform API enables you to create a platform where you can onboard your users as account holders and create balance accounts, cards, and business accounts. | balancePlatform | **v2** | -| [Checkout API](https://docs.adyen.com/api-explorer/Checkout/71/overview) | Our latest integration for accepting online payments. | checkout | **v71** | -| [Data Protection API](https://docs.adyen.com/development-resources/data-protection-api) | Endpoint for requesting data erasure. | dataProtection | **v1** | -| [Legal Entity Management API](https://docs.adyen.com/api-explorer/legalentity/3/overview) | Endpoint to manage legal entities | legalEntityManagement | **v4** | -| [Management API](https://docs.adyen.com/api-explorer/Management/3/overview) | Configure and manage your Adyen company and merchant accounts, stores, and payment terminals. | management | **v3** | -| [Payments API](https://docs.adyen.com/api-explorer/Payment/68/overview) | Our classic integration for online payments. | payments | **v68** | -| [Payouts API](https://docs.adyen.com/api-explorer/Payout/68/overview) | Endpoints for sending funds to your customers. | payouts | **v68** | -| [POS Terminal Management API](https://docs.adyen.com/api-explorer/postfmapi/1/overview) | ~~Endpoints for managing your point-of-sale payment terminals.~~ ‼️ **Deprecated**: use instead the [Management API](https://docs.adyen.com/api-explorer/Management/latest/overview) for the management of your terminal fleet. | ~~terminal~~ | ~~**v1**~~ | -| [Recurring API](https://docs.adyen.com/api-explorer/Recurring/68/overview) | Endpoints for managing saved payment details. | recurring | **v68** | -| [Stored Value API](https://docs.adyen.com/payment-methods/gift-cards/stored-value-api) | Endpoints for managing gift cards. | storedValue | **v46** | -| [Transfers API](https://docs.adyen.com/api-explorer/transfers/4/overview) | Endpoints for managing transfers, getting information about transactions or moving fund | transfers | **v4** | -| [Disputes API](https://docs.adyen.com/api-explorer/Disputes/30/overview) | You can use the [Disputes API](https://docs.adyen.com/risk-management/disputes-api) to automate the dispute handling process so that you can respond to disputes and chargebacks as soon as they are initiated. The Disputes API lets you retrieve defense reasons, supply and delete defense documents, and accept or defend disputes. | disputes | **v30** | +| API | Description | Service Name | Supported version | +|---------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------|-------------------| +| [BIN lookup API](https://docs.adyen.com/api-explorer/BinLookup/54/overview) | The BIN Lookup API provides endpoints for retrieving information based on a given BIN. | binLookup | **v54** | +| [Balance Platform API](https://docs.adyen.com/api-explorer/balanceplatform/2/overview) | The Balance Platform API enables you to create a platform where you can onboard your users as account holders and create balance accounts, cards, and business accounts. | balancePlatform | **v2** | +| [Checkout API](https://docs.adyen.com/api-explorer/Checkout/71/overview) | Our latest integration for accepting online payments. | checkout | **v71** | +| [Data Protection API](https://docs.adyen.com/development-resources/data-protection-api) | Endpoint for requesting data erasure. | dataProtection | **v1** | +| [Legal Entity Management API](https://docs.adyen.com/api-explorer/legalentity/4/overview) | The Legal Entity Management API enables you to manage legal entities that contain information required for verification. | legalEntityManagement | **v4** | +| [Management API](https://docs.adyen.com/api-explorer/Management/3/overview) | Configure and manage your Adyen company and merchant accounts, stores, and payment terminals. | management | **v3** | +| [Payments API](https://docs.adyen.com/api-explorer/Payment/68/overview) | Our classic integration for online payments. | payments | **v68** | +| [Payouts API](https://docs.adyen.com/api-explorer/Payout/68/overview) | Endpoints for sending funds to your customers. | payouts | **v68** | +| [POS Terminal Management API](https://docs.adyen.com/api-explorer/postfmapi/1/overview) | ~~Endpoints for managing your point-of-sale payment terminals.~~ ‼️ **Deprecated**: use instead the [Management API](https://docs.adyen.com/api-explorer/Management/latest/overview) for the management of your terminal fleet. | ~~terminal~~ | ~~**v1**~~ | +| [Recurring API](https://docs.adyen.com/api-explorer/Recurring/68/overview) | Endpoints for managing saved payment details. | recurring | **v68** | +| [Stored Value API](https://docs.adyen.com/payment-methods/gift-cards/stored-value-api) | Endpoints for managing gift cards. | storedValue | **v46** | +| [Transfers API](https://docs.adyen.com/api-explorer/transfers/4/overview) | Endpoints for managing transfers, getting information about transactions or moving fund | transfers | **v4** | +| [Disputes API](https://docs.adyen.com/api-explorer/Disputes/30/overview) | You can use the [Disputes API](https://docs.adyen.com/risk-management/disputes-api) to automate the dispute handling process so that you can respond to disputes and chargebacks as soon as they are initiated. The Disputes API lets you retrieve defense reasons, supply and delete defense documents, and accept or defend disputes. | disputes | **v30** | | [POS Mobile API](https://docs.adyen.com/api-explorer/possdk/68/overview) | The POS Mobile API is used in the mutual authentication flow between an Adyen Android or iOS [POS Mobile SDK](https://docs.adyen.com/point-of-sale/ipp-mobile/) and the Adyen payments platform. The POS Mobile SDK for Android or iOS devices enables businesses to accept in-person payments using a commercial off-the-shelf (COTS) device like a phone. For example, Tap to Pay transactions, or transactions on a mobile device in combination with a card reader. | posMobile | **v68** | -| [Payments App API](https://docs.adyen.com/api-explorer/payments-app/1/overview) | The Payments App API is used to Board and manage the Adyen Payments App on your Android mobile devices. | paymentsApp | **v1** | -| [SessionAuthentication API](https://docs.adyen.com/api-explorer/sessionauthentication/1/overview) | The Session authentication API enables you to create and manage the JSON Web Tokens (JWT) required for integrating | sessionAuthentication | **v1** | +| [Payments App API](https://docs.adyen.com/api-explorer/payments-app/1/overview) | The Payments App API is used to Board and manage the Adyen Payments App on your Android mobile devices. | paymentsApp | **v1** | +| [SessionAuthentication API](https://docs.adyen.com/api-explorer/sessionauthentication/1/overview) | The Session authentication API enables you to create and manage the JSON Web Tokens (JWT) required for integrating | sessionAuthentication | **v1** | For more information, refer to our [documentation](https://docs.adyen.com/) or the [API Explorer](https://docs.adyen.com/api-explorer/).