paid-python 1.7.1__tar.gz → 1.7.2__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 (170) hide show
  1. {paid_python-1.7.1 → paid_python-1.7.2}/PKG-INFO +1 -1
  2. {paid_python-1.7.1 → paid_python-1.7.2}/pyproject.toml +1 -1
  3. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/__init__.py +23 -1
  4. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/checkouts/client.py +10 -0
  5. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/checkouts/raw_client.py +10 -0
  6. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/client.py +19 -0
  7. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/core/client_wrapper.py +2 -2
  8. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/customers/raw_client.py +44 -0
  9. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/types/__init__.py +9 -0
  10. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/types/checkout.py +3 -0
  11. paid_python-1.7.2/src/paid/types/value_receipt_detail.py +64 -0
  12. paid_python-1.7.2/src/paid/types/value_receipt_list_response.py +21 -0
  13. paid_python-1.7.2/src/paid/types/value_receipt_summary.py +55 -0
  14. paid_python-1.7.2/src/paid/value_receipts/__init__.py +4 -0
  15. paid_python-1.7.2/src/paid/value_receipts/client.py +373 -0
  16. paid_python-1.7.2/src/paid/value_receipts/raw_client.py +560 -0
  17. {paid_python-1.7.1 → paid_python-1.7.2}/LICENSE +0 -0
  18. {paid_python-1.7.1 → paid_python-1.7.2}/README.md +0 -0
  19. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/checkouts/__init__.py +0 -0
  20. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/checkouts/types/__init__.py +0 -0
  21. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/checkouts/types/list_checkouts_request_status.py +0 -0
  22. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/contacts/__init__.py +0 -0
  23. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/contacts/client.py +0 -0
  24. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/contacts/raw_client.py +0 -0
  25. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/contacts/types/__init__.py +0 -0
  26. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/contacts/types/create_contact_request_roles_item.py +0 -0
  27. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/core/__init__.py +0 -0
  28. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/core/api_error.py +0 -0
  29. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/core/datetime_utils.py +0 -0
  30. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/core/file.py +0 -0
  31. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/core/force_multipart.py +0 -0
  32. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/core/http_client.py +0 -0
  33. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/core/http_response.py +0 -0
  34. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/core/http_sse/__init__.py +0 -0
  35. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/core/http_sse/_api.py +0 -0
  36. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/core/http_sse/_decoders.py +0 -0
  37. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/core/http_sse/_exceptions.py +0 -0
  38. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/core/http_sse/_models.py +0 -0
  39. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/core/jsonable_encoder.py +0 -0
  40. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/core/pydantic_utilities.py +0 -0
  41. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/core/query_encoder.py +0 -0
  42. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/core/remove_none_from_dict.py +0 -0
  43. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/core/request_options.py +0 -0
  44. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/core/serialization.py +0 -0
  45. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/credits/__init__.py +0 -0
  46. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/credits/client.py +0 -0
  47. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/credits/raw_client.py +0 -0
  48. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/customer_portals/__init__.py +0 -0
  49. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/customer_portals/client.py +0 -0
  50. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/customer_portals/raw_client.py +0 -0
  51. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/customers/__init__.py +0 -0
  52. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/customers/client.py +0 -0
  53. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/environment.py +0 -0
  54. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/errors/__init__.py +0 -0
  55. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/errors/bad_request_error.py +0 -0
  56. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/errors/forbidden_error.py +0 -0
  57. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/errors/internal_server_error.py +0 -0
  58. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/errors/not_found_error.py +0 -0
  59. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/invoices/__init__.py +0 -0
  60. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/invoices/client.py +0 -0
  61. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/invoices/raw_client.py +0 -0
  62. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/logger.py +0 -0
  63. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/orders/__init__.py +0 -0
  64. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/orders/client.py +0 -0
  65. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/orders/raw_client.py +0 -0
  66. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/products/__init__.py +0 -0
  67. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/products/client.py +0 -0
  68. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/products/raw_client.py +0 -0
  69. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/py.typed +0 -0
  70. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/signals/__init__.py +0 -0
  71. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/signals/client.py +0 -0
  72. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/signals/raw_client.py +0 -0
  73. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/tracing/__init__.py +0 -0
  74. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/tracing/anthropic_patches/__init__.py +0 -0
  75. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/tracing/anthropic_patches/patches.py +0 -0
  76. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/tracing/autoinstrumentation.py +0 -0
  77. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/tracing/context_data.py +0 -0
  78. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/tracing/context_manager.py +0 -0
  79. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/tracing/distributed_tracing.py +0 -0
  80. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/tracing/gemini_patches/__init__.py +0 -0
  81. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/tracing/gemini_patches/patches.py +0 -0
  82. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/tracing/openai_agents_patches/__init__.py +0 -0
  83. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/tracing/openai_agents_patches/patches.py +0 -0
  84. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/tracing/openai_patches/__init__.py +0 -0
  85. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/tracing/openai_patches/patches.py +0 -0
  86. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/tracing/signal.py +0 -0
  87. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/tracing/tracing.py +0 -0
  88. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/tracing/wrappers/__init__.py +0 -0
  89. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/tracing/wrappers/anthropic/__init__.py +0 -0
  90. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/tracing/wrappers/anthropic/anthropicWrapper.py +0 -0
  91. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/tracing/wrappers/bedrock/__init__.py +0 -0
  92. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/tracing/wrappers/bedrock/bedrockWrapper.py +0 -0
  93. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/tracing/wrappers/gemini/__init__.py +0 -0
  94. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/tracing/wrappers/gemini/geminiWrapper.py +0 -0
  95. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/tracing/wrappers/langchain/__init__.py +0 -0
  96. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/tracing/wrappers/langchain/paidLangChainCallback.py +0 -0
  97. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/tracing/wrappers/mistral/__init__.py +0 -0
  98. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/tracing/wrappers/mistral/mistralWrapper.py +0 -0
  99. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/tracing/wrappers/openai/__init__.py +0 -0
  100. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/tracing/wrappers/openai/openAiWrapper.py +0 -0
  101. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/tracing/wrappers/openai_agents/__init__.py +0 -0
  102. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/tracing/wrappers/openai_agents/openaiAgentsHook.py +0 -0
  103. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/tracing/wrappers/utils.py +0 -0
  104. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/types/attribution.py +0 -0
  105. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/types/bulk_signals_response.py +0 -0
  106. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/types/checkout_list_response.py +0 -0
  107. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/types/checkout_product.py +0 -0
  108. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/types/checkout_product_input.py +0 -0
  109. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/types/checkout_status.py +0 -0
  110. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/types/contact.py +0 -0
  111. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/types/contact_billing_address.py +0 -0
  112. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/types/contact_list_response.py +0 -0
  113. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/types/contact_roles_item.py +0 -0
  114. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/types/create_order_line_attribute_request.py +0 -0
  115. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/types/create_order_line_attribute_request_pricing.py +0 -0
  116. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/types/create_order_line_attribute_request_pricing_billing_frequency.py +0 -0
  117. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/types/create_order_line_attribute_request_pricing_billing_type.py +0 -0
  118. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/types/create_order_line_attribute_request_pricing_charge_type.py +0 -0
  119. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/types/create_order_line_attribute_request_pricing_credit_benefits_item.py +0 -0
  120. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/types/create_order_line_attribute_request_pricing_credit_benefits_item_allocation_cadence.py +0 -0
  121. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/types/create_order_line_attribute_request_pricing_credit_benefits_item_credit_grant_timing.py +0 -0
  122. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/types/create_order_line_attribute_request_pricing_credit_benefits_item_recipient.py +0 -0
  123. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/types/create_order_line_attribute_request_pricing_credit_benefits_item_rollover_duration_unit.py +0 -0
  124. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/types/create_order_line_attribute_request_pricing_price_points.py +0 -0
  125. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/types/create_order_line_attribute_request_pricing_price_points_tiers_item.py +0 -0
  126. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/types/create_order_line_attribute_request_pricing_price_points_tiers_item_tier_billing_type.py +0 -0
  127. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/types/create_order_line_attribute_request_pricing_pricing_model.py +0 -0
  128. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/types/create_order_line_attribute_request_pricing_signal_type.py +0 -0
  129. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/types/create_order_line_request.py +0 -0
  130. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/types/credit_balance.py +0 -0
  131. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/types/credit_balance_list_response.py +0 -0
  132. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/types/credit_balance_recipient.py +0 -0
  133. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/types/credit_currency.py +0 -0
  134. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/types/credit_currency_list_response.py +0 -0
  135. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/types/customer.py +0 -0
  136. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/types/customer_attribution.py +0 -0
  137. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/types/customer_billing_address.py +0 -0
  138. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/types/customer_by_external_id.py +0 -0
  139. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/types/customer_by_id.py +0 -0
  140. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/types/customer_creation_state.py +0 -0
  141. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/types/customer_list_response.py +0 -0
  142. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/types/customer_portal.py +0 -0
  143. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/types/customer_portal_status.py +0 -0
  144. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/types/empty_response.py +0 -0
  145. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/types/error_response.py +0 -0
  146. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/types/invoice.py +0 -0
  147. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/types/invoice_line.py +0 -0
  148. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/types/invoice_line_payment_status.py +0 -0
  149. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/types/invoice_lines_response.py +0 -0
  150. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/types/invoice_list_response.py +0 -0
  151. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/types/invoice_payment_status.py +0 -0
  152. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/types/invoice_source.py +0 -0
  153. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/types/invoice_status.py +0 -0
  154. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/types/invoice_tax_status.py +0 -0
  155. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/types/order.py +0 -0
  156. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/types/order_creation_state.py +0 -0
  157. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/types/order_line.py +0 -0
  158. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/types/order_lines_response.py +0 -0
  159. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/types/order_list_response.py +0 -0
  160. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/types/pagination.py +0 -0
  161. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/types/product.py +0 -0
  162. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/types/product_by_external_id.py +0 -0
  163. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/types/product_by_id.py +0 -0
  164. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/types/product_list_response.py +0 -0
  165. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/types/signal.py +0 -0
  166. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/types/update_contact_request.py +0 -0
  167. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/types/update_contact_request_roles_item.py +0 -0
  168. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/types/update_customer_request.py +0 -0
  169. {paid_python-1.7.1 → paid_python-1.7.2}/src/paid/types/update_product_request.py +0 -0
  170. {paid_python-1.7.1 → paid_python-1.7.2}/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.1
