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,29 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from datetime import datetime
4
+ from typing_extensions import Literal
5
+
6
+ from .._models import BaseModel
7
+ from .shared.membership import Membership
8
+
9
+ __all__ = ["MembershipActivatedWebhookEvent"]
10
+
11
+
12
+ class MembershipActivatedWebhookEvent(BaseModel):
13
+ id: str
14
+ """A unique ID for every single webhook request"""
15
+
16
+ api_version: Literal["v1"]
17
+ """The API version for this webhook"""
18
+
19
+ data: Membership
20
+ """
21
+ A membership represents a purchase between a User and a Company for a specific
22
+ Product.
23
+ """
24
+
25
+ timestamp: datetime
26
+ """The timestamp in ISO 8601 format that the webhook was sent at on the server"""
27
+
28
+ type: Literal["membership.activated"]
29
+ """The webhook event type"""
@@ -0,0 +1,13 @@
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 Optional
6
+ from typing_extensions import Literal, TypedDict
7
+
8
+ __all__ = ["MembershipCancelParams"]
9
+
10
+
11
+ class MembershipCancelParams(TypedDict, total=False):
12
+ cancellation_mode: Optional[Literal["at_period_end", "immediate"]]
13
+ """The mode of cancellation for a membership"""
@@ -0,0 +1,29 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from datetime import datetime
4
+ from typing_extensions import Literal
5
+
6
+ from .._models import BaseModel
7
+ from .shared.membership import Membership
8
+
9
+ __all__ = ["MembershipDeactivatedWebhookEvent"]
10
+
11
+
12
+ class MembershipDeactivatedWebhookEvent(BaseModel):
13
+ id: str
14
+ """A unique ID for every single webhook request"""
15
+
16
+ api_version: Literal["v1"]
17
+ """The API version for this webhook"""
18
+
19
+ data: Membership
20
+ """
21
+ A membership represents a purchase between a User and a Company for a specific
22
+ Product.
23
+ """
24
+
25
+ timestamp: datetime
26
+ """The timestamp in ISO 8601 format that the webhook was sent at on the server"""
27
+
28
+ type: Literal["membership.deactivated"]
29
+ """The webhook event type"""
@@ -0,0 +1,73 @@
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, Annotated, TypedDict
8
+
9
+ from .._types import SequenceNotStr
10
+ from .._utils import PropertyInfo
11
+ from .shared.direction import Direction
12
+ from .shared.membership_status import MembershipStatus
13
+
14
+ __all__ = ["MembershipListParams"]
15
+
16
+
17
+ class MembershipListParams(TypedDict, total=False):
18
+ after: Optional[str]
19
+ """Returns the elements in the list that come after the specified cursor."""
20
+
21
+ before: Optional[str]
22
+ """Returns the elements in the list that come before the specified cursor."""
23
+
24
+ cancel_options: Optional[
25
+ List[
26
+ Literal[
27
+ "too_expensive",
28
+ "switching",
29
+ "missing_features",
30
+ "technical_issues",
31
+ "bad_experience",
32
+ "other",
33
+ "testing",
34
+ ]
35
+ ]
36
+ ]
37
+ """The cancel options to filter the memberships by"""
38
+
39
+ company_id: Optional[str]
40
+ """The ID of the company to list memberships for"""
41
+
42
+ created_after: Annotated[Union[str, datetime, None], PropertyInfo(format="iso8601")]
43
+ """The minimum creation date to filter by"""
44
+
45
+ created_before: Annotated[Union[str, datetime, None], PropertyInfo(format="iso8601")]
46
+ """The maximum creation date to filter by"""
47
+
48
+ direction: Optional[Direction]
49
+ """The direction of the sort."""
50
+
51
+ first: Optional[int]
52
+ """Returns the first _n_ elements from the list."""
53
+
54
+ last: Optional[int]
55
+ """Returns the last _n_ elements from the list."""
56
+
57
+ order: Optional[Literal["id", "created_at", "status", "canceled_at", "date_joined", "total_spend"]]
58
+ """Which columns can be used to sort."""
59
+
60
+ plan_ids: Optional[SequenceNotStr[str]]
61
+ """The plan IDs to filter the memberships by"""
62
+
63
+ product_ids: Optional[SequenceNotStr[str]]
64
+ """The product IDs to filter the memberships by"""
65
+
66
+ promo_code_ids: Optional[SequenceNotStr[str]]
67
+ """The promo code IDs to filter the memberships by"""
68
+
69
+ statuses: Optional[List[MembershipStatus]]
70
+ """The membership status to filter the memberships by"""
71
+
72
+ user_ids: Optional[SequenceNotStr[str]]
73
+ """Only return memberships from these whop user ids"""
@@ -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 .._models import BaseModel
7
+ from .shared.currency import Currency
8
+ from .shared.membership_status import MembershipStatus
9
+
10
+ __all__ = ["MembershipListResponse", "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 MembershipListResponse(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,16 @@
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 Optional
6
+ from typing_extensions import TypedDict
7
+
8
+ __all__ = ["MembershipPauseParams"]
9
+
10
+
11
+ class MembershipPauseParams(TypedDict, total=False):
12
+ void_payments: Optional[bool]
13
+ """
14
+ Whether to void past_due payments associated with the membership to prevent
15
+ future payment attempts.
16
+ """
@@ -0,0 +1,13 @@
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 Dict, Optional
6
+ from typing_extensions import TypedDict
7
+
8
+ __all__ = ["MembershipUpdateParams"]
9
+
10
+
11
+ class MembershipUpdateParams(TypedDict, total=False):
12
+ metadata: Optional[Dict[str, object]]
13
+ """The metadata to update the membership with."""
@@ -0,0 +1,63 @@
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, Iterable, Optional
6
+ from typing_extensions import Required, TypeAlias, TypedDict
7
+
8
+ __all__ = [
9
+ "MessageCreateParams",
10
+ "Attachment",
11
+ "AttachmentAttachmentInputWithDirectUploadID",
12
+ "AttachmentAttachmentInputWithID",
13
+ "Poll",
14
+ "PollOption",
15
+ ]
16
+
17
+
18
+ class MessageCreateParams(TypedDict, total=False):
19
+ channel_id: Required[str]
20
+ """The ID of the channel or experience to send to."""
21
+
22
+ content: Required[str]
23
+ """The content of the message in Markdown format."""
24
+
25
+ attachments: Optional[Iterable[Attachment]]
26
+ """The attachments for this message, such as videos or images."""
27
+
28
+ poll: Optional[Poll]
29
+ """The poll for this message"""
30
+
31
+
32
+ class AttachmentAttachmentInputWithDirectUploadID(TypedDict, total=False):
33
+ direct_upload_id: Required[str]
34
+ """This ID should be used the first time you upload an attachment.
35
+
36
+ It is the ID of the direct upload that was created when uploading the file to S3
37
+ via the mediaDirectUpload mutation.
38
+ """
39
+
40
+
41
+ class AttachmentAttachmentInputWithID(TypedDict, total=False):
42
+ id: Required[str]
43
+ """The ID of an existing attachment object.
44
+
45
+ Use this when updating a resource and keeping a subset of the attachments. Don't
46
+ use this unless you know what you're doing.
47
+ """
48
+
49
+
50
+ Attachment: TypeAlias = Union[AttachmentAttachmentInputWithDirectUploadID, AttachmentAttachmentInputWithID]
51
+
52
+
53
+ class PollOption(TypedDict, total=False):
54
+ id: Required[str]
55
+ """Sequential ID for the poll option (starting from '1')"""
56
+
57
+ text: Required[str]
58
+ """The text of the poll option"""
59
+
60
+
61
+ class Poll(TypedDict, total=False):
62
+ options: Required[Iterable[PollOption]]
63
+ """The options for the poll. Must have sequential IDs starting from 1"""
@@ -0,0 +1,30 @@
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 Optional
6
+ from typing_extensions import Required, TypedDict
7
+
8
+ from .shared.direction import Direction
9
+
10
+ __all__ = ["MessageListParams"]
11
+
12
+
13
+ class MessageListParams(TypedDict, total=False):
14
+ channel_id: Required[str]
15
+ """The ID of the channel or the experience ID to list messages for"""
16
+
17
+ after: Optional[str]
18
+ """Returns the elements in the list that come after the specified cursor."""
19
+
20
+ before: Optional[str]
21
+ """Returns the elements in the list that come before the specified cursor."""
22
+
23
+ direction: Optional[Direction]
24
+ """The direction of the sort."""
25
+
26
+ first: Optional[int]
27
+ """Returns the first _n_ elements from the list."""
28
+
29
+ last: Optional[int]
30
+ """Returns the last _n_ elements from the list."""
@@ -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 .shared.dms_post_types import DmsPostTypes
8
+
9
+ __all__ = ["MessageListResponse", "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 MessageListResponse(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,45 @@
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, Iterable, Optional
6
+ from typing_extensions import Required, TypeAlias, TypedDict
7
+
8
+ __all__ = [
9
+ "MessageUpdateParams",
10
+ "Attachment",
11
+ "AttachmentAttachmentInputWithDirectUploadID",
12
+ "AttachmentAttachmentInputWithID",
13
+ ]
14
+
15
+
16
+ class MessageUpdateParams(TypedDict, total=False):
17
+ attachments: Optional[Iterable[Attachment]]
18
+ """The attachments for this message"""
19
+
20
+ content: Optional[str]
21
+ """The content of the message in Markdown format"""
22
+
23
+ is_pinned: Optional[bool]
24
+ """Whether this message is pinned"""
25
+
26
+
27
+ class AttachmentAttachmentInputWithDirectUploadID(TypedDict, total=False):
28
+ direct_upload_id: Required[str]
29
+ """This ID should be used the first time you upload an attachment.
30
+
31
+ It is the ID of the direct upload that was created when uploading the file to S3
32
+ via the mediaDirectUpload mutation.
33
+ """
34
+
35
+
36
+ class AttachmentAttachmentInputWithID(TypedDict, total=False):
37
+ id: Required[str]
38
+ """The ID of an existing attachment object.
39
+
40
+ Use this when updating a resource and keeping a subset of the attachments. Don't
41
+ use this unless you know what you're doing.
42
+ """
43
+
44
+
45
+ Attachment: TypeAlias = Union[AttachmentAttachmentInputWithDirectUploadID, AttachmentAttachmentInputWithID]
@@ -0,0 +1,93 @@
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 typing_extensions import Required, TypeAlias, TypedDict
7
+
8
+ from .._types import SequenceNotStr
9
+
10
+ __all__ = [
11
+ "NotificationCreateParams",
12
+ "SendNotificationV2InputWithCompanyID",
13
+ "SendNotificationV2InputWithExperienceID",
14
+ ]
15
+
16
+
17
+ class SendNotificationV2InputWithCompanyID(TypedDict, total=False):
18
+ company_id: Required[str]
19
+ """The id of the company to target.
20
+
21
+ Only team members of this company will receive the notification. When clicked
22
+ will take the user to your dashboard app view.
23
+ """
24
+
25
+ content: Required[str]
26
+ """The content of the notification"""
27
+
28
+ title: Required[str]
29
+ """The title of the notification"""
30
+
31
+ icon_user_id: Optional[str]
32
+ """
33
+ Optional: ID of a Whop user whose profile picture will be used as the
34
+ notification icon. If not provided, defaults to the experience or company
35
+ avatar.
36
+ """
37
+
38
+ rest_path: Optional[str]
39
+ """The rest path to append to the generated deep link that opens your app.
40
+
41
+ Use [restPath] in your app path in the dashboard to read this parameter.
42
+ """
43
+
44
+ subtitle: Optional[str]
45
+ """The subtitle of the notification"""
46
+
47
+ user_ids: Optional[SequenceNotStr[str]]
48
+ """
49
+ If provided, this will only send to these users if they are also in the main
50
+ scope (experience or company)
51
+ """
52
+
53
+
54
+ class SendNotificationV2InputWithExperienceID(TypedDict, total=False):
55
+ content: Required[str]
56
+ """The content of the notification"""
57
+
58
+ experience_id: Required[str]
59
+ """The id of the experience to target.
60
+
61
+ All users with access to this experience (customers and admins) will receive the
62
+ notification. When clicked, open your experience view.
63
+ """
64
+
65
+ title: Required[str]
66
+ """The title of the notification"""
67
+
68
+ icon_user_id: Optional[str]
69
+ """
70
+ Optional: ID of a Whop user whose profile picture will be used as the
71
+ notification icon. If not provided, defaults to the experience or company
72
+ avatar.
73
+ """
74
+
75
+ rest_path: Optional[str]
76
+ """The rest path to append to the generated deep link that opens your app.
77
+
78
+ Use [restPath] in your app path in the dashboard to read this parameter.
79
+ """
80
+
81
+ subtitle: Optional[str]
82
+ """The subtitle of the notification"""
83
+
84
+ user_ids: Optional[SequenceNotStr[str]]
85
+ """
86
+ If provided, this will only send to these users if they are also in the main
87
+ scope (experience or company)
88
+ """
89
+
90
+
91
+ NotificationCreateParams: TypeAlias = Union[
92
+ SendNotificationV2InputWithCompanyID, SendNotificationV2InputWithExperienceID
93
+ ]
@@ -0,0 +1,10 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from .._models import BaseModel
4
+
5
+ __all__ = ["NotificationCreateResponse"]
6
+
7
+
8
+ class NotificationCreateResponse(BaseModel):
9
+ success: bool
10
+ """Whether the notification was successfully queued for delivery"""