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,128 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from typing import Dict, Optional
4
+ from datetime import datetime
5
+
6
+ from .currency import Currency
7
+ from ..._models import BaseModel
8
+ from .membership_status import MembershipStatus
9
+
10
+ __all__ = ["Membership", "Company", "Member", "Plan", "Product", "PromoCode", "User"]
11
+
12
+
13
+ class Company(BaseModel):
14
+ id: str
15
+ """The ID (tag) of the company."""
16
+
17
+ title: str
18
+ """The title of the company."""
19
+
20
+
21
+ class Member(BaseModel):
22
+ id: str
23
+ """The ID of the member"""
24
+
25
+
26
+ class Plan(BaseModel):
27
+ id: str
28
+ """The internal ID of the plan."""
29
+
30
+
31
+ class Product(BaseModel):
32
+ id: str
33
+ """The internal ID of the public product."""
34
+
35
+ title: str
36
+ """The title of the product. Use for Whop 4.0."""
37
+
38
+
39
+ class PromoCode(BaseModel):
40
+ id: str
41
+ """The ID of the promo."""
42
+
43
+
44
+ class User(BaseModel):
45
+ id: str
46
+ """The internal ID of the user."""
47
+
48
+ name: Optional[str] = None
49
+ """The name of the user from their Whop account."""
50
+
51
+ username: str
52
+ """The username of the user from their Whop account."""
53
+
54
+
55
+ class Membership(BaseModel):
56
+ id: str
57
+ """The ID of the membership"""
58
+
59
+ cancel_at_period_end: bool
60
+ """Whether this Membership is set to cancel at the end of the current billing
61
+ cycle.
62
+
63
+ Only applies for memberships that have a renewal plan.
64
+ """
65
+
66
+ canceled_at: Optional[datetime] = None
67
+ """The epoch timestamp of when the customer initiated a cancellation."""
68
+
69
+ cancellation_reason: Optional[str] = None
70
+ """The reason that the member canceled the membership (filled out by the member)."""
71
+
72
+ company: Company
73
+ """The Company this Membership belongs to."""
74
+
75
+ created_at: datetime
76
+ """The timestamp, in seconds, that this Membership was created at."""
77
+
78
+ currency: Optional[Currency] = None
79
+ """The available currencies on the platform"""
80
+
81
+ license_key: Optional[str] = None
82
+ """The license key for this Membership.
83
+
84
+ This is only present if the membership grants access to an instance of the Whop
85
+ Software app.
86
+ """
87
+
88
+ manage_url: Optional[str] = None
89
+ """The URL for the customer to manage their membership."""
90
+
91
+ member: Optional[Member] = None
92
+ """The Member that this Membership belongs to."""
93
+
94
+ metadata: Dict[str, object]
95
+ """A JSON object used to store software licensing information. Ex. HWID"""
96
+
97
+ payment_collection_paused: bool
98
+ """Whether the membership's payments are currently paused."""
99
+
100
+ plan: Plan
101
+ """The Plan this Membership is for."""
102
+
103
+ product: Product
104
+ """The Product this Membership grants access to."""
105
+
106
+ promo_code: Optional[PromoCode] = None
107
+ """The Promo Code that is currently applied to this Membership."""
108
+
109
+ renewal_period_end: Optional[datetime] = None
110
+ """
111
+ The timestamp in seconds at which the current billing cycle for this
112
+ subscription ends. Only applies for memberships that have a renewal plan.
113
+ """
114
+
115
+ renewal_period_start: Optional[datetime] = None
116
+ """
117
+ The timestamp in seconds at which the current billing cycle for this
118
+ subscription start. Only applies for memberships that have a renewal plan.
119
+ """
120
+
121
+ status: MembershipStatus
122
+ """The status of the membership."""
123
+
124
+ updated_at: datetime
125
+ """A timestamp of when the membership was last updated"""
126
+
127
+ user: Optional[User] = None
128
+ """The user this membership belongs to"""
@@ -0,0 +1,9 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from typing_extensions import Literal, TypeAlias
4
+
5
+ __all__ = ["MembershipStatus"]
6
+
7
+ MembershipStatus: TypeAlias = Literal[
8
+ "trialing", "active", "past_due", "completed", "canceled", "expired", "unresolved", "drafted"
9
+ ]
@@ -0,0 +1,90 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from typing import List, Optional
4
+ from datetime import datetime
5
+
6
+ from ..._models import BaseModel
7
+ from .dms_post_types import DmsPostTypes
8
+
9
+ __all__ = ["Message", "Poll", "PollOption", "PollVote", "ReactionCount", "User"]
10
+
11
+
12
+ class PollOption(BaseModel):
13
+ id: str
14
+ """The ID of the poll option"""
15
+
16
+ text: str
17
+ """The text of the poll option"""
18
+
19
+
20
+ class Poll(BaseModel):
21
+ options: Optional[List[PollOption]] = None
22
+ """The options for the poll"""
23
+
24
+
25
+ class PollVote(BaseModel):
26
+ count: int
27
+ """The number of users who reacted"""
28
+
29
+ option_id: Optional[str] = None
30
+ """The reaction that was used"""
31
+
32
+
33
+ class ReactionCount(BaseModel):
34
+ count: int
35
+ """The number of users who reacted"""
36
+
37
+ emoji: Optional[str] = None
38
+ """The emoji that was used in shortcode format (:heart:)"""
39
+
40
+
41
+ class User(BaseModel):
42
+ id: str
43
+ """The internal ID of the user."""
44
+
45
+ name: Optional[str] = None
46
+ """The name of the user from their Whop account."""
47
+
48
+ username: str
49
+ """The username of the user from their Whop account."""
50
+
51
+
52
+ class Message(BaseModel):
53
+ id: str
54
+ """The unique identifier of the resource."""
55
+
56
+ content: Optional[str] = None
57
+ """The content of the message in Markdown format"""
58
+
59
+ created_at: datetime
60
+ """The timestamp when the post was created"""
61
+
62
+ is_edited: bool
63
+ """Whether the message has been edited"""
64
+
65
+ is_pinned: bool
66
+ """Whether this message is pinned"""
67
+
68
+ message_type: DmsPostTypes
69
+ """The type of post"""
70
+
71
+ poll: Optional[Poll] = None
72
+ """The poll for this message"""
73
+
74
+ poll_votes: List[PollVote]
75
+ """The reaction counts for this message"""
76
+
77
+ reaction_counts: List[ReactionCount]
78
+ """The reaction counts for this message"""
79
+
80
+ replying_to_message_id: Optional[str] = None
81
+ """The ID of the message this is replying to, if applicable"""
82
+
83
+ updated_at: datetime
84
+ """The timestamp when the post was last updated"""
85
+
86
+ user: User
87
+ """The user who sent this message"""
88
+
89
+ view_count: Optional[int] = None
90
+ """The number of times this message has been viewed"""
@@ -0,0 +1,21 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from typing import Optional
4
+
5
+ from ..._models import BaseModel
6
+
7
+ __all__ = ["PageInfo"]
8
+
9
+
10
+ class PageInfo(BaseModel):
11
+ end_cursor: Optional[str] = None
12
+ """When paginating forwards, the cursor to continue."""
13
+
14
+ has_next_page: bool
15
+ """When paginating forwards, are there more items?"""
16
+
17
+ has_previous_page: bool
18
+ """When paginating backwards, are there more items?"""
19
+
20
+ start_cursor: Optional[str] = None
21
+ """When paginating backwards, the cursor to continue."""
@@ -0,0 +1,273 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from typing import Dict, Optional
4
+ from datetime import datetime
5
+
6
+ from .currency import Currency
7
+ from ..._models import BaseModel
8
+ from .promo_type import PromoType
9
+ from ..card_brands import CardBrands
10
+ from .receipt_status import ReceiptStatus
11
+ from ..billing_reasons import BillingReasons
12
+ from .membership_status import MembershipStatus
13
+ from ..payment_method_types import PaymentMethodTypes
14
+ from .friendly_receipt_status import FriendlyReceiptStatus
15
+
16
+ __all__ = [
17
+ "Payment",
18
+ "BillingAddress",
19
+ "Company",
20
+ "Member",
21
+ "Membership",
22
+ "PaymentToken",
23
+ "PaymentTokenCard",
24
+ "Plan",
25
+ "Product",
26
+ "PromoCode",
27
+ "User",
28
+ ]
29
+
30
+
31
+ class BillingAddress(BaseModel):
32
+ city: Optional[str] = None
33
+ """The city of the address."""
34
+
35
+ country: Optional[str] = None
36
+ """The country of the address."""
37
+
38
+ line1: Optional[str] = None
39
+ """The line 1 of the address."""
40
+
41
+ line2: Optional[str] = None
42
+ """The line 2 of the address."""
43
+
44
+ name: Optional[str] = None
45
+ """The name of the customer."""
46
+
47
+ postal_code: Optional[str] = None
48
+ """The postal code of the address."""
49
+
50
+ state: Optional[str] = None
51
+ """The state of the address."""
52
+
53
+
54
+ class Company(BaseModel):
55
+ id: str
56
+ """The ID of the company"""
57
+
58
+ route: str
59
+ """The slug/route of the company on the Whop site."""
60
+
61
+ title: str
62
+ """The written name of the company."""
63
+
64
+
65
+ class Member(BaseModel):
66
+ id: str
67
+ """The ID of the member"""
68
+
69
+ phone: Optional[str] = None
70
+ """The phone number for the member, if available."""
71
+
72
+
73
+ class Membership(BaseModel):
74
+ id: str
75
+ """The internal ID of the membership."""
76
+
77
+ status: MembershipStatus
78
+ """The state of the membership."""
79
+
80
+
81
+ class PaymentTokenCard(BaseModel):
82
+ brand: Optional[CardBrands] = None
83
+ """Possible card brands that a payment token can have"""
84
+
85
+ exp_month: Optional[int] = None
86
+ """Card expiration month, like 03 for March."""
87
+
88
+ exp_year: Optional[int] = None
89
+ """Card expiration year, like 27 for 2027."""
90
+
91
+ last4: Optional[str] = None
92
+ """Last four digits of the card."""
93
+
94
+
95
+ class PaymentToken(BaseModel):
96
+ id: str
97
+ """The ID of the payment token"""
98
+
99
+ card: Optional[PaymentTokenCard] = None
100
+ """
101
+ The card data associated with the payment token, if its a debit or credit card
102
+ token.
103
+ """
104
+
105
+ created_at: datetime
106
+ """The date and time the payment token was created"""
107
+
108
+ payment_method_type: PaymentMethodTypes
109
+ """The payment method type of the payment token"""
110
+
111
+
112
+ class Plan(BaseModel):
113
+ id: str
114
+ """The internal ID of the plan."""
115
+
116
+
117
+ class Product(BaseModel):
118
+ id: str
119
+ """The internal ID of the public product."""
120
+
121
+ route: str
122
+ """The route of the product."""
123
+
124
+ title: str
125
+ """The title of the product. Use for Whop 4.0."""
126
+
127
+
128
+ class PromoCode(BaseModel):
129
+ id: str
130
+ """The ID of the promo."""
131
+
132
+ amount_off: float
133
+ """The amount off (% or flat amount) for the promo."""
134
+
135
+ base_currency: Currency
136
+ """The monetary currency of the promo code."""
137
+
138
+ code: Optional[str] = None
139
+ """The specific code used to apply the promo at checkout."""
140
+
141
+ number_of_intervals: Optional[int] = None
142
+ """The number of months the promo is applied for."""
143
+
144
+ promo_type: PromoType
145
+ """The type (% or flat amount) of the promo."""
146
+
147
+
148
+ class User(BaseModel):
149
+ id: str
150
+ """The internal ID of the user."""
151
+
152
+ email: Optional[str] = None
153
+ """The email of the user"""
154
+
155
+ name: Optional[str] = None
156
+ """The name of the user from their Whop account."""
157
+
158
+ username: str
159
+ """The username of the user from their Whop account."""
160
+
161
+
162
+ class Payment(BaseModel):
163
+ id: str
164
+ """The payment ID"""
165
+
166
+ amount_after_fees: float
167
+ """How much the payment is for after fees"""
168
+
169
+ auto_refunded: bool
170
+ """Whether this payment was auto refunded or not"""
171
+
172
+ billing_address: Optional[BillingAddress] = None
173
+ """The address of the user who made the payment."""
174
+
175
+ billing_reason: Optional[BillingReasons] = None
176
+ """The reason why a specific payment was billed"""
177
+
178
+ card_brand: Optional[CardBrands] = None
179
+ """Possible card brands that a payment token can have"""
180
+
181
+ card_last4: Optional[str] = None
182
+ """The last 4 digits of the card used to make the payment."""
183
+
184
+ company: Optional[Company] = None
185
+ """The company for the payment."""
186
+
187
+ created_at: datetime
188
+ """The datetime the payment was created"""
189
+
190
+ currency: Optional[Currency] = None
191
+ """The available currencies on the platform"""
192
+
193
+ dispute_alerted_at: Optional[datetime] = None
194
+ """When an alert came in that this transaction will be disputed"""
195
+
196
+ failure_message: Optional[str] = None
197
+ """If the payment failed, the reason for the failure."""
198
+
199
+ last_payment_attempt: Optional[datetime] = None
200
+ """The time of the last payment attempt."""
201
+
202
+ member: Optional[Member] = None
203
+ """The member attached to this payment."""
204
+
205
+ membership: Optional[Membership] = None
206
+ """The membership attached to this payment."""
207
+
208
+ metadata: Optional[Dict[str, object]] = None
209
+ """The custom metadata stored on this payment.
210
+
211
+ This will be copied the checkout configuration for which this payment was made
212
+ """
213
+
214
+ paid_at: Optional[datetime] = None
215
+ """The datetime the payment was paid"""
216
+
217
+ payment_method_type: Optional[PaymentMethodTypes] = None
218
+ """The different types of payment methods that can be used."""
219
+
220
+ payment_token: Optional[PaymentToken] = None
221
+ """The payment token used for the payment, if available."""
222
+
223
+ plan: Optional[Plan] = None
224
+ """The plan attached to this payment."""
225
+
226
+ product: Optional[Product] = None
227
+ """The product this payment was made for"""
228
+
229
+ promo_code: Optional[PromoCode] = None
230
+ """The promo code used for this payment."""
231
+
232
+ refundable: bool
233
+ """
234
+ True only for payments that are `paid`, have not been fully refunded, and were
235
+ processed by a payment processor that allows refunds.
236
+ """
237
+
238
+ refunded_amount: Optional[float] = None
239
+ """The payment refund amount(if applicable)."""
240
+
241
+ refunded_at: Optional[datetime] = None
242
+ """When the payment was refunded (if applicable)."""
243
+
244
+ retryable: bool
245
+ """
246
+ True when the payment status is `open` and its membership is in one of the
247
+ retry-eligible states (`active`, `trialing`, `completed`, or `past_due`);
248
+ otherwise false. Used to decide if Whop can attempt the charge again.
249
+ """
250
+
251
+ status: Optional[ReceiptStatus] = None
252
+ """The status of a receipt"""
253
+
254
+ substatus: FriendlyReceiptStatus
255
+ """The friendly status of the payment."""
256
+
257
+ subtotal: Optional[float] = None
258
+ """The subtotal to show to the creator (excluding buyer fees)."""
259
+
260
+ total: Optional[float] = None
261
+ """The total to show to the creator (excluding buyer fees)."""
262
+
263
+ usd_total: Optional[float] = None
264
+ """The total in USD to show to the creator (excluding buyer fees)."""
265
+
266
+ user: Optional[User] = None
267
+ """The user that made this payment."""
268
+
269
+ voidable: bool
270
+ """
271
+ True when the payment is tied to a membership in `past_due`, the payment status
272
+ is `open`, and the processor allows voiding payments; otherwise false.
273
+ """
@@ -0,0 +1,159 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from typing import List, Optional
4
+ from datetime import datetime
5
+ from typing_extensions import Literal
6
+
7
+ from .currency import Currency
8
+ from .tax_type import TaxType
9
+ from ..._models import BaseModel
10
+ from .plan_type import PlanType
11
+ from .visibility import Visibility
12
+ from .release_method import ReleaseMethod
13
+ from ..payment_method_types import PaymentMethodTypes
14
+
15
+ __all__ = ["Plan", "Company", "CustomField", "Invoice", "PaymentMethodConfiguration", "Product"]
16
+
17
+
18
+ class Company(BaseModel):
19
+ id: str
20
+ """The ID (tag) of the company."""
21
+
22
+ title: str
23
+ """The title of the company."""
24
+
25
+
26
+ class CustomField(BaseModel):
27
+ id: str
28
+ """The internal ID of the given custom field"""
29
+
30
+ field_type: Literal["text"]
31
+ """What type of input field to use."""
32
+
33
+ name: str
34
+ """The title/header of the custom field."""
35
+
36
+ order: Optional[int] = None
37
+ """How the custom field should be ordered when rendered on the checkout page."""
38
+
39
+ placeholder: Optional[str] = None
40
+ """An example response displayed in the input field."""
41
+
42
+ required: bool
43
+ """Whether or not the custom field is required."""
44
+
45
+
46
+ class Invoice(BaseModel):
47
+ id: str
48
+ """The ID of the invoice."""
49
+
50
+
51
+ class PaymentMethodConfiguration(BaseModel):
52
+ disabled: List[PaymentMethodTypes]
53
+ """An array of payment method identifiers that are explicitly disabled.
54
+
55
+ Only applies if the include_platform_defaults is true.
56
+ """
57
+
58
+ enabled: List[PaymentMethodTypes]
59
+ """An array of payment method identifiers that are explicitly enabled.
60
+
61
+ This means these payment methods will be shown on checkout. Example use case is
62
+ to only enable a specific payment method like cashapp, or extending the platform
63
+ defaults with additional methods.
64
+ """
65
+
66
+ include_platform_defaults: bool
67
+ """
68
+ Whether Whop's platform default payment method enablement settings are included
69
+ in this configuration. The full list of default payment methods can be found in
70
+ the documentation at docs.whop.com/payments.
71
+ """
72
+
73
+
74
+ class Product(BaseModel):
75
+ id: str
76
+ """The internal ID of the public product."""
77
+
78
+ title: str
79
+ """The title of the product. Use for Whop 4.0."""
80
+
81
+
82
+ class Plan(BaseModel):
83
+ id: str
84
+ """The internal ID of the plan."""
85
+
86
+ billing_period: Optional[int] = None
87
+ """The interval at which the plan charges (renewal plans)."""
88
+
89
+ collect_tax: bool
90
+ """Whether or not the plan collects tax."""
91
+
92
+ company: Optional[Company] = None
93
+ """The company for the plan."""
94
+
95
+ created_at: datetime
96
+ """When the plan was created."""
97
+
98
+ currency: Currency
99
+ """The respective currency identifier for the plan."""
100
+
101
+ custom_fields: List[CustomField]
102
+ """The custom fields for the plan."""
103
+
104
+ description: Optional[str] = None
105
+ """The description of the plan."""
106
+
107
+ expiration_days: Optional[int] = None
108
+ """The interval at which the plan charges (expiration plans)."""
109
+
110
+ initial_price: float
111
+ """The price a person has to pay for a plan on the initial purchase."""
112
+
113
+ internal_notes: Optional[str] = None
114
+ """A personal description or notes section for the business."""
115
+
116
+ invoice: Optional[Invoice] = None
117
+ """The invoice associated with this plan."""
118
+
119
+ member_count: Optional[int] = None
120
+ """The number of members for the plan."""
121
+
122
+ payment_method_configuration: Optional[PaymentMethodConfiguration] = None
123
+ """The explicit payment method configuration for the plan, if any."""
124
+
125
+ plan_type: PlanType
126
+ """Indicates if the plan is a one time payment or recurring."""
127
+
128
+ product: Optional[Product] = None
129
+ """The product that this plan belongs to."""
130
+
131
+ purchase_url: str
132
+ """The direct link to purchase the product."""
133
+
134
+ release_method: ReleaseMethod
135
+ """This is the release method the business uses to sell this plan."""
136
+
137
+ renewal_price: float
138
+ """The price a person has to pay for a plan on the renewal purchase."""
139
+
140
+ stock: Optional[int] = None
141
+ """The number of units available for purchase. Only displayed to authorized actors"""
142
+
143
+ tax_type: TaxType
144
+ """The tax type for the plan."""
145
+
146
+ title: Optional[str] = None
147
+ """The title of the plan. This will be visible on the product page to customers."""
148
+
149
+ trial_period_days: Optional[int] = None
150
+ """The number of free trial days added before a renewal plan."""
151
+
152
+ unlimited_stock: bool
153
+ """Limits/doesn't limit the number of units available for purchase."""
154
+
155
+ updated_at: datetime
156
+ """When the plan was last updated."""
157
+
158
+ visibility: Visibility
159
+ """Shows or hides the plan from public/business view."""
@@ -0,0 +1,7 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from typing_extensions import Literal, TypeAlias
4
+
5
+ __all__ = ["PlanType"]
6
+
7
+ PlanType: TypeAlias = Literal["renewal", "one_time"]