studyfetch-sdk 0.1.0a14__py3-none-any.whl → 0.1.0a16__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.
- studyfetch_sdk/_version.py +1 -1
- studyfetch_sdk/resources/v1/components.py +0 -8
- studyfetch_sdk/resources/v1/materials/materials.py +76 -1
- studyfetch_sdk/resources/v1/upload/component.py +210 -25
- studyfetch_sdk/types/v1/__init__.py +1 -0
- studyfetch_sdk/types/v1/component_create_params.py +0 -6
- studyfetch_sdk/types/v1/material_search_params.py +27 -0
- studyfetch_sdk/types/v1/upload/__init__.py +9 -0
- studyfetch_sdk/types/v1/upload/component_complete_upload_params.py +20 -0
- studyfetch_sdk/types/v1/upload/component_complete_upload_response.py +16 -0
- studyfetch_sdk/types/v1/upload/component_get_presigned_url_params.py +23 -0
- studyfetch_sdk/types/v1/upload/component_get_presigned_url_response.py +15 -0
- studyfetch_sdk/types/v1/upload/component_upload_file_params.py +21 -0
- studyfetch_sdk/types/v1/upload/component_upload_file_response.py +24 -0
- studyfetch_sdk/types/v1/upload/component_upload_url_params.py +23 -0
- studyfetch_sdk/types/v1/upload/component_upload_url_response.py +24 -0
- {studyfetch_sdk-0.1.0a14.dist-info → studyfetch_sdk-0.1.0a16.dist-info}/METADATA +1 -1
- {studyfetch_sdk-0.1.0a14.dist-info → studyfetch_sdk-0.1.0a16.dist-info}/RECORD +20 -11
- {studyfetch_sdk-0.1.0a14.dist-info → studyfetch_sdk-0.1.0a16.dist-info}/WHEEL +0 -0
- {studyfetch_sdk-0.1.0a14.dist-info → studyfetch_sdk-0.1.0a16.dist-info}/licenses/LICENSE +0 -0
studyfetch_sdk/_version.py
CHANGED
@@ -56,7 +56,6 @@ class ComponentsResource(SyncAPIResource):
|
|
56
56
|
*,
|
57
57
|
config: component_create_params.Config,
|
58
58
|
name: str,
|
59
|
-
origin: Literal["chat", "classroom", "upload", "console", "api"],
|
60
59
|
type: Literal[
|
61
60
|
"chat", "flashcards", "scenarios", "practice_test", "audio_recap", "tutor_me", "explainers", "uploads"
|
62
61
|
],
|
@@ -77,8 +76,6 @@ class ComponentsResource(SyncAPIResource):
|
|
77
76
|
|
78
77
|
name: Name of the component
|
79
78
|
|
80
|
-
origin: Origin of the component
|
81
|
-
|
82
79
|
type: Type of component to create
|
83
80
|
|
84
81
|
description: Component description
|
@@ -99,7 +96,6 @@ class ComponentsResource(SyncAPIResource):
|
|
99
96
|
{
|
100
97
|
"config": config,
|
101
98
|
"name": name,
|
102
|
-
"origin": origin,
|
103
99
|
"type": type,
|
104
100
|
"description": description,
|
105
101
|
"metadata": metadata,
|
@@ -448,7 +444,6 @@ class AsyncComponentsResource(AsyncAPIResource):
|
|
448
444
|
*,
|
449
445
|
config: component_create_params.Config,
|
450
446
|
name: str,
|
451
|
-
origin: Literal["chat", "classroom", "upload", "console", "api"],
|
452
447
|
type: Literal[
|
453
448
|
"chat", "flashcards", "scenarios", "practice_test", "audio_recap", "tutor_me", "explainers", "uploads"
|
454
449
|
],
|
@@ -469,8 +464,6 @@ class AsyncComponentsResource(AsyncAPIResource):
|
|
469
464
|
|
470
465
|
name: Name of the component
|
471
466
|
|
472
|
-
origin: Origin of the component
|
473
|
-
|
474
467
|
type: Type of component to create
|
475
468
|
|
476
469
|
description: Component description
|
@@ -491,7 +484,6 @@ class AsyncComponentsResource(AsyncAPIResource):
|
|
491
484
|
{
|
492
485
|
"config": config,
|
493
486
|
"name": name,
|
494
|
-
"origin": origin,
|
495
487
|
"type": type,
|
496
488
|
"description": description,
|
497
489
|
"metadata": metadata,
|
@@ -2,6 +2,8 @@
|
|
2
2
|
|
3
3
|
from __future__ import annotations
|
4
4
|
|
5
|
+
from typing import List
|
6
|
+
|
5
7
|
import httpx
|
6
8
|
|
7
9
|
from .bulk import (
|
@@ -31,7 +33,12 @@ from .upload import (
|
|
31
33
|
from ...._types import NOT_GIVEN, Body, Query, Headers, NoneType, NotGiven
|
32
34
|
from ...._utils import maybe_transform, async_maybe_transform
|
33
35
|
from ...._compat import cached_property
|
34
|
-
from ....types.v1 import
|
36
|
+
from ....types.v1 import (
|
37
|
+
material_list_params,
|
38
|
+
material_create_params,
|
39
|
+
material_search_params,
|
40
|
+
material_get_download_url_params,
|
41
|
+
)
|
35
42
|
from ...._resource import SyncAPIResource, AsyncAPIResource
|
36
43
|
from ...._response import (
|
37
44
|
to_raw_response_wrapper,
|
@@ -418,6 +425,10 @@ class MaterialsResource(SyncAPIResource):
|
|
418
425
|
def search(
|
419
426
|
self,
|
420
427
|
*,
|
428
|
+
query: str,
|
429
|
+
folder_ids: List[str] | NotGiven = NOT_GIVEN,
|
430
|
+
material_ids: List[str] | NotGiven = NOT_GIVEN,
|
431
|
+
top_k: float | NotGiven = NOT_GIVEN,
|
421
432
|
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
422
433
|
# The extra values given here take precedence over values defined on the client or passed to this method.
|
423
434
|
extra_headers: Headers | None = None,
|
@@ -425,9 +436,39 @@ class MaterialsResource(SyncAPIResource):
|
|
425
436
|
extra_body: Body | None = None,
|
426
437
|
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
|
427
438
|
) -> None:
|
439
|
+
"""
|
440
|
+
Search materials using RAG
|
441
|
+
|
442
|
+
Args:
|
443
|
+
query: Search query
|
444
|
+
|
445
|
+
folder_ids: Optional: Limit search to materials within specific folders (includes
|
446
|
+
subfolders)
|
447
|
+
|
448
|
+
material_ids: Optional: Limit search to specific material IDs
|
449
|
+
|
450
|
+
top_k: Number of results to return (default: 5)
|
451
|
+
|
452
|
+
extra_headers: Send extra headers
|
453
|
+
|
454
|
+
extra_query: Add additional query parameters to the request
|
455
|
+
|
456
|
+
extra_body: Add additional JSON properties to the request
|
457
|
+
|
458
|
+
timeout: Override the client-level default timeout for this request, in seconds
|
459
|
+
"""
|
428
460
|
extra_headers = {"Accept": "*/*", **(extra_headers or {})}
|
429
461
|
return self._post(
|
430
462
|
"/api/v1/materials/search",
|
463
|
+
body=maybe_transform(
|
464
|
+
{
|
465
|
+
"query": query,
|
466
|
+
"folder_ids": folder_ids,
|
467
|
+
"material_ids": material_ids,
|
468
|
+
"top_k": top_k,
|
469
|
+
},
|
470
|
+
material_search_params.MaterialSearchParams,
|
471
|
+
),
|
431
472
|
options=make_request_options(
|
432
473
|
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
433
474
|
),
|
@@ -807,6 +848,10 @@ class AsyncMaterialsResource(AsyncAPIResource):
|
|
807
848
|
async def search(
|
808
849
|
self,
|
809
850
|
*,
|
851
|
+
query: str,
|
852
|
+
folder_ids: List[str] | NotGiven = NOT_GIVEN,
|
853
|
+
material_ids: List[str] | NotGiven = NOT_GIVEN,
|
854
|
+
top_k: float | NotGiven = NOT_GIVEN,
|
810
855
|
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
811
856
|
# The extra values given here take precedence over values defined on the client or passed to this method.
|
812
857
|
extra_headers: Headers | None = None,
|
@@ -814,9 +859,39 @@ class AsyncMaterialsResource(AsyncAPIResource):
|
|
814
859
|
extra_body: Body | None = None,
|
815
860
|
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
|
816
861
|
) -> None:
|
862
|
+
"""
|
863
|
+
Search materials using RAG
|
864
|
+
|
865
|
+
Args:
|
866
|
+
query: Search query
|
867
|
+
|
868
|
+
folder_ids: Optional: Limit search to materials within specific folders (includes
|
869
|
+
subfolders)
|
870
|
+
|
871
|
+
material_ids: Optional: Limit search to specific material IDs
|
872
|
+
|
873
|
+
top_k: Number of results to return (default: 5)
|
874
|
+
|
875
|
+
extra_headers: Send extra headers
|
876
|
+
|
877
|
+
extra_query: Add additional query parameters to the request
|
878
|
+
|
879
|
+
extra_body: Add additional JSON properties to the request
|
880
|
+
|
881
|
+
timeout: Override the client-level default timeout for this request, in seconds
|
882
|
+
"""
|
817
883
|
extra_headers = {"Accept": "*/*", **(extra_headers or {})}
|
818
884
|
return await self._post(
|
819
885
|
"/api/v1/materials/search",
|
886
|
+
body=await async_maybe_transform(
|
887
|
+
{
|
888
|
+
"query": query,
|
889
|
+
"folder_ids": folder_ids,
|
890
|
+
"material_ids": material_ids,
|
891
|
+
"top_k": top_k,
|
892
|
+
},
|
893
|
+
material_search_params.MaterialSearchParams,
|
894
|
+
),
|
820
895
|
options=make_request_options(
|
821
896
|
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
822
897
|
),
|
@@ -2,9 +2,12 @@
|
|
2
2
|
|
3
3
|
from __future__ import annotations
|
4
4
|
|
5
|
+
from typing import Mapping, cast
|
6
|
+
|
5
7
|
import httpx
|
6
8
|
|
7
|
-
from ...._types import NOT_GIVEN, Body, Query, Headers,
|
9
|
+
from ...._types import NOT_GIVEN, Body, Query, Headers, NotGiven, FileTypes
|
10
|
+
from ...._utils import extract_files, maybe_transform, deepcopy_minimal, async_maybe_transform
|
8
11
|
from ...._compat import cached_property
|
9
12
|
from ...._resource import SyncAPIResource, AsyncAPIResource
|
10
13
|
from ...._response import (
|
@@ -14,6 +17,16 @@ from ...._response import (
|
|
14
17
|
async_to_streamed_response_wrapper,
|
15
18
|
)
|
16
19
|
from ...._base_client import make_request_options
|
20
|
+
from ....types.v1.upload import (
|
21
|
+
component_upload_url_params,
|
22
|
+
component_upload_file_params,
|
23
|
+
component_complete_upload_params,
|
24
|
+
component_get_presigned_url_params,
|
25
|
+
)
|
26
|
+
from ....types.v1.upload.component_upload_url_response import ComponentUploadURLResponse
|
27
|
+
from ....types.v1.upload.component_upload_file_response import ComponentUploadFileResponse
|
28
|
+
from ....types.v1.upload.component_complete_upload_response import ComponentCompleteUploadResponse
|
29
|
+
from ....types.v1.upload.component_get_presigned_url_response import ComponentGetPresignedURLResponse
|
17
30
|
|
18
31
|
__all__ = ["ComponentResource", "AsyncComponentResource"]
|
19
32
|
|
@@ -42,15 +55,26 @@ class ComponentResource(SyncAPIResource):
|
|
42
55
|
self,
|
43
56
|
component_id: str,
|
44
57
|
*,
|
58
|
+
material_id: str,
|
59
|
+
organization_id: str,
|
60
|
+
s3_key: str,
|
45
61
|
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
46
62
|
# The extra values given here take precedence over values defined on the client or passed to this method.
|
47
63
|
extra_headers: Headers | None = None,
|
48
64
|
extra_query: Query | None = None,
|
49
65
|
extra_body: Body | None = None,
|
50
66
|
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
|
51
|
-
) ->
|
67
|
+
) -> ComponentCompleteUploadResponse:
|
52
68
|
"""
|
69
|
+
Complete a file upload after using presigned URL
|
70
|
+
|
53
71
|
Args:
|
72
|
+
material_id: The ID of the material that was uploaded
|
73
|
+
|
74
|
+
organization_id: The ID of the organization
|
75
|
+
|
76
|
+
s3_key: The S3 key of the uploaded file
|
77
|
+
|
54
78
|
extra_headers: Send extra headers
|
55
79
|
|
56
80
|
extra_query: Add additional query parameters to the request
|
@@ -61,28 +85,49 @@ class ComponentResource(SyncAPIResource):
|
|
61
85
|
"""
|
62
86
|
if not component_id:
|
63
87
|
raise ValueError(f"Expected a non-empty value for `component_id` but received {component_id!r}")
|
64
|
-
extra_headers = {"Accept": "*/*", **(extra_headers or {})}
|
65
88
|
return self._post(
|
66
89
|
f"/api/v1/upload/component/{component_id}/complete",
|
90
|
+
body=maybe_transform(
|
91
|
+
{
|
92
|
+
"material_id": material_id,
|
93
|
+
"organization_id": organization_id,
|
94
|
+
"s3_key": s3_key,
|
95
|
+
},
|
96
|
+
component_complete_upload_params.ComponentCompleteUploadParams,
|
97
|
+
),
|
67
98
|
options=make_request_options(
|
68
99
|
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
69
100
|
),
|
70
|
-
cast_to=
|
101
|
+
cast_to=ComponentCompleteUploadResponse,
|
71
102
|
)
|
72
103
|
|
73
104
|
def get_presigned_url(
|
74
105
|
self,
|
75
106
|
component_id: str,
|
76
107
|
*,
|
108
|
+
content_type: str,
|
109
|
+
filename: str,
|
110
|
+
folder_id: str,
|
111
|
+
organization_id: str,
|
77
112
|
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
78
113
|
# The extra values given here take precedence over values defined on the client or passed to this method.
|
79
114
|
extra_headers: Headers | None = None,
|
80
115
|
extra_query: Query | None = None,
|
81
116
|
extra_body: Body | None = None,
|
82
117
|
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
|
83
|
-
) ->
|
118
|
+
) -> ComponentGetPresignedURLResponse:
|
84
119
|
"""
|
120
|
+
Get a presigned URL for direct file upload
|
121
|
+
|
85
122
|
Args:
|
123
|
+
content_type: The MIME type of the file
|
124
|
+
|
125
|
+
filename: The name of the file to upload
|
126
|
+
|
127
|
+
folder_id: The ID of the folder to upload to
|
128
|
+
|
129
|
+
organization_id: The ID of the organization
|
130
|
+
|
86
131
|
extra_headers: Send extra headers
|
87
132
|
|
88
133
|
extra_query: Add additional query parameters to the request
|
@@ -93,28 +138,47 @@ class ComponentResource(SyncAPIResource):
|
|
93
138
|
"""
|
94
139
|
if not component_id:
|
95
140
|
raise ValueError(f"Expected a non-empty value for `component_id` but received {component_id!r}")
|
96
|
-
extra_headers = {"Accept": "*/*", **(extra_headers or {})}
|
97
141
|
return self._post(
|
98
142
|
f"/api/v1/upload/component/{component_id}/presigned-url",
|
143
|
+
body=maybe_transform(
|
144
|
+
{
|
145
|
+
"content_type": content_type,
|
146
|
+
"filename": filename,
|
147
|
+
"folder_id": folder_id,
|
148
|
+
"organization_id": organization_id,
|
149
|
+
},
|
150
|
+
component_get_presigned_url_params.ComponentGetPresignedURLParams,
|
151
|
+
),
|
99
152
|
options=make_request_options(
|
100
153
|
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
101
154
|
),
|
102
|
-
cast_to=
|
155
|
+
cast_to=ComponentGetPresignedURLResponse,
|
103
156
|
)
|
104
157
|
|
105
158
|
def upload_file(
|
106
159
|
self,
|
107
160
|
component_id: str,
|
108
161
|
*,
|
162
|
+
file: FileTypes,
|
163
|
+
folder_id: str,
|
164
|
+
organization_id: str,
|
109
165
|
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
110
166
|
# The extra values given here take precedence over values defined on the client or passed to this method.
|
111
167
|
extra_headers: Headers | None = None,
|
112
168
|
extra_query: Query | None = None,
|
113
169
|
extra_body: Body | None = None,
|
114
170
|
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
|
115
|
-
) ->
|
171
|
+
) -> ComponentUploadFileResponse:
|
116
172
|
"""
|
173
|
+
Upload a file to a component
|
174
|
+
|
117
175
|
Args:
|
176
|
+
file: The file to upload
|
177
|
+
|
178
|
+
folder_id: The ID of the folder to upload to
|
179
|
+
|
180
|
+
organization_id: The ID of the organization
|
181
|
+
|
118
182
|
extra_headers: Send extra headers
|
119
183
|
|
120
184
|
extra_query: Add additional query parameters to the request
|
@@ -125,28 +189,55 @@ class ComponentResource(SyncAPIResource):
|
|
125
189
|
"""
|
126
190
|
if not component_id:
|
127
191
|
raise ValueError(f"Expected a non-empty value for `component_id` but received {component_id!r}")
|
128
|
-
|
192
|
+
body = deepcopy_minimal(
|
193
|
+
{
|
194
|
+
"file": file,
|
195
|
+
"folder_id": folder_id,
|
196
|
+
"organization_id": organization_id,
|
197
|
+
}
|
198
|
+
)
|
199
|
+
files = extract_files(cast(Mapping[str, object], body), paths=[["file"]])
|
200
|
+
# It should be noted that the actual Content-Type header that will be
|
201
|
+
# sent to the server will contain a `boundary` parameter, e.g.
|
202
|
+
# multipart/form-data; boundary=---abc--
|
203
|
+
extra_headers = {"Content-Type": "multipart/form-data", **(extra_headers or {})}
|
129
204
|
return self._post(
|
130
205
|
f"/api/v1/upload/component/{component_id}/file",
|
206
|
+
body=maybe_transform(body, component_upload_file_params.ComponentUploadFileParams),
|
207
|
+
files=files,
|
131
208
|
options=make_request_options(
|
132
209
|
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
133
210
|
),
|
134
|
-
cast_to=
|
211
|
+
cast_to=ComponentUploadFileResponse,
|
135
212
|
)
|
136
213
|
|
137
214
|
def upload_url(
|
138
215
|
self,
|
139
216
|
component_id: str,
|
140
217
|
*,
|
218
|
+
folder_id: str,
|
219
|
+
name: str,
|
220
|
+
organization_id: str,
|
221
|
+
url: str,
|
141
222
|
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
142
223
|
# The extra values given here take precedence over values defined on the client or passed to this method.
|
143
224
|
extra_headers: Headers | None = None,
|
144
225
|
extra_query: Query | None = None,
|
145
226
|
extra_body: Body | None = None,
|
146
227
|
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
|
147
|
-
) ->
|
228
|
+
) -> ComponentUploadURLResponse:
|
148
229
|
"""
|
230
|
+
Upload a file from URL to a component
|
231
|
+
|
149
232
|
Args:
|
233
|
+
folder_id: The ID of the folder to upload to
|
234
|
+
|
235
|
+
name: The name for the uploaded file
|
236
|
+
|
237
|
+
organization_id: The ID of the organization
|
238
|
+
|
239
|
+
url: The URL of the file to upload
|
240
|
+
|
150
241
|
extra_headers: Send extra headers
|
151
242
|
|
152
243
|
extra_query: Add additional query parameters to the request
|
@@ -157,13 +248,21 @@ class ComponentResource(SyncAPIResource):
|
|
157
248
|
"""
|
158
249
|
if not component_id:
|
159
250
|
raise ValueError(f"Expected a non-empty value for `component_id` but received {component_id!r}")
|
160
|
-
extra_headers = {"Accept": "*/*", **(extra_headers or {})}
|
161
251
|
return self._post(
|
162
252
|
f"/api/v1/upload/component/{component_id}/url",
|
253
|
+
body=maybe_transform(
|
254
|
+
{
|
255
|
+
"folder_id": folder_id,
|
256
|
+
"name": name,
|
257
|
+
"organization_id": organization_id,
|
258
|
+
"url": url,
|
259
|
+
},
|
260
|
+
component_upload_url_params.ComponentUploadURLParams,
|
261
|
+
),
|
163
262
|
options=make_request_options(
|
164
263
|
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
165
264
|
),
|
166
|
-
cast_to=
|
265
|
+
cast_to=ComponentUploadURLResponse,
|
167
266
|
)
|
168
267
|
|
169
268
|
|
@@ -191,15 +290,26 @@ class AsyncComponentResource(AsyncAPIResource):
|
|
191
290
|
self,
|
192
291
|
component_id: str,
|
193
292
|
*,
|
293
|
+
material_id: str,
|
294
|
+
organization_id: str,
|
295
|
+
s3_key: str,
|
194
296
|
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
195
297
|
# The extra values given here take precedence over values defined on the client or passed to this method.
|
196
298
|
extra_headers: Headers | None = None,
|
197
299
|
extra_query: Query | None = None,
|
198
300
|
extra_body: Body | None = None,
|
199
301
|
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
|
200
|
-
) ->
|
302
|
+
) -> ComponentCompleteUploadResponse:
|
201
303
|
"""
|
304
|
+
Complete a file upload after using presigned URL
|
305
|
+
|
202
306
|
Args:
|
307
|
+
material_id: The ID of the material that was uploaded
|
308
|
+
|
309
|
+
organization_id: The ID of the organization
|
310
|
+
|
311
|
+
s3_key: The S3 key of the uploaded file
|
312
|
+
|
203
313
|
extra_headers: Send extra headers
|
204
314
|
|
205
315
|
extra_query: Add additional query parameters to the request
|
@@ -210,28 +320,49 @@ class AsyncComponentResource(AsyncAPIResource):
|
|
210
320
|
"""
|
211
321
|
if not component_id:
|
212
322
|
raise ValueError(f"Expected a non-empty value for `component_id` but received {component_id!r}")
|
213
|
-
extra_headers = {"Accept": "*/*", **(extra_headers or {})}
|
214
323
|
return await self._post(
|
215
324
|
f"/api/v1/upload/component/{component_id}/complete",
|
325
|
+
body=await async_maybe_transform(
|
326
|
+
{
|
327
|
+
"material_id": material_id,
|
328
|
+
"organization_id": organization_id,
|
329
|
+
"s3_key": s3_key,
|
330
|
+
},
|
331
|
+
component_complete_upload_params.ComponentCompleteUploadParams,
|
332
|
+
),
|
216
333
|
options=make_request_options(
|
217
334
|
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
218
335
|
),
|
219
|
-
cast_to=
|
336
|
+
cast_to=ComponentCompleteUploadResponse,
|
220
337
|
)
|
221
338
|
|
222
339
|
async def get_presigned_url(
|
223
340
|
self,
|
224
341
|
component_id: str,
|
225
342
|
*,
|
343
|
+
content_type: str,
|
344
|
+
filename: str,
|
345
|
+
folder_id: str,
|
346
|
+
organization_id: str,
|
226
347
|
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
227
348
|
# The extra values given here take precedence over values defined on the client or passed to this method.
|
228
349
|
extra_headers: Headers | None = None,
|
229
350
|
extra_query: Query | None = None,
|
230
351
|
extra_body: Body | None = None,
|
231
352
|
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
|
232
|
-
) ->
|
353
|
+
) -> ComponentGetPresignedURLResponse:
|
233
354
|
"""
|
355
|
+
Get a presigned URL for direct file upload
|
356
|
+
|
234
357
|
Args:
|
358
|
+
content_type: The MIME type of the file
|
359
|
+
|
360
|
+
filename: The name of the file to upload
|
361
|
+
|
362
|
+
folder_id: The ID of the folder to upload to
|
363
|
+
|
364
|
+
organization_id: The ID of the organization
|
365
|
+
|
235
366
|
extra_headers: Send extra headers
|
236
367
|
|
237
368
|
extra_query: Add additional query parameters to the request
|
@@ -242,28 +373,47 @@ class AsyncComponentResource(AsyncAPIResource):
|
|
242
373
|
"""
|
243
374
|
if not component_id:
|
244
375
|
raise ValueError(f"Expected a non-empty value for `component_id` but received {component_id!r}")
|
245
|
-
extra_headers = {"Accept": "*/*", **(extra_headers or {})}
|
246
376
|
return await self._post(
|
247
377
|
f"/api/v1/upload/component/{component_id}/presigned-url",
|
378
|
+
body=await async_maybe_transform(
|
379
|
+
{
|
380
|
+
"content_type": content_type,
|
381
|
+
"filename": filename,
|
382
|
+
"folder_id": folder_id,
|
383
|
+
"organization_id": organization_id,
|
384
|
+
},
|
385
|
+
component_get_presigned_url_params.ComponentGetPresignedURLParams,
|
386
|
+
),
|
248
387
|
options=make_request_options(
|
249
388
|
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
250
389
|
),
|
251
|
-
cast_to=
|
390
|
+
cast_to=ComponentGetPresignedURLResponse,
|
252
391
|
)
|
253
392
|
|
254
393
|
async def upload_file(
|
255
394
|
self,
|
256
395
|
component_id: str,
|
257
396
|
*,
|
397
|
+
file: FileTypes,
|
398
|
+
folder_id: str,
|
399
|
+
organization_id: str,
|
258
400
|
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
259
401
|
# The extra values given here take precedence over values defined on the client or passed to this method.
|
260
402
|
extra_headers: Headers | None = None,
|
261
403
|
extra_query: Query | None = None,
|
262
404
|
extra_body: Body | None = None,
|
263
405
|
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
|
264
|
-
) ->
|
406
|
+
) -> ComponentUploadFileResponse:
|
265
407
|
"""
|
408
|
+
Upload a file to a component
|
409
|
+
|
266
410
|
Args:
|
411
|
+
file: The file to upload
|
412
|
+
|
413
|
+
folder_id: The ID of the folder to upload to
|
414
|
+
|
415
|
+
organization_id: The ID of the organization
|
416
|
+
|
267
417
|
extra_headers: Send extra headers
|
268
418
|
|
269
419
|
extra_query: Add additional query parameters to the request
|
@@ -274,28 +424,55 @@ class AsyncComponentResource(AsyncAPIResource):
|
|
274
424
|
"""
|
275
425
|
if not component_id:
|
276
426
|
raise ValueError(f"Expected a non-empty value for `component_id` but received {component_id!r}")
|
277
|
-
|
427
|
+
body = deepcopy_minimal(
|
428
|
+
{
|
429
|
+
"file": file,
|
430
|
+
"folder_id": folder_id,
|
431
|
+
"organization_id": organization_id,
|
432
|
+
}
|
433
|
+
)
|
434
|
+
files = extract_files(cast(Mapping[str, object], body), paths=[["file"]])
|
435
|
+
# It should be noted that the actual Content-Type header that will be
|
436
|
+
# sent to the server will contain a `boundary` parameter, e.g.
|
437
|
+
# multipart/form-data; boundary=---abc--
|
438
|
+
extra_headers = {"Content-Type": "multipart/form-data", **(extra_headers or {})}
|
278
439
|
return await self._post(
|
279
440
|
f"/api/v1/upload/component/{component_id}/file",
|
441
|
+
body=await async_maybe_transform(body, component_upload_file_params.ComponentUploadFileParams),
|
442
|
+
files=files,
|
280
443
|
options=make_request_options(
|
281
444
|
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
282
445
|
),
|
283
|
-
cast_to=
|
446
|
+
cast_to=ComponentUploadFileResponse,
|
284
447
|
)
|
285
448
|
|
286
449
|
async def upload_url(
|
287
450
|
self,
|
288
451
|
component_id: str,
|
289
452
|
*,
|
453
|
+
folder_id: str,
|
454
|
+
name: str,
|
455
|
+
organization_id: str,
|
456
|
+
url: str,
|
290
457
|
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
291
458
|
# The extra values given here take precedence over values defined on the client or passed to this method.
|
292
459
|
extra_headers: Headers | None = None,
|
293
460
|
extra_query: Query | None = None,
|
294
461
|
extra_body: Body | None = None,
|
295
462
|
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
|
296
|
-
) ->
|
463
|
+
) -> ComponentUploadURLResponse:
|
297
464
|
"""
|
465
|
+
Upload a file from URL to a component
|
466
|
+
|
298
467
|
Args:
|
468
|
+
folder_id: The ID of the folder to upload to
|
469
|
+
|
470
|
+
name: The name for the uploaded file
|
471
|
+
|
472
|
+
organization_id: The ID of the organization
|
473
|
+
|
474
|
+
url: The URL of the file to upload
|
475
|
+
|
299
476
|
extra_headers: Send extra headers
|
300
477
|
|
301
478
|
extra_query: Add additional query parameters to the request
|
@@ -306,13 +483,21 @@ class AsyncComponentResource(AsyncAPIResource):
|
|
306
483
|
"""
|
307
484
|
if not component_id:
|
308
485
|
raise ValueError(f"Expected a non-empty value for `component_id` but received {component_id!r}")
|
309
|
-
extra_headers = {"Accept": "*/*", **(extra_headers or {})}
|
310
486
|
return await self._post(
|
311
487
|
f"/api/v1/upload/component/{component_id}/url",
|
488
|
+
body=await async_maybe_transform(
|
489
|
+
{
|
490
|
+
"folder_id": folder_id,
|
491
|
+
"name": name,
|
492
|
+
"organization_id": organization_id,
|
493
|
+
"url": url,
|
494
|
+
},
|
495
|
+
component_upload_url_params.ComponentUploadURLParams,
|
496
|
+
),
|
312
497
|
options=make_request_options(
|
313
498
|
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
314
499
|
),
|
315
|
-
cast_to=
|
500
|
+
cast_to=ComponentUploadURLResponse,
|
316
501
|
)
|
317
502
|
|
318
503
|
|
@@ -18,6 +18,7 @@ from .flashcard_rate_params import FlashcardRateParams as FlashcardRateParams
|
|
18
18
|
from .embed_get_theme_params import EmbedGetThemeParams as EmbedGetThemeParams
|
19
19
|
from .material_create_params import MaterialCreateParams as MaterialCreateParams
|
20
20
|
from .material_list_response import MaterialListResponse as MaterialListResponse
|
21
|
+
from .material_search_params import MaterialSearchParams as MaterialSearchParams
|
21
22
|
from .scenario_create_params import ScenarioCreateParams as ScenarioCreateParams
|
22
23
|
from .scenario_update_params import ScenarioUpdateParams as ScenarioUpdateParams
|
23
24
|
from .usage_get_stats_params import UsageGetStatsParams as UsageGetStatsParams
|
@@ -31,9 +31,6 @@ class ComponentCreateParams(TypedDict, total=False):
|
|
31
31
|
name: Required[str]
|
32
32
|
"""Name of the component"""
|
33
33
|
|
34
|
-
origin: Required[Literal["chat", "classroom", "upload", "console", "api"]]
|
35
|
-
"""Origin of the component"""
|
36
|
-
|
37
34
|
type: Required[
|
38
35
|
Literal["chat", "flashcards", "scenarios", "practice_test", "audio_recap", "tutor_me", "explainers", "uploads"]
|
39
36
|
]
|
@@ -94,9 +91,6 @@ class ConfigFlashcardsConfigDto(TypedDict, total=False):
|
|
94
91
|
difficulty: Literal["easy", "medium", "hard", "mixed"]
|
95
92
|
"""Difficulty level"""
|
96
93
|
|
97
|
-
enable_spaced_repetition: Annotated[bool, PropertyInfo(alias="enableSpacedRepetition")]
|
98
|
-
"""Enable spaced repetition"""
|
99
|
-
|
100
94
|
folders: List[str]
|
101
95
|
"""Folder IDs"""
|
102
96
|
|
@@ -0,0 +1,27 @@
|
|
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 List
|
6
|
+
from typing_extensions import Required, Annotated, TypedDict
|
7
|
+
|
8
|
+
from ..._utils import PropertyInfo
|
9
|
+
|
10
|
+
__all__ = ["MaterialSearchParams"]
|
11
|
+
|
12
|
+
|
13
|
+
class MaterialSearchParams(TypedDict, total=False):
|
14
|
+
query: Required[str]
|
15
|
+
"""Search query"""
|
16
|
+
|
17
|
+
folder_ids: Annotated[List[str], PropertyInfo(alias="folderIds")]
|
18
|
+
"""
|
19
|
+
Optional: Limit search to materials within specific folders (includes
|
20
|
+
subfolders)
|
21
|
+
"""
|
22
|
+
|
23
|
+
material_ids: Annotated[List[str], PropertyInfo(alias="materialIds")]
|
24
|
+
"""Optional: Limit search to specific material IDs"""
|
25
|
+
|
26
|
+
top_k: Annotated[float, PropertyInfo(alias="topK")]
|
27
|
+
"""Number of results to return (default: 5)"""
|
@@ -1,3 +1,12 @@
|
|
1
1
|
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
2
2
|
|
3
3
|
from __future__ import annotations
|
4
|
+
|
5
|
+
from .component_upload_url_params import ComponentUploadURLParams as ComponentUploadURLParams
|
6
|
+
from .component_upload_file_params import ComponentUploadFileParams as ComponentUploadFileParams
|
7
|
+
from .component_upload_url_response import ComponentUploadURLResponse as ComponentUploadURLResponse
|
8
|
+
from .component_upload_file_response import ComponentUploadFileResponse as ComponentUploadFileResponse
|
9
|
+
from .component_complete_upload_params import ComponentCompleteUploadParams as ComponentCompleteUploadParams
|
10
|
+
from .component_complete_upload_response import ComponentCompleteUploadResponse as ComponentCompleteUploadResponse
|
11
|
+
from .component_get_presigned_url_params import ComponentGetPresignedURLParams as ComponentGetPresignedURLParams
|
12
|
+
from .component_get_presigned_url_response import ComponentGetPresignedURLResponse as ComponentGetPresignedURLResponse
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
2
|
+
|
3
|
+
from __future__ import annotations
|
4
|
+
|
5
|
+
from typing_extensions import Required, Annotated, TypedDict
|
6
|
+
|
7
|
+
from ...._utils import PropertyInfo
|
8
|
+
|
9
|
+
__all__ = ["ComponentCompleteUploadParams"]
|
10
|
+
|
11
|
+
|
12
|
+
class ComponentCompleteUploadParams(TypedDict, total=False):
|
13
|
+
material_id: Required[Annotated[str, PropertyInfo(alias="materialId")]]
|
14
|
+
"""The ID of the material that was uploaded"""
|
15
|
+
|
16
|
+
organization_id: Required[Annotated[str, PropertyInfo(alias="organizationId")]]
|
17
|
+
"""The ID of the organization"""
|
18
|
+
|
19
|
+
s3_key: Required[Annotated[str, PropertyInfo(alias="s3Key")]]
|
20
|
+
"""The S3 key of the uploaded file"""
|
@@ -0,0 +1,16 @@
|
|
1
|
+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
2
|
+
|
3
|
+
from ...._models import BaseModel
|
4
|
+
|
5
|
+
__all__ = ["ComponentCompleteUploadResponse"]
|
6
|
+
|
7
|
+
|
8
|
+
class ComponentCompleteUploadResponse(BaseModel):
|
9
|
+
id: str
|
10
|
+
"""The ID of the uploaded material"""
|
11
|
+
|
12
|
+
name: str
|
13
|
+
"""The name of the material"""
|
14
|
+
|
15
|
+
status: str
|
16
|
+
"""The status of the material"""
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
2
|
+
|
3
|
+
from __future__ import annotations
|
4
|
+
|
5
|
+
from typing_extensions import Required, Annotated, TypedDict
|
6
|
+
|
7
|
+
from ...._utils import PropertyInfo
|
8
|
+
|
9
|
+
__all__ = ["ComponentGetPresignedURLParams"]
|
10
|
+
|
11
|
+
|
12
|
+
class ComponentGetPresignedURLParams(TypedDict, total=False):
|
13
|
+
content_type: Required[Annotated[str, PropertyInfo(alias="contentType")]]
|
14
|
+
"""The MIME type of the file"""
|
15
|
+
|
16
|
+
filename: Required[str]
|
17
|
+
"""The name of the file to upload"""
|
18
|
+
|
19
|
+
folder_id: Required[Annotated[str, PropertyInfo(alias="folderId")]]
|
20
|
+
"""The ID of the folder to upload to"""
|
21
|
+
|
22
|
+
organization_id: Required[Annotated[str, PropertyInfo(alias="organizationId")]]
|
23
|
+
"""The ID of the organization"""
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
2
|
+
|
3
|
+
from pydantic import Field as FieldInfo
|
4
|
+
|
5
|
+
from ...._models import BaseModel
|
6
|
+
|
7
|
+
__all__ = ["ComponentGetPresignedURLResponse"]
|
8
|
+
|
9
|
+
|
10
|
+
class ComponentGetPresignedURLResponse(BaseModel):
|
11
|
+
key: str
|
12
|
+
"""The S3 key for the file"""
|
13
|
+
|
14
|
+
upload_url: str = FieldInfo(alias="uploadUrl")
|
15
|
+
"""The presigned URL for uploading"""
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
2
|
+
|
3
|
+
from __future__ import annotations
|
4
|
+
|
5
|
+
from typing_extensions import Required, Annotated, TypedDict
|
6
|
+
|
7
|
+
from ...._types import FileTypes
|
8
|
+
from ...._utils import PropertyInfo
|
9
|
+
|
10
|
+
__all__ = ["ComponentUploadFileParams"]
|
11
|
+
|
12
|
+
|
13
|
+
class ComponentUploadFileParams(TypedDict, total=False):
|
14
|
+
file: Required[FileTypes]
|
15
|
+
"""The file to upload"""
|
16
|
+
|
17
|
+
folder_id: Required[Annotated[str, PropertyInfo(alias="folderId")]]
|
18
|
+
"""The ID of the folder to upload to"""
|
19
|
+
|
20
|
+
organization_id: Required[Annotated[str, PropertyInfo(alias="organizationId")]]
|
21
|
+
"""The ID of the organization"""
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
2
|
+
|
3
|
+
from pydantic import Field as FieldInfo
|
4
|
+
|
5
|
+
from ...._models import BaseModel
|
6
|
+
|
7
|
+
__all__ = ["ComponentUploadFileResponse"]
|
8
|
+
|
9
|
+
|
10
|
+
class ComponentUploadFileResponse(BaseModel):
|
11
|
+
id: str
|
12
|
+
"""The ID of the uploaded material"""
|
13
|
+
|
14
|
+
content_type: str = FieldInfo(alias="contentType")
|
15
|
+
"""The content type of the material"""
|
16
|
+
|
17
|
+
name: str
|
18
|
+
"""The name of the material"""
|
19
|
+
|
20
|
+
s3_key: str = FieldInfo(alias="s3Key")
|
21
|
+
"""The S3 key of the uploaded file"""
|
22
|
+
|
23
|
+
status: str
|
24
|
+
"""The status of the material"""
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
2
|
+
|
3
|
+
from __future__ import annotations
|
4
|
+
|
5
|
+
from typing_extensions import Required, Annotated, TypedDict
|
6
|
+
|
7
|
+
from ...._utils import PropertyInfo
|
8
|
+
|
9
|
+
__all__ = ["ComponentUploadURLParams"]
|
10
|
+
|
11
|
+
|
12
|
+
class ComponentUploadURLParams(TypedDict, total=False):
|
13
|
+
folder_id: Required[Annotated[str, PropertyInfo(alias="folderId")]]
|
14
|
+
"""The ID of the folder to upload to"""
|
15
|
+
|
16
|
+
name: Required[str]
|
17
|
+
"""The name for the uploaded file"""
|
18
|
+
|
19
|
+
organization_id: Required[Annotated[str, PropertyInfo(alias="organizationId")]]
|
20
|
+
"""The ID of the organization"""
|
21
|
+
|
22
|
+
url: Required[str]
|
23
|
+
"""The URL of the file to upload"""
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
2
|
+
|
3
|
+
from pydantic import Field as FieldInfo
|
4
|
+
|
5
|
+
from ...._models import BaseModel
|
6
|
+
|
7
|
+
__all__ = ["ComponentUploadURLResponse"]
|
8
|
+
|
9
|
+
|
10
|
+
class ComponentUploadURLResponse(BaseModel):
|
11
|
+
id: str
|
12
|
+
"""The ID of the uploaded material"""
|
13
|
+
|
14
|
+
content_type: str = FieldInfo(alias="contentType")
|
15
|
+
"""The content type of the material"""
|
16
|
+
|
17
|
+
name: str
|
18
|
+
"""The name of the material"""
|
19
|
+
|
20
|
+
s3_key: str = FieldInfo(alias="s3Key")
|
21
|
+
"""The S3 key of the uploaded file"""
|
22
|
+
|
23
|
+
status: str
|
24
|
+
"""The status of the material"""
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.3
|
2
2
|
Name: studyfetch_sdk
|
3
|
-
Version: 0.1.
|
3
|
+
Version: 0.1.0a16
|
4
4
|
Summary: The official Python library for the studyfetch-sdk API
|
5
5
|
Project-URL: Homepage, https://github.com/GoStudyFetchGo/studyfetch-sdk-python
|
6
6
|
Project-URL: Repository, https://github.com/GoStudyFetchGo/studyfetch-sdk-python
|
@@ -11,7 +11,7 @@ studyfetch_sdk/_resource.py,sha256=y0aoAqMIYwTAwStuxbpO8XpTPnrSNQQ_ZcgiH5xcntg,1
|
|
11
11
|
studyfetch_sdk/_response.py,sha256=6ph8tSkqF5pNbTo_2Zhizhq2O-Eb67TcksHwyg3aXdc,28864
|
12
12
|
studyfetch_sdk/_streaming.py,sha256=HZoENuPVzWhBn24eH3lnMCvRbWN0EPwvhWYfdlJfw0A,10128
|
13
13
|
studyfetch_sdk/_types.py,sha256=6nvqHGarRGuhs_FL8tJ8sGXXD8XWajNynT2K78GxRUI,6205
|
14
|
-
studyfetch_sdk/_version.py,sha256=
|
14
|
+
studyfetch_sdk/_version.py,sha256=YHFYJd0dBpxqU2_Bn1ubUnUsfR7WQTD3ZpuR4UDyX1k,175
|
15
15
|
studyfetch_sdk/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
16
16
|
studyfetch_sdk/_utils/__init__.py,sha256=PNZ_QJuzZEgyYXqkO1HVhGkj5IU9bglVUcw7H-Knjzw,2062
|
17
17
|
studyfetch_sdk/_utils/_logs.py,sha256=EoZgOiIkpf2WB_0Ts0Ti7G3o_25v7IsPf_q-yEU6sbY,798
|
@@ -27,7 +27,7 @@ studyfetch_sdk/lib/.keep,sha256=wuNrz-5SXo3jJaJOJgz4vFHM41YH_g20F5cRQo0vLes,224
|
|
27
27
|
studyfetch_sdk/resources/__init__.py,sha256=TSJ6b8GNHShyK5w7efHV93u1bY2jYVySQRa2zKc1dKM,500
|
28
28
|
studyfetch_sdk/resources/v1/__init__.py,sha256=qxWo4pd2dhmbovxcvRakku86rsvbGMXDISPSEs8qc_s,6729
|
29
29
|
studyfetch_sdk/resources/v1/assignment_grader.py,sha256=6jUl0kFBR90J5rkqa6bLf07EaiFDcXN1DvbUxFjUSs8,13243
|
30
|
-
studyfetch_sdk/resources/v1/components.py,sha256=
|
30
|
+
studyfetch_sdk/resources/v1/components.py,sha256=bPVp1Z1uZPco7ZHN7ulduuV4lhXfIHnnvj_lzGDr9vI,35125
|
31
31
|
studyfetch_sdk/resources/v1/explainers.py,sha256=W5Kq3Gpwqw3kBy9v-qpV5FKxH1HAm5_yk1NgACM-Mec,16047
|
32
32
|
studyfetch_sdk/resources/v1/flashcards.py,sha256=_-zZUd8Ja9k2895cxLJsLbN73ZTIrkJaComGCSMkbCk,29242
|
33
33
|
studyfetch_sdk/resources/v1/folders.py,sha256=o43HhcVhqF3t7xWMFFNIiMPElhoqkXtaCTVjEE5s5so,27436
|
@@ -44,7 +44,7 @@ studyfetch_sdk/resources/v1/embed/component.py,sha256=vFArqNnLaCGiHAKt4dhF3IBE95
|
|
44
44
|
studyfetch_sdk/resources/v1/embed/embed.py,sha256=Tbny2GdlacLtNE-TfYRqYsVNIcOmPOy16cI1IrAHLmM,12582
|
45
45
|
studyfetch_sdk/resources/v1/materials/__init__.py,sha256=tVk8p-CapS6r8iWZXSBxwA0UlQyHJQMY9FPDL_TvMfY,1889
|
46
46
|
studyfetch_sdk/resources/v1/materials/bulk.py,sha256=oVAcnbKm8NUBFJIMoj4pEHFb_l1CM7F3Ve9cTApWguo,4843
|
47
|
-
studyfetch_sdk/resources/v1/materials/materials.py,sha256=
|
47
|
+
studyfetch_sdk/resources/v1/materials/materials.py,sha256=P_KTA5L54eVljY_HtLZD4zIEScrQ6kAi9WcCFI_04-0,40800
|
48
48
|
studyfetch_sdk/resources/v1/materials/test.py,sha256=eGcjGYvPlrlZGrU6AnvZZX5qZ3aLgZgxIrNspXC1rnE,11355
|
49
49
|
studyfetch_sdk/resources/v1/materials/upload.py,sha256=vXbsicx0pVlrx3LPr7rqOkqHmzBoxFI6lIBScM29zr8,15476
|
50
50
|
studyfetch_sdk/resources/v1/scenarios/__init__.py,sha256=WrMn3vQJgHGQzWKq5SRUTMMvRd4p15Bt5JjZpHhKHZs,2071
|
@@ -58,13 +58,13 @@ studyfetch_sdk/resources/v1/tests/__init__.py,sha256=7-K6i3WJPRCoMSOatJEqUhlz74S
|
|
58
58
|
studyfetch_sdk/resources/v1/tests/component.py,sha256=MJZIo4-ES4tkY9P1FJl8phjkQxGG8FBCe99ar0I_un4,6013
|
59
59
|
studyfetch_sdk/resources/v1/tests/tests.py,sha256=BGwXClZ8YkzegN80R0WDIrvK3WN1-ujtYkfR33ARhVU,24870
|
60
60
|
studyfetch_sdk/resources/v1/upload/__init__.py,sha256=N5r6jpSMe43dezq-6RBAWLVlL3-Z76lU7DG53phDGr8,1041
|
61
|
-
studyfetch_sdk/resources/v1/upload/component.py,sha256=
|
61
|
+
studyfetch_sdk/resources/v1/upload/component.py,sha256=7lABKoQke4Ek9loVprcANTMxkPnPPjxgY-pQZsdDsd0,21979
|
62
62
|
studyfetch_sdk/resources/v1/upload/upload.py,sha256=RBkrsVi5_8qIqdYKypnSqj44ONvwW7u2XXIlpuJsKSg,3736
|
63
63
|
studyfetch_sdk/resources/v1/usage/__init__.py,sha256=zUBe7msw9tyZplhmwNkhbCfRigNQQVj4IFpod4uGWZY,1002
|
64
64
|
studyfetch_sdk/resources/v1/usage/analyst.py,sha256=BZC5QVnm6UWacrqodYFGXUodBM_b37I9jClbiXTakJo,13206
|
65
65
|
studyfetch_sdk/resources/v1/usage/usage.py,sha256=HAG7FfTIiIihB0dtbZEmluKDD0GWqKWrfLp03gcdPjU,19694
|
66
66
|
studyfetch_sdk/types/__init__.py,sha256=OKfJYcKb4NObdiRObqJV_dOyDQ8feXekDUge2o_4pXQ,122
|
67
|
-
studyfetch_sdk/types/v1/__init__.py,sha256=
|
67
|
+
studyfetch_sdk/types/v1/__init__.py,sha256=G2hSEu2NGKqUlFDRv3h2M-6AhdYOZqvNpMmNGGphgyg,3856
|
68
68
|
studyfetch_sdk/types/v1/assignment_grader_create_params.py,sha256=o-U_-0ZHJxwpL3pSEW41SmsHz-sOP490i5P8EA5A-Ws,1246
|
69
69
|
studyfetch_sdk/types/v1/assignment_grader_get_all_response.py,sha256=FidqfpFC-PX05_knGWicLerCeSqJiScW2IbzPyzBb2c,339
|
70
70
|
studyfetch_sdk/types/v1/assignment_grader_response.py,sha256=j2DKiD99EPKPcvY6k7wKXd3r9UTkEe9SMmY94rRxjgw,548
|
@@ -72,7 +72,7 @@ studyfetch_sdk/types/v1/chat_get_session_params.py,sha256=Iv3O6eF4DvTYTBVQVyVR4t
|
|
72
72
|
studyfetch_sdk/types/v1/chat_send_message_params.py,sha256=BRxjNsVXsqcBbdrp4J5TQGjjNPJ_bz7uXw3pnc-x0oU,1454
|
73
73
|
studyfetch_sdk/types/v1/chat_stream_params.py,sha256=Aqp2Vdsa35PAH-75kaO_ZYlkqGrCgDZ5EyYTTLRAJoE,695
|
74
74
|
studyfetch_sdk/types/v1/component.py,sha256=ye8BDfb0taD0WwEWJDpi4cXH0iwKqzom0SQQA1nbO4c,1166
|
75
|
-
studyfetch_sdk/types/v1/component_create_params.py,sha256=
|
75
|
+
studyfetch_sdk/types/v1/component_create_params.py,sha256=wtPCBVQScdZZuREIzmRIoMCCXoK9cVeR-NUA0qFatxo,10254
|
76
76
|
studyfetch_sdk/types/v1/component_generate_embed_params.py,sha256=keiOzDzPCvacAWHQj_OtF2pGjEAqxwjNriBGxRaRQNk,3068
|
77
77
|
studyfetch_sdk/types/v1/component_generate_embed_response.py,sha256=xhbqEpAt_Q7yzD4xjWITs_jXYUD6ElrH4aQfNEunI3Y,922
|
78
78
|
studyfetch_sdk/types/v1/component_list_params.py,sha256=R8NMK7r37CpqmbAWdbs6rEF1LigoYrE3BXksJCCdKEQ,431
|
@@ -98,6 +98,7 @@ studyfetch_sdk/types/v1/material_create_params.py,sha256=mYjnlTBvz_aInnnqO7FiNEH
|
|
98
98
|
studyfetch_sdk/types/v1/material_get_download_url_params.py,sha256=7prrB3K-E4xAWUQlaH_YBCEB7u9WHQSc9pE1NvO88Ts,400
|
99
99
|
studyfetch_sdk/types/v1/material_list_params.py,sha256=8yd556-GB4Xw-NFGshxm_Hx-nIG-MAg4dPtn-W38w3k,388
|
100
100
|
studyfetch_sdk/types/v1/material_list_response.py,sha256=mYCoEQJT6sxJd35nchrBf7BJpRHWWH1CbgZNz3QBPQg,269
|
101
|
+
studyfetch_sdk/types/v1/material_search_params.py,sha256=vawi3xfUqEn0jfj7X50dEEqpEjbhFYkwaWnXpKk7Lxs,800
|
101
102
|
studyfetch_sdk/types/v1/scenario_create_params.py,sha256=anCK913P4vYEtgY6GnxxxCxRnUazeV1H1NoyBV78sT8,1281
|
102
103
|
studyfetch_sdk/types/v1/scenario_submit_answer_params.py,sha256=g1idbU9OxRC_qrU7bOVNuFcXtKa2ZiJgy7KBR2mJWSM,597
|
103
104
|
studyfetch_sdk/types/v1/scenario_update_params.py,sha256=F83xky9wzolK2VmTkTUqfrNwXB-h-H__8YYy7oXLz8A,1168
|
@@ -121,10 +122,18 @@ studyfetch_sdk/types/v1/scenarios/__init__.py,sha256=2DyrawNlb-TstNKw0gUMlQaNSq-
|
|
121
122
|
studyfetch_sdk/types/v1/scenarios/component_update_params.py,sha256=0wsa-_gN17TKmvhQBbCIQmN2gSEuCq2HBWjQaTqhFdk,1171
|
122
123
|
studyfetch_sdk/types/v1/scenarios/submissions/__init__.py,sha256=OKfJYcKb4NObdiRObqJV_dOyDQ8feXekDUge2o_4pXQ,122
|
123
124
|
studyfetch_sdk/types/v1/tests/__init__.py,sha256=OKfJYcKb4NObdiRObqJV_dOyDQ8feXekDUge2o_4pXQ,122
|
124
|
-
studyfetch_sdk/types/v1/upload/__init__.py,sha256=
|
125
|
+
studyfetch_sdk/types/v1/upload/__init__.py,sha256=G-KdJ3sJGH9LAfnOaGCZA9myrntfZmuhT3OqPOgQSM4,973
|
126
|
+
studyfetch_sdk/types/v1/upload/component_complete_upload_params.py,sha256=B3-7nCdLI4S_q0qa8NBS7gNwL0F8ljYVvEbo9fwCkXQ,687
|
127
|
+
studyfetch_sdk/types/v1/upload/component_complete_upload_response.py,sha256=fOWcCnkzzLlYtwKjmdh4X4hlGVOKUNDA1DmnM5jb1ao,378
|
128
|
+
studyfetch_sdk/types/v1/upload/component_get_presigned_url_params.py,sha256=dTGFn9zyOY9z3NNdPw732L3Ln7D1GKA3S8xB3FBPb7c,754
|
129
|
+
studyfetch_sdk/types/v1/upload/component_get_presigned_url_response.py,sha256=RDHDy3IO_qjtnfLHJQ2CX2_uG6_BJI-vwgQk2UJ-aE8,404
|
130
|
+
studyfetch_sdk/types/v1/upload/component_upload_file_params.py,sha256=UTv4EMrj7_hXa-PU68PMEyXn-bnhxcC0V0qO0JN5W-I,652
|
131
|
+
studyfetch_sdk/types/v1/upload/component_upload_file_response.py,sha256=3aMMe3Q2tRiZkdhhbtolqhW7O0jxj5ln3OofgbeXm2U,596
|
132
|
+
studyfetch_sdk/types/v1/upload/component_upload_url_params.py,sha256=3wXvto5WWzLYCu0EfQAWQgM73OmbRGhTwe6UnkMW0gM,687
|
133
|
+
studyfetch_sdk/types/v1/upload/component_upload_url_response.py,sha256=S0eyja9wnBzce70CN-WCHd_8CdNRcygub_ZMAkyG2a0,594
|
125
134
|
studyfetch_sdk/types/v1/usage/__init__.py,sha256=W93APDYogn9YlFksS696VpAlz_P7W8mt5wfduXWtoVY,214
|
126
135
|
studyfetch_sdk/types/v1/usage/analyst_list_events_params.py,sha256=5ylEgFOsxQ0HNLfyTktNvZx-VuWJHV06HMIfiNnVNHo,1562
|
127
|
-
studyfetch_sdk-0.1.
|
128
|
-
studyfetch_sdk-0.1.
|
129
|
-
studyfetch_sdk-0.1.
|
130
|
-
studyfetch_sdk-0.1.
|
136
|
+
studyfetch_sdk-0.1.0a16.dist-info/METADATA,sha256=BYLFe3-gJTlF4p9lzo2-9TEaibxZulb7RiIlIBakQco,15518
|
137
|
+
studyfetch_sdk-0.1.0a16.dist-info/WHEEL,sha256=C2FUgwZgiLbznR-k0b_5k3Ai_1aASOXDss3lzCUsUug,87
|
138
|
+
studyfetch_sdk-0.1.0a16.dist-info/licenses/LICENSE,sha256=CsdbJMegH_AAWljUmVcwW0Cj_GyIm1hjw6qPqPnmdn4,11344
|
139
|
+
studyfetch_sdk-0.1.0a16.dist-info/RECORD,,
|
File without changes
|
File without changes
|