whop-sdk 0.0.10__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.
Files changed (352) hide show
  1. whop_sdk/__init__.py +94 -0
  2. whop_sdk/_base_client.py +1995 -0
  3. whop_sdk/_client.py +800 -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 +857 -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 +58 -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 +540 -0
  31. whop_sdk/resources/access_tokens.py +341 -0
  32. whop_sdk/resources/account_links.py +211 -0
  33. whop_sdk/resources/app_builds.py +587 -0
  34. whop_sdk/resources/apps.py +684 -0
  35. whop_sdk/resources/authorized_users.py +353 -0
  36. whop_sdk/resources/chat_channels.py +469 -0
  37. whop_sdk/resources/checkout_configurations.py +776 -0
  38. whop_sdk/resources/companies.py +465 -0
  39. whop_sdk/resources/course_chapters.py +602 -0
  40. whop_sdk/resources/course_lesson_interactions.py +343 -0
  41. whop_sdk/resources/course_lessons.py +1040 -0
  42. whop_sdk/resources/course_students.py +327 -0
  43. whop_sdk/resources/courses.py +776 -0
  44. whop_sdk/resources/disputes.py +693 -0
  45. whop_sdk/resources/entries.py +556 -0
  46. whop_sdk/resources/experiences.py +983 -0
  47. whop_sdk/resources/forum_posts.py +656 -0
  48. whop_sdk/resources/forums.py +446 -0
  49. whop_sdk/resources/invoices.py +1099 -0
  50. whop_sdk/resources/ledger_accounts.py +171 -0
  51. whop_sdk/resources/members.py +429 -0
  52. whop_sdk/resources/memberships.py +818 -0
  53. whop_sdk/resources/messages.py +558 -0
  54. whop_sdk/resources/notifications.py +388 -0
  55. whop_sdk/resources/payment_tokens.py +359 -0
  56. whop_sdk/resources/payments.py +1040 -0
  57. whop_sdk/resources/plans.py +1001 -0
  58. whop_sdk/resources/products.py +970 -0
  59. whop_sdk/resources/promo_codes.py +668 -0
  60. whop_sdk/resources/reactions.py +423 -0
  61. whop_sdk/resources/refunds.py +347 -0
  62. whop_sdk/resources/reviews.py +332 -0
  63. whop_sdk/resources/setup_intents.py +349 -0
  64. whop_sdk/resources/shipments.py +451 -0
  65. whop_sdk/resources/support_channels.py +455 -0
  66. whop_sdk/resources/transfers.py +513 -0
  67. whop_sdk/resources/users.py +248 -0
  68. whop_sdk/resources/webhooks.py +69 -0
  69. whop_sdk/resources/withdrawals.py +341 -0
  70. whop_sdk/types/__init__.py +262 -0
  71. whop_sdk/types/access_token_create_params.py +64 -0
  72. whop_sdk/types/access_token_create_response.py +15 -0
  73. whop_sdk/types/account_link_create_params.py +27 -0
  74. whop_sdk/types/account_link_create_response.py +15 -0
  75. whop_sdk/types/app_build_create_params.py +72 -0
  76. whop_sdk/types/app_build_list_params.py +42 -0
  77. whop_sdk/types/app_build_list_response.py +50 -0
  78. whop_sdk/types/app_create_params.py +19 -0
  79. whop_sdk/types/app_list_params.py +59 -0
  80. whop_sdk/types/app_list_response.py +110 -0
  81. whop_sdk/types/app_type.py +7 -0
  82. whop_sdk/types/app_update_params.py +67 -0
  83. whop_sdk/types/assessment_question_types.py +7 -0
  84. whop_sdk/types/authorized_user_list_params.py +41 -0
  85. whop_sdk/types/authorized_user_list_response.py +33 -0
  86. whop_sdk/types/authorized_user_retrieve_response.py +33 -0
  87. whop_sdk/types/billing_reasons.py +9 -0
  88. whop_sdk/types/card_brands.py +25 -0
  89. whop_sdk/types/chat_channel_list_params.py +28 -0
  90. whop_sdk/types/chat_channel_list_response.py +43 -0
  91. whop_sdk/types/chat_channel_update_params.py +32 -0
  92. whop_sdk/types/checkout_configuration_create_params.py +373 -0
  93. whop_sdk/types/checkout_configuration_list_params.py +41 -0
  94. whop_sdk/types/checkout_configuration_list_response.py +104 -0
  95. whop_sdk/types/checkout_modes.py +7 -0
  96. whop_sdk/types/company_create_params.py +22 -0
  97. whop_sdk/types/company_list_params.py +38 -0
  98. whop_sdk/types/company_list_response.py +76 -0
  99. whop_sdk/types/course.py +122 -0
  100. whop_sdk/types/course_chapter.py +32 -0
  101. whop_sdk/types/course_chapter_create_params.py +16 -0
  102. whop_sdk/types/course_chapter_delete_response.py +7 -0
  103. whop_sdk/types/course_chapter_list_params.py +25 -0
  104. whop_sdk/types/course_chapter_list_response.py +16 -0
  105. whop_sdk/types/course_chapter_update_params.py +12 -0
  106. whop_sdk/types/course_create_params.py +78 -0
  107. whop_sdk/types/course_delete_response.py +7 -0
  108. whop_sdk/types/course_lesson_create_params.py +63 -0
  109. whop_sdk/types/course_lesson_delete_response.py +7 -0
  110. whop_sdk/types/course_lesson_interaction_completed_webhook_event.py +26 -0
  111. whop_sdk/types/course_lesson_interaction_list_params.py +34 -0
  112. whop_sdk/types/course_lesson_list_params.py +28 -0
  113. whop_sdk/types/course_lesson_list_response.py +57 -0
  114. whop_sdk/types/course_lesson_mark_as_completed_response.py +7 -0
  115. whop_sdk/types/course_lesson_start_response.py +7 -0
  116. whop_sdk/types/course_lesson_submit_assessment_params.py +26 -0
  117. whop_sdk/types/course_lesson_submit_assessment_response.py +62 -0
  118. whop_sdk/types/course_lesson_update_params.py +222 -0
  119. whop_sdk/types/course_list_params.py +28 -0
  120. whop_sdk/types/course_list_response.py +90 -0
  121. whop_sdk/types/course_student_list_params.py +28 -0
  122. whop_sdk/types/course_student_list_response.py +42 -0
  123. whop_sdk/types/course_student_retrieve_response.py +61 -0
  124. whop_sdk/types/course_update_params.py +114 -0
  125. whop_sdk/types/course_visibilities.py +7 -0
  126. whop_sdk/types/dispute.py +284 -0
  127. whop_sdk/types/dispute_created_webhook_event.py +26 -0
  128. whop_sdk/types/dispute_list_params.py +38 -0
  129. whop_sdk/types/dispute_list_response.py +77 -0
  130. whop_sdk/types/dispute_statuses.py +17 -0
  131. whop_sdk/types/dispute_update_evidence_params.py +159 -0
  132. whop_sdk/types/dispute_updated_webhook_event.py +26 -0
  133. whop_sdk/types/embed_type.py +7 -0
  134. whop_sdk/types/entry_approve_response.py +10 -0
  135. whop_sdk/types/entry_approved_webhook_event.py +26 -0
  136. whop_sdk/types/entry_created_webhook_event.py +26 -0
  137. whop_sdk/types/entry_deleted_webhook_event.py +26 -0
  138. whop_sdk/types/entry_denied_webhook_event.py +26 -0
  139. whop_sdk/types/entry_list_params.py +52 -0
  140. whop_sdk/types/entry_list_response.py +56 -0
  141. whop_sdk/types/experience_attach_params.py +12 -0
  142. whop_sdk/types/experience_create_params.py +22 -0
  143. whop_sdk/types/experience_delete_response.py +7 -0
  144. whop_sdk/types/experience_detach_params.py +12 -0
  145. whop_sdk/types/experience_duplicate_params.py +13 -0
  146. whop_sdk/types/experience_list_params.py +40 -0
  147. whop_sdk/types/experience_list_response.py +73 -0
  148. whop_sdk/types/experience_update_params.py +46 -0
  149. whop_sdk/types/forum_list_params.py +28 -0
  150. whop_sdk/types/forum_list_response.py +33 -0
  151. whop_sdk/types/forum_post_create_params.py +101 -0
  152. whop_sdk/types/forum_post_list_params.py +31 -0
  153. whop_sdk/types/forum_post_list_response.py +60 -0
  154. whop_sdk/types/forum_post_update_params.py +56 -0
  155. whop_sdk/types/forum_post_visibility_type.py +7 -0
  156. whop_sdk/types/forum_update_params.py +23 -0
  157. whop_sdk/types/invoice_create_params.py +515 -0
  158. whop_sdk/types/invoice_created_webhook_event.py +26 -0
  159. whop_sdk/types/invoice_list_params.py +53 -0
  160. whop_sdk/types/invoice_paid_webhook_event.py +26 -0
  161. whop_sdk/types/invoice_past_due_webhook_event.py +26 -0
  162. whop_sdk/types/invoice_void_response.py +7 -0
  163. whop_sdk/types/invoice_voided_webhook_event.py +26 -0
  164. whop_sdk/types/languages.py +30 -0
  165. whop_sdk/types/ledger_account_retrieve_response.py +93 -0
  166. whop_sdk/types/lesson.py +219 -0
  167. whop_sdk/types/lesson_types.py +7 -0
  168. whop_sdk/types/lesson_visibilities.py +7 -0
  169. whop_sdk/types/member_list_params.py +73 -0
  170. whop_sdk/types/member_list_response.py +65 -0
  171. whop_sdk/types/member_retrieve_response.py +79 -0
  172. whop_sdk/types/membership_activated_webhook_event.py +29 -0
  173. whop_sdk/types/membership_cancel_params.py +13 -0
  174. whop_sdk/types/membership_deactivated_webhook_event.py +29 -0
  175. whop_sdk/types/membership_list_params.py +73 -0
  176. whop_sdk/types/membership_list_response.py +128 -0
  177. whop_sdk/types/membership_pause_params.py +16 -0
  178. whop_sdk/types/membership_update_params.py +13 -0
  179. whop_sdk/types/message_create_params.py +63 -0
  180. whop_sdk/types/message_list_params.py +30 -0
  181. whop_sdk/types/message_list_response.py +90 -0
  182. whop_sdk/types/message_update_params.py +45 -0
  183. whop_sdk/types/notification_create_params.py +93 -0
  184. whop_sdk/types/notification_create_response.py +10 -0
  185. whop_sdk/types/payment_create_params.py +162 -0
  186. whop_sdk/types/payment_failed_webhook_event.py +26 -0
  187. whop_sdk/types/payment_list_params.py +67 -0
  188. whop_sdk/types/payment_list_response.py +273 -0
  189. whop_sdk/types/payment_method_types.py +94 -0
  190. whop_sdk/types/payment_pending_webhook_event.py +26 -0
  191. whop_sdk/types/payment_provider.py +9 -0
  192. whop_sdk/types/payment_refund_params.py +13 -0
  193. whop_sdk/types/payment_succeeded_webhook_event.py +26 -0
  194. whop_sdk/types/payment_token_list_params.py +38 -0
  195. whop_sdk/types/payment_token_list_response.py +41 -0
  196. whop_sdk/types/payment_token_retrieve_params.py +12 -0
  197. whop_sdk/types/payment_token_retrieve_response.py +41 -0
  198. whop_sdk/types/plan_create_params.py +162 -0
  199. whop_sdk/types/plan_delete_response.py +7 -0
  200. whop_sdk/types/plan_list_params.py +57 -0
  201. whop_sdk/types/plan_list_response.py +128 -0
  202. whop_sdk/types/plan_update_params.py +155 -0
  203. whop_sdk/types/product_create_params.py +147 -0
  204. whop_sdk/types/product_delete_response.py +7 -0
  205. whop_sdk/types/product_list_params.py +49 -0
  206. whop_sdk/types/product_update_params.py +82 -0
  207. whop_sdk/types/promo_code.py +90 -0
  208. whop_sdk/types/promo_code_create_params.py +70 -0
  209. whop_sdk/types/promo_code_delete_response.py +7 -0
  210. whop_sdk/types/promo_code_list_params.py +45 -0
  211. whop_sdk/types/promo_code_list_response.py +79 -0
  212. whop_sdk/types/promo_code_status.py +7 -0
  213. whop_sdk/types/promo_duration.py +7 -0
  214. whop_sdk/types/reaction_create_params.py +19 -0
  215. whop_sdk/types/reaction_list_params.py +25 -0
  216. whop_sdk/types/reaction_list_response.py +32 -0
  217. whop_sdk/types/refund_created_webhook_event.py +154 -0
  218. whop_sdk/types/refund_list_params.py +38 -0
  219. whop_sdk/types/refund_list_response.py +53 -0
  220. whop_sdk/types/refund_reference_status.py +7 -0
  221. whop_sdk/types/refund_reference_type.py +9 -0
  222. whop_sdk/types/refund_retrieve_response.py +129 -0
  223. whop_sdk/types/refund_status.py +7 -0
  224. whop_sdk/types/refund_updated_webhook_event.py +154 -0
  225. whop_sdk/types/review_list_params.py +40 -0
  226. whop_sdk/types/review_list_response.py +78 -0
  227. whop_sdk/types/review_retrieve_response.py +103 -0
  228. whop_sdk/types/review_status.py +7 -0
  229. whop_sdk/types/setup_intent.py +111 -0
  230. whop_sdk/types/setup_intent_canceled_webhook_event.py +29 -0
  231. whop_sdk/types/setup_intent_list_params.py +38 -0
  232. whop_sdk/types/setup_intent_list_response.py +111 -0
  233. whop_sdk/types/setup_intent_requires_action_webhook_event.py +29 -0
  234. whop_sdk/types/setup_intent_status.py +7 -0
  235. whop_sdk/types/setup_intent_succeeded_webhook_event.py +29 -0
  236. whop_sdk/types/shared/__init__.py +62 -0
  237. whop_sdk/types/shared/access_level.py +7 -0
  238. whop_sdk/types/shared/access_pass_type.py +7 -0
  239. whop_sdk/types/shared/app.py +187 -0
  240. whop_sdk/types/shared/app_build.py +50 -0
  241. whop_sdk/types/shared/app_build_platforms.py +7 -0
  242. whop_sdk/types/shared/app_build_statuses.py +7 -0
  243. whop_sdk/types/shared/app_statuses.py +7 -0
  244. whop_sdk/types/shared/app_view_type.py +7 -0
  245. whop_sdk/types/shared/authorized_user_roles.py +9 -0
  246. whop_sdk/types/shared/business_types.py +22 -0
  247. whop_sdk/types/shared/chat_channel.py +43 -0
  248. whop_sdk/types/shared/checkout_configuration.py +104 -0
  249. whop_sdk/types/shared/collection_method.py +7 -0
  250. whop_sdk/types/shared/company.py +91 -0
  251. whop_sdk/types/shared/course_lesson_interaction.py +63 -0
  252. whop_sdk/types/shared/course_lesson_interaction_list_item.py +44 -0
  253. whop_sdk/types/shared/currency.py +93 -0
  254. whop_sdk/types/shared/custom_cta.py +21 -0
  255. whop_sdk/types/shared/direction.py +7 -0
  256. whop_sdk/types/shared/dms_post_types.py +7 -0
  257. whop_sdk/types/shared/email_notification_preferences.py +7 -0
  258. whop_sdk/types/shared/entry.py +70 -0
  259. whop_sdk/types/shared/entry_status.py +7 -0
  260. whop_sdk/types/shared/experience.py +91 -0
  261. whop_sdk/types/shared/forum.py +33 -0
  262. whop_sdk/types/shared/forum_post.py +60 -0
  263. whop_sdk/types/shared/friendly_receipt_status.py +24 -0
  264. whop_sdk/types/shared/global_affiliate_status.py +7 -0
  265. whop_sdk/types/shared/industry_types.py +67 -0
  266. whop_sdk/types/shared/invoice.py +64 -0
  267. whop_sdk/types/shared/invoice_list_item.py +64 -0
  268. whop_sdk/types/shared/invoice_status.py +7 -0
  269. whop_sdk/types/shared/member_most_recent_actions.py +22 -0
  270. whop_sdk/types/shared/member_statuses.py +7 -0
  271. whop_sdk/types/shared/membership.py +128 -0
  272. whop_sdk/types/shared/membership_status.py +9 -0
  273. whop_sdk/types/shared/message.py +90 -0
  274. whop_sdk/types/shared/page_info.py +21 -0
  275. whop_sdk/types/shared/payment.py +273 -0
  276. whop_sdk/types/shared/plan.py +159 -0
  277. whop_sdk/types/shared/plan_type.py +7 -0
  278. whop_sdk/types/shared/product.py +132 -0
  279. whop_sdk/types/shared/product_list_item.py +57 -0
  280. whop_sdk/types/shared/promo_type.py +7 -0
  281. whop_sdk/types/shared/reaction.py +32 -0
  282. whop_sdk/types/shared/receipt_status.py +7 -0
  283. whop_sdk/types/shared/release_method.py +7 -0
  284. whop_sdk/types/shared/shipment.py +48 -0
  285. whop_sdk/types/shared/shipment_carrier.py +84 -0
  286. whop_sdk/types/shared/shipment_status.py +18 -0
  287. whop_sdk/types/shared/shipment_substatus.py +36 -0
  288. whop_sdk/types/shared/support_channel.py +39 -0
  289. whop_sdk/types/shared/tax_type.py +7 -0
  290. whop_sdk/types/shared/transfer.py +112 -0
  291. whop_sdk/types/shared/visibility.py +7 -0
  292. whop_sdk/types/shared/visibility_filter.py +9 -0
  293. whop_sdk/types/shared/who_can_comment_types.py +7 -0
  294. whop_sdk/types/shared/who_can_post.py +7 -0
  295. whop_sdk/types/shared/who_can_post_types.py +7 -0
  296. whop_sdk/types/shared/who_can_react.py +7 -0
  297. whop_sdk/types/shared_params/__init__.py +34 -0
  298. whop_sdk/types/shared_params/access_level.py +9 -0
  299. whop_sdk/types/shared_params/access_pass_type.py +9 -0
  300. whop_sdk/types/shared_params/app_build_platforms.py +9 -0
  301. whop_sdk/types/shared_params/app_build_statuses.py +9 -0
  302. whop_sdk/types/shared_params/app_statuses.py +9 -0
  303. whop_sdk/types/shared_params/app_view_type.py +9 -0
  304. whop_sdk/types/shared_params/authorized_user_roles.py +11 -0
  305. whop_sdk/types/shared_params/business_types.py +24 -0
  306. whop_sdk/types/shared_params/collection_method.py +9 -0
  307. whop_sdk/types/shared_params/currency.py +95 -0
  308. whop_sdk/types/shared_params/custom_cta.py +23 -0
  309. whop_sdk/types/shared_params/direction.py +9 -0
  310. whop_sdk/types/shared_params/email_notification_preferences.py +9 -0
  311. whop_sdk/types/shared_params/entry_status.py +9 -0
  312. whop_sdk/types/shared_params/friendly_receipt_status.py +26 -0
  313. whop_sdk/types/shared_params/global_affiliate_status.py +9 -0
  314. whop_sdk/types/shared_params/industry_types.py +69 -0
  315. whop_sdk/types/shared_params/invoice_status.py +9 -0
  316. whop_sdk/types/shared_params/member_most_recent_actions.py +24 -0
  317. whop_sdk/types/shared_params/member_statuses.py +9 -0
  318. whop_sdk/types/shared_params/membership_status.py +11 -0
  319. whop_sdk/types/shared_params/plan_type.py +9 -0
  320. whop_sdk/types/shared_params/promo_type.py +9 -0
  321. whop_sdk/types/shared_params/receipt_status.py +9 -0
  322. whop_sdk/types/shared_params/release_method.py +9 -0
  323. whop_sdk/types/shared_params/tax_type.py +9 -0
  324. whop_sdk/types/shared_params/visibility.py +9 -0
  325. whop_sdk/types/shared_params/visibility_filter.py +11 -0
  326. whop_sdk/types/shared_params/who_can_comment_types.py +9 -0
  327. whop_sdk/types/shared_params/who_can_post.py +9 -0
  328. whop_sdk/types/shared_params/who_can_post_types.py +9 -0
  329. whop_sdk/types/shared_params/who_can_react.py +9 -0
  330. whop_sdk/types/shipment_create_params.py +18 -0
  331. whop_sdk/types/shipment_list_params.py +31 -0
  332. whop_sdk/types/shipment_list_response.py +48 -0
  333. whop_sdk/types/support_channel_create_params.py +15 -0
  334. whop_sdk/types/support_channel_list_params.py +40 -0
  335. whop_sdk/types/support_channel_list_response.py +39 -0
  336. whop_sdk/types/transfer_create_params.py +39 -0
  337. whop_sdk/types/transfer_list_params.py +50 -0
  338. whop_sdk/types/transfer_list_response.py +38 -0
  339. whop_sdk/types/unwrap_webhook_event.py +52 -0
  340. whop_sdk/types/user_check_access_response.py +14 -0
  341. whop_sdk/types/user_retrieve_response.py +36 -0
  342. whop_sdk/types/withdrawal_fee_types.py +7 -0
  343. whop_sdk/types/withdrawal_list_params.py +38 -0
  344. whop_sdk/types/withdrawal_list_response.py +45 -0
  345. whop_sdk/types/withdrawal_retrieve_response.py +154 -0
  346. whop_sdk/types/withdrawal_speeds.py +7 -0
  347. whop_sdk/types/withdrawal_status.py +9 -0
  348. whop_sdk/types/withdrawal_types.py +7 -0
  349. whop_sdk-0.0.10.dist-info/METADATA +509 -0
  350. whop_sdk-0.0.10.dist-info/RECORD +352 -0
  351. whop_sdk-0.0.10.dist-info/WHEEL +4 -0
  352. whop_sdk-0.0.10.dist-info/licenses/LICENSE +201 -0
