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.

Files changed (204) hide show
  1. dodopayments-1.34.0/.release-please-manifest.json +3 -0
  2. {dodopayments-1.30.2 → dodopayments-1.34.0}/CHANGELOG.md +31 -0
  3. {dodopayments-1.30.2 → dodopayments-1.34.0}/PKG-INFO +2 -2
  4. {dodopayments-1.30.2 → dodopayments-1.34.0}/README.md +1 -1
  5. {dodopayments-1.30.2 → dodopayments-1.34.0}/api.md +8 -1
  6. {dodopayments-1.30.2 → dodopayments-1.34.0}/pyproject.toml +3 -2
  7. {dodopayments-1.30.2 → dodopayments-1.34.0}/requirements-dev.lock +4 -0
  8. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/_base_client.py +16 -2
  9. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/_version.py +1 -1
  10. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/resources/products/products.py +90 -0
  11. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/resources/subscriptions.py +6 -2
  12. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/resources/webhook_events.py +8 -0
  13. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/__init__.py +2 -0
  14. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/payment.py +3 -0
  15. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/payment_list_response.py +2 -0
  16. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/product.py +22 -1
  17. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/product_create_params.py +11 -1
  18. dodopayments-1.34.0/src/dodopayments/types/product_update_files_params.py +11 -0
  19. dodopayments-1.34.0/src/dodopayments/types/product_update_files_response.py +11 -0
  20. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/product_update_params.py +14 -1
  21. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/subscription.py +3 -0
  22. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/subscription_change_plan_params.py +1 -1
  23. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/subscription_list_response.py +3 -0
  24. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/subscription_update_params.py +2 -0
  25. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/webhook_event_list_params.py +3 -0
  26. {dodopayments-1.30.2 → dodopayments-1.34.0}/tests/api_resources/test_products.py +103 -0
  27. {dodopayments-1.30.2 → dodopayments-1.34.0}/tests/api_resources/test_subscriptions.py +2 -0
  28. {dodopayments-1.30.2 → dodopayments-1.34.0}/tests/api_resources/test_webhook_events.py +2 -0
  29. {dodopayments-1.30.2 → dodopayments-1.34.0}/tests/conftest.py +2 -0
  30. {dodopayments-1.30.2 → dodopayments-1.34.0}/tests/test_client.py +118 -117
  31. dodopayments-1.30.2/.release-please-manifest.json +0 -3
  32. {dodopayments-1.30.2 → dodopayments-1.34.0}/.gitignore +0 -0
  33. {dodopayments-1.30.2 → dodopayments-1.34.0}/CONTRIBUTING.md +0 -0
  34. {dodopayments-1.30.2 → dodopayments-1.34.0}/LICENSE +0 -0
  35. {dodopayments-1.30.2 → dodopayments-1.34.0}/SECURITY.md +0 -0
  36. {dodopayments-1.30.2 → dodopayments-1.34.0}/bin/check-release-environment +0 -0
  37. {dodopayments-1.30.2 → dodopayments-1.34.0}/bin/publish-pypi +0 -0
  38. {dodopayments-1.30.2 → dodopayments-1.34.0}/examples/.keep +0 -0
  39. {dodopayments-1.30.2 → dodopayments-1.34.0}/mypy.ini +0 -0
  40. {dodopayments-1.30.2 → dodopayments-1.34.0}/noxfile.py +0 -0
  41. {dodopayments-1.30.2 → dodopayments-1.34.0}/release-please-config.json +0 -0
  42. {dodopayments-1.30.2 → dodopayments-1.34.0}/requirements.lock +0 -0
  43. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodo_payments/lib/.keep +0 -0
  44. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/__init__.py +0 -0
  45. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/_client.py +0 -0
  46. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/_compat.py +0 -0
  47. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/_constants.py +0 -0
  48. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/_exceptions.py +0 -0
  49. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/_files.py +0 -0
  50. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/_models.py +0 -0
  51. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/_qs.py +0 -0
  52. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/_resource.py +0 -0
  53. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/_response.py +0 -0
  54. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/_streaming.py +0 -0
  55. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/_types.py +0 -0
  56. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/_utils/__init__.py +0 -0
  57. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/_utils/_logs.py +0 -0
  58. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/_utils/_proxy.py +0 -0
  59. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/_utils/_reflection.py +0 -0
  60. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/_utils/_resources_proxy.py +0 -0
  61. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/_utils/_streams.py +0 -0
  62. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/_utils/_sync.py +0 -0
  63. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/_utils/_transform.py +0 -0
  64. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/_utils/_typing.py +0 -0
  65. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/_utils/_utils.py +0 -0
  66. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/lib/.keep +0 -0
  67. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/pagination.py +0 -0
  68. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/py.typed +0 -0
  69. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/resources/__init__.py +0 -0
  70. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/resources/addons.py +0 -0
  71. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/resources/brands.py +0 -0
  72. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/resources/customers/__init__.py +0 -0
  73. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/resources/customers/customer_portal.py +0 -0
  74. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/resources/customers/customers.py +0 -0
  75. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/resources/discounts.py +0 -0
  76. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/resources/disputes.py +0 -0
  77. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/resources/invoices/__init__.py +0 -0
  78. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/resources/invoices/invoices.py +0 -0
  79. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/resources/invoices/payments.py +0 -0
  80. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/resources/license_key_instances.py +0 -0
  81. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/resources/license_keys.py +0 -0
  82. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/resources/licenses.py +0 -0
  83. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/resources/misc.py +0 -0
  84. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/resources/payments.py +0 -0
  85. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/resources/payouts.py +0 -0
  86. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/resources/products/__init__.py +0 -0
  87. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/resources/products/images.py +0 -0
  88. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/resources/refunds.py +0 -0
  89. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/addon_cart_response_item.py +0 -0
  90. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/addon_create_params.py +0 -0
  91. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/addon_list_params.py +0 -0
  92. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/addon_response.py +0 -0
  93. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/addon_update_images_response.py +0 -0
  94. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/addon_update_params.py +0 -0
  95. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/attach_existing_customer_param.py +0 -0
  96. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/billing_address.py +0 -0
  97. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/billing_address_param.py +0 -0
  98. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/brand_create_params.py +0 -0
  99. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/brand_create_response.py +0 -0
  100. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/brand_list_response.py +0 -0
  101. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/brand_retrieve_response.py +0 -0
  102. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/brand_update_images_response.py +0 -0
  103. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/brand_update_params.py +0 -0
  104. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/brand_update_response.py +0 -0
  105. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/country_code.py +0 -0
  106. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/create_new_customer_param.py +0 -0
  107. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/currency.py +0 -0
  108. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/customer.py +0 -0
  109. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/customer_create_params.py +0 -0
  110. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/customer_limited_details.py +0 -0
  111. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/customer_list_params.py +0 -0
  112. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/customer_portal_session.py +0 -0
  113. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/customer_request_param.py +0 -0
  114. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/customer_update_params.py +0 -0
  115. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/customers/__init__.py +0 -0
  116. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/customers/customer_portal_create_params.py +0 -0
  117. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/discount.py +0 -0
  118. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/discount_create_params.py +0 -0
  119. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/discount_list_params.py +0 -0
  120. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/discount_type.py +0 -0
  121. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/discount_update_params.py +0 -0
  122. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/dispute.py +0 -0
  123. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/dispute_list_params.py +0 -0
  124. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/dispute_list_response.py +0 -0
  125. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/dispute_retrieve_response.py +0 -0
  126. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/dispute_stage.py +0 -0
  127. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/dispute_status.py +0 -0
  128. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/intent_status.py +0 -0
  129. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/invoices/__init__.py +0 -0
  130. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/license_activate_params.py +0 -0
  131. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/license_deactivate_params.py +0 -0
  132. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/license_key.py +0 -0
  133. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/license_key_duration.py +0 -0
  134. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/license_key_duration_param.py +0 -0
  135. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/license_key_instance.py +0 -0
  136. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/license_key_instance_list_params.py +0 -0
  137. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/license_key_instance_update_params.py +0 -0
  138. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/license_key_list_params.py +0 -0
  139. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/license_key_status.py +0 -0
  140. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/license_key_update_params.py +0 -0
  141. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/license_validate_params.py +0 -0
  142. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/license_validate_response.py +0 -0
  143. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/misc_list_supported_countries_response.py +0 -0
  144. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/one_time_product_cart_item.py +0 -0
  145. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/one_time_product_cart_item_param.py +0 -0
  146. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/payment_create_params.py +0 -0
  147. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/payment_create_response.py +0 -0
  148. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/payment_list_params.py +0 -0
  149. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/payment_retrieve_line_items_response.py +0 -0
  150. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/payout_list_params.py +0 -0
  151. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/payout_list_response.py +0 -0
  152. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/price.py +0 -0
  153. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/price_param.py +0 -0
  154. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/product_list_params.py +0 -0
  155. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/product_list_response.py +0 -0
  156. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/products/__init__.py +0 -0
  157. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/products/image_update_params.py +0 -0
  158. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/products/image_update_response.py +0 -0
  159. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/refund.py +0 -0
  160. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/refund_create_params.py +0 -0
  161. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/refund_list_params.py +0 -0
  162. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/refund_status.py +0 -0
  163. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/subscription_charge_params.py +0 -0
  164. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/subscription_charge_response.py +0 -0
  165. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/subscription_create_params.py +0 -0
  166. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/subscription_create_response.py +0 -0
  167. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/subscription_list_params.py +0 -0
  168. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/subscription_status.py +0 -0
  169. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/tax_category.py +0 -0
  170. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/time_interval.py +0 -0
  171. {dodopayments-1.30.2 → dodopayments-1.34.0}/src/dodopayments/types/webhook_event.py +0 -0
  172. {dodopayments-1.30.2 → dodopayments-1.34.0}/tests/__init__.py +0 -0
  173. {dodopayments-1.30.2 → dodopayments-1.34.0}/tests/api_resources/__init__.py +0 -0
  174. {dodopayments-1.30.2 → dodopayments-1.34.0}/tests/api_resources/customers/__init__.py +0 -0
  175. {dodopayments-1.30.2 → dodopayments-1.34.0}/tests/api_resources/customers/test_customer_portal.py +0 -0
  176. {dodopayments-1.30.2 → dodopayments-1.34.0}/tests/api_resources/invoices/__init__.py +0 -0
  177. {dodopayments-1.30.2 → dodopayments-1.34.0}/tests/api_resources/invoices/test_payments.py +0 -0
  178. {dodopayments-1.30.2 → dodopayments-1.34.0}/tests/api_resources/products/__init__.py +0 -0
  179. {dodopayments-1.30.2 → dodopayments-1.34.0}/tests/api_resources/products/test_images.py +0 -0
  180. {dodopayments-1.30.2 → dodopayments-1.34.0}/tests/api_resources/test_addons.py +0 -0
  181. {dodopayments-1.30.2 → dodopayments-1.34.0}/tests/api_resources/test_brands.py +0 -0
  182. {dodopayments-1.30.2 → dodopayments-1.34.0}/tests/api_resources/test_customers.py +0 -0
  183. {dodopayments-1.30.2 → dodopayments-1.34.0}/tests/api_resources/test_discounts.py +0 -0
  184. {dodopayments-1.30.2 → dodopayments-1.34.0}/tests/api_resources/test_disputes.py +0 -0
  185. {dodopayments-1.30.2 → dodopayments-1.34.0}/tests/api_resources/test_license_key_instances.py +0 -0
  186. {dodopayments-1.30.2 → dodopayments-1.34.0}/tests/api_resources/test_license_keys.py +0 -0
  187. {dodopayments-1.30.2 → dodopayments-1.34.0}/tests/api_resources/test_licenses.py +0 -0
  188. {dodopayments-1.30.2 → dodopayments-1.34.0}/tests/api_resources/test_misc.py +0 -0
  189. {dodopayments-1.30.2 → dodopayments-1.34.0}/tests/api_resources/test_payments.py +0 -0
  190. {dodopayments-1.30.2 → dodopayments-1.34.0}/tests/api_resources/test_payouts.py +0 -0
  191. {dodopayments-1.30.2 → dodopayments-1.34.0}/tests/api_resources/test_refunds.py +0 -0
  192. {dodopayments-1.30.2 → dodopayments-1.34.0}/tests/sample_file.txt +0 -0
  193. {dodopayments-1.30.2 → dodopayments-1.34.0}/tests/test_deepcopy.py +0 -0
  194. {dodopayments-1.30.2 → dodopayments-1.34.0}/tests/test_extract_files.py +0 -0
  195. {dodopayments-1.30.2 → dodopayments-1.34.0}/tests/test_files.py +0 -0
  196. {dodopayments-1.30.2 → dodopayments-1.34.0}/tests/test_models.py +0 -0
  197. {dodopayments-1.30.2 → dodopayments-1.34.0}/tests/test_qs.py +0 -0
  198. {dodopayments-1.30.2 → dodopayments-1.34.0}/tests/test_required_args.py +0 -0
  199. {dodopayments-1.30.2 → dodopayments-1.34.0}/tests/test_response.py +0 -0
  200. {dodopayments-1.30.2 → dodopayments-1.34.0}/tests/test_streaming.py +0 -0
  201. {dodopayments-1.30.2 → dodopayments-1.34.0}/tests/test_transform.py +0 -0
  202. {dodopayments-1.30.2 → dodopayments-1.34.0}/tests/test_utils/test_proxy.py +0 -0
  203. {dodopayments-1.30.2 → dodopayments-1.34.0}/tests/test_utils/test_typing.py +0 -0
  204. {dodopayments-1.30.2 → dodopayments-1.34.0}/tests/utils.py +0 -0
