paid-python 1.7.2__tar.gz → 1.8.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.
Files changed (194) hide show
  1. {paid_python-1.7.2 → paid_python-1.8.0}/PKG-INFO +1 -1
  2. {paid_python-1.7.2 → paid_python-1.8.0}/pyproject.toml +1 -1
  3. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/__init__.py +55 -1
  4. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/checkouts/client.py +7 -4
  5. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/checkouts/raw_client.py +9 -8
  6. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/client.py +19 -0
  7. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/core/client_wrapper.py +2 -2
  8. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/customers/client.py +128 -0
  9. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/customers/raw_client.py +222 -0
  10. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/errors/__init__.py +3 -1
  11. paid_python-1.8.0/src/paid/errors/conflict_error.py +11 -0
  12. paid_python-1.8.0/src/paid/orders/__init__.py +37 -0
  13. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/orders/client.py +317 -0
  14. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/orders/raw_client.py +742 -92
  15. paid_python-1.8.0/src/paid/orders/types/__init__.py +38 -0
  16. paid_python-1.8.0/src/paid/orders/types/batch_seat_assignments_request_assignments_item.py +24 -0
  17. paid_python-1.8.0/src/paid/orders/types/list_order_seats_request_status.py +5 -0
  18. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/types/__init__.py +39 -0
  19. paid_python-1.8.0/src/paid/types/batch_seat_assignments_response.py +20 -0
  20. paid_python-1.8.0/src/paid/types/checkout_details.py +65 -0
  21. paid_python-1.8.0/src/paid/types/customer_user.py +38 -0
  22. paid_python-1.8.0/src/paid/types/customer_user_status.py +5 -0
  23. paid_python-1.8.0/src/paid/types/order_seat.py +36 -0
  24. paid_python-1.8.0/src/paid/types/order_seat_list_response.py +22 -0
  25. paid_python-1.8.0/src/paid/types/seat_assignee.py +23 -0
  26. paid_python-1.8.0/src/paid/types/seat_assignment_status.py +5 -0
  27. paid_python-1.8.0/src/paid/types/webhook.py +34 -0
  28. paid_python-1.8.0/src/paid/types/webhook_delivery_status.py +5 -0
  29. paid_python-1.8.0/src/paid/types/webhook_list_response.py +20 -0
  30. paid_python-1.8.0/src/paid/types/webhook_name.py +18 -0
  31. paid_python-1.8.0/src/paid/types/webhook_test_response.py +19 -0
  32. paid_python-1.8.0/src/paid/webhooks/__init__.py +37 -0
  33. paid_python-1.8.0/src/paid/webhooks/client.py +277 -0
  34. paid_python-1.8.0/src/paid/webhooks/raw_client.py +526 -0
  35. paid_python-1.8.0/src/paid/webhooks/types/__init__.py +38 -0
  36. paid_python-1.8.0/src/paid/webhooks/types/test_webhook_request_webhook_name.py +18 -0
  37. paid_python-1.8.0/src/paid/webhooks/types/update_webhook_request_webhook_name.py +18 -0
  38. paid_python-1.7.2/src/paid/value_receipts/__init__.py +0 -4
  39. {paid_python-1.7.2 → paid_python-1.8.0}/LICENSE +0 -0
  40. {paid_python-1.7.2 → paid_python-1.8.0}/README.md +0 -0
  41. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/checkouts/__init__.py +0 -0
  42. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/checkouts/types/__init__.py +0 -0
  43. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/checkouts/types/list_checkouts_request_status.py +0 -0
  44. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/contacts/__init__.py +0 -0
  45. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/contacts/client.py +0 -0
  46. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/contacts/raw_client.py +0 -0
  47. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/contacts/types/__init__.py +0 -0
  48. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/contacts/types/create_contact_request_roles_item.py +0 -0
  49. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/core/__init__.py +0 -0
  50. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/core/api_error.py +0 -0
  51. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/core/datetime_utils.py +0 -0
  52. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/core/file.py +0 -0
  53. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/core/force_multipart.py +0 -0
  54. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/core/http_client.py +0 -0
  55. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/core/http_response.py +0 -0
  56. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/core/http_sse/__init__.py +0 -0
  57. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/core/http_sse/_api.py +0 -0
  58. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/core/http_sse/_decoders.py +0 -0
  59. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/core/http_sse/_exceptions.py +0 -0
  60. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/core/http_sse/_models.py +0 -0
  61. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/core/jsonable_encoder.py +0 -0
  62. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/core/pydantic_utilities.py +0 -0
  63. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/core/query_encoder.py +0 -0
  64. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/core/remove_none_from_dict.py +0 -0
  65. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/core/request_options.py +0 -0
  66. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/core/serialization.py +0 -0
  67. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/credits/__init__.py +0 -0
  68. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/credits/client.py +0 -0
  69. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/credits/raw_client.py +0 -0
  70. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/customer_portals/__init__.py +0 -0
  71. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/customer_portals/client.py +0 -0
  72. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/customer_portals/raw_client.py +0 -0
  73. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/customers/__init__.py +0 -0
  74. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/environment.py +0 -0
  75. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/errors/bad_request_error.py +0 -0
  76. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/errors/forbidden_error.py +0 -0
  77. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/errors/internal_server_error.py +0 -0
  78. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/errors/not_found_error.py +0 -0
  79. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/invoices/__init__.py +0 -0
  80. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/invoices/client.py +0 -0
  81. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/invoices/raw_client.py +0 -0
  82. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/logger.py +0 -0
  83. {paid_python-1.7.2/src/paid/orders → paid_python-1.8.0/src/paid/products}/__init__.py +0 -0
  84. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/products/client.py +0 -0
  85. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/products/raw_client.py +0 -0
  86. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/py.typed +0 -0
  87. {paid_python-1.7.2/src/paid/products → paid_python-1.8.0/src/paid/signals}/__init__.py +0 -0
  88. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/signals/client.py +0 -0
  89. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/signals/raw_client.py +0 -0
  90. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/tracing/__init__.py +0 -0
  91. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/tracing/anthropic_patches/__init__.py +0 -0
  92. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/tracing/anthropic_patches/patches.py +0 -0
  93. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/tracing/autoinstrumentation.py +0 -0
  94. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/tracing/context_data.py +0 -0
  95. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/tracing/context_manager.py +0 -0
  96. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/tracing/distributed_tracing.py +0 -0
  97. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/tracing/gemini_patches/__init__.py +0 -0
  98. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/tracing/gemini_patches/patches.py +0 -0
  99. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/tracing/openai_agents_patches/__init__.py +0 -0
  100. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/tracing/openai_agents_patches/patches.py +0 -0
  101. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/tracing/openai_patches/__init__.py +0 -0
  102. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/tracing/openai_patches/patches.py +0 -0
  103. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/tracing/signal.py +0 -0
  104. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/tracing/tracing.py +0 -0
  105. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/tracing/wrappers/__init__.py +0 -0
  106. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/tracing/wrappers/anthropic/__init__.py +0 -0
  107. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/tracing/wrappers/anthropic/anthropicWrapper.py +0 -0
  108. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/tracing/wrappers/bedrock/__init__.py +0 -0
  109. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/tracing/wrappers/bedrock/bedrockWrapper.py +0 -0
  110. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/tracing/wrappers/gemini/__init__.py +0 -0
  111. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/tracing/wrappers/gemini/geminiWrapper.py +0 -0
  112. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/tracing/wrappers/langchain/__init__.py +0 -0
  113. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/tracing/wrappers/langchain/paidLangChainCallback.py +0 -0
  114. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/tracing/wrappers/mistral/__init__.py +0 -0
  115. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/tracing/wrappers/mistral/mistralWrapper.py +0 -0
  116. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/tracing/wrappers/openai/__init__.py +0 -0
  117. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/tracing/wrappers/openai/openAiWrapper.py +0 -0
  118. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/tracing/wrappers/openai_agents/__init__.py +0 -0
  119. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/tracing/wrappers/openai_agents/openaiAgentsHook.py +0 -0
  120. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/tracing/wrappers/utils.py +0 -0
  121. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/types/attribution.py +0 -0
  122. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/types/bulk_signals_response.py +0 -0
  123. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/types/checkout.py +0 -0
  124. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/types/checkout_list_response.py +0 -0
  125. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/types/checkout_product.py +0 -0
  126. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/types/checkout_product_input.py +0 -0
  127. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/types/checkout_status.py +0 -0
  128. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/types/contact.py +0 -0
  129. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/types/contact_billing_address.py +0 -0
  130. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/types/contact_list_response.py +0 -0
  131. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/types/contact_roles_item.py +0 -0
  132. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/types/create_order_line_attribute_request.py +0 -0
  133. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/types/create_order_line_attribute_request_pricing.py +0 -0
  134. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/types/create_order_line_attribute_request_pricing_billing_frequency.py +0 -0
  135. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/types/create_order_line_attribute_request_pricing_billing_type.py +0 -0
  136. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/types/create_order_line_attribute_request_pricing_charge_type.py +0 -0
  137. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/types/create_order_line_attribute_request_pricing_credit_benefits_item.py +0 -0
  138. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/types/create_order_line_attribute_request_pricing_credit_benefits_item_allocation_cadence.py +0 -0
  139. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/types/create_order_line_attribute_request_pricing_credit_benefits_item_credit_grant_timing.py +0 -0
  140. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/types/create_order_line_attribute_request_pricing_credit_benefits_item_recipient.py +0 -0
  141. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/types/create_order_line_attribute_request_pricing_credit_benefits_item_rollover_duration_unit.py +0 -0
  142. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/types/create_order_line_attribute_request_pricing_price_points.py +0 -0
  143. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/types/create_order_line_attribute_request_pricing_price_points_tiers_item.py +0 -0
  144. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/types/create_order_line_attribute_request_pricing_price_points_tiers_item_tier_billing_type.py +0 -0
  145. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/types/create_order_line_attribute_request_pricing_pricing_model.py +0 -0
  146. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/types/create_order_line_attribute_request_pricing_signal_type.py +0 -0
  147. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/types/create_order_line_request.py +0 -0
  148. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/types/credit_balance.py +0 -0
  149. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/types/credit_balance_list_response.py +0 -0
  150. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/types/credit_balance_recipient.py +0 -0
  151. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/types/credit_currency.py +0 -0
  152. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/types/credit_currency_list_response.py +0 -0
  153. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/types/customer.py +0 -0
  154. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/types/customer_attribution.py +0 -0
  155. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/types/customer_billing_address.py +0 -0
  156. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/types/customer_by_external_id.py +0 -0
  157. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/types/customer_by_id.py +0 -0
  158. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/types/customer_creation_state.py +0 -0
  159. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/types/customer_list_response.py +0 -0
  160. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/types/customer_portal.py +0 -0
  161. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/types/customer_portal_status.py +0 -0
  162. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/types/empty_response.py +0 -0
  163. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/types/error_response.py +0 -0
  164. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/types/invoice.py +0 -0
  165. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/types/invoice_line.py +0 -0
  166. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/types/invoice_line_payment_status.py +0 -0
  167. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/types/invoice_lines_response.py +0 -0
  168. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/types/invoice_list_response.py +0 -0
  169. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/types/invoice_payment_status.py +0 -0
  170. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/types/invoice_source.py +0 -0
  171. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/types/invoice_status.py +0 -0
  172. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/types/invoice_tax_status.py +0 -0
  173. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/types/order.py +0 -0
  174. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/types/order_creation_state.py +0 -0
  175. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/types/order_line.py +0 -0
  176. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/types/order_lines_response.py +0 -0
  177. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/types/order_list_response.py +0 -0
  178. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/types/pagination.py +0 -0
  179. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/types/product.py +0 -0
  180. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/types/product_by_external_id.py +0 -0
  181. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/types/product_by_id.py +0 -0
  182. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/types/product_list_response.py +0 -0
  183. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/types/signal.py +0 -0
  184. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/types/update_contact_request.py +0 -0
  185. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/types/update_contact_request_roles_item.py +0 -0
  186. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/types/update_customer_request.py +0 -0
  187. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/types/update_product_request.py +0 -0
  188. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/types/value_receipt_detail.py +0 -0
  189. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/types/value_receipt_list_response.py +0 -0
  190. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/types/value_receipt_summary.py +0 -0
  191. {paid_python-1.7.2/src/paid/signals → paid_python-1.8.0/src/paid/value_receipts}/__init__.py +0 -0
  192. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/value_receipts/client.py +0 -0
  193. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/value_receipts/raw_client.py +0 -0
  194. {paid_python-1.7.2 → paid_python-1.8.0}/src/paid/version.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: paid-python