@@ -0,0 +1,668 @@
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 Union, Optional
6
+ from datetime import datetime
7
+
8
+ import httpx
9
+
10
+ from ..types import PromoCodeStatus, promo_code_list_params, promo_code_create_params
11
+ from .._types import Body, Omit, Query, Headers, NotGiven, SequenceNotStr, omit, not_given
12
+ from .._utils import maybe_transform, async_maybe_transform
13
+ from .._compat import cached_property
14
+ from .._resource import SyncAPIResource, AsyncAPIResource
15
+ from .._response import (
16
+ to_raw_response_wrapper,
17
+ to_streamed_response_wrapper,
18
+ async_to_raw_response_wrapper,
19
+ async_to_streamed_response_wrapper,
20
+ )
21
+ from ..pagination import SyncCursorPage, AsyncCursorPage
22
+ from .._base_client import AsyncPaginator, make_request_options
23
+ from ..types.promo_code import PromoCode
24
+ from ..types.shared.currency import Currency
25
+ from ..types.promo_code_status import PromoCodeStatus
26
+ from ..types.shared.promo_type import PromoType
27
+ from ..types.promo_code_list_response import PromoCodeListResponse
28
+ from ..types.promo_code_delete_response import PromoCodeDeleteResponse
29
+
30
+ __all__ = ["PromoCodesResource", "AsyncPromoCodesResource"]
31
+
32
+
33
+ class PromoCodesResource(SyncAPIResource):
34
+ @cached_property
35
+ def with_raw_response(self) -> PromoCodesResourceWithRawResponse:
36
+ """
37
+ This property can be used as a prefix for any HTTP method call to return
38
+ the raw response object instead of the parsed content.
39
+
40
+ For more information, see https://www.github.com/whopio/whopsdk-python#accessing-raw-response-data-eg-headers
41
+ """
42
+ return PromoCodesResourceWithRawResponse(self)
43
+
44
+ @cached_property
45
+ def with_streaming_response(self) -> PromoCodesResourceWithStreamingResponse:
46
+ """
47
+ An alternative to `.with_raw_response` that doesn't eagerly read the response body.
48
+
49
+ For more information, see https://www.github.com/whopio/whopsdk-python#with_streaming_response
50
+ """
51
+ return PromoCodesResourceWithStreamingResponse(self)
52
+
53
+ def create(
54
+ self,
55
+ *,
56
+ amount_off: float,
57
+ base_currency: Currency,
58
+ code: str,
59
+ company_id: str,
60
+ new_users_only: bool,
61
+ promo_duration_months: int,
62
+ promo_type: PromoType,
63
+ churned_users_only: Optional[bool] | Omit = omit,
64
+ existing_memberships_only: Optional[bool] | Omit = omit,
65
+ expires_at: Union[str, datetime, None] | Omit = omit,
66
+ one_per_customer: Optional[bool] | Omit = omit,
67
+ plan_ids: Optional[SequenceNotStr[str]] | Omit = omit,
68
+ product_id: Optional[str] | Omit = omit,
69
+ stock: Optional[int] | Omit = omit,
70
+ unlimited_stock: Optional[bool] | Omit = omit,
71
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
72
+ # The extra values given here take precedence over values defined on the client or passed to this method.
73
+ extra_headers: Headers | None = None,
74
+ extra_query: Query | None = None,
75
+ extra_body: Body | None = None,
76
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
77
+ ) -> PromoCode:
78
+ """
79
+ Create a new promo code for a product or plan
80
+
81
+ Required permissions:
82
+
83
+ - `promo_code:create`
84
+ - `access_pass:basic:read`
85
+
86
+ Args:
87
+ amount_off: The amount off (% or flat amount) for the promo.
88
+
89
+ base_currency: The monetary currency of the promo code.
90
+
91
+ code: The specific code used to apply the promo at checkout.
92
+
93
+ company_id: The id of the company to create the promo code for.
94
+
95
+ new_users_only: Restricts promo use to only users who have never purchased from the company
96
+ before.
97
+
98
+ promo_duration_months: The number of months this promo code is applied and valid for.
99
+
100
+ promo_type: The type (% or flat amount) of the promo.
101
+
102
+ churned_users_only: Restricts promo use to only users who have churned from the company before.
103
+
104
+ existing_memberships_only: Whether this promo code is for existing memberships only (cancelations)
105
+
106
+ expires_at: The date/time of when the promo expires.
107
+
108
+ one_per_customer: Restricts promo use to only be applied once per customer.
109
+
110
+ plan_ids: The IDs of the plans that the promo code applies to. If product_id is provided,
111
+ it will only apply to plans attached to that product
112
+
113
+ product_id: The product to lock the promo code to, if any. If provided will filter out any
114
+ plan ids not attached to this product
115
+
116
+ stock: The quantity limit on the number of uses.
117
+
118
+ unlimited_stock: Whether or not the promo code should have unlimited stock.
119
+
120
+ extra_headers: Send extra headers
121
+
122
+ extra_query: Add additional query parameters to the request
123
+
124
+ extra_body: Add additional JSON properties to the request
125
+
126
+ timeout: Override the client-level default timeout for this request, in seconds
127
+ """
128
+ return self._post(
129
+ "/promo_codes",
130
+ body=maybe_transform(
131
+ {
132
+ "amount_off": amount_off,
133
+ "base_currency": base_currency,
134
+ "code": code,
135
+ "company_id": company_id,
136
+ "new_users_only": new_users_only,
137
+ "promo_duration_months": promo_duration_months,
138
+ "promo_type": promo_type,
139
+ "churned_users_only": churned_users_only,
140
+ "existing_memberships_only": existing_memberships_only,
141
+ "expires_at": expires_at,
142
+ "one_per_customer": one_per_customer,
143
+ "plan_ids": plan_ids,
144
+ "product_id": product_id,
145
+ "stock": stock,
146
+ "unlimited_stock": unlimited_stock,
147
+ },
148
+ promo_code_create_params.PromoCodeCreateParams,
149
+ ),
150
+ options=make_request_options(
151
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
152
+ ),
153
+ cast_to=PromoCode,
154
+ )
155
+
156
+ def retrieve(
157
+ self,
158
+ id: str,
159
+ *,
160
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
161
+ # The extra values given here take precedence over values defined on the client or passed to this method.
162
+ extra_headers: Headers | None = None,
163
+ extra_query: Query | None = None,
164
+ extra_body: Body | None = None,
165
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
166
+ ) -> PromoCode:
167
+ """
168
+ Retrieves a promo code by ID
169
+
170
+ Required permissions:
171
+
172
+ - `promo_code:basic:read`
173
+ - `access_pass:basic:read`
174
+
175
+ Args:
176
+ extra_headers: Send extra headers
177
+
178
+ extra_query: Add additional query parameters to the request
179
+
180
+ extra_body: Add additional JSON properties to the request
181
+
182
+ timeout: Override the client-level default timeout for this request, in seconds
183
+ """
184
+ if not id:
185
+ raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
186
+ return self._get(
187
+ f"/promo_codes/{id}",
188
+ options=make_request_options(
189
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
190
+ ),
191
+ cast_to=PromoCode,
192
+ )
193
+
194
+ def list(
195
+ self,
196
+ *,
197
+ company_id: str,
198
+ after: Optional[str] | Omit = omit,
199
+ before: Optional[str] | Omit = omit,
200
+ created_after: Union[str, datetime, None] | Omit = omit,
201
+ created_before: Union[str, datetime, None] | Omit = omit,
202
+ first: Optional[int] | Omit = omit,
203
+ last: Optional[int] | Omit = omit,
204
+ plan_ids: Optional[SequenceNotStr[str]] | Omit = omit,
205
+ product_ids: Optional[SequenceNotStr[str]] | Omit = omit,
206
+ status: Optional[PromoCodeStatus] | Omit = omit,
207
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
208
+ # The extra values given here take precedence over values defined on the client or passed to this method.
209
+ extra_headers: Headers | None = None,
210
+ extra_query: Query | None = None,
211
+ extra_body: Body | None = None,
212
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
213
+ ) -> SyncCursorPage[PromoCodeListResponse]:
214
+ """
215
+ Lists promo codes for a company
216
+
217
+ Required permissions:
218
+
219
+ - `promo_code:basic:read`
220
+ - `access_pass:basic:read`
221
+
222
+ Args:
223
+ company_id: The ID of the company to list promo codes for
224
+
225
+ after: Returns the elements in the list that come after the specified cursor.
226
+
227
+ before: Returns the elements in the list that come before the specified cursor.
228
+
229
+ created_after: The minimum creation date to filter by
230
+
231
+ created_before: The maximum creation date to filter by
232
+
233
+ first: Returns the first _n_ elements from the list.
234
+
235
+ last: Returns the last _n_ elements from the list.
236
+
237
+ plan_ids: Filter promo codes by plan ID(s)
238
+
239
+ product_ids: Filter promo codes by product ID(s)
240
+
241
+ status: Statuses for promo codes
242
+
243
+ extra_headers: Send extra headers
244
+
245
+ extra_query: Add additional query parameters to the request
246
+
247
+ extra_body: Add additional JSON properties to the request
248
+
249
+ timeout: Override the client-level default timeout for this request, in seconds
250
+ """
251
+ return self._get_api_list(
252
+ "/promo_codes",
253
+ page=SyncCursorPage[PromoCodeListResponse],
254
+ options=make_request_options(
255
+ extra_headers=extra_headers,
256
+ extra_query=extra_query,
257
+ extra_body=extra_body,
258
+ timeout=timeout,
259
+ query=maybe_transform(
260
+ {
261
+ "company_id": company_id,
262
+ "after": after,
263
+ "before": before,
264
+ "created_after": created_after,
265
+ "created_before": created_before,
266
+ "first": first,
267
+ "last": last,
268
+ "plan_ids": plan_ids,
269
+ "product_ids": product_ids,
270
+ "status": status,
271
+ },
272
+ promo_code_list_params.PromoCodeListParams,
273
+ ),
274
+ ),
275
+ model=PromoCodeListResponse,
276
+ )
277
+
278
+ def delete(
279
+ self,
280
+ id: str,
281
+ *,
282
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
283
+ # The extra values given here take precedence over values defined on the client or passed to this method.
284
+ extra_headers: Headers | None = None,
285
+ extra_query: Query | None = None,
286
+ extra_body: Body | None = None,
287
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
288
+ ) -> PromoCodeDeleteResponse:
289
+ """
290
+ Archive a promo code, preventing further use
291
+
292
+ Required permissions:
293
+
294
+ - `promo_code:delete`
295
+
296
+ Args:
297
+ extra_headers: Send extra headers
298
+
299
+ extra_query: Add additional query parameters to the request
300
+
301
+ extra_body: Add additional JSON properties to the request
302
+
303
+ timeout: Override the client-level default timeout for this request, in seconds
304
+ """
305
+ if not id:
306
+ raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
307
+ return self._delete(
308
+ f"/promo_codes/{id}",
309
+ options=make_request_options(
310
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
311
+ ),
312
+ cast_to=PromoCodeDeleteResponse,
313
+ )
314
+
315
+
316
+ class AsyncPromoCodesResource(AsyncAPIResource):
317
+ @cached_property
318
+ def with_raw_response(self) -> AsyncPromoCodesResourceWithRawResponse:
319
+ """
320
+ This property can be used as a prefix for any HTTP method call to return
321
+ the raw response object instead of the parsed content.
322
+
323
+ For more information, see https://www.github.com/whopio/whopsdk-python#accessing-raw-response-data-eg-headers
324
+ """
325
+ return AsyncPromoCodesResourceWithRawResponse(self)
326
+
327
+ @cached_property
328
+ def with_streaming_response(self) -> AsyncPromoCodesResourceWithStreamingResponse:
329
+ """
330
+ An alternative to `.with_raw_response` that doesn't eagerly read the response body.
331
+
332
+ For more information, see https://www.github.com/whopio/whopsdk-python#with_streaming_response
333
+ """
334
+ return AsyncPromoCodesResourceWithStreamingResponse(self)
335
+
336
+ async def create(
337
+ self,
338
+ *,
339
+ amount_off: float,
340
+ base_currency: Currency,
341
+ code: str,
342
+ company_id: str,
343
+ new_users_only: bool,
344
+ promo_duration_months: int,
345
+ promo_type: PromoType,
346
+ churned_users_only: Optional[bool] | Omit = omit,
347
+ existing_memberships_only: Optional[bool] | Omit = omit,
348
+ expires_at: Union[str, datetime, None] | Omit = omit,
349
+ one_per_customer: Optional[bool] | Omit = omit,
350
+ plan_ids: Optional[SequenceNotStr[str]] | Omit = omit,
351
+ product_id: Optional[str] | Omit = omit,
352
+ stock: Optional[int] | Omit = omit,
353
+ unlimited_stock: Optional[bool] | Omit = omit,
354
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
355
+ # The extra values given here take precedence over values defined on the client or passed to this method.
356
+ extra_headers: Headers | None = None,
357
+ extra_query: Query | None = None,
358
+ extra_body: Body | None = None,
359
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
360
+ ) -> PromoCode:
361
+ """
362
+ Create a new promo code for a product or plan
363
+
364
+ Required permissions:
365
+
366
+ - `promo_code:create`
367
+ - `access_pass:basic:read`
368
+
369
+ Args:
370
+ amount_off: The amount off (% or flat amount) for the promo.
371
+
372
+ base_currency: The monetary currency of the promo code.
373
+
374
+ code: The specific code used to apply the promo at checkout.
375
+
376
+ company_id: The id of the company to create the promo code for.
377
+
378
+ new_users_only: Restricts promo use to only users who have never purchased from the company
379
+ before.
380
+
381
+ promo_duration_months: The number of months this promo code is applied and valid for.
382
+
383
+ promo_type: The type (% or flat amount) of the promo.
384
+
385
+ churned_users_only: Restricts promo use to only users who have churned from the company before.
386
+
387
+ existing_memberships_only: Whether this promo code is for existing memberships only (cancelations)
388
+
389
+ expires_at: The date/time of when the promo expires.
390
+
391
+ one_per_customer: Restricts promo use to only be applied once per customer.
392
+
393
+ plan_ids: The IDs of the plans that the promo code applies to. If product_id is provided,
394
+ it will only apply to plans attached to that product
395
+
396
+ product_id: The product to lock the promo code to, if any. If provided will filter out any
397
+ plan ids not attached to this product
398
+
399
+ stock: The quantity limit on the number of uses.
400
+
401
+ unlimited_stock: Whether or not the promo code should have unlimited stock.
402
+
403
+ extra_headers: Send extra headers
404
+
405
+ extra_query: Add additional query parameters to the request
406
+
407
+ extra_body: Add additional JSON properties to the request
408
+
409
+ timeout: Override the client-level default timeout for this request, in seconds
410
+ """
411
+ return await self._post(
412
+ "/promo_codes",
413
+ body=await async_maybe_transform(
414
+ {
415
+ "amount_off": amount_off,
416
+ "base_currency": base_currency,
417
+ "code": code,
418
+ "company_id": company_id,
419
+ "new_users_only": new_users_only,
420
+ "promo_duration_months": promo_duration_months,
421
+ "promo_type": promo_type,
422
+ "churned_users_only": churned_users_only,
423
+ "existing_memberships_only": existing_memberships_only,
424
+ "expires_at": expires_at,
425
+ "one_per_customer": one_per_customer,
426
+ "plan_ids": plan_ids,
427
+ "product_id": product_id,
428
+ "stock": stock,
429
+ "unlimited_stock": unlimited_stock,
430
+ },
431
+ promo_code_create_params.PromoCodeCreateParams,
432
+ ),
433
+ options=make_request_options(
434
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
435
+ ),
436
+ cast_to=PromoCode,
437
+ )
438
+
439
+ async def retrieve(
440
+ self,
441
+ id: str,
442
+ *,
443
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
444
+ # The extra values given here take precedence over values defined on the client or passed to this method.
445
+ extra_headers: Headers | None = None,
446
+ extra_query: Query | None = None,
447
+ extra_body: Body | None = None,
448
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
449
+ ) -> PromoCode:
450
+ """
451
+ Retrieves a promo code by ID
452
+
453
+ Required permissions:
454
+
455
+ - `promo_code:basic:read`
456
+ - `access_pass:basic:read`
457
+
458
+ Args:
459
+ extra_headers: Send extra headers
460
+
461
+ extra_query: Add additional query parameters to the request
462
+
463
+ extra_body: Add additional JSON properties to the request
464
+
465
+ timeout: Override the client-level default timeout for this request, in seconds
466
+ """
467
+ if not id:
468
+ raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
469
+ return await self._get(
470
+ f"/promo_codes/{id}",
471
+ options=make_request_options(
472
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
473
+ ),
474
+ cast_to=PromoCode,
475
+ )
476
+
477
+ def list(
478
+ self,
479
+ *,
480
+ company_id: str,
481
+ after: Optional[str] | Omit = omit,
482
+ before: Optional[str] | Omit = omit,
483
+ created_after: Union[str, datetime, None] | Omit = omit,
484
+ created_before: Union[str, datetime, None] | Omit = omit,
485
+ first: Optional[int] | Omit = omit,
486
+ last: Optional[int] | Omit = omit,
487
+ plan_ids: Optional[SequenceNotStr[str]] | Omit = omit,
488
+ product_ids: Optional[SequenceNotStr[str]] | Omit = omit,
489
+ status: Optional[PromoCodeStatus] | Omit = omit,
490
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
491
+ # The extra values given here take precedence over values defined on the client or passed to this method.
492
+ extra_headers: Headers | None = None,
493
+ extra_query: Query | None = None,
494
+ extra_body: Body | None = None,
495
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
496
+ ) -> AsyncPaginator[PromoCodeListResponse, AsyncCursorPage[PromoCodeListResponse]]:
497
+ """
498
+ Lists promo codes for a company
499
+
500
+ Required permissions:
501
+
502
+ - `promo_code:basic:read`
503
+ - `access_pass:basic:read`
504
+
505
+ Args:
506
+ company_id: The ID of the company to list promo codes for
507
+
508
+ after: Returns the elements in the list that come after the specified cursor.
509
+
510
+ before: Returns the elements in the list that come before the specified cursor.
511
+
512
+ created_after: The minimum creation date to filter by
513
+
514
+ created_before: The maximum creation date to filter by
515
+
516
+ first: Returns the first _n_ elements from the list.
517
+
518
+ last: Returns the last _n_ elements from the list.
519
+
520
+ plan_ids: Filter promo codes by plan ID(s)
521
+
522
+ product_ids: Filter promo codes by product ID(s)
523
+
524
+ status: Statuses for promo codes
525
+
526
+ extra_headers: Send extra headers
527
+
528
+ extra_query: Add additional query parameters to the request
529
+
530
+ extra_body: Add additional JSON properties to the request
531
+
532
+ timeout: Override the client-level default timeout for this request, in seconds
533
+ """
534
+ return self._get_api_list(
535
+ "/promo_codes",
536
+ page=AsyncCursorPage[PromoCodeListResponse],
537
+ options=make_request_options(
538
+ extra_headers=extra_headers,
539
+ extra_query=extra_query,
540
+ extra_body=extra_body,
541
+ timeout=timeout,
542
+ query=maybe_transform(
543
+ {
544
+ "company_id": company_id,
545
+ "after": after,
546
+ "before": before,
547
+ "created_after": created_after,
548
+ "created_before": created_before,
549
+ "first": first,
550
+ "last": last,
551
+ "plan_ids": plan_ids,
552
+ "product_ids": product_ids,
553
+ "status": status,
554
+ },
555
+ promo_code_list_params.PromoCodeListParams,
556
+ ),
557
+ ),
558
+ model=PromoCodeListResponse,
559
+ )
560
+
561
+ async def delete(
562
+ self,
563
+ id: str,
564
+ *,
565
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
566
+ # The extra values given here take precedence over values defined on the client or passed to this method.
567
+ extra_headers: Headers | None = None,
568
+ extra_query: Query | None = None,
569
+ extra_body: Body | None = None,
570
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
571
+ ) -> PromoCodeDeleteResponse:
572
+ """
573
+ Archive a promo code, preventing further use
574
+
575
+ Required permissions:
576
+
577
+ - `promo_code:delete`
578
+
579
+ Args:
580
+ extra_headers: Send extra headers
581
+
582
+ extra_query: Add additional query parameters to the request
583
+
584
+ extra_body: Add additional JSON properties to the request
585
+
586
+ timeout: Override the client-level default timeout for this request, in seconds
587
+ """
588
+ if not id:
589
+ raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
590
+ return await self._delete(
591
+ f"/promo_codes/{id}",
592
+ options=make_request_options(
593
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
594
+ ),
595
+ cast_to=PromoCodeDeleteResponse,
596
+ )
597
+
598
+
599
+ class PromoCodesResourceWithRawResponse:
600
+ def __init__(self, promo_codes: PromoCodesResource) -> None:
601
+ self._promo_codes = promo_codes
602
+
603
+ self.create = to_raw_response_wrapper(
604
+ promo_codes.create,
605
+ )
606
+ self.retrieve = to_raw_response_wrapper(
607
+ promo_codes.retrieve,
608
+ )
609
+ self.list = to_raw_response_wrapper(
610
+ promo_codes.list,
611
+ )
612
+ self.delete = to_raw_response_wrapper(
613
+ promo_codes.delete,
614
+ )
615
+
616
+
617
+ class AsyncPromoCodesResourceWithRawResponse:
618
+ def __init__(self, promo_codes: AsyncPromoCodesResource) -> None:
619
+ self._promo_codes = promo_codes
620
+
621
+ self.create = async_to_raw_response_wrapper(
622
+ promo_codes.create,
623
+ )
624
+ self.retrieve = async_to_raw_response_wrapper(
625
+ promo_codes.retrieve,
626
+ )
627
+ self.list = async_to_raw_response_wrapper(
628
+ promo_codes.list,
629
+ )
630
+ self.delete = async_to_raw_response_wrapper(
631
+ promo_codes.delete,
632
+ )
633
+
634
+
635
+ class PromoCodesResourceWithStreamingResponse:
636
+ def __init__(self, promo_codes: PromoCodesResource) -> None:
637
+ self._promo_codes = promo_codes
638
+
639
+ self.create = to_streamed_response_wrapper(
640
+ promo_codes.create,
641
+ )
642
+ self.retrieve = to_streamed_response_wrapper(
643
+ promo_codes.retrieve,
644
+ )
645
+ self.list = to_streamed_response_wrapper(
646
+ promo_codes.list,
647
+ )
648
+ self.delete = to_streamed_response_wrapper(
649
+ promo_codes.delete,
650
+ )
651
+
652
+
653
+ class AsyncPromoCodesResourceWithStreamingResponse:
654
+ def __init__(self, promo_codes: AsyncPromoCodesResource) -> None:
655
+ self._promo_codes = promo_codes
656
+
657
+ self.create = async_to_streamed_response_wrapper(
658
+ promo_codes.create,
659
+ )
660
+ self.retrieve = async_to_streamed_response_wrapper(
661
+ promo_codes.retrieve,
662
+ )
663
+ self.list = async_to_streamed_response_wrapper(
664
+ promo_codes.list,
665
+ )
666
+ self.delete = async_to_streamed_response_wrapper(
667
+ promo_codes.delete,
668
+ )