3
+ Version: 1.7.2
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.1"
7
+ version = "1.7.2"
8
8
  description = ""
9
9
  readme = "README.md"
10
10
  authors = []
@@ -74,9 +74,23 @@ if typing.TYPE_CHECKING:
74
74
  UpdateContactRequestRolesItem,
75
75
  UpdateCustomerRequest,
76
76
  UpdateProductRequest,
77
+ ValueReceiptDetail,
78
+ ValueReceiptListResponse,
79
+ ValueReceiptSummary,
77
80
  )
78
81
  from .errors import BadRequestError, ForbiddenError, InternalServerError, NotFoundError
79
- from . import checkouts, contacts, credits, customer_portals, customers, invoices, orders, products, signals
82
+ from . import (
83
+ checkouts,
84
+ contacts,
85
+ credits,
86
+ customer_portals,
87
+ customers,
88
+ invoices,
89
+ orders,
90
+ products,
91
+ signals,
92
+ value_receipts,
93
+ )
80
94
  from .checkouts import ListCheckoutsRequestStatus
81
95
  from .client import AsyncPaid, Paid
82
96
  from .contacts import CreateContactRequestRolesItem
@@ -159,6 +173,9 @@ _dynamic_imports: typing.Dict[str, str] = {
159
173
  "UpdateContactRequestRolesItem": ".types",
160
174
  "UpdateCustomerRequest": ".types",
161
175
  "UpdateProductRequest": ".types",
176
+ "ValueReceiptDetail": ".types",
177
+ "ValueReceiptListResponse": ".types",
178
+ "ValueReceiptSummary": ".types",
162
179
  "__version__": ".version",
163
180
  "checkouts": ".checkouts",
164
181
  "contacts": ".contacts",
@@ -169,6 +186,7 @@ _dynamic_imports: typing.Dict[str, str] = {
169
186
  "orders": ".orders",
170
187
  "products": ".products",
171
188
  "signals": ".signals",
189
+ "value_receipts": ".value_receipts",
172
190
  }
173
191
 
174
192
 
@@ -270,6 +288,9 @@ __all__ = [
270
288
  "UpdateContactRequestRolesItem",
271
289
  "UpdateCustomerRequest",
272
290
  "UpdateProductRequest",
291
+ "ValueReceiptDetail",
292
+ "ValueReceiptListResponse",
293
+ "ValueReceiptSummary",
273
294
  "__version__",
274
295
  "checkouts",
275
296
  "contacts",
@@ -280,4 +301,5 @@ __all__ = [
280
301
  "orders",
281
302
  "products",
282
303
  "signals",
304
+ "value_receipts",
283
305
  ]
@@ -85,6 +85,7 @@ class CheckoutsClient:
85
85
  collect_address: typing.Optional[bool] = OMIT,
86
86
  collect_phone: typing.Optional[bool] = OMIT,
87
87
  single_use: typing.Optional[bool] = OMIT,
88
+ currency: typing.Optional[str] = OMIT,
88
89
  request_options: typing.Optional[RequestOptions] = None,
89
90
  ) -> Checkout:
90
91
  """
@@ -113,6 +114,9 @@ class CheckoutsClient:
113
114
 
114
115
  single_use : typing.Optional[bool]
115
116
 
117
+ currency : typing.Optional[str]
118
+ Lock checkout to a specific currency. Omit to allow all currencies supported by the selected plans.
119
+
116
120
  request_options : typing.Optional[RequestOptions]
117
121
  Request-specific configuration.
118
122
 
@@ -148,6 +152,7 @@ class CheckoutsClient:
148
152
  collect_address=collect_address,
149
153
  collect_phone=collect_phone,
150
154
  single_use=single_use,
155
+ currency=currency,
151
156
  request_options=request_options,
152
157
  )
153
158
  return _response.data
@@ -290,6 +295,7 @@ class AsyncCheckoutsClient:
290
295
  collect_address: typing.Optional[bool] = OMIT,
291
296
  collect_phone: typing.Optional[bool] = OMIT,
292
297
  single_use: typing.Optional[bool] = OMIT,
298
+ currency: typing.Optional[str] = OMIT,
293
299
  request_options: typing.Optional[RequestOptions] = None,
294
300
  ) -> Checkout:
295
301
  """
@@ -318,6 +324,9 @@ class AsyncCheckoutsClient:
318
324
 
319
325
  single_use : typing.Optional[bool]
320
326
 
327
+ currency : typing.Optional[str]
328
+ Lock checkout to a specific currency. Omit to allow all currencies supported by the selected plans.
329
+
321
330
  request_options : typing.Optional[RequestOptions]
322
331
  Request-specific configuration.
323
332
 
@@ -361,6 +370,7 @@ class AsyncCheckoutsClient:
361
370
  collect_address=collect_address,
362
371
  collect_phone=collect_phone,
363
372
  single_use=single_use,
373
+ currency=currency,
364
374
  request_options=request_options,
365
375
  )