3
- Version: 1.7.2
3
+ Version: 1.8.0
4
4
  Summary:
5
5
  Requires-Python: >=3.10,<3.14
6
6
  Classifier: Intended Audience :: Developers
@@ -4,7 +4,7 @@ dynamic = ["version"]
4
4
 
5
5
  [tool.poetry]
6
6
  name = "paid-python"
7
- version = "1.7.2"
7
+ version = "1.8.0"
8
8
  description = ""
9
9
  readme = "README.md"
10
10
  authors = []
@@ -8,8 +8,10 @@ from importlib import import_module
8
8
  if typing.TYPE_CHECKING:
9
9
  from .types import (
10
10
  Attribution,
11
+ BatchSeatAssignmentsResponse,
11
12
  BulkSignalsResponse,
12
13
  Checkout,
14
+ CheckoutDetails,
13
15
  CheckoutListResponse,
14
16
  CheckoutProduct,
15
17
  CheckoutProductInput,
@@ -48,6 +50,8 @@ if typing.TYPE_CHECKING:
48
50
  CustomerListResponse,
49
51
  CustomerPortal,
50
52
  CustomerPortalStatus,
53
+ CustomerUser,
54
+ CustomerUserStatus,
51
55
  EmptyResponse,
52
56
  ErrorResponse,
53
57
  Invoice,
@@ -64,11 +68,15 @@ if typing.TYPE_CHECKING:
64
68
  OrderLine,
65
69
  OrderLinesResponse,
66
70
  OrderListResponse,
71
+ OrderSeat,
72
+ OrderSeatListResponse,
67
73
  Pagination,
68
74
  Product,
69
75
  ProductByExternalId,
70
76
  ProductById,
71
77
  ProductListResponse,
78
+ SeatAssignee,
79
+ SeatAssignmentStatus,
72
80
  Signal,
73
81
  UpdateContactRequest,
74
82
  UpdateContactRequestRolesItem,
@@ -77,8 +85,13 @@ if typing.TYPE_CHECKING:
77
85
  ValueReceiptDetail,
78
86
  ValueReceiptListResponse,
79
87
  ValueReceiptSummary,
88
+ Webhook,
89
+ WebhookDeliveryStatus,
90
+ WebhookListResponse,
91
+ WebhookName,
92
+ WebhookTestResponse,
80
93
  )
