dodopayments 1.27.0__tar.gz → 1.30.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of dodopayments might be problematic. Click here for more details.
- dodopayments-1.30.0/.release-please-manifest.json +3 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/CHANGELOG.md +8 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/PKG-INFO +1 -1
- {dodopayments-1.27.0 → dodopayments-1.30.0}/api.md +2 -2
- {dodopayments-1.27.0 → dodopayments-1.30.0}/pyproject.toml +1 -1
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/_version.py +1 -1
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/resources/customers/customers.py +1 -19
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/resources/subscriptions.py +0 -41
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/types/__init__.py +0 -2
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/types/payment.py +3 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/tests/api_resources/test_customers.py +8 -26
- {dodopayments-1.27.0 → dodopayments-1.30.0}/tests/api_resources/test_subscriptions.py +8 -64
- dodopayments-1.27.0/.release-please-manifest.json +0 -3
- dodopayments-1.27.0/src/dodopayments/types/customer_update_params.py +0 -14
- dodopayments-1.27.0/src/dodopayments/types/subscription_change_plan_params.py +0 -30
- {dodopayments-1.27.0 → dodopayments-1.30.0}/.gitignore +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/CONTRIBUTING.md +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/LICENSE +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/README.md +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/SECURITY.md +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/bin/check-release-environment +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/bin/publish-pypi +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/examples/.keep +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/mypy.ini +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/noxfile.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/release-please-config.json +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/requirements-dev.lock +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/requirements.lock +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodo_payments/lib/.keep +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/__init__.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/_base_client.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/_client.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/_compat.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/_constants.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/_exceptions.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/_files.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/_models.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/_qs.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/_resource.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/_response.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/_streaming.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/_types.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/_utils/__init__.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/_utils/_logs.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/_utils/_proxy.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/_utils/_reflection.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/_utils/_resources_proxy.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/_utils/_streams.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/_utils/_sync.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/_utils/_transform.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/_utils/_typing.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/_utils/_utils.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/lib/.keep +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/pagination.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/py.typed +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/resources/__init__.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/resources/addons.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/resources/brands.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/resources/customers/__init__.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/resources/customers/customer_portal.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/resources/discounts.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/resources/disputes.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/resources/invoices/__init__.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/resources/invoices/invoices.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/resources/invoices/payments.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/resources/license_key_instances.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/resources/license_keys.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/resources/licenses.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/resources/misc.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/resources/payments.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/resources/payouts.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/resources/products/__init__.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/resources/products/images.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/resources/products/products.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/resources/refunds.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/resources/webhook_events.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/types/addon_cart_response_item.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/types/addon_create_params.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/types/addon_list_params.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/types/addon_response.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/types/addon_update_images_response.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/types/addon_update_params.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/types/attach_existing_customer_param.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/types/billing_address.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/types/billing_address_param.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/types/brand_create_params.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/types/brand_create_response.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/types/brand_list_response.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/types/brand_retrieve_response.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/types/brand_update_images_response.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/types/brand_update_params.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/types/brand_update_response.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/types/country_code.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/types/create_new_customer_param.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/types/currency.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/types/customer.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/types/customer_create_params.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/types/customer_limited_details.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/types/customer_list_params.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/types/customer_portal_session.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/types/customer_request_param.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/types/customers/__init__.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/types/customers/customer_portal_create_params.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/types/discount.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/types/discount_create_params.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/types/discount_list_params.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/types/discount_type.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/types/discount_update_params.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/types/dispute.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/types/dispute_list_params.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/types/dispute_list_response.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/types/dispute_retrieve_response.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/types/dispute_stage.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/types/dispute_status.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/types/intent_status.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/types/invoices/__init__.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/types/license_activate_params.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/types/license_deactivate_params.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/types/license_key.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/types/license_key_duration.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/types/license_key_duration_param.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/types/license_key_instance.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/types/license_key_instance_list_params.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/types/license_key_instance_update_params.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/types/license_key_list_params.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/types/license_key_status.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/types/license_key_update_params.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/types/license_validate_params.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/types/license_validate_response.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/types/misc_list_supported_countries_response.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/types/one_time_product_cart_item.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/types/one_time_product_cart_item_param.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/types/payment_create_params.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/types/payment_create_response.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/types/payment_list_params.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/types/payment_list_response.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/types/payment_retrieve_line_items_response.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/types/payout_list_params.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/types/payout_list_response.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/types/price.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/types/price_param.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/types/product.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/types/product_create_params.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/types/product_list_params.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/types/product_list_response.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/types/product_update_params.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/types/products/__init__.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/types/products/image_update_params.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/types/products/image_update_response.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/types/refund.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/types/refund_create_params.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/types/refund_list_params.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/types/refund_status.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/types/subscription.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/types/subscription_charge_params.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/types/subscription_charge_response.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/types/subscription_create_params.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/types/subscription_create_response.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/types/subscription_list_params.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/types/subscription_list_response.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/types/subscription_status.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/types/subscription_update_params.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/types/tax_category.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/types/time_interval.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/types/webhook_event.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/types/webhook_event_list_params.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/tests/__init__.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/tests/api_resources/__init__.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/tests/api_resources/customers/__init__.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/tests/api_resources/customers/test_customer_portal.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/tests/api_resources/invoices/__init__.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/tests/api_resources/invoices/test_payments.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/tests/api_resources/products/__init__.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/tests/api_resources/products/test_images.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/tests/api_resources/test_addons.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/tests/api_resources/test_brands.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/tests/api_resources/test_discounts.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/tests/api_resources/test_disputes.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/tests/api_resources/test_license_key_instances.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/tests/api_resources/test_license_keys.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/tests/api_resources/test_licenses.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/tests/api_resources/test_misc.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/tests/api_resources/test_payments.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/tests/api_resources/test_payouts.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/tests/api_resources/test_products.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/tests/api_resources/test_refunds.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/tests/api_resources/test_webhook_events.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/tests/conftest.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/tests/sample_file.txt +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/tests/test_client.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/tests/test_deepcopy.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/tests/test_extract_files.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/tests/test_files.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/tests/test_models.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/tests/test_qs.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/tests/test_required_args.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/tests/test_response.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/tests/test_streaming.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/tests/test_transform.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/tests/test_utils/test_proxy.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/tests/test_utils/test_typing.py +0 -0
- {dodopayments-1.27.0 → dodopayments-1.30.0}/tests/utils.py +0 -0
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 1.30.0 (2025-06-02)
|
|
4
|
+
|
|
5
|
+
Full Changelog: [v1.27.0...v1.30.0](https://github.com/dodopayments/dodopayments-python/compare/v1.27.0...v1.30.0)
|
|
6
|
+
|
|
7
|
+
### Features
|
|
8
|
+
|
|
9
|
+
* **api:** manual updates ([7bd55ab](https://github.com/dodopayments/dodopayments-python/commit/7bd55ab6d9cf1671a0f5c5b38132a87a997fd25f))
|
|
10
|
+
|
|
3
11
|
## 1.27.0 (2025-05-26)
|
|
4
12
|
|
|
5
13
|
Full Changelog: [v1.25.0...v1.27.0](https://github.com/dodopayments/dodopayments-python/compare/v1.25.0...v1.27.0)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: dodopayments
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.30.0
|
|
4
4
|
Summary: The official Python library for the Dodo Payments API
|
|
5
5
|
Project-URL: Homepage, https://github.com/dodopayments/dodopayments-python
|
|
6
6
|
Project-URL: Repository, https://github.com/dodopayments/dodopayments-python
|
|
@@ -47,7 +47,7 @@ Methods:
|
|
|
47
47
|
- <code title="get /subscriptions/{subscription_id}">client.subscriptions.<a href="./src/dodopayments/resources/subscriptions.py">retrieve</a>(subscription_id) -> <a href="./src/dodopayments/types/subscription.py">Subscription</a></code>
|
|
48
48
|
- <code title="patch /subscriptions/{subscription_id}">client.subscriptions.<a href="./src/dodopayments/resources/subscriptions.py">update</a>(subscription_id, \*\*<a href="src/dodopayments/types/subscription_update_params.py">params</a>) -> <a href="./src/dodopayments/types/subscription.py">Subscription</a></code>
|
|
49
49
|
- <code title="get /subscriptions">client.subscriptions.<a href="./src/dodopayments/resources/subscriptions.py">list</a>(\*\*<a href="src/dodopayments/types/subscription_list_params.py">params</a>) -> <a href="./src/dodopayments/types/subscription_list_response.py">SyncDefaultPageNumberPagination[SubscriptionListResponse]</a></code>
|
|
50
|
-
- <code title="post /subscriptions/{subscription_id}/change-plan">client.subscriptions.<a href="./src/dodopayments/resources/subscriptions.py">change_plan</a>(subscription_id
|
|
50
|
+
- <code title="post /subscriptions/{subscription_id}/change-plan">client.subscriptions.<a href="./src/dodopayments/resources/subscriptions.py">change_plan</a>(subscription_id) -> None</code>
|
|
51
51
|
- <code title="post /subscriptions/{subscription_id}/charge">client.subscriptions.<a href="./src/dodopayments/resources/subscriptions.py">charge</a>(subscription_id, \*\*<a href="src/dodopayments/types/subscription_charge_params.py">params</a>) -> <a href="./src/dodopayments/types/subscription_charge_response.py">SubscriptionChargeResponse</a></code>
|
|
52
52
|
|
|
53
53
|
# Invoices
|
|
@@ -112,7 +112,7 @@ Methods:
|
|
|
112
112
|
|
|
113
113
|
- <code title="post /customers">client.customers.<a href="./src/dodopayments/resources/customers/customers.py">create</a>(\*\*<a href="src/dodopayments/types/customer_create_params.py">params</a>) -> <a href="./src/dodopayments/types/customer.py">Customer</a></code>
|
|
114
114
|
- <code title="get /customers/{customer_id}">client.customers.<a href="./src/dodopayments/resources/customers/customers.py">retrieve</a>(customer_id) -> <a href="./src/dodopayments/types/customer.py">Customer</a></code>
|
|
115
|
-
- <code title="patch /customers/{customer_id}">client.customers.<a href="./src/dodopayments/resources/customers/customers.py">update</a>(customer_id
|
|
115
|
+
- <code title="patch /customers/{customer_id}">client.customers.<a href="./src/dodopayments/resources/customers/customers.py">update</a>(customer_id) -> <a href="./src/dodopayments/types/customer.py">Customer</a></code>
|
|
116
116
|
- <code title="get /customers">client.customers.<a href="./src/dodopayments/resources/customers/customers.py">list</a>(\*\*<a href="src/dodopayments/types/customer_list_params.py">params</a>) -> <a href="./src/dodopayments/types/customer.py">SyncDefaultPageNumberPagination[Customer]</a></code>
|
|
117
117
|
|
|
118
118
|
## CustomerPortal
|
{dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/resources/customers/customers.py
RENAMED
|
@@ -6,7 +6,7 @@ from typing import Optional
|
|
|
6
6
|
|
|
7
7
|
import httpx
|
|
8
8
|
|
|
9
|
-
from ...types import customer_list_params, customer_create_params
|
|
9
|
+
from ...types import customer_list_params, customer_create_params
|
|
10
10
|
from ..._types import NOT_GIVEN, Body, Query, Headers, NotGiven
|
|
11
11
|
from ..._utils import maybe_transform, async_maybe_transform
|
|
12
12
|
from ..._compat import cached_property
|
|
@@ -130,8 +130,6 @@ class CustomersResource(SyncAPIResource):
|
|
|
130
130
|
self,
|
|
131
131
|
customer_id: str,
|
|
132
132
|
*,
|
|
133
|
-
name: Optional[str] | NotGiven = NOT_GIVEN,
|
|
134
|
-
phone_number: Optional[str] | NotGiven = NOT_GIVEN,
|
|
135
133
|
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
|
136
134
|
# The extra values given here take precedence over values defined on the client or passed to this method.
|
|
137
135
|
extra_headers: Headers | None = None,
|
|
@@ -153,13 +151,6 @@ class CustomersResource(SyncAPIResource):
|
|
|
153
151
|
raise ValueError(f"Expected a non-empty value for `customer_id` but received {customer_id!r}")
|
|
154
152
|
return self._patch(
|
|
155
153
|
f"/customers/{customer_id}",
|
|
156
|
-
body=maybe_transform(
|
|
157
|
-
{
|
|
158
|
-
"name": name,
|
|
159
|
-
"phone_number": phone_number,
|
|
160
|
-
},
|
|
161
|
-
customer_update_params.CustomerUpdateParams,
|
|
162
|
-
),
|
|
163
154
|
options=make_request_options(
|
|
164
155
|
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
|
165
156
|
),
|
|
@@ -310,8 +301,6 @@ class AsyncCustomersResource(AsyncAPIResource):
|
|
|
310
301
|
self,
|
|
311
302
|
customer_id: str,
|
|
312
303
|
*,
|
|
313
|
-
name: Optional[str] | NotGiven = NOT_GIVEN,
|
|
314
|
-
phone_number: Optional[str] | NotGiven = NOT_GIVEN,
|
|
315
304
|
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
|
316
305
|
# The extra values given here take precedence over values defined on the client or passed to this method.
|
|
317
306
|
extra_headers: Headers | None = None,
|
|
@@ -333,13 +322,6 @@ class AsyncCustomersResource(AsyncAPIResource):
|
|
|
333
322
|
raise ValueError(f"Expected a non-empty value for `customer_id` but received {customer_id!r}")
|
|
334
323
|
return await self._patch(
|
|
335
324
|
f"/customers/{customer_id}",
|
|
336
|
-
body=await async_maybe_transform(
|
|
337
|
-
{
|
|
338
|
-
"name": name,
|
|
339
|
-
"phone_number": phone_number,
|
|
340
|
-
},
|
|
341
|
-
customer_update_params.CustomerUpdateParams,
|
|
342
|
-
),
|
|
343
325
|
options=make_request_options(
|
|
344
326
|
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
|
345
327
|
),
|
|
@@ -15,7 +15,6 @@ from ..types import (
|
|
|
15
15
|
subscription_charge_params,
|
|
16
16
|
subscription_create_params,
|
|
17
17
|
subscription_update_params,
|
|
18
|
-
subscription_change_plan_params,
|
|
19
18
|
)
|
|
20
19
|
from .._types import NOT_GIVEN, Body, Query, Headers, NoneType, NotGiven
|
|
21
20
|
from .._utils import maybe_transform, async_maybe_transform
|
|
@@ -321,10 +320,6 @@ class SubscriptionsResource(SyncAPIResource):
|
|
|
321
320
|
self,
|
|
322
321
|
subscription_id: str,
|
|
323
322
|
*,
|
|
324
|
-
product_id: str,
|
|
325
|
-
proration_billing_mode: Literal["prorated_immediately"],
|
|
326
|
-
quantity: int,
|
|
327
|
-
addons: Optional[Iterable[subscription_change_plan_params.Addon]] | NotGiven = NOT_GIVEN,
|
|
328
323
|
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
|
329
324
|
# The extra values given here take precedence over values defined on the client or passed to this method.
|
|
330
325
|
extra_headers: Headers | None = None,
|
|
@@ -334,13 +329,6 @@ class SubscriptionsResource(SyncAPIResource):
|
|
|
334
329
|
) -> None:
|
|
335
330
|
"""
|
|
336
331
|
Args:
|
|
337
|
-
product_id: Unique identifier of the product to subscribe to
|
|
338
|
-
|
|
339
|
-
quantity: Number of units to subscribe for. Must be at least 1.
|
|
340
|
-
|
|
341
|
-
addons: Addons for the new plan. Note : Leaving this empty would remove any existing
|
|
342
|
-
addons
|
|
343
|
-
|
|
344
332
|
extra_headers: Send extra headers
|
|
345
333
|
|
|
346
334
|
extra_query: Add additional query parameters to the request
|
|
@@ -354,15 +342,6 @@ class SubscriptionsResource(SyncAPIResource):
|
|
|
354
342
|
extra_headers = {"Accept": "*/*", **(extra_headers or {})}
|
|
355
343
|
return self._post(
|
|
356
344
|
f"/subscriptions/{subscription_id}/change-plan",
|
|
357
|
-
body=maybe_transform(
|
|
358
|
-
{
|
|
359
|
-
"product_id": product_id,
|
|
360
|
-
"proration_billing_mode": proration_billing_mode,
|
|
361
|
-
"quantity": quantity,
|
|
362
|
-
"addons": addons,
|
|
363
|
-
},
|
|
364
|
-
subscription_change_plan_params.SubscriptionChangePlanParams,
|
|
365
|
-
),
|
|
366
345
|
options=make_request_options(
|
|
367
346
|
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
|
368
347
|
),
|
|
@@ -694,10 +673,6 @@ class AsyncSubscriptionsResource(AsyncAPIResource):
|
|
|
694
673
|
self,
|
|
695
674
|
subscription_id: str,
|
|
696
675
|
*,
|
|
697
|
-
product_id: str,
|
|
698
|
-
proration_billing_mode: Literal["prorated_immediately"],
|
|
699
|
-
quantity: int,
|
|
700
|
-
addons: Optional[Iterable[subscription_change_plan_params.Addon]] | NotGiven = NOT_GIVEN,
|
|
701
676
|
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
|
702
677
|
# The extra values given here take precedence over values defined on the client or passed to this method.
|
|
703
678
|
extra_headers: Headers | None = None,
|
|
@@ -707,13 +682,6 @@ class AsyncSubscriptionsResource(AsyncAPIResource):
|
|
|
707
682
|
) -> None:
|
|
708
683
|
"""
|
|
709
684
|
Args:
|
|
710
|
-
product_id: Unique identifier of the product to subscribe to
|
|
711
|
-
|
|
712
|
-
quantity: Number of units to subscribe for. Must be at least 1.
|
|
713
|
-
|
|
714
|
-
addons: Addons for the new plan. Note : Leaving this empty would remove any existing
|
|
715
|
-
addons
|
|
716
|
-
|
|
717
685
|
extra_headers: Send extra headers
|
|
718
686
|
|
|
719
687
|
extra_query: Add additional query parameters to the request
|
|
@@ -727,15 +695,6 @@ class AsyncSubscriptionsResource(AsyncAPIResource):
|
|
|
727
695
|
extra_headers = {"Accept": "*/*", **(extra_headers or {})}
|
|
728
696
|
return await self._post(
|
|
729
697
|
f"/subscriptions/{subscription_id}/change-plan",
|
|
730
|
-
body=await async_maybe_transform(
|
|
731
|
-
{
|
|
732
|
-
"product_id": product_id,
|
|
733
|
-
"proration_billing_mode": proration_billing_mode,
|
|
734
|
-
"quantity": quantity,
|
|
735
|
-
"addons": addons,
|
|
736
|
-
},
|
|
737
|
-
subscription_change_plan_params.SubscriptionChangePlanParams,
|
|
738
|
-
),
|
|
739
698
|
options=make_request_options(
|
|
740
699
|
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
|
741
700
|
),
|
|
@@ -54,7 +54,6 @@ from .product_list_response import ProductListResponse as ProductListResponse
|
|
|
54
54
|
from .product_update_params import ProductUpdateParams as ProductUpdateParams
|
|
55
55
|
from .customer_create_params import CustomerCreateParams as CustomerCreateParams
|
|
56
56
|
from .customer_request_param import CustomerRequestParam as CustomerRequestParam
|
|
57
|
-
from .customer_update_params import CustomerUpdateParams as CustomerUpdateParams
|
|
58
57
|
from .discount_create_params import DiscountCreateParams as DiscountCreateParams
|
|
59
58
|
from .discount_update_params import DiscountUpdateParams as DiscountUpdateParams
|
|
60
59
|
from .brand_retrieve_response import BrandRetrieveResponse as BrandRetrieveResponse
|
|
@@ -83,7 +82,6 @@ from .brand_update_images_response import BrandUpdateImagesResponse as BrandUpda
|
|
|
83
82
|
from .subscription_charge_response import SubscriptionChargeResponse as SubscriptionChargeResponse
|
|
84
83
|
from .subscription_create_response import SubscriptionCreateResponse as SubscriptionCreateResponse
|
|
85
84
|
from .attach_existing_customer_param import AttachExistingCustomerParam as AttachExistingCustomerParam
|
|
86
|
-
from .subscription_change_plan_params import SubscriptionChangePlanParams as SubscriptionChangePlanParams
|
|
87
85
|
from .license_key_instance_list_params import LicenseKeyInstanceListParams as LicenseKeyInstanceListParams
|
|
88
86
|
from .one_time_product_cart_item_param import OneTimeProductCartItemParam as OneTimeProductCartItemParam
|
|
89
87
|
from .license_key_instance_update_params import LicenseKeyInstanceUpdateParams as LicenseKeyInstanceUpdateParams
|
|
@@ -78,6 +78,9 @@ class Payment(BaseModel):
|
|
|
78
78
|
discount_id: Optional[str] = None
|
|
79
79
|
"""The discount id if discount is applied"""
|
|
80
80
|
|
|
81
|
+
error_code: Optional[str] = None
|
|
82
|
+
"""An error code if the payment failed"""
|
|
83
|
+
|
|
81
84
|
error_message: Optional[str] = None
|
|
82
85
|
"""An error message if the payment failed"""
|
|
83
86
|
|
|
@@ -102,23 +102,14 @@ class TestCustomers:
|
|
|
102
102
|
@parametrize
|
|
103
103
|
def test_method_update(self, client: DodoPayments) -> None:
|
|
104
104
|
customer = client.customers.update(
|
|
105
|
-
|
|
106
|
-
)
|
|
107
|
-
assert_matches_type(Customer, customer, path=["response"])
|
|
108
|
-
|
|
109
|
-
@parametrize
|
|
110
|
-
def test_method_update_with_all_params(self, client: DodoPayments) -> None:
|
|
111
|
-
customer = client.customers.update(
|
|
112
|
-
customer_id="customer_id",
|
|
113
|
-
name="name",
|
|
114
|
-
phone_number="phone_number",
|
|
105
|
+
"customer_id",
|
|
115
106
|
)
|
|
116
107
|
assert_matches_type(Customer, customer, path=["response"])
|
|
117
108
|
|
|
118
109
|
@parametrize
|
|
119
110
|
def test_raw_response_update(self, client: DodoPayments) -> None:
|
|
120
111
|
response = client.customers.with_raw_response.update(
|
|
121
|
-
|
|
112
|
+
"customer_id",
|
|
122
113
|
)
|
|
123
114
|
|
|
124
115
|
assert response.is_closed is True
|
|
@@ -129,7 +120,7 @@ class TestCustomers:
|
|
|
129
120
|
@parametrize
|
|
130
121
|
def test_streaming_response_update(self, client: DodoPayments) -> None:
|
|
131
122
|
with client.customers.with_streaming_response.update(
|
|
132
|
-
|
|
123
|
+
"customer_id",
|
|
133
124
|
) as response:
|
|
134
125
|
assert not response.is_closed
|
|
135
126
|
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
|
|
@@ -143,7 +134,7 @@ class TestCustomers:
|
|
|
143
134
|
def test_path_params_update(self, client: DodoPayments) -> None:
|
|
144
135
|
with pytest.raises(ValueError, match=r"Expected a non-empty value for `customer_id` but received ''"):
|
|
145
136
|
client.customers.with_raw_response.update(
|
|
146
|
-
|
|
137
|
+
"",
|
|
147
138
|
)
|
|
148
139
|
|
|
149
140
|
@parametrize
|
|
@@ -267,23 +258,14 @@ class TestAsyncCustomers:
|
|
|
267
258
|
@parametrize
|
|
268
259
|
async def test_method_update(self, async_client: AsyncDodoPayments) -> None:
|
|
269
260
|
customer = await async_client.customers.update(
|
|
270
|
-
|
|
271
|
-
)
|
|
272
|
-
assert_matches_type(Customer, customer, path=["response"])
|
|
273
|
-
|
|
274
|
-
@parametrize
|
|
275
|
-
async def test_method_update_with_all_params(self, async_client: AsyncDodoPayments) -> None:
|
|
276
|
-
customer = await async_client.customers.update(
|
|
277
|
-
customer_id="customer_id",
|
|
278
|
-
name="name",
|
|
279
|
-
phone_number="phone_number",
|
|
261
|
+
"customer_id",
|
|
280
262
|
)
|
|
281
263
|
assert_matches_type(Customer, customer, path=["response"])
|
|
282
264
|
|
|
283
265
|
@parametrize
|
|
284
266
|
async def test_raw_response_update(self, async_client: AsyncDodoPayments) -> None:
|
|
285
267
|
response = await async_client.customers.with_raw_response.update(
|
|
286
|
-
|
|
268
|
+
"customer_id",
|
|
287
269
|
)
|
|
288
270
|
|
|
289
271
|
assert response.is_closed is True
|
|
@@ -294,7 +276,7 @@ class TestAsyncCustomers:
|
|
|
294
276
|
@parametrize
|
|
295
277
|
async def test_streaming_response_update(self, async_client: AsyncDodoPayments) -> None:
|
|
296
278
|
async with async_client.customers.with_streaming_response.update(
|
|
297
|
-
|
|
279
|
+
"customer_id",
|
|
298
280
|
) as response:
|
|
299
281
|
assert not response.is_closed
|
|
300
282
|
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
|
|
@@ -308,7 +290,7 @@ class TestAsyncCustomers:
|
|
|
308
290
|
async def test_path_params_update(self, async_client: AsyncDodoPayments) -> None:
|
|
309
291
|
with pytest.raises(ValueError, match=r"Expected a non-empty value for `customer_id` but received ''"):
|
|
310
292
|
await async_client.customers.with_raw_response.update(
|
|
311
|
-
|
|
293
|
+
"",
|
|
312
294
|
)
|
|
313
295
|
|
|
314
296
|
@parametrize
|
|
@@ -254,36 +254,14 @@ class TestSubscriptions:
|
|
|
254
254
|
@parametrize
|
|
255
255
|
def test_method_change_plan(self, client: DodoPayments) -> None:
|
|
256
256
|
subscription = client.subscriptions.change_plan(
|
|
257
|
-
|
|
258
|
-
product_id="product_id",
|
|
259
|
-
proration_billing_mode="prorated_immediately",
|
|
260
|
-
quantity=0,
|
|
261
|
-
)
|
|
262
|
-
assert subscription is None
|
|
263
|
-
|
|
264
|
-
@parametrize
|
|
265
|
-
def test_method_change_plan_with_all_params(self, client: DodoPayments) -> None:
|
|
266
|
-
subscription = client.subscriptions.change_plan(
|
|
267
|
-
subscription_id="subscription_id",
|
|
268
|
-
product_id="product_id",
|
|
269
|
-
proration_billing_mode="prorated_immediately",
|
|
270
|
-
quantity=0,
|
|
271
|
-
addons=[
|
|
272
|
-
{
|
|
273
|
-
"addon_id": "addon_id",
|
|
274
|
-
"quantity": 0,
|
|
275
|
-
}
|
|
276
|
-
],
|
|
257
|
+
"subscription_id",
|
|
277
258
|
)
|
|
278
259
|
assert subscription is None
|
|
279
260
|
|
|
280
261
|
@parametrize
|
|
281
262
|
def test_raw_response_change_plan(self, client: DodoPayments) -> None:
|
|
282
263
|
response = client.subscriptions.with_raw_response.change_plan(
|
|
283
|
-
|
|
284
|
-
product_id="product_id",
|
|
285
|
-
proration_billing_mode="prorated_immediately",
|
|
286
|
-
quantity=0,
|
|
264
|
+
"subscription_id",
|
|
287
265
|
)
|
|
288
266
|
|
|
289
267
|
assert response.is_closed is True
|
|
@@ -294,10 +272,7 @@ class TestSubscriptions:
|
|
|
294
272
|
@parametrize
|
|
295
273
|
def test_streaming_response_change_plan(self, client: DodoPayments) -> None:
|
|
296
274
|
with client.subscriptions.with_streaming_response.change_plan(
|
|
297
|
-
|
|
298
|
-
product_id="product_id",
|
|
299
|
-
proration_billing_mode="prorated_immediately",
|
|
300
|
-
quantity=0,
|
|
275
|
+
"subscription_id",
|
|
301
276
|
) as response:
|
|
302
277
|
assert not response.is_closed
|
|
303
278
|
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
|
|
@@ -311,10 +286,7 @@ class TestSubscriptions:
|
|
|
311
286
|
def test_path_params_change_plan(self, client: DodoPayments) -> None:
|
|
312
287
|
with pytest.raises(ValueError, match=r"Expected a non-empty value for `subscription_id` but received ''"):
|
|
313
288
|
client.subscriptions.with_raw_response.change_plan(
|
|
314
|
-
|
|
315
|
-
product_id="product_id",
|
|
316
|
-
proration_billing_mode="prorated_immediately",
|
|
317
|
-
quantity=0,
|
|
289
|
+
"",
|
|
318
290
|
)
|
|
319
291
|
|
|
320
292
|
@parametrize
|
|
@@ -602,36 +574,14 @@ class TestAsyncSubscriptions:
|
|
|
602
574
|
@parametrize
|
|
603
575
|
async def test_method_change_plan(self, async_client: AsyncDodoPayments) -> None:
|
|
604
576
|
subscription = await async_client.subscriptions.change_plan(
|
|
605
|
-
|
|
606
|
-
product_id="product_id",
|
|
607
|
-
proration_billing_mode="prorated_immediately",
|
|
608
|
-
quantity=0,
|
|
609
|
-
)
|
|
610
|
-
assert subscription is None
|
|
611
|
-
|
|
612
|
-
@parametrize
|
|
613
|
-
async def test_method_change_plan_with_all_params(self, async_client: AsyncDodoPayments) -> None:
|
|
614
|
-
subscription = await async_client.subscriptions.change_plan(
|
|
615
|
-
subscription_id="subscription_id",
|
|
616
|
-
product_id="product_id",
|
|
617
|
-
proration_billing_mode="prorated_immediately",
|
|
618
|
-
quantity=0,
|
|
619
|
-
addons=[
|
|
620
|
-
{
|
|
621
|
-
"addon_id": "addon_id",
|
|
622
|
-
"quantity": 0,
|
|
623
|
-
}
|
|
624
|
-
],
|
|
577
|
+
"subscription_id",
|
|
625
578
|
)
|
|
626
579
|
assert subscription is None
|
|
627
580
|
|
|
628
581
|
@parametrize
|
|
629
582
|
async def test_raw_response_change_plan(self, async_client: AsyncDodoPayments) -> None:
|
|
630
583
|
response = await async_client.subscriptions.with_raw_response.change_plan(
|
|
631
|
-
|
|
632
|
-
product_id="product_id",
|
|
633
|
-
proration_billing_mode="prorated_immediately",
|
|
634
|
-
quantity=0,
|
|
584
|
+
"subscription_id",
|
|
635
585
|
)
|
|
636
586
|
|
|
637
587
|
assert response.is_closed is True
|
|
@@ -642,10 +592,7 @@ class TestAsyncSubscriptions:
|
|
|
642
592
|
@parametrize
|
|
643
593
|
async def test_streaming_response_change_plan(self, async_client: AsyncDodoPayments) -> None:
|
|
644
594
|
async with async_client.subscriptions.with_streaming_response.change_plan(
|
|
645
|
-
|
|
646
|
-
product_id="product_id",
|
|
647
|
-
proration_billing_mode="prorated_immediately",
|
|
648
|
-
quantity=0,
|
|
595
|
+
"subscription_id",
|
|
649
596
|
) as response:
|
|
650
597
|
assert not response.is_closed
|
|
651
598
|
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
|
|
@@ -659,10 +606,7 @@ class TestAsyncSubscriptions:
|
|
|
659
606
|
async def test_path_params_change_plan(self, async_client: AsyncDodoPayments) -> None:
|
|
660
607
|
with pytest.raises(ValueError, match=r"Expected a non-empty value for `subscription_id` but received ''"):
|
|
661
608
|
await async_client.subscriptions.with_raw_response.change_plan(
|
|
662
|
-
|
|
663
|
-
product_id="product_id",
|
|
664
|
-
proration_billing_mode="prorated_immediately",
|
|
665
|
-
quantity=0,
|
|
609
|
+
"",
|
|
666
610
|
)
|
|
667
611
|
|
|
668
612
|
@parametrize
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
|
-
|
|
3
|
-
from __future__ import annotations
|
|
4
|
-
|
|
5
|
-
from typing import Optional
|
|
6
|
-
from typing_extensions import TypedDict
|
|
7
|
-
|
|
8
|
-
__all__ = ["CustomerUpdateParams"]
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
class CustomerUpdateParams(TypedDict, total=False):
|
|
12
|
-
name: Optional[str]
|
|
13
|
-
|
|
14
|
-
phone_number: Optional[str]
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
|
-
|
|
3
|
-
from __future__ import annotations
|
|
4
|
-
|
|
5
|
-
from typing import Iterable, Optional
|
|
6
|
-
from typing_extensions import Literal, Required, TypedDict
|
|
7
|
-
|
|
8
|
-
__all__ = ["SubscriptionChangePlanParams", "Addon"]
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
class SubscriptionChangePlanParams(TypedDict, total=False):
|
|
12
|
-
product_id: Required[str]
|
|
13
|
-
"""Unique identifier of the product to subscribe to"""
|
|
14
|
-
|
|
15
|
-
proration_billing_mode: Required[Literal["prorated_immediately"]]
|
|
16
|
-
|
|
17
|
-
quantity: Required[int]
|
|
18
|
-
"""Number of units to subscribe for. Must be at least 1."""
|
|
19
|
-
|
|
20
|
-
addons: Optional[Iterable[Addon]]
|
|
21
|
-
"""
|
|
22
|
-
Addons for the new plan. Note : Leaving this empty would remove any existing
|
|
23
|
-
addons
|
|
24
|
-
"""
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
class Addon(TypedDict, total=False):
|
|
28
|
-
addon_id: Required[str]
|
|
29
|
-
|
|
30
|
-
quantity: Required[int]
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/resources/customers/__init__.py
RENAMED
|
File without changes
|
{dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/resources/customers/customer_portal.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dodopayments-1.27.0 → dodopayments-1.30.0}/src/dodopayments/resources/license_key_instances.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|