366
376
  return _response.data
@@ -128,6 +128,7 @@ class RawCheckoutsClient:
128
128
  collect_address: typing.Optional[bool] = OMIT,
129
129
  collect_phone: typing.Optional[bool] = OMIT,
130
130
  single_use: typing.Optional[bool] = OMIT,
131
+ currency: typing.Optional[str] = OMIT,
131
132
  request_options: typing.Optional[RequestOptions] = None,
132
133
  ) -> HttpResponse[Checkout]:
133
134
  """
@@ -156,6 +157,9 @@ class RawCheckoutsClient:
156
157
 
157
158
  single_use : typing.Optional[bool]
158
159
 
160
+ currency : typing.Optional[str]
161
+ Lock checkout to a specific currency. Omit to allow all currencies supported by the selected plans.
162
+
159
163
  request_options : typing.Optional[RequestOptions]
160
164
  Request-specific configuration.
161
165
 
@@ -180,6 +184,7 @@ class RawCheckoutsClient:
180
184
  "collectAddress": collect_address,
181
185
  "collectPhone": collect_phone,
182
186
  "singleUse": single_use,
187
+ "currency": currency,
183
188
  },
184
189
  headers={
185
190
  "content-type": "application/json",
@@ -491,6 +496,7 @@ class AsyncRawCheckoutsClient:
491
496
  collect_address: typing.Optional[bool] = OMIT,
492
497
  collect_phone: typing.Optional[bool] = OMIT,
493
498
  single_use: typing.Optional[bool] = OMIT,
499
+ currency: typing.Optional[str] = OMIT,
494
500
  request_options: typing.Optional[RequestOptions] = None,
495
501
  ) -> AsyncHttpResponse[Checkout]:
496
502
  """