81
- from .errors import BadRequestError, ForbiddenError, InternalServerError, NotFoundError
94
+ from .errors import BadRequestError, ConflictError, ForbiddenError, InternalServerError, NotFoundError
82
95
  from . import (
83
96
  checkouts,
84
97
  contacts,
@@ -90,22 +103,29 @@ if typing.TYPE_CHECKING:
90
103
  products,
91
104
  signals,
92
105
  value_receipts,
106
+ webhooks,
93
107
  )
94
108
  from .checkouts import ListCheckoutsRequestStatus
95
109
  from .client import AsyncPaid, Paid
96
110
  from .contacts import CreateContactRequestRolesItem
97
111
  from .environment import PaidEnvironment
112
+ from .orders import BatchSeatAssignmentsRequestAssignmentsItem, ListOrderSeatsRequestStatus
98
113
  from .version import __version__
114
+ from .webhooks import TestWebhookRequestWebhookName, UpdateWebhookRequestWebhookName
99
115
  _dynamic_imports: typing.Dict[str, str] = {
100
116
  "AsyncPaid": ".client",
101
117
  "Attribution": ".types",
102
118
  "BadRequestError": ".errors",
119
+ "BatchSeatAssignmentsRequestAssignmentsItem": ".orders",
120
+ "BatchSeatAssignmentsResponse": ".types",
103
121
  "BulkSignalsResponse": ".types",
104
122
  "Checkout": ".types",
123
+ "CheckoutDetails": ".types",
105
124
  "CheckoutListResponse": ".types",
106
125
  "CheckoutProduct": ".types",
107
126
  "CheckoutProductInput": ".types",
108
127
  "CheckoutStatus": ".types",
128
+ "ConflictError": ".errors",
109
129
  "Contact": ".types",
110
130
  "ContactBillingAddress": ".types",
111
131
  "ContactListResponse": ".types",
@@ -141,6 +161,8 @@ _dynamic_imports: typing.Dict[str, str] = {
141
161
  "CustomerListResponse": ".types",
142
162
  "CustomerPortal": ".types",
143
163
  "CustomerPortalStatus": ".types",
164
+ "CustomerUser": ".types",
165
+ "CustomerUserStatus": ".types",
144
166
  "EmptyResponse": ".types",
145
167
  "ErrorResponse": ".types",
146
168
  "ForbiddenError": ".errors",
@@ -155,12 +177,15 @@ _dynamic_imports: typing.Dict[str, str] = {
155
177
  "InvoiceStatus": ".types",
156
178
  "InvoiceTaxStatus": ".types",
157
179
  "ListCheckoutsRequestStatus": ".checkouts",
180
+ "ListOrderSeatsRequestStatus": ".orders",
158
181
  "NotFoundError": ".errors",
159
182
  "Order": ".types",
160
183
  "OrderCreationState": ".types",
161
184
  "OrderLine": ".types",
162
185
  "OrderLinesResponse": ".types",
163
186
  "OrderListResponse": ".types",
187
+ "OrderSeat": ".types",
188
+ "OrderSeatListResponse": ".types",
164
189
  "Pagination": ".types",
165
190
  "Paid": ".client",
166
191
  "PaidEnvironment": ".environment",
@@ -168,14 +193,23 @@ _dynamic_imports: typing.Dict[str, str] = {
168
193
  "ProductByExternalId": ".types",
169
194
  "ProductById": ".types",
170
195
  "ProductListResponse": ".types",
196
+ "SeatAssignee": ".types",
197
+ "SeatAssignmentStatus": ".types",
171
198
  "Signal": ".types",
199
+ "TestWebhookRequestWebhookName": ".webhooks",
172
200
  "UpdateContactRequest": ".types",
173
201
  "UpdateContactRequestRolesItem": ".types",
174
202
  "UpdateCustomerRequest": ".types",
175
203
  "UpdateProductRequest": ".types",
204
+ "UpdateWebhookRequestWebhookName": ".webhooks",
176
205
  "ValueReceiptDetail": ".types",
177
206
  "ValueReceiptListResponse": ".types",
178
207
  "ValueReceiptSummary": ".types",
208
+ "Webhook": ".types",
209
+ "WebhookDeliveryStatus": ".types",
210
+ "WebhookListResponse": ".types",
211
+ "WebhookName": ".types",
212
+ "WebhookTestResponse": ".types",
179
213
  "__version__": ".version",
180
214
  "checkouts": ".checkouts",
181
215
  "contacts": ".contacts",
@@ -187,6 +221,7 @@ _dynamic_imports: typing.Dict[str, str] = {
187
221
  "products": ".products",
188
222
  "signals": ".signals",
189
223
  "value_receipts": ".value_receipts",
224
+ "webhooks": ".webhooks",
190
225
  }
191
226
 
192
227
 
@@ -215,12 +250,16 @@ __all__ = [
215
250
  "AsyncPaid",
216
251
  "Attribution",
217
252
  "BadRequestError",
253
+ "BatchSeatAssignmentsRequestAssignmentsItem",
254
+ "BatchSeatAssignmentsResponse",
218
255
  "BulkSignalsResponse",
219
256
  "Checkout",
257
+ "CheckoutDetails",
220
258
  "CheckoutListResponse",
221
259
  "CheckoutProduct",
222
260
  "CheckoutProductInput",
223
261
  "CheckoutStatus",
262
+ "ConflictError",
224
263
  "Contact",
225
264
  "ContactBillingAddress",
226
265
  "ContactListResponse",
@@ -256,6 +295,8 @@ __all__ = [
256
295
  "CustomerListResponse",
257
296
  "CustomerPortal",
258
297
  "CustomerPortalStatus",
298
+ "CustomerUser",
299
+ "CustomerUserStatus",
259
300
  "EmptyResponse",
260
301
  "ErrorResponse",
261
302
  "ForbiddenError",
@@ -270,12 +311,15 @@ __all__ = [
270
311
  "InvoiceStatus",
271
312
  "InvoiceTaxStatus",
272
313
  "ListCheckoutsRequestStatus",
314
+ "ListOrderSeatsRequestStatus",
273
315
  "NotFoundError",
274
316
  "Order",
275
317
  "OrderCreationState",
276
318
  "OrderLine",
277
319
  "OrderLinesResponse",
278
320
  "OrderListResponse",
321
+ "OrderSeat",
322
+ "OrderSeatListResponse",
279
323
  "Pagination",
280
324
  "Paid",
281
325
  "PaidEnvironment",
@@ -283,14 +327,23 @@ __all__ = [
283
327
  "ProductByExternalId",
284
328
  "ProductById",
285
329
  "ProductListResponse",
330
+ "SeatAssignee",
331
+ "SeatAssignmentStatus",
286
332
  "Signal",
333
+ "TestWebhookRequestWebhookName",
287
334
  "UpdateContactRequest",
288
335
  "UpdateContactRequestRolesItem",
289
336
  "UpdateCustomerRequest",
290
337
  "UpdateProductRequest",
338
+ "UpdateWebhookRequestWebhookName",
291
339
  "ValueReceiptDetail",
292
340
  "ValueReceiptListResponse",
293
341
  "ValueReceiptSummary",
342
+ "Webhook",
343
+ "WebhookDeliveryStatus",
344
+ "WebhookListResponse",
345
+ "WebhookName",
346
+ "WebhookTestResponse",
294
347
  "__version__",
295
348
  "checkouts",
296
349
  "contacts",
@@ -302,4 +355,5 @@ __all__ = [
302
355
  "products",
303
356
  "signals",
304
357
  "value_receipts",
358
+ "webhooks",
305
359
  ]
@@ -6,6 +6,7 @@ import typing
6
6
  from ..core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
7
7
  from ..core.request_options import RequestOptions
8
8
  from ..types.checkout import Checkout
9
+ from ..types.checkout_details import CheckoutDetails
9
10
  from ..types.checkout_list_response import CheckoutListResponse
10
11
  from ..types.checkout_product_input import CheckoutProductInput
11
12
  from ..types.empty_response import EmptyResponse
@@ -157,7 +158,7 @@ class CheckoutsClient:
157
158
  )
158
159
  return _response.data
159
160
 
160
- def get_checkout(self, id: str, *, request_options: typing.Optional[RequestOptions] = None) -> Checkout:
161
+ def get_checkout(self, id: str, *, request_options: typing.Optional[RequestOptions] = None) -> CheckoutDetails:
161
162
  """
162
163
  Get a checkout by ID
163
164
 
@@ -170,7 +171,7 @@ class CheckoutsClient:
170
171
 
171
172
  Returns
172
173
  -------
173
- Checkout
174
+ CheckoutDetails
174
175
  200
175
176
 
176
177
  Examples
@@ -375,7 +376,9 @@ class AsyncCheckoutsClient:
375
376
  )
376
377
  return _response.data
377
378
 
378
- async def get_checkout(self, id: str, *, request_options: typing.Optional[RequestOptions] = None) -> Checkout:
379
+ async def get_checkout(
380
+ self, id: str, *, request_options: typing.Optional[RequestOptions] = None
381
+ ) -> CheckoutDetails:
379
382
  """
380
383
  Get a checkout by ID
381
384
 
@@ -388,7 +391,7 @@ class AsyncCheckoutsClient:
388
391
 
389
392
  Returns
390
393
  -------
391
- Checkout
394
+ CheckoutDetails
392
395
  200
393
396
 
394
397
  Examples
@@ -16,6 +16,7 @@ from ..errors.forbidden_error import ForbiddenError
16
16
  from ..errors.internal_server_error import InternalServerError
17
17
  from ..errors.not_found_error import NotFoundError
18
18
  from ..types.checkout import Checkout
19
+ from ..types.checkout_details import CheckoutDetails
19
20
  from ..types.checkout_list_response import CheckoutListResponse
20
21
  from ..types.checkout_product_input import CheckoutProductInput
21
22
  from ..types.empty_response import EmptyResponse
@@ -253,7 +254,7 @@ class RawCheckoutsClient:
253
254
 
254
255
  def get_checkout(
255
256
  self, id: str, *, request_options: typing.Optional[RequestOptions] = None
256
- ) -> HttpResponse[Checkout]:
257
+ ) -> HttpResponse[CheckoutDetails]:
257
258
  """
258
259
  Get a checkout by ID
259
260
 
@@ -266,7 +267,7 @@ class RawCheckoutsClient:
266
267
 
267
268
  Returns
268
269
  -------
269
- HttpResponse[Checkout]
270
+ HttpResponse[CheckoutDetails]
270
271
  200
271
272
  """
272
273
  _response = self._client_wrapper.httpx_client.request(
@@ -277,9 +278,9 @@ class RawCheckoutsClient:
277
278
  try:
278
279
  if 200 <= _response.status_code < 300:
279
280
  _data = typing.cast(
280
- Checkout,
281
+ CheckoutDetails,
281
282
  parse_obj_as(
282
- type_=Checkout, # type: ignore
283
+ type_=CheckoutDetails, # type: ignore
283
284
  object_=_response.json(),
284
285
  ),
285
286
  )
@@ -621,7 +622,7 @@ class AsyncRawCheckoutsClient:
621
622
 
622
623
  async def get_checkout(
623
624
  self, id: str, *, request_options: typing.Optional[RequestOptions] = None
624
- ) -> AsyncHttpResponse[Checkout]:
625
+ ) -> AsyncHttpResponse[CheckoutDetails]:
625
626
  """
626
627
  Get a checkout by ID
627
628
 
@@ -634,7 +635,7 @@ class AsyncRawCheckoutsClient:
634
635
 
635
636
  Returns
636
637
  -------
637
- AsyncHttpResponse[Checkout]
638
+ AsyncHttpResponse[CheckoutDetails]
638
639
  200
639
640
  """
640
641
  _response = await self._client_wrapper.httpx_client.request(
@@ -645,9 +646,9 @@ class AsyncRawCheckoutsClient:
645
646
  try:
646
647
  if 200 <= _response.status_code < 300:
647
648
  _data = typing.cast(
648
- Checkout,
649
+ CheckoutDetails,
649
650
  parse_obj_as(
650
- type_=Checkout, # type: ignore
651
+ type_=CheckoutDetails, # type: ignore
651
652
  object_=_response.json(),
652
653
  ),
653
654
  )
@@ -19,6 +19,7 @@ if typing.TYPE_CHECKING:
19
19
  from .products.client import AsyncProductsClient, ProductsClient
20
20
  from .signals.client import AsyncSignalsClient, SignalsClient
21
21
  from .value_receipts.client import AsyncValueReceiptsClient, ValueReceiptsClient
22
+ from .webhooks.client import AsyncWebhooksClient, WebhooksClient
22
23
 
23
24
 
24
25
  class Paid:
@@ -96,6 +97,7 @@ class Paid:
96
97
  self._checkouts: typing.Optional[CheckoutsClient] = None
97
98
  self._customer_portals: typing.Optional[CustomerPortalsClient] = None
98
99
  self._value_receipts: typing.Optional[ValueReceiptsClient] = None
100
+ self._webhooks: typing.Optional[WebhooksClient] = None
99
101
 
100
102
  @property
101
103
  def products(self):
@@ -177,6 +179,14 @@ class Paid:
177
179
  self._value_receipts = ValueReceiptsClient(client_wrapper=self._client_wrapper)
178
180
  return self._value_receipts
179
181
 
182
+ @property
183
+ def webhooks(self):
184
+ if self._webhooks is None:
185
+ from .webhooks.client import WebhooksClient # noqa: E402
186
+
187
+ self._webhooks = WebhooksClient(client_wrapper=self._client_wrapper)
188
+ return self._webhooks
189
+
180
190
 
181
191
  class AsyncPaid:
182
192
  """
@@ -253,6 +263,7 @@ class AsyncPaid:
253
263
  self._checkouts: typing.Optional[AsyncCheckoutsClient] = None
254
264
  self._customer_portals: typing.Optional[AsyncCustomerPortalsClient] = None
255
265
  self._value_receipts: typing.Optional[AsyncValueReceiptsClient] = None
266
+ self._webhooks: typing.Optional[AsyncWebhooksClient] = None
256
267
 
257
268
  @property
258
269
  def products(self):
@@ -334,6 +345,14 @@ class AsyncPaid:
334
345
  self._value_receipts = AsyncValueReceiptsClient(client_wrapper=self._client_wrapper)
335
346
  return self._value_receipts
336
347
 
348
+ @property
349
+ def webhooks(self):
350
+ if self._webhooks is None:
351
+ from .webhooks.client import AsyncWebhooksClient # noqa: E402
352
+
353
+ self._webhooks = AsyncWebhooksClient(client_wrapper=self._client_wrapper)
354
+ return self._webhooks
355
+
337
356
 
338
357
  def _get_base_url(*, base_url: typing.Optional[str] = None, environment: PaidEnvironment) -> str:
339
358
  if base_url is not None:
@@ -24,12 +24,12 @@ class BaseClientWrapper:
24
24
  import platform
25
25
 
26
26
  headers: typing.Dict[str, str] = {
27
- "User-Agent": "paid-python/1.7.2",
27
+ "User-Agent": "paid-python/1.8.0",
28
28
  "X-Fern-Language": "Python",
29
29
  "X-Fern-Runtime": f"python/{platform.python_version()}",
30
30
  "X-Fern-Platform": f"{platform.system().lower()}/{platform.release()}",
31
31
  "X-Fern-SDK-Name": "paid-python",
32
- "X-Fern-SDK-Version": "1.7.2",
32
+ "X-Fern-SDK-Version": "1.8.0",
33
33
  **(self.get_custom_headers() or {}),
34
34
  }
35
35
  headers["Authorization"] = f"Bearer {self._get_token()}"
@@ -10,6 +10,8 @@ from ..types.customer import Customer
10
10
  from ..types.customer_billing_address import CustomerBillingAddress
11
11
  from ..types.customer_creation_state import CustomerCreationState
12
12
  from ..types.customer_list_response import CustomerListResponse
13
+ from ..types.customer_user import CustomerUser
14
+ from ..types.customer_user_status import CustomerUserStatus
13
15
  from ..types.empty_response import EmptyResponse
14
16
  from .raw_client import AsyncRawCustomersClient, RawCustomersClient
15
17
 
@@ -502,6 +504,65 @@ class CustomersClient:
502
504
  )
503
505
  return _response.data
504
506
 
507
+ def upsert_customer_user_by_external_id(
508
+ self,
509
+ customer_external_id: str,
510
+ user_external_id: str,
511
+ *,
512
+ name: typing.Optional[str] = OMIT,
513
+ email: typing.Optional[str] = OMIT,
514
+ metadata: typing.Optional[typing.Dict[str, typing.Any]] = OMIT,
515
+ status: typing.Optional[CustomerUserStatus] = OMIT,
516
+ request_options: typing.Optional[RequestOptions] = None,
517
+ ) -> CustomerUser:
518
+ """
519
+ Create or update a customer user using customer and user external IDs
520
+
521
+ Parameters
522
+ ----------
523
+ customer_external_id : str
524
+
525
+ user_external_id : str
526
+
527
+ name : typing.Optional[str]
528
+
529
+ email : typing.Optional[str]
530
+
531
+ metadata : typing.Optional[typing.Dict[str, typing.Any]]
532
+
533
+ status : typing.Optional[CustomerUserStatus]
534
+
535
+ request_options : typing.Optional[RequestOptions]
536
+ Request-specific configuration.
537
+
538
+ Returns
539
+ -------
540
+ CustomerUser
541
+ 200
542
+
543
+ Examples
544
+ --------
545
+ from paid import Paid
546
+
547
+ client = Paid(
548
+ token="YOUR_TOKEN",
549
+ )
550
+ client.customers.upsert_customer_user_by_external_id(
551
+ customer_external_id="customerExternalId",
552
+ user_external_id="userExternalId",
553
+ )
554
+ """
555
+ _response = self._raw_client.upsert_customer_user_by_external_id(
556
+ customer_external_id,
557
+ user_external_id,
558
+ name=name,
559
+ email=email,
560
+ metadata=metadata,
561
+ status=status,
562
+ request_options=request_options,
563
+ )
564
+ return _response.data
565
+
505
566
 
506
567
  class AsyncCustomersClient:
507
568
  def __init__(self, *, client_wrapper: AsyncClientWrapper):
@@ -1067,3 +1128,70 @@ class AsyncCustomersClient:
1067
1128
  external_id, request_options=request_options
1068
1129
  )
1069
1130
  return _response.data
1131
+
1132
+ async def upsert_customer_user_by_external_id(
1133
+ self,
1134
+ customer_external_id: str,
1135
+ user_external_id: str,
1136
+ *,
1137
+ name: typing.Optional[str] = OMIT,
1138
+ email: typing.Optional[str] = OMIT,
1139
+ metadata: typing.Optional[typing.Dict[str, typing.Any]] = OMIT,
1140
+ status: typing.Optional[CustomerUserStatus] = OMIT,
1141
+ request_options: typing.Optional[RequestOptions] = None,
1142
+ ) -> CustomerUser:
1143
+ """
1144
+ Create or update a customer user using customer and user external IDs
1145
+
1146
+ Parameters
1147
+ ----------
1148
+ customer_external_id : str
1149
+
1150
+ user_external_id : str
1151
+
1152
+ name : typing.Optional[str]
1153
+
1154
+ email : typing.Optional[str]
1155
+
1156
+ metadata : typing.Optional[typing.Dict[str, typing.Any]]
1157
+
1158
+ status : typing.Optional[CustomerUserStatus]
1159
+
1160
+ request_options : typing.Optional[RequestOptions]
1161
+ Request-specific configuration.
1162
+
1163
+ Returns
1164
+ -------
1165
+ CustomerUser
1166
+ 200
1167
+
1168
+ Examples
1169
+ --------
1170
+ import asyncio
1171
+
1172
+ from paid import AsyncPaid
1173
+
1174
+ client = AsyncPaid(
1175
+ token="YOUR_TOKEN",
1176
+ )
1177
+
1178
+
1179
+ async def main() -> None:
1180
+ await client.customers.upsert_customer_user_by_external_id(
1181
+ customer_external_id="customerExternalId",
1182
+ user_external_id="userExternalId",
1183
+ )
1184
+
1185
+
1186
+ asyncio.run(main())
1187
+ """
1188
+ _response = await self._raw_client.upsert_customer_user_by_external_id(
1189
+ customer_external_id,
1190
+ user_external_id,
1191
+ name=name,
1192
+ email=email,
1193
+ metadata=metadata,
1194
+ status=status,
1195
+ request_options=request_options,
1196
+ )
1197
+ return _response.data