whop-sdk 0.0.1__py3-none-any.whl

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 whop-sdk might be problematic. Click here for more details.

Files changed (212) hide show
  1. whop_sdk/__init__.py +94 -0
  2. whop_sdk/_base_client.py +1995 -0
  3. whop_sdk/_client.py +664 -0
  4. whop_sdk/_compat.py +219 -0
  5. whop_sdk/_constants.py +14 -0
  6. whop_sdk/_exceptions.py +112 -0
  7. whop_sdk/_files.py +123 -0
  8. whop_sdk/_models.py +835 -0
  9. whop_sdk/_qs.py +150 -0
  10. whop_sdk/_resource.py +43 -0
  11. whop_sdk/_response.py +830 -0
  12. whop_sdk/_streaming.py +333 -0
  13. whop_sdk/_types.py +260 -0
  14. whop_sdk/_utils/__init__.py +64 -0
  15. whop_sdk/_utils/_compat.py +45 -0
  16. whop_sdk/_utils/_datetime_parse.py +136 -0
  17. whop_sdk/_utils/_logs.py +25 -0
  18. whop_sdk/_utils/_proxy.py +65 -0
  19. whop_sdk/_utils/_reflection.py +42 -0
  20. whop_sdk/_utils/_resources_proxy.py +24 -0
  21. whop_sdk/_utils/_streams.py +12 -0
  22. whop_sdk/_utils/_sync.py +86 -0
  23. whop_sdk/_utils/_transform.py +457 -0
  24. whop_sdk/_utils/_typing.py +156 -0
  25. whop_sdk/_utils/_utils.py +421 -0
  26. whop_sdk/_version.py +4 -0
  27. whop_sdk/lib/.keep +4 -0
  28. whop_sdk/pagination.py +61 -0
  29. whop_sdk/py.typed +0 -0
  30. whop_sdk/resources/__init__.py +316 -0
  31. whop_sdk/resources/app_builds.py +562 -0
  32. whop_sdk/resources/apps.py +665 -0
  33. whop_sdk/resources/authorized_users.py +336 -0
  34. whop_sdk/resources/chat_channels.py +469 -0
  35. whop_sdk/resources/checkout_configurations.py +464 -0
  36. whop_sdk/resources/companies.py +171 -0
  37. whop_sdk/resources/course_lesson_interactions.py +343 -0
  38. whop_sdk/resources/entries.py +539 -0
  39. whop_sdk/resources/experiences.py +859 -0
  40. whop_sdk/resources/forum_posts.py +512 -0
  41. whop_sdk/resources/invoices.py +633 -0
  42. whop_sdk/resources/ledger_accounts.py +171 -0
  43. whop_sdk/resources/memberships.py +810 -0
  44. whop_sdk/resources/messages.py +446 -0
  45. whop_sdk/resources/payments.py +761 -0
  46. whop_sdk/resources/plans.py +906 -0
  47. whop_sdk/resources/products.py +969 -0
  48. whop_sdk/resources/reactions.py +423 -0
  49. whop_sdk/resources/shipments.py +451 -0
  50. whop_sdk/resources/support_channels.py +455 -0
  51. whop_sdk/resources/transfers.py +488 -0
  52. whop_sdk/resources/users.py +248 -0
  53. whop_sdk/resources/webhooks.py +69 -0
  54. whop_sdk/types/__init__.py +135 -0
  55. whop_sdk/types/app_build_create_params.py +59 -0
  56. whop_sdk/types/app_build_list_params.py +34 -0
  57. whop_sdk/types/app_build_list_response.py +50 -0
  58. whop_sdk/types/app_create_params.py +19 -0
  59. whop_sdk/types/app_list_params.py +54 -0
  60. whop_sdk/types/app_list_response.py +91 -0
  61. whop_sdk/types/app_update_params.py +58 -0
  62. whop_sdk/types/authorized_user_list_params.py +33 -0
  63. whop_sdk/types/authorized_user_list_response.py +33 -0
  64. whop_sdk/types/authorized_user_retrieve_response.py +33 -0
  65. whop_sdk/types/chat_channel_list_params.py +28 -0
  66. whop_sdk/types/chat_channel_list_response.py +43 -0
  67. whop_sdk/types/chat_channel_update_params.py +32 -0
  68. whop_sdk/types/checkout_configuration_create_params.py +129 -0
  69. whop_sdk/types/checkout_configuration_list_params.py +33 -0
  70. whop_sdk/types/checkout_configuration_list_response.py +66 -0
  71. whop_sdk/types/course_lesson_interaction_list_params.py +34 -0
  72. whop_sdk/types/entry_approve_response.py +10 -0
  73. whop_sdk/types/entry_list_params.py +44 -0
  74. whop_sdk/types/entry_list_response.py +56 -0
  75. whop_sdk/types/experience_attach_params.py +12 -0
  76. whop_sdk/types/experience_create_params.py +22 -0
  77. whop_sdk/types/experience_delete_response.py +7 -0
  78. whop_sdk/types/experience_detach_params.py +12 -0
  79. whop_sdk/types/experience_list_params.py +31 -0
  80. whop_sdk/types/experience_list_response.py +47 -0
  81. whop_sdk/types/experience_update_params.py +41 -0
  82. whop_sdk/types/forum_post_create_params.py +85 -0
  83. whop_sdk/types/forum_post_list_params.py +31 -0
  84. whop_sdk/types/forum_post_list_response.py +53 -0
  85. whop_sdk/types/invoice_create_params.py +137 -0
  86. whop_sdk/types/invoice_create_response.py +16 -0
  87. whop_sdk/types/invoice_created_webhook_event.py +26 -0
  88. whop_sdk/types/invoice_list_params.py +50 -0
  89. whop_sdk/types/invoice_paid_webhook_event.py +26 -0
  90. whop_sdk/types/invoice_past_due_webhook_event.py +26 -0
  91. whop_sdk/types/invoice_void_response.py +7 -0
  92. whop_sdk/types/invoice_voided_webhook_event.py +26 -0
  93. whop_sdk/types/ledger_account_retrieve_response.py +78 -0
  94. whop_sdk/types/membership_cancel_params.py +13 -0
  95. whop_sdk/types/membership_list_params.py +70 -0
  96. whop_sdk/types/membership_list_response.py +117 -0
  97. whop_sdk/types/membership_pause_params.py +16 -0
  98. whop_sdk/types/membership_update_params.py +13 -0
  99. whop_sdk/types/message_create_params.py +51 -0
  100. whop_sdk/types/message_list_params.py +30 -0
  101. whop_sdk/types/message_list_response.py +90 -0
  102. whop_sdk/types/payment_list_params.py +72 -0
  103. whop_sdk/types/payment_list_response.py +221 -0
  104. whop_sdk/types/payment_refund_params.py +13 -0
  105. whop_sdk/types/plan_create_params.py +106 -0
  106. whop_sdk/types/plan_delete_response.py +7 -0
  107. whop_sdk/types/plan_list_params.py +49 -0
  108. whop_sdk/types/plan_list_response.py +92 -0
  109. whop_sdk/types/plan_update_params.py +95 -0
  110. whop_sdk/types/product_create_params.py +170 -0
  111. whop_sdk/types/product_delete_response.py +7 -0
  112. whop_sdk/types/product_list_params.py +41 -0
  113. whop_sdk/types/product_update_params.py +90 -0
  114. whop_sdk/types/reaction_create_params.py +19 -0
  115. whop_sdk/types/reaction_list_params.py +25 -0
  116. whop_sdk/types/reaction_list_response.py +32 -0
  117. whop_sdk/types/shared/__init__.py +55 -0
  118. whop_sdk/types/shared/access_pass_type.py +7 -0
  119. whop_sdk/types/shared/app.py +159 -0
  120. whop_sdk/types/shared/app_build.py +50 -0
  121. whop_sdk/types/shared/app_build_platforms.py +7 -0
  122. whop_sdk/types/shared/app_build_statuses.py +7 -0
  123. whop_sdk/types/shared/app_statuses.py +7 -0
  124. whop_sdk/types/shared/app_view_type.py +7 -0
  125. whop_sdk/types/shared/authorized_user_roles.py +9 -0
  126. whop_sdk/types/shared/business_types.py +22 -0
  127. whop_sdk/types/shared/chat_channel.py +43 -0
  128. whop_sdk/types/shared/checkout_configuration.py +66 -0
  129. whop_sdk/types/shared/collection_method.py +7 -0
  130. whop_sdk/types/shared/company.py +71 -0
  131. whop_sdk/types/shared/course_lesson_interaction.py +44 -0
  132. whop_sdk/types/shared/course_lesson_interaction_list_item.py +44 -0
  133. whop_sdk/types/shared/currency.py +92 -0
  134. whop_sdk/types/shared/custom_cta.py +21 -0
  135. whop_sdk/types/shared/direction.py +7 -0
  136. whop_sdk/types/shared/dms_post_types.py +7 -0
  137. whop_sdk/types/shared/entry.py +70 -0
  138. whop_sdk/types/shared/entry_status.py +7 -0
  139. whop_sdk/types/shared/experience.py +66 -0
  140. whop_sdk/types/shared/forum_post.py +53 -0
  141. whop_sdk/types/shared/friendly_receipt_status.py +24 -0
  142. whop_sdk/types/shared/global_affiliate_status.py +7 -0
  143. whop_sdk/types/shared/industry_types.py +67 -0
  144. whop_sdk/types/shared/invoice.py +61 -0
  145. whop_sdk/types/shared/invoice_list_item.py +61 -0
  146. whop_sdk/types/shared/invoice_status.py +7 -0
  147. whop_sdk/types/shared/membership.py +117 -0
  148. whop_sdk/types/shared/membership_status.py +9 -0
  149. whop_sdk/types/shared/message.py +90 -0
  150. whop_sdk/types/shared/page_info.py +21 -0
  151. whop_sdk/types/shared/payment.py +211 -0
  152. whop_sdk/types/shared/plan.py +123 -0
  153. whop_sdk/types/shared/plan_type.py +7 -0
  154. whop_sdk/types/shared/product.py +124 -0
  155. whop_sdk/types/shared/product_list_item.py +49 -0
  156. whop_sdk/types/shared/promo_type.py +7 -0
  157. whop_sdk/types/shared/reaction.py +32 -0
  158. whop_sdk/types/shared/receipt_status.py +7 -0
  159. whop_sdk/types/shared/release_method.py +7 -0
  160. whop_sdk/types/shared/shipment.py +48 -0
  161. whop_sdk/types/shared/shipment_carrier.py +84 -0
  162. whop_sdk/types/shared/shipment_status.py +18 -0
  163. whop_sdk/types/shared/shipment_substatus.py +36 -0
  164. whop_sdk/types/shared/support_channel.py +39 -0
  165. whop_sdk/types/shared/tax_type.py +7 -0
  166. whop_sdk/types/shared/transfer.py +109 -0
  167. whop_sdk/types/shared/visibility.py +7 -0
  168. whop_sdk/types/shared/visibility_filter.py +9 -0
  169. whop_sdk/types/shared/who_can_post.py +7 -0
  170. whop_sdk/types/shared/who_can_react.py +7 -0
  171. whop_sdk/types/shared_params/__init__.py +27 -0
  172. whop_sdk/types/shared_params/access_pass_type.py +9 -0
  173. whop_sdk/types/shared_params/app_build_platforms.py +9 -0
  174. whop_sdk/types/shared_params/app_build_statuses.py +9 -0
  175. whop_sdk/types/shared_params/app_statuses.py +9 -0
  176. whop_sdk/types/shared_params/app_view_type.py +9 -0
  177. whop_sdk/types/shared_params/authorized_user_roles.py +11 -0
  178. whop_sdk/types/shared_params/business_types.py +24 -0
  179. whop_sdk/types/shared_params/collection_method.py +9 -0
  180. whop_sdk/types/shared_params/currency.py +94 -0
  181. whop_sdk/types/shared_params/custom_cta.py +23 -0
  182. whop_sdk/types/shared_params/direction.py +9 -0
  183. whop_sdk/types/shared_params/entry_status.py +9 -0
  184. whop_sdk/types/shared_params/friendly_receipt_status.py +26 -0
  185. whop_sdk/types/shared_params/global_affiliate_status.py +9 -0
  186. whop_sdk/types/shared_params/industry_types.py +69 -0
  187. whop_sdk/types/shared_params/invoice_status.py +9 -0
  188. whop_sdk/types/shared_params/membership_status.py +11 -0
  189. whop_sdk/types/shared_params/plan_type.py +9 -0
  190. whop_sdk/types/shared_params/receipt_status.py +9 -0
  191. whop_sdk/types/shared_params/release_method.py +9 -0
  192. whop_sdk/types/shared_params/tax_type.py +9 -0
  193. whop_sdk/types/shared_params/visibility.py +9 -0
  194. whop_sdk/types/shared_params/visibility_filter.py +11 -0
  195. whop_sdk/types/shared_params/who_can_post.py +9 -0
  196. whop_sdk/types/shared_params/who_can_react.py +9 -0
  197. whop_sdk/types/shipment_create_params.py +18 -0
  198. whop_sdk/types/shipment_list_params.py +31 -0
  199. whop_sdk/types/shipment_list_response.py +48 -0
  200. whop_sdk/types/support_channel_create_params.py +15 -0
  201. whop_sdk/types/support_channel_list_params.py +40 -0
  202. whop_sdk/types/support_channel_list_response.py +39 -0
  203. whop_sdk/types/transfer_create_params.py +36 -0
  204. whop_sdk/types/transfer_list_params.py +42 -0
  205. whop_sdk/types/transfer_list_response.py +35 -0
  206. whop_sdk/types/unwrap_webhook_event.py +15 -0
  207. whop_sdk/types/user_check_access_response.py +15 -0
  208. whop_sdk/types/user_retrieve_response.py +25 -0
  209. whop_sdk-0.0.1.dist-info/METADATA +522 -0
  210. whop_sdk-0.0.1.dist-info/RECORD +212 -0
  211. whop_sdk-0.0.1.dist-info/WHEEL +4 -0
  212. whop_sdk-0.0.1.dist-info/licenses/LICENSE +201 -0