@@ -519,6 +525,9 @@ class AsyncRawCheckoutsClient:
519
525
 
520
526
  single_use : typing.Optional[bool]
521
527
 
528
+ currency : typing.Optional[str]
529
+ Lock checkout to a specific currency. Omit to allow all currencies supported by the selected plans.
530
+
522
531
  request_options : typing.Optional[RequestOptions]
523
532
  Request-specific configuration.
524
533
 
@@ -543,6 +552,7 @@ class AsyncRawCheckoutsClient:
543
552
  "collectAddress": collect_address,
544
553
  "collectPhone": collect_phone,
545
554
  "singleUse": single_use,
555
+ "currency": currency,
546
556
  },
547
557
  headers={
548
558
  "content-type": "application/json",
@@ -18,6 +18,7 @@ if typing.TYPE_CHECKING:
18
18
  from .orders.client import AsyncOrdersClient, OrdersClient
19
19
  from .products.client import AsyncProductsClient, ProductsClient
20
20
  from .signals.client import AsyncSignalsClient, SignalsClient
21
+ from .value_receipts.client import AsyncValueReceiptsClient, ValueReceiptsClient
21
22
 
22
23
 
23
24
  class Paid:
@@ -94,6 +95,7 @@ class Paid:
94
95
  self._credits: typing.Optional[CreditsClient] = None
95
96
  self._checkouts: typing.Optional[CheckoutsClient] = None
96
97
  self._customer_portals: typing.Optional[CustomerPortalsClient] = None
98
+ self._value_receipts: typing.Optional[ValueReceiptsClient] = None
97
99
 
98
100
  @property
99
101
  def products(self):
@@ -167,6 +169,14 @@ class Paid:
167
169
  self._customer_portals = CustomerPortalsClient(client_wrapper=self._client_wrapper)
168
170
  return self._customer_portals
169
171
 
172
+ @property
173
+ def value_receipts(self):
174
+ if self._value_receipts is None:
175
+ from .value_receipts.client import ValueReceiptsClient # noqa: E402
176
+
177
+ self._value_receipts = ValueReceiptsClient(client_wrapper=self._client_wrapper)
178
+ return self._value_receipts
179
+
170
180
 
171
181
  class AsyncPaid:
172
182
  """
@@ -242,6 +252,7 @@ class AsyncPaid:
242
252
  self._credits: typing.Optional[AsyncCreditsClient] = None
243
253
  self._checkouts: typing.Optional[AsyncCheckoutsClient] = None
244
254
  self._customer_portals: typing.Optional[AsyncCustomerPortalsClient] = None
255
+ self._value_receipts: typing.Optional[AsyncValueReceiptsClient] = None
245
256
 
246
257
  @property
247
258
  def products(self):
@@ -315,6 +326,14 @@ class AsyncPaid:
315
326
  self._customer_portals = AsyncCustomerPortalsClient(client_wrapper=self._client_wrapper)
316
327
  return self._customer_portals
317
328
 
329
+ @property
330
+ def value_receipts(self):
331
+ if self._value_receipts is None:
332
+ from .value_receipts.client import AsyncValueReceiptsClient # noqa: E402
333
+
334
+ self._value_receipts = AsyncValueReceiptsClient(client_wrapper=self._client_wrapper)
335
+ return self._value_receipts
336
+
318
337
 
319
338
  def _get_base_url(*, base_url: typing.Optional[str] = None, environment: PaidEnvironment) -> str:
320
339
  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.1",
27
+ "User-Agent": "paid-python/1.7.2",
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.1",
32
+ "X-Fern-SDK-Version": "1.7.2",
33
33
  **(self.get_custom_headers() or {}),
34
34
  }
35
35
  headers["Authorization"] = f"Bearer {self._get_token()}"
@@ -476,6 +476,17 @@ class RawCustomersClient:
476
476
  ),
477
477
  )
478
478
  return HttpResponse(response=_response, data=_data)
479
+ if _response.status_code == 400:
480
+ raise BadRequestError(
481
+ headers=dict(_response.headers),
482
+ body=typing.cast(
483
+ ErrorResponse,
484
+ parse_obj_as(
485
+ type_=ErrorResponse, # type: ignore
486
+ object_=_response.json(),
487
+ ),
488
+ ),
489
+ )
479
490
  if _response.status_code == 403:
480
491
  raise ForbiddenError(
481
492
  headers=dict(_response.headers),
@@ -755,6 +766,17 @@ class RawCustomersClient:
755
766
  ),
756
767
  )
757
768
  return HttpResponse(response=_response, data=_data)
769
+ if _response.status_code == 400:
770
+ raise BadRequestError(
771
+ headers=dict(_response.headers),
772
+ body=typing.cast(
773
+ ErrorResponse,
774
+ parse_obj_as(
775
+ type_=ErrorResponse, # type: ignore
776
+ object_=_response.json(),
777
+ ),
778
+ ),
779
+ )
758
780
  if _response.status_code == 403:
759
781
  raise ForbiddenError(
760
782
  headers=dict(_response.headers),
@@ -1385,6 +1407,17 @@ class AsyncRawCustomersClient:
1385
1407
  ),
1386
1408
  )
1387
1409
  return AsyncHttpResponse(response=_response, data=_data)
1410
+ if _response.status_code == 400:
1411
+ raise BadRequestError(
1412
+ headers=dict(_response.headers),
1413
+ body=typing.cast(
1414
+ ErrorResponse,
1415
+ parse_obj_as(
1416
+ type_=ErrorResponse, # type: ignore
1417
+ object_=_response.json(),
1418
+ ),
1419
+ ),
1420
+ )
1388
1421
  if _response.status_code == 403:
1389
1422
  raise ForbiddenError(
1390
1423
  headers=dict(_response.headers),
@@ -1664,6 +1697,17 @@ class AsyncRawCustomersClient:
1664
1697
  ),
1665
1698
  )
1666
1699
  return AsyncHttpResponse(response=_response, data=_data)
1700
+ if _response.status_code == 400:
1701
+ raise BadRequestError(
1702
+ headers=dict(_response.headers),
1703
+ body=typing.cast(
1704
+ ErrorResponse,
1705
+ parse_obj_as(
1706
+ type_=ErrorResponse, # type: ignore
1707
+ object_=_response.json(),
1708
+ ),
1709
+ ),
1710
+ )
1667
1711
  if _response.status_code == 403:
1668
1712
  raise ForbiddenError(
1669
1713
  headers=dict(_response.headers),
@@ -99,6 +99,9 @@ if typing.TYPE_CHECKING:
99
99
  from .update_contact_request_roles_item import UpdateContactRequestRolesItem
100
100
  from .update_customer_request import UpdateCustomerRequest
101
101
  from .update_product_request import UpdateProductRequest
102
+ from .value_receipt_detail import ValueReceiptDetail
103
+ from .value_receipt_list_response import ValueReceiptListResponse
104
+ from .value_receipt_summary import ValueReceiptSummary
102
105
  _dynamic_imports: typing.Dict[str, str] = {
103
106
  "Attribution": ".attribution",
104
107
  "BulkSignalsResponse": ".bulk_signals_response",
@@ -167,6 +170,9 @@ _dynamic_imports: typing.Dict[str, str] = {
167
170
  "UpdateContactRequestRolesItem": ".update_contact_request_roles_item",
168
171
  "UpdateCustomerRequest": ".update_customer_request",
169
172
  "UpdateProductRequest": ".update_product_request",
173
+ "ValueReceiptDetail": ".value_receipt_detail",
174
+ "ValueReceiptListResponse": ".value_receipt_list_response",
175
+ "ValueReceiptSummary": ".value_receipt_summary",
170
176
  }
171
177
 
172
178
 
@@ -259,4 +265,7 @@ __all__ = [
259
265
  "UpdateContactRequestRolesItem",
260
266
  "UpdateCustomerRequest",
261
267
  "UpdateProductRequest",
268
+ "ValueReceiptDetail",
269
+ "ValueReceiptListResponse",
270
+ "ValueReceiptSummary",
262
271
  ]
@@ -37,6 +37,9 @@ class Checkout(UniversalBaseModel):
37
37
  bool, FieldMetadata(alias="collectPhone"), pydantic.Field(alias="collectPhone")
38
38
  ]
39
39
  single_use: typing_extensions.Annotated[bool, FieldMetadata(alias="singleUse"), pydantic.Field(alias="singleUse")]
40
+ allowed_currencies: typing_extensions.Annotated[
41
+ typing.List[str], FieldMetadata(alias="allowedCurrencies"), pydantic.Field(alias="allowedCurrencies")
42
+ ]
40
43
  created_at: typing_extensions.Annotated[
41
44
  dt.datetime, FieldMetadata(alias="createdAt"), pydantic.Field(alias="createdAt")
42
45
  ]
@@ -0,0 +1,64 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import datetime as dt
4
+ import typing
5
+
6
+ import pydantic
7
+ import typing_extensions
8
+ from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
9
+ from ..core.serialization import FieldMetadata
10
+
11
+
12
+ class ValueReceiptDetail(UniversalBaseModel):
13
+ id: str
14
+ status: str
15
+ public_url_token: typing_extensions.Annotated[
16
+ str, FieldMetadata(alias="publicUrlToken"), pydantic.Field(alias="publicUrlToken")
17
+ ]
18
+ public_url: typing_extensions.Annotated[str, FieldMetadata(alias="publicUrl"), pydantic.Field(alias="publicUrl")]
19
+ is_published: typing_extensions.Annotated[
20
+ bool, FieldMetadata(alias="isPublished"), pydantic.Field(alias="isPublished")
21
+ ]
22
+ customer_id: typing_extensions.Annotated[
23
+ typing.Optional[str], FieldMetadata(alias="customerId"), pydantic.Field(alias="customerId")
24
+ ] = None
25
+ customer_name: typing_extensions.Annotated[
26
+ typing.Optional[str], FieldMetadata(alias="customerName"), pydantic.Field(alias="customerName")
27
+ ] = None
28
+ customer_external_id: typing_extensions.Annotated[
29
+ typing.Optional[str], FieldMetadata(alias="customerExternalId"), pydantic.Field(alias="customerExternalId")
30
+ ] = None
31
+ order_id: typing_extensions.Annotated[
32
+ typing.Optional[str], FieldMetadata(alias="orderId"), pydantic.Field(alias="orderId")
33
+ ] = None
34
+ currency: str
35
+ start_date: typing_extensions.Annotated[
36
+ typing.Optional[dt.datetime], FieldMetadata(alias="startDate"), pydantic.Field(alias="startDate")
37
+ ] = None
38
+ end_date: typing_extensions.Annotated[
39
+ typing.Optional[dt.datetime], FieldMetadata(alias="endDate"), pydantic.Field(alias="endDate")
40
+ ] = None
41
+ total_delivered_value: typing_extensions.Annotated[
42
+ typing.Optional[float], FieldMetadata(alias="totalDeliveredValue"), pydantic.Field(alias="totalDeliveredValue")
43
+ ] = None
44
+ created_at: typing_extensions.Annotated[
45
+ dt.datetime, FieldMetadata(alias="createdAt"), pydantic.Field(alias="createdAt")
46
+ ]
47
+ published_at: typing_extensions.Annotated[
48
+ typing.Optional[dt.datetime], FieldMetadata(alias="publishedAt"), pydantic.Field(alias="publishedAt")
49
+ ] = None
50
+ publish_expires_at: typing_extensions.Annotated[
51
+ typing.Optional[dt.datetime], FieldMetadata(alias="publishExpiresAt"), pydantic.Field(alias="publishExpiresAt")
52
+ ] = None
53
+ allow_embed: typing_extensions.Annotated[
54
+ bool, FieldMetadata(alias="allowEmbed"), pydantic.Field(alias="allowEmbed")
55
+ ]
56
+
57
+ if IS_PYDANTIC_V2:
58
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
59
+ else:
60
+
61
+ class Config:
62
+ frozen = True
63
+ smart_union = True
64
+ extra = pydantic.Extra.allow
@@ -0,0 +1,21 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ import pydantic
6
+ from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
7
+ from .value_receipt_summary import ValueReceiptSummary
8
+
9
+
10
+ class ValueReceiptListResponse(UniversalBaseModel):
11
+ data: typing.List[ValueReceiptSummary]
12
+ total: int
13
+
14
+ if IS_PYDANTIC_V2:
15
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
16
+ else:
17
+
18
+ class Config:
19
+ frozen = True
20
+ smart_union = True
21
+ extra = pydantic.Extra.allow
@@ -0,0 +1,55 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import datetime as dt
4
+ import typing
5
+
6
+ import pydantic
7
+ import typing_extensions
8
+ from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
9
+ from ..core.serialization import FieldMetadata
10
+
11
+
12
+ class ValueReceiptSummary(UniversalBaseModel):
13
+ id: str
14
+ status: str
15
+ public_url_token: typing_extensions.Annotated[
16
+ str, FieldMetadata(alias="publicUrlToken"), pydantic.Field(alias="publicUrlToken")
17
+ ]
18
+ public_url: typing_extensions.Annotated[str, FieldMetadata(alias="publicUrl"), pydantic.Field(alias="publicUrl")]
19
+ is_published: typing_extensions.Annotated[
20
+ bool, FieldMetadata(alias="isPublished"), pydantic.Field(alias="isPublished")
21
+ ]
22
+ customer_id: typing_extensions.Annotated[
23
+ typing.Optional[str], FieldMetadata(alias="customerId"), pydantic.Field(alias="customerId")
24
+ ] = None
25
+ customer_name: typing_extensions.Annotated[
26
+ typing.Optional[str], FieldMetadata(alias="customerName"), pydantic.Field(alias="customerName")
27
+ ] = None
28
+ customer_external_id: typing_extensions.Annotated[
29
+ typing.Optional[str], FieldMetadata(alias="customerExternalId"), pydantic.Field(alias="customerExternalId")
30
+ ] = None
31
+ order_id: typing_extensions.Annotated[
32
+ typing.Optional[str], FieldMetadata(alias="orderId"), pydantic.Field(alias="orderId")
33
+ ] = None
34
+ currency: str
35
+ start_date: typing_extensions.Annotated[
36
+ typing.Optional[dt.datetime], FieldMetadata(alias="startDate"), pydantic.Field(alias="startDate")
37
+ ] = None
38
+ end_date: typing_extensions.Annotated[
39
+ typing.Optional[dt.datetime], FieldMetadata(alias="endDate"), pydantic.Field(alias="endDate")
40
+ ] = None
41
+ total_delivered_value: typing_extensions.Annotated[
42
+ typing.Optional[float], FieldMetadata(alias="totalDeliveredValue"), pydantic.Field(alias="totalDeliveredValue")
43
+ ] = None
44
+ created_at: typing_extensions.Annotated[
45
+ dt.datetime, FieldMetadata(alias="createdAt"), pydantic.Field(alias="createdAt")
46
+ ]
47
+
48
+ if IS_PYDANTIC_V2:
49
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
50
+ else:
51
+
52
+ class Config:
53
+ frozen = True
54
+ smart_union = True
55
+ extra = pydantic.Extra.allow
@@ -0,0 +1,4 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ # isort: skip_file
4
+