@@ -0,0 +1,3 @@
1
+ {
2
+ ".": "1.34.0"
3
+ }
@@ -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.30.2
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
- [![PyPI version](https://img.shields.io/pypi/v/dodopayments.svg)](https://pypi.org/project/dodopayments/)
34
+ [![PyPI version](https://github.com/dodopayments/dodopayments-python/tree/main/<https://img.shields.io/pypi/v/dodopayments.svg?label=pypi%20(stable)>)](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
- [![PyPI version](https://img.shields.io/pypi/v/dodopayments.svg)](https://pypi.org/project/dodopayments/)
3
+ [![PyPI version](<https://img.shields.io/pypi/v/dodopayments.svg?label=pypi%20(stable)>)](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 LicenseKeyDuration, Price, Product, ProductListResponse
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.30.2"
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 inspect.isclass(origin) and issubclass(origin, BaseAPIResponse):
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 inspect.isclass(origin) and issubclass(origin, BaseAPIResponse):
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
 
@@ -1,4 +1,4 @@
1
1
  # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
2
 
3
3
  __title__ = "dodopayments"
4
- __version__ = "1.30.2" # x-release-please-version
4
+ __version__ = "1.34.0" # x-release-please-version
@@ -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
@@ -37,6 +37,9 @@ class Payment(BaseModel):
37
37
 
38
38
  customer: CustomerLimitedDetails
39
39
 
40
+ digital_products_delivered: bool
41
+ """brand id this payment belongs to"""
42
+
40
43
  disputes: List[Dispute]
41
44
  """List of disputes associated with this payment"""
42
45
 
@@ -20,6 +20,8 @@ class PaymentListResponse(BaseModel):
20
20
 
21
21
  customer: CustomerLimitedDetails
22
22
 
23
+ digital_products_delivered: bool
24
+
23
25
  metadata: Dict[str, str]
24
26
 
25
27
  payment_id: str
@@ -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]
@@ -0,0 +1,11 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from .._models import BaseModel
4
+
5
+ __all__ = ["ProductUpdateFilesResponse"]
6
+
7
+
8
+ class ProductUpdateFilesResponse(BaseModel):
9
+ file_id: str
10
+
11
+ url: 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."""