dodopayments 1.30.0__tar.gz → 1.32.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.32.0/.release-please-manifest.json +3 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/CHANGELOG.md +22 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/CONTRIBUTING.md +1 -2
- {dodopayments-1.30.0 → dodopayments-1.32.0}/PKG-INFO +1 -1
- {dodopayments-1.30.0 → dodopayments-1.32.0}/api.md +2 -2
- {dodopayments-1.30.0 → dodopayments-1.32.0}/pyproject.toml +1 -1
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/_base_client.py +6 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/_models.py +2 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/_types.py +2 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/_version.py +1 -1
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/resources/customers/customers.py +19 -1
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/resources/subscriptions.py +45 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/resources/webhook_events.py +8 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/types/__init__.py +2 -0
- dodopayments-1.32.0/src/dodopayments/types/customer_update_params.py +14 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/types/subscription.py +3 -0
- dodopayments-1.32.0/src/dodopayments/types/subscription_change_plan_params.py +30 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/types/subscription_list_response.py +3 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/types/subscription_update_params.py +2 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/types/webhook_event_list_params.py +3 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/tests/api_resources/test_customers.py +26 -8
- {dodopayments-1.30.0 → dodopayments-1.32.0}/tests/api_resources/test_subscriptions.py +66 -8
- {dodopayments-1.30.0 → dodopayments-1.32.0}/tests/api_resources/test_webhook_events.py +2 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/tests/test_client.py +54 -0
- dodopayments-1.30.0/.release-please-manifest.json +0 -3
- {dodopayments-1.30.0 → dodopayments-1.32.0}/.gitignore +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/LICENSE +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/README.md +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/SECURITY.md +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/bin/check-release-environment +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/bin/publish-pypi +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/examples/.keep +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/mypy.ini +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/noxfile.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/release-please-config.json +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/requirements-dev.lock +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/requirements.lock +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodo_payments/lib/.keep +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/__init__.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/_client.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/_compat.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/_constants.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/_exceptions.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/_files.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/_qs.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/_resource.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/_response.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/_streaming.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/_utils/__init__.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/_utils/_logs.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/_utils/_proxy.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/_utils/_reflection.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/_utils/_resources_proxy.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/_utils/_streams.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/_utils/_sync.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/_utils/_transform.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/_utils/_typing.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/_utils/_utils.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/lib/.keep +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/pagination.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/py.typed +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/resources/__init__.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/resources/addons.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/resources/brands.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/resources/customers/__init__.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/resources/customers/customer_portal.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/resources/discounts.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/resources/disputes.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/resources/invoices/__init__.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/resources/invoices/invoices.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/resources/invoices/payments.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/resources/license_key_instances.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/resources/license_keys.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/resources/licenses.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/resources/misc.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/resources/payments.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/resources/payouts.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/resources/products/__init__.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/resources/products/images.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/resources/products/products.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/resources/refunds.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/types/addon_cart_response_item.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/types/addon_create_params.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/types/addon_list_params.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/types/addon_response.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/types/addon_update_images_response.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/types/addon_update_params.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/types/attach_existing_customer_param.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/types/billing_address.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/types/billing_address_param.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/types/brand_create_params.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/types/brand_create_response.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/types/brand_list_response.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/types/brand_retrieve_response.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/types/brand_update_images_response.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/types/brand_update_params.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/types/brand_update_response.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/types/country_code.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/types/create_new_customer_param.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/types/currency.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/types/customer.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/types/customer_create_params.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/types/customer_limited_details.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/types/customer_list_params.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/types/customer_portal_session.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/types/customer_request_param.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/types/customers/__init__.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/types/customers/customer_portal_create_params.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/types/discount.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/types/discount_create_params.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/types/discount_list_params.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/types/discount_type.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/types/discount_update_params.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/types/dispute.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/types/dispute_list_params.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/types/dispute_list_response.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/types/dispute_retrieve_response.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/types/dispute_stage.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/types/dispute_status.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/types/intent_status.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/types/invoices/__init__.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/types/license_activate_params.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/types/license_deactivate_params.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/types/license_key.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/types/license_key_duration.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/types/license_key_duration_param.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/types/license_key_instance.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/types/license_key_instance_list_params.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/types/license_key_instance_update_params.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/types/license_key_list_params.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/types/license_key_status.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/types/license_key_update_params.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/types/license_validate_params.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/types/license_validate_response.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/types/misc_list_supported_countries_response.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/types/one_time_product_cart_item.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/types/one_time_product_cart_item_param.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/types/payment.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/types/payment_create_params.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/types/payment_create_response.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/types/payment_list_params.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/types/payment_list_response.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/types/payment_retrieve_line_items_response.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/types/payout_list_params.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/types/payout_list_response.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/types/price.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/types/price_param.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/types/product.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/types/product_create_params.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/types/product_list_params.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/types/product_list_response.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/types/product_update_params.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/types/products/__init__.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/types/products/image_update_params.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/types/products/image_update_response.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/types/refund.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/types/refund_create_params.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/types/refund_list_params.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/types/refund_status.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/types/subscription_charge_params.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/types/subscription_charge_response.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/types/subscription_create_params.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/types/subscription_create_response.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/types/subscription_list_params.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/types/subscription_status.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/types/tax_category.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/types/time_interval.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/types/webhook_event.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/tests/__init__.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/tests/api_resources/__init__.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/tests/api_resources/customers/__init__.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/tests/api_resources/customers/test_customer_portal.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/tests/api_resources/invoices/__init__.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/tests/api_resources/invoices/test_payments.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/tests/api_resources/products/__init__.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/tests/api_resources/products/test_images.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/tests/api_resources/test_addons.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/tests/api_resources/test_brands.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/tests/api_resources/test_discounts.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/tests/api_resources/test_disputes.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/tests/api_resources/test_license_key_instances.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/tests/api_resources/test_license_keys.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/tests/api_resources/test_licenses.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/tests/api_resources/test_misc.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/tests/api_resources/test_payments.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/tests/api_resources/test_payouts.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/tests/api_resources/test_products.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/tests/api_resources/test_refunds.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/tests/conftest.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/tests/sample_file.txt +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/tests/test_deepcopy.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/tests/test_extract_files.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/tests/test_files.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/tests/test_models.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/tests/test_qs.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/tests/test_required_args.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/tests/test_response.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/tests/test_streaming.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/tests/test_transform.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/tests/test_utils/test_proxy.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/tests/test_utils/test_typing.py +0 -0
- {dodopayments-1.30.0 → dodopayments-1.32.0}/tests/utils.py +0 -0
|
@@ -1,5 +1,27 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 1.32.0 (2025-06-09)
|
|
4
|
+
|
|
5
|
+
Full Changelog: [v1.30.2...v1.32.0](https://github.com/dodopayments/dodopayments-python/compare/v1.30.2...v1.32.0)
|
|
6
|
+
|
|
7
|
+
### Features
|
|
8
|
+
|
|
9
|
+
* **api:** updated openapi spec to v1.32.0 ([b482016](https://github.com/dodopayments/dodopayments-python/commit/b48201636b68d5b81d37b0e3eb00ccdf068f47f9))
|
|
10
|
+
|
|
11
|
+
## 1.30.2 (2025-06-04)
|
|
12
|
+
|
|
13
|
+
Full Changelog: [v1.30.0...v1.30.2](https://github.com/dodopayments/dodopayments-python/compare/v1.30.0...v1.30.2)
|
|
14
|
+
|
|
15
|
+
### Features
|
|
16
|
+
|
|
17
|
+
* **api:** fixed openapi spec ([15906d8](https://github.com/dodopayments/dodopayments-python/commit/15906d809eb6ab659e3b60ee1b5c92b3716c6730))
|
|
18
|
+
* **client:** add follow_redirects request option ([fb63495](https://github.com/dodopayments/dodopayments-python/commit/fb63495b183be3cbe1c4d0eacfdfaeb7f00653e0))
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
### Chores
|
|
22
|
+
|
|
23
|
+
* **docs:** remove reference to rye shell ([865a4ac](https://github.com/dodopayments/dodopayments-python/commit/865a4acfec4f830bc4209267a7d937dba0c401be))
|
|
24
|
+
|
|
3
25
|
## 1.30.0 (2025-06-02)
|
|
4
26
|
|
|
5
27
|
Full Changelog: [v1.27.0...v1.30.0](https://github.com/dodopayments/dodopayments-python/compare/v1.27.0...v1.30.0)
|
|
@@ -17,8 +17,7 @@ $ rye sync --all-features
|
|
|
17
17
|
You can then run scripts using `rye run python script.py` or by activating the virtual environment:
|
|
18
18
|
|
|
19
19
|
```sh
|
|
20
|
-
|
|
21
|
-
# or manually activate - https://docs.python.org/3/library/venv.html#how-venvs-work
|
|
20
|
+
# Activate the virtual environment - https://docs.python.org/3/library/venv.html#how-venvs-work
|
|
22
21
|
$ source .venv/bin/activate
|
|
23
22
|
|
|
24
23
|
# now you can omit the `rye run` prefix
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: dodopayments
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.32.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) -> None</code>
|
|
50
|
+
- <code title="post /subscriptions/{subscription_id}/change-plan">client.subscriptions.<a href="./src/dodopayments/resources/subscriptions.py">change_plan</a>(subscription_id, \*\*<a href="src/dodopayments/types/subscription_change_plan_params.py">params</a>) -> 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) -> <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, \*\*<a href="src/dodopayments/types/customer_update_params.py">params</a>) -> <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
|
|
@@ -960,6 +960,9 @@ class SyncAPIClient(BaseClient[httpx.Client, Stream[Any]]):
|
|
|
960
960
|
if self.custom_auth is not None:
|
|
961
961
|
kwargs["auth"] = self.custom_auth
|
|
962
962
|
|
|
963
|
+
if options.follow_redirects is not None:
|
|
964
|
+
kwargs["follow_redirects"] = options.follow_redirects
|
|
965
|
+
|
|
963
966
|
log.debug("Sending HTTP Request: %s %s", request.method, request.url)
|
|
964
967
|
|
|
965
968
|
response = None
|
|
@@ -1460,6 +1463,9 @@ class AsyncAPIClient(BaseClient[httpx.AsyncClient, AsyncStream[Any]]):
|
|
|
1460
1463
|
if self.custom_auth is not None:
|
|
1461
1464
|
kwargs["auth"] = self.custom_auth
|
|
1462
1465
|
|
|
1466
|
+
if options.follow_redirects is not None:
|
|
1467
|
+
kwargs["follow_redirects"] = options.follow_redirects
|
|
1468
|
+
|
|
1463
1469
|
log.debug("Sending HTTP Request: %s %s", request.method, request.url)
|
|
1464
1470
|
|
|
1465
1471
|
response = None
|
|
@@ -737,6 +737,7 @@ class FinalRequestOptionsInput(TypedDict, total=False):
|
|
|
737
737
|
idempotency_key: str
|
|
738
738
|
json_data: Body
|
|
739
739
|
extra_json: AnyMapping
|
|
740
|
+
follow_redirects: bool
|
|
740
741
|
|
|
741
742
|
|
|
742
743
|
@final
|
|
@@ -750,6 +751,7 @@ class FinalRequestOptions(pydantic.BaseModel):
|
|
|
750
751
|
files: Union[HttpxRequestFiles, None] = None
|
|
751
752
|
idempotency_key: Union[str, None] = None
|
|
752
753
|
post_parser: Union[Callable[[Any], Any], NotGiven] = NotGiven()
|
|
754
|
+
follow_redirects: Union[bool, None] = None
|
|
753
755
|
|
|
754
756
|
# It should be noted that we cannot use `json` here as that would override
|
|
755
757
|
# a BaseModel method in an incompatible fashion.
|
|
@@ -100,6 +100,7 @@ class RequestOptions(TypedDict, total=False):
|
|
|
100
100
|
params: Query
|
|
101
101
|
extra_json: AnyMapping
|
|
102
102
|
idempotency_key: str
|
|
103
|
+
follow_redirects: bool
|
|
103
104
|
|
|
104
105
|
|
|
105
106
|
# Sentinel class used until PEP 0661 is accepted
|
|
@@ -215,3 +216,4 @@ class _GenericAlias(Protocol):
|
|
|
215
216
|
|
|
216
217
|
class HttpxSendArgs(TypedDict, total=False):
|
|
217
218
|
auth: httpx.Auth
|
|
219
|
+
follow_redirects: bool
|
{dodopayments-1.30.0 → dodopayments-1.32.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, customer_update_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,6 +130,8 @@ 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,
|
|
133
135
|
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
|
134
136
|
# The extra values given here take precedence over values defined on the client or passed to this method.
|
|
135
137
|
extra_headers: Headers | None = None,
|
|
@@ -151,6 +153,13 @@ class CustomersResource(SyncAPIResource):
|
|
|
151
153
|
raise ValueError(f"Expected a non-empty value for `customer_id` but received {customer_id!r}")
|
|
152
154
|
return self._patch(
|
|
153
155
|
f"/customers/{customer_id}",
|
|
156
|
+
body=maybe_transform(
|
|
157
|
+
{
|
|
158
|
+
"name": name,
|
|
159
|
+
"phone_number": phone_number,
|
|
160
|
+
},
|
|
161
|
+
customer_update_params.CustomerUpdateParams,
|
|
162
|
+
),
|
|
154
163
|
options=make_request_options(
|
|
155
164
|
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
|
156
165
|
),
|
|
@@ -301,6 +310,8 @@ class AsyncCustomersResource(AsyncAPIResource):
|
|
|
301
310
|
self,
|
|
302
311
|
customer_id: str,
|
|
303
312
|
*,
|
|
313
|
+
name: Optional[str] | NotGiven = NOT_GIVEN,
|
|
314
|
+
phone_number: Optional[str] | NotGiven = NOT_GIVEN,
|
|
304
315
|
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
|
305
316
|
# The extra values given here take precedence over values defined on the client or passed to this method.
|
|
306
317
|
extra_headers: Headers | None = None,
|
|
@@ -322,6 +333,13 @@ class AsyncCustomersResource(AsyncAPIResource):
|
|
|
322
333
|
raise ValueError(f"Expected a non-empty value for `customer_id` but received {customer_id!r}")
|
|
323
334
|
return await self._patch(
|
|
324
335
|
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
|
+
),
|
|
325
343
|
options=make_request_options(
|
|
326
344
|
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
|
327
345
|
),
|
|
@@ -15,6 +15,7 @@ from ..types import (
|
|
|
15
15
|
subscription_charge_params,
|
|
16
16
|
subscription_create_params,
|
|
17
17
|
subscription_update_params,
|
|
18
|
+
subscription_change_plan_params,
|
|
18
19
|
)
|
|
19
20
|
from .._types import NOT_GIVEN, Body, Query, Headers, NoneType, NotGiven
|
|
20
21
|
from .._utils import maybe_transform, async_maybe_transform
|
|
@@ -210,6 +211,7 @@ class SubscriptionsResource(SyncAPIResource):
|
|
|
210
211
|
subscription_id: str,
|
|
211
212
|
*,
|
|
212
213
|
billing: Optional[BillingAddressParam] | NotGiven = NOT_GIVEN,
|
|
214
|
+
cancel_at_next_billing_date: Optional[bool] | NotGiven = NOT_GIVEN,
|
|
213
215
|
disable_on_demand: Optional[subscription_update_params.DisableOnDemand] | NotGiven = NOT_GIVEN,
|
|
214
216
|
metadata: Optional[Dict[str, str]] | NotGiven = NOT_GIVEN,
|
|
215
217
|
status: Optional[SubscriptionStatus] | NotGiven = NOT_GIVEN,
|
|
@@ -238,6 +240,7 @@ class SubscriptionsResource(SyncAPIResource):
|
|
|
238
240
|
body=maybe_transform(
|
|
239
241
|
{
|
|
240
242
|
"billing": billing,
|
|
243
|
+
"cancel_at_next_billing_date": cancel_at_next_billing_date,
|
|
241
244
|
"disable_on_demand": disable_on_demand,
|
|
242
245
|
"metadata": metadata,
|
|
243
246
|
"status": status,
|
|
@@ -320,6 +323,10 @@ class SubscriptionsResource(SyncAPIResource):
|
|
|
320
323
|
self,
|
|
321
324
|
subscription_id: str,
|
|
322
325
|
*,
|
|
326
|
+
product_id: str,
|
|
327
|
+
proration_billing_mode: Literal["prorated_immediately"],
|
|
328
|
+
quantity: int,
|
|
329
|
+
addons: Optional[Iterable[subscription_change_plan_params.Addon]] | NotGiven = NOT_GIVEN,
|
|
323
330
|
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
|
324
331
|
# The extra values given here take precedence over values defined on the client or passed to this method.
|
|
325
332
|
extra_headers: Headers | None = None,
|
|
@@ -329,6 +336,13 @@ class SubscriptionsResource(SyncAPIResource):
|
|
|
329
336
|
) -> None:
|
|
330
337
|
"""
|
|
331
338
|
Args:
|
|
339
|
+
product_id: Unique identifier of the product to subscribe to
|
|
340
|
+
|
|
341
|
+
quantity: Number of units to subscribe for. Must be at least 1.
|
|
342
|
+
|
|
343
|
+
addons: Addons for the new plan. Note : Leaving this empty would remove any existing
|
|
344
|
+
addons
|
|
345
|
+
|
|
332
346
|
extra_headers: Send extra headers
|
|
333
347
|
|
|
334
348
|
extra_query: Add additional query parameters to the request
|
|
@@ -342,6 +356,15 @@ class SubscriptionsResource(SyncAPIResource):
|
|
|
342
356
|
extra_headers = {"Accept": "*/*", **(extra_headers or {})}
|
|
343
357
|
return self._post(
|
|
344
358
|
f"/subscriptions/{subscription_id}/change-plan",
|
|
359
|
+
body=maybe_transform(
|
|
360
|
+
{
|
|
361
|
+
"product_id": product_id,
|
|
362
|
+
"proration_billing_mode": proration_billing_mode,
|
|
363
|
+
"quantity": quantity,
|
|
364
|
+
"addons": addons,
|
|
365
|
+
},
|
|
366
|
+
subscription_change_plan_params.SubscriptionChangePlanParams,
|
|
367
|
+
),
|
|
345
368
|
options=make_request_options(
|
|
346
369
|
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
|
347
370
|
),
|
|
@@ -563,6 +586,7 @@ class AsyncSubscriptionsResource(AsyncAPIResource):
|
|
|
563
586
|
subscription_id: str,
|
|
564
587
|
*,
|
|
565
588
|
billing: Optional[BillingAddressParam] | NotGiven = NOT_GIVEN,
|
|
589
|
+
cancel_at_next_billing_date: Optional[bool] | NotGiven = NOT_GIVEN,
|
|
566
590
|
disable_on_demand: Optional[subscription_update_params.DisableOnDemand] | NotGiven = NOT_GIVEN,
|
|
567
591
|
metadata: Optional[Dict[str, str]] | NotGiven = NOT_GIVEN,
|
|
568
592
|
status: Optional[SubscriptionStatus] | NotGiven = NOT_GIVEN,
|
|
@@ -591,6 +615,7 @@ class AsyncSubscriptionsResource(AsyncAPIResource):
|
|
|
591
615
|
body=await async_maybe_transform(
|
|
592
616
|
{
|
|
593
617
|
"billing": billing,
|
|
618
|
+
"cancel_at_next_billing_date": cancel_at_next_billing_date,
|
|
594
619
|
"disable_on_demand": disable_on_demand,
|
|
595
620
|
"metadata": metadata,
|
|
596
621
|
"status": status,
|
|
@@ -673,6 +698,10 @@ class AsyncSubscriptionsResource(AsyncAPIResource):
|
|
|
673
698
|
self,
|
|
674
699
|
subscription_id: str,
|
|
675
700
|
*,
|
|
701
|
+
product_id: str,
|
|
702
|
+
proration_billing_mode: Literal["prorated_immediately"],
|
|
703
|
+
quantity: int,
|
|
704
|
+
addons: Optional[Iterable[subscription_change_plan_params.Addon]] | NotGiven = NOT_GIVEN,
|
|
676
705
|
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
|
677
706
|
# The extra values given here take precedence over values defined on the client or passed to this method.
|
|
678
707
|
extra_headers: Headers | None = None,
|
|
@@ -682,6 +711,13 @@ class AsyncSubscriptionsResource(AsyncAPIResource):
|
|
|
682
711
|
) -> None:
|
|
683
712
|
"""
|
|
684
713
|
Args:
|
|
714
|
+
product_id: Unique identifier of the product to subscribe to
|
|
715
|
+
|
|
716
|
+
quantity: Number of units to subscribe for. Must be at least 1.
|
|
717
|
+
|
|
718
|
+
addons: Addons for the new plan. Note : Leaving this empty would remove any existing
|
|
719
|
+
addons
|
|
720
|
+
|
|
685
721
|
extra_headers: Send extra headers
|
|
686
722
|
|
|
687
723
|
extra_query: Add additional query parameters to the request
|
|
@@ -695,6 +731,15 @@ class AsyncSubscriptionsResource(AsyncAPIResource):
|
|
|
695
731
|
extra_headers = {"Accept": "*/*", **(extra_headers or {})}
|
|
696
732
|
return await self._post(
|
|
697
733
|
f"/subscriptions/{subscription_id}/change-plan",
|
|
734
|
+
body=await async_maybe_transform(
|
|
735
|
+
{
|
|
736
|
+
"product_id": product_id,
|
|
737
|
+
"proration_billing_mode": proration_billing_mode,
|
|
738
|
+
"quantity": quantity,
|
|
739
|
+
"addons": addons,
|
|
740
|
+
},
|
|
741
|
+
subscription_change_plan_params.SubscriptionChangePlanParams,
|
|
742
|
+
),
|
|
698
743
|
options=make_request_options(
|
|
699
744
|
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
|
700
745
|
),
|
|
@@ -85,6 +85,7 @@ class WebhookEventsResource(SyncAPIResource):
|
|
|
85
85
|
object_id: Optional[str] | NotGiven = NOT_GIVEN,
|
|
86
86
|
page_number: Optional[int] | NotGiven = NOT_GIVEN,
|
|
87
87
|
page_size: Optional[int] | NotGiven = NOT_GIVEN,
|
|
88
|
+
webhook_id: Optional[str] | NotGiven = NOT_GIVEN,
|
|
88
89
|
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
|
89
90
|
# The extra values given here take precedence over values defined on the client or passed to this method.
|
|
90
91
|
extra_headers: Headers | None = None,
|
|
@@ -106,6 +107,8 @@ class WebhookEventsResource(SyncAPIResource):
|
|
|
106
107
|
|
|
107
108
|
page_size: Page size default is 10 max is 100
|
|
108
109
|
|
|
110
|
+
webhook_id: Filter by webhook destination
|
|
111
|
+
|
|
109
112
|
extra_headers: Send extra headers
|
|
110
113
|
|
|
111
114
|
extra_query: Add additional query parameters to the request
|
|
@@ -130,6 +133,7 @@ class WebhookEventsResource(SyncAPIResource):
|
|
|
130
133
|
"object_id": object_id,
|
|
131
134
|
"page_number": page_number,
|
|
132
135
|
"page_size": page_size,
|
|
136
|
+
"webhook_id": webhook_id,
|
|
133
137
|
},
|
|
134
138
|
webhook_event_list_params.WebhookEventListParams,
|
|
135
139
|
),
|
|
@@ -198,6 +202,7 @@ class AsyncWebhookEventsResource(AsyncAPIResource):
|
|
|
198
202
|
object_id: Optional[str] | NotGiven = NOT_GIVEN,
|
|
199
203
|
page_number: Optional[int] | NotGiven = NOT_GIVEN,
|
|
200
204
|
page_size: Optional[int] | NotGiven = NOT_GIVEN,
|
|
205
|
+
webhook_id: Optional[str] | NotGiven = NOT_GIVEN,
|
|
201
206
|
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
|
202
207
|
# The extra values given here take precedence over values defined on the client or passed to this method.
|
|
203
208
|
extra_headers: Headers | None = None,
|
|
@@ -219,6 +224,8 @@ class AsyncWebhookEventsResource(AsyncAPIResource):
|
|
|
219
224
|
|
|
220
225
|
page_size: Page size default is 10 max is 100
|
|
221
226
|
|
|
227
|
+
webhook_id: Filter by webhook destination
|
|
228
|
+
|
|
222
229
|
extra_headers: Send extra headers
|
|
223
230
|
|
|
224
231
|
extra_query: Add additional query parameters to the request
|
|
@@ -243,6 +250,7 @@ class AsyncWebhookEventsResource(AsyncAPIResource):
|
|
|
243
250
|
"object_id": object_id,
|
|
244
251
|
"page_number": page_number,
|
|
245
252
|
"page_size": page_size,
|
|
253
|
+
"webhook_id": webhook_id,
|
|
246
254
|
},
|
|
247
255
|
webhook_event_list_params.WebhookEventListParams,
|
|
248
256
|
),
|
|
@@ -54,6 +54,7 @@ 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
|
|
57
58
|
from .discount_create_params import DiscountCreateParams as DiscountCreateParams
|
|
58
59
|
from .discount_update_params import DiscountUpdateParams as DiscountUpdateParams
|
|
59
60
|
from .brand_retrieve_response import BrandRetrieveResponse as BrandRetrieveResponse
|
|
@@ -82,6 +83,7 @@ from .brand_update_images_response import BrandUpdateImagesResponse as BrandUpda
|
|
|
82
83
|
from .subscription_charge_response import SubscriptionChargeResponse as SubscriptionChargeResponse
|
|
83
84
|
from .subscription_create_response import SubscriptionCreateResponse as SubscriptionCreateResponse
|
|
84
85
|
from .attach_existing_customer_param import AttachExistingCustomerParam as AttachExistingCustomerParam
|
|
86
|
+
from .subscription_change_plan_params import SubscriptionChangePlanParams as SubscriptionChangePlanParams
|
|
85
87
|
from .license_key_instance_list_params import LicenseKeyInstanceListParams as LicenseKeyInstanceListParams
|
|
86
88
|
from .one_time_product_cart_item_param import OneTimeProductCartItemParam as OneTimeProductCartItemParam
|
|
87
89
|
from .license_key_instance_update_params import LicenseKeyInstanceUpdateParams as LicenseKeyInstanceUpdateParams
|
|
@@ -0,0 +1,14 @@
|
|
|
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]
|
|
@@ -20,6 +20,9 @@ class Subscription(BaseModel):
|
|
|
20
20
|
|
|
21
21
|
billing: BillingAddress
|
|
22
22
|
|
|
23
|
+
cancel_at_next_billing_date: bool
|
|
24
|
+
"""Indicates if the subscription will cancel at the next billing date"""
|
|
25
|
+
|
|
23
26
|
created_at: datetime
|
|
24
27
|
"""Timestamp when the subscription was created"""
|
|
25
28
|
|
|
@@ -0,0 +1,30 @@
|
|
|
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]
|
{dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/types/subscription_list_response.py
RENAMED
|
@@ -16,6 +16,9 @@ __all__ = ["SubscriptionListResponse"]
|
|
|
16
16
|
class SubscriptionListResponse(BaseModel):
|
|
17
17
|
billing: BillingAddress
|
|
18
18
|
|
|
19
|
+
cancel_at_next_billing_date: bool
|
|
20
|
+
"""Indicates if the subscription will cancel at the next billing date"""
|
|
21
|
+
|
|
19
22
|
created_at: datetime
|
|
20
23
|
"""Timestamp when the subscription was created"""
|
|
21
24
|
|
{dodopayments-1.30.0 → dodopayments-1.32.0}/src/dodopayments/types/subscription_update_params.py
RENAMED
|
@@ -16,6 +16,8 @@ __all__ = ["SubscriptionUpdateParams", "DisableOnDemand"]
|
|
|
16
16
|
class SubscriptionUpdateParams(TypedDict, total=False):
|
|
17
17
|
billing: Optional[BillingAddressParam]
|
|
18
18
|
|
|
19
|
+
cancel_at_next_billing_date: Optional[bool]
|
|
20
|
+
|
|
19
21
|
disable_on_demand: Optional[DisableOnDemand]
|
|
20
22
|
|
|
21
23
|
metadata: Optional[Dict[str, str]]
|
|
@@ -102,14 +102,23 @@ class TestCustomers:
|
|
|
102
102
|
@parametrize
|
|
103
103
|
def test_method_update(self, client: DodoPayments) -> None:
|
|
104
104
|
customer = client.customers.update(
|
|
105
|
-
"customer_id",
|
|
105
|
+
customer_id="customer_id",
|
|
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",
|
|
106
115
|
)
|
|
107
116
|
assert_matches_type(Customer, customer, path=["response"])
|
|
108
117
|
|
|
109
118
|
@parametrize
|
|
110
119
|
def test_raw_response_update(self, client: DodoPayments) -> None:
|
|
111
120
|
response = client.customers.with_raw_response.update(
|
|
112
|
-
"customer_id",
|
|
121
|
+
customer_id="customer_id",
|
|
113
122
|
)
|
|
114
123
|
|
|
115
124
|
assert response.is_closed is True
|
|
@@ -120,7 +129,7 @@ class TestCustomers:
|
|
|
120
129
|
@parametrize
|
|
121
130
|
def test_streaming_response_update(self, client: DodoPayments) -> None:
|
|
122
131
|
with client.customers.with_streaming_response.update(
|
|
123
|
-
"customer_id",
|
|
132
|
+
customer_id="customer_id",
|
|
124
133
|
) as response:
|
|
125
134
|
assert not response.is_closed
|
|
126
135
|
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
|
|
@@ -134,7 +143,7 @@ class TestCustomers:
|
|
|
134
143
|
def test_path_params_update(self, client: DodoPayments) -> None:
|
|
135
144
|
with pytest.raises(ValueError, match=r"Expected a non-empty value for `customer_id` but received ''"):
|
|
136
145
|
client.customers.with_raw_response.update(
|
|
137
|
-
"",
|
|
146
|
+
customer_id="",
|
|
138
147
|
)
|
|
139
148
|
|
|
140
149
|
@parametrize
|
|
@@ -258,14 +267,23 @@ class TestAsyncCustomers:
|
|
|
258
267
|
@parametrize
|
|
259
268
|
async def test_method_update(self, async_client: AsyncDodoPayments) -> None:
|
|
260
269
|
customer = await async_client.customers.update(
|
|
261
|
-
"customer_id",
|
|
270
|
+
customer_id="customer_id",
|
|
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",
|
|
262
280
|
)
|
|
263
281
|
assert_matches_type(Customer, customer, path=["response"])
|
|
264
282
|
|
|
265
283
|
@parametrize
|
|
266
284
|
async def test_raw_response_update(self, async_client: AsyncDodoPayments) -> None:
|
|
267
285
|
response = await async_client.customers.with_raw_response.update(
|
|
268
|
-
"customer_id",
|
|
286
|
+
customer_id="customer_id",
|
|
269
287
|
)
|
|
270
288
|
|
|
271
289
|
assert response.is_closed is True
|
|
@@ -276,7 +294,7 @@ class TestAsyncCustomers:
|
|
|
276
294
|
@parametrize
|
|
277
295
|
async def test_streaming_response_update(self, async_client: AsyncDodoPayments) -> None:
|
|
278
296
|
async with async_client.customers.with_streaming_response.update(
|
|
279
|
-
"customer_id",
|
|
297
|
+
customer_id="customer_id",
|
|
280
298
|
) as response:
|
|
281
299
|
assert not response.is_closed
|
|
282
300
|
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
|
|
@@ -290,7 +308,7 @@ class TestAsyncCustomers:
|
|
|
290
308
|
async def test_path_params_update(self, async_client: AsyncDodoPayments) -> None:
|
|
291
309
|
with pytest.raises(ValueError, match=r"Expected a non-empty value for `customer_id` but received ''"):
|
|
292
310
|
await async_client.customers.with_raw_response.update(
|
|
293
|
-
"",
|
|
311
|
+
customer_id="",
|
|
294
312
|
)
|
|
295
313
|
|
|
296
314
|
@parametrize
|