studyfetch-sdk 0.1.0a1__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 (165) hide show
  1. studyfetch_sdk/__init__.py +100 -0
  2. studyfetch_sdk/_base_client.py +1992 -0
  3. studyfetch_sdk/_client.py +403 -0
  4. studyfetch_sdk/_compat.py +219 -0
  5. studyfetch_sdk/_constants.py +14 -0
  6. studyfetch_sdk/_exceptions.py +108 -0
  7. studyfetch_sdk/_files.py +123 -0
  8. studyfetch_sdk/_models.py +808 -0
  9. studyfetch_sdk/_qs.py +150 -0
  10. studyfetch_sdk/_resource.py +43 -0
  11. studyfetch_sdk/_response.py +832 -0
  12. studyfetch_sdk/_streaming.py +333 -0
  13. studyfetch_sdk/_types.py +219 -0
  14. studyfetch_sdk/_utils/__init__.py +57 -0
  15. studyfetch_sdk/_utils/_logs.py +25 -0
  16. studyfetch_sdk/_utils/_proxy.py +65 -0
  17. studyfetch_sdk/_utils/_reflection.py +42 -0
  18. studyfetch_sdk/_utils/_resources_proxy.py +24 -0
  19. studyfetch_sdk/_utils/_streams.py +12 -0
  20. studyfetch_sdk/_utils/_sync.py +86 -0
  21. studyfetch_sdk/_utils/_transform.py +447 -0
  22. studyfetch_sdk/_utils/_typing.py +151 -0
  23. studyfetch_sdk/_utils/_utils.py +422 -0
  24. studyfetch_sdk/_version.py +4 -0
  25. studyfetch_sdk/lib/.keep +4 -0
  26. studyfetch_sdk/py.typed +0 -0
  27. studyfetch_sdk/resources/__init__.py +19 -0
  28. studyfetch_sdk/resources/v1/__init__.py +215 -0
  29. studyfetch_sdk/resources/v1/audio_recaps/__init__.py +33 -0
  30. studyfetch_sdk/resources/v1/audio_recaps/audio_recaps.py +328 -0
  31. studyfetch_sdk/resources/v1/audio_recaps/sections.py +250 -0
  32. studyfetch_sdk/resources/v1/auth/__init__.py +61 -0
  33. studyfetch_sdk/resources/v1/auth/auth.py +620 -0
  34. studyfetch_sdk/resources/v1/auth/login.py +374 -0
  35. studyfetch_sdk/resources/v1/auth/number_2fa.py +457 -0
  36. studyfetch_sdk/resources/v1/auth/organization_invites.py +160 -0
  37. studyfetch_sdk/resources/v1/chat/__init__.py +47 -0
  38. studyfetch_sdk/resources/v1/chat/chat.py +576 -0
  39. studyfetch_sdk/resources/v1/chat/sessions.py +222 -0
  40. studyfetch_sdk/resources/v1/chat/test.py +190 -0
  41. studyfetch_sdk/resources/v1/components.py +943 -0
  42. studyfetch_sdk/resources/v1/embed/__init__.py +33 -0
  43. studyfetch_sdk/resources/v1/embed/component.py +278 -0
  44. studyfetch_sdk/resources/v1/embed/embed.py +346 -0
  45. studyfetch_sdk/resources/v1/explainers.py +216 -0
  46. studyfetch_sdk/resources/v1/flashcards.py +783 -0
  47. studyfetch_sdk/resources/v1/folders.py +744 -0
  48. studyfetch_sdk/resources/v1/materials/__init__.py +61 -0
  49. studyfetch_sdk/resources/v1/materials/bulk.py +134 -0
  50. studyfetch_sdk/resources/v1/materials/materials.py +1029 -0
  51. studyfetch_sdk/resources/v1/materials/test.py +290 -0
  52. studyfetch_sdk/resources/v1/materials/upload.py +410 -0
  53. studyfetch_sdk/resources/v1/organizations/__init__.py +103 -0
  54. studyfetch_sdk/resources/v1/organizations/api_keys.py +260 -0
  55. studyfetch_sdk/resources/v1/organizations/logo/__init__.py +33 -0
  56. studyfetch_sdk/resources/v1/organizations/logo/logo.py +166 -0
  57. studyfetch_sdk/resources/v1/organizations/logo/upload.py +184 -0
  58. studyfetch_sdk/resources/v1/organizations/organizations.py +428 -0
  59. studyfetch_sdk/resources/v1/organizations/profile/__init__.py +47 -0
  60. studyfetch_sdk/resources/v1/organizations/profile/models.py +134 -0
  61. studyfetch_sdk/resources/v1/organizations/profile/profile.py +248 -0
  62. studyfetch_sdk/resources/v1/organizations/profile/team.py +462 -0
  63. studyfetch_sdk/resources/v1/organizations/team/__init__.py +33 -0
  64. studyfetch_sdk/resources/v1/organizations/team/invite.py +236 -0
  65. studyfetch_sdk/resources/v1/organizations/team/team.py +564 -0
  66. studyfetch_sdk/resources/v1/organizations/theme.py +184 -0
  67. studyfetch_sdk/resources/v1/organizations/usage.py +160 -0
  68. studyfetch_sdk/resources/v1/scenarios/__init__.py +61 -0
  69. studyfetch_sdk/resources/v1/scenarios/component.py +330 -0
  70. studyfetch_sdk/resources/v1/scenarios/scenarios.py +708 -0
  71. studyfetch_sdk/resources/v1/scenarios/sessions.py +236 -0
  72. studyfetch_sdk/resources/v1/scenarios/submissions/__init__.py +33 -0
  73. studyfetch_sdk/resources/v1/scenarios/submissions/submissions.py +102 -0
  74. studyfetch_sdk/resources/v1/scenarios/submissions/user.py +210 -0
  75. studyfetch_sdk/resources/v1/tests/__init__.py +33 -0
  76. studyfetch_sdk/resources/v1/tests/component.py +160 -0
  77. studyfetch_sdk/resources/v1/tests/tests.py +682 -0
  78. studyfetch_sdk/resources/v1/upload/__init__.py +33 -0
  79. studyfetch_sdk/resources/v1/upload/component.py +388 -0
  80. studyfetch_sdk/resources/v1/upload/upload.py +102 -0
  81. studyfetch_sdk/resources/v1/usage.py +1126 -0
  82. studyfetch_sdk/resources/v1/v1.py +518 -0
  83. studyfetch_sdk/types/__init__.py +3 -0
  84. studyfetch_sdk/types/v1/__init__.py +52 -0
  85. studyfetch_sdk/types/v1/admin/__init__.py +3 -0
  86. studyfetch_sdk/types/v1/admin/organizations/__init__.py +3 -0
  87. studyfetch_sdk/types/v1/admin/organizations/models/__init__.py +3 -0
  88. studyfetch_sdk/types/v1/audio_recaps/__init__.py +3 -0
  89. studyfetch_sdk/types/v1/auth/__init__.py +13 -0
  90. studyfetch_sdk/types/v1/auth/login_authenticate_params.py +15 -0
  91. studyfetch_sdk/types/v1/auth/login_verify_2fa_params.py +15 -0
  92. studyfetch_sdk/types/v1/auth/login_verify_backup_code_params.py +17 -0
  93. studyfetch_sdk/types/v1/auth/number_2fa_disable_params.py +12 -0
  94. studyfetch_sdk/types/v1/auth/number_2fa_enable_params.py +12 -0
  95. studyfetch_sdk/types/v1/auth/number_2fa_regenerate_backup_codes_params.py +12 -0
  96. studyfetch_sdk/types/v1/auth/number_2fa_send_code_params.py +12 -0
  97. studyfetch_sdk/types/v1/auth_register_new_user_params.py +23 -0
  98. studyfetch_sdk/types/v1/auth_request_password_reset_params.py +12 -0
  99. studyfetch_sdk/types/v1/auth_reset_password_params.py +17 -0
  100. studyfetch_sdk/types/v1/chat/__init__.py +5 -0
  101. studyfetch_sdk/types/v1/chat/session_retrieve_params.py +11 -0
  102. studyfetch_sdk/types/v1/chat_retrieve_session_params.py +13 -0
  103. studyfetch_sdk/types/v1/chat_send_message_params.py +54 -0
  104. studyfetch_sdk/types/v1/chat_stream_params.py +28 -0
  105. studyfetch_sdk/types/v1/component_create_params.py +29 -0
  106. studyfetch_sdk/types/v1/component_create_response.py +46 -0
  107. studyfetch_sdk/types/v1/component_embed_params.py +99 -0
  108. studyfetch_sdk/types/v1/component_embed_response.py +38 -0
  109. studyfetch_sdk/types/v1/component_list_params.py +14 -0
  110. studyfetch_sdk/types/v1/component_list_response.py +49 -0
  111. studyfetch_sdk/types/v1/component_retrieve_response.py +46 -0
  112. studyfetch_sdk/types/v1/component_update_params.py +12 -0
  113. studyfetch_sdk/types/v1/component_update_response.py +46 -0
  114. studyfetch_sdk/types/v1/embed/__init__.py +6 -0
  115. studyfetch_sdk/types/v1/embed/component_interact_params.py +14 -0
  116. studyfetch_sdk/types/v1/embed/component_retrieve_params.py +12 -0
  117. studyfetch_sdk/types/v1/embed_get_theme_params.py +12 -0
  118. studyfetch_sdk/types/v1/embed_verify_params.py +12 -0
  119. studyfetch_sdk/types/v1/explainer_handle_webhook_params.py +11 -0
  120. studyfetch_sdk/types/v1/flashcard_batch_process_params.py +36 -0
  121. studyfetch_sdk/types/v1/flashcard_batch_process_response.py +39 -0
  122. studyfetch_sdk/types/v1/flashcard_get_algorithm_info_response.py +37 -0
  123. studyfetch_sdk/types/v1/flashcard_get_all_params.py +23 -0
  124. studyfetch_sdk/types/v1/flashcard_get_due_params.py +19 -0
  125. studyfetch_sdk/types/v1/flashcard_get_stats_params.py +17 -0
  126. studyfetch_sdk/types/v1/flashcard_get_types_response.py +14 -0
  127. studyfetch_sdk/types/v1/flashcard_rate_params.py +23 -0
  128. studyfetch_sdk/types/v1/folder_create_params.py +17 -0
  129. studyfetch_sdk/types/v1/folder_list_params.py +14 -0
  130. studyfetch_sdk/types/v1/folder_update_params.py +17 -0
  131. studyfetch_sdk/types/v1/material_create_params.py +34 -0
  132. studyfetch_sdk/types/v1/material_create_response.py +62 -0
  133. studyfetch_sdk/types/v1/material_get_download_url_params.py +13 -0
  134. studyfetch_sdk/types/v1/material_list_params.py +14 -0
  135. studyfetch_sdk/types/v1/material_list_response.py +65 -0
  136. studyfetch_sdk/types/v1/material_retrieve_response.py +62 -0
  137. studyfetch_sdk/types/v1/materials/__init__.py +8 -0
  138. studyfetch_sdk/types/v1/materials/upload_upload_file_params.py +20 -0
  139. studyfetch_sdk/types/v1/materials/upload_upload_file_response.py +62 -0
  140. studyfetch_sdk/types/v1/materials/upload_upload_from_url_params.py +20 -0
  141. studyfetch_sdk/types/v1/materials/upload_upload_from_url_response.py +62 -0
  142. studyfetch_sdk/types/v1/organizations/__init__.py +3 -0
  143. studyfetch_sdk/types/v1/organizations/logo/__init__.py +3 -0
  144. studyfetch_sdk/types/v1/organizations/profile/__init__.py +3 -0
  145. studyfetch_sdk/types/v1/organizations/team/__init__.py +3 -0
  146. studyfetch_sdk/types/v1/scenario_create_params.py +11 -0
  147. studyfetch_sdk/types/v1/scenario_update_params.py +11 -0
  148. studyfetch_sdk/types/v1/scenarios/__init__.py +5 -0
  149. studyfetch_sdk/types/v1/scenarios/component_update_params.py +11 -0
  150. studyfetch_sdk/types/v1/scenarios/submissions/__init__.py +3 -0
  151. studyfetch_sdk/types/v1/test_create_params.py +20 -0
  152. studyfetch_sdk/types/v1/test_retake_params.py +14 -0
  153. studyfetch_sdk/types/v1/test_submit_answer_params.py +20 -0
  154. studyfetch_sdk/types/v1/test_submit_params.py +14 -0
  155. studyfetch_sdk/types/v1/tests/__init__.py +3 -0
  156. studyfetch_sdk/types/v1/upload/__init__.py +3 -0
  157. studyfetch_sdk/types/v1/usage_get_stats_params.py +23 -0
  158. studyfetch_sdk/types/v1/usage_get_summary_params.py +23 -0
  159. studyfetch_sdk/types/v1/usage_list_events_params.py +61 -0
  160. studyfetch_sdk/types/v1/usage_track_chat_params.py +54 -0
  161. studyfetch_sdk/types/v1/usage_track_event_params.py +128 -0
  162. studyfetch_sdk-0.1.0a1.dist-info/METADATA +453 -0
  163. studyfetch_sdk-0.1.0a1.dist-info/RECORD +165 -0
  164. studyfetch_sdk-0.1.0a1.dist-info/WHEEL +4 -0
  165. studyfetch_sdk-0.1.0a1.dist-info/licenses/LICENSE +201 -0
