dodopayments 1.30.2__tar.gz → 1.34.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.34.0/.release-please-manifest.json +3 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/CHANGELOG.md +31 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/PKG-INFO +2 -2
- {dodopayments-1.30.2 → dodopayments-1.34.0}/README.md +1 -1
- {dodopayments-1.30.2 → dodopayments-1.34.0}/api.md +8 -1
- {dodopayments-1.30.2 → dodopayments-1.34.0}/pyproject.toml +3 -2
- {dodopayments-1.30.2 → dodopayments-1.34.0}/requirements-dev.lock +4 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/_base_client.py +16 -2
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/_version.py +1 -1
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/resources/products/products.py +90 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/resources/subscriptions.py +6 -2
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/resources/webhook_events.py +8 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/__init__.py +2 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/payment.py +3 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/payment_list_response.py +2 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/product.py +22 -1
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/product_create_params.py +11 -1
- dodopayments-1.34.0/src/dodopayments/types/product_update_files_params.py +11 -0
- dodopayments-1.34.0/src/dodopayments/types/product_update_files_response.py +11 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/product_update_params.py +14 -1
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/subscription.py +3 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/subscription_change_plan_params.py +1 -1
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/subscription_list_response.py +3 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/subscription_update_params.py +2 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/webhook_event_list_params.py +3 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/tests/api_resources/test_products.py +103 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/tests/api_resources/test_subscriptions.py +2 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/tests/api_resources/test_webhook_events.py +2 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/tests/conftest.py +2 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/tests/test_client.py +118 -117
- dodopayments-1.30.2/.release-please-manifest.json +0 -3
- {dodopayments-1.30.2 → dodopayments-1.34.0}/.gitignore +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/CONTRIBUTING.md +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/LICENSE +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/SECURITY.md +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/bin/check-release-environment +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/bin/publish-pypi +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/examples/.keep +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/mypy.ini +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/noxfile.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/release-please-config.json +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/requirements.lock +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodo_payments/lib/.keep +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/__init__.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/_client.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/_compat.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/_constants.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/_exceptions.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/_files.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/_models.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/_qs.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/_resource.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/_response.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/_streaming.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/_types.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/_utils/__init__.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/_utils/_logs.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/_utils/_proxy.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/_utils/_reflection.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/_utils/_resources_proxy.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/_utils/_streams.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/_utils/_sync.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/_utils/_transform.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/_utils/_typing.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/_utils/_utils.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/lib/.keep +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/pagination.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/py.typed +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/resources/__init__.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/resources/addons.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/resources/brands.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/resources/customers/__init__.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/resources/customers/customer_portal.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/resources/customers/customers.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/resources/discounts.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/resources/disputes.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/resources/invoices/__init__.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/resources/invoices/invoices.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/resources/invoices/payments.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/resources/license_key_instances.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/resources/license_keys.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/resources/licenses.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/resources/misc.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/resources/payments.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/resources/payouts.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/resources/products/__init__.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/resources/products/images.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/resources/refunds.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/addon_cart_response_item.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/addon_create_params.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/addon_list_params.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/addon_response.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/addon_update_images_response.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/addon_update_params.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/attach_existing_customer_param.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/billing_address.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/billing_address_param.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/brand_create_params.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/brand_create_response.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/brand_list_response.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/brand_retrieve_response.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/brand_update_images_response.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/brand_update_params.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/brand_update_response.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/country_code.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/create_new_customer_param.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/currency.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/customer.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/customer_create_params.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/customer_limited_details.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/customer_list_params.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/customer_portal_session.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/customer_request_param.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/customer_update_params.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/customers/__init__.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/customers/customer_portal_create_params.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/discount.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/discount_create_params.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/discount_list_params.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/discount_type.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/discount_update_params.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/dispute.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/dispute_list_params.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/dispute_list_response.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/dispute_retrieve_response.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/dispute_stage.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/dispute_status.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/intent_status.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/invoices/__init__.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/license_activate_params.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/license_deactivate_params.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/license_key.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/license_key_duration.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/license_key_duration_param.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/license_key_instance.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/license_key_instance_list_params.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/license_key_instance_update_params.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/license_key_list_params.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/license_key_status.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/license_key_update_params.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/license_validate_params.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/license_validate_response.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/misc_list_supported_countries_response.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/one_time_product_cart_item.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/one_time_product_cart_item_param.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/payment_create_params.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/payment_create_response.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/payment_list_params.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/payment_retrieve_line_items_response.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/payout_list_params.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/payout_list_response.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/price.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/price_param.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/product_list_params.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/product_list_response.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/products/__init__.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/products/image_update_params.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/products/image_update_response.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/refund.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/refund_create_params.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/refund_list_params.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/refund_status.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/subscription_charge_params.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/subscription_charge_response.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/subscription_create_params.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/subscription_create_response.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/subscription_list_params.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/subscription_status.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/tax_category.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/time_interval.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/webhook_event.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/tests/__init__.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/tests/api_resources/__init__.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/tests/api_resources/customers/__init__.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/tests/api_resources/customers/test_customer_portal.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/tests/api_resources/invoices/__init__.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/tests/api_resources/invoices/test_payments.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/tests/api_resources/products/__init__.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/tests/api_resources/products/test_images.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/tests/api_resources/test_addons.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/tests/api_resources/test_brands.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/tests/api_resources/test_customers.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/tests/api_resources/test_discounts.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/tests/api_resources/test_disputes.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/tests/api_resources/test_license_key_instances.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/tests/api_resources/test_license_keys.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/tests/api_resources/test_licenses.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/tests/api_resources/test_misc.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/tests/api_resources/test_payments.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/tests/api_resources/test_payouts.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/tests/api_resources/test_refunds.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/tests/sample_file.txt +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/tests/test_deepcopy.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/tests/test_extract_files.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/tests/test_files.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/tests/test_models.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/tests/test_qs.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/tests/test_required_args.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/tests/test_response.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/tests/test_streaming.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/tests/test_transform.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/tests/test_utils/test_proxy.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/tests/test_utils/test_typing.py +0 -0
- {dodopayments-1.30.2 → dodopayments-1.34.0}/tests/utils.py +0 -0
|
@@ -1,5 +1,36 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 1.34.0 (2025-06-18)
|
|
4
|
+
|
|
5
|
+
Full Changelog: [v1.32.0...v1.34.0](https://github.com/dodopayments/dodopayments-python/compare/v1.32.0...v1.34.0)
|
|
6
|
+
|
|
7
|
+
### Features
|
|
8
|
+
|
|
9
|
+
* **api:** updated to version 1.34.0 ([b83c3a8](https://github.com/dodopayments/dodopayments-python/commit/b83c3a87e253e3c74e9160ffe98d9b8fedaa8af1))
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
### Bug Fixes
|
|
13
|
+
|
|
14
|
+
* **client:** correctly parse binary response | stream ([4d41dc7](https://github.com/dodopayments/dodopayments-python/commit/4d41dc78632a83e98d91dd763858b61625d75cdc))
|
|
15
|
+
* **tests:** fix: tests which call HTTP endpoints directly with the example parameters ([10cf09b](https://github.com/dodopayments/dodopayments-python/commit/10cf09b005788fff2e01ec99d1ec70f71f09a80d))
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
### Chores
|
|
19
|
+
|
|
20
|
+
* **ci:** enable for pull requests ([ff898a1](https://github.com/dodopayments/dodopayments-python/commit/ff898a143cc3a7ce7ccccfc435f0af9a21f826d8))
|
|
21
|
+
* **internal:** update conftest.py ([c0c8eef](https://github.com/dodopayments/dodopayments-python/commit/c0c8eefc8e397aeb0933476ffd8b48c7ab9c0c72))
|
|
22
|
+
* **readme:** update badges ([6b1593c](https://github.com/dodopayments/dodopayments-python/commit/6b1593c2fe586d7fbabdeac3c7683fcad6256f63))
|
|
23
|
+
* **tests:** add tests for httpx client instantiation & proxies ([c7b0949](https://github.com/dodopayments/dodopayments-python/commit/c7b09497f1fe1f83bbd5a259174276a57ab7fafa))
|
|
24
|
+
* **tests:** run tests in parallel ([d46598b](https://github.com/dodopayments/dodopayments-python/commit/d46598b3cef4df023e692e84cb9265b7d9c8f22a))
|
|
25
|
+
|
|
26
|
+
## 1.32.0 (2025-06-09)
|
|
27
|
+
|
|
28
|
+
Full Changelog: [v1.30.2...v1.32.0](https://github.com/dodopayments/dodopayments-python/compare/v1.30.2...v1.32.0)
|
|
29
|
+
|
|
30
|
+
### Features
|
|
31
|
+
|
|
32
|
+
* **api:** updated openapi spec to v1.32.0 ([b482016](https://github.com/dodopayments/dodopayments-python/commit/b48201636b68d5b81d37b0e3eb00ccdf068f47f9))
|
|
33
|
+
|
|
3
34
|
## 1.30.2 (2025-06-04)
|
|
4
35
|
|
|
5
36
|
Full Changelog: [v1.30.0...v1.30.2](https://github.com/dodopayments/dodopayments-python/compare/v1.30.0...v1.30.2)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: dodopayments
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.34.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
|
|
@@ -31,7 +31,7 @@ Description-Content-Type: text/markdown
|
|
|
31
31
|
|
|
32
32
|
# Dodo Payments Python API library
|
|
33
33
|
|
|
34
|
-
[](https://pypi.org/project/dodopayments/)
|
|
34
|
+
[>)](https://pypi.org/project/dodopayments/)
|
|
35
35
|
|
|
36
36
|
The [Dodo Payments](https://dodopayments.com) Python library provides convenient access to the Dodo Payments REST API from any Python 3.8+
|
|
37
37
|
application. The library includes type definitions for all request params and response fields,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Dodo Payments Python API library
|
|
2
2
|
|
|
3
|
-
[](https://pypi.org/project/dodopayments/)
|
|
3
|
+
[>)](https://pypi.org/project/dodopayments/)
|
|
4
4
|
|
|
5
5
|
The [Dodo Payments](https://dodopayments.com) Python library provides convenient access to the Dodo Payments REST API from any Python 3.8+
|
|
6
6
|
application. The library includes type definitions for all request params and response fields,
|
|
@@ -184,7 +184,13 @@ Methods:
|
|
|
184
184
|
Types:
|
|
185
185
|
|
|
186
186
|
```python
|
|
187
|
-
from dodopayments.types import
|
|
187
|
+
from dodopayments.types import (
|
|
188
|
+
LicenseKeyDuration,
|
|
189
|
+
Price,
|
|
190
|
+
Product,
|
|
191
|
+
ProductListResponse,
|
|
192
|
+
ProductUpdateFilesResponse,
|
|
193
|
+
)
|
|
188
194
|
```
|
|
189
195
|
|
|
190
196
|
Methods:
|
|
@@ -195,6 +201,7 @@ Methods:
|
|
|
195
201
|
- <code title="get /products">client.products.<a href="./src/dodopayments/resources/products/products.py">list</a>(\*\*<a href="src/dodopayments/types/product_list_params.py">params</a>) -> <a href="./src/dodopayments/types/product_list_response.py">SyncDefaultPageNumberPagination[ProductListResponse]</a></code>
|
|
196
202
|
- <code title="delete /products/{id}">client.products.<a href="./src/dodopayments/resources/products/products.py">delete</a>(id) -> None</code>
|
|
197
203
|
- <code title="post /products/{id}/unarchive">client.products.<a href="./src/dodopayments/resources/products/products.py">unarchive</a>(id) -> None</code>
|
|
204
|
+
- <code title="put /products/{id}/files">client.products.<a href="./src/dodopayments/resources/products/products.py">update_files</a>(id, \*\*<a href="src/dodopayments/types/product_update_files_params.py">params</a>) -> <a href="./src/dodopayments/types/product_update_files_response.py">ProductUpdateFilesResponse</a></code>
|
|
198
205
|
|
|
199
206
|
## Images
|
|
200
207
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "dodopayments"
|
|
3
|
-
version = "1.
|
|
3
|
+
version = "1.34.0"
|
|
4
4
|
description = "The official Python library for the Dodo Payments API"
|
|
5
5
|
dynamic = ["readme"]
|
|
6
6
|
license = "Apache-2.0"
|
|
@@ -54,6 +54,7 @@ dev-dependencies = [
|
|
|
54
54
|
"importlib-metadata>=6.7.0",
|
|
55
55
|
"rich>=13.7.1",
|
|
56
56
|
"nest_asyncio==1.6.0",
|
|
57
|
+
"pytest-xdist>=3.6.1",
|
|
57
58
|
]
|
|
58
59
|
|
|
59
60
|
[tool.rye.scripts]
|
|
@@ -125,7 +126,7 @@ replacement = '[\1](https://github.com/dodopayments/dodopayments-python/tree/mai
|
|
|
125
126
|
|
|
126
127
|
[tool.pytest.ini_options]
|
|
127
128
|
testpaths = ["tests"]
|
|
128
|
-
addopts = "--tb=short"
|
|
129
|
+
addopts = "--tb=short -n auto"
|
|
129
130
|
xfail_strict = true
|
|
130
131
|
asyncio_mode = "auto"
|
|
131
132
|
asyncio_default_fixture_loop_scope = "session"
|
|
@@ -30,6 +30,8 @@ distro==1.8.0
|
|
|
30
30
|
exceptiongroup==1.2.2
|
|
31
31
|
# via anyio
|
|
32
32
|
# via pytest
|
|
33
|
+
execnet==2.1.1
|
|
34
|
+
# via pytest-xdist
|
|
33
35
|
filelock==3.12.4
|
|
34
36
|
# via virtualenv
|
|
35
37
|
h11==0.14.0
|
|
@@ -72,7 +74,9 @@ pygments==2.18.0
|
|
|
72
74
|
pyright==1.1.399
|
|
73
75
|
pytest==8.3.3
|
|
74
76
|
# via pytest-asyncio
|
|
77
|
+
# via pytest-xdist
|
|
75
78
|
pytest-asyncio==0.24.0
|
|
79
|
+
pytest-xdist==3.7.0
|
|
76
80
|
python-dateutil==2.8.2
|
|
77
81
|
# via time-machine
|
|
78
82
|
pytz==2023.3.post1
|
|
@@ -1071,7 +1071,14 @@ class SyncAPIClient(BaseClient[httpx.Client, Stream[Any]]):
|
|
|
1071
1071
|
) -> ResponseT:
|
|
1072
1072
|
origin = get_origin(cast_to) or cast_to
|
|
1073
1073
|
|
|
1074
|
-
if
|
|
1074
|
+
if (
|
|
1075
|
+
inspect.isclass(origin)
|
|
1076
|
+
and issubclass(origin, BaseAPIResponse)
|
|
1077
|
+
# we only want to actually return the custom BaseAPIResponse class if we're
|
|
1078
|
+
# returning the raw response, or if we're not streaming SSE, as if we're streaming
|
|
1079
|
+
# SSE then `cast_to` doesn't actively reflect the type we need to parse into
|
|
1080
|
+
and (not stream or bool(response.request.headers.get(RAW_RESPONSE_HEADER)))
|
|
1081
|
+
):
|
|
1075
1082
|
if not issubclass(origin, APIResponse):
|
|
1076
1083
|
raise TypeError(f"API Response types must subclass {APIResponse}; Received {origin}")
|
|
1077
1084
|
|
|
@@ -1574,7 +1581,14 @@ class AsyncAPIClient(BaseClient[httpx.AsyncClient, AsyncStream[Any]]):
|
|
|
1574
1581
|
) -> ResponseT:
|
|
1575
1582
|
origin = get_origin(cast_to) or cast_to
|
|
1576
1583
|
|
|
1577
|
-
if
|
|
1584
|
+
if (
|
|
1585
|
+
inspect.isclass(origin)
|
|
1586
|
+
and issubclass(origin, BaseAPIResponse)
|
|
1587
|
+
# we only want to actually return the custom BaseAPIResponse class if we're
|
|
1588
|
+
# returning the raw response, or if we're not streaming SSE, as if we're streaming
|
|
1589
|
+
# SSE then `cast_to` doesn't actively reflect the type we need to parse into
|
|
1590
|
+
and (not stream or bool(response.request.headers.get(RAW_RESPONSE_HEADER)))
|
|
1591
|
+
):
|
|
1578
1592
|
if not issubclass(origin, AsyncAPIResponse):
|
|
1579
1593
|
raise TypeError(f"API Response types must subclass {AsyncAPIResponse}; Received {origin}")
|
|
1580
1594
|
|
|
@@ -19,6 +19,7 @@ from ...types import (
|
|
|
19
19
|
product_list_params,
|
|
20
20
|
product_create_params,
|
|
21
21
|
product_update_params,
|
|
22
|
+
product_update_files_params,
|
|
22
23
|
)
|
|
23
24
|
from ..._types import NOT_GIVEN, Body, Query, Headers, NoneType, NotGiven
|
|
24
25
|
from ..._utils import maybe_transform, async_maybe_transform
|
|
@@ -37,6 +38,7 @@ from ...types.price_param import PriceParam
|
|
|
37
38
|
from ...types.tax_category import TaxCategory
|
|
38
39
|
from ...types.product_list_response import ProductListResponse
|
|
39
40
|
from ...types.license_key_duration_param import LicenseKeyDurationParam
|
|
41
|
+
from ...types.product_update_files_response import ProductUpdateFilesResponse
|
|
40
42
|
|
|
41
43
|
__all__ = ["ProductsResource", "AsyncProductsResource"]
|
|
42
44
|
|
|
@@ -73,6 +75,7 @@ class ProductsResource(SyncAPIResource):
|
|
|
73
75
|
addons: Optional[List[str]] | NotGiven = NOT_GIVEN,
|
|
74
76
|
brand_id: Optional[str] | NotGiven = NOT_GIVEN,
|
|
75
77
|
description: Optional[str] | NotGiven = NOT_GIVEN,
|
|
78
|
+
digital_product_delivery: Optional[product_create_params.DigitalProductDelivery] | NotGiven = NOT_GIVEN,
|
|
76
79
|
license_key_activation_message: Optional[str] | NotGiven = NOT_GIVEN,
|
|
77
80
|
license_key_activations_limit: Optional[int] | NotGiven = NOT_GIVEN,
|
|
78
81
|
license_key_duration: Optional[LicenseKeyDurationParam] | NotGiven = NOT_GIVEN,
|
|
@@ -121,6 +124,7 @@ class ProductsResource(SyncAPIResource):
|
|
|
121
124
|
"addons": addons,
|
|
122
125
|
"brand_id": brand_id,
|
|
123
126
|
"description": description,
|
|
127
|
+
"digital_product_delivery": digital_product_delivery,
|
|
124
128
|
"license_key_activation_message": license_key_activation_message,
|
|
125
129
|
"license_key_activations_limit": license_key_activations_limit,
|
|
126
130
|
"license_key_duration": license_key_duration,
|
|
@@ -173,6 +177,7 @@ class ProductsResource(SyncAPIResource):
|
|
|
173
177
|
addons: Optional[List[str]] | NotGiven = NOT_GIVEN,
|
|
174
178
|
brand_id: Optional[str] | NotGiven = NOT_GIVEN,
|
|
175
179
|
description: Optional[str] | NotGiven = NOT_GIVEN,
|
|
180
|
+
digital_product_delivery: Optional[product_update_params.DigitalProductDelivery] | NotGiven = NOT_GIVEN,
|
|
176
181
|
image_id: Optional[str] | NotGiven = NOT_GIVEN,
|
|
177
182
|
license_key_activation_message: Optional[str] | NotGiven = NOT_GIVEN,
|
|
178
183
|
license_key_activations_limit: Optional[int] | NotGiven = NOT_GIVEN,
|
|
@@ -234,6 +239,7 @@ class ProductsResource(SyncAPIResource):
|
|
|
234
239
|
"addons": addons,
|
|
235
240
|
"brand_id": brand_id,
|
|
236
241
|
"description": description,
|
|
242
|
+
"digital_product_delivery": digital_product_delivery,
|
|
237
243
|
"image_id": image_id,
|
|
238
244
|
"license_key_activation_message": license_key_activation_message,
|
|
239
245
|
"license_key_activations_limit": license_key_activations_limit,
|
|
@@ -377,6 +383,39 @@ class ProductsResource(SyncAPIResource):
|
|
|
377
383
|
cast_to=NoneType,
|
|
378
384
|
)
|
|
379
385
|
|
|
386
|
+
def update_files(
|
|
387
|
+
self,
|
|
388
|
+
id: str,
|
|
389
|
+
*,
|
|
390
|
+
file_name: str,
|
|
391
|
+
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
|
392
|
+
# The extra values given here take precedence over values defined on the client or passed to this method.
|
|
393
|
+
extra_headers: Headers | None = None,
|
|
394
|
+
extra_query: Query | None = None,
|
|
395
|
+
extra_body: Body | None = None,
|
|
396
|
+
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
|
|
397
|
+
) -> ProductUpdateFilesResponse:
|
|
398
|
+
"""
|
|
399
|
+
Args:
|
|
400
|
+
extra_headers: Send extra headers
|
|
401
|
+
|
|
402
|
+
extra_query: Add additional query parameters to the request
|
|
403
|
+
|
|
404
|
+
extra_body: Add additional JSON properties to the request
|
|
405
|
+
|
|
406
|
+
timeout: Override the client-level default timeout for this request, in seconds
|
|
407
|
+
"""
|
|
408
|
+
if not id:
|
|
409
|
+
raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
|
|
410
|
+
return self._put(
|
|
411
|
+
f"/products/{id}/files",
|
|
412
|
+
body=maybe_transform({"file_name": file_name}, product_update_files_params.ProductUpdateFilesParams),
|
|
413
|
+
options=make_request_options(
|
|
414
|
+
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
|
415
|
+
),
|
|
416
|
+
cast_to=ProductUpdateFilesResponse,
|
|
417
|
+
)
|
|
418
|
+
|
|
380
419
|
|
|
381
420
|
class AsyncProductsResource(AsyncAPIResource):
|
|
382
421
|
@cached_property
|
|
@@ -410,6 +449,7 @@ class AsyncProductsResource(AsyncAPIResource):
|
|
|
410
449
|
addons: Optional[List[str]] | NotGiven = NOT_GIVEN,
|
|
411
450
|
brand_id: Optional[str] | NotGiven = NOT_GIVEN,
|
|
412
451
|
description: Optional[str] | NotGiven = NOT_GIVEN,
|
|
452
|
+
digital_product_delivery: Optional[product_create_params.DigitalProductDelivery] | NotGiven = NOT_GIVEN,
|
|
413
453
|
license_key_activation_message: Optional[str] | NotGiven = NOT_GIVEN,
|
|
414
454
|
license_key_activations_limit: Optional[int] | NotGiven = NOT_GIVEN,
|
|
415
455
|
license_key_duration: Optional[LicenseKeyDurationParam] | NotGiven = NOT_GIVEN,
|
|
@@ -458,6 +498,7 @@ class AsyncProductsResource(AsyncAPIResource):
|
|
|
458
498
|
"addons": addons,
|
|
459
499
|
"brand_id": brand_id,
|
|
460
500
|
"description": description,
|
|
501
|
+
"digital_product_delivery": digital_product_delivery,
|
|
461
502
|
"license_key_activation_message": license_key_activation_message,
|
|
462
503
|
"license_key_activations_limit": license_key_activations_limit,
|
|
463
504
|
"license_key_duration": license_key_duration,
|
|
@@ -510,6 +551,7 @@ class AsyncProductsResource(AsyncAPIResource):
|
|
|
510
551
|
addons: Optional[List[str]] | NotGiven = NOT_GIVEN,
|
|
511
552
|
brand_id: Optional[str] | NotGiven = NOT_GIVEN,
|
|
512
553
|
description: Optional[str] | NotGiven = NOT_GIVEN,
|
|
554
|
+
digital_product_delivery: Optional[product_update_params.DigitalProductDelivery] | NotGiven = NOT_GIVEN,
|
|
513
555
|
image_id: Optional[str] | NotGiven = NOT_GIVEN,
|
|
514
556
|
license_key_activation_message: Optional[str] | NotGiven = NOT_GIVEN,
|
|
515
557
|
license_key_activations_limit: Optional[int] | NotGiven = NOT_GIVEN,
|
|
@@ -571,6 +613,7 @@ class AsyncProductsResource(AsyncAPIResource):
|
|
|
571
613
|
"addons": addons,
|
|
572
614
|
"brand_id": brand_id,
|
|
573
615
|
"description": description,
|
|
616
|
+
"digital_product_delivery": digital_product_delivery,
|
|
574
617
|
"image_id": image_id,
|
|
575
618
|
"license_key_activation_message": license_key_activation_message,
|
|
576
619
|
"license_key_activations_limit": license_key_activations_limit,
|
|
@@ -714,6 +757,41 @@ class AsyncProductsResource(AsyncAPIResource):
|
|
|
714
757
|
cast_to=NoneType,
|
|
715
758
|
)
|
|
716
759
|
|
|
760
|
+
async def update_files(
|
|
761
|
+
self,
|
|
762
|
+
id: str,
|
|
763
|
+
*,
|
|
764
|
+
file_name: str,
|
|
765
|
+
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
|
766
|
+
# The extra values given here take precedence over values defined on the client or passed to this method.
|
|
767
|
+
extra_headers: Headers | None = None,
|
|
768
|
+
extra_query: Query | None = None,
|
|
769
|
+
extra_body: Body | None = None,
|
|
770
|
+
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
|
|
771
|
+
) -> ProductUpdateFilesResponse:
|
|
772
|
+
"""
|
|
773
|
+
Args:
|
|
774
|
+
extra_headers: Send extra headers
|
|
775
|
+
|
|
776
|
+
extra_query: Add additional query parameters to the request
|
|
777
|
+
|
|
778
|
+
extra_body: Add additional JSON properties to the request
|
|
779
|
+
|
|
780
|
+
timeout: Override the client-level default timeout for this request, in seconds
|
|
781
|
+
"""
|
|
782
|
+
if not id:
|
|
783
|
+
raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
|
|
784
|
+
return await self._put(
|
|
785
|
+
f"/products/{id}/files",
|
|
786
|
+
body=await async_maybe_transform(
|
|
787
|
+
{"file_name": file_name}, product_update_files_params.ProductUpdateFilesParams
|
|
788
|
+
),
|
|
789
|
+
options=make_request_options(
|
|
790
|
+
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
|
791
|
+
),
|
|
792
|
+
cast_to=ProductUpdateFilesResponse,
|
|
793
|
+
)
|
|
794
|
+
|
|
717
795
|
|
|
718
796
|
class ProductsResourceWithRawResponse:
|
|
719
797
|
def __init__(self, products: ProductsResource) -> None:
|
|
@@ -737,6 +815,9 @@ class ProductsResourceWithRawResponse:
|
|
|
737
815
|
self.unarchive = to_raw_response_wrapper(
|
|
738
816
|
products.unarchive,
|
|
739
817
|
)
|
|
818
|
+
self.update_files = to_raw_response_wrapper(
|
|
819
|
+
products.update_files,
|
|
820
|
+
)
|
|
740
821
|
|
|
741
822
|
@cached_property
|
|
742
823
|
def images(self) -> ImagesResourceWithRawResponse:
|
|
@@ -765,6 +846,9 @@ class AsyncProductsResourceWithRawResponse:
|
|
|
765
846
|
self.unarchive = async_to_raw_response_wrapper(
|
|
766
847
|
products.unarchive,
|
|
767
848
|
)
|
|
849
|
+
self.update_files = async_to_raw_response_wrapper(
|
|
850
|
+
products.update_files,
|
|
851
|
+
)
|
|
768
852
|
|
|
769
853
|
@cached_property
|
|
770
854
|
def images(self) -> AsyncImagesResourceWithRawResponse:
|
|
@@ -793,6 +877,9 @@ class ProductsResourceWithStreamingResponse:
|
|
|
793
877
|
self.unarchive = to_streamed_response_wrapper(
|
|
794
878
|
products.unarchive,
|
|
795
879
|
)
|
|
880
|
+
self.update_files = to_streamed_response_wrapper(
|
|
881
|
+
products.update_files,
|
|
882
|
+
)
|
|
796
883
|
|
|
797
884
|
@cached_property
|
|
798
885
|
def images(self) -> ImagesResourceWithStreamingResponse:
|
|
@@ -821,6 +908,9 @@ class AsyncProductsResourceWithStreamingResponse:
|
|
|
821
908
|
self.unarchive = async_to_streamed_response_wrapper(
|
|
822
909
|
products.unarchive,
|
|
823
910
|
)
|
|
911
|
+
self.update_files = async_to_streamed_response_wrapper(
|
|
912
|
+
products.update_files,
|
|
913
|
+
)
|
|
824
914
|
|
|
825
915
|
@cached_property
|
|
826
916
|
def images(self) -> AsyncImagesResourceWithStreamingResponse:
|
|
@@ -211,6 +211,7 @@ class SubscriptionsResource(SyncAPIResource):
|
|
|
211
211
|
subscription_id: str,
|
|
212
212
|
*,
|
|
213
213
|
billing: Optional[BillingAddressParam] | NotGiven = NOT_GIVEN,
|
|
214
|
+
cancel_at_next_billing_date: Optional[bool] | NotGiven = NOT_GIVEN,
|
|
214
215
|
disable_on_demand: Optional[subscription_update_params.DisableOnDemand] | NotGiven = NOT_GIVEN,
|
|
215
216
|
metadata: Optional[Dict[str, str]] | NotGiven = NOT_GIVEN,
|
|
216
217
|
status: Optional[SubscriptionStatus] | NotGiven = NOT_GIVEN,
|
|
@@ -239,6 +240,7 @@ class SubscriptionsResource(SyncAPIResource):
|
|
|
239
240
|
body=maybe_transform(
|
|
240
241
|
{
|
|
241
242
|
"billing": billing,
|
|
243
|
+
"cancel_at_next_billing_date": cancel_at_next_billing_date,
|
|
242
244
|
"disable_on_demand": disable_on_demand,
|
|
243
245
|
"metadata": metadata,
|
|
244
246
|
"status": status,
|
|
@@ -322,7 +324,7 @@ class SubscriptionsResource(SyncAPIResource):
|
|
|
322
324
|
subscription_id: str,
|
|
323
325
|
*,
|
|
324
326
|
product_id: str,
|
|
325
|
-
proration_billing_mode: Literal["prorated_immediately"],
|
|
327
|
+
proration_billing_mode: Literal["prorated_immediately", "full_immediately"],
|
|
326
328
|
quantity: int,
|
|
327
329
|
addons: Optional[Iterable[subscription_change_plan_params.Addon]] | NotGiven = NOT_GIVEN,
|
|
328
330
|
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
|
@@ -584,6 +586,7 @@ class AsyncSubscriptionsResource(AsyncAPIResource):
|
|
|
584
586
|
subscription_id: str,
|
|
585
587
|
*,
|
|
586
588
|
billing: Optional[BillingAddressParam] | NotGiven = NOT_GIVEN,
|
|
589
|
+
cancel_at_next_billing_date: Optional[bool] | NotGiven = NOT_GIVEN,
|
|
587
590
|
disable_on_demand: Optional[subscription_update_params.DisableOnDemand] | NotGiven = NOT_GIVEN,
|
|
588
591
|
metadata: Optional[Dict[str, str]] | NotGiven = NOT_GIVEN,
|
|
589
592
|
status: Optional[SubscriptionStatus] | NotGiven = NOT_GIVEN,
|
|
@@ -612,6 +615,7 @@ class AsyncSubscriptionsResource(AsyncAPIResource):
|
|
|
612
615
|
body=await async_maybe_transform(
|
|
613
616
|
{
|
|
614
617
|
"billing": billing,
|
|
618
|
+
"cancel_at_next_billing_date": cancel_at_next_billing_date,
|
|
615
619
|
"disable_on_demand": disable_on_demand,
|
|
616
620
|
"metadata": metadata,
|
|
617
621
|
"status": status,
|
|
@@ -695,7 +699,7 @@ class AsyncSubscriptionsResource(AsyncAPIResource):
|
|
|
695
699
|
subscription_id: str,
|
|
696
700
|
*,
|
|
697
701
|
product_id: str,
|
|
698
|
-
proration_billing_mode: Literal["prorated_immediately"],
|
|
702
|
+
proration_billing_mode: Literal["prorated_immediately", "full_immediately"],
|
|
699
703
|
quantity: int,
|
|
700
704
|
addons: Optional[Iterable[subscription_change_plan_params.Addon]] | NotGiven = NOT_GIVEN,
|
|
701
705
|
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
|
@@ -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
|
),
|
|
@@ -78,10 +78,12 @@ from .subscription_charge_params import SubscriptionChargeParams as Subscription
|
|
|
78
78
|
from .subscription_create_params import SubscriptionCreateParams as SubscriptionCreateParams
|
|
79
79
|
from .subscription_list_response import SubscriptionListResponse as SubscriptionListResponse
|
|
80
80
|
from .subscription_update_params import SubscriptionUpdateParams as SubscriptionUpdateParams
|
|
81
|
+
from .product_update_files_params import ProductUpdateFilesParams as ProductUpdateFilesParams
|
|
81
82
|
from .addon_update_images_response import AddonUpdateImagesResponse as AddonUpdateImagesResponse
|
|
82
83
|
from .brand_update_images_response import BrandUpdateImagesResponse as BrandUpdateImagesResponse
|
|
83
84
|
from .subscription_charge_response import SubscriptionChargeResponse as SubscriptionChargeResponse
|
|
84
85
|
from .subscription_create_response import SubscriptionCreateResponse as SubscriptionCreateResponse
|
|
86
|
+
from .product_update_files_response import ProductUpdateFilesResponse as ProductUpdateFilesResponse
|
|
85
87
|
from .attach_existing_customer_param import AttachExistingCustomerParam as AttachExistingCustomerParam
|
|
86
88
|
from .subscription_change_plan_params import SubscriptionChangePlanParams as SubscriptionChangePlanParams
|
|
87
89
|
from .license_key_instance_list_params import LicenseKeyInstanceListParams as LicenseKeyInstanceListParams
|
|
@@ -8,7 +8,26 @@ from .._models import BaseModel
|
|
|
8
8
|
from .tax_category import TaxCategory
|
|
9
9
|
from .license_key_duration import LicenseKeyDuration
|
|
10
10
|
|
|
11
|
-
__all__ = ["Product"]
|
|
11
|
+
__all__ = ["Product", "DigitalProductDelivery", "DigitalProductDeliveryFile"]
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class DigitalProductDeliveryFile(BaseModel):
|
|
15
|
+
file_id: str
|
|
16
|
+
|
|
17
|
+
file_name: str
|
|
18
|
+
|
|
19
|
+
url: str
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
class DigitalProductDelivery(BaseModel):
|
|
23
|
+
external_url: Optional[str] = None
|
|
24
|
+
"""External URL to digital product"""
|
|
25
|
+
|
|
26
|
+
files: Optional[List[DigitalProductDeliveryFile]] = None
|
|
27
|
+
"""Uploaded files ids of digital product"""
|
|
28
|
+
|
|
29
|
+
instructions: Optional[str] = None
|
|
30
|
+
"""Instructions to download and use the digital product"""
|
|
12
31
|
|
|
13
32
|
|
|
14
33
|
class Product(BaseModel):
|
|
@@ -46,6 +65,8 @@ class Product(BaseModel):
|
|
|
46
65
|
description: Optional[str] = None
|
|
47
66
|
"""Description of the product, optional."""
|
|
48
67
|
|
|
68
|
+
digital_product_delivery: Optional[DigitalProductDelivery] = None
|
|
69
|
+
|
|
49
70
|
image: Optional[str] = None
|
|
50
71
|
"""URL of the product image, optional."""
|
|
51
72
|
|
|
@@ -9,7 +9,7 @@ from .price_param import PriceParam
|
|
|
9
9
|
from .tax_category import TaxCategory
|
|
10
10
|
from .license_key_duration_param import LicenseKeyDurationParam
|
|
11
11
|
|
|
12
|
-
__all__ = ["ProductCreateParams"]
|
|
12
|
+
__all__ = ["ProductCreateParams", "DigitalProductDelivery"]
|
|
13
13
|
|
|
14
14
|
|
|
15
15
|
class ProductCreateParams(TypedDict, total=False):
|
|
@@ -30,6 +30,8 @@ class ProductCreateParams(TypedDict, total=False):
|
|
|
30
30
|
description: Optional[str]
|
|
31
31
|
"""Optional description of the product"""
|
|
32
32
|
|
|
33
|
+
digital_product_delivery: Optional[DigitalProductDelivery]
|
|
34
|
+
|
|
33
35
|
license_key_activation_message: Optional[str]
|
|
34
36
|
"""Optional message displayed during license key activation"""
|
|
35
37
|
|
|
@@ -45,3 +47,11 @@ class ProductCreateParams(TypedDict, total=False):
|
|
|
45
47
|
|
|
46
48
|
name: Optional[str]
|
|
47
49
|
"""Optional name of the product"""
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
class DigitalProductDelivery(TypedDict, total=False):
|
|
53
|
+
external_url: Optional[str]
|
|
54
|
+
"""External URL to digital product"""
|
|
55
|
+
|
|
56
|
+
instructions: Optional[str]
|
|
57
|
+
"""Instructions to download and use the digital product"""
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from typing_extensions import Required, TypedDict
|
|
6
|
+
|
|
7
|
+
__all__ = ["ProductUpdateFilesParams"]
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class ProductUpdateFilesParams(TypedDict, total=False):
|
|
11
|
+
file_name: Required[str]
|
|
@@ -9,7 +9,7 @@ from .price_param import PriceParam
|
|
|
9
9
|
from .tax_category import TaxCategory
|
|
10
10
|
from .license_key_duration_param import LicenseKeyDurationParam
|
|
11
11
|
|
|
12
|
-
__all__ = ["ProductUpdateParams"]
|
|
12
|
+
__all__ = ["ProductUpdateParams", "DigitalProductDelivery"]
|
|
13
13
|
|
|
14
14
|
|
|
15
15
|
class ProductUpdateParams(TypedDict, total=False):
|
|
@@ -21,6 +21,8 @@ class ProductUpdateParams(TypedDict, total=False):
|
|
|
21
21
|
description: Optional[str]
|
|
22
22
|
"""Description of the product, optional and must be at most 1000 characters."""
|
|
23
23
|
|
|
24
|
+
digital_product_delivery: Optional[DigitalProductDelivery]
|
|
25
|
+
|
|
24
26
|
image_id: Optional[str]
|
|
25
27
|
"""Product image id after its uploaded to S3"""
|
|
26
28
|
|
|
@@ -57,3 +59,14 @@ class ProductUpdateParams(TypedDict, total=False):
|
|
|
57
59
|
Represents the different categories of taxation applicable to various products
|
|
58
60
|
and services.
|
|
59
61
|
"""
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
class DigitalProductDelivery(TypedDict, total=False):
|
|
65
|
+
external_url: Optional[str]
|
|
66
|
+
"""External URL to digital product"""
|
|
67
|
+
|
|
68
|
+
files: Optional[List[str]]
|
|
69
|
+
"""Uploaded files ids of digital product"""
|
|
70
|
+
|
|
71
|
+
instructions: Optional[str]
|
|
72
|
+
"""Instructions to download and use the digital product"""
|
|
@@ -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
|
|
|
@@ -12,7 +12,7 @@ class SubscriptionChangePlanParams(TypedDict, total=False):
|
|
|
12
12
|
product_id: Required[str]
|
|
13
13
|
"""Unique identifier of the product to subscribe to"""
|
|
14
14
|
|
|
15
|
-
proration_billing_mode: Required[Literal["prorated_immediately"]]
|
|
15
|
+
proration_billing_mode: Required[Literal["prorated_immediately", "full_immediately"]]
|
|
16
16
|
|
|
17
17
|
quantity: Required[int]
|
|
18
18
|
"""Number of units to subscribe for. Must be at least 1."""
|