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,222 @@
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
+ 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
+ "CourseLessonUpdateParams",
15
+ "AssessmentCompletionRequirement",
16
+ "AssessmentQuestion",
17
+ "AssessmentQuestionImage",
18
+ "AssessmentQuestionImageAttachmentInputWithDirectUploadID",
19
+ "AssessmentQuestionImageAttachmentInputWithID",
20
+ "AssessmentQuestionOption",
21
+ "Attachment",
22
+ "AttachmentAttachmentInputWithDirectUploadID",
23
+ "AttachmentAttachmentInputWithID",
24
+ "MainPdf",
25
+ "MainPdfAttachmentInputWithDirectUploadID",
26
+ "MainPdfAttachmentInputWithID",
27
+ "Thumbnail",
28
+ "ThumbnailAttachmentInputWithDirectUploadID",
29
+ "ThumbnailAttachmentInputWithID",
30
+ ]
31
+
32
+
33
+ class CourseLessonUpdateParams(TypedDict, total=False):
34
+ assessment_completion_requirement: Optional[AssessmentCompletionRequirement]
35
+ """Completion requirements for quiz/knowledge check lessons"""
36
+
37
+ assessment_questions: Optional[Iterable[AssessmentQuestion]]
38
+ """Assessment questions for quiz/knowledge check lessons.
39
+
40
+ Replaces all existing questions.
41
+ """
42
+
43
+ attachments: Optional[Iterable[Attachment]]
44
+ """General attachments for the lesson (PDFs, files, etc).
45
+
46
+ Replaces all existing attachments.
47
+ """
48
+
49
+ content: Optional[str]
50
+ """The content of the lesson"""
51
+
52
+ days_from_course_start_until_unlock: Optional[int]
53
+ """Days from course start until unlock"""
54
+
55
+ embed_id: Optional[str]
56
+ """ID for the embed (YouTube video ID or Loom share ID)"""
57
+
58
+ embed_type: Optional[EmbedType]
59
+ """The type of embed for a lesson"""
60
+
61
+ lesson_type: Optional[LessonTypes]
62
+ """The available types for a lesson"""
63
+
64
+ main_pdf: Optional[MainPdf]
65
+ """The main PDF file for this lesson"""
66
+
67
+ max_attempts: Optional[int]
68
+ """Maximum number of attempts allowed for assessments"""
69
+
70
+ mux_asset_id: Optional[str]
71
+ """The ID of the Mux asset to attach to this lesson for video lessons"""
72
+
73
+ thumbnail: Optional[Thumbnail]
74
+ """The thumbnail for the lesson in png, jpeg, or gif format"""
75
+
76
+ title: Optional[str]
77
+ """The title of the lesson"""
78
+
79
+ visibility: Optional[LessonVisibilities]
80
+ """The available visibilities for a lesson.
81
+
82
+ Determines how / whether a lesson is visible to users.
83
+ """
84
+
85
+
86
+ class AssessmentCompletionRequirement(TypedDict, total=False):
87
+ minimum_grade_percent: Optional[float]
88
+ """The minimum grade percentage required to pass (0-100).
89
+
90
+ Cannot be set together with minimum_questions_correct.
91
+ """
92
+
93
+ minimum_questions_correct: Optional[int]
94
+ """The minimum number of questions that must be answered correctly.
95
+
96
+ Cannot be set together with minimum_grade_percent.
97
+ """
98
+
99
+
100
+ class AssessmentQuestionImageAttachmentInputWithDirectUploadID(TypedDict, total=False):
101
+ direct_upload_id: Required[str]
102
+ """This ID should be used the first time you upload an attachment.
103
+
104
+ It is the ID of the direct upload that was created when uploading the file to S3
105
+ via the mediaDirectUpload mutation.
106
+ """
107
+
108
+
109
+ class AssessmentQuestionImageAttachmentInputWithID(TypedDict, total=False):
110
+ id: Required[str]
111
+ """The ID of an existing attachment object.
112
+
113
+ Use this when updating a resource and keeping a subset of the attachments. Don't
114
+ use this unless you know what you're doing.
115
+ """
116
+
117
+
118
+ AssessmentQuestionImage: TypeAlias = Union[
119
+ AssessmentQuestionImageAttachmentInputWithDirectUploadID, AssessmentQuestionImageAttachmentInputWithID
120
+ ]
121
+
122
+
123
+ class AssessmentQuestionOption(TypedDict, total=False):
124
+ is_correct: Required[bool]
125
+ """Whether this option is a correct answer"""
126
+
127
+ option_text: Required[str]
128
+ """The text of the answer option"""
129
+
130
+ id: Optional[str]
131
+ """The ID of an existing option.
132
+
133
+ If provided, the option will be updated. If not provided, a new option will be
134
+ created.
135
+ """
136
+
137
+
138
+ class AssessmentQuestion(TypedDict, total=False):
139
+ correct_answer: Required[str]
140
+ """The correct answer for the question. Used for short answer questions"""
141
+
142
+ question_text: Required[str]
143
+ """The text of the question"""
144
+
145
+ question_type: Required[AssessmentQuestionTypes]
146
+ """The type of the question"""
147
+
148
+ id: Optional[str]
149
+ """The ID of an existing question.
150
+
151
+ If provided, the question will be updated. If not provided, a new question will
152
+ be created.
153
+ """
154
+
155
+ image: Optional[AssessmentQuestionImage]
156
+ """Optional image attachment for the question"""
157
+
158
+ options: Optional[Iterable[AssessmentQuestionOption]]
159
+ """The answer options for multiple choice/select questions"""
160
+
161
+
162
+ class AttachmentAttachmentInputWithDirectUploadID(TypedDict, total=False):
163
+ direct_upload_id: Required[str]
164
+ """This ID should be used the first time you upload an attachment.
165
+
166
+ It is the ID of the direct upload that was created when uploading the file to S3
167
+ via the mediaDirectUpload mutation.
168
+ """
169
+
170
+
171
+ class AttachmentAttachmentInputWithID(TypedDict, total=False):
172
+ id: Required[str]
173
+ """The ID of an existing attachment object.
174
+
175
+ Use this when updating a resource and keeping a subset of the attachments. Don't
176
+ use this unless you know what you're doing.
177
+ """
178
+
179
+
180
+ Attachment: TypeAlias = Union[AttachmentAttachmentInputWithDirectUploadID, AttachmentAttachmentInputWithID]
181
+
182
+
183
+ class MainPdfAttachmentInputWithDirectUploadID(TypedDict, total=False):
184
+ direct_upload_id: Required[str]
185
+ """This ID should be used the first time you upload an attachment.
186
+
187
+ It is the ID of the direct upload that was created when uploading the file to S3
188
+ via the mediaDirectUpload mutation.
189
+ """
190
+
191
+
192
+ class MainPdfAttachmentInputWithID(TypedDict, total=False):
193
+ id: Required[str]
194
+ """The ID of an existing attachment object.
195
+
196
+ Use this when updating a resource and keeping a subset of the attachments. Don't
197
+ use this unless you know what you're doing.
198
+ """
199
+
200
+
201
+ MainPdf: TypeAlias = Union[MainPdfAttachmentInputWithDirectUploadID, MainPdfAttachmentInputWithID]
202
+
203
+
204
+ class ThumbnailAttachmentInputWithDirectUploadID(TypedDict, total=False):
205
+ direct_upload_id: Required[str]
206
+ """This ID should be used the first time you upload an attachment.
207
+
208
+ It is the ID of the direct upload that was created when uploading the file to S3
209
+ via the mediaDirectUpload mutation.
210
+ """
211
+
212
+
213
+ class ThumbnailAttachmentInputWithID(TypedDict, total=False):
214
+ id: Required[str]
215
+ """The ID of an existing attachment object.
216
+
217
+ Use this when updating a resource and keeping a subset of the attachments. Don't
218
+ use this unless you know what you're doing.
219
+ """
220
+
221
+
222
+ Thumbnail: TypeAlias = Union[ThumbnailAttachmentInputWithDirectUploadID, ThumbnailAttachmentInputWithID]
@@ -0,0 +1,28 @@
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__ = ["CourseListParams"]
9
+
10
+
11
+ class CourseListParams(TypedDict, total=False):
12
+ after: Optional[str]
13
+ """Returns the elements in the list that come after the specified cursor."""
14
+
15
+ before: Optional[str]
16
+ """Returns the elements in the list that come before the specified cursor."""
17
+
18
+ company_id: Optional[str]
19
+ """The ID of the company"""
20
+
21
+ experience_id: Optional[str]
22
+ """The ID of the experience"""
23
+
24
+ first: Optional[int]
25
+ """Returns the first _n_ elements from the list."""
26
+
27
+ last: Optional[int]
28
+ """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 Optional
4
+ from datetime import datetime
5
+
6
+ from .._models import BaseModel
7
+ from .languages import Languages
8
+ from .course_visibilities import CourseVisibilities
9
+
10
+ __all__ = ["CourseListResponse", "Thumbnail"]
11
+
12
+
13
+ class Thumbnail(BaseModel):
14
+ id: str
15
+ """The ID of the attachment"""
16
+
17
+ content_type: Optional[str] = None
18
+ """The attachment's content type (e.g., image/jpg, video/mp4)"""
19
+
20
+ filename: Optional[str] = None
21
+ """The name of the file"""
22
+
23
+ optimized_url: Optional[str] = None
24
+ """This is the URL you use to render optimized attachments on the client.
25
+
26
+ This should be used for apps.
27
+ """
28
+
29
+ source_url: Optional[str] = None
30
+ """The original URL of the attachment, such as a direct link to S3.
31
+
32
+ This should never be displayed on the client and always passed to an Imgproxy
33
+ transformer.
34
+ """
35
+
36
+
37
+ class CourseListResponse(BaseModel):
38
+ id: str
39
+ """The ID of the course. Looks like cors_XXX"""
40
+
41
+ certificate_after_completion_enabled: Optional[bool] = None
42
+ """
43
+ Whether the course will award its students a PDF certificate after completing
44
+ all lessons
45
+ """
46
+
47
+ cover_image: Optional[str] = None
48
+ """The URL of the course's cover image, which is shown in course preview cards"""
49
+
50
+ created_at: datetime
51
+ """The timestamp of when the course was created"""
52
+
53
+ description: Optional[str] = None
54
+ """A short description of the course"""
55
+
56
+ language: Languages
57
+ """
58
+ The language spoken in the video content of the course, used to generate closed
59
+ captions in the right language
60
+ """
61
+
62
+ order: str
63
+ """The order of the course within its experience"""
64
+
65
+ require_completing_lessons_in_order: bool
66
+ """
67
+ Whether the course requires students to complete the previous lesson before
68
+ moving on to the next one
69
+ """
70
+
71
+ tagline: Optional[str] = None
72
+ """A short tagline for the course.
73
+
74
+ It is displayed under the course title in the UI
75
+ """
76
+
77
+ thumbnail: Optional[Thumbnail] = None
78
+ """The thumbnail for the course"""
79
+
80
+ title: Optional[str] = None
81
+ """The title of the course"""
82
+
83
+ updated_at: datetime
84
+ """The timestamp of when the course was last updated"""
85
+
86
+ visibility: CourseVisibilities
87
+ """The visibility of the course.
88
+
89
+ Determines how / whether this course is visible to users.
90
+ """
@@ -0,0 +1,28 @@
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
+ __all__ = ["CourseStudentListParams"]
9
+
10
+
11
+ class CourseStudentListParams(TypedDict, total=False):
12
+ course_id: Required[str]
13
+ """The ID of the course"""
14
+
15
+ after: Optional[str]
16
+ """Returns the elements in the list that come after the specified cursor."""
17
+
18
+ before: Optional[str]
19
+ """Returns the elements in the list that come before the specified cursor."""
20
+
21
+ first: Optional[int]
22
+ """Returns the first _n_ elements from the list."""
23
+
24
+ keyword: Optional[str]
25
+ """Filter students by name - returns students whose names match the keyword"""
26
+
27
+ last: Optional[int]
28
+ """Returns the last _n_ elements from the list."""
@@ -0,0 +1,42 @@
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__ = ["CourseStudentListResponse", "User"]
9
+
10
+
11
+ class User(BaseModel):
12
+ id: str
13
+ """The internal ID of the user."""
14
+
15
+ name: Optional[str] = None
16
+ """The name of the user from their Whop account."""
17
+
18
+ username: str
19
+ """The username of the user from their Whop account."""
20
+
21
+
22
+ class CourseStudentListResponse(BaseModel):
23
+ id: str
24
+ """The ID of the course student. Looks like crsi_XXX"""
25
+
26
+ completed_lessons_count: int
27
+ """The number of lessons the student has completed"""
28
+
29
+ completion_rate: float
30
+ """The percentage of lessons completed (0-100)"""
31
+
32
+ first_interaction_at: datetime
33
+ """When the student first interacted with the course"""
34
+
35
+ last_interaction_at: datetime
36
+ """When the student last interacted with the course"""
37
+
38
+ total_lessons_count: int
39
+ """The total number of lessons the student has access to"""
40
+
41
+ user: User
42
+ """The user who is enrolled in the course"""
@@ -0,0 +1,61 @@
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__ = ["CourseStudentRetrieveResponse", "Course", "CourseExperience", "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 User(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
+ username: str
35
+ """The username of the user from their Whop account."""
36
+
37
+
38
+ class CourseStudentRetrieveResponse(BaseModel):
39
+ id: str
40
+ """The ID of the course student. Looks like crsi_XXX"""
41
+
42
+ completed_lessons_count: int
43
+ """The number of lessons the student has completed"""
44
+
45
+ completion_rate: float
46
+ """The percentage of lessons completed (0-100)"""
47
+
48
+ course: Course
49
+ """The course the student is enrolled in"""
50
+
51
+ first_interaction_at: datetime
52
+ """When the student first interacted with the course"""
53
+
54
+ last_interaction_at: datetime
55
+ """When the student last interacted with the course"""
56
+
57
+ total_lessons_count: int
58
+ """The total number of lessons the student has access to"""
59
+
60
+ user: User
61
+ """The user who is enrolled in the course"""
@@ -0,0 +1,114 @@
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
+ from .languages import Languages
9
+ from .course_visibilities import CourseVisibilities
10
+
11
+ __all__ = [
12
+ "CourseUpdateParams",
13
+ "Chapter",
14
+ "ChapterLesson",
15
+ "Thumbnail",
16
+ "ThumbnailAttachmentInputWithDirectUploadID",
17
+ "ThumbnailAttachmentInputWithID",
18
+ ]
19
+
20
+
21
+ class CourseUpdateParams(TypedDict, total=False):
22
+ certificate_after_completion_enabled: Optional[bool]
23
+ """
24
+ Whether the course will award its students a PDF certificate after completing
25
+ all lessons
26
+ """
27
+
28
+ chapters: Optional[Iterable[Chapter]]
29
+ """The chapters and lessons to update"""
30
+
31
+ cover_image: Optional[str]
32
+ """The cover image URL of the course"""
33
+
34
+ description: Optional[str]
35
+ """A short description of the course"""
36
+
37
+ language: Optional[Languages]
38
+ """The available languages for a course"""
39
+
40
+ order: Optional[str]
41
+ """The decimal order position of the course within its experience.
42
+
43
+ Use fractional values (e.g., 1.5) to place between existing courses.
44
+ """
45
+
46
+ require_completing_lessons_in_order: Optional[bool]
47
+ """
48
+ Whether the course requires students to complete the previous lesson before
49
+ moving on to the next one
50
+ """
51
+
52
+ tagline: Optional[str]
53
+ """A short tagline for the course"""
54
+
55
+ thumbnail: Optional[Thumbnail]
56
+ """The thumbnail for the course in png, jpeg, or gif format"""
57
+
58
+ title: Optional[str]
59
+ """The title of the course"""
60
+
61
+ visibility: Optional[CourseVisibilities]
62
+ """The available visibilities for a course.
63
+
64
+ Determines how / whether a course is visible to users.
65
+ """
66
+
67
+
68
+ class ChapterLesson(TypedDict, total=False):
69
+ id: Required[str]
70
+ """The ID of the lesson to update"""
71
+
72
+ chapter_id: Required[str]
73
+ """The ID of the chapter this lesson belongs to (for moving between chapters)"""
74
+
75
+ order: Required[int]
76
+ """The order of the lesson within its chapter"""
77
+
78
+ title: Required[str]
79
+ """The title of the lesson"""
80
+
81
+
82
+ class Chapter(TypedDict, total=False):
83
+ id: Required[str]
84
+ """The ID of the chapter to update"""
85
+
86
+ order: Required[int]
87
+ """The order of the chapter within its course"""
88
+
89
+ title: Required[str]
90
+ """The title of the chapter"""
91
+
92
+ lessons: Optional[Iterable[ChapterLesson]]
93
+ """The lessons to update within this chapter"""
94
+
95
+
96
+ class ThumbnailAttachmentInputWithDirectUploadID(TypedDict, total=False):
97
+ direct_upload_id: Required[str]
98
+ """This ID should be used the first time you upload an attachment.
99
+
100
+ It is the ID of the direct upload that was created when uploading the file to S3
101
+ via the mediaDirectUpload mutation.
102
+ """
103
+
104
+
105
+ class ThumbnailAttachmentInputWithID(TypedDict, total=False):
106
+ id: Required[str]
107
+ """The ID of an existing attachment object.
108
+
109
+ Use this when updating a resource and keeping a subset of the attachments. Don't
110
+ use this unless you know what you're doing.
111
+ """
112
+
113
+
114
+ Thumbnail: TypeAlias = Union[ThumbnailAttachmentInputWithDirectUploadID, ThumbnailAttachmentInputWithID]
@@ -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__ = ["CourseVisibilities"]
6
+
7
+ CourseVisibilities: TypeAlias = Literal["visible", "hidden"]