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,26 @@
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.invoice import Invoice
8
+
9
+ __all__ = ["InvoicePaidWebhookEvent"]
10
+
11
+
12
+ class InvoicePaidWebhookEvent(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: Invoice
20
+ """A statement that defines an amount due by a customer."""
21
+
22
+ timestamp: datetime
23
+ """The timestamp in ISO 8601 format that the webhook was sent at on the server"""
24
+
25
+ type: Literal["invoice.paid"]
26
+ """The webhook event type"""
@@ -0,0 +1,26 @@
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.invoice import Invoice
8
+
9
+ __all__ = ["InvoicePastDueWebhookEvent"]
10
+
11
+
12
+ class InvoicePastDueWebhookEvent(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: Invoice
20
+ """A statement that defines an amount due by a customer."""
21
+
22
+ timestamp: datetime
23
+ """The timestamp in ISO 8601 format that the webhook was sent at on the server"""
24
+
25
+ type: Literal["invoice.past_due"]
26
+ """The webhook event type"""
@@ -0,0 +1,7 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from typing_extensions import TypeAlias
4
+
5
+ __all__ = ["InvoiceVoidResponse"]
6
+
7
+ InvoiceVoidResponse: TypeAlias = bool
@@ -0,0 +1,26 @@
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.invoice import Invoice
8
+
9
+ __all__ = ["InvoiceVoidedWebhookEvent"]
10
+
11
+
12
+ class InvoiceVoidedWebhookEvent(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: Invoice
20
+ """A statement that defines an amount due by a customer."""
21
+
22
+ timestamp: datetime
23
+ """The timestamp in ISO 8601 format that the webhook was sent at on the server"""
24
+
25
+ type: Literal["invoice.voided"]
26
+ """The webhook event type"""
@@ -0,0 +1,30 @@
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__ = ["Languages"]
6
+
7
+ Languages: TypeAlias = Literal[
8
+ "en",
9
+ "es",
10
+ "it",
11
+ "pt",
12
+ "de",
13
+ "fr",
14
+ "pl",
15
+ "ru",
16
+ "nl",
17
+ "ca",
18
+ "tr",
19
+ "sv",
20
+ "uk",
21
+ "no",
22
+ "fi",
23
+ "sk",
24
+ "el",
25
+ "cs",
26
+ "hr",
27
+ "da",
28
+ "ro",
29
+ "bg",
30
+ ]
@@ -0,0 +1,93 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from typing import List, Union, Optional
4
+ from typing_extensions import Literal, Annotated, TypeAlias
5
+
6
+ from .._utils import PropertyInfo
7
+ from .._models import BaseModel
8
+ from .shared.currency import Currency
9
+
10
+ __all__ = ["LedgerAccountRetrieveResponse", "Balance", "Owner", "OwnerUser", "OwnerCompany"]
11
+
12
+
13
+ class Balance(BaseModel):
14
+ balance: float
15
+ """The amount of the balance."""
16
+
17
+ currency: Currency
18
+ """The currency of the balance."""
19
+
20
+ pending_balance: float
21
+ """The amount of the balance that is pending."""
22
+
23
+ reserve_balance: float
24
+ """The amount of the balance that is reserved."""
25
+
26
+
27
+ class OwnerUser(BaseModel):
28
+ id: str
29
+ """The internal ID of the user."""
30
+
31
+ name: Optional[str] = None
32
+ """The name of the user from their Whop account."""
33
+
34
+ typename: Literal["User"]
35
+ """The typename of this object"""
36
+
37
+ username: str
38
+ """The username of the user from their Whop account."""
39
+
40
+
41
+ class OwnerCompany(BaseModel):
42
+ id: str
43
+ """The ID (tag) of the company."""
44
+
45
+ route: str
46
+ """The slug/route of the company on the Whop site."""
47
+
48
+ title: str
49
+ """The title of the company."""
50
+
51
+ typename: Literal["Company"]
52
+ """The typename of this object"""
53
+
54
+
55
+ Owner: TypeAlias = Annotated[Union[Optional[OwnerUser], Optional[OwnerCompany]], PropertyInfo(discriminator="typename")]
56
+
57
+
58
+ class LedgerAccountRetrieveResponse(BaseModel):
59
+ id: str
60
+ """The ID of the LedgerAccount."""
61
+
62
+ balances: List[Balance]
63
+ """The balances associated with the account."""
64
+
65
+ ledger_account_audit_status: Optional[
66
+ Literal[
67
+ "pending",
68
+ "pending_ai_review",
69
+ "approved",
70
+ "reserves_imposed",
71
+ "suspended",
72
+ "ignored",
73
+ "rejected",
74
+ "requested_more_information",
75
+ "information_submitted",
76
+ "requested_tos_violation_correction",
77
+ "clawback_attempted",
78
+ "awaiting_sales_review",
79
+ ]
80
+ ] = None
81
+ """The different statuses a LedgerAccountAudit can be"""
82
+
83
+ ledger_type: Literal["primary", "pool"]
84
+ """The type of ledger account."""
85
+
86
+ owner: Owner
87
+ """The owner of the ledger account."""
88
+
89
+ payments_approval_status: Optional[Literal["pending", "approved", "monitoring", "rejected"]] = None
90
+ """The different approval statuses an account can have."""
91
+
92
+ transfer_fee: Optional[float] = None
93
+ """The fee for transfers, if applicable."""
@@ -0,0 +1,219 @@
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 .._models import BaseModel
8
+ from .embed_type import EmbedType
9
+ from .lesson_types import LessonTypes
10
+ from .lesson_visibilities import LessonVisibilities
11
+ from .assessment_question_types import AssessmentQuestionTypes
12
+
13
+ __all__ = [
14
+ "Lesson",
15
+ "AssessmentQuestion",
16
+ "AssessmentQuestionImage",
17
+ "AssessmentQuestionOption",
18
+ "Attachment",
19
+ "MainPdf",
20
+ "Thumbnail",
21
+ "VideoAsset",
22
+ ]
23
+
24
+
25
+ class AssessmentQuestionImage(BaseModel):
26
+ id: str
27
+ """The ID of the attachment"""
28
+
29
+ content_type: Optional[str] = None
30
+ """The attachment's content type (e.g., image/jpg, video/mp4)"""
31
+
32
+ filename: Optional[str] = None
33
+ """The name of the file"""
34
+
35
+ url: Optional[str] = None
36
+ """This is the URL you use to render optimized attachments on the client.
37
+
38
+ This should be used for apps.
39
+ """
40
+
41
+
42
+ class AssessmentQuestionOption(BaseModel):
43
+ id: str
44
+ """The ID of the assessment question option"""
45
+
46
+ is_correct: Optional[bool] = None
47
+ """Whether this option is a correct answer.
48
+
49
+ Only visible to admins (users with courses:update permission)
50
+ """
51
+
52
+ option_text: str
53
+ """The text of the answer option"""
54
+
55
+ order: int
56
+ """The order of this option within the question"""
57
+
58
+
59
+ class AssessmentQuestion(BaseModel):
60
+ id: str
61
+ """The ID of the assessment question"""
62
+
63
+ correct_answer: Optional[str] = None
64
+ """The correct answer for the question.
65
+
66
+ Used for short answer questions. Only visible to admins (users with
67
+ courses:update permission)
68
+ """
69
+
70
+ created_at: datetime
71
+ """When the question was created"""
72
+
73
+ image: Optional[AssessmentQuestionImage] = None
74
+ """Optional image attachment for the question"""
75
+
76
+ options: List[AssessmentQuestionOption]
77
+ """The answer options for multiple choice/select questions"""
78
+
79
+ order: int
80
+ """The order of the question within its lesson"""
81
+
82
+ question_text: str
83
+ """The text of the question"""
84
+
85
+ question_type: AssessmentQuestionTypes
86
+ """The type of the question"""
87
+
88
+
89
+ class Attachment(BaseModel):
90
+ id: str
91
+ """The ID of the attachment"""
92
+
93
+ content_type: Optional[str] = None
94
+ """The attachment's content type (e.g., image/jpg, video/mp4)"""
95
+
96
+ filename: Optional[str] = None
97
+ """The name of the file"""
98
+
99
+ url: Optional[str] = None
100
+ """This is the URL you use to render optimized attachments on the client.
101
+
102
+ This should be used for apps.
103
+ """
104
+
105
+
106
+ class MainPdf(BaseModel):
107
+ id: str
108
+ """The ID of the attachment"""
109
+
110
+ content_type: Optional[str] = None
111
+ """The attachment's content type (e.g., image/jpg, video/mp4)"""
112
+
113
+ filename: Optional[str] = None
114
+ """The name of the file"""
115
+
116
+ url: Optional[str] = None
117
+ """This is the URL you use to render optimized attachments on the client.
118
+
119
+ This should be used for apps.
120
+ """
121
+
122
+
123
+ class Thumbnail(BaseModel):
124
+ url: Optional[str] = None
125
+ """This is the URL you use to render optimized attachments on the client.
126
+
127
+ This should be used for apps.
128
+ """
129
+
130
+
131
+ class VideoAsset(BaseModel):
132
+ id: str
133
+ """The ID of the Mux asset"""
134
+
135
+ asset_id: Optional[str] = None
136
+ """The Mux-provided ID of the asset"""
137
+
138
+ audio_only: bool
139
+ """Whether this asset contains only audio"""
140
+
141
+ created_at: datetime
142
+ """The time at which the Mux asset was created"""
143
+
144
+ duration_seconds: Optional[int] = None
145
+ """The duration of the video in seconds"""
146
+
147
+ finished_uploading_at: Optional[datetime] = None
148
+ """The time at which the video finished uploading"""
149
+
150
+ playback_id: Optional[str] = None
151
+ """The public playback ID of the Mux asset"""
152
+
153
+ signed_playback_id: Optional[str] = None
154
+ """The signed playback ID of the Mux asset"""
155
+
156
+ signed_storyboard_playback_token: Optional[str] = None
157
+ """The signed storyboard playback token of the Mux asset"""
158
+
159
+ signed_thumbnail_playback_token: Optional[str] = None
160
+ """The signed thumbnail playback token of the Mux asset"""
161
+
162
+ signed_video_playback_token: Optional[str] = None
163
+ """The signed video playback token of the Mux asset"""
164
+
165
+ status: Literal["uploading", "created", "ready"]
166
+ """The status of the Mux asset"""
167
+
168
+ updated_at: datetime
169
+ """The time at which the Mux asset was last updated"""
170
+
171
+
172
+ class Lesson(BaseModel):
173
+ id: str
174
+ """The ID of the lesson"""
175
+
176
+ assessment_questions: List[AssessmentQuestion]
177
+ """Assessment questions for quiz/knowledge check lessons"""
178
+
179
+ attachments: List[Attachment]
180
+ """The attached files in this lesson as a flat array"""
181
+
182
+ content: Optional[str] = None
183
+ """The content of the lesson"""
184
+
185
+ created_at: datetime
186
+ """The timestamp of when the lesson was created"""
187
+
188
+ days_from_course_start_until_unlock: Optional[int] = None
189
+ """Number of days from course start until the lesson is unlocked"""
190
+
191
+ embed_id: Optional[str] = None
192
+ """ID for the embed (YouTube video ID or Loom share ID)"""
193
+
194
+ embed_type: Optional[EmbedType] = None
195
+ """The type of embed for a lesson"""
196
+
197
+ lesson_type: LessonTypes
198
+ """The type of the lesson (text, video, pdf, multi, quiz, knowledge_check)"""
199
+
200
+ main_pdf: Optional[MainPdf] = None
201
+ """The main PDF file for this lesson"""
202
+
203
+ order: int
204
+ """The order of the lesson within its chapter"""
205
+
206
+ thumbnail: Optional[Thumbnail] = None
207
+ """The thumbnail for the lesson"""
208
+
209
+ title: str
210
+ """The title of the lesson"""
211
+
212
+ video_asset: Optional[VideoAsset] = None
213
+ """The associated Mux asset for video lessons"""
214
+
215
+ visibility: LessonVisibilities
216
+ """The visibility of the lesson.
217
+
218
+ Determines how / whether this lesson is visible to users.
219
+ """
@@ -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__ = ["LessonTypes"]
6
+
7
+ LessonTypes: TypeAlias = Literal["text", "video", "pdf", "multi", "quiz", "knowledge_check"]
@@ -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__ = ["LessonVisibilities"]
6
+
7
+ LessonVisibilities: TypeAlias = Literal["visible", "hidden"]
@@ -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, Required, Annotated, TypedDict
8
+
9
+ from .._types import SequenceNotStr
10
+ from .._utils import PropertyInfo
11
+ from .shared.direction import Direction
12
+ from .shared.access_level import AccessLevel
13
+ from .shared.member_statuses import MemberStatuses
14
+ from .shared.member_most_recent_actions import MemberMostRecentActions
15
+
16
+ __all__ = ["MemberListParams"]
17
+
18
+
19
+ class MemberListParams(TypedDict, total=False):
20
+ company_id: Required[str]
21
+ """The ID of the company to list members for"""
22
+
23
+ access_level: Optional[AccessLevel]
24
+ """The access level a given user (or company) has to a product or company."""
25
+
26
+ after: Optional[str]
27
+ """Returns the elements in the list that come after the specified cursor."""
28
+
29
+ before: Optional[str]
30
+ """Returns the elements in the list that come before the specified cursor."""
31
+
32
+ created_after: Annotated[Union[str, datetime, None], PropertyInfo(format="iso8601")]
33
+ """The minimum creation date to filter by"""
34
+
35
+ created_before: Annotated[Union[str, datetime, None], PropertyInfo(format="iso8601")]
36
+ """The maximum creation date to filter by"""
37
+
38
+ direction: Optional[Direction]
39
+ """The direction of the sort."""
40
+
41
+ first: Optional[int]
42
+ """Returns the first _n_ elements from the list."""
43
+
44
+ last: Optional[int]
45
+ """Returns the last _n_ elements from the list."""
46
+
47
+ most_recent_actions: Optional[List[MemberMostRecentActions]]
48
+ """The most recent actions to filter the members by"""
49
+
50
+ order: Optional[Literal["id", "usd_total_spent", "created_at", "joined_at", "most_recent_action"]]
51
+ """Which columns can be used to sort."""
52
+
53
+ plan_ids: Optional[SequenceNotStr[str]]
54
+ """The plan IDs to filter the members by"""
55
+
56
+ product_ids: Optional[SequenceNotStr[str]]
57
+ """The product IDs to filter the members by"""
58
+
59
+ promo_code_ids: Optional[SequenceNotStr[str]]
60
+ """The promo code IDs to filter the members by"""
61
+
62
+ query: Optional[str]
63
+ """The name, username, or email to filter the members by.
64
+
65
+ The email filter will only apply if the current actor has the
66
+ `member:email:read` permission.
67
+ """
68
+
69
+ statuses: Optional[List[MemberStatuses]]
70
+ """The statuses to filter the members by"""
71
+
72
+ user_ids: Optional[SequenceNotStr[str]]
73
+ """The user IDs to filter the members by"""
@@ -0,0 +1,65 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from typing import Optional
4
+ from datetime import datetime
5
+
6
+ from .._models import BaseModel
7
+ from .shared.access_level import AccessLevel
8
+ from .shared.member_statuses import MemberStatuses
9
+ from .shared.member_most_recent_actions import MemberMostRecentActions
10
+
11
+ __all__ = ["MemberListResponse", "User"]
12
+
13
+
14
+ class User(BaseModel):
15
+ id: str
16
+ """The internal ID of the user account."""
17
+
18
+ email: Optional[str] = None
19
+ """The digital mailing address of the user."""
20
+
21
+ name: Optional[str] = None
22
+ """The user's full name."""
23
+
24
+ username: str
25
+ """The whop username."""
26
+
27
+
28
+ class MemberListResponse(BaseModel):
29
+ id: str
30
+ """The ID of the member"""
31
+
32
+ access_level: AccessLevel
33
+ """The access level of the product member.
34
+
35
+ If its admin, the member is an authorized user of the company. If its customer,
36
+ the member has a valid membership to any product on the company. If its
37
+ no_access, the member does not have access to the product.
38
+ """
39
+
40
+ created_at: datetime
41
+ """When the member was created"""
42
+
43
+ joined_at: datetime
44
+ """When the member joined the company"""
45
+
46
+ most_recent_action: Optional[MemberMostRecentActions] = None
47
+ """The different most recent actions a member can have."""
48
+
49
+ most_recent_action_at: Optional[datetime] = None
50
+ """The time for the most recent action, if applicable."""
51
+
52
+ phone: Optional[str] = None
53
+ """The phone number for the member, if available."""
54
+
55
+ status: MemberStatuses
56
+ """The status of the member"""
57
+
58
+ updated_at: datetime
59
+ """The timestamp of when this member was last updated"""
60
+
61
+ usd_total_spent: float
62
+ """How much money this customer has spent on the company's products and plans"""
63
+
64
+ user: Optional[User] = None
65
+ """The user for this member, if any."""
@@ -0,0 +1,79 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from typing import Optional
4
+ from datetime import datetime
5
+
6
+ from .._models import BaseModel
7
+ from .shared.access_level import AccessLevel
8
+ from .shared.member_statuses import MemberStatuses
9
+ from .shared.member_most_recent_actions import MemberMostRecentActions
10
+
11
+ __all__ = ["MemberRetrieveResponse", "Company", "User"]
12
+
13
+
14
+ class Company(BaseModel):
15
+ id: str
16
+ """The ID of the company"""
17
+
18
+ route: str
19
+ """The slug/route of the company on the Whop site."""
20
+
21
+ title: str
22
+ """The written name of the company."""
23
+
24
+
25
+ class User(BaseModel):
26
+ id: str
27
+ """The internal ID of the user account."""
28
+
29
+ email: Optional[str] = None
30
+ """The digital mailing address of the user."""
31
+
32
+ name: Optional[str] = None
33
+ """The user's full name."""
34
+
35
+ username: str
36
+ """The whop username."""
37
+
38
+
39
+ class MemberRetrieveResponse(BaseModel):
40
+ id: str
41
+ """The ID of the member"""
42
+
43
+ access_level: AccessLevel
44
+ """The access level of the product member.
45
+
46
+ If its admin, the member is an authorized user of the company. If its customer,
47
+ the member has a valid membership to any product on the company. If its
48
+ no_access, the member does not have access to the product.
49
+ """
50
+
51
+ company: Company
52
+ """The company for the member."""
53
+
54
+ created_at: datetime
55
+ """When the member was created"""
56
+
57
+ joined_at: datetime
58
+ """When the member joined the company"""
59
+
60
+ most_recent_action: Optional[MemberMostRecentActions] = None
61
+ """The different most recent actions a member can have."""
62
+
63
+ most_recent_action_at: Optional[datetime] = None
64
+ """The time for the most recent action, if applicable."""
65
+
66
+ phone: Optional[str] = None
67
+ """The phone number for the member, if available."""
68
+
69
+ status: MemberStatuses
70
+ """The status of the member"""
71
+
72
+ updated_at: datetime
73
+ """The timestamp of when this member was last updated"""
74
+
75
+ usd_total_spent: float
76
+ """How much money this customer has spent on the company's products and plans"""
77
+
78
+ user: Optional[User] = None
79
+ """The user for this member, if any."""