@@ -0,0 +1,744 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from __future__ import annotations
4
+
5
+ import httpx
6
+
7
+ from ..._types import NOT_GIVEN, Body, Query, Headers, NoneType, NotGiven
8
+ from ..._utils import maybe_transform, async_maybe_transform
9
+ from ..._compat import cached_property
10
+ from ...types.v1 import folder_list_params, folder_create_params, folder_update_params
11
+ from ..._resource import SyncAPIResource, AsyncAPIResource
12
+ from ..._response import (
13
+ to_raw_response_wrapper,
14
+ to_streamed_response_wrapper,
15
+ async_to_raw_response_wrapper,
16
+ async_to_streamed_response_wrapper,
17
+ )
18
+ from ..._base_client import make_request_options
19
+
20
+ __all__ = ["FoldersResource", "AsyncFoldersResource"]
21
+
22
+
23
+ class FoldersResource(SyncAPIResource):
24
+ @cached_property
25
+ def with_raw_response(self) -> FoldersResourceWithRawResponse:
26
+ """
27
+ This property can be used as a prefix for any HTTP method call to return
28
+ the raw response object instead of the parsed content.
29
+
30
+ For more information, see https://www.github.com/GoStudyFetchGo/studyfetch-sdk-python#accessing-raw-response-data-eg-headers
31
+ """
32
+ return FoldersResourceWithRawResponse(self)
33
+
34
+ @cached_property
35
+ def with_streaming_response(self) -> FoldersResourceWithStreamingResponse:
36
+ """
37
+ An alternative to `.with_raw_response` that doesn't eagerly read the response body.
38
+
39
+ For more information, see https://www.github.com/GoStudyFetchGo/studyfetch-sdk-python#with_streaming_response
40
+ """
41
+ return FoldersResourceWithStreamingResponse(self)
42
+
43
+ def create(
44
+ self,
45
+ *,
46
+ name: str,
47
+ parent_id: str | NotGiven = NOT_GIVEN,
48
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
49
+ # The extra values given here take precedence over values defined on the client or passed to this method.
50
+ extra_headers: Headers | None = None,
51
+ extra_query: Query | None = None,
52
+ extra_body: Body | None = None,
53
+ timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
54
+ ) -> None:
55
+ """
56
+ Create a new folder
57
+
58
+ Args:
59
+ name: Folder name
60
+
61
+ parent_id: Parent folder ID (optional)
62
+
63
+ extra_headers: Send extra headers
64
+
65
+ extra_query: Add additional query parameters to the request
66
+
67
+ extra_body: Add additional JSON properties to the request
68
+
69
+ timeout: Override the client-level default timeout for this request, in seconds
70
+ """
71
+ extra_headers = {"Accept": "*/*", **(extra_headers or {})}
72
+ return self._post(
73
+ "/api/v1/folders",
74
+ body=maybe_transform(
75
+ {
76
+ "name": name,
77
+ "parent_id": parent_id,
78
+ },
79
+ folder_create_params.FolderCreateParams,
80
+ ),
81
+ options=make_request_options(
82
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
83
+ ),
84
+ cast_to=NoneType,
85
+ )
86
+
87
+ def retrieve(
88
+ self,
89
+ id: str,
90
+ *,
91
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
92
+ # The extra values given here take precedence over values defined on the client or passed to this method.
93
+ extra_headers: Headers | None = None,
94
+ extra_query: Query | None = None,
95
+ extra_body: Body | None = None,
96
+ timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
97
+ ) -> None:
98
+ """
99
+ Get folder by ID
100
+
101
+ Args:
102
+ extra_headers: Send extra headers
103
+
104
+ extra_query: Add additional query parameters to the request
105
+
106
+ extra_body: Add additional JSON properties to the request
107
+
108
+ timeout: Override the client-level default timeout for this request, in seconds
109
+ """
110
+ if not id:
111
+ raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
112
+ extra_headers = {"Accept": "*/*", **(extra_headers or {})}
113
+ return self._get(
114
+ f"/api/v1/folders/{id}",
115
+ options=make_request_options(
116
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
117
+ ),
118
+ cast_to=NoneType,
119
+ )
120
+
121
+ def update(
122
+ self,
123
+ id: str,
124
+ *,
125
+ name: str | NotGiven = NOT_GIVEN,
126
+ parent_id: str | NotGiven = NOT_GIVEN,
127
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
128
+ # The extra values given here take precedence over values defined on the client or passed to this method.
129
+ extra_headers: Headers | None = None,
130
+ extra_query: Query | None = None,
131
+ extra_body: Body | None = None,
132
+ timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
133
+ ) -> None:
134
+ """
135
+ Update folder
136
+
137
+ Args:
138
+ name: New folder name
139
+
140
+ parent_id: New parent folder ID
141
+
142
+ extra_headers: Send extra headers
143
+
144
+ extra_query: Add additional query parameters to the request
145
+
146
+ extra_body: Add additional JSON properties to the request
147
+
148
+ timeout: Override the client-level default timeout for this request, in seconds
149
+ """
150
+ if not id:
151
+ raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
152
+ extra_headers = {"Accept": "*/*", **(extra_headers or {})}
153
+ return self._patch(
154
+ f"/api/v1/folders/{id}",
155
+ body=maybe_transform(
156
+ {
157
+ "name": name,
158
+ "parent_id": parent_id,
159
+ },
160
+ folder_update_params.FolderUpdateParams,
161
+ ),
162
+ options=make_request_options(
163
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
164
+ ),
165
+ cast_to=NoneType,
166
+ )
167
+
168
+ def list(
169
+ self,
170
+ *,
171
+ parent_id: object | NotGiven = NOT_GIVEN,
172
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
173
+ # The extra values given here take precedence over values defined on the client or passed to this method.
174
+ extra_headers: Headers | None = None,
175
+ extra_query: Query | None = None,
176
+ extra_body: Body | None = None,
177
+ timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
178
+ ) -> None:
179
+ """
180
+ Get all folders
181
+
182
+ Args:
183
+ parent_id: Filter by parent folder
184
+
185
+ extra_headers: Send extra headers
186
+
187
+ extra_query: Add additional query parameters to the request
188
+
189
+ extra_body: Add additional JSON properties to the request
190
+
191
+ timeout: Override the client-level default timeout for this request, in seconds
192
+ """
193
+ extra_headers = {"Accept": "*/*", **(extra_headers or {})}
194
+ return self._get(
195
+ "/api/v1/folders",
196
+ options=make_request_options(
197
+ extra_headers=extra_headers,
198
+ extra_query=extra_query,
199
+ extra_body=extra_body,
200
+ timeout=timeout,
201
+ query=maybe_transform({"parent_id": parent_id}, folder_list_params.FolderListParams),
202
+ ),
203
+ cast_to=NoneType,
204
+ )
205
+
206
+ def delete(
207
+ self,
208
+ id: str,
209
+ *,
210
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
211
+ # The extra values given here take precedence over values defined on the client or passed to this method.
212
+ extra_headers: Headers | None = None,
213
+ extra_query: Query | None = None,
214
+ extra_body: Body | None = None,
215
+ timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
216
+ ) -> None:
217
+ """
218
+ Delete folder
219
+
220
+ Args:
221
+ extra_headers: Send extra headers
222
+
223
+ extra_query: Add additional query parameters to the request
224
+
225
+ extra_body: Add additional JSON properties to the request
226
+
227
+ timeout: Override the client-level default timeout for this request, in seconds
228
+ """
229
+ if not id:
230
+ raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
231
+ extra_headers = {"Accept": "*/*", **(extra_headers or {})}
232
+ return self._delete(
233
+ f"/api/v1/folders/{id}",
234
+ options=make_request_options(
235
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
236
+ ),
237
+ cast_to=NoneType,
238
+ )
239
+
240
+ def get_tree(
241
+ self,
242
+ *,
243
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
244
+ # The extra values given here take precedence over values defined on the client or passed to this method.
245
+ extra_headers: Headers | None = None,
246
+ extra_query: Query | None = None,
247
+ extra_body: Body | None = None,
248
+ timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
249
+ ) -> None:
250
+ """Get folder tree structure"""
251
+ extra_headers = {"Accept": "*/*", **(extra_headers or {})}
252
+ return self._get(
253
+ "/api/v1/folders/tree",
254
+ options=make_request_options(
255
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
256
+ ),
257
+ cast_to=NoneType,
258
+ )
259
+
260
+ def list_materials(
261
+ self,
262
+ id: str,
263
+ *,
264
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
265
+ # The extra values given here take precedence over values defined on the client or passed to this method.
266
+ extra_headers: Headers | None = None,
267
+ extra_query: Query | None = None,
268
+ extra_body: Body | None = None,
269
+ timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
270
+ ) -> None:
271
+ """
272
+ Args:
273
+ extra_headers: Send extra headers
274
+
275
+ extra_query: Add additional query parameters to the request
276
+
277
+ extra_body: Add additional JSON properties to the request
278
+
279
+ timeout: Override the client-level default timeout for this request, in seconds
280
+ """
281
+ if not id:
282
+ raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
283
+ extra_headers = {"Accept": "*/*", **(extra_headers or {})}
284
+ return self._get(
285
+ f"/api/v1/folders/{id}/materials",
286
+ options=make_request_options(
287
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
288
+ ),
289
+ cast_to=NoneType,
290
+ )
291
+
292
+ def move(
293
+ self,
294
+ id: str,
295
+ *,
296
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
297
+ # The extra values given here take precedence over values defined on the client or passed to this method.
298
+ extra_headers: Headers | None = None,
299
+ extra_query: Query | None = None,
300
+ extra_body: Body | None = None,
301
+ timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
302
+ ) -> None:
303
+ """
304
+ Args:
305
+ extra_headers: Send extra headers
306
+
307
+ extra_query: Add additional query parameters to the request
308
+
309
+ extra_body: Add additional JSON properties to the request
310
+
311
+ timeout: Override the client-level default timeout for this request, in seconds
312
+ """
313
+ if not id:
314
+ raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
315
+ extra_headers = {"Accept": "*/*", **(extra_headers or {})}
316
+ return self._patch(
317
+ f"/api/v1/folders/{id}/move",
318
+ options=make_request_options(
319
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
320
+ ),
321
+ cast_to=NoneType,
322
+ )
323
+
324
+
325
+ class AsyncFoldersResource(AsyncAPIResource):
326
+ @cached_property
327
+ def with_raw_response(self) -> AsyncFoldersResourceWithRawResponse:
328
+ """
329
+ This property can be used as a prefix for any HTTP method call to return
330
+ the raw response object instead of the parsed content.
331
+
332
+ For more information, see https://www.github.com/GoStudyFetchGo/studyfetch-sdk-python#accessing-raw-response-data-eg-headers
333
+ """
334
+ return AsyncFoldersResourceWithRawResponse(self)
335
+
336
+ @cached_property
337
+ def with_streaming_response(self) -> AsyncFoldersResourceWithStreamingResponse:
338
+ """
339
+ An alternative to `.with_raw_response` that doesn't eagerly read the response body.
340
+
341
+ For more information, see https://www.github.com/GoStudyFetchGo/studyfetch-sdk-python#with_streaming_response
342
+ """
343
+ return AsyncFoldersResourceWithStreamingResponse(self)
344
+
345
+ async def create(
346
+ self,
347
+ *,
348
+ name: str,
349
+ parent_id: str | NotGiven = NOT_GIVEN,
350
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
351
+ # The extra values given here take precedence over values defined on the client or passed to this method.
352
+ extra_headers: Headers | None = None,
353
+ extra_query: Query | None = None,
354
+ extra_body: Body | None = None,
355
+ timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
356
+ ) -> None:
357
+ """
358
+ Create a new folder
359
+
360
+ Args:
361
+ name: Folder name
362
+
363
+ parent_id: Parent folder ID (optional)
364
+
365
+ extra_headers: Send extra headers
366
+
367
+ extra_query: Add additional query parameters to the request
368
+
369
+ extra_body: Add additional JSON properties to the request
370
+
371
+ timeout: Override the client-level default timeout for this request, in seconds
372
+ """
373
+ extra_headers = {"Accept": "*/*", **(extra_headers or {})}
374
+ return await self._post(
375
+ "/api/v1/folders",
376
+ body=await async_maybe_transform(
377
+ {
378
+ "name": name,
379
+ "parent_id": parent_id,
380
+ },
381
+ folder_create_params.FolderCreateParams,
382
+ ),
383
+ options=make_request_options(
384
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
385
+ ),
386
+ cast_to=NoneType,
387
+ )
388
+
389
+ async def retrieve(
390
+ self,
391
+ id: str,
392
+ *,
393
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
394
+ # The extra values given here take precedence over values defined on the client or passed to this method.
395
+ extra_headers: Headers | None = None,
396
+ extra_query: Query | None = None,
397
+ extra_body: Body | None = None,
398
+ timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
399
+ ) -> None:
400
+ """
401
+ Get folder by ID
402
+
403
+ Args:
404
+ extra_headers: Send extra headers
405
+
406
+ extra_query: Add additional query parameters to the request
407
+
408
+ extra_body: Add additional JSON properties to the request
409
+
410
+ timeout: Override the client-level default timeout for this request, in seconds
411
+ """
412
+ if not id:
413
+ raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
414
+ extra_headers = {"Accept": "*/*", **(extra_headers or {})}
415
+ return await self._get(
416
+ f"/api/v1/folders/{id}",
417
+ options=make_request_options(
418
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
419
+ ),
420
+ cast_to=NoneType,
421
+ )
422
+
423
+ async def update(
424
+ self,
425
+ id: str,
426
+ *,
427
+ name: str | NotGiven = NOT_GIVEN,
428
+ parent_id: str | NotGiven = NOT_GIVEN,
429
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
430
+ # The extra values given here take precedence over values defined on the client or passed to this method.
431
+ extra_headers: Headers | None = None,
432
+ extra_query: Query | None = None,
433
+ extra_body: Body | None = None,
434
+ timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
435
+ ) -> None:
436
+ """
437
+ Update folder
438
+
439
+ Args:
440
+ name: New folder name
441
+
442
+ parent_id: New parent folder ID
443
+
444
+ extra_headers: Send extra headers
445
+
446
+ extra_query: Add additional query parameters to the request
447
+
448
+ extra_body: Add additional JSON properties to the request
449
+
450
+ timeout: Override the client-level default timeout for this request, in seconds
451
+ """
452
+ if not id:
453
+ raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
454
+ extra_headers = {"Accept": "*/*", **(extra_headers or {})}
455
+ return await self._patch(
456
+ f"/api/v1/folders/{id}",
457
+ body=await async_maybe_transform(
458
+ {
459
+ "name": name,
460
+ "parent_id": parent_id,
461
+ },
462
+ folder_update_params.FolderUpdateParams,
463
+ ),
464
+ options=make_request_options(
465
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
466
+ ),
467
+ cast_to=NoneType,
468
+ )
469
+
470
+ async def list(
471
+ self,
472
+ *,
473
+ parent_id: object | NotGiven = NOT_GIVEN,
474
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
475
+ # The extra values given here take precedence over values defined on the client or passed to this method.
476
+ extra_headers: Headers | None = None,
477
+ extra_query: Query | None = None,
478
+ extra_body: Body | None = None,
479
+ timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
480
+ ) -> None:
481
+ """
482
+ Get all folders
483
+
484
+ Args:
485
+ parent_id: Filter by parent folder
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
+ extra_headers = {"Accept": "*/*", **(extra_headers or {})}
496
+ return await self._get(
497
+ "/api/v1/folders",
498
+ options=make_request_options(
499
+ extra_headers=extra_headers,
500
+ extra_query=extra_query,
501
+ extra_body=extra_body,
502
+ timeout=timeout,
503
+ query=await async_maybe_transform({"parent_id": parent_id}, folder_list_params.FolderListParams),
504
+ ),
505
+ cast_to=NoneType,
506
+ )
507
+
508
+ async def delete(
509
+ self,
510
+ id: str,
511
+ *,
512
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
513
+ # The extra values given here take precedence over values defined on the client or passed to this method.
514
+ extra_headers: Headers | None = None,
515
+ extra_query: Query | None = None,
516
+ extra_body: Body | None = None,
517
+ timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
518
+ ) -> None:
519
+ """
520
+ Delete folder
521
+
522
+ Args:
523
+ extra_headers: Send extra headers
524
+
525
+ extra_query: Add additional query parameters to the request
526
+
527
+ extra_body: Add additional JSON properties to the request
528
+
529
+ timeout: Override the client-level default timeout for this request, in seconds
530
+ """
531
+ if not id:
532
+ raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
533
+ extra_headers = {"Accept": "*/*", **(extra_headers or {})}
534
+ return await self._delete(
535
+ f"/api/v1/folders/{id}",
536
+ options=make_request_options(
537
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
538
+ ),
539
+ cast_to=NoneType,
540
+ )
541
+
542
+ async def get_tree(
543
+ self,
544
+ *,
545
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
546
+ # The extra values given here take precedence over values defined on the client or passed to this method.
547
+ extra_headers: Headers | None = None,
548
+ extra_query: Query | None = None,
549
+ extra_body: Body | None = None,
550
+ timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
551
+ ) -> None:
552
+ """Get folder tree structure"""
553
+ extra_headers = {"Accept": "*/*", **(extra_headers or {})}
554
+ return await self._get(
555
+ "/api/v1/folders/tree",
556
+ options=make_request_options(
557
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
558
+ ),
559
+ cast_to=NoneType,
560
+ )
561
+
562
+ async def list_materials(
563
+ self,
564
+ id: str,
565
+ *,
566
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
567
+ # The extra values given here take precedence over values defined on the client or passed to this method.
568
+ extra_headers: Headers | None = None,
569
+ extra_query: Query | None = None,
570
+ extra_body: Body | None = None,
571
+ timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
572
+ ) -> None:
573
+ """
574
+ Args:
575
+ extra_headers: Send extra headers
576
+
577
+ extra_query: Add additional query parameters to the request
578
+
579
+ extra_body: Add additional JSON properties to the request
580
+
581
+ timeout: Override the client-level default timeout for this request, in seconds
582
+ """
583
+ if not id:
584
+ raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
585
+ extra_headers = {"Accept": "*/*", **(extra_headers or {})}
586
+ return await self._get(
587
+ f"/api/v1/folders/{id}/materials",
588
+ options=make_request_options(
589
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
590
+ ),
591
+ cast_to=NoneType,
592
+ )
593
+
594
+ async def move(
595
+ self,
596
+ id: str,
597
+ *,
598
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
599
+ # The extra values given here take precedence over values defined on the client or passed to this method.
600
+ extra_headers: Headers | None = None,
601
+ extra_query: Query | None = None,
602
+ extra_body: Body | None = None,
603
+ timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
604
+ ) -> None:
605
+ """
606
+ Args:
607
+ extra_headers: Send extra headers
608
+
609
+ extra_query: Add additional query parameters to the request
610
+
611
+ extra_body: Add additional JSON properties to the request
612
+
613
+ timeout: Override the client-level default timeout for this request, in seconds
614
+ """
615
+ if not id:
616
+ raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
617
+ extra_headers = {"Accept": "*/*", **(extra_headers or {})}
618
+ return await self._patch(
619
+ f"/api/v1/folders/{id}/move",
620
+ options=make_request_options(
621
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
622
+ ),
623
+ cast_to=NoneType,
624
+ )
625
+
626
+
627
+ class FoldersResourceWithRawResponse:
628
+ def __init__(self, folders: FoldersResource) -> None:
629
+ self._folders = folders
630
+
631
+ self.create = to_raw_response_wrapper(
632
+ folders.create,
633
+ )
634
+ self.retrieve = to_raw_response_wrapper(
635
+ folders.retrieve,
636
+ )
637
+ self.update = to_raw_response_wrapper(
638
+ folders.update,
639
+ )
640
+ self.list = to_raw_response_wrapper(
641
+ folders.list,
642
+ )
643
+ self.delete = to_raw_response_wrapper(
644
+ folders.delete,
645
+ )
646
+ self.get_tree = to_raw_response_wrapper(
647
+ folders.get_tree,
648
+ )
649
+ self.list_materials = to_raw_response_wrapper(
650
+ folders.list_materials,
651
+ )
652
+ self.move = to_raw_response_wrapper(
653
+ folders.move,
654
+ )
655
+
656
+
657
+ class AsyncFoldersResourceWithRawResponse:
658
+ def __init__(self, folders: AsyncFoldersResource) -> None:
659
+ self._folders = folders
660
+
661
+ self.create = async_to_raw_response_wrapper(
662
+ folders.create,
663
+ )
664
+ self.retrieve = async_to_raw_response_wrapper(
665
+ folders.retrieve,
666
+ )
667
+ self.update = async_to_raw_response_wrapper(
668
+ folders.update,
669
+ )
670
+ self.list = async_to_raw_response_wrapper(
671
+ folders.list,
672
+ )
673
+ self.delete = async_to_raw_response_wrapper(
674
+ folders.delete,
675
+ )
676
+ self.get_tree = async_to_raw_response_wrapper(
677
+ folders.get_tree,
678
+ )
679
+ self.list_materials = async_to_raw_response_wrapper(
680
+ folders.list_materials,
681
+ )
682
+ self.move = async_to_raw_response_wrapper(
683
+ folders.move,
684
+ )
685
+
686
+
687
+ class FoldersResourceWithStreamingResponse:
688
+ def __init__(self, folders: FoldersResource) -> None:
689
+ self._folders = folders
690
+
691
+ self.create = to_streamed_response_wrapper(
692
+ folders.create,
693
+ )
694
+ self.retrieve = to_streamed_response_wrapper(
695
+ folders.retrieve,
696
+ )
697
+ self.update = to_streamed_response_wrapper(
698
+ folders.update,
699
+ )
700
+ self.list = to_streamed_response_wrapper(
701
+ folders.list,
702
+ )
703
+ self.delete = to_streamed_response_wrapper(
704
+ folders.delete,
705
+ )
706
+ self.get_tree = to_streamed_response_wrapper(
707
+ folders.get_tree,
708
+ )
709
+ self.list_materials = to_streamed_response_wrapper(
710
+ folders.list_materials,
711
+ )
712
+ self.move = to_streamed_response_wrapper(
713
+ folders.move,
714
+ )
715
+
716
+
717
+ class AsyncFoldersResourceWithStreamingResponse:
718
+ def __init__(self, folders: AsyncFoldersResource) -> None:
719
+ self._folders = folders
720
+
721
+ self.create = async_to_streamed_response_wrapper(
722
+ folders.create,
723
+ )
724
+ self.retrieve = async_to_streamed_response_wrapper(
725
+ folders.retrieve,
726
+ )
727
+ self.update = async_to_streamed_response_wrapper(
728
+ folders.update,
729
+ )
730
+ self.list = async_to_streamed_response_wrapper(
731
+ folders.list,
732
+ )
733
+ self.delete = async_to_streamed_response_wrapper(
734
+ folders.delete,
735
+ )
736
+ self.get_tree = async_to_streamed_response_wrapper(
737
+ folders.get_tree,
738
+ )
739
+ self.list_materials = async_to_streamed_response_wrapper(
740
+ folders.list_materials,
741
+ )
742
+ self.move = async_to_streamed_response_wrapper(
743
+ folders.move,
744
+ )