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,187 @@
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 ..app_type import AppType
8
+ from .app_statuses import AppStatuses
9
+
10
+ __all__ = [
11
+ "App",
12
+ "APIKey",
13
+ "Company",
14
+ "Creator",
15
+ "Icon",
16
+ "RequestedPermission",
17
+ "RequestedPermissionPermissionAction",
18
+ "Stats",
19
+ ]
20
+
21
+
22
+ class APIKey(BaseModel):
23
+ id: str
24
+ """The ID of this API key"""
25
+
26
+ token: str
27
+ """This is the API key used to authenticate requests"""
28
+
29
+ created_at: datetime
30
+ """When this API key was created at"""
31
+
32
+
33
+ class Company(BaseModel):
34
+ id: str
35
+ """The ID (tag) of the company."""
36
+
37
+ title: str
38
+ """The title of the company."""
39
+
40
+
41
+ class Creator(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 Icon(BaseModel):
53
+ url: Optional[str] = None
54
+ """This is the URL you use to render optimized attachments on the client.
55
+
56
+ This should be used for apps.
57
+ """
58
+
59
+
60
+ class RequestedPermissionPermissionAction(BaseModel):
61
+ action: str
62
+ """The identifier of the action."""
63
+
64
+ name: str
65
+ """The human readable name of the action."""
66
+
67
+
68
+ class RequestedPermission(BaseModel):
69
+ is_required: bool
70
+ """Whether the action is required for the app to function."""
71
+
72
+ justification: str
73
+ """The reason for requesting the action."""
74
+
75
+ permission_action: RequestedPermissionPermissionAction
76
+ """The action that the app will request off of users when a user installs the app."""
77
+
78
+
79
+ class Stats(BaseModel):
80
+ dau: int
81
+ """
82
+ This is the number of users that have spent time in this app in the last 24
83
+ hours.
84
+ """
85
+
86
+ mau: int
87
+ """
88
+ This is the number of users that have spent time in this app in the last 28
89
+ days.
90
+ """
91
+
92
+ time_spent_last24_hours: int
93
+ """
94
+ This how much time, in seconds, users have spent in this app in the last 24
95
+ hours.
96
+ """
97
+
98
+ wau: int
99
+ """
100
+ This is the number of users that have spent time in this app in the last 7 days.
101
+ """
102
+
103
+
104
+ class App(BaseModel):
105
+ id: str
106
+ """The ID of the app"""
107
+
108
+ api_key: Optional[APIKey] = None
109
+ """The API key for the app"""
110
+
111
+ app_type: AppType
112
+ """The type of end-user an app is built for"""
113
+
114
+ base_url: Optional[str] = None
115
+ """The base url of the app"""
116
+
117
+ company: Company
118
+ """The company that owns the app"""
119
+
120
+ creator: Creator
121
+ """The creator of the app"""
122
+
123
+ dashboard_path: Optional[str] = None
124
+ """The path part for a specific view of the app.
125
+
126
+ This is the template part of the url after the base domain. Eg:
127
+ /experiences/[experienceId]
128
+ """
129
+
130
+ description: Optional[str] = None
131
+ """The description of the app"""
132
+
133
+ discover_path: Optional[str] = None
134
+ """The path part for a specific view of the app.
135
+
136
+ This is the template part of the url after the base domain. Eg:
137
+ /experiences/[experienceId]
138
+ """
139
+
140
+ domain_id: str
141
+ """The unique part of the proxied domain for this app.
142
+
143
+ Used to generate the base url used to display the app inside the whop platform.
144
+ Refers to the id part in the final url: https://{domain_id}.apps.whop.com
145
+ """
146
+
147
+ experience_path: Optional[str] = None
148
+ """The path part for a specific view of the app.
149
+
150
+ This is the template part of the url after the base domain. Eg:
151
+ /experiences/[experienceId]
152
+ """
153
+
154
+ icon: Optional[Icon] = None
155
+ """The icon for the app.
156
+
157
+ This icon is shown on discovery, on the product page, on checkout, and as a
158
+ default icon for the experiences.
159
+ """
160
+
161
+ name: str
162
+ """The name of the app"""
163
+
164
+ requested_permissions: List[RequestedPermission]
165
+ """
166
+ The set of permissions that an app requests to be granted when a user installs
167
+ the app.
168
+ """
169
+
170
+ stats: Optional[Stats] = None
171
+ """A collection of stats for the app."""
172
+
173
+ status: AppStatuses
174
+ """If the status is live, the app is visible on Whop discovery.
175
+
176
+ In order to be live, you need to set the name, icon, and description. Being
177
+ unlisted or hidden means it's not visible on Whop but you can still install the
178
+ app via direct link. To remove the app from whop discovery, you should set the
179
+ status to unlisted.
180
+ """
181
+
182
+ verified: bool
183
+ """Whether this app has been verified by Whop.
184
+
185
+ Verified apps are endorsed by whop and are shown in the 'featured apps' section
186
+ of the app store.
187
+ """
@@ -0,0 +1,50 @@
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 .app_view_type import AppViewType
8
+ from .app_build_statuses import AppBuildStatuses
9
+ from .app_build_platforms import AppBuildPlatforms
10
+
11
+ __all__ = ["AppBuild"]
12
+
13
+
14
+ class AppBuild(BaseModel):
15
+ id: str
16
+ """The ID of the app build. It will look like apbu_xxxxx."""
17
+
18
+ checksum: str
19
+ """
20
+ This is generated by the client and used to verify the integrity of the file
21
+ that is submitted. It is a SHA256 hash of the app build file.
22
+ """
23
+
24
+ created_at: datetime
25
+ """When this app build was created."""
26
+
27
+ file_url: str
28
+ """The URL to download the app build .zip file."""
29
+
30
+ is_production: bool
31
+ """Whether this app build is currently being used in production."""
32
+
33
+ platform: AppBuildPlatforms
34
+ """The platform of the app build (ios, android, web)"""
35
+
36
+ review_message: Optional[str] = None
37
+ """The review message for the app build, if any.
38
+
39
+ This is populated when the build is rejected and there is a reason specified by
40
+ the reviewer.
41
+ """
42
+
43
+ status: AppBuildStatuses
44
+ """The status of the app build (draft, approved, rejected, pending, etc)"""
45
+
46
+ supported_app_view_types: List[AppViewType]
47
+ """The supported app view types for the app build.
48
+
49
+ These are the views that the developer has specified that this build supports.
50
+ """
@@ -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__ = ["AppBuildPlatforms"]
6
+
7
+ AppBuildPlatforms: TypeAlias = Literal["ios", "android", "web"]
@@ -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__ = ["AppBuildStatuses"]
6
+
7
+ AppBuildStatuses: TypeAlias = Literal["draft", "pending", "approved", "rejected"]
@@ -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__ = ["AppStatuses"]
6
+
7
+ AppStatuses: TypeAlias = Literal["live", "unlisted", "hidden"]
@@ -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__ = ["AppViewType"]
6
+
7
+ AppViewType: TypeAlias = Literal["hub", "discover", "dash", "dashboard", "analytics"]
@@ -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__ = ["AuthorizedUserRoles"]
6
+
7
+ AuthorizedUserRoles: TypeAlias = Literal[
8
+ "owner", "admin", "sales_manager", "moderator", "app_manager", "support", "manager"
9
+ ]
@@ -0,0 +1,22 @@
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__ = ["BusinessTypes"]
6
+
7
+ BusinessTypes: TypeAlias = Literal[
8
+ "education_program",
9
+ "coaching",
10
+ "software",
11
+ "paid_group",
12
+ "newsletter",
13
+ "agency",
14
+ "physical_products",
15
+ "brick_and_mortar",
16
+ "events",
17
+ "coaching_and_courses",
18
+ "other",
19
+ "saas",
20
+ "course",
21
+ "community",
22
+ ]
@@ -0,0 +1,43 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from typing import List, Optional
4
+
5
+ from ..._models import BaseModel
6
+ from .who_can_post import WhoCanPost
7
+ from .who_can_react import WhoCanReact
8
+
9
+ __all__ = ["ChatChannel", "Experience"]
10
+
11
+
12
+ class Experience(BaseModel):
13
+ id: str
14
+ """The unique ID representing this experience"""
15
+
16
+ name: str
17
+ """The written name of the description."""
18
+
19
+
20
+ class ChatChannel(BaseModel):
21
+ id: str
22
+ """The unique identifier for the entity"""
23
+
24
+ ban_media: bool
25
+ """Whether or not media is banned in this chat"""
26
+
27
+ ban_urls: bool
28
+ """Whether or not URLs are banned in this chat"""
29
+
30
+ banned_words: List[str]
31
+ """List of banned words in this chat"""
32
+
33
+ experience: Experience
34
+ """The experience for this chat"""
35
+
36
+ user_posts_cooldown_seconds: Optional[int] = None
37
+ """The number of seconds a user needs to wait before posting again, if any"""
38
+
39
+ who_can_post: WhoCanPost
40
+ """Who can post on this chat"""
41
+
42
+ who_can_react: WhoCanReact
43
+ """Who can react on this chat"""
@@ -0,0 +1,104 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from typing import Dict, List, Optional
4
+
5
+ from .currency import Currency
6
+ from ..._models import BaseModel
7
+ from .plan_type import PlanType
8
+ from .visibility import Visibility
9
+ from .release_method import ReleaseMethod
10
+ from ..checkout_modes import CheckoutModes
11
+ from ..payment_method_types import PaymentMethodTypes
12
+
13
+ __all__ = ["CheckoutConfiguration", "PaymentMethodConfiguration", "Plan"]
14
+
15
+
16
+ class PaymentMethodConfiguration(BaseModel):
17
+ disabled: List[PaymentMethodTypes]
18
+ """An array of payment method identifiers that are explicitly disabled.
19
+
20
+ Only applies if the include_platform_defaults is true.
21
+ """
22
+
23
+ enabled: List[PaymentMethodTypes]
24
+ """An array of payment method identifiers that are explicitly enabled.
25
+
26
+ This means these payment methods will be shown on checkout. Example use case is
27
+ to only enable a specific payment method like cashapp, or extending the platform
28
+ defaults with additional methods.
29
+ """
30
+
31
+ include_platform_defaults: bool
32
+ """
33
+ Whether Whop's platform default payment method enablement settings are included
34
+ in this configuration. The full list of default payment methods can be found in
35
+ the documentation at docs.whop.com/payments.
36
+ """
37
+
38
+
39
+ class Plan(BaseModel):
40
+ id: str
41
+ """The internal ID of the plan."""
42
+
43
+ billing_period: Optional[int] = None
44
+ """The interval at which the plan charges (renewal plans)."""
45
+
46
+ currency: Currency
47
+ """The respective currency identifier for the plan."""
48
+
49
+ expiration_days: Optional[int] = None
50
+ """The interval at which the plan charges (expiration plans)."""
51
+
52
+ initial_price: float
53
+ """The price a person has to pay for a plan on the initial purchase."""
54
+
55
+ plan_type: PlanType
56
+ """Indicates if the plan is a one time payment or recurring."""
57
+
58
+ release_method: ReleaseMethod
59
+ """This is the release method the business uses to sell this plan."""
60
+
61
+ renewal_price: float
62
+ """The price a person has to pay for a plan on the renewal purchase."""
63
+
64
+ trial_period_days: Optional[int] = None
65
+ """The number of free trial days added before a renewal plan."""
66
+
67
+ visibility: Visibility
68
+ """Shows or hides the plan from public/business view."""
69
+
70
+
71
+ class CheckoutConfiguration(BaseModel):
72
+ id: str
73
+ """The ID of the checkout configuration"""
74
+
75
+ affiliate_code: Optional[str] = None
76
+ """The affiliate code to use for the checkout configuration"""
77
+
78
+ company_id: str
79
+ """The ID of the company to use for the checkout configuration"""
80
+
81
+ metadata: Optional[Dict[str, object]] = None
82
+ """The metadata to use for the checkout configuration"""
83
+
84
+ mode: CheckoutModes
85
+ """The mode of the checkout session."""
86
+
87
+ payment_method_configuration: Optional[PaymentMethodConfiguration] = None
88
+ """The explicit payment method configuration for the session, if any.
89
+
90
+ This currently only works in 'setup' mode. Use the plan's
91
+ payment_method_configuration for payment method.
92
+ """
93
+
94
+ plan: Optional[Plan] = None
95
+ """The plan to use for the checkout configuration"""
96
+
97
+ purchase_url: str
98
+ """A URL you can send to customers to complete a checkout.
99
+
100
+ It looks like `/checkout/plan_xxxx?session={id}`
101
+ """
102
+
103
+ redirect_url: Optional[str] = None
104
+ """The URL to redirect the user to after the checkout configuration is created"""
@@ -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__ = ["CollectionMethod"]
6
+
7
+ CollectionMethod: TypeAlias = Literal["send_invoice", "charge_automatically"]
@@ -0,0 +1,91 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from typing import Dict, List, Optional
4
+ from datetime import datetime
5
+ from typing_extensions import Literal
6
+
7
+ from ..._models import BaseModel
8
+ from .business_types import BusinessTypes
9
+ from .industry_types import IndustryTypes
10
+
11
+ __all__ = ["Company", "Logo", "OwnerUser", "SocialLink"]
12
+
13
+
14
+ class Logo(BaseModel):
15
+ url: Optional[str] = None
16
+ """This is the URL you use to render optimized attachments on the client.
17
+
18
+ This should be used for apps.
19
+ """
20
+
21
+
22
+ class OwnerUser(BaseModel):
23
+ id: str
24
+ """The internal ID of the user."""
25
+
26
+ name: Optional[str] = None
27
+ """The name of the user from their Whop account."""
28
+
29
+ username: str
30
+ """The username of the user from their Whop account."""
31
+
32
+
33
+ class SocialLink(BaseModel):
34
+ id: str
35
+ """The ID"""
36
+
37
+ url: str
38
+ """The URL"""
39
+
40
+ website: Literal["x", "instagram", "facebook", "tiktok", "youtube", "linkedin", "twitch", "website", "custom"]
41
+ """The website"""
42
+
43
+
44
+ class Company(BaseModel):
45
+ id: str
46
+ """The ID (tag) of the company."""
47
+
48
+ business_type: Optional[BusinessTypes] = None
49
+ """The different business types a company can be."""
50
+
51
+ created_at: datetime
52
+ """When the company was created (signed up)"""
53
+
54
+ description: Optional[str] = None
55
+ """The creator pitch for the company."""
56
+
57
+ industry_type: Optional[IndustryTypes] = None
58
+ """The different industry types a company can be in."""
59
+
60
+ logo: Optional[Logo] = None
61
+ """The company's logo."""
62
+
63
+ member_count: int
64
+ """The number of members in the company."""
65
+
66
+ metadata: Optional[Dict[str, object]] = None
67
+ """
68
+ A key-value store of data for the account, created/updated by the platform that
69
+ made the account.
70
+ """
71
+
72
+ owner_user: OwnerUser
73
+ """The user who owns this company"""
74
+
75
+ published_reviews_count: int
76
+ """The number of reviews that have been published for the company."""
77
+
78
+ route: str
79
+ """The slug/route of the company on the Whop site."""
80
+
81
+ social_links: List[SocialLink]
82
+ """The social media accounts of the company"""
83
+
84
+ title: str
85
+ """The title of the company."""
86
+
87
+ updated_at: datetime
88
+ """The time the company was last updated."""
89
+
90
+ verified: bool
91
+ """If the company is Whop Verified"""
@@ -0,0 +1,63 @@
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
+
8
+ __all__ = ["CourseLessonInteraction", "Course", "CourseExperience", "Lesson", "User"]
9
+
10
+
11
+ class CourseExperience(BaseModel):
12
+ id: str
13
+ """The unique ID representing this experience"""
14
+
15
+
16
+ class Course(BaseModel):
17
+ id: str
18
+ """The ID of the course. Looks like cors_XXX"""
19
+
20
+ experience: CourseExperience
21
+ """The experience that the course belongs to"""
22
+
23
+ title: Optional[str] = None
24
+ """The title of the course"""
25
+
26
+
27
+ class Lesson(BaseModel):
28
+ id: str
29
+ """The ID of the lesson"""
30
+
31
+ title: str
32
+ """The title of the lesson"""
33
+
34
+
35
+ class User(BaseModel):
36
+ id: str
37
+ """The internal ID of the user."""
38
+
39
+ name: Optional[str] = None
40
+ """The name of the user from their Whop account."""
41
+
42
+ username: str
43
+ """The username of the user from their Whop account."""
44
+
45
+
46
+ class CourseLessonInteraction(BaseModel):
47
+ id: str
48
+ """The ID of the lesson interaction"""
49
+
50
+ completed: bool
51
+ """Whether the lesson has been completed by the user"""
52
+
53
+ course: Course
54
+ """The course for this lesson interaction"""
55
+
56
+ created_at: datetime
57
+ """When the interaction was created"""
58
+
59
+ lesson: Lesson
60
+ """The lesson this interaction is for"""
61
+
62
+ user: User
63
+ """The user who interacted with the lesson"""
@@ -0,0 +1,44 @@
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
+
8
+ __all__ = ["CourseLessonInteractionListItem", "Lesson", "User"]
9
+
10
+
11
+ class Lesson(BaseModel):
12
+ id: str
13
+ """The ID of the lesson"""
14
+
15
+ title: str
16
+ """The title of the lesson"""
17
+
18
+
19
+ class User(BaseModel):
20
+ id: str
21
+ """The internal ID of the user."""
22
+
23
+ name: Optional[str] = None
24
+ """The name of the user from their Whop account."""
25
+
26
+ username: str
27
+ """The username of the user from their Whop account."""
28
+
29
+
30
+ class CourseLessonInteractionListItem(BaseModel):
31
+ id: str
32
+ """The ID of the lesson interaction"""
33
+
34
+ completed: bool
35
+ """Whether the lesson has been completed by the user"""
36
+
37
+ created_at: datetime
38
+ """When the interaction was created"""
39
+
40
+ lesson: Lesson
41
+ """The lesson this interaction is for"""
42
+
43
+ user: User
44
+ """The user who interacted with the lesson"""