@@ -0,0 +1,761 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from __future__ import annotations
4
+
5
+ from typing import List, Union, Optional
6
+ from datetime import datetime
7
+ from typing_extensions import Literal
8
+
9
+ import httpx
10
+
11
+ from ..types import payment_list_params, payment_refund_params
12
+ from .._types import Body, Omit, Query, Headers, NotGiven, SequenceNotStr, omit, not_given
13
+ from .._utils import maybe_transform, async_maybe_transform
14
+ from .._compat import cached_property
15
+ from .._resource import SyncAPIResource, AsyncAPIResource
16
+ from .._response import (
17
+ to_raw_response_wrapper,
18
+ to_streamed_response_wrapper,
19
+ async_to_raw_response_wrapper,
20
+ async_to_streamed_response_wrapper,
21
+ )
22
+ from ..pagination import SyncCursorPage, AsyncCursorPage
23
+ from .._base_client import AsyncPaginator, make_request_options
24
+ from ..types.shared.payment import Payment
25
+ from ..types.shared.currency import Currency
26
+ from ..types.shared.direction import Direction
27
+ from ..types.payment_list_response import PaymentListResponse
28
+ from ..types.shared.receipt_status import ReceiptStatus
29
+ from ..types.shared.friendly_receipt_status import FriendlyReceiptStatus
30
+
31
+ __all__ = ["PaymentsResource", "AsyncPaymentsResource"]
32
+
33
+
34
+ class PaymentsResource(SyncAPIResource):
35
+ @cached_property
36
+ def with_raw_response(self) -> PaymentsResourceWithRawResponse:
37
+ """
38
+ This property can be used as a prefix for any HTTP method call to return
39
+ the raw response object instead of the parsed content.
40
+
41
+ For more information, see https://www.github.com/whopio/whopsdk-python#accessing-raw-response-data-eg-headers
42
+ """
43
+ return PaymentsResourceWithRawResponse(self)
44
+
45
+ @cached_property
46
+ def with_streaming_response(self) -> PaymentsResourceWithStreamingResponse:
47
+ """
48
+ An alternative to `.with_raw_response` that doesn't eagerly read the response body.
49
+
50
+ For more information, see https://www.github.com/whopio/whopsdk-python#with_streaming_response
51
+ """
52
+ return PaymentsResourceWithStreamingResponse(self)
53
+
54
+ def retrieve(
55
+ self,
56
+ id: str,
57
+ *,
58
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
59
+ # The extra values given here take precedence over values defined on the client or passed to this method.
60
+ extra_headers: Headers | None = None,
61
+ extra_query: Query | None = None,
62
+ extra_body: Body | None = None,
63
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
64
+ ) -> Payment:
65
+ """
66
+ Retrieves a payment by ID
67
+
68
+ Required permissions:
69
+
70
+ - `payment:basic:read`
71
+ - `plan:basic:read`
72
+ - `access_pass:basic:read`
73
+ - `member:email:read`
74
+ - `member:basic:read`
75
+ - `member:phone:read`
76
+ - `promo_code:basic:read`
77
+
78
+ Args:
79
+ extra_headers: Send extra headers
80
+
81
+ extra_query: Add additional query parameters to the request
82
+
83
+ extra_body: Add additional JSON properties to the request
84
+
85
+ timeout: Override the client-level default timeout for this request, in seconds
86
+ """
87
+ if not id:
88
+ raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
89
+ return self._get(
90
+ f"/payments/{id}",
91
+ options=make_request_options(
92
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
93
+ ),
94
+ cast_to=Payment,
95
+ )
96
+
97
+ def list(
98
+ self,
99
+ *,
100
+ company_id: str,
101
+ after: Optional[str] | Omit = omit,
102
+ before: Optional[str] | Omit = omit,
103
+ billing_reasons: Optional[
104
+ List[
105
+ Literal[
106
+ "subscription_create",
107
+ "subscription_cycle",
108
+ "subscription_update",
109
+ "one_time",
110
+ "manual",
111
+ "subscription",
112
+ ]
113
+ ]
114
+ ]
115
+ | Omit = omit,
116
+ created_after: Union[str, datetime, None] | Omit = omit,
117
+ created_before: Union[str, datetime, None] | Omit = omit,
118
+ currencies: Optional[List[Currency]] | Omit = omit,
119
+ direction: Optional[Direction] | Omit = omit,
120
+ first: Optional[int] | Omit = omit,
121
+ include_free: Optional[bool] | Omit = omit,
122
+ last: Optional[int] | Omit = omit,
123
+ order: Optional[Literal["final_amount", "created_at", "paid_at"]] | Omit = omit,
124
+ plan_ids: Optional[SequenceNotStr[str]] | Omit = omit,
125
+ product_ids: Optional[SequenceNotStr[str]] | Omit = omit,
126
+ statuses: Optional[List[ReceiptStatus]] | Omit = omit,
127
+ substatuses: Optional[List[FriendlyReceiptStatus]] | Omit = omit,
128
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
129
+ # The extra values given here take precedence over values defined on the client or passed to this method.
130
+ extra_headers: Headers | None = None,
131
+ extra_query: Query | None = None,
132
+ extra_body: Body | None = None,
133
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
134
+ ) -> SyncCursorPage[PaymentListResponse]:
135
+ """
136
+ Lists payments
137
+
138
+ Required permissions:
139
+
140
+ - `payment:basic:read`
141
+ - `plan:basic:read`
142
+ - `access_pass:basic:read`
143
+ - `member:email:read`
144
+ - `member:basic:read`
145
+ - `member:phone:read`
146
+ - `promo_code:basic:read`
147
+
148
+ Args:
149
+ company_id: The ID of the company to list payments for
150
+
151
+ after: Returns the elements in the list that come after the specified cursor.
152
+
153
+ before: Returns the elements in the list that come before the specified cursor.
154
+
155
+ billing_reasons: The billing reason for the payment
156
+
157
+ created_after: The minimum creation date to filter by
158
+
159
+ created_before: The maximum creation date to filter by
160
+
161
+ currencies: The currency of the payment.
162
+
163
+ direction: The direction of the sort.
164
+
165
+ first: Returns the first _n_ elements from the list.
166
+
167
+ include_free: Whether to include free payments.
168
+
169
+ last: Returns the last _n_ elements from the list.
170
+
171
+ order: The order to sort the results by.
172
+
173
+ plan_ids: A specific plan.
174
+
175
+ product_ids: A specific product.
176
+
177
+ statuses: The status of the payment.
178
+
179
+ substatuses: The substatus of the payment.
180
+
181
+ extra_headers: Send extra headers
182
+
183
+ extra_query: Add additional query parameters to the request
184
+
185
+ extra_body: Add additional JSON properties to the request
186
+
187
+ timeout: Override the client-level default timeout for this request, in seconds
188
+ """
189
+ return self._get_api_list(
190
+ "/payments",
191
+ page=SyncCursorPage[PaymentListResponse],
192
+ options=make_request_options(
193
+ extra_headers=extra_headers,
194
+ extra_query=extra_query,
195
+ extra_body=extra_body,
196
+ timeout=timeout,
197
+ query=maybe_transform(
198
+ {
199
+ "company_id": company_id,
200
+ "after": after,
201
+ "before": before,
202
+ "billing_reasons": billing_reasons,
203
+ "created_after": created_after,
204
+ "created_before": created_before,
205
+ "currencies": currencies,
206
+ "direction": direction,
207
+ "first": first,
208
+ "include_free": include_free,
209
+ "last": last,
210
+ "order": order,
211
+ "plan_ids": plan_ids,
212
+ "product_ids": product_ids,
213
+ "statuses": statuses,
214
+ "substatuses": substatuses,
215
+ },
216
+ payment_list_params.PaymentListParams,
217
+ ),
218
+ ),
219
+ model=PaymentListResponse,
220
+ )
221
+
222
+ def refund(
223
+ self,
224
+ id: str,
225
+ *,
226
+ partial_amount: Optional[float] | Omit = omit,
227
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
228
+ # The extra values given here take precedence over values defined on the client or passed to this method.
229
+ extra_headers: Headers | None = None,
230
+ extra_query: Query | None = None,
231
+ extra_body: Body | None = None,
232
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
233
+ ) -> Payment:
234
+ """
235
+ Refunds a payment
236
+
237
+ Required permissions:
238
+
239
+ - `payment:manage`
240
+ - `plan:basic:read`
241
+ - `access_pass:basic:read`
242
+ - `member:email:read`
243
+ - `member:basic:read`
244
+ - `member:phone:read`
245
+ - `promo_code:basic:read`
246
+
247
+ Args:
248
+ partial_amount: An amount if the refund is supposed to be partial.
249
+
250
+ extra_headers: Send extra headers
251
+
252
+ extra_query: Add additional query parameters to the request
253
+
254
+ extra_body: Add additional JSON properties to the request
255
+
256
+ timeout: Override the client-level default timeout for this request, in seconds
257
+ """
258
+ if not id:
259
+ raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
260
+ return self._post(
261
+ f"/payments/{id}/refund",
262
+ body=maybe_transform({"partial_amount": partial_amount}, payment_refund_params.PaymentRefundParams),
263
+ options=make_request_options(
264
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
265
+ ),
266
+ cast_to=Payment,
267
+ )
268
+
269
+ def retry(
270
+ self,
271
+ id: str,
272
+ *,
273
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
274
+ # The extra values given here take precedence over values defined on the client or passed to this method.
275
+ extra_headers: Headers | None = None,
276
+ extra_query: Query | None = None,
277
+ extra_body: Body | None = None,
278
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
279
+ ) -> Payment:
280
+ """
281
+ Retries a payment
282
+
283
+ Required permissions:
284
+
285
+ - `payment:manage`
286
+ - `plan:basic:read`
287
+ - `access_pass:basic:read`
288
+ - `member:email:read`
289
+ - `member:basic:read`
290
+ - `member:phone:read`
291
+ - `promo_code:basic:read`
292
+
293
+ Args:
294
+ extra_headers: Send extra headers
295
+
296
+ extra_query: Add additional query parameters to the request
297
+
298
+ extra_body: Add additional JSON properties to the request
299
+
300
+ timeout: Override the client-level default timeout for this request, in seconds
301
+ """
302
+ if not id:
303
+ raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
304
+ return self._post(
305
+ f"/payments/{id}/retry",
306
+ options=make_request_options(
307
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
308
+ ),
309
+ cast_to=Payment,
310
+ )
311
+
312
+ def void(
313
+ self,
314
+ id: str,
315
+ *,
316
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
317
+ # The extra values given here take precedence over values defined on the client or passed to this method.
318
+ extra_headers: Headers | None = None,
319
+ extra_query: Query | None = None,
320
+ extra_body: Body | None = None,
321
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
322
+ ) -> Payment:
323
+ """
324
+ Voids a payment
325
+
326
+ Required permissions:
327
+
328
+ - `payment:manage`
329
+ - `plan:basic:read`
330
+ - `access_pass:basic:read`
331
+ - `member:email:read`
332
+ - `member:basic:read`
333
+ - `member:phone:read`
334
+ - `promo_code:basic:read`
335
+
336
+ Args:
337
+ extra_headers: Send extra headers
338
+
339
+ extra_query: Add additional query parameters to the request
340
+
341
+ extra_body: Add additional JSON properties to the request
342
+
343
+ timeout: Override the client-level default timeout for this request, in seconds
344
+ """
345
+ if not id:
346
+ raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
347
+ return self._post(
348
+ f"/payments/{id}/void",
349
+ options=make_request_options(
350
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
351
+ ),
352
+ cast_to=Payment,
353
+ )
354
+
355
+
356
+ class AsyncPaymentsResource(AsyncAPIResource):
357
+ @cached_property
358
+ def with_raw_response(self) -> AsyncPaymentsResourceWithRawResponse:
359
+ """
360
+ This property can be used as a prefix for any HTTP method call to return
361
+ the raw response object instead of the parsed content.
362
+
363
+ For more information, see https://www.github.com/whopio/whopsdk-python#accessing-raw-response-data-eg-headers
364
+ """
365
+ return AsyncPaymentsResourceWithRawResponse(self)
366
+
367
+ @cached_property
368
+ def with_streaming_response(self) -> AsyncPaymentsResourceWithStreamingResponse:
369
+ """
370
+ An alternative to `.with_raw_response` that doesn't eagerly read the response body.
371
+
372
+ For more information, see https://www.github.com/whopio/whopsdk-python#with_streaming_response
373
+ """
374
+ return AsyncPaymentsResourceWithStreamingResponse(self)
375
+
376
+ async def retrieve(
377
+ self,
378
+ id: str,
379
+ *,
380
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
381
+ # The extra values given here take precedence over values defined on the client or passed to this method.
382
+ extra_headers: Headers | None = None,
383
+ extra_query: Query | None = None,
384
+ extra_body: Body | None = None,
385
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
386
+ ) -> Payment:
387
+ """
388
+ Retrieves a payment by ID
389
+
390
+ Required permissions:
391
+
392
+ - `payment:basic:read`
393
+ - `plan:basic:read`
394
+ - `access_pass:basic:read`
395
+ - `member:email:read`
396
+ - `member:basic:read`
397
+ - `member:phone:read`
398
+ - `promo_code:basic:read`
399
+
400
+ Args:
401
+ extra_headers: Send extra headers
402
+
403
+ extra_query: Add additional query parameters to the request
404
+
405
+ extra_body: Add additional JSON properties to the request
406
+
407
+ timeout: Override the client-level default timeout for this request, in seconds
408
+ """
409
+ if not id:
410
+ raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
411
+ return await self._get(
412
+ f"/payments/{id}",
413
+ options=make_request_options(
414
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
415
+ ),
416
+ cast_to=Payment,
417
+ )
418
+
419
+ def list(
420
+ self,
421
+ *,
422
+ company_id: str,
423
+ after: Optional[str] | Omit = omit,
424
+ before: Optional[str] | Omit = omit,
425
+ billing_reasons: Optional[
426
+ List[
427
+ Literal[
428
+ "subscription_create",
429
+ "subscription_cycle",
430
+ "subscription_update",
431
+ "one_time",
432
+ "manual",
433
+ "subscription",
434
+ ]
435
+ ]
436
+ ]
437
+ | Omit = omit,
438
+ created_after: Union[str, datetime, None] | Omit = omit,
439
+ created_before: Union[str, datetime, None] | Omit = omit,
440
+ currencies: Optional[List[Currency]] | Omit = omit,
441
+ direction: Optional[Direction] | Omit = omit,
442
+ first: Optional[int] | Omit = omit,
443
+ include_free: Optional[bool] | Omit = omit,
444
+ last: Optional[int] | Omit = omit,
445
+ order: Optional[Literal["final_amount", "created_at", "paid_at"]] | Omit = omit,
446
+ plan_ids: Optional[SequenceNotStr[str]] | Omit = omit,
447
+ product_ids: Optional[SequenceNotStr[str]] | Omit = omit,
448
+ statuses: Optional[List[ReceiptStatus]] | Omit = omit,
449
+ substatuses: Optional[List[FriendlyReceiptStatus]] | Omit = omit,
450
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
451
+ # The extra values given here take precedence over values defined on the client or passed to this method.
452
+ extra_headers: Headers | None = None,
453
+ extra_query: Query | None = None,
454
+ extra_body: Body | None = None,
455
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
456
+ ) -> AsyncPaginator[PaymentListResponse, AsyncCursorPage[PaymentListResponse]]:
457
+ """
458
+ Lists payments
459
+
460
+ Required permissions:
461
+
462
+ - `payment:basic:read`
463
+ - `plan:basic:read`
464
+ - `access_pass:basic:read`
465
+ - `member:email:read`
466
+ - `member:basic:read`
467
+ - `member:phone:read`
468
+ - `promo_code:basic:read`
469
+
470
+ Args:
471
+ company_id: The ID of the company to list payments for
472
+
473
+ after: Returns the elements in the list that come after the specified cursor.
474
+
475
+ before: Returns the elements in the list that come before the specified cursor.
476
+
477
+ billing_reasons: The billing reason for the payment
478
+
479
+ created_after: The minimum creation date to filter by
480
+
481
+ created_before: The maximum creation date to filter by
482
+
483
+ currencies: The currency of the payment.
484
+
485
+ direction: The direction of the sort.
486
+
487
+ first: Returns the first _n_ elements from the list.
488
+
489
+ include_free: Whether to include free payments.
490
+
491
+ last: Returns the last _n_ elements from the list.
492
+
493
+ order: The order to sort the results by.
494
+
495
+ plan_ids: A specific plan.
496
+
497
+ product_ids: A specific product.
498
+
499
+ statuses: The status of the payment.
500
+
501
+ substatuses: The substatus of the payment.
502
+
503
+ extra_headers: Send extra headers
504
+
505
+ extra_query: Add additional query parameters to the request
506
+
507
+ extra_body: Add additional JSON properties to the request
508
+
509
+ timeout: Override the client-level default timeout for this request, in seconds
510
+ """
511
+ return self._get_api_list(
512
+ "/payments",
513
+ page=AsyncCursorPage[PaymentListResponse],
514
+ options=make_request_options(
515
+ extra_headers=extra_headers,
516
+ extra_query=extra_query,
517
+ extra_body=extra_body,
518
+ timeout=timeout,
519
+ query=maybe_transform(
520
+ {
521
+ "company_id": company_id,
522
+ "after": after,
523
+ "before": before,
524
+ "billing_reasons": billing_reasons,
525
+ "created_after": created_after,
526
+ "created_before": created_before,
527
+ "currencies": currencies,
528
+ "direction": direction,
529
+ "first": first,
530
+ "include_free": include_free,
531
+ "last": last,
532
+ "order": order,
533
+ "plan_ids": plan_ids,
534
+ "product_ids": product_ids,
535
+ "statuses": statuses,
536
+ "substatuses": substatuses,
537
+ },
538
+ payment_list_params.PaymentListParams,
539
+ ),
540
+ ),
541
+ model=PaymentListResponse,
542
+ )
543
+
544
+ async def refund(
545
+ self,
546
+ id: str,
547
+ *,
548
+ partial_amount: Optional[float] | Omit = omit,
549
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
550
+ # The extra values given here take precedence over values defined on the client or passed to this method.
551
+ extra_headers: Headers | None = None,
552
+ extra_query: Query | None = None,
553
+ extra_body: Body | None = None,
554
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
555
+ ) -> Payment:
556
+ """
557
+ Refunds a payment
558
+
559
+ Required permissions:
560
+
561
+ - `payment:manage`
562
+ - `plan:basic:read`
563
+ - `access_pass:basic:read`
564
+ - `member:email:read`
565
+ - `member:basic:read`
566
+ - `member:phone:read`
567
+ - `promo_code:basic:read`
568
+
569
+ Args:
570
+ partial_amount: An amount if the refund is supposed to be partial.
571
+
572
+ extra_headers: Send extra headers
573
+
574
+ extra_query: Add additional query parameters to the request
575
+
576
+ extra_body: Add additional JSON properties to the request
577
+
578
+ timeout: Override the client-level default timeout for this request, in seconds
579
+ """
580
+ if not id:
581
+ raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
582
+ return await self._post(
583
+ f"/payments/{id}/refund",
584
+ body=await async_maybe_transform(
585
+ {"partial_amount": partial_amount}, payment_refund_params.PaymentRefundParams
586
+ ),
587
+ options=make_request_options(
588
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
589
+ ),
590
+ cast_to=Payment,
591
+ )
592
+
593
+ async def retry(
594
+ self,
595
+ id: str,
596
+ *,
597
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
598
+ # The extra values given here take precedence over values defined on the client or passed to this method.
599
+ extra_headers: Headers | None = None,
600
+ extra_query: Query | None = None,
601
+ extra_body: Body | None = None,
602
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
603
+ ) -> Payment:
604
+ """
605
+ Retries a payment
606
+
607
+ Required permissions:
608
+
609
+ - `payment:manage`
610
+ - `plan:basic:read`
611
+ - `access_pass:basic:read`
612
+ - `member:email:read`
613
+ - `member:basic:read`
614
+ - `member:phone:read`
615
+ - `promo_code:basic:read`
616
+
617
+ Args:
618
+ extra_headers: Send extra headers
619
+
620
+ extra_query: Add additional query parameters to the request
621
+
622
+ extra_body: Add additional JSON properties to the request
623
+
624
+ timeout: Override the client-level default timeout for this request, in seconds
625
+ """
626
+ if not id:
627
+ raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
628
+ return await self._post(
629
+ f"/payments/{id}/retry",
630
+ options=make_request_options(
631
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
632
+ ),
633
+ cast_to=Payment,
634
+ )
635
+
636
+ async def void(
637
+ self,
638
+ id: str,
639
+ *,
640
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
641
+ # The extra values given here take precedence over values defined on the client or passed to this method.
642
+ extra_headers: Headers | None = None,
643
+ extra_query: Query | None = None,
644
+ extra_body: Body | None = None,
645
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
646
+ ) -> Payment:
647
+ """
648
+ Voids a payment
649
+
650
+ Required permissions:
651
+
652
+ - `payment:manage`
653
+ - `plan:basic:read`
654
+ - `access_pass:basic:read`
655
+ - `member:email:read`
656
+ - `member:basic:read`
657
+ - `member:phone:read`
658
+ - `promo_code:basic:read`
659
+
660
+ Args:
661
+ extra_headers: Send extra headers
662
+
663
+ extra_query: Add additional query parameters to the request
664
+
665
+ extra_body: Add additional JSON properties to the request
666
+
667
+ timeout: Override the client-level default timeout for this request, in seconds
668
+ """
669
+ if not id:
670
+ raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
671
+ return await self._post(
672
+ f"/payments/{id}/void",
673
+ options=make_request_options(
674
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
675
+ ),
676
+ cast_to=Payment,
677
+ )
678
+
679
+
680
+ class PaymentsResourceWithRawResponse:
681
+ def __init__(self, payments: PaymentsResource) -> None:
682
+ self._payments = payments
683
+
684
+ self.retrieve = to_raw_response_wrapper(
685
+ payments.retrieve,
686
+ )
687
+ self.list = to_raw_response_wrapper(
688
+ payments.list,
689
+ )
690
+ self.refund = to_raw_response_wrapper(
691
+ payments.refund,
692
+ )
693
+ self.retry = to_raw_response_wrapper(
694
+ payments.retry,
695
+ )
696
+ self.void = to_raw_response_wrapper(
697
+ payments.void,
698
+ )
699
+
700
+
701
+ class AsyncPaymentsResourceWithRawResponse:
702
+ def __init__(self, payments: AsyncPaymentsResource) -> None:
703
+ self._payments = payments
704
+
705
+ self.retrieve = async_to_raw_response_wrapper(
706
+ payments.retrieve,
707
+ )
708
+ self.list = async_to_raw_response_wrapper(
709
+ payments.list,
710
+ )
711
+ self.refund = async_to_raw_response_wrapper(
712
+ payments.refund,
713
+ )
714
+ self.retry = async_to_raw_response_wrapper(
715
+ payments.retry,
716
+ )
717
+ self.void = async_to_raw_response_wrapper(
718
+ payments.void,
719
+ )
720
+
721
+
722
+ class PaymentsResourceWithStreamingResponse:
723
+ def __init__(self, payments: PaymentsResource) -> None:
724
+ self._payments = payments
725
+
726
+ self.retrieve = to_streamed_response_wrapper(
727
+ payments.retrieve,
728
+ )
729
+ self.list = to_streamed_response_wrapper(
730
+ payments.list,
731
+ )
732
+ self.refund = to_streamed_response_wrapper(
733
+ payments.refund,
734
+ )
735
+ self.retry = to_streamed_response_wrapper(
736
+ payments.retry,
737
+ )
738
+ self.void = to_streamed_response_wrapper(
739
+ payments.void,
740
+ )
741
+
742
+
743
+ class AsyncPaymentsResourceWithStreamingResponse:
744
+ def __init__(self, payments: AsyncPaymentsResource) -> None:
745
+ self._payments = payments
746
+
747
+ self.retrieve = async_to_streamed_response_wrapper(
748
+ payments.retrieve,
749
+ )
750
+ self.list = async_to_streamed_response_wrapper(
751
+ payments.list,
752
+ )
753
+ self.refund = async_to_streamed_response_wrapper(
754
+ payments.refund,
755
+ )
756
+ self.retry = async_to_streamed_response_wrapper(
757
+ payments.retry,
758
+ )
759
+ self.void = async_to_streamed_response_wrapper(
760
+ payments.void,
761
+ )