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,656 @@
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 Iterable, Optional
6
+
7
+ import httpx
8
+
9
+ from ..types import (
10
+ ForumPostVisibilityType,
11
+ forum_post_list_params,
12
+ forum_post_create_params,
13
+ forum_post_update_params,
14
+ )
15
+ from .._types import Body, Omit, Query, Headers, NotGiven, omit, not_given
16
+ from .._utils import maybe_transform, async_maybe_transform
17
+ from .._compat import cached_property
18
+ from .._resource import SyncAPIResource, AsyncAPIResource
19
+ from .._response import (
20
+ to_raw_response_wrapper,
21
+ to_streamed_response_wrapper,
22
+ async_to_raw_response_wrapper,
23
+ async_to_streamed_response_wrapper,
24
+ )
25
+ from ..pagination import SyncCursorPage, AsyncCursorPage
26
+ from .._base_client import AsyncPaginator, make_request_options
27
+ from ..types.shared.currency import Currency
28
+ from ..types.shared.forum_post import ForumPost
29
+ from ..types.forum_post_list_response import ForumPostListResponse
30
+ from ..types.forum_post_visibility_type import ForumPostVisibilityType
31
+
32
+ __all__ = ["ForumPostsResource", "AsyncForumPostsResource"]
33
+
34
+
35
+ class ForumPostsResource(SyncAPIResource):
36
+ @cached_property
37
+ def with_raw_response(self) -> ForumPostsResourceWithRawResponse:
38
+ """
39
+ This property can be used as a prefix for any HTTP method call to return
40
+ the raw response object instead of the parsed content.
41
+
42
+ For more information, see https://www.github.com/whopio/whopsdk-python#accessing-raw-response-data-eg-headers
43
+ """
44
+ return ForumPostsResourceWithRawResponse(self)
45
+
46
+ @cached_property
47
+ def with_streaming_response(self) -> ForumPostsResourceWithStreamingResponse:
48
+ """
49
+ An alternative to `.with_raw_response` that doesn't eagerly read the response body.
50
+
51
+ For more information, see https://www.github.com/whopio/whopsdk-python#with_streaming_response
52
+ """
53
+ return ForumPostsResourceWithStreamingResponse(self)
54
+
55
+ def create(
56
+ self,
57
+ *,
58
+ experience_id: str,
59
+ attachments: Optional[Iterable[forum_post_create_params.Attachment]] | Omit = omit,
60
+ content: Optional[str] | Omit = omit,
61
+ is_mention: Optional[bool] | Omit = omit,
62
+ parent_id: Optional[str] | Omit = omit,
63
+ paywall_amount: Optional[float] | Omit = omit,
64
+ paywall_currency: Optional[Currency] | Omit = omit,
65
+ pinned: Optional[bool] | Omit = omit,
66
+ poll: Optional[forum_post_create_params.Poll] | Omit = omit,
67
+ title: Optional[str] | Omit = omit,
68
+ visibility: Optional[ForumPostVisibilityType] | Omit = omit,
69
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
70
+ # The extra values given here take precedence over values defined on the client or passed to this method.
71
+ extra_headers: Headers | None = None,
72
+ extra_query: Query | None = None,
73
+ extra_body: Body | None = None,
74
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
75
+ ) -> ForumPost:
76
+ """
77
+ Create a new forum post
78
+
79
+ Required permissions:
80
+
81
+ - `forum:post:create`
82
+
83
+ Args:
84
+ experience_id: The experience to create this post in
85
+
86
+ attachments: The attachments for this post
87
+
88
+ content: This is the main body of the post in Markdown format. Hidden if paywalled and
89
+ user hasn't purchased access to it.
90
+
91
+ is_mention: This is used to determine if the post should be sent as a 'mention' notification
92
+ to all of the users who are in the experience. This means that anyone with
93
+ 'mentions' enabled will receive a notification about this post.
94
+
95
+ parent_id: The ID of the parent post. Set it to the ID of the post you want to comment on
96
+ or don't include it if its a top level post.
97
+
98
+ paywall_amount: The amount to paywall this post by. A paywalled post requires the user to
99
+ purchase it in order to view its content.
100
+
101
+ paywall_currency: The available currencies on the platform
102
+
103
+ pinned: Whether the post should be pinned
104
+
105
+ poll: The poll for this post
106
+
107
+ title: The title of the post. Only visible if paywalled.
108
+
109
+ visibility: The visibility types for forum posts
110
+
111
+ extra_headers: Send extra headers
112
+
113
+ extra_query: Add additional query parameters to the request
114
+
115
+ extra_body: Add additional JSON properties to the request
116
+
117
+ timeout: Override the client-level default timeout for this request, in seconds
118
+ """
119
+ return self._post(
120
+ "/forum_posts",
121
+ body=maybe_transform(
122
+ {
123
+ "experience_id": experience_id,
124
+ "attachments": attachments,
125
+ "content": content,
126
+ "is_mention": is_mention,
127
+ "parent_id": parent_id,
128
+ "paywall_amount": paywall_amount,
129
+ "paywall_currency": paywall_currency,
130
+ "pinned": pinned,
131
+ "poll": poll,
132
+ "title": title,
133
+ "visibility": visibility,
134
+ },
135
+ forum_post_create_params.ForumPostCreateParams,
136
+ ),
137
+ options=make_request_options(
138
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
139
+ ),
140
+ cast_to=ForumPost,
141
+ )
142
+
143
+ def retrieve(
144
+ self,
145
+ id: str,
146
+ *,
147
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
148
+ # The extra values given here take precedence over values defined on the client or passed to this method.
149
+ extra_headers: Headers | None = None,
150
+ extra_query: Query | None = None,
151
+ extra_body: Body | None = None,
152
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
153
+ ) -> ForumPost:
154
+ """
155
+ Retrieves a forum post by ID
156
+
157
+ Required permissions:
158
+
159
+ - `forum:read`
160
+
161
+ Args:
162
+ extra_headers: Send extra headers
163
+
164
+ extra_query: Add additional query parameters to the request
165
+
166
+ extra_body: Add additional JSON properties to the request
167
+
168
+ timeout: Override the client-level default timeout for this request, in seconds
169
+ """
170
+ if not id:
171
+ raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
172
+ return self._get(
173
+ f"/forum_posts/{id}",
174
+ options=make_request_options(
175
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
176
+ ),
177
+ cast_to=ForumPost,
178
+ )
179
+
180
+ def update(
181
+ self,
182
+ id: str,
183
+ *,
184
+ attachments: Optional[Iterable[forum_post_update_params.Attachment]] | Omit = omit,
185
+ content: Optional[str] | Omit = omit,
186
+ is_pinned: Optional[bool] | Omit = omit,
187
+ title: Optional[str] | Omit = omit,
188
+ visibility: Optional[ForumPostVisibilityType] | Omit = omit,
189
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
190
+ # The extra values given here take precedence over values defined on the client or passed to this method.
191
+ extra_headers: Headers | None = None,
192
+ extra_query: Query | None = None,
193
+ extra_body: Body | None = None,
194
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
195
+ ) -> ForumPost:
196
+ """
197
+ Update an existing forum post
198
+
199
+ Args:
200
+ attachments: The attachments for this post
201
+
202
+ content: This is the main body of the post in Markdown format. Hidden if paywalled and
203
+ user hasn't purchased access to it.
204
+
205
+ is_pinned: Whether the post is pinned. You can only pin a top level posts (not comments).
206
+
207
+ title: The title of the post. Only visible if paywalled.
208
+
209
+ visibility: The visibility types for forum posts
210
+
211
+ extra_headers: Send extra headers
212
+
213
+ extra_query: Add additional query parameters to the request
214
+
215
+ extra_body: Add additional JSON properties to the request
216
+
217
+ timeout: Override the client-level default timeout for this request, in seconds
218
+ """
219
+ if not id:
220
+ raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
221
+ return self._patch(
222
+ f"/forum_posts/{id}",
223
+ body=maybe_transform(
224
+ {
225
+ "attachments": attachments,
226
+ "content": content,
227
+ "is_pinned": is_pinned,
228
+ "title": title,
229
+ "visibility": visibility,
230
+ },
231
+ forum_post_update_params.ForumPostUpdateParams,
232
+ ),
233
+ options=make_request_options(
234
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
235
+ ),
236
+ cast_to=ForumPost,
237
+ )
238
+
239
+ def list(
240
+ self,
241
+ *,
242
+ experience_id: str,
243
+ after: Optional[str] | Omit = omit,
244
+ before: Optional[str] | Omit = omit,
245
+ first: Optional[int] | Omit = omit,
246
+ last: Optional[int] | Omit = omit,
247
+ parent_id: Optional[str] | Omit = omit,
248
+ pinned: Optional[bool] | Omit = omit,
249
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
250
+ # The extra values given here take precedence over values defined on the client or passed to this method.
251
+ extra_headers: Headers | None = None,
252
+ extra_query: Query | None = None,
253
+ extra_body: Body | None = None,
254
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
255
+ ) -> SyncCursorPage[ForumPostListResponse]:
256
+ """
257
+ Lists forum posts
258
+
259
+ Required permissions:
260
+
261
+ - `forum:read`
262
+
263
+ Args:
264
+ experience_id: The ID of the experience to list forum posts for
265
+
266
+ after: Returns the elements in the list that come after the specified cursor.
267
+
268
+ before: Returns the elements in the list that come before the specified cursor.
269
+
270
+ first: Returns the first _n_ elements from the list.
271
+
272
+ last: Returns the last _n_ elements from the list.
273
+
274
+ parent_id: The ID of the parent post to list forum post comments for
275
+
276
+ pinned: Set to true to only return pinned posts
277
+
278
+ extra_headers: Send extra headers
279
+
280
+ extra_query: Add additional query parameters to the request
281
+
282
+ extra_body: Add additional JSON properties to the request
283
+
284
+ timeout: Override the client-level default timeout for this request, in seconds
285
+ """
286
+ return self._get_api_list(
287
+ "/forum_posts",
288
+ page=SyncCursorPage[ForumPostListResponse],
289
+ options=make_request_options(
290
+ extra_headers=extra_headers,
291
+ extra_query=extra_query,
292
+ extra_body=extra_body,
293
+ timeout=timeout,
294
+ query=maybe_transform(
295
+ {
296
+ "experience_id": experience_id,
297
+ "after": after,
298
+ "before": before,
299
+ "first": first,
300
+ "last": last,
301
+ "parent_id": parent_id,
302
+ "pinned": pinned,
303
+ },
304
+ forum_post_list_params.ForumPostListParams,
305
+ ),
306
+ ),
307
+ model=ForumPostListResponse,
308
+ )
309
+
310
+
311
+ class AsyncForumPostsResource(AsyncAPIResource):
312
+ @cached_property
313
+ def with_raw_response(self) -> AsyncForumPostsResourceWithRawResponse:
314
+ """
315
+ This property can be used as a prefix for any HTTP method call to return
316
+ the raw response object instead of the parsed content.
317
+
318
+ For more information, see https://www.github.com/whopio/whopsdk-python#accessing-raw-response-data-eg-headers
319
+ """
320
+ return AsyncForumPostsResourceWithRawResponse(self)
321
+
322
+ @cached_property
323
+ def with_streaming_response(self) -> AsyncForumPostsResourceWithStreamingResponse:
324
+ """
325
+ An alternative to `.with_raw_response` that doesn't eagerly read the response body.
326
+
327
+ For more information, see https://www.github.com/whopio/whopsdk-python#with_streaming_response
328
+ """
329
+ return AsyncForumPostsResourceWithStreamingResponse(self)
330
+
331
+ async def create(
332
+ self,
333
+ *,
334
+ experience_id: str,
335
+ attachments: Optional[Iterable[forum_post_create_params.Attachment]] | Omit = omit,
336
+ content: Optional[str] | Omit = omit,
337
+ is_mention: Optional[bool] | Omit = omit,
338
+ parent_id: Optional[str] | Omit = omit,
339
+ paywall_amount: Optional[float] | Omit = omit,
340
+ paywall_currency: Optional[Currency] | Omit = omit,
341
+ pinned: Optional[bool] | Omit = omit,
342
+ poll: Optional[forum_post_create_params.Poll] | Omit = omit,
343
+ title: Optional[str] | Omit = omit,
344
+ visibility: Optional[ForumPostVisibilityType] | Omit = omit,
345
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
346
+ # The extra values given here take precedence over values defined on the client or passed to this method.
347
+ extra_headers: Headers | None = None,
348
+ extra_query: Query | None = None,
349
+ extra_body: Body | None = None,
350
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
351
+ ) -> ForumPost:
352
+ """
353
+ Create a new forum post
354
+
355
+ Required permissions:
356
+
357
+ - `forum:post:create`
358
+
359
+ Args:
360
+ experience_id: The experience to create this post in
361
+
362
+ attachments: The attachments for this post
363
+
364
+ content: This is the main body of the post in Markdown format. Hidden if paywalled and
365
+ user hasn't purchased access to it.
366
+
367
+ is_mention: This is used to determine if the post should be sent as a 'mention' notification
368
+ to all of the users who are in the experience. This means that anyone with
369
+ 'mentions' enabled will receive a notification about this post.
370
+
371
+ parent_id: The ID of the parent post. Set it to the ID of the post you want to comment on
372
+ or don't include it if its a top level post.
373
+
374
+ paywall_amount: The amount to paywall this post by. A paywalled post requires the user to
375
+ purchase it in order to view its content.
376
+
377
+ paywall_currency: The available currencies on the platform
378
+
379
+ pinned: Whether the post should be pinned
380
+
381
+ poll: The poll for this post
382
+
383
+ title: The title of the post. Only visible if paywalled.
384
+
385
+ visibility: The visibility types for forum posts
386
+
387
+ extra_headers: Send extra headers
388
+
389
+ extra_query: Add additional query parameters to the request
390
+
391
+ extra_body: Add additional JSON properties to the request
392
+
393
+ timeout: Override the client-level default timeout for this request, in seconds
394
+ """
395
+ return await self._post(
396
+ "/forum_posts",
397
+ body=await async_maybe_transform(
398
+ {
399
+ "experience_id": experience_id,
400
+ "attachments": attachments,
401
+ "content": content,
402
+ "is_mention": is_mention,
403
+ "parent_id": parent_id,
404
+ "paywall_amount": paywall_amount,
405
+ "paywall_currency": paywall_currency,
406
+ "pinned": pinned,
407
+ "poll": poll,
408
+ "title": title,
409
+ "visibility": visibility,
410
+ },
411
+ forum_post_create_params.ForumPostCreateParams,
412
+ ),
413
+ options=make_request_options(
414
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
415
+ ),
416
+ cast_to=ForumPost,
417
+ )
418
+
419
+ async def retrieve(
420
+ self,
421
+ id: str,
422
+ *,
423
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
424
+ # The extra values given here take precedence over values defined on the client or passed to this method.
425
+ extra_headers: Headers | None = None,
426
+ extra_query: Query | None = None,
427
+ extra_body: Body | None = None,
428
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
429
+ ) -> ForumPost:
430
+ """
431
+ Retrieves a forum post by ID
432
+
433
+ Required permissions:
434
+
435
+ - `forum:read`
436
+
437
+ Args:
438
+ extra_headers: Send extra headers
439
+
440
+ extra_query: Add additional query parameters to the request
441
+
442
+ extra_body: Add additional JSON properties to the request
443
+
444
+ timeout: Override the client-level default timeout for this request, in seconds
445
+ """
446
+ if not id:
447
+ raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
448
+ return await self._get(
449
+ f"/forum_posts/{id}",
450
+ options=make_request_options(
451
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
452
+ ),
453
+ cast_to=ForumPost,
454
+ )
455
+
456
+ async def update(
457
+ self,
458
+ id: str,
459
+ *,
460
+ attachments: Optional[Iterable[forum_post_update_params.Attachment]] | Omit = omit,
461
+ content: Optional[str] | Omit = omit,
462
+ is_pinned: Optional[bool] | Omit = omit,
463
+ title: Optional[str] | Omit = omit,
464
+ visibility: Optional[ForumPostVisibilityType] | Omit = omit,
465
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
466
+ # The extra values given here take precedence over values defined on the client or passed to this method.
467
+ extra_headers: Headers | None = None,
468
+ extra_query: Query | None = None,
469
+ extra_body: Body | None = None,
470
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
471
+ ) -> ForumPost:
472
+ """
473
+ Update an existing forum post
474
+
475
+ Args:
476
+ attachments: The attachments for this post
477
+
478
+ content: This is the main body of the post in Markdown format. Hidden if paywalled and
479
+ user hasn't purchased access to it.
480
+
481
+ is_pinned: Whether the post is pinned. You can only pin a top level posts (not comments).
482
+
483
+ title: The title of the post. Only visible if paywalled.
484
+
485
+ visibility: The visibility types for forum posts
486
+
487
+ extra_headers: Send extra headers
488
+
489
+ extra_query: Add additional query parameters to the request
490
+
491
+ extra_body: Add additional JSON properties to the request
492
+
493
+ timeout: Override the client-level default timeout for this request, in seconds
494
+ """
495
+ if not id:
496
+ raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
497
+ return await self._patch(
498
+ f"/forum_posts/{id}",
499
+ body=await async_maybe_transform(
500
+ {
501
+ "attachments": attachments,
502
+ "content": content,
503
+ "is_pinned": is_pinned,
504
+ "title": title,
505
+ "visibility": visibility,
506
+ },
507
+ forum_post_update_params.ForumPostUpdateParams,
508
+ ),
509
+ options=make_request_options(
510
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
511
+ ),
512
+ cast_to=ForumPost,
513
+ )
514
+
515
+ def list(
516
+ self,
517
+ *,
518
+ experience_id: str,
519
+ after: Optional[str] | Omit = omit,
520
+ before: Optional[str] | Omit = omit,
521
+ first: Optional[int] | Omit = omit,
522
+ last: Optional[int] | Omit = omit,
523
+ parent_id: Optional[str] | Omit = omit,
524
+ pinned: Optional[bool] | Omit = omit,
525
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
526
+ # The extra values given here take precedence over values defined on the client or passed to this method.
527
+ extra_headers: Headers | None = None,
528
+ extra_query: Query | None = None,
529
+ extra_body: Body | None = None,
530
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
531
+ ) -> AsyncPaginator[ForumPostListResponse, AsyncCursorPage[ForumPostListResponse]]:
532
+ """
533
+ Lists forum posts
534
+
535
+ Required permissions:
536
+
537
+ - `forum:read`
538
+
539
+ Args:
540
+ experience_id: The ID of the experience to list forum posts for
541
+
542
+ after: Returns the elements in the list that come after the specified cursor.
543
+
544
+ before: Returns the elements in the list that come before the specified cursor.
545
+
546
+ first: Returns the first _n_ elements from the list.
547
+
548
+ last: Returns the last _n_ elements from the list.
549
+
550
+ parent_id: The ID of the parent post to list forum post comments for
551
+
552
+ pinned: Set to true to only return pinned posts
553
+
554
+ extra_headers: Send extra headers
555
+
556
+ extra_query: Add additional query parameters to the request
557
+
558
+ extra_body: Add additional JSON properties to the request
559
+
560
+ timeout: Override the client-level default timeout for this request, in seconds
561
+ """
562
+ return self._get_api_list(
563
+ "/forum_posts",
564
+ page=AsyncCursorPage[ForumPostListResponse],
565
+ options=make_request_options(
566
+ extra_headers=extra_headers,
567
+ extra_query=extra_query,
568
+ extra_body=extra_body,
569
+ timeout=timeout,
570
+ query=maybe_transform(
571
+ {
572
+ "experience_id": experience_id,
573
+ "after": after,
574
+ "before": before,
575
+ "first": first,
576
+ "last": last,
577
+ "parent_id": parent_id,
578
+ "pinned": pinned,
579
+ },
580
+ forum_post_list_params.ForumPostListParams,
581
+ ),
582
+ ),
583
+ model=ForumPostListResponse,
584
+ )
585
+
586
+
587
+ class ForumPostsResourceWithRawResponse:
588
+ def __init__(self, forum_posts: ForumPostsResource) -> None:
589
+ self._forum_posts = forum_posts
590
+
591
+ self.create = to_raw_response_wrapper(
592
+ forum_posts.create,
593
+ )
594
+ self.retrieve = to_raw_response_wrapper(
595
+ forum_posts.retrieve,
596
+ )
597
+ self.update = to_raw_response_wrapper(
598
+ forum_posts.update,
599
+ )
600
+ self.list = to_raw_response_wrapper(
601
+ forum_posts.list,
602
+ )
603
+
604
+
605
+ class AsyncForumPostsResourceWithRawResponse:
606
+ def __init__(self, forum_posts: AsyncForumPostsResource) -> None:
607
+ self._forum_posts = forum_posts
608
+
609
+ self.create = async_to_raw_response_wrapper(
610
+ forum_posts.create,
611
+ )
612
+ self.retrieve = async_to_raw_response_wrapper(
613
+ forum_posts.retrieve,
614
+ )
615
+ self.update = async_to_raw_response_wrapper(
616
+ forum_posts.update,
617
+ )
618
+ self.list = async_to_raw_response_wrapper(
619
+ forum_posts.list,
620
+ )
621
+
622
+
623
+ class ForumPostsResourceWithStreamingResponse:
624
+ def __init__(self, forum_posts: ForumPostsResource) -> None:
625
+ self._forum_posts = forum_posts
626
+
627
+ self.create = to_streamed_response_wrapper(
628
+ forum_posts.create,
629
+ )
630
+ self.retrieve = to_streamed_response_wrapper(
631
+ forum_posts.retrieve,
632
+ )
633
+ self.update = to_streamed_response_wrapper(
634
+ forum_posts.update,
635
+ )
636
+ self.list = to_streamed_response_wrapper(
637
+ forum_posts.list,
638
+ )
639
+
640
+
641
+ class AsyncForumPostsResourceWithStreamingResponse:
642
+ def __init__(self, forum_posts: AsyncForumPostsResource) -> None:
643
+ self._forum_posts = forum_posts
644
+
645
+ self.create = async_to_streamed_response_wrapper(
646
+ forum_posts.create,
647
+ )
648
+ self.retrieve = async_to_streamed_response_wrapper(
649
+ forum_posts.retrieve,
650
+ )
651
+ self.update = async_to_streamed_response_wrapper(
652
+ forum_posts.update,
653
+ )
654
+ self.list = async_to_streamed_response_wrapper(
655
+ forum_posts.list,
656
+ )