whop-sdk 0.0.1__py3-none-any.whl → 0.0.3__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.

Potentially problematic release.


This version of whop-sdk might be problematic. Click here for more details.

Files changed (126) hide show
  1. whop_sdk/_client.py +65 -2
  2. whop_sdk/_version.py +1 -1
  3. whop_sdk/resources/__init__.py +98 -0
  4. whop_sdk/resources/checkout_configurations.py +16 -12
  5. whop_sdk/resources/course_chapters.py +602 -0
  6. whop_sdk/resources/course_lessons.py +722 -0
  7. whop_sdk/resources/courses.py +713 -0
  8. whop_sdk/resources/experiences.py +107 -0
  9. whop_sdk/resources/forum_posts.py +123 -1
  10. whop_sdk/resources/forums.py +446 -0
  11. whop_sdk/resources/members.py +429 -0
  12. whop_sdk/resources/memberships.py +16 -8
  13. whop_sdk/resources/messages.py +113 -1
  14. whop_sdk/resources/payments.py +3 -26
  15. whop_sdk/resources/plans.py +84 -6
  16. whop_sdk/resources/products.py +8 -16
  17. whop_sdk/resources/promo_codes.py +652 -0
  18. whop_sdk/resources/reviews.py +315 -0
  19. whop_sdk/types/__init__.py +64 -0
  20. whop_sdk/types/app_list_response.py +16 -1
  21. whop_sdk/types/assessment_question_types.py +7 -0
  22. whop_sdk/types/billing_reasons.py +9 -0
  23. whop_sdk/types/card_brands.py +24 -0
  24. whop_sdk/types/checkout_configuration_create_params.py +70 -7
  25. whop_sdk/types/checkout_configuration_list_response.py +12 -9
  26. whop_sdk/types/course.py +109 -0
  27. whop_sdk/types/course_chapter.py +32 -0
  28. whop_sdk/types/course_chapter_create_params.py +16 -0
  29. whop_sdk/types/course_chapter_delete_response.py +7 -0
  30. whop_sdk/types/course_chapter_list_params.py +25 -0
  31. whop_sdk/types/course_chapter_list_response.py +16 -0
  32. whop_sdk/types/course_chapter_update_params.py +12 -0
  33. whop_sdk/types/course_create_params.py +41 -0
  34. whop_sdk/types/course_delete_response.py +7 -0
  35. whop_sdk/types/course_lesson_create_params.py +27 -0
  36. whop_sdk/types/course_lesson_delete_response.py +7 -0
  37. whop_sdk/types/course_lesson_interaction_completed_webhook_event.py +26 -0
  38. whop_sdk/types/course_lesson_list_params.py +28 -0
  39. whop_sdk/types/course_lesson_list_response.py +35 -0
  40. whop_sdk/types/course_lesson_update_params.py +144 -0
  41. whop_sdk/types/course_list_params.py +28 -0
  42. whop_sdk/types/course_list_response.py +77 -0
  43. whop_sdk/types/course_update_params.py +89 -0
  44. whop_sdk/types/entry_approved_webhook_event.py +26 -0
  45. whop_sdk/types/entry_created_webhook_event.py +26 -0
  46. whop_sdk/types/entry_deleted_webhook_event.py +26 -0
  47. whop_sdk/types/entry_denied_webhook_event.py +26 -0
  48. whop_sdk/types/experience_duplicate_params.py +13 -0
  49. whop_sdk/types/experience_list_response.py +27 -1
  50. whop_sdk/types/forum_list_params.py +28 -0
  51. whop_sdk/types/forum_list_response.py +33 -0
  52. whop_sdk/types/forum_post_list_response.py +7 -0
  53. whop_sdk/types/forum_post_update_params.py +41 -0
  54. whop_sdk/types/forum_update_params.py +23 -0
  55. whop_sdk/types/invoice_create_params.py +10 -2
  56. whop_sdk/types/languages.py +30 -0
  57. whop_sdk/types/ledger_account_retrieve_response.py +15 -1
  58. whop_sdk/types/lesson.py +159 -0
  59. whop_sdk/types/lesson_types.py +7 -0
  60. whop_sdk/types/lesson_visibilities.py +7 -0
  61. whop_sdk/types/member_list_params.py +73 -0
  62. whop_sdk/types/member_list_response.py +65 -0
  63. whop_sdk/types/member_retrieve_response.py +79 -0
  64. whop_sdk/types/membership_activated_webhook_event.py +29 -0
  65. whop_sdk/types/membership_deactivated_webhook_event.py +29 -0
  66. whop_sdk/types/membership_list_params.py +7 -4
  67. whop_sdk/types/membership_list_response.py +12 -1
  68. whop_sdk/types/message_update_params.py +35 -0
  69. whop_sdk/types/payment_failed_webhook_event.py +26 -0
  70. whop_sdk/types/payment_list_params.py +2 -7
  71. whop_sdk/types/payment_list_response.py +23 -13
  72. whop_sdk/types/payment_method_types.py +92 -0
  73. whop_sdk/types/payment_pending_webhook_event.py +26 -0
  74. whop_sdk/types/payment_succeeded_webhook_event.py +26 -0
  75. whop_sdk/types/plan_create_params.py +29 -3
  76. whop_sdk/types/plan_list_response.py +9 -0
  77. whop_sdk/types/plan_update_params.py +18 -0
  78. whop_sdk/types/product_create_params.py +1 -24
  79. whop_sdk/types/product_update_params.py +12 -1
  80. whop_sdk/types/promo_code.py +90 -0
  81. whop_sdk/types/promo_code_create_params.py +70 -0
  82. whop_sdk/types/promo_code_delete_response.py +7 -0
  83. whop_sdk/types/promo_code_list_params.py +37 -0
  84. whop_sdk/types/promo_code_list_response.py +79 -0
  85. whop_sdk/types/promo_code_status.py +7 -0
  86. whop_sdk/types/promo_duration.py +7 -0
  87. whop_sdk/types/review_list_params.py +31 -0
  88. whop_sdk/types/review_list_response.py +78 -0
  89. whop_sdk/types/review_retrieve_response.py +103 -0
  90. whop_sdk/types/review_status.py +7 -0
  91. whop_sdk/types/shared/__init__.py +7 -0
  92. whop_sdk/types/shared/access_level.py +7 -0
  93. whop_sdk/types/shared/app.py +25 -1
  94. whop_sdk/types/shared/checkout_configuration.py +12 -9
  95. whop_sdk/types/shared/company.py +15 -1
  96. whop_sdk/types/shared/course_lesson_interaction.py +20 -1
  97. whop_sdk/types/shared/email_notification_preferences.py +7 -0
  98. whop_sdk/types/shared/experience.py +27 -1
  99. whop_sdk/types/shared/forum.py +33 -0
  100. whop_sdk/types/shared/forum_post.py +7 -0
  101. whop_sdk/types/shared/invoice.py +4 -1
  102. whop_sdk/types/shared/invoice_list_item.py +4 -1
  103. whop_sdk/types/shared/member_most_recent_actions.py +22 -0
  104. whop_sdk/types/shared/member_statuses.py +7 -0
  105. whop_sdk/types/shared/membership.py +12 -1
  106. whop_sdk/types/shared/payment.py +23 -13
  107. whop_sdk/types/shared/plan.py +9 -0
  108. whop_sdk/types/shared/product.py +8 -0
  109. whop_sdk/types/shared/product_list_item.py +8 -0
  110. whop_sdk/types/shared/who_can_comment_types.py +7 -0
  111. whop_sdk/types/shared/who_can_post_types.py +7 -0
  112. whop_sdk/types/shared_params/__init__.py +7 -0
  113. whop_sdk/types/shared_params/access_level.py +9 -0
  114. whop_sdk/types/shared_params/email_notification_preferences.py +9 -0
  115. whop_sdk/types/shared_params/member_most_recent_actions.py +24 -0
  116. whop_sdk/types/shared_params/member_statuses.py +9 -0
  117. whop_sdk/types/shared_params/promo_type.py +9 -0
  118. whop_sdk/types/shared_params/who_can_comment_types.py +9 -0
  119. whop_sdk/types/shared_params/who_can_post_types.py +9 -0
  120. whop_sdk/types/unwrap_webhook_event.py +24 -1
  121. whop_sdk/types/user_check_access_response.py +2 -3
  122. whop_sdk/types/user_retrieve_response.py +12 -1
  123. {whop_sdk-0.0.1.dist-info → whop_sdk-0.0.3.dist-info}/METADATA +2 -2
  124. {whop_sdk-0.0.1.dist-info → whop_sdk-0.0.3.dist-info}/RECORD +126 -50
  125. {whop_sdk-0.0.1.dist-info → whop_sdk-0.0.3.dist-info}/WHEEL +0 -0
  126. {whop_sdk-0.0.1.dist-info → whop_sdk-0.0.3.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,446 @@
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
+
7
+ import httpx
8
+
9
+ from ..types import forum_list_params, forum_update_params
10
+ from .._types import Body, Omit, Query, Headers, NotGiven, omit, not_given
11
+ from .._utils import maybe_transform, async_maybe_transform
12
+ from .._compat import cached_property
13
+ from .._resource import SyncAPIResource, AsyncAPIResource
14
+ from .._response import (
15
+ to_raw_response_wrapper,
16
+ to_streamed_response_wrapper,
17
+ async_to_raw_response_wrapper,
18
+ async_to_streamed_response_wrapper,
19
+ )
20
+ from ..pagination import SyncCursorPage, AsyncCursorPage
21
+ from .._base_client import AsyncPaginator, make_request_options
22
+ from ..types.shared.forum import Forum
23
+ from ..types.forum_list_response import ForumListResponse
24
+ from ..types.shared.who_can_post_types import WhoCanPostTypes
25
+ from ..types.shared.who_can_comment_types import WhoCanCommentTypes
26
+ from ..types.shared.email_notification_preferences import EmailNotificationPreferences
27
+
28
+ __all__ = ["ForumsResource", "AsyncForumsResource"]
29
+
30
+
31
+ class ForumsResource(SyncAPIResource):
32
+ @cached_property
33
+ def with_raw_response(self) -> ForumsResourceWithRawResponse:
34
+ """
35
+ This property can be used as a prefix for any HTTP method call to return
36
+ the raw response object instead of the parsed content.
37
+
38
+ For more information, see https://www.github.com/whopio/whopsdk-python#accessing-raw-response-data-eg-headers
39
+ """
40
+ return ForumsResourceWithRawResponse(self)
41
+
42
+ @cached_property
43
+ def with_streaming_response(self) -> ForumsResourceWithStreamingResponse:
44
+ """
45
+ An alternative to `.with_raw_response` that doesn't eagerly read the response body.
46
+
47
+ For more information, see https://www.github.com/whopio/whopsdk-python#with_streaming_response
48
+ """
49
+ return ForumsResourceWithStreamingResponse(self)
50
+
51
+ def retrieve(
52
+ self,
53
+ id: str,
54
+ *,
55
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
56
+ # The extra values given here take precedence over values defined on the client or passed to this method.
57
+ extra_headers: Headers | None = None,
58
+ extra_query: Query | None = None,
59
+ extra_body: Body | None = None,
60
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
61
+ ) -> Forum:
62
+ """
63
+ Retrieves a forum
64
+
65
+ Required permissions:
66
+
67
+ - `forum:read`
68
+
69
+ Args:
70
+ extra_headers: Send extra headers
71
+
72
+ extra_query: Add additional query parameters to the request
73
+
74
+ extra_body: Add additional JSON properties to the request
75
+
76
+ timeout: Override the client-level default timeout for this request, in seconds
77
+ """
78
+ if not id:
79
+ raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
80
+ return self._get(
81
+ f"/forums/{id}",
82
+ options=make_request_options(
83
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
84
+ ),
85
+ cast_to=Forum,
86
+ )
87
+
88
+ def update(
89
+ self,
90
+ id: str,
91
+ *,
92
+ email_notification_preference: Optional[EmailNotificationPreferences] | Omit = omit,
93
+ who_can_comment: Optional[WhoCanCommentTypes] | Omit = omit,
94
+ who_can_post: Optional[WhoCanPostTypes] | Omit = omit,
95
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
96
+ # The extra values given here take precedence over values defined on the client or passed to this method.
97
+ extra_headers: Headers | None = None,
98
+ extra_query: Query | None = None,
99
+ extra_body: Body | None = None,
100
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
101
+ ) -> Forum:
102
+ """
103
+ Updates a forum
104
+
105
+ Required permissions:
106
+
107
+ - `forum:moderate`
108
+
109
+ Args:
110
+ email_notification_preference: Email notification preference option for a forum feed
111
+
112
+ who_can_comment: Who can comment on a forum feed
113
+
114
+ who_can_post: Who can post on a forum feed
115
+
116
+ extra_headers: Send extra headers
117
+
118
+ extra_query: Add additional query parameters to the request
119
+
120
+ extra_body: Add additional JSON properties to the request
121
+
122
+ timeout: Override the client-level default timeout for this request, in seconds
123
+ """
124
+ if not id:
125
+ raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
126
+ return self._patch(
127
+ f"/forums/{id}",
128
+ body=maybe_transform(
129
+ {
130
+ "email_notification_preference": email_notification_preference,
131
+ "who_can_comment": who_can_comment,
132
+ "who_can_post": who_can_post,
133
+ },
134
+ forum_update_params.ForumUpdateParams,
135
+ ),
136
+ options=make_request_options(
137
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
138
+ ),
139
+ cast_to=Forum,
140
+ )
141
+
142
+ def list(
143
+ self,
144
+ *,
145
+ company_id: str,
146
+ after: Optional[str] | Omit = omit,
147
+ before: Optional[str] | Omit = omit,
148
+ first: Optional[int] | Omit = omit,
149
+ last: Optional[int] | Omit = omit,
150
+ product_id: Optional[str] | Omit = omit,
151
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
152
+ # The extra values given here take precedence over values defined on the client or passed to this method.
153
+ extra_headers: Headers | None = None,
154
+ extra_query: Query | None = None,
155
+ extra_body: Body | None = None,
156
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
157
+ ) -> SyncCursorPage[ForumListResponse]:
158
+ """
159
+ Lists forums inside a company
160
+
161
+ Required permissions:
162
+
163
+ - `forum:read`
164
+
165
+ Args:
166
+ company_id: The ID of the company to list forums for
167
+
168
+ after: Returns the elements in the list that come after the specified cursor.
169
+
170
+ before: Returns the elements in the list that come before the specified cursor.
171
+
172
+ first: Returns the first _n_ elements from the list.
173
+
174
+ last: Returns the last _n_ elements from the list.
175
+
176
+ product_id: If provided, only forums connected to this product are returned
177
+
178
+ extra_headers: Send extra headers
179
+
180
+ extra_query: Add additional query parameters to the request
181
+
182
+ extra_body: Add additional JSON properties to the request
183
+
184
+ timeout: Override the client-level default timeout for this request, in seconds
185
+ """
186
+ return self._get_api_list(
187
+ "/forums",
188
+ page=SyncCursorPage[ForumListResponse],
189
+ options=make_request_options(
190
+ extra_headers=extra_headers,
191
+ extra_query=extra_query,
192
+ extra_body=extra_body,
193
+ timeout=timeout,
194
+ query=maybe_transform(
195
+ {
196
+ "company_id": company_id,
197
+ "after": after,
198
+ "before": before,
199
+ "first": first,
200
+ "last": last,
201
+ "product_id": product_id,
202
+ },
203
+ forum_list_params.ForumListParams,
204
+ ),
205
+ ),
206
+ model=ForumListResponse,
207
+ )
208
+
209
+
210
+ class AsyncForumsResource(AsyncAPIResource):
211
+ @cached_property
212
+ def with_raw_response(self) -> AsyncForumsResourceWithRawResponse:
213
+ """
214
+ This property can be used as a prefix for any HTTP method call to return
215
+ the raw response object instead of the parsed content.
216
+
217
+ For more information, see https://www.github.com/whopio/whopsdk-python#accessing-raw-response-data-eg-headers
218
+ """
219
+ return AsyncForumsResourceWithRawResponse(self)
220
+
221
+ @cached_property
222
+ def with_streaming_response(self) -> AsyncForumsResourceWithStreamingResponse:
223
+ """
224
+ An alternative to `.with_raw_response` that doesn't eagerly read the response body.
225
+
226
+ For more information, see https://www.github.com/whopio/whopsdk-python#with_streaming_response
227
+ """
228
+ return AsyncForumsResourceWithStreamingResponse(self)
229
+
230
+ async def retrieve(
231
+ self,
232
+ id: str,
233
+ *,
234
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
235
+ # The extra values given here take precedence over values defined on the client or passed to this method.
236
+ extra_headers: Headers | None = None,
237
+ extra_query: Query | None = None,
238
+ extra_body: Body | None = None,
239
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
240
+ ) -> Forum:
241
+ """
242
+ Retrieves a forum
243
+
244
+ Required permissions:
245
+
246
+ - `forum:read`
247
+
248
+ Args:
249
+ extra_headers: Send extra headers
250
+
251
+ extra_query: Add additional query parameters to the request
252
+
253
+ extra_body: Add additional JSON properties to the request
254
+
255
+ timeout: Override the client-level default timeout for this request, in seconds
256
+ """
257
+ if not id:
258
+ raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
259
+ return await self._get(
260
+ f"/forums/{id}",
261
+ options=make_request_options(
262
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
263
+ ),
264
+ cast_to=Forum,
265
+ )
266
+
267
+ async def update(
268
+ self,
269
+ id: str,
270
+ *,
271
+ email_notification_preference: Optional[EmailNotificationPreferences] | Omit = omit,
272
+ who_can_comment: Optional[WhoCanCommentTypes] | Omit = omit,
273
+ who_can_post: Optional[WhoCanPostTypes] | Omit = omit,
274
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
275
+ # The extra values given here take precedence over values defined on the client or passed to this method.
276
+ extra_headers: Headers | None = None,
277
+ extra_query: Query | None = None,
278
+ extra_body: Body | None = None,
279
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
280
+ ) -> Forum:
281
+ """
282
+ Updates a forum
283
+
284
+ Required permissions:
285
+
286
+ - `forum:moderate`
287
+
288
+ Args:
289
+ email_notification_preference: Email notification preference option for a forum feed
290
+
291
+ who_can_comment: Who can comment on a forum feed
292
+
293
+ who_can_post: Who can post on a forum feed
294
+
295
+ extra_headers: Send extra headers
296
+
297
+ extra_query: Add additional query parameters to the request
298
+
299
+ extra_body: Add additional JSON properties to the request
300
+
301
+ timeout: Override the client-level default timeout for this request, in seconds
302
+ """
303
+ if not id:
304
+ raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
305
+ return await self._patch(
306
+ f"/forums/{id}",
307
+ body=await async_maybe_transform(
308
+ {
309
+ "email_notification_preference": email_notification_preference,
310
+ "who_can_comment": who_can_comment,
311
+ "who_can_post": who_can_post,
312
+ },
313
+ forum_update_params.ForumUpdateParams,
314
+ ),
315
+ options=make_request_options(
316
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
317
+ ),
318
+ cast_to=Forum,
319
+ )
320
+
321
+ def list(
322
+ self,
323
+ *,
324
+ company_id: str,
325
+ after: Optional[str] | Omit = omit,
326
+ before: Optional[str] | Omit = omit,
327
+ first: Optional[int] | Omit = omit,
328
+ last: Optional[int] | Omit = omit,
329
+ product_id: Optional[str] | Omit = omit,
330
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
331
+ # The extra values given here take precedence over values defined on the client or passed to this method.
332
+ extra_headers: Headers | None = None,
333
+ extra_query: Query | None = None,
334
+ extra_body: Body | None = None,
335
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
336
+ ) -> AsyncPaginator[ForumListResponse, AsyncCursorPage[ForumListResponse]]:
337
+ """
338
+ Lists forums inside a company
339
+
340
+ Required permissions:
341
+
342
+ - `forum:read`
343
+
344
+ Args:
345
+ company_id: The ID of the company to list forums for
346
+
347
+ after: Returns the elements in the list that come after the specified cursor.
348
+
349
+ before: Returns the elements in the list that come before the specified cursor.
350
+
351
+ first: Returns the first _n_ elements from the list.
352
+
353
+ last: Returns the last _n_ elements from the list.
354
+
355
+ product_id: If provided, only forums connected to this product are returned
356
+
357
+ extra_headers: Send extra headers
358
+
359
+ extra_query: Add additional query parameters to the request
360
+
361
+ extra_body: Add additional JSON properties to the request
362
+
363
+ timeout: Override the client-level default timeout for this request, in seconds
364
+ """
365
+ return self._get_api_list(
366
+ "/forums",
367
+ page=AsyncCursorPage[ForumListResponse],
368
+ options=make_request_options(
369
+ extra_headers=extra_headers,
370
+ extra_query=extra_query,
371
+ extra_body=extra_body,
372
+ timeout=timeout,
373
+ query=maybe_transform(
374
+ {
375
+ "company_id": company_id,
376
+ "after": after,
377
+ "before": before,
378
+ "first": first,
379
+ "last": last,
380
+ "product_id": product_id,
381
+ },
382
+ forum_list_params.ForumListParams,
383
+ ),
384
+ ),
385
+ model=ForumListResponse,
386
+ )
387
+
388
+
389
+ class ForumsResourceWithRawResponse:
390
+ def __init__(self, forums: ForumsResource) -> None:
391
+ self._forums = forums
392
+
393
+ self.retrieve = to_raw_response_wrapper(
394
+ forums.retrieve,
395
+ )
396
+ self.update = to_raw_response_wrapper(
397
+ forums.update,
398
+ )
399
+ self.list = to_raw_response_wrapper(
400
+ forums.list,
401
+ )
402
+
403
+
404
+ class AsyncForumsResourceWithRawResponse:
405
+ def __init__(self, forums: AsyncForumsResource) -> None:
406
+ self._forums = forums
407
+
408
+ self.retrieve = async_to_raw_response_wrapper(
409
+ forums.retrieve,
410
+ )
411
+ self.update = async_to_raw_response_wrapper(
412
+ forums.update,
413
+ )
414
+ self.list = async_to_raw_response_wrapper(
415
+ forums.list,
416
+ )
417
+
418
+
419
+ class ForumsResourceWithStreamingResponse:
420
+ def __init__(self, forums: ForumsResource) -> None:
421
+ self._forums = forums
422
+
423
+ self.retrieve = to_streamed_response_wrapper(
424
+ forums.retrieve,
425
+ )
426
+ self.update = to_streamed_response_wrapper(
427
+ forums.update,
428
+ )
429
+ self.list = to_streamed_response_wrapper(
430
+ forums.list,
431
+ )
432
+
433
+
434
+ class AsyncForumsResourceWithStreamingResponse:
435
+ def __init__(self, forums: AsyncForumsResource) -> None:
436
+ self._forums = forums
437
+
438
+ self.retrieve = async_to_streamed_response_wrapper(
439
+ forums.retrieve,
440
+ )
441
+ self.update = async_to_streamed_response_wrapper(
442
+ forums.update,
443
+ )
444
+ self.list = async_to_streamed_response_wrapper(
445
+ forums.list,
446
+ )