usecortex-ai 0.1.0__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 (89) hide show
  1. cortex_ai/__init__.py +103 -0
  2. cortex_ai/client.py +244 -0
  3. cortex_ai/core/__init__.py +52 -0
  4. cortex_ai/core/api_error.py +23 -0
  5. cortex_ai/core/client_wrapper.py +84 -0
  6. cortex_ai/core/datetime_utils.py +28 -0
  7. cortex_ai/core/file.py +67 -0
  8. cortex_ai/core/force_multipart.py +18 -0
  9. cortex_ai/core/http_client.py +543 -0
  10. cortex_ai/core/http_response.py +55 -0
  11. cortex_ai/core/jsonable_encoder.py +100 -0
  12. cortex_ai/core/pydantic_utilities.py +258 -0
  13. cortex_ai/core/query_encoder.py +58 -0
  14. cortex_ai/core/remove_none_from_dict.py +11 -0
  15. cortex_ai/core/request_options.py +35 -0
  16. cortex_ai/core/serialization.py +276 -0
  17. cortex_ai/embeddings/__init__.py +4 -0
  18. cortex_ai/embeddings/client.py +442 -0
  19. cortex_ai/embeddings/raw_client.py +1153 -0
  20. cortex_ai/environment.py +7 -0
  21. cortex_ai/errors/__init__.py +21 -0
  22. cortex_ai/errors/bad_request_error.py +11 -0
  23. cortex_ai/errors/forbidden_error.py +11 -0
  24. cortex_ai/errors/internal_server_error.py +11 -0
  25. cortex_ai/errors/not_found_error.py +11 -0
  26. cortex_ai/errors/service_unavailable_error.py +11 -0
  27. cortex_ai/errors/unauthorized_error.py +11 -0
  28. cortex_ai/errors/unprocessable_entity_error.py +10 -0
  29. cortex_ai/fetch/__init__.py +4 -0
  30. cortex_ai/fetch/client.py +143 -0
  31. cortex_ai/fetch/raw_client.py +310 -0
  32. cortex_ai/raw_client.py +90 -0
  33. cortex_ai/search/__init__.py +7 -0
  34. cortex_ai/search/client.py +536 -0
  35. cortex_ai/search/raw_client.py +1064 -0
  36. cortex_ai/search/types/__init__.py +7 -0
  37. cortex_ai/search/types/alpha.py +5 -0
  38. cortex_ai/sources/__init__.py +4 -0
  39. cortex_ai/sources/client.py +187 -0
  40. cortex_ai/sources/raw_client.py +532 -0
  41. cortex_ai/tenant/__init__.py +4 -0
  42. cortex_ai/tenant/client.py +120 -0
  43. cortex_ai/tenant/raw_client.py +283 -0
  44. cortex_ai/types/__init__.py +69 -0
  45. cortex_ai/types/actual_error_response.py +20 -0
  46. cortex_ai/types/app_sources_upload_data.py +22 -0
  47. cortex_ai/types/attachment_model.py +26 -0
  48. cortex_ai/types/batch_upload_data.py +22 -0
  49. cortex_ai/types/bm_25_operator_type.py +5 -0
  50. cortex_ai/types/content_model.py +26 -0
  51. cortex_ai/types/delete_memory_request.py +21 -0
  52. cortex_ai/types/embeddings_create_collection_data.py +22 -0
  53. cortex_ai/types/embeddings_delete_data.py +22 -0
  54. cortex_ai/types/embeddings_get_data.py +22 -0
  55. cortex_ai/types/embeddings_search_data.py +22 -0
  56. cortex_ai/types/error_response.py +22 -0
  57. cortex_ai/types/extended_context.py +20 -0
  58. cortex_ai/types/fetch_content_data.py +23 -0
  59. cortex_ai/types/file_upload_result.py +20 -0
  60. cortex_ai/types/full_text_search_data.py +22 -0
  61. cortex_ai/types/http_validation_error.py +20 -0
  62. cortex_ai/types/list_sources_response.py +22 -0
  63. cortex_ai/types/markdown_upload_request.py +21 -0
  64. cortex_ai/types/processing_status.py +22 -0
  65. cortex_ai/types/related_chunk.py +22 -0
  66. cortex_ai/types/search_chunk.py +34 -0
  67. cortex_ai/types/search_data.py +22 -0
  68. cortex_ai/types/single_upload_data.py +21 -0
  69. cortex_ai/types/source.py +32 -0
  70. cortex_ai/types/source_content.py +26 -0
  71. cortex_ai/types/source_model.py +32 -0
  72. cortex_ai/types/tenant_create_data.py +22 -0
  73. cortex_ai/types/tenant_stats.py +23 -0
  74. cortex_ai/types/validation_error.py +22 -0
  75. cortex_ai/types/validation_error_loc_item.py +5 -0
  76. cortex_ai/upload/__init__.py +4 -0
  77. cortex_ai/upload/client.py +1572 -0
  78. cortex_ai/upload/raw_client.py +4202 -0
  79. cortex_ai/user/__init__.py +4 -0
  80. cortex_ai/user/client.py +125 -0
  81. cortex_ai/user/raw_client.py +300 -0
  82. cortex_ai/user_memory/__init__.py +4 -0
  83. cortex_ai/user_memory/client.py +443 -0
  84. cortex_ai/user_memory/raw_client.py +651 -0
  85. usecortex_ai-0.1.0.dist-info/METADATA +136 -0
  86. usecortex_ai-0.1.0.dist-info/RECORD +89 -0
  87. usecortex_ai-0.1.0.dist-info/WHEEL +5 -0
  88. usecortex_ai-0.1.0.dist-info/licenses/LICENSE +22 -0
  89. usecortex_ai-0.1.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,4202 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+ from json.decoder import JSONDecodeError
5
+
6
+ from .. import core
7
+ from ..core.api_error import ApiError
8
+ from ..core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
9
+ from ..core.http_response import AsyncHttpResponse, HttpResponse
10
+ from ..core.pydantic_utilities import parse_obj_as
11
+ from ..core.request_options import RequestOptions
12
+ from ..core.serialization import convert_and_respect_annotation_metadata
13
+ from ..errors.bad_request_error import BadRequestError
14
+ from ..errors.forbidden_error import ForbiddenError
15
+ from ..errors.internal_server_error import InternalServerError
16
+ from ..errors.not_found_error import NotFoundError
17
+ from ..errors.service_unavailable_error import ServiceUnavailableError
18
+ from ..errors.unauthorized_error import UnauthorizedError
19
+ from ..errors.unprocessable_entity_error import UnprocessableEntityError
20
+ from ..types.actual_error_response import ActualErrorResponse
21
+ from ..types.app_sources_upload_data import AppSourcesUploadData
22
+ from ..types.batch_upload_data import BatchUploadData
23
+ from ..types.processing_status import ProcessingStatus
24
+ from ..types.single_upload_data import SingleUploadData
25
+ from ..types.source_model import SourceModel
26
+
27
+ # this is used as the default value for optional parameters
28
+ OMIT = typing.cast(typing.Any, ...)
29
+
30
+
31
+ class RawUploadClient:
32
+ def __init__(self, *, client_wrapper: SyncClientWrapper):
33
+ self._client_wrapper = client_wrapper
34
+
35
+ def batch_upload(
36
+ self,
37
+ *,
38
+ tenant_id: str,
39
+ files: typing.List[core.File],
40
+ sub_tenant_id: typing.Optional[str] = None,
41
+ tenant_metadata: typing.Optional[str] = OMIT,
42
+ document_metadata: typing.Optional[str] = OMIT,
43
+ request_options: typing.Optional[RequestOptions] = None,
44
+ ) -> HttpResponse[BatchUploadData]:
45
+ """
46
+ Parameters
47
+ ----------
48
+ tenant_id : str
49
+
50
+ files : typing.List[core.File]
51
+ See core.File for more documentation
52
+
53
+ sub_tenant_id : typing.Optional[str]
54
+
55
+ tenant_metadata : typing.Optional[str]
56
+
57
+ document_metadata : typing.Optional[str]
58
+
59
+ request_options : typing.Optional[RequestOptions]
60
+ Request-specific configuration.
61
+
62
+ Returns
63
+ -------
64
+ HttpResponse[BatchUploadData]
65
+ Successful Response
66
+ """
67
+ _response = self._client_wrapper.httpx_client.request(
68
+ "upload/batch_upload",
69
+ method="POST",
70
+ params={
71
+ "tenant_id": tenant_id,
72
+ "sub_tenant_id": sub_tenant_id,
73
+ },
74
+ data={
75
+ "tenant_metadata": tenant_metadata,
76
+ "document_metadata": document_metadata,
77
+ },
78
+ files={
79
+ "files": files,
80
+ },
81
+ request_options=request_options,
82
+ omit=OMIT,
83
+ force_multipart=True,
84
+ )
85
+ try:
86
+ if 200 <= _response.status_code < 300:
87
+ _data = typing.cast(
88
+ BatchUploadData,
89
+ parse_obj_as(
90
+ type_=BatchUploadData, # type: ignore
91
+ object_=_response.json(),
92
+ ),
93
+ )
94
+ return HttpResponse(response=_response, data=_data)
95
+ if _response.status_code == 400:
96
+ raise BadRequestError(
97
+ headers=dict(_response.headers),
98
+ body=typing.cast(
99
+ ActualErrorResponse,
100
+ parse_obj_as(
101
+ type_=ActualErrorResponse, # type: ignore
102
+ object_=_response.json(),
103
+ ),
104
+ ),
105
+ )
106
+ if _response.status_code == 401:
107
+ raise UnauthorizedError(
108
+ headers=dict(_response.headers),
109
+ body=typing.cast(
110
+ ActualErrorResponse,
111
+ parse_obj_as(
112
+ type_=ActualErrorResponse, # type: ignore
113
+ object_=_response.json(),
114
+ ),
115
+ ),
116
+ )
117
+ if _response.status_code == 403:
118
+ raise ForbiddenError(
119
+ headers=dict(_response.headers),
120
+ body=typing.cast(
121
+ ActualErrorResponse,
122
+ parse_obj_as(
123
+ type_=ActualErrorResponse, # type: ignore
124
+ object_=_response.json(),
125
+ ),
126
+ ),
127
+ )
128
+ if _response.status_code == 404:
129
+ raise NotFoundError(
130
+ headers=dict(_response.headers),
131
+ body=typing.cast(
132
+ ActualErrorResponse,
133
+ parse_obj_as(
134
+ type_=ActualErrorResponse, # type: ignore
135
+ object_=_response.json(),
136
+ ),
137
+ ),
138
+ )
139
+ if _response.status_code == 422:
140
+ raise UnprocessableEntityError(
141
+ headers=dict(_response.headers),
142
+ body=typing.cast(
143
+ typing.Optional[typing.Any],
144
+ parse_obj_as(
145
+ type_=typing.Optional[typing.Any], # type: ignore
146
+ object_=_response.json(),
147
+ ),
148
+ ),
149
+ )
150
+ if _response.status_code == 500:
151
+ raise InternalServerError(
152
+ headers=dict(_response.headers),
153
+ body=typing.cast(
154
+ ActualErrorResponse,
155
+ parse_obj_as(
156
+ type_=ActualErrorResponse, # type: ignore
157
+ object_=_response.json(),
158
+ ),
159
+ ),
160
+ )
161
+ if _response.status_code == 503:
162
+ raise ServiceUnavailableError(
163
+ headers=dict(_response.headers),
164
+ body=typing.cast(
165
+ ActualErrorResponse,
166
+ parse_obj_as(
167
+ type_=ActualErrorResponse, # type: ignore
168
+ object_=_response.json(),
169
+ ),
170
+ ),
171
+ )
172
+ _response_json = _response.json()
173
+ except JSONDecodeError:
174
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
175
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
176
+
177
+ def batch_update(
178
+ self,
179
+ *,
180
+ tenant_id: str,
181
+ files: typing.List[core.File],
182
+ sub_tenant_id: typing.Optional[str] = None,
183
+ source_ids: typing.Optional[typing.List[str]] = OMIT,
184
+ tenant_metadata: typing.Optional[str] = OMIT,
185
+ document_metadata: typing.Optional[str] = OMIT,
186
+ request_options: typing.Optional[RequestOptions] = None,
187
+ ) -> HttpResponse[BatchUploadData]:
188
+ """
189
+ Parameters
190
+ ----------
191
+ tenant_id : str
192
+
193
+ files : typing.List[core.File]
194
+ See core.File for more documentation
195
+
196
+ sub_tenant_id : typing.Optional[str]
197
+
198
+ source_ids : typing.Optional[typing.List[str]]
199
+
200
+ tenant_metadata : typing.Optional[str]
201
+
202
+ document_metadata : typing.Optional[str]
203
+
204
+ request_options : typing.Optional[RequestOptions]
205
+ Request-specific configuration.
206
+
207
+ Returns
208
+ -------
209
+ HttpResponse[BatchUploadData]
210
+ Successful Response
211
+ """
212
+ _response = self._client_wrapper.httpx_client.request(
213
+ "upload/batch_update",
214
+ method="PATCH",
215
+ params={
216
+ "tenant_id": tenant_id,
217
+ "sub_tenant_id": sub_tenant_id,
218
+ },
219
+ data={
220
+ "source_ids": source_ids,
221
+ "tenant_metadata": tenant_metadata,
222
+ "document_metadata": document_metadata,
223
+ },
224
+ files={
225
+ "files": files,
226
+ },
227
+ request_options=request_options,
228
+ omit=OMIT,
229
+ force_multipart=True,
230
+ )
231
+ try:
232
+ if 200 <= _response.status_code < 300:
233
+ _data = typing.cast(
234
+ BatchUploadData,
235
+ parse_obj_as(
236
+ type_=BatchUploadData, # type: ignore
237
+ object_=_response.json(),
238
+ ),
239
+ )
240
+ return HttpResponse(response=_response, data=_data)
241
+ if _response.status_code == 400:
242
+ raise BadRequestError(
243
+ headers=dict(_response.headers),
244
+ body=typing.cast(
245
+ ActualErrorResponse,
246
+ parse_obj_as(
247
+ type_=ActualErrorResponse, # type: ignore
248
+ object_=_response.json(),
249
+ ),
250
+ ),
251
+ )
252
+ if _response.status_code == 401:
253
+ raise UnauthorizedError(
254
+ headers=dict(_response.headers),
255
+ body=typing.cast(
256
+ ActualErrorResponse,
257
+ parse_obj_as(
258
+ type_=ActualErrorResponse, # type: ignore
259
+ object_=_response.json(),
260
+ ),
261
+ ),
262
+ )
263
+ if _response.status_code == 403:
264
+ raise ForbiddenError(
265
+ headers=dict(_response.headers),
266
+ body=typing.cast(
267
+ ActualErrorResponse,
268
+ parse_obj_as(
269
+ type_=ActualErrorResponse, # type: ignore
270
+ object_=_response.json(),
271
+ ),
272
+ ),
273
+ )
274
+ if _response.status_code == 404:
275
+ raise NotFoundError(
276
+ headers=dict(_response.headers),
277
+ body=typing.cast(
278
+ ActualErrorResponse,
279
+ parse_obj_as(
280
+ type_=ActualErrorResponse, # type: ignore
281
+ object_=_response.json(),
282
+ ),
283
+ ),
284
+ )
285
+ if _response.status_code == 422:
286
+ raise UnprocessableEntityError(
287
+ headers=dict(_response.headers),
288
+ body=typing.cast(
289
+ typing.Optional[typing.Any],
290
+ parse_obj_as(
291
+ type_=typing.Optional[typing.Any], # type: ignore
292
+ object_=_response.json(),
293
+ ),
294
+ ),
295
+ )
296
+ if _response.status_code == 500:
297
+ raise InternalServerError(
298
+ headers=dict(_response.headers),
299
+ body=typing.cast(
300
+ ActualErrorResponse,
301
+ parse_obj_as(
302
+ type_=ActualErrorResponse, # type: ignore
303
+ object_=_response.json(),
304
+ ),
305
+ ),
306
+ )
307
+ if _response.status_code == 503:
308
+ raise ServiceUnavailableError(
309
+ headers=dict(_response.headers),
310
+ body=typing.cast(
311
+ ActualErrorResponse,
312
+ parse_obj_as(
313
+ type_=ActualErrorResponse, # type: ignore
314
+ object_=_response.json(),
315
+ ),
316
+ ),
317
+ )
318
+ _response_json = _response.json()
319
+ except JSONDecodeError:
320
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
321
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
322
+
323
+ def upload_document(
324
+ self,
325
+ *,
326
+ tenant_id: str,
327
+ file: core.File,
328
+ sub_tenant_id: typing.Optional[str] = None,
329
+ tenant_metadata: typing.Optional[str] = OMIT,
330
+ document_metadata: typing.Optional[str] = OMIT,
331
+ request_options: typing.Optional[RequestOptions] = None,
332
+ ) -> HttpResponse[SingleUploadData]:
333
+ """
334
+ Parameters
335
+ ----------
336
+ tenant_id : str
337
+
338
+ file : core.File
339
+ See core.File for more documentation
340
+
341
+ sub_tenant_id : typing.Optional[str]
342
+
343
+ tenant_metadata : typing.Optional[str]
344
+
345
+ document_metadata : typing.Optional[str]
346
+
347
+ request_options : typing.Optional[RequestOptions]
348
+ Request-specific configuration.
349
+
350
+ Returns
351
+ -------
352
+ HttpResponse[SingleUploadData]
353
+ Successful Response
354
+ """
355
+ _response = self._client_wrapper.httpx_client.request(
356
+ "upload/upload_document",
357
+ method="POST",
358
+ params={
359
+ "tenant_id": tenant_id,
360
+ "sub_tenant_id": sub_tenant_id,
361
+ },
362
+ data={
363
+ "tenant_metadata": tenant_metadata,
364
+ "document_metadata": document_metadata,
365
+ },
366
+ files={
367
+ "file": file,
368
+ },
369
+ request_options=request_options,
370
+ omit=OMIT,
371
+ force_multipart=True,
372
+ )
373
+ try:
374
+ if 200 <= _response.status_code < 300:
375
+ _data = typing.cast(
376
+ SingleUploadData,
377
+ parse_obj_as(
378
+ type_=SingleUploadData, # type: ignore
379
+ object_=_response.json(),
380
+ ),
381
+ )
382
+ return HttpResponse(response=_response, data=_data)
383
+ if _response.status_code == 400:
384
+ raise BadRequestError(
385
+ headers=dict(_response.headers),
386
+ body=typing.cast(
387
+ ActualErrorResponse,
388
+ parse_obj_as(
389
+ type_=ActualErrorResponse, # type: ignore
390
+ object_=_response.json(),
391
+ ),
392
+ ),
393
+ )
394
+ if _response.status_code == 401:
395
+ raise UnauthorizedError(
396
+ headers=dict(_response.headers),
397
+ body=typing.cast(
398
+ ActualErrorResponse,
399
+ parse_obj_as(
400
+ type_=ActualErrorResponse, # type: ignore
401
+ object_=_response.json(),
402
+ ),
403
+ ),
404
+ )
405
+ if _response.status_code == 403:
406
+ raise ForbiddenError(
407
+ headers=dict(_response.headers),
408
+ body=typing.cast(
409
+ ActualErrorResponse,
410
+ parse_obj_as(
411
+ type_=ActualErrorResponse, # type: ignore
412
+ object_=_response.json(),
413
+ ),
414
+ ),
415
+ )
416
+ if _response.status_code == 404:
417
+ raise NotFoundError(
418
+ headers=dict(_response.headers),
419
+ body=typing.cast(
420
+ ActualErrorResponse,
421
+ parse_obj_as(
422
+ type_=ActualErrorResponse, # type: ignore
423
+ object_=_response.json(),
424
+ ),
425
+ ),
426
+ )
427
+ if _response.status_code == 422:
428
+ raise UnprocessableEntityError(
429
+ headers=dict(_response.headers),
430
+ body=typing.cast(
431
+ typing.Optional[typing.Any],
432
+ parse_obj_as(
433
+ type_=typing.Optional[typing.Any], # type: ignore
434
+ object_=_response.json(),
435
+ ),
436
+ ),
437
+ )
438
+ if _response.status_code == 500:
439
+ raise InternalServerError(
440
+ headers=dict(_response.headers),
441
+ body=typing.cast(
442
+ ActualErrorResponse,
443
+ parse_obj_as(
444
+ type_=ActualErrorResponse, # type: ignore
445
+ object_=_response.json(),
446
+ ),
447
+ ),
448
+ )
449
+ if _response.status_code == 503:
450
+ raise ServiceUnavailableError(
451
+ headers=dict(_response.headers),
452
+ body=typing.cast(
453
+ ActualErrorResponse,
454
+ parse_obj_as(
455
+ type_=ActualErrorResponse, # type: ignore
456
+ object_=_response.json(),
457
+ ),
458
+ ),
459
+ )
460
+ _response_json = _response.json()
461
+ except JSONDecodeError:
462
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
463
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
464
+
465
+ def update_document(
466
+ self,
467
+ *,
468
+ source_id: str,
469
+ tenant_id: str,
470
+ file: core.File,
471
+ sub_tenant_id: typing.Optional[str] = None,
472
+ tenant_metadata: typing.Optional[str] = OMIT,
473
+ document_metadata: typing.Optional[str] = OMIT,
474
+ request_options: typing.Optional[RequestOptions] = None,
475
+ ) -> HttpResponse[SingleUploadData]:
476
+ """
477
+ Parameters
478
+ ----------
479
+ source_id : str
480
+
481
+ tenant_id : str
482
+
483
+ file : core.File
484
+ See core.File for more documentation
485
+
486
+ sub_tenant_id : typing.Optional[str]
487
+
488
+ tenant_metadata : typing.Optional[str]
489
+
490
+ document_metadata : typing.Optional[str]
491
+
492
+ request_options : typing.Optional[RequestOptions]
493
+ Request-specific configuration.
494
+
495
+ Returns
496
+ -------
497
+ HttpResponse[SingleUploadData]
498
+ Successful Response
499
+ """
500
+ _response = self._client_wrapper.httpx_client.request(
501
+ "upload/update_document",
502
+ method="PATCH",
503
+ params={
504
+ "source_id": source_id,
505
+ "tenant_id": tenant_id,
506
+ "sub_tenant_id": sub_tenant_id,
507
+ },
508
+ data={
509
+ "tenant_metadata": tenant_metadata,
510
+ "document_metadata": document_metadata,
511
+ },
512
+ files={
513
+ "file": file,
514
+ },
515
+ request_options=request_options,
516
+ omit=OMIT,
517
+ force_multipart=True,
518
+ )
519
+ try:
520
+ if 200 <= _response.status_code < 300:
521
+ _data = typing.cast(
522
+ SingleUploadData,
523
+ parse_obj_as(
524
+ type_=SingleUploadData, # type: ignore
525
+ object_=_response.json(),
526
+ ),
527
+ )
528
+ return HttpResponse(response=_response, data=_data)
529
+ if _response.status_code == 400:
530
+ raise BadRequestError(
531
+ headers=dict(_response.headers),
532
+ body=typing.cast(
533
+ ActualErrorResponse,
534
+ parse_obj_as(
535
+ type_=ActualErrorResponse, # type: ignore
536
+ object_=_response.json(),
537
+ ),
538
+ ),
539
+ )
540
+ if _response.status_code == 401:
541
+ raise UnauthorizedError(
542
+ headers=dict(_response.headers),
543
+ body=typing.cast(
544
+ ActualErrorResponse,
545
+ parse_obj_as(
546
+ type_=ActualErrorResponse, # type: ignore
547
+ object_=_response.json(),
548
+ ),
549
+ ),
550
+ )
551
+ if _response.status_code == 403:
552
+ raise ForbiddenError(
553
+ headers=dict(_response.headers),
554
+ body=typing.cast(
555
+ ActualErrorResponse,
556
+ parse_obj_as(
557
+ type_=ActualErrorResponse, # type: ignore
558
+ object_=_response.json(),
559
+ ),
560
+ ),
561
+ )
562
+ if _response.status_code == 404:
563
+ raise NotFoundError(
564
+ headers=dict(_response.headers),
565
+ body=typing.cast(
566
+ ActualErrorResponse,
567
+ parse_obj_as(
568
+ type_=ActualErrorResponse, # type: ignore
569
+ object_=_response.json(),
570
+ ),
571
+ ),
572
+ )
573
+ if _response.status_code == 422:
574
+ raise UnprocessableEntityError(
575
+ headers=dict(_response.headers),
576
+ body=typing.cast(
577
+ typing.Optional[typing.Any],
578
+ parse_obj_as(
579
+ type_=typing.Optional[typing.Any], # type: ignore
580
+ object_=_response.json(),
581
+ ),
582
+ ),
583
+ )
584
+ if _response.status_code == 500:
585
+ raise InternalServerError(
586
+ headers=dict(_response.headers),
587
+ body=typing.cast(
588
+ ActualErrorResponse,
589
+ parse_obj_as(
590
+ type_=ActualErrorResponse, # type: ignore
591
+ object_=_response.json(),
592
+ ),
593
+ ),
594
+ )
595
+ if _response.status_code == 503:
596
+ raise ServiceUnavailableError(
597
+ headers=dict(_response.headers),
598
+ body=typing.cast(
599
+ ActualErrorResponse,
600
+ parse_obj_as(
601
+ type_=ActualErrorResponse, # type: ignore
602
+ object_=_response.json(),
603
+ ),
604
+ ),
605
+ )
606
+ _response_json = _response.json()
607
+ except JSONDecodeError:
608
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
609
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
610
+
611
+ def upload_app_sources(
612
+ self,
613
+ *,
614
+ tenant_id: str,
615
+ request: typing.Sequence[SourceModel],
616
+ sub_tenant_id: typing.Optional[str] = None,
617
+ request_options: typing.Optional[RequestOptions] = None,
618
+ ) -> HttpResponse[AppSourcesUploadData]:
619
+ """
620
+ Parameters
621
+ ----------
622
+ tenant_id : str
623
+
624
+ request : typing.Sequence[SourceModel]
625
+
626
+ sub_tenant_id : typing.Optional[str]
627
+
628
+ request_options : typing.Optional[RequestOptions]
629
+ Request-specific configuration.
630
+
631
+ Returns
632
+ -------
633
+ HttpResponse[AppSourcesUploadData]
634
+ Successful Response
635
+ """
636
+ _response = self._client_wrapper.httpx_client.request(
637
+ "upload/upload_app_sources",
638
+ method="POST",
639
+ params={
640
+ "tenant_id": tenant_id,
641
+ "sub_tenant_id": sub_tenant_id,
642
+ },
643
+ json=convert_and_respect_annotation_metadata(
644
+ object_=request, annotation=typing.Sequence[SourceModel], direction="write"
645
+ ),
646
+ headers={
647
+ "content-type": "application/json",
648
+ },
649
+ request_options=request_options,
650
+ omit=OMIT,
651
+ )
652
+ try:
653
+ if 200 <= _response.status_code < 300:
654
+ _data = typing.cast(
655
+ AppSourcesUploadData,
656
+ parse_obj_as(
657
+ type_=AppSourcesUploadData, # type: ignore
658
+ object_=_response.json(),
659
+ ),
660
+ )
661
+ return HttpResponse(response=_response, data=_data)
662
+ if _response.status_code == 400:
663
+ raise BadRequestError(
664
+ headers=dict(_response.headers),
665
+ body=typing.cast(
666
+ ActualErrorResponse,
667
+ parse_obj_as(
668
+ type_=ActualErrorResponse, # type: ignore
669
+ object_=_response.json(),
670
+ ),
671
+ ),
672
+ )
673
+ if _response.status_code == 401:
674
+ raise UnauthorizedError(
675
+ headers=dict(_response.headers),
676
+ body=typing.cast(
677
+ ActualErrorResponse,
678
+ parse_obj_as(
679
+ type_=ActualErrorResponse, # type: ignore
680
+ object_=_response.json(),
681
+ ),
682
+ ),
683
+ )
684
+ if _response.status_code == 403:
685
+ raise ForbiddenError(
686
+ headers=dict(_response.headers),
687
+ body=typing.cast(
688
+ ActualErrorResponse,
689
+ parse_obj_as(
690
+ type_=ActualErrorResponse, # type: ignore
691
+ object_=_response.json(),
692
+ ),
693
+ ),
694
+ )
695
+ if _response.status_code == 404:
696
+ raise NotFoundError(
697
+ headers=dict(_response.headers),
698
+ body=typing.cast(
699
+ ActualErrorResponse,
700
+ parse_obj_as(
701
+ type_=ActualErrorResponse, # type: ignore
702
+ object_=_response.json(),
703
+ ),
704
+ ),
705
+ )
706
+ if _response.status_code == 422:
707
+ raise UnprocessableEntityError(
708
+ headers=dict(_response.headers),
709
+ body=typing.cast(
710
+ typing.Optional[typing.Any],
711
+ parse_obj_as(
712
+ type_=typing.Optional[typing.Any], # type: ignore
713
+ object_=_response.json(),
714
+ ),
715
+ ),
716
+ )
717
+ if _response.status_code == 500:
718
+ raise InternalServerError(
719
+ headers=dict(_response.headers),
720
+ body=typing.cast(
721
+ ActualErrorResponse,
722
+ parse_obj_as(
723
+ type_=ActualErrorResponse, # type: ignore
724
+ object_=_response.json(),
725
+ ),
726
+ ),
727
+ )
728
+ if _response.status_code == 503:
729
+ raise ServiceUnavailableError(
730
+ headers=dict(_response.headers),
731
+ body=typing.cast(
732
+ ActualErrorResponse,
733
+ parse_obj_as(
734
+ type_=ActualErrorResponse, # type: ignore
735
+ object_=_response.json(),
736
+ ),
737
+ ),
738
+ )
739
+ _response_json = _response.json()
740
+ except JSONDecodeError:
741
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
742
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
743
+
744
+ def upload_markdown(
745
+ self,
746
+ *,
747
+ tenant_id: str,
748
+ content: str,
749
+ sub_tenant_id: typing.Optional[str] = None,
750
+ tenant_metadata: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = OMIT,
751
+ document_metadata: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = OMIT,
752
+ request_options: typing.Optional[RequestOptions] = None,
753
+ ) -> HttpResponse[SingleUploadData]:
754
+ """
755
+ Upload markdown content. If request.document_metadata contains a 'file_id' key (non-empty), it will be used as the file ID;
756
+ otherwise, a new file_id will be generated for that file. This allows file-specific IDs to be set directly in the metadata.
757
+
758
+ Parameters
759
+ ----------
760
+ tenant_id : str
761
+
762
+ content : str
763
+
764
+ sub_tenant_id : typing.Optional[str]
765
+
766
+ tenant_metadata : typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]]
767
+
768
+ document_metadata : typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]]
769
+
770
+ request_options : typing.Optional[RequestOptions]
771
+ Request-specific configuration.
772
+
773
+ Returns
774
+ -------
775
+ HttpResponse[SingleUploadData]
776
+ Successful Response
777
+ """
778
+ _response = self._client_wrapper.httpx_client.request(
779
+ "upload/upload_markdown",
780
+ method="POST",
781
+ params={
782
+ "tenant_id": tenant_id,
783
+ "sub_tenant_id": sub_tenant_id,
784
+ },
785
+ json={
786
+ "content": content,
787
+ "tenant_metadata": tenant_metadata,
788
+ "document_metadata": document_metadata,
789
+ },
790
+ headers={
791
+ "content-type": "application/json",
792
+ },
793
+ request_options=request_options,
794
+ omit=OMIT,
795
+ )
796
+ try:
797
+ if 200 <= _response.status_code < 300:
798
+ _data = typing.cast(
799
+ SingleUploadData,
800
+ parse_obj_as(
801
+ type_=SingleUploadData, # type: ignore
802
+ object_=_response.json(),
803
+ ),
804
+ )
805
+ return HttpResponse(response=_response, data=_data)
806
+ if _response.status_code == 400:
807
+ raise BadRequestError(
808
+ headers=dict(_response.headers),
809
+ body=typing.cast(
810
+ ActualErrorResponse,
811
+ parse_obj_as(
812
+ type_=ActualErrorResponse, # type: ignore
813
+ object_=_response.json(),
814
+ ),
815
+ ),
816
+ )
817
+ if _response.status_code == 401:
818
+ raise UnauthorizedError(
819
+ headers=dict(_response.headers),
820
+ body=typing.cast(
821
+ ActualErrorResponse,
822
+ parse_obj_as(
823
+ type_=ActualErrorResponse, # type: ignore
824
+ object_=_response.json(),
825
+ ),
826
+ ),
827
+ )
828
+ if _response.status_code == 403:
829
+ raise ForbiddenError(
830
+ headers=dict(_response.headers),
831
+ body=typing.cast(
832
+ ActualErrorResponse,
833
+ parse_obj_as(
834
+ type_=ActualErrorResponse, # type: ignore
835
+ object_=_response.json(),
836
+ ),
837
+ ),
838
+ )
839
+ if _response.status_code == 404:
840
+ raise NotFoundError(
841
+ headers=dict(_response.headers),
842
+ body=typing.cast(
843
+ ActualErrorResponse,
844
+ parse_obj_as(
845
+ type_=ActualErrorResponse, # type: ignore
846
+ object_=_response.json(),
847
+ ),
848
+ ),
849
+ )
850
+ if _response.status_code == 422:
851
+ raise UnprocessableEntityError(
852
+ headers=dict(_response.headers),
853
+ body=typing.cast(
854
+ typing.Optional[typing.Any],
855
+ parse_obj_as(
856
+ type_=typing.Optional[typing.Any], # type: ignore
857
+ object_=_response.json(),
858
+ ),
859
+ ),
860
+ )
861
+ if _response.status_code == 500:
862
+ raise InternalServerError(
863
+ headers=dict(_response.headers),
864
+ body=typing.cast(
865
+ ActualErrorResponse,
866
+ parse_obj_as(
867
+ type_=ActualErrorResponse, # type: ignore
868
+ object_=_response.json(),
869
+ ),
870
+ ),
871
+ )
872
+ if _response.status_code == 503:
873
+ raise ServiceUnavailableError(
874
+ headers=dict(_response.headers),
875
+ body=typing.cast(
876
+ ActualErrorResponse,
877
+ parse_obj_as(
878
+ type_=ActualErrorResponse, # type: ignore
879
+ object_=_response.json(),
880
+ ),
881
+ ),
882
+ )
883
+ _response_json = _response.json()
884
+ except JSONDecodeError:
885
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
886
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
887
+
888
+ def upload_text(
889
+ self,
890
+ *,
891
+ tenant_id: str,
892
+ content: str,
893
+ sub_tenant_id: typing.Optional[str] = None,
894
+ tenant_metadata: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = OMIT,
895
+ document_metadata: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = OMIT,
896
+ request_options: typing.Optional[RequestOptions] = None,
897
+ ) -> HttpResponse[SingleUploadData]:
898
+ """
899
+ Upload markdown content. If request.document_metadata contains a 'file_id' key (non-empty), it will be used as the file ID;
900
+ otherwise, a new file_id will be generated for that file. This allows file-specific IDs to be set directly in the metadata.
901
+
902
+ Parameters
903
+ ----------
904
+ tenant_id : str
905
+
906
+ content : str
907
+
908
+ sub_tenant_id : typing.Optional[str]
909
+
910
+ tenant_metadata : typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]]
911
+
912
+ document_metadata : typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]]
913
+
914
+ request_options : typing.Optional[RequestOptions]
915
+ Request-specific configuration.
916
+
917
+ Returns
918
+ -------
919
+ HttpResponse[SingleUploadData]
920
+ Successful Response
921
+ """
922
+ _response = self._client_wrapper.httpx_client.request(
923
+ "upload/upload_text",
924
+ method="POST",
925
+ params={
926
+ "tenant_id": tenant_id,
927
+ "sub_tenant_id": sub_tenant_id,
928
+ },
929
+ json={
930
+ "content": content,
931
+ "tenant_metadata": tenant_metadata,
932
+ "document_metadata": document_metadata,
933
+ },
934
+ headers={
935
+ "content-type": "application/json",
936
+ },
937
+ request_options=request_options,
938
+ omit=OMIT,
939
+ )
940
+ try:
941
+ if 200 <= _response.status_code < 300:
942
+ _data = typing.cast(
943
+ SingleUploadData,
944
+ parse_obj_as(
945
+ type_=SingleUploadData, # type: ignore
946
+ object_=_response.json(),
947
+ ),
948
+ )
949
+ return HttpResponse(response=_response, data=_data)
950
+ if _response.status_code == 400:
951
+ raise BadRequestError(
952
+ headers=dict(_response.headers),
953
+ body=typing.cast(
954
+ ActualErrorResponse,
955
+ parse_obj_as(
956
+ type_=ActualErrorResponse, # type: ignore
957
+ object_=_response.json(),
958
+ ),
959
+ ),
960
+ )
961
+ if _response.status_code == 401:
962
+ raise UnauthorizedError(
963
+ headers=dict(_response.headers),
964
+ body=typing.cast(
965
+ ActualErrorResponse,
966
+ parse_obj_as(
967
+ type_=ActualErrorResponse, # type: ignore
968
+ object_=_response.json(),
969
+ ),
970
+ ),
971
+ )
972
+ if _response.status_code == 403:
973
+ raise ForbiddenError(
974
+ headers=dict(_response.headers),
975
+ body=typing.cast(
976
+ ActualErrorResponse,
977
+ parse_obj_as(
978
+ type_=ActualErrorResponse, # type: ignore
979
+ object_=_response.json(),
980
+ ),
981
+ ),
982
+ )
983
+ if _response.status_code == 404:
984
+ raise NotFoundError(
985
+ headers=dict(_response.headers),
986
+ body=typing.cast(
987
+ ActualErrorResponse,
988
+ parse_obj_as(
989
+ type_=ActualErrorResponse, # type: ignore
990
+ object_=_response.json(),
991
+ ),
992
+ ),
993
+ )
994
+ if _response.status_code == 422:
995
+ raise UnprocessableEntityError(
996
+ headers=dict(_response.headers),
997
+ body=typing.cast(
998
+ typing.Optional[typing.Any],
999
+ parse_obj_as(
1000
+ type_=typing.Optional[typing.Any], # type: ignore
1001
+ object_=_response.json(),
1002
+ ),
1003
+ ),
1004
+ )
1005
+ if _response.status_code == 500:
1006
+ raise InternalServerError(
1007
+ headers=dict(_response.headers),
1008
+ body=typing.cast(
1009
+ ActualErrorResponse,
1010
+ parse_obj_as(
1011
+ type_=ActualErrorResponse, # type: ignore
1012
+ object_=_response.json(),
1013
+ ),
1014
+ ),
1015
+ )
1016
+ if _response.status_code == 503:
1017
+ raise ServiceUnavailableError(
1018
+ headers=dict(_response.headers),
1019
+ body=typing.cast(
1020
+ ActualErrorResponse,
1021
+ parse_obj_as(
1022
+ type_=ActualErrorResponse, # type: ignore
1023
+ object_=_response.json(),
1024
+ ),
1025
+ ),
1026
+ )
1027
+ _response_json = _response.json()
1028
+ except JSONDecodeError:
1029
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
1030
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
1031
+
1032
+ def update_markdown(
1033
+ self,
1034
+ *,
1035
+ source_id: str,
1036
+ tenant_id: str,
1037
+ content: str,
1038
+ sub_tenant_id: typing.Optional[str] = None,
1039
+ tenant_metadata: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = OMIT,
1040
+ document_metadata: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = OMIT,
1041
+ request_options: typing.Optional[RequestOptions] = None,
1042
+ ) -> HttpResponse[SingleUploadData]:
1043
+ """
1044
+ Parameters
1045
+ ----------
1046
+ source_id : str
1047
+
1048
+ tenant_id : str
1049
+
1050
+ content : str
1051
+
1052
+ sub_tenant_id : typing.Optional[str]
1053
+
1054
+ tenant_metadata : typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]]
1055
+
1056
+ document_metadata : typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]]
1057
+
1058
+ request_options : typing.Optional[RequestOptions]
1059
+ Request-specific configuration.
1060
+
1061
+ Returns
1062
+ -------
1063
+ HttpResponse[SingleUploadData]
1064
+ Successful Response
1065
+ """
1066
+ _response = self._client_wrapper.httpx_client.request(
1067
+ "upload/update_markdown",
1068
+ method="PATCH",
1069
+ params={
1070
+ "source_id": source_id,
1071
+ "tenant_id": tenant_id,
1072
+ "sub_tenant_id": sub_tenant_id,
1073
+ },
1074
+ json={
1075
+ "content": content,
1076
+ "tenant_metadata": tenant_metadata,
1077
+ "document_metadata": document_metadata,
1078
+ },
1079
+ headers={
1080
+ "content-type": "application/json",
1081
+ },
1082
+ request_options=request_options,
1083
+ omit=OMIT,
1084
+ )
1085
+ try:
1086
+ if 200 <= _response.status_code < 300:
1087
+ _data = typing.cast(
1088
+ SingleUploadData,
1089
+ parse_obj_as(
1090
+ type_=SingleUploadData, # type: ignore
1091
+ object_=_response.json(),
1092
+ ),
1093
+ )
1094
+ return HttpResponse(response=_response, data=_data)
1095
+ if _response.status_code == 400:
1096
+ raise BadRequestError(
1097
+ headers=dict(_response.headers),
1098
+ body=typing.cast(
1099
+ ActualErrorResponse,
1100
+ parse_obj_as(
1101
+ type_=ActualErrorResponse, # type: ignore
1102
+ object_=_response.json(),
1103
+ ),
1104
+ ),
1105
+ )
1106
+ if _response.status_code == 401:
1107
+ raise UnauthorizedError(
1108
+ headers=dict(_response.headers),
1109
+ body=typing.cast(
1110
+ ActualErrorResponse,
1111
+ parse_obj_as(
1112
+ type_=ActualErrorResponse, # type: ignore
1113
+ object_=_response.json(),
1114
+ ),
1115
+ ),
1116
+ )
1117
+ if _response.status_code == 403:
1118
+ raise ForbiddenError(
1119
+ headers=dict(_response.headers),
1120
+ body=typing.cast(
1121
+ ActualErrorResponse,
1122
+ parse_obj_as(
1123
+ type_=ActualErrorResponse, # type: ignore
1124
+ object_=_response.json(),
1125
+ ),
1126
+ ),
1127
+ )
1128
+ if _response.status_code == 404:
1129
+ raise NotFoundError(
1130
+ headers=dict(_response.headers),
1131
+ body=typing.cast(
1132
+ ActualErrorResponse,
1133
+ parse_obj_as(
1134
+ type_=ActualErrorResponse, # type: ignore
1135
+ object_=_response.json(),
1136
+ ),
1137
+ ),
1138
+ )
1139
+ if _response.status_code == 422:
1140
+ raise UnprocessableEntityError(
1141
+ headers=dict(_response.headers),
1142
+ body=typing.cast(
1143
+ typing.Optional[typing.Any],
1144
+ parse_obj_as(
1145
+ type_=typing.Optional[typing.Any], # type: ignore
1146
+ object_=_response.json(),
1147
+ ),
1148
+ ),
1149
+ )
1150
+ if _response.status_code == 500:
1151
+ raise InternalServerError(
1152
+ headers=dict(_response.headers),
1153
+ body=typing.cast(
1154
+ ActualErrorResponse,
1155
+ parse_obj_as(
1156
+ type_=ActualErrorResponse, # type: ignore
1157
+ object_=_response.json(),
1158
+ ),
1159
+ ),
1160
+ )
1161
+ if _response.status_code == 503:
1162
+ raise ServiceUnavailableError(
1163
+ headers=dict(_response.headers),
1164
+ body=typing.cast(
1165
+ ActualErrorResponse,
1166
+ parse_obj_as(
1167
+ type_=ActualErrorResponse, # type: ignore
1168
+ object_=_response.json(),
1169
+ ),
1170
+ ),
1171
+ )
1172
+ _response_json = _response.json()
1173
+ except JSONDecodeError:
1174
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
1175
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
1176
+
1177
+ def update_text(
1178
+ self,
1179
+ *,
1180
+ source_id: str,
1181
+ tenant_id: str,
1182
+ content: str,
1183
+ sub_tenant_id: typing.Optional[str] = None,
1184
+ tenant_metadata: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = OMIT,
1185
+ document_metadata: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = OMIT,
1186
+ request_options: typing.Optional[RequestOptions] = None,
1187
+ ) -> HttpResponse[SingleUploadData]:
1188
+ """
1189
+ Parameters
1190
+ ----------
1191
+ source_id : str
1192
+
1193
+ tenant_id : str
1194
+
1195
+ content : str
1196
+
1197
+ sub_tenant_id : typing.Optional[str]
1198
+
1199
+ tenant_metadata : typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]]
1200
+
1201
+ document_metadata : typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]]
1202
+
1203
+ request_options : typing.Optional[RequestOptions]
1204
+ Request-specific configuration.
1205
+
1206
+ Returns
1207
+ -------
1208
+ HttpResponse[SingleUploadData]
1209
+ Successful Response
1210
+ """
1211
+ _response = self._client_wrapper.httpx_client.request(
1212
+ "upload/update_text",
1213
+ method="PATCH",
1214
+ params={
1215
+ "source_id": source_id,
1216
+ "tenant_id": tenant_id,
1217
+ "sub_tenant_id": sub_tenant_id,
1218
+ },
1219
+ json={
1220
+ "content": content,
1221
+ "tenant_metadata": tenant_metadata,
1222
+ "document_metadata": document_metadata,
1223
+ },
1224
+ headers={
1225
+ "content-type": "application/json",
1226
+ },
1227
+ request_options=request_options,
1228
+ omit=OMIT,
1229
+ )
1230
+ try:
1231
+ if 200 <= _response.status_code < 300:
1232
+ _data = typing.cast(
1233
+ SingleUploadData,
1234
+ parse_obj_as(
1235
+ type_=SingleUploadData, # type: ignore
1236
+ object_=_response.json(),
1237
+ ),
1238
+ )
1239
+ return HttpResponse(response=_response, data=_data)
1240
+ if _response.status_code == 400:
1241
+ raise BadRequestError(
1242
+ headers=dict(_response.headers),
1243
+ body=typing.cast(
1244
+ ActualErrorResponse,
1245
+ parse_obj_as(
1246
+ type_=ActualErrorResponse, # type: ignore
1247
+ object_=_response.json(),
1248
+ ),
1249
+ ),
1250
+ )
1251
+ if _response.status_code == 401:
1252
+ raise UnauthorizedError(
1253
+ headers=dict(_response.headers),
1254
+ body=typing.cast(
1255
+ ActualErrorResponse,
1256
+ parse_obj_as(
1257
+ type_=ActualErrorResponse, # type: ignore
1258
+ object_=_response.json(),
1259
+ ),
1260
+ ),
1261
+ )
1262
+ if _response.status_code == 403:
1263
+ raise ForbiddenError(
1264
+ headers=dict(_response.headers),
1265
+ body=typing.cast(
1266
+ ActualErrorResponse,
1267
+ parse_obj_as(
1268
+ type_=ActualErrorResponse, # type: ignore
1269
+ object_=_response.json(),
1270
+ ),
1271
+ ),
1272
+ )
1273
+ if _response.status_code == 404:
1274
+ raise NotFoundError(
1275
+ headers=dict(_response.headers),
1276
+ body=typing.cast(
1277
+ ActualErrorResponse,
1278
+ parse_obj_as(
1279
+ type_=ActualErrorResponse, # type: ignore
1280
+ object_=_response.json(),
1281
+ ),
1282
+ ),
1283
+ )
1284
+ if _response.status_code == 422:
1285
+ raise UnprocessableEntityError(
1286
+ headers=dict(_response.headers),
1287
+ body=typing.cast(
1288
+ typing.Optional[typing.Any],
1289
+ parse_obj_as(
1290
+ type_=typing.Optional[typing.Any], # type: ignore
1291
+ object_=_response.json(),
1292
+ ),
1293
+ ),
1294
+ )
1295
+ if _response.status_code == 500:
1296
+ raise InternalServerError(
1297
+ headers=dict(_response.headers),
1298
+ body=typing.cast(
1299
+ ActualErrorResponse,
1300
+ parse_obj_as(
1301
+ type_=ActualErrorResponse, # type: ignore
1302
+ object_=_response.json(),
1303
+ ),
1304
+ ),
1305
+ )
1306
+ if _response.status_code == 503:
1307
+ raise ServiceUnavailableError(
1308
+ headers=dict(_response.headers),
1309
+ body=typing.cast(
1310
+ ActualErrorResponse,
1311
+ parse_obj_as(
1312
+ type_=ActualErrorResponse, # type: ignore
1313
+ object_=_response.json(),
1314
+ ),
1315
+ ),
1316
+ )
1317
+ _response_json = _response.json()
1318
+ except JSONDecodeError:
1319
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
1320
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
1321
+
1322
+ def upload_embeddings(
1323
+ self,
1324
+ *,
1325
+ tenant_id: str,
1326
+ embeddings: typing.Sequence[typing.Sequence[float]],
1327
+ sub_tenant_id: typing.Optional[str] = None,
1328
+ file_id: typing.Optional[str] = OMIT,
1329
+ request_options: typing.Optional[RequestOptions] = None,
1330
+ ) -> HttpResponse[SingleUploadData]:
1331
+ """
1332
+ Parameters
1333
+ ----------
1334
+ tenant_id : str
1335
+
1336
+ embeddings : typing.Sequence[typing.Sequence[float]]
1337
+
1338
+ sub_tenant_id : typing.Optional[str]
1339
+
1340
+ file_id : typing.Optional[str]
1341
+
1342
+ request_options : typing.Optional[RequestOptions]
1343
+ Request-specific configuration.
1344
+
1345
+ Returns
1346
+ -------
1347
+ HttpResponse[SingleUploadData]
1348
+ Successful Response
1349
+ """
1350
+ _response = self._client_wrapper.httpx_client.request(
1351
+ "upload/upload_embeddings",
1352
+ method="POST",
1353
+ params={
1354
+ "tenant_id": tenant_id,
1355
+ "sub_tenant_id": sub_tenant_id,
1356
+ },
1357
+ json={
1358
+ "embeddings": embeddings,
1359
+ "file_id": file_id,
1360
+ },
1361
+ headers={
1362
+ "content-type": "application/json",
1363
+ },
1364
+ request_options=request_options,
1365
+ omit=OMIT,
1366
+ )
1367
+ try:
1368
+ if 200 <= _response.status_code < 300:
1369
+ _data = typing.cast(
1370
+ SingleUploadData,
1371
+ parse_obj_as(
1372
+ type_=SingleUploadData, # type: ignore
1373
+ object_=_response.json(),
1374
+ ),
1375
+ )
1376
+ return HttpResponse(response=_response, data=_data)
1377
+ if _response.status_code == 400:
1378
+ raise BadRequestError(
1379
+ headers=dict(_response.headers),
1380
+ body=typing.cast(
1381
+ ActualErrorResponse,
1382
+ parse_obj_as(
1383
+ type_=ActualErrorResponse, # type: ignore
1384
+ object_=_response.json(),
1385
+ ),
1386
+ ),
1387
+ )
1388
+ if _response.status_code == 401:
1389
+ raise UnauthorizedError(
1390
+ headers=dict(_response.headers),
1391
+ body=typing.cast(
1392
+ ActualErrorResponse,
1393
+ parse_obj_as(
1394
+ type_=ActualErrorResponse, # type: ignore
1395
+ object_=_response.json(),
1396
+ ),
1397
+ ),
1398
+ )
1399
+ if _response.status_code == 403:
1400
+ raise ForbiddenError(
1401
+ headers=dict(_response.headers),
1402
+ body=typing.cast(
1403
+ ActualErrorResponse,
1404
+ parse_obj_as(
1405
+ type_=ActualErrorResponse, # type: ignore
1406
+ object_=_response.json(),
1407
+ ),
1408
+ ),
1409
+ )
1410
+ if _response.status_code == 404:
1411
+ raise NotFoundError(
1412
+ headers=dict(_response.headers),
1413
+ body=typing.cast(
1414
+ ActualErrorResponse,
1415
+ parse_obj_as(
1416
+ type_=ActualErrorResponse, # type: ignore
1417
+ object_=_response.json(),
1418
+ ),
1419
+ ),
1420
+ )
1421
+ if _response.status_code == 422:
1422
+ raise UnprocessableEntityError(
1423
+ headers=dict(_response.headers),
1424
+ body=typing.cast(
1425
+ typing.Optional[typing.Any],
1426
+ parse_obj_as(
1427
+ type_=typing.Optional[typing.Any], # type: ignore
1428
+ object_=_response.json(),
1429
+ ),
1430
+ ),
1431
+ )
1432
+ if _response.status_code == 500:
1433
+ raise InternalServerError(
1434
+ headers=dict(_response.headers),
1435
+ body=typing.cast(
1436
+ ActualErrorResponse,
1437
+ parse_obj_as(
1438
+ type_=ActualErrorResponse, # type: ignore
1439
+ object_=_response.json(),
1440
+ ),
1441
+ ),
1442
+ )
1443
+ if _response.status_code == 503:
1444
+ raise ServiceUnavailableError(
1445
+ headers=dict(_response.headers),
1446
+ body=typing.cast(
1447
+ ActualErrorResponse,
1448
+ parse_obj_as(
1449
+ type_=ActualErrorResponse, # type: ignore
1450
+ object_=_response.json(),
1451
+ ),
1452
+ ),
1453
+ )
1454
+ _response_json = _response.json()
1455
+ except JSONDecodeError:
1456
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
1457
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
1458
+
1459
+ def update_embeddings(
1460
+ self,
1461
+ *,
1462
+ tenant_id: str,
1463
+ embeddings: typing.Dict[str, typing.Sequence[float]],
1464
+ sub_tenant_id: typing.Optional[str] = None,
1465
+ request_options: typing.Optional[RequestOptions] = None,
1466
+ ) -> HttpResponse[SingleUploadData]:
1467
+ """
1468
+ Parameters
1469
+ ----------
1470
+ tenant_id : str
1471
+
1472
+ embeddings : typing.Dict[str, typing.Sequence[float]]
1473
+ Dictionary with chunk_id as key and embedding array as value
1474
+
1475
+ sub_tenant_id : typing.Optional[str]
1476
+
1477
+ request_options : typing.Optional[RequestOptions]
1478
+ Request-specific configuration.
1479
+
1480
+ Returns
1481
+ -------
1482
+ HttpResponse[SingleUploadData]
1483
+ Successful Response
1484
+ """
1485
+ _response = self._client_wrapper.httpx_client.request(
1486
+ "upload/update_embeddings",
1487
+ method="PATCH",
1488
+ params={
1489
+ "tenant_id": tenant_id,
1490
+ "sub_tenant_id": sub_tenant_id,
1491
+ },
1492
+ json={
1493
+ "embeddings": embeddings,
1494
+ },
1495
+ headers={
1496
+ "content-type": "application/json",
1497
+ },
1498
+ request_options=request_options,
1499
+ omit=OMIT,
1500
+ )
1501
+ try:
1502
+ if 200 <= _response.status_code < 300:
1503
+ _data = typing.cast(
1504
+ SingleUploadData,
1505
+ parse_obj_as(
1506
+ type_=SingleUploadData, # type: ignore
1507
+ object_=_response.json(),
1508
+ ),
1509
+ )
1510
+ return HttpResponse(response=_response, data=_data)
1511
+ if _response.status_code == 400:
1512
+ raise BadRequestError(
1513
+ headers=dict(_response.headers),
1514
+ body=typing.cast(
1515
+ ActualErrorResponse,
1516
+ parse_obj_as(
1517
+ type_=ActualErrorResponse, # type: ignore
1518
+ object_=_response.json(),
1519
+ ),
1520
+ ),
1521
+ )
1522
+ if _response.status_code == 401:
1523
+ raise UnauthorizedError(
1524
+ headers=dict(_response.headers),
1525
+ body=typing.cast(
1526
+ ActualErrorResponse,
1527
+ parse_obj_as(
1528
+ type_=ActualErrorResponse, # type: ignore
1529
+ object_=_response.json(),
1530
+ ),
1531
+ ),
1532
+ )
1533
+ if _response.status_code == 403:
1534
+ raise ForbiddenError(
1535
+ headers=dict(_response.headers),
1536
+ body=typing.cast(
1537
+ ActualErrorResponse,
1538
+ parse_obj_as(
1539
+ type_=ActualErrorResponse, # type: ignore
1540
+ object_=_response.json(),
1541
+ ),
1542
+ ),
1543
+ )
1544
+ if _response.status_code == 404:
1545
+ raise NotFoundError(
1546
+ headers=dict(_response.headers),
1547
+ body=typing.cast(
1548
+ ActualErrorResponse,
1549
+ parse_obj_as(
1550
+ type_=ActualErrorResponse, # type: ignore
1551
+ object_=_response.json(),
1552
+ ),
1553
+ ),
1554
+ )
1555
+ if _response.status_code == 422:
1556
+ raise UnprocessableEntityError(
1557
+ headers=dict(_response.headers),
1558
+ body=typing.cast(
1559
+ typing.Optional[typing.Any],
1560
+ parse_obj_as(
1561
+ type_=typing.Optional[typing.Any], # type: ignore
1562
+ object_=_response.json(),
1563
+ ),
1564
+ ),
1565
+ )
1566
+ if _response.status_code == 500:
1567
+ raise InternalServerError(
1568
+ headers=dict(_response.headers),
1569
+ body=typing.cast(
1570
+ ActualErrorResponse,
1571
+ parse_obj_as(
1572
+ type_=ActualErrorResponse, # type: ignore
1573
+ object_=_response.json(),
1574
+ ),
1575
+ ),
1576
+ )
1577
+ if _response.status_code == 503:
1578
+ raise ServiceUnavailableError(
1579
+ headers=dict(_response.headers),
1580
+ body=typing.cast(
1581
+ ActualErrorResponse,
1582
+ parse_obj_as(
1583
+ type_=ActualErrorResponse, # type: ignore
1584
+ object_=_response.json(),
1585
+ ),
1586
+ ),
1587
+ )
1588
+ _response_json = _response.json()
1589
+ except JSONDecodeError:
1590
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
1591
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
1592
+
1593
+ def scrape_webpage(
1594
+ self,
1595
+ *,
1596
+ web_url: str,
1597
+ tenant_id: str,
1598
+ sub_tenant_id: typing.Optional[str] = None,
1599
+ file_id: typing.Optional[str] = None,
1600
+ request_options: typing.Optional[RequestOptions] = None,
1601
+ ) -> HttpResponse[SingleUploadData]:
1602
+ """
1603
+ Parameters
1604
+ ----------
1605
+ web_url : str
1606
+
1607
+ tenant_id : str
1608
+
1609
+ sub_tenant_id : typing.Optional[str]
1610
+
1611
+ file_id : typing.Optional[str]
1612
+
1613
+ request_options : typing.Optional[RequestOptions]
1614
+ Request-specific configuration.
1615
+
1616
+ Returns
1617
+ -------
1618
+ HttpResponse[SingleUploadData]
1619
+ Successful Response
1620
+ """
1621
+ _response = self._client_wrapper.httpx_client.request(
1622
+ "upload/scrape_webpage",
1623
+ method="POST",
1624
+ params={
1625
+ "web_url": web_url,
1626
+ "tenant_id": tenant_id,
1627
+ "sub_tenant_id": sub_tenant_id,
1628
+ "file_id": file_id,
1629
+ },
1630
+ request_options=request_options,
1631
+ )
1632
+ try:
1633
+ if 200 <= _response.status_code < 300:
1634
+ _data = typing.cast(
1635
+ SingleUploadData,
1636
+ parse_obj_as(
1637
+ type_=SingleUploadData, # type: ignore
1638
+ object_=_response.json(),
1639
+ ),
1640
+ )
1641
+ return HttpResponse(response=_response, data=_data)
1642
+ if _response.status_code == 400:
1643
+ raise BadRequestError(
1644
+ headers=dict(_response.headers),
1645
+ body=typing.cast(
1646
+ ActualErrorResponse,
1647
+ parse_obj_as(
1648
+ type_=ActualErrorResponse, # type: ignore
1649
+ object_=_response.json(),
1650
+ ),
1651
+ ),
1652
+ )
1653
+ if _response.status_code == 401:
1654
+ raise UnauthorizedError(
1655
+ headers=dict(_response.headers),
1656
+ body=typing.cast(
1657
+ ActualErrorResponse,
1658
+ parse_obj_as(
1659
+ type_=ActualErrorResponse, # type: ignore
1660
+ object_=_response.json(),
1661
+ ),
1662
+ ),
1663
+ )
1664
+ if _response.status_code == 403:
1665
+ raise ForbiddenError(
1666
+ headers=dict(_response.headers),
1667
+ body=typing.cast(
1668
+ ActualErrorResponse,
1669
+ parse_obj_as(
1670
+ type_=ActualErrorResponse, # type: ignore
1671
+ object_=_response.json(),
1672
+ ),
1673
+ ),
1674
+ )
1675
+ if _response.status_code == 404:
1676
+ raise NotFoundError(
1677
+ headers=dict(_response.headers),
1678
+ body=typing.cast(
1679
+ ActualErrorResponse,
1680
+ parse_obj_as(
1681
+ type_=ActualErrorResponse, # type: ignore
1682
+ object_=_response.json(),
1683
+ ),
1684
+ ),
1685
+ )
1686
+ if _response.status_code == 422:
1687
+ raise UnprocessableEntityError(
1688
+ headers=dict(_response.headers),
1689
+ body=typing.cast(
1690
+ typing.Optional[typing.Any],
1691
+ parse_obj_as(
1692
+ type_=typing.Optional[typing.Any], # type: ignore
1693
+ object_=_response.json(),
1694
+ ),
1695
+ ),
1696
+ )
1697
+ if _response.status_code == 500:
1698
+ raise InternalServerError(
1699
+ headers=dict(_response.headers),
1700
+ body=typing.cast(
1701
+ ActualErrorResponse,
1702
+ parse_obj_as(
1703
+ type_=ActualErrorResponse, # type: ignore
1704
+ object_=_response.json(),
1705
+ ),
1706
+ ),
1707
+ )
1708
+ if _response.status_code == 503:
1709
+ raise ServiceUnavailableError(
1710
+ headers=dict(_response.headers),
1711
+ body=typing.cast(
1712
+ ActualErrorResponse,
1713
+ parse_obj_as(
1714
+ type_=ActualErrorResponse, # type: ignore
1715
+ object_=_response.json(),
1716
+ ),
1717
+ ),
1718
+ )
1719
+ _response_json = _response.json()
1720
+ except JSONDecodeError:
1721
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
1722
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
1723
+
1724
+ def update_webpage(
1725
+ self,
1726
+ *,
1727
+ web_url: str,
1728
+ source_id: str,
1729
+ tenant_id: str,
1730
+ sub_tenant_id: typing.Optional[str] = None,
1731
+ request_options: typing.Optional[RequestOptions] = None,
1732
+ ) -> HttpResponse[SingleUploadData]:
1733
+ """
1734
+ Parameters
1735
+ ----------
1736
+ web_url : str
1737
+
1738
+ source_id : str
1739
+
1740
+ tenant_id : str
1741
+
1742
+ sub_tenant_id : typing.Optional[str]
1743
+
1744
+ request_options : typing.Optional[RequestOptions]
1745
+ Request-specific configuration.
1746
+
1747
+ Returns
1748
+ -------
1749
+ HttpResponse[SingleUploadData]
1750
+ Successful Response
1751
+ """
1752
+ _response = self._client_wrapper.httpx_client.request(
1753
+ "upload/update_webpage",
1754
+ method="PATCH",
1755
+ params={
1756
+ "web_url": web_url,
1757
+ "source_id": source_id,
1758
+ "tenant_id": tenant_id,
1759
+ "sub_tenant_id": sub_tenant_id,
1760
+ },
1761
+ request_options=request_options,
1762
+ )
1763
+ try:
1764
+ if 200 <= _response.status_code < 300:
1765
+ _data = typing.cast(
1766
+ SingleUploadData,
1767
+ parse_obj_as(
1768
+ type_=SingleUploadData, # type: ignore
1769
+ object_=_response.json(),
1770
+ ),
1771
+ )
1772
+ return HttpResponse(response=_response, data=_data)
1773
+ if _response.status_code == 400:
1774
+ raise BadRequestError(
1775
+ headers=dict(_response.headers),
1776
+ body=typing.cast(
1777
+ ActualErrorResponse,
1778
+ parse_obj_as(
1779
+ type_=ActualErrorResponse, # type: ignore
1780
+ object_=_response.json(),
1781
+ ),
1782
+ ),
1783
+ )
1784
+ if _response.status_code == 401:
1785
+ raise UnauthorizedError(
1786
+ headers=dict(_response.headers),
1787
+ body=typing.cast(
1788
+ ActualErrorResponse,
1789
+ parse_obj_as(
1790
+ type_=ActualErrorResponse, # type: ignore
1791
+ object_=_response.json(),
1792
+ ),
1793
+ ),
1794
+ )
1795
+ if _response.status_code == 403:
1796
+ raise ForbiddenError(
1797
+ headers=dict(_response.headers),
1798
+ body=typing.cast(
1799
+ ActualErrorResponse,
1800
+ parse_obj_as(
1801
+ type_=ActualErrorResponse, # type: ignore
1802
+ object_=_response.json(),
1803
+ ),
1804
+ ),
1805
+ )
1806
+ if _response.status_code == 404:
1807
+ raise NotFoundError(
1808
+ headers=dict(_response.headers),
1809
+ body=typing.cast(
1810
+ ActualErrorResponse,
1811
+ parse_obj_as(
1812
+ type_=ActualErrorResponse, # type: ignore
1813
+ object_=_response.json(),
1814
+ ),
1815
+ ),
1816
+ )
1817
+ if _response.status_code == 422:
1818
+ raise UnprocessableEntityError(
1819
+ headers=dict(_response.headers),
1820
+ body=typing.cast(
1821
+ typing.Optional[typing.Any],
1822
+ parse_obj_as(
1823
+ type_=typing.Optional[typing.Any], # type: ignore
1824
+ object_=_response.json(),
1825
+ ),
1826
+ ),
1827
+ )
1828
+ if _response.status_code == 500:
1829
+ raise InternalServerError(
1830
+ headers=dict(_response.headers),
1831
+ body=typing.cast(
1832
+ ActualErrorResponse,
1833
+ parse_obj_as(
1834
+ type_=ActualErrorResponse, # type: ignore
1835
+ object_=_response.json(),
1836
+ ),
1837
+ ),
1838
+ )
1839
+ if _response.status_code == 503:
1840
+ raise ServiceUnavailableError(
1841
+ headers=dict(_response.headers),
1842
+ body=typing.cast(
1843
+ ActualErrorResponse,
1844
+ parse_obj_as(
1845
+ type_=ActualErrorResponse, # type: ignore
1846
+ object_=_response.json(),
1847
+ ),
1848
+ ),
1849
+ )
1850
+ _response_json = _response.json()
1851
+ except JSONDecodeError:
1852
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
1853
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
1854
+
1855
+ def delete_source(
1856
+ self,
1857
+ *,
1858
+ tenant_id: str,
1859
+ source_ids: typing.Sequence[str],
1860
+ sub_tenant_id: typing.Optional[str] = OMIT,
1861
+ request_options: typing.Optional[RequestOptions] = None,
1862
+ ) -> HttpResponse[typing.Optional[typing.Any]]:
1863
+ """
1864
+ Parameters
1865
+ ----------
1866
+ tenant_id : str
1867
+
1868
+ source_ids : typing.Sequence[str]
1869
+
1870
+ sub_tenant_id : typing.Optional[str]
1871
+
1872
+ request_options : typing.Optional[RequestOptions]
1873
+ Request-specific configuration.
1874
+
1875
+ Returns
1876
+ -------
1877
+ HttpResponse[typing.Optional[typing.Any]]
1878
+ Successful Response
1879
+ """
1880
+ _response = self._client_wrapper.httpx_client.request(
1881
+ "upload/delete_source",
1882
+ method="DELETE",
1883
+ json={
1884
+ "tenant_id": tenant_id,
1885
+ "source_ids": source_ids,
1886
+ "sub_tenant_id": sub_tenant_id,
1887
+ },
1888
+ headers={
1889
+ "content-type": "application/json",
1890
+ },
1891
+ request_options=request_options,
1892
+ omit=OMIT,
1893
+ )
1894
+ try:
1895
+ if _response is None or not _response.text.strip():
1896
+ return HttpResponse(response=_response, data=None)
1897
+ if 200 <= _response.status_code < 300:
1898
+ _data = typing.cast(
1899
+ typing.Optional[typing.Any],
1900
+ parse_obj_as(
1901
+ type_=typing.Optional[typing.Any], # type: ignore
1902
+ object_=_response.json(),
1903
+ ),
1904
+ )
1905
+ return HttpResponse(response=_response, data=_data)
1906
+ if _response.status_code == 422:
1907
+ raise UnprocessableEntityError(
1908
+ headers=dict(_response.headers),
1909
+ body=typing.cast(
1910
+ typing.Optional[typing.Any],
1911
+ parse_obj_as(
1912
+ type_=typing.Optional[typing.Any], # type: ignore
1913
+ object_=_response.json(),
1914
+ ),
1915
+ ),
1916
+ )
1917
+ _response_json = _response.json()
1918
+ except JSONDecodeError:
1919
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
1920
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
1921
+
1922
+ def delete_memory(
1923
+ self,
1924
+ *,
1925
+ tenant_id: str,
1926
+ source_ids: typing.Sequence[str],
1927
+ sub_tenant_id: typing.Optional[str] = OMIT,
1928
+ request_options: typing.Optional[RequestOptions] = None,
1929
+ ) -> HttpResponse[typing.Optional[typing.Any]]:
1930
+ """
1931
+ Parameters
1932
+ ----------
1933
+ tenant_id : str
1934
+
1935
+ source_ids : typing.Sequence[str]
1936
+
1937
+ sub_tenant_id : typing.Optional[str]
1938
+
1939
+ request_options : typing.Optional[RequestOptions]
1940
+ Request-specific configuration.
1941
+
1942
+ Returns
1943
+ -------
1944
+ HttpResponse[typing.Optional[typing.Any]]
1945
+ Successful Response
1946
+ """
1947
+ _response = self._client_wrapper.httpx_client.request(
1948
+ "upload/delete_memory",
1949
+ method="DELETE",
1950
+ json={
1951
+ "tenant_id": tenant_id,
1952
+ "source_ids": source_ids,
1953
+ "sub_tenant_id": sub_tenant_id,
1954
+ },
1955
+ headers={
1956
+ "content-type": "application/json",
1957
+ },
1958
+ request_options=request_options,
1959
+ omit=OMIT,
1960
+ )
1961
+ try:
1962
+ if _response is None or not _response.text.strip():
1963
+ return HttpResponse(response=_response, data=None)
1964
+ if 200 <= _response.status_code < 300:
1965
+ _data = typing.cast(
1966
+ typing.Optional[typing.Any],
1967
+ parse_obj_as(
1968
+ type_=typing.Optional[typing.Any], # type: ignore
1969
+ object_=_response.json(),
1970
+ ),
1971
+ )
1972
+ return HttpResponse(response=_response, data=_data)
1973
+ if _response.status_code == 422:
1974
+ raise UnprocessableEntityError(
1975
+ headers=dict(_response.headers),
1976
+ body=typing.cast(
1977
+ typing.Optional[typing.Any],
1978
+ parse_obj_as(
1979
+ type_=typing.Optional[typing.Any], # type: ignore
1980
+ object_=_response.json(),
1981
+ ),
1982
+ ),
1983
+ )
1984
+ _response_json = _response.json()
1985
+ except JSONDecodeError:
1986
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
1987
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
1988
+
1989
+ def verify_processing(
1990
+ self,
1991
+ *,
1992
+ file_id: str,
1993
+ tenant_id: typing.Optional[str] = None,
1994
+ request_options: typing.Optional[RequestOptions] = None,
1995
+ ) -> HttpResponse[ProcessingStatus]:
1996
+ """
1997
+ Verify the processing status of an uploaded file.
1998
+
1999
+ Returns:
2000
+ ProcessingStatusResponse: Processing status information
2001
+
2002
+ Parameters
2003
+ ----------
2004
+ file_id : str
2005
+
2006
+ tenant_id : typing.Optional[str]
2007
+
2008
+ request_options : typing.Optional[RequestOptions]
2009
+ Request-specific configuration.
2010
+
2011
+ Returns
2012
+ -------
2013
+ HttpResponse[ProcessingStatus]
2014
+ Successful Response
2015
+ """
2016
+ _response = self._client_wrapper.httpx_client.request(
2017
+ "upload/verify_processing",
2018
+ method="POST",
2019
+ params={
2020
+ "file_id": file_id,
2021
+ "tenant_id": tenant_id,
2022
+ },
2023
+ request_options=request_options,
2024
+ )
2025
+ try:
2026
+ if 200 <= _response.status_code < 300:
2027
+ _data = typing.cast(
2028
+ ProcessingStatus,
2029
+ parse_obj_as(
2030
+ type_=ProcessingStatus, # type: ignore
2031
+ object_=_response.json(),
2032
+ ),
2033
+ )
2034
+ return HttpResponse(response=_response, data=_data)
2035
+ if _response.status_code == 400:
2036
+ raise BadRequestError(
2037
+ headers=dict(_response.headers),
2038
+ body=typing.cast(
2039
+ ActualErrorResponse,
2040
+ parse_obj_as(
2041
+ type_=ActualErrorResponse, # type: ignore
2042
+ object_=_response.json(),
2043
+ ),
2044
+ ),
2045
+ )
2046
+ if _response.status_code == 401:
2047
+ raise UnauthorizedError(
2048
+ headers=dict(_response.headers),
2049
+ body=typing.cast(
2050
+ ActualErrorResponse,
2051
+ parse_obj_as(
2052
+ type_=ActualErrorResponse, # type: ignore
2053
+ object_=_response.json(),
2054
+ ),
2055
+ ),
2056
+ )
2057
+ if _response.status_code == 403:
2058
+ raise ForbiddenError(
2059
+ headers=dict(_response.headers),
2060
+ body=typing.cast(
2061
+ ActualErrorResponse,
2062
+ parse_obj_as(
2063
+ type_=ActualErrorResponse, # type: ignore
2064
+ object_=_response.json(),
2065
+ ),
2066
+ ),
2067
+ )
2068
+ if _response.status_code == 404:
2069
+ raise NotFoundError(
2070
+ headers=dict(_response.headers),
2071
+ body=typing.cast(
2072
+ ActualErrorResponse,
2073
+ parse_obj_as(
2074
+ type_=ActualErrorResponse, # type: ignore
2075
+ object_=_response.json(),
2076
+ ),
2077
+ ),
2078
+ )
2079
+ if _response.status_code == 422:
2080
+ raise UnprocessableEntityError(
2081
+ headers=dict(_response.headers),
2082
+ body=typing.cast(
2083
+ typing.Optional[typing.Any],
2084
+ parse_obj_as(
2085
+ type_=typing.Optional[typing.Any], # type: ignore
2086
+ object_=_response.json(),
2087
+ ),
2088
+ ),
2089
+ )
2090
+ if _response.status_code == 500:
2091
+ raise InternalServerError(
2092
+ headers=dict(_response.headers),
2093
+ body=typing.cast(
2094
+ ActualErrorResponse,
2095
+ parse_obj_as(
2096
+ type_=ActualErrorResponse, # type: ignore
2097
+ object_=_response.json(),
2098
+ ),
2099
+ ),
2100
+ )
2101
+ if _response.status_code == 503:
2102
+ raise ServiceUnavailableError(
2103
+ headers=dict(_response.headers),
2104
+ body=typing.cast(
2105
+ ActualErrorResponse,
2106
+ parse_obj_as(
2107
+ type_=ActualErrorResponse, # type: ignore
2108
+ object_=_response.json(),
2109
+ ),
2110
+ ),
2111
+ )
2112
+ _response_json = _response.json()
2113
+ except JSONDecodeError:
2114
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
2115
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
2116
+
2117
+
2118
+ class AsyncRawUploadClient:
2119
+ def __init__(self, *, client_wrapper: AsyncClientWrapper):
2120
+ self._client_wrapper = client_wrapper
2121
+
2122
+ async def batch_upload(
2123
+ self,
2124
+ *,
2125
+ tenant_id: str,
2126
+ files: typing.List[core.File],
2127
+ sub_tenant_id: typing.Optional[str] = None,
2128
+ tenant_metadata: typing.Optional[str] = OMIT,
2129
+ document_metadata: typing.Optional[str] = OMIT,
2130
+ request_options: typing.Optional[RequestOptions] = None,
2131
+ ) -> AsyncHttpResponse[BatchUploadData]:
2132
+ """
2133
+ Parameters
2134
+ ----------
2135
+ tenant_id : str
2136
+
2137
+ files : typing.List[core.File]
2138
+ See core.File for more documentation
2139
+
2140
+ sub_tenant_id : typing.Optional[str]
2141
+
2142
+ tenant_metadata : typing.Optional[str]
2143
+
2144
+ document_metadata : typing.Optional[str]
2145
+
2146
+ request_options : typing.Optional[RequestOptions]
2147
+ Request-specific configuration.
2148
+
2149
+ Returns
2150
+ -------
2151
+ AsyncHttpResponse[BatchUploadData]
2152
+ Successful Response
2153
+ """
2154
+ _response = await self._client_wrapper.httpx_client.request(
2155
+ "upload/batch_upload",
2156
+ method="POST",
2157
+ params={
2158
+ "tenant_id": tenant_id,
2159
+ "sub_tenant_id": sub_tenant_id,
2160
+ },
2161
+ data={
2162
+ "tenant_metadata": tenant_metadata,
2163
+ "document_metadata": document_metadata,
2164
+ },
2165
+ files={
2166
+ "files": files,
2167
+ },
2168
+ request_options=request_options,
2169
+ omit=OMIT,
2170
+ force_multipart=True,
2171
+ )
2172
+ try:
2173
+ if 200 <= _response.status_code < 300:
2174
+ _data = typing.cast(
2175
+ BatchUploadData,
2176
+ parse_obj_as(
2177
+ type_=BatchUploadData, # type: ignore
2178
+ object_=_response.json(),
2179
+ ),
2180
+ )
2181
+ return AsyncHttpResponse(response=_response, data=_data)
2182
+ if _response.status_code == 400:
2183
+ raise BadRequestError(
2184
+ headers=dict(_response.headers),
2185
+ body=typing.cast(
2186
+ ActualErrorResponse,
2187
+ parse_obj_as(
2188
+ type_=ActualErrorResponse, # type: ignore
2189
+ object_=_response.json(),
2190
+ ),
2191
+ ),
2192
+ )
2193
+ if _response.status_code == 401:
2194
+ raise UnauthorizedError(
2195
+ headers=dict(_response.headers),
2196
+ body=typing.cast(
2197
+ ActualErrorResponse,
2198
+ parse_obj_as(
2199
+ type_=ActualErrorResponse, # type: ignore
2200
+ object_=_response.json(),
2201
+ ),
2202
+ ),
2203
+ )
2204
+ if _response.status_code == 403:
2205
+ raise ForbiddenError(
2206
+ headers=dict(_response.headers),
2207
+ body=typing.cast(
2208
+ ActualErrorResponse,
2209
+ parse_obj_as(
2210
+ type_=ActualErrorResponse, # type: ignore
2211
+ object_=_response.json(),
2212
+ ),
2213
+ ),
2214
+ )
2215
+ if _response.status_code == 404:
2216
+ raise NotFoundError(
2217
+ headers=dict(_response.headers),
2218
+ body=typing.cast(
2219
+ ActualErrorResponse,
2220
+ parse_obj_as(
2221
+ type_=ActualErrorResponse, # type: ignore
2222
+ object_=_response.json(),
2223
+ ),
2224
+ ),
2225
+ )
2226
+ if _response.status_code == 422:
2227
+ raise UnprocessableEntityError(
2228
+ headers=dict(_response.headers),
2229
+ body=typing.cast(
2230
+ typing.Optional[typing.Any],
2231
+ parse_obj_as(
2232
+ type_=typing.Optional[typing.Any], # type: ignore
2233
+ object_=_response.json(),
2234
+ ),
2235
+ ),
2236
+ )
2237
+ if _response.status_code == 500:
2238
+ raise InternalServerError(
2239
+ headers=dict(_response.headers),
2240
+ body=typing.cast(
2241
+ ActualErrorResponse,
2242
+ parse_obj_as(
2243
+ type_=ActualErrorResponse, # type: ignore
2244
+ object_=_response.json(),
2245
+ ),
2246
+ ),
2247
+ )
2248
+ if _response.status_code == 503:
2249
+ raise ServiceUnavailableError(
2250
+ headers=dict(_response.headers),
2251
+ body=typing.cast(
2252
+ ActualErrorResponse,
2253
+ parse_obj_as(
2254
+ type_=ActualErrorResponse, # type: ignore
2255
+ object_=_response.json(),
2256
+ ),
2257
+ ),
2258
+ )
2259
+ _response_json = _response.json()
2260
+ except JSONDecodeError:
2261
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
2262
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
2263
+
2264
+ async def batch_update(
2265
+ self,
2266
+ *,
2267
+ tenant_id: str,
2268
+ files: typing.List[core.File],
2269
+ sub_tenant_id: typing.Optional[str] = None,
2270
+ source_ids: typing.Optional[typing.List[str]] = OMIT,
2271
+ tenant_metadata: typing.Optional[str] = OMIT,
2272
+ document_metadata: typing.Optional[str] = OMIT,
2273
+ request_options: typing.Optional[RequestOptions] = None,
2274
+ ) -> AsyncHttpResponse[BatchUploadData]:
2275
+ """
2276
+ Parameters
2277
+ ----------
2278
+ tenant_id : str
2279
+
2280
+ files : typing.List[core.File]
2281
+ See core.File for more documentation
2282
+
2283
+ sub_tenant_id : typing.Optional[str]
2284
+
2285
+ source_ids : typing.Optional[typing.List[str]]
2286
+
2287
+ tenant_metadata : typing.Optional[str]
2288
+
2289
+ document_metadata : typing.Optional[str]
2290
+
2291
+ request_options : typing.Optional[RequestOptions]
2292
+ Request-specific configuration.
2293
+
2294
+ Returns
2295
+ -------
2296
+ AsyncHttpResponse[BatchUploadData]
2297
+ Successful Response
2298
+ """
2299
+ _response = await self._client_wrapper.httpx_client.request(
2300
+ "upload/batch_update",
2301
+ method="PATCH",
2302
+ params={
2303
+ "tenant_id": tenant_id,
2304
+ "sub_tenant_id": sub_tenant_id,
2305
+ },
2306
+ data={
2307
+ "source_ids": source_ids,
2308
+ "tenant_metadata": tenant_metadata,
2309
+ "document_metadata": document_metadata,
2310
+ },
2311
+ files={
2312
+ "files": files,
2313
+ },
2314
+ request_options=request_options,
2315
+ omit=OMIT,
2316
+ force_multipart=True,
2317
+ )
2318
+ try:
2319
+ if 200 <= _response.status_code < 300:
2320
+ _data = typing.cast(
2321
+ BatchUploadData,
2322
+ parse_obj_as(
2323
+ type_=BatchUploadData, # type: ignore
2324
+ object_=_response.json(),
2325
+ ),
2326
+ )
2327
+ return AsyncHttpResponse(response=_response, data=_data)
2328
+ if _response.status_code == 400:
2329
+ raise BadRequestError(
2330
+ headers=dict(_response.headers),
2331
+ body=typing.cast(
2332
+ ActualErrorResponse,
2333
+ parse_obj_as(
2334
+ type_=ActualErrorResponse, # type: ignore
2335
+ object_=_response.json(),
2336
+ ),
2337
+ ),
2338
+ )
2339
+ if _response.status_code == 401:
2340
+ raise UnauthorizedError(
2341
+ headers=dict(_response.headers),
2342
+ body=typing.cast(
2343
+ ActualErrorResponse,
2344
+ parse_obj_as(
2345
+ type_=ActualErrorResponse, # type: ignore
2346
+ object_=_response.json(),
2347
+ ),
2348
+ ),
2349
+ )
2350
+ if _response.status_code == 403:
2351
+ raise ForbiddenError(
2352
+ headers=dict(_response.headers),
2353
+ body=typing.cast(
2354
+ ActualErrorResponse,
2355
+ parse_obj_as(
2356
+ type_=ActualErrorResponse, # type: ignore
2357
+ object_=_response.json(),
2358
+ ),
2359
+ ),
2360
+ )
2361
+ if _response.status_code == 404:
2362
+ raise NotFoundError(
2363
+ headers=dict(_response.headers),
2364
+ body=typing.cast(
2365
+ ActualErrorResponse,
2366
+ parse_obj_as(
2367
+ type_=ActualErrorResponse, # type: ignore
2368
+ object_=_response.json(),
2369
+ ),
2370
+ ),
2371
+ )
2372
+ if _response.status_code == 422:
2373
+ raise UnprocessableEntityError(
2374
+ headers=dict(_response.headers),
2375
+ body=typing.cast(
2376
+ typing.Optional[typing.Any],
2377
+ parse_obj_as(
2378
+ type_=typing.Optional[typing.Any], # type: ignore
2379
+ object_=_response.json(),
2380
+ ),
2381
+ ),
2382
+ )
2383
+ if _response.status_code == 500:
2384
+ raise InternalServerError(
2385
+ headers=dict(_response.headers),
2386
+ body=typing.cast(
2387
+ ActualErrorResponse,
2388
+ parse_obj_as(
2389
+ type_=ActualErrorResponse, # type: ignore
2390
+ object_=_response.json(),
2391
+ ),
2392
+ ),
2393
+ )
2394
+ if _response.status_code == 503:
2395
+ raise ServiceUnavailableError(
2396
+ headers=dict(_response.headers),
2397
+ body=typing.cast(
2398
+ ActualErrorResponse,
2399
+ parse_obj_as(
2400
+ type_=ActualErrorResponse, # type: ignore
2401
+ object_=_response.json(),
2402
+ ),
2403
+ ),
2404
+ )
2405
+ _response_json = _response.json()
2406
+ except JSONDecodeError:
2407
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
2408
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
2409
+
2410
+ async def upload_document(
2411
+ self,
2412
+ *,
2413
+ tenant_id: str,
2414
+ file: core.File,
2415
+ sub_tenant_id: typing.Optional[str] = None,
2416
+ tenant_metadata: typing.Optional[str] = OMIT,
2417
+ document_metadata: typing.Optional[str] = OMIT,
2418
+ request_options: typing.Optional[RequestOptions] = None,
2419
+ ) -> AsyncHttpResponse[SingleUploadData]:
2420
+ """
2421
+ Parameters
2422
+ ----------
2423
+ tenant_id : str
2424
+
2425
+ file : core.File
2426
+ See core.File for more documentation
2427
+
2428
+ sub_tenant_id : typing.Optional[str]
2429
+
2430
+ tenant_metadata : typing.Optional[str]
2431
+
2432
+ document_metadata : typing.Optional[str]
2433
+
2434
+ request_options : typing.Optional[RequestOptions]
2435
+ Request-specific configuration.
2436
+
2437
+ Returns
2438
+ -------
2439
+ AsyncHttpResponse[SingleUploadData]
2440
+ Successful Response
2441
+ """
2442
+ _response = await self._client_wrapper.httpx_client.request(
2443
+ "upload/upload_document",
2444
+ method="POST",
2445
+ params={
2446
+ "tenant_id": tenant_id,
2447
+ "sub_tenant_id": sub_tenant_id,
2448
+ },
2449
+ data={
2450
+ "tenant_metadata": tenant_metadata,
2451
+ "document_metadata": document_metadata,
2452
+ },
2453
+ files={
2454
+ "file": file,
2455
+ },
2456
+ request_options=request_options,
2457
+ omit=OMIT,
2458
+ force_multipart=True,
2459
+ )
2460
+ try:
2461
+ if 200 <= _response.status_code < 300:
2462
+ _data = typing.cast(
2463
+ SingleUploadData,
2464
+ parse_obj_as(
2465
+ type_=SingleUploadData, # type: ignore
2466
+ object_=_response.json(),
2467
+ ),
2468
+ )
2469
+ return AsyncHttpResponse(response=_response, data=_data)
2470
+ if _response.status_code == 400:
2471
+ raise BadRequestError(
2472
+ headers=dict(_response.headers),
2473
+ body=typing.cast(
2474
+ ActualErrorResponse,
2475
+ parse_obj_as(
2476
+ type_=ActualErrorResponse, # type: ignore
2477
+ object_=_response.json(),
2478
+ ),
2479
+ ),
2480
+ )
2481
+ if _response.status_code == 401:
2482
+ raise UnauthorizedError(
2483
+ headers=dict(_response.headers),
2484
+ body=typing.cast(
2485
+ ActualErrorResponse,
2486
+ parse_obj_as(
2487
+ type_=ActualErrorResponse, # type: ignore
2488
+ object_=_response.json(),
2489
+ ),
2490
+ ),
2491
+ )
2492
+ if _response.status_code == 403:
2493
+ raise ForbiddenError(
2494
+ headers=dict(_response.headers),
2495
+ body=typing.cast(
2496
+ ActualErrorResponse,
2497
+ parse_obj_as(
2498
+ type_=ActualErrorResponse, # type: ignore
2499
+ object_=_response.json(),
2500
+ ),
2501
+ ),
2502
+ )
2503
+ if _response.status_code == 404:
2504
+ raise NotFoundError(
2505
+ headers=dict(_response.headers),
2506
+ body=typing.cast(
2507
+ ActualErrorResponse,
2508
+ parse_obj_as(
2509
+ type_=ActualErrorResponse, # type: ignore
2510
+ object_=_response.json(),
2511
+ ),
2512
+ ),
2513
+ )
2514
+ if _response.status_code == 422:
2515
+ raise UnprocessableEntityError(
2516
+ headers=dict(_response.headers),
2517
+ body=typing.cast(
2518
+ typing.Optional[typing.Any],
2519
+ parse_obj_as(
2520
+ type_=typing.Optional[typing.Any], # type: ignore
2521
+ object_=_response.json(),
2522
+ ),
2523
+ ),
2524
+ )
2525
+ if _response.status_code == 500:
2526
+ raise InternalServerError(
2527
+ headers=dict(_response.headers),
2528
+ body=typing.cast(
2529
+ ActualErrorResponse,
2530
+ parse_obj_as(
2531
+ type_=ActualErrorResponse, # type: ignore
2532
+ object_=_response.json(),
2533
+ ),
2534
+ ),
2535
+ )
2536
+ if _response.status_code == 503:
2537
+ raise ServiceUnavailableError(
2538
+ headers=dict(_response.headers),
2539
+ body=typing.cast(
2540
+ ActualErrorResponse,
2541
+ parse_obj_as(
2542
+ type_=ActualErrorResponse, # type: ignore
2543
+ object_=_response.json(),
2544
+ ),
2545
+ ),
2546
+ )
2547
+ _response_json = _response.json()
2548
+ except JSONDecodeError:
2549
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
2550
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
2551
+
2552
+ async def update_document(
2553
+ self,
2554
+ *,
2555
+ source_id: str,
2556
+ tenant_id: str,
2557
+ file: core.File,
2558
+ sub_tenant_id: typing.Optional[str] = None,
2559
+ tenant_metadata: typing.Optional[str] = OMIT,
2560
+ document_metadata: typing.Optional[str] = OMIT,
2561
+ request_options: typing.Optional[RequestOptions] = None,
2562
+ ) -> AsyncHttpResponse[SingleUploadData]:
2563
+ """
2564
+ Parameters
2565
+ ----------
2566
+ source_id : str
2567
+
2568
+ tenant_id : str
2569
+
2570
+ file : core.File
2571
+ See core.File for more documentation
2572
+
2573
+ sub_tenant_id : typing.Optional[str]
2574
+
2575
+ tenant_metadata : typing.Optional[str]
2576
+
2577
+ document_metadata : typing.Optional[str]
2578
+
2579
+ request_options : typing.Optional[RequestOptions]
2580
+ Request-specific configuration.
2581
+
2582
+ Returns
2583
+ -------
2584
+ AsyncHttpResponse[SingleUploadData]
2585
+ Successful Response
2586
+ """
2587
+ _response = await self._client_wrapper.httpx_client.request(
2588
+ "upload/update_document",
2589
+ method="PATCH",
2590
+ params={
2591
+ "source_id": source_id,
2592
+ "tenant_id": tenant_id,
2593
+ "sub_tenant_id": sub_tenant_id,
2594
+ },
2595
+ data={
2596
+ "tenant_metadata": tenant_metadata,
2597
+ "document_metadata": document_metadata,
2598
+ },
2599
+ files={
2600
+ "file": file,
2601
+ },
2602
+ request_options=request_options,
2603
+ omit=OMIT,
2604
+ force_multipart=True,
2605
+ )
2606
+ try:
2607
+ if 200 <= _response.status_code < 300:
2608
+ _data = typing.cast(
2609
+ SingleUploadData,
2610
+ parse_obj_as(
2611
+ type_=SingleUploadData, # type: ignore
2612
+ object_=_response.json(),
2613
+ ),
2614
+ )
2615
+ return AsyncHttpResponse(response=_response, data=_data)
2616
+ if _response.status_code == 400:
2617
+ raise BadRequestError(
2618
+ headers=dict(_response.headers),
2619
+ body=typing.cast(
2620
+ ActualErrorResponse,
2621
+ parse_obj_as(
2622
+ type_=ActualErrorResponse, # type: ignore
2623
+ object_=_response.json(),
2624
+ ),
2625
+ ),
2626
+ )
2627
+ if _response.status_code == 401:
2628
+ raise UnauthorizedError(
2629
+ headers=dict(_response.headers),
2630
+ body=typing.cast(
2631
+ ActualErrorResponse,
2632
+ parse_obj_as(
2633
+ type_=ActualErrorResponse, # type: ignore
2634
+ object_=_response.json(),
2635
+ ),
2636
+ ),
2637
+ )
2638
+ if _response.status_code == 403:
2639
+ raise ForbiddenError(
2640
+ headers=dict(_response.headers),
2641
+ body=typing.cast(
2642
+ ActualErrorResponse,
2643
+ parse_obj_as(
2644
+ type_=ActualErrorResponse, # type: ignore
2645
+ object_=_response.json(),
2646
+ ),
2647
+ ),
2648
+ )
2649
+ if _response.status_code == 404:
2650
+ raise NotFoundError(
2651
+ headers=dict(_response.headers),
2652
+ body=typing.cast(
2653
+ ActualErrorResponse,
2654
+ parse_obj_as(
2655
+ type_=ActualErrorResponse, # type: ignore
2656
+ object_=_response.json(),
2657
+ ),
2658
+ ),
2659
+ )
2660
+ if _response.status_code == 422:
2661
+ raise UnprocessableEntityError(
2662
+ headers=dict(_response.headers),
2663
+ body=typing.cast(
2664
+ typing.Optional[typing.Any],
2665
+ parse_obj_as(
2666
+ type_=typing.Optional[typing.Any], # type: ignore
2667
+ object_=_response.json(),
2668
+ ),
2669
+ ),
2670
+ )
2671
+ if _response.status_code == 500:
2672
+ raise InternalServerError(
2673
+ headers=dict(_response.headers),
2674
+ body=typing.cast(
2675
+ ActualErrorResponse,
2676
+ parse_obj_as(
2677
+ type_=ActualErrorResponse, # type: ignore
2678
+ object_=_response.json(),
2679
+ ),
2680
+ ),
2681
+ )
2682
+ if _response.status_code == 503:
2683
+ raise ServiceUnavailableError(
2684
+ headers=dict(_response.headers),
2685
+ body=typing.cast(
2686
+ ActualErrorResponse,
2687
+ parse_obj_as(
2688
+ type_=ActualErrorResponse, # type: ignore
2689
+ object_=_response.json(),
2690
+ ),
2691
+ ),
2692
+ )
2693
+ _response_json = _response.json()
2694
+ except JSONDecodeError:
2695
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
2696
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
2697
+
2698
+ async def upload_app_sources(
2699
+ self,
2700
+ *,
2701
+ tenant_id: str,
2702
+ request: typing.Sequence[SourceModel],
2703
+ sub_tenant_id: typing.Optional[str] = None,
2704
+ request_options: typing.Optional[RequestOptions] = None,
2705
+ ) -> AsyncHttpResponse[AppSourcesUploadData]:
2706
+ """
2707
+ Parameters
2708
+ ----------
2709
+ tenant_id : str
2710
+
2711
+ request : typing.Sequence[SourceModel]
2712
+
2713
+ sub_tenant_id : typing.Optional[str]
2714
+
2715
+ request_options : typing.Optional[RequestOptions]
2716
+ Request-specific configuration.
2717
+
2718
+ Returns
2719
+ -------
2720
+ AsyncHttpResponse[AppSourcesUploadData]
2721
+ Successful Response
2722
+ """
2723
+ _response = await self._client_wrapper.httpx_client.request(
2724
+ "upload/upload_app_sources",
2725
+ method="POST",
2726
+ params={
2727
+ "tenant_id": tenant_id,
2728
+ "sub_tenant_id": sub_tenant_id,
2729
+ },
2730
+ json=convert_and_respect_annotation_metadata(
2731
+ object_=request, annotation=typing.Sequence[SourceModel], direction="write"
2732
+ ),
2733
+ headers={
2734
+ "content-type": "application/json",
2735
+ },
2736
+ request_options=request_options,
2737
+ omit=OMIT,
2738
+ )
2739
+ try:
2740
+ if 200 <= _response.status_code < 300:
2741
+ _data = typing.cast(
2742
+ AppSourcesUploadData,
2743
+ parse_obj_as(
2744
+ type_=AppSourcesUploadData, # type: ignore
2745
+ object_=_response.json(),
2746
+ ),
2747
+ )
2748
+ return AsyncHttpResponse(response=_response, data=_data)
2749
+ if _response.status_code == 400:
2750
+ raise BadRequestError(
2751
+ headers=dict(_response.headers),
2752
+ body=typing.cast(
2753
+ ActualErrorResponse,
2754
+ parse_obj_as(
2755
+ type_=ActualErrorResponse, # type: ignore
2756
+ object_=_response.json(),
2757
+ ),
2758
+ ),
2759
+ )
2760
+ if _response.status_code == 401:
2761
+ raise UnauthorizedError(
2762
+ headers=dict(_response.headers),
2763
+ body=typing.cast(
2764
+ ActualErrorResponse,
2765
+ parse_obj_as(
2766
+ type_=ActualErrorResponse, # type: ignore
2767
+ object_=_response.json(),
2768
+ ),
2769
+ ),
2770
+ )
2771
+ if _response.status_code == 403:
2772
+ raise ForbiddenError(
2773
+ headers=dict(_response.headers),
2774
+ body=typing.cast(
2775
+ ActualErrorResponse,
2776
+ parse_obj_as(
2777
+ type_=ActualErrorResponse, # type: ignore
2778
+ object_=_response.json(),
2779
+ ),
2780
+ ),
2781
+ )
2782
+ if _response.status_code == 404:
2783
+ raise NotFoundError(
2784
+ headers=dict(_response.headers),
2785
+ body=typing.cast(
2786
+ ActualErrorResponse,
2787
+ parse_obj_as(
2788
+ type_=ActualErrorResponse, # type: ignore
2789
+ object_=_response.json(),
2790
+ ),
2791
+ ),
2792
+ )
2793
+ if _response.status_code == 422:
2794
+ raise UnprocessableEntityError(
2795
+ headers=dict(_response.headers),
2796
+ body=typing.cast(
2797
+ typing.Optional[typing.Any],
2798
+ parse_obj_as(
2799
+ type_=typing.Optional[typing.Any], # type: ignore
2800
+ object_=_response.json(),
2801
+ ),
2802
+ ),
2803
+ )
2804
+ if _response.status_code == 500:
2805
+ raise InternalServerError(
2806
+ headers=dict(_response.headers),
2807
+ body=typing.cast(
2808
+ ActualErrorResponse,
2809
+ parse_obj_as(
2810
+ type_=ActualErrorResponse, # type: ignore
2811
+ object_=_response.json(),
2812
+ ),
2813
+ ),
2814
+ )
2815
+ if _response.status_code == 503:
2816
+ raise ServiceUnavailableError(
2817
+ headers=dict(_response.headers),
2818
+ body=typing.cast(
2819
+ ActualErrorResponse,
2820
+ parse_obj_as(
2821
+ type_=ActualErrorResponse, # type: ignore
2822
+ object_=_response.json(),
2823
+ ),
2824
+ ),
2825
+ )
2826
+ _response_json = _response.json()
2827
+ except JSONDecodeError:
2828
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
2829
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
2830
+
2831
+ async def upload_markdown(
2832
+ self,
2833
+ *,
2834
+ tenant_id: str,
2835
+ content: str,
2836
+ sub_tenant_id: typing.Optional[str] = None,
2837
+ tenant_metadata: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = OMIT,
2838
+ document_metadata: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = OMIT,
2839
+ request_options: typing.Optional[RequestOptions] = None,
2840
+ ) -> AsyncHttpResponse[SingleUploadData]:
2841
+ """
2842
+ Upload markdown content. If request.document_metadata contains a 'file_id' key (non-empty), it will be used as the file ID;
2843
+ otherwise, a new file_id will be generated for that file. This allows file-specific IDs to be set directly in the metadata.
2844
+
2845
+ Parameters
2846
+ ----------
2847
+ tenant_id : str
2848
+
2849
+ content : str
2850
+
2851
+ sub_tenant_id : typing.Optional[str]
2852
+
2853
+ tenant_metadata : typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]]
2854
+
2855
+ document_metadata : typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]]
2856
+
2857
+ request_options : typing.Optional[RequestOptions]
2858
+ Request-specific configuration.
2859
+
2860
+ Returns
2861
+ -------
2862
+ AsyncHttpResponse[SingleUploadData]
2863
+ Successful Response
2864
+ """
2865
+ _response = await self._client_wrapper.httpx_client.request(
2866
+ "upload/upload_markdown",
2867
+ method="POST",
2868
+ params={
2869
+ "tenant_id": tenant_id,
2870
+ "sub_tenant_id": sub_tenant_id,
2871
+ },
2872
+ json={
2873
+ "content": content,
2874
+ "tenant_metadata": tenant_metadata,
2875
+ "document_metadata": document_metadata,
2876
+ },
2877
+ headers={
2878
+ "content-type": "application/json",
2879
+ },
2880
+ request_options=request_options,
2881
+ omit=OMIT,
2882
+ )
2883
+ try:
2884
+ if 200 <= _response.status_code < 300:
2885
+ _data = typing.cast(
2886
+ SingleUploadData,
2887
+ parse_obj_as(
2888
+ type_=SingleUploadData, # type: ignore
2889
+ object_=_response.json(),
2890
+ ),
2891
+ )
2892
+ return AsyncHttpResponse(response=_response, data=_data)
2893
+ if _response.status_code == 400:
2894
+ raise BadRequestError(
2895
+ headers=dict(_response.headers),
2896
+ body=typing.cast(
2897
+ ActualErrorResponse,
2898
+ parse_obj_as(
2899
+ type_=ActualErrorResponse, # type: ignore
2900
+ object_=_response.json(),
2901
+ ),
2902
+ ),
2903
+ )
2904
+ if _response.status_code == 401:
2905
+ raise UnauthorizedError(
2906
+ headers=dict(_response.headers),
2907
+ body=typing.cast(
2908
+ ActualErrorResponse,
2909
+ parse_obj_as(
2910
+ type_=ActualErrorResponse, # type: ignore
2911
+ object_=_response.json(),
2912
+ ),
2913
+ ),
2914
+ )
2915
+ if _response.status_code == 403:
2916
+ raise ForbiddenError(
2917
+ headers=dict(_response.headers),
2918
+ body=typing.cast(
2919
+ ActualErrorResponse,
2920
+ parse_obj_as(
2921
+ type_=ActualErrorResponse, # type: ignore
2922
+ object_=_response.json(),
2923
+ ),
2924
+ ),
2925
+ )
2926
+ if _response.status_code == 404:
2927
+ raise NotFoundError(
2928
+ headers=dict(_response.headers),
2929
+ body=typing.cast(
2930
+ ActualErrorResponse,
2931
+ parse_obj_as(
2932
+ type_=ActualErrorResponse, # type: ignore
2933
+ object_=_response.json(),
2934
+ ),
2935
+ ),
2936
+ )
2937
+ if _response.status_code == 422:
2938
+ raise UnprocessableEntityError(
2939
+ headers=dict(_response.headers),
2940
+ body=typing.cast(
2941
+ typing.Optional[typing.Any],
2942
+ parse_obj_as(
2943
+ type_=typing.Optional[typing.Any], # type: ignore
2944
+ object_=_response.json(),
2945
+ ),
2946
+ ),
2947
+ )
2948
+ if _response.status_code == 500:
2949
+ raise InternalServerError(
2950
+ headers=dict(_response.headers),
2951
+ body=typing.cast(
2952
+ ActualErrorResponse,
2953
+ parse_obj_as(
2954
+ type_=ActualErrorResponse, # type: ignore
2955
+ object_=_response.json(),
2956
+ ),
2957
+ ),
2958
+ )
2959
+ if _response.status_code == 503:
2960
+ raise ServiceUnavailableError(
2961
+ headers=dict(_response.headers),
2962
+ body=typing.cast(
2963
+ ActualErrorResponse,
2964
+ parse_obj_as(
2965
+ type_=ActualErrorResponse, # type: ignore
2966
+ object_=_response.json(),
2967
+ ),
2968
+ ),
2969
+ )
2970
+ _response_json = _response.json()
2971
+ except JSONDecodeError:
2972
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
2973
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
2974
+
2975
+ async def upload_text(
2976
+ self,
2977
+ *,
2978
+ tenant_id: str,
2979
+ content: str,
2980
+ sub_tenant_id: typing.Optional[str] = None,
2981
+ tenant_metadata: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = OMIT,
2982
+ document_metadata: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = OMIT,
2983
+ request_options: typing.Optional[RequestOptions] = None,
2984
+ ) -> AsyncHttpResponse[SingleUploadData]:
2985
+ """
2986
+ Upload markdown content. If request.document_metadata contains a 'file_id' key (non-empty), it will be used as the file ID;
2987
+ otherwise, a new file_id will be generated for that file. This allows file-specific IDs to be set directly in the metadata.
2988
+
2989
+ Parameters
2990
+ ----------
2991
+ tenant_id : str
2992
+
2993
+ content : str
2994
+
2995
+ sub_tenant_id : typing.Optional[str]
2996
+
2997
+ tenant_metadata : typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]]
2998
+
2999
+ document_metadata : typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]]
3000
+
3001
+ request_options : typing.Optional[RequestOptions]
3002
+ Request-specific configuration.
3003
+
3004
+ Returns
3005
+ -------
3006
+ AsyncHttpResponse[SingleUploadData]
3007
+ Successful Response
3008
+ """
3009
+ _response = await self._client_wrapper.httpx_client.request(
3010
+ "upload/upload_text",
3011
+ method="POST",
3012
+ params={
3013
+ "tenant_id": tenant_id,
3014
+ "sub_tenant_id": sub_tenant_id,
3015
+ },
3016
+ json={
3017
+ "content": content,
3018
+ "tenant_metadata": tenant_metadata,
3019
+ "document_metadata": document_metadata,
3020
+ },
3021
+ headers={
3022
+ "content-type": "application/json",
3023
+ },
3024
+ request_options=request_options,
3025
+ omit=OMIT,
3026
+ )
3027
+ try:
3028
+ if 200 <= _response.status_code < 300:
3029
+ _data = typing.cast(
3030
+ SingleUploadData,
3031
+ parse_obj_as(
3032
+ type_=SingleUploadData, # type: ignore
3033
+ object_=_response.json(),
3034
+ ),
3035
+ )
3036
+ return AsyncHttpResponse(response=_response, data=_data)
3037
+ if _response.status_code == 400:
3038
+ raise BadRequestError(
3039
+ headers=dict(_response.headers),
3040
+ body=typing.cast(
3041
+ ActualErrorResponse,
3042
+ parse_obj_as(
3043
+ type_=ActualErrorResponse, # type: ignore
3044
+ object_=_response.json(),
3045
+ ),
3046
+ ),
3047
+ )
3048
+ if _response.status_code == 401:
3049
+ raise UnauthorizedError(
3050
+ headers=dict(_response.headers),
3051
+ body=typing.cast(
3052
+ ActualErrorResponse,
3053
+ parse_obj_as(
3054
+ type_=ActualErrorResponse, # type: ignore
3055
+ object_=_response.json(),
3056
+ ),
3057
+ ),
3058
+ )
3059
+ if _response.status_code == 403:
3060
+ raise ForbiddenError(
3061
+ headers=dict(_response.headers),
3062
+ body=typing.cast(
3063
+ ActualErrorResponse,
3064
+ parse_obj_as(
3065
+ type_=ActualErrorResponse, # type: ignore
3066
+ object_=_response.json(),
3067
+ ),
3068
+ ),
3069
+ )
3070
+ if _response.status_code == 404:
3071
+ raise NotFoundError(
3072
+ headers=dict(_response.headers),
3073
+ body=typing.cast(
3074
+ ActualErrorResponse,
3075
+ parse_obj_as(
3076
+ type_=ActualErrorResponse, # type: ignore
3077
+ object_=_response.json(),
3078
+ ),
3079
+ ),
3080
+ )
3081
+ if _response.status_code == 422:
3082
+ raise UnprocessableEntityError(
3083
+ headers=dict(_response.headers),
3084
+ body=typing.cast(
3085
+ typing.Optional[typing.Any],
3086
+ parse_obj_as(
3087
+ type_=typing.Optional[typing.Any], # type: ignore
3088
+ object_=_response.json(),
3089
+ ),
3090
+ ),
3091
+ )
3092
+ if _response.status_code == 500:
3093
+ raise InternalServerError(
3094
+ headers=dict(_response.headers),
3095
+ body=typing.cast(
3096
+ ActualErrorResponse,
3097
+ parse_obj_as(
3098
+ type_=ActualErrorResponse, # type: ignore
3099
+ object_=_response.json(),
3100
+ ),
3101
+ ),
3102
+ )
3103
+ if _response.status_code == 503:
3104
+ raise ServiceUnavailableError(
3105
+ headers=dict(_response.headers),
3106
+ body=typing.cast(
3107
+ ActualErrorResponse,
3108
+ parse_obj_as(
3109
+ type_=ActualErrorResponse, # type: ignore
3110
+ object_=_response.json(),
3111
+ ),
3112
+ ),
3113
+ )
3114
+ _response_json = _response.json()
3115
+ except JSONDecodeError:
3116
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
3117
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
3118
+
3119
+ async def update_markdown(
3120
+ self,
3121
+ *,
3122
+ source_id: str,
3123
+ tenant_id: str,
3124
+ content: str,
3125
+ sub_tenant_id: typing.Optional[str] = None,
3126
+ tenant_metadata: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = OMIT,
3127
+ document_metadata: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = OMIT,
3128
+ request_options: typing.Optional[RequestOptions] = None,
3129
+ ) -> AsyncHttpResponse[SingleUploadData]:
3130
+ """
3131
+ Parameters
3132
+ ----------
3133
+ source_id : str
3134
+
3135
+ tenant_id : str
3136
+
3137
+ content : str
3138
+
3139
+ sub_tenant_id : typing.Optional[str]
3140
+
3141
+ tenant_metadata : typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]]
3142
+
3143
+ document_metadata : typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]]
3144
+
3145
+ request_options : typing.Optional[RequestOptions]
3146
+ Request-specific configuration.
3147
+
3148
+ Returns
3149
+ -------
3150
+ AsyncHttpResponse[SingleUploadData]
3151
+ Successful Response
3152
+ """
3153
+ _response = await self._client_wrapper.httpx_client.request(
3154
+ "upload/update_markdown",
3155
+ method="PATCH",
3156
+ params={
3157
+ "source_id": source_id,
3158
+ "tenant_id": tenant_id,
3159
+ "sub_tenant_id": sub_tenant_id,
3160
+ },
3161
+ json={
3162
+ "content": content,
3163
+ "tenant_metadata": tenant_metadata,
3164
+ "document_metadata": document_metadata,
3165
+ },
3166
+ headers={
3167
+ "content-type": "application/json",
3168
+ },
3169
+ request_options=request_options,
3170
+ omit=OMIT,
3171
+ )
3172
+ try:
3173
+ if 200 <= _response.status_code < 300:
3174
+ _data = typing.cast(
3175
+ SingleUploadData,
3176
+ parse_obj_as(
3177
+ type_=SingleUploadData, # type: ignore
3178
+ object_=_response.json(),
3179
+ ),
3180
+ )
3181
+ return AsyncHttpResponse(response=_response, data=_data)
3182
+ if _response.status_code == 400:
3183
+ raise BadRequestError(
3184
+ headers=dict(_response.headers),
3185
+ body=typing.cast(
3186
+ ActualErrorResponse,
3187
+ parse_obj_as(
3188
+ type_=ActualErrorResponse, # type: ignore
3189
+ object_=_response.json(),
3190
+ ),
3191
+ ),
3192
+ )
3193
+ if _response.status_code == 401:
3194
+ raise UnauthorizedError(
3195
+ headers=dict(_response.headers),
3196
+ body=typing.cast(
3197
+ ActualErrorResponse,
3198
+ parse_obj_as(
3199
+ type_=ActualErrorResponse, # type: ignore
3200
+ object_=_response.json(),
3201
+ ),
3202
+ ),
3203
+ )
3204
+ if _response.status_code == 403:
3205
+ raise ForbiddenError(
3206
+ headers=dict(_response.headers),
3207
+ body=typing.cast(
3208
+ ActualErrorResponse,
3209
+ parse_obj_as(
3210
+ type_=ActualErrorResponse, # type: ignore
3211
+ object_=_response.json(),
3212
+ ),
3213
+ ),
3214
+ )
3215
+ if _response.status_code == 404:
3216
+ raise NotFoundError(
3217
+ headers=dict(_response.headers),
3218
+ body=typing.cast(
3219
+ ActualErrorResponse,
3220
+ parse_obj_as(
3221
+ type_=ActualErrorResponse, # type: ignore
3222
+ object_=_response.json(),
3223
+ ),
3224
+ ),
3225
+ )
3226
+ if _response.status_code == 422:
3227
+ raise UnprocessableEntityError(
3228
+ headers=dict(_response.headers),
3229
+ body=typing.cast(
3230
+ typing.Optional[typing.Any],
3231
+ parse_obj_as(
3232
+ type_=typing.Optional[typing.Any], # type: ignore
3233
+ object_=_response.json(),
3234
+ ),
3235
+ ),
3236
+ )
3237
+ if _response.status_code == 500:
3238
+ raise InternalServerError(
3239
+ headers=dict(_response.headers),
3240
+ body=typing.cast(
3241
+ ActualErrorResponse,
3242
+ parse_obj_as(
3243
+ type_=ActualErrorResponse, # type: ignore
3244
+ object_=_response.json(),
3245
+ ),
3246
+ ),
3247
+ )
3248
+ if _response.status_code == 503:
3249
+ raise ServiceUnavailableError(
3250
+ headers=dict(_response.headers),
3251
+ body=typing.cast(
3252
+ ActualErrorResponse,
3253
+ parse_obj_as(
3254
+ type_=ActualErrorResponse, # type: ignore
3255
+ object_=_response.json(),
3256
+ ),
3257
+ ),
3258
+ )
3259
+ _response_json = _response.json()
3260
+ except JSONDecodeError:
3261
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
3262
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
3263
+
3264
+ async def update_text(
3265
+ self,
3266
+ *,
3267
+ source_id: str,
3268
+ tenant_id: str,
3269
+ content: str,
3270
+ sub_tenant_id: typing.Optional[str] = None,
3271
+ tenant_metadata: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = OMIT,
3272
+ document_metadata: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = OMIT,
3273
+ request_options: typing.Optional[RequestOptions] = None,
3274
+ ) -> AsyncHttpResponse[SingleUploadData]:
3275
+ """
3276
+ Parameters
3277
+ ----------
3278
+ source_id : str
3279
+
3280
+ tenant_id : str
3281
+
3282
+ content : str
3283
+
3284
+ sub_tenant_id : typing.Optional[str]
3285
+
3286
+ tenant_metadata : typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]]
3287
+
3288
+ document_metadata : typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]]
3289
+
3290
+ request_options : typing.Optional[RequestOptions]
3291
+ Request-specific configuration.
3292
+
3293
+ Returns
3294
+ -------
3295
+ AsyncHttpResponse[SingleUploadData]
3296
+ Successful Response
3297
+ """
3298
+ _response = await self._client_wrapper.httpx_client.request(
3299
+ "upload/update_text",
3300
+ method="PATCH",
3301
+ params={
3302
+ "source_id": source_id,
3303
+ "tenant_id": tenant_id,
3304
+ "sub_tenant_id": sub_tenant_id,
3305
+ },
3306
+ json={
3307
+ "content": content,
3308
+ "tenant_metadata": tenant_metadata,
3309
+ "document_metadata": document_metadata,
3310
+ },
3311
+ headers={
3312
+ "content-type": "application/json",
3313
+ },
3314
+ request_options=request_options,
3315
+ omit=OMIT,
3316
+ )
3317
+ try:
3318
+ if 200 <= _response.status_code < 300:
3319
+ _data = typing.cast(
3320
+ SingleUploadData,
3321
+ parse_obj_as(
3322
+ type_=SingleUploadData, # type: ignore
3323
+ object_=_response.json(),
3324
+ ),
3325
+ )
3326
+ return AsyncHttpResponse(response=_response, data=_data)
3327
+ if _response.status_code == 400:
3328
+ raise BadRequestError(
3329
+ headers=dict(_response.headers),
3330
+ body=typing.cast(
3331
+ ActualErrorResponse,
3332
+ parse_obj_as(
3333
+ type_=ActualErrorResponse, # type: ignore
3334
+ object_=_response.json(),
3335
+ ),
3336
+ ),
3337
+ )
3338
+ if _response.status_code == 401:
3339
+ raise UnauthorizedError(
3340
+ headers=dict(_response.headers),
3341
+ body=typing.cast(
3342
+ ActualErrorResponse,
3343
+ parse_obj_as(
3344
+ type_=ActualErrorResponse, # type: ignore
3345
+ object_=_response.json(),
3346
+ ),
3347
+ ),
3348
+ )
3349
+ if _response.status_code == 403:
3350
+ raise ForbiddenError(
3351
+ headers=dict(_response.headers),
3352
+ body=typing.cast(
3353
+ ActualErrorResponse,
3354
+ parse_obj_as(
3355
+ type_=ActualErrorResponse, # type: ignore
3356
+ object_=_response.json(),
3357
+ ),
3358
+ ),
3359
+ )
3360
+ if _response.status_code == 404:
3361
+ raise NotFoundError(
3362
+ headers=dict(_response.headers),
3363
+ body=typing.cast(
3364
+ ActualErrorResponse,
3365
+ parse_obj_as(
3366
+ type_=ActualErrorResponse, # type: ignore
3367
+ object_=_response.json(),
3368
+ ),
3369
+ ),
3370
+ )
3371
+ if _response.status_code == 422:
3372
+ raise UnprocessableEntityError(
3373
+ headers=dict(_response.headers),
3374
+ body=typing.cast(
3375
+ typing.Optional[typing.Any],
3376
+ parse_obj_as(
3377
+ type_=typing.Optional[typing.Any], # type: ignore
3378
+ object_=_response.json(),
3379
+ ),
3380
+ ),
3381
+ )
3382
+ if _response.status_code == 500:
3383
+ raise InternalServerError(
3384
+ headers=dict(_response.headers),
3385
+ body=typing.cast(
3386
+ ActualErrorResponse,
3387
+ parse_obj_as(
3388
+ type_=ActualErrorResponse, # type: ignore
3389
+ object_=_response.json(),
3390
+ ),
3391
+ ),
3392
+ )
3393
+ if _response.status_code == 503:
3394
+ raise ServiceUnavailableError(
3395
+ headers=dict(_response.headers),
3396
+ body=typing.cast(
3397
+ ActualErrorResponse,
3398
+ parse_obj_as(
3399
+ type_=ActualErrorResponse, # type: ignore
3400
+ object_=_response.json(),
3401
+ ),
3402
+ ),
3403
+ )
3404
+ _response_json = _response.json()
3405
+ except JSONDecodeError:
3406
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
3407
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
3408
+
3409
+ async def upload_embeddings(
3410
+ self,
3411
+ *,
3412
+ tenant_id: str,
3413
+ embeddings: typing.Sequence[typing.Sequence[float]],
3414
+ sub_tenant_id: typing.Optional[str] = None,
3415
+ file_id: typing.Optional[str] = OMIT,
3416
+ request_options: typing.Optional[RequestOptions] = None,
3417
+ ) -> AsyncHttpResponse[SingleUploadData]:
3418
+ """
3419
+ Parameters
3420
+ ----------
3421
+ tenant_id : str
3422
+
3423
+ embeddings : typing.Sequence[typing.Sequence[float]]
3424
+
3425
+ sub_tenant_id : typing.Optional[str]
3426
+
3427
+ file_id : typing.Optional[str]
3428
+
3429
+ request_options : typing.Optional[RequestOptions]
3430
+ Request-specific configuration.
3431
+
3432
+ Returns
3433
+ -------
3434
+ AsyncHttpResponse[SingleUploadData]
3435
+ Successful Response
3436
+ """
3437
+ _response = await self._client_wrapper.httpx_client.request(
3438
+ "upload/upload_embeddings",
3439
+ method="POST",
3440
+ params={
3441
+ "tenant_id": tenant_id,
3442
+ "sub_tenant_id": sub_tenant_id,
3443
+ },
3444
+ json={
3445
+ "embeddings": embeddings,
3446
+ "file_id": file_id,
3447
+ },
3448
+ headers={
3449
+ "content-type": "application/json",
3450
+ },
3451
+ request_options=request_options,
3452
+ omit=OMIT,
3453
+ )
3454
+ try:
3455
+ if 200 <= _response.status_code < 300:
3456
+ _data = typing.cast(
3457
+ SingleUploadData,
3458
+ parse_obj_as(
3459
+ type_=SingleUploadData, # type: ignore
3460
+ object_=_response.json(),
3461
+ ),
3462
+ )
3463
+ return AsyncHttpResponse(response=_response, data=_data)
3464
+ if _response.status_code == 400:
3465
+ raise BadRequestError(
3466
+ headers=dict(_response.headers),
3467
+ body=typing.cast(
3468
+ ActualErrorResponse,
3469
+ parse_obj_as(
3470
+ type_=ActualErrorResponse, # type: ignore
3471
+ object_=_response.json(),
3472
+ ),
3473
+ ),
3474
+ )
3475
+ if _response.status_code == 401:
3476
+ raise UnauthorizedError(
3477
+ headers=dict(_response.headers),
3478
+ body=typing.cast(
3479
+ ActualErrorResponse,
3480
+ parse_obj_as(
3481
+ type_=ActualErrorResponse, # type: ignore
3482
+ object_=_response.json(),
3483
+ ),
3484
+ ),
3485
+ )
3486
+ if _response.status_code == 403:
3487
+ raise ForbiddenError(
3488
+ headers=dict(_response.headers),
3489
+ body=typing.cast(
3490
+ ActualErrorResponse,
3491
+ parse_obj_as(
3492
+ type_=ActualErrorResponse, # type: ignore
3493
+ object_=_response.json(),
3494
+ ),
3495
+ ),
3496
+ )
3497
+ if _response.status_code == 404:
3498
+ raise NotFoundError(
3499
+ headers=dict(_response.headers),
3500
+ body=typing.cast(
3501
+ ActualErrorResponse,
3502
+ parse_obj_as(
3503
+ type_=ActualErrorResponse, # type: ignore
3504
+ object_=_response.json(),
3505
+ ),
3506
+ ),
3507
+ )
3508
+ if _response.status_code == 422:
3509
+ raise UnprocessableEntityError(
3510
+ headers=dict(_response.headers),
3511
+ body=typing.cast(
3512
+ typing.Optional[typing.Any],
3513
+ parse_obj_as(
3514
+ type_=typing.Optional[typing.Any], # type: ignore
3515
+ object_=_response.json(),
3516
+ ),
3517
+ ),
3518
+ )
3519
+ if _response.status_code == 500:
3520
+ raise InternalServerError(
3521
+ headers=dict(_response.headers),
3522
+ body=typing.cast(
3523
+ ActualErrorResponse,
3524
+ parse_obj_as(
3525
+ type_=ActualErrorResponse, # type: ignore
3526
+ object_=_response.json(),
3527
+ ),
3528
+ ),
3529
+ )
3530
+ if _response.status_code == 503:
3531
+ raise ServiceUnavailableError(
3532
+ headers=dict(_response.headers),
3533
+ body=typing.cast(
3534
+ ActualErrorResponse,
3535
+ parse_obj_as(
3536
+ type_=ActualErrorResponse, # type: ignore
3537
+ object_=_response.json(),
3538
+ ),
3539
+ ),
3540
+ )
3541
+ _response_json = _response.json()
3542
+ except JSONDecodeError:
3543
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
3544
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
3545
+
3546
+ async def update_embeddings(
3547
+ self,
3548
+ *,
3549
+ tenant_id: str,
3550
+ embeddings: typing.Dict[str, typing.Sequence[float]],
3551
+ sub_tenant_id: typing.Optional[str] = None,
3552
+ request_options: typing.Optional[RequestOptions] = None,
3553
+ ) -> AsyncHttpResponse[SingleUploadData]:
3554
+ """
3555
+ Parameters
3556
+ ----------
3557
+ tenant_id : str
3558
+
3559
+ embeddings : typing.Dict[str, typing.Sequence[float]]
3560
+ Dictionary with chunk_id as key and embedding array as value
3561
+
3562
+ sub_tenant_id : typing.Optional[str]
3563
+
3564
+ request_options : typing.Optional[RequestOptions]
3565
+ Request-specific configuration.
3566
+
3567
+ Returns
3568
+ -------
3569
+ AsyncHttpResponse[SingleUploadData]
3570
+ Successful Response
3571
+ """
3572
+ _response = await self._client_wrapper.httpx_client.request(
3573
+ "upload/update_embeddings",
3574
+ method="PATCH",
3575
+ params={
3576
+ "tenant_id": tenant_id,
3577
+ "sub_tenant_id": sub_tenant_id,
3578
+ },
3579
+ json={
3580
+ "embeddings": embeddings,
3581
+ },
3582
+ headers={
3583
+ "content-type": "application/json",
3584
+ },
3585
+ request_options=request_options,
3586
+ omit=OMIT,
3587
+ )
3588
+ try:
3589
+ if 200 <= _response.status_code < 300:
3590
+ _data = typing.cast(
3591
+ SingleUploadData,
3592
+ parse_obj_as(
3593
+ type_=SingleUploadData, # type: ignore
3594
+ object_=_response.json(),
3595
+ ),
3596
+ )
3597
+ return AsyncHttpResponse(response=_response, data=_data)
3598
+ if _response.status_code == 400:
3599
+ raise BadRequestError(
3600
+ headers=dict(_response.headers),
3601
+ body=typing.cast(
3602
+ ActualErrorResponse,
3603
+ parse_obj_as(
3604
+ type_=ActualErrorResponse, # type: ignore
3605
+ object_=_response.json(),
3606
+ ),
3607
+ ),
3608
+ )
3609
+ if _response.status_code == 401:
3610
+ raise UnauthorizedError(
3611
+ headers=dict(_response.headers),
3612
+ body=typing.cast(
3613
+ ActualErrorResponse,
3614
+ parse_obj_as(
3615
+ type_=ActualErrorResponse, # type: ignore
3616
+ object_=_response.json(),
3617
+ ),
3618
+ ),
3619
+ )
3620
+ if _response.status_code == 403:
3621
+ raise ForbiddenError(
3622
+ headers=dict(_response.headers),
3623
+ body=typing.cast(
3624
+ ActualErrorResponse,
3625
+ parse_obj_as(
3626
+ type_=ActualErrorResponse, # type: ignore
3627
+ object_=_response.json(),
3628
+ ),
3629
+ ),
3630
+ )
3631
+ if _response.status_code == 404:
3632
+ raise NotFoundError(
3633
+ headers=dict(_response.headers),
3634
+ body=typing.cast(
3635
+ ActualErrorResponse,
3636
+ parse_obj_as(
3637
+ type_=ActualErrorResponse, # type: ignore
3638
+ object_=_response.json(),
3639
+ ),
3640
+ ),
3641
+ )
3642
+ if _response.status_code == 422:
3643
+ raise UnprocessableEntityError(
3644
+ headers=dict(_response.headers),
3645
+ body=typing.cast(
3646
+ typing.Optional[typing.Any],
3647
+ parse_obj_as(
3648
+ type_=typing.Optional[typing.Any], # type: ignore
3649
+ object_=_response.json(),
3650
+ ),
3651
+ ),
3652
+ )
3653
+ if _response.status_code == 500:
3654
+ raise InternalServerError(
3655
+ headers=dict(_response.headers),
3656
+ body=typing.cast(
3657
+ ActualErrorResponse,
3658
+ parse_obj_as(
3659
+ type_=ActualErrorResponse, # type: ignore
3660
+ object_=_response.json(),
3661
+ ),
3662
+ ),
3663
+ )
3664
+ if _response.status_code == 503:
3665
+ raise ServiceUnavailableError(
3666
+ headers=dict(_response.headers),
3667
+ body=typing.cast(
3668
+ ActualErrorResponse,
3669
+ parse_obj_as(
3670
+ type_=ActualErrorResponse, # type: ignore
3671
+ object_=_response.json(),
3672
+ ),
3673
+ ),
3674
+ )
3675
+ _response_json = _response.json()
3676
+ except JSONDecodeError:
3677
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
3678
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
3679
+
3680
+ async def scrape_webpage(
3681
+ self,
3682
+ *,
3683
+ web_url: str,
3684
+ tenant_id: str,
3685
+ sub_tenant_id: typing.Optional[str] = None,
3686
+ file_id: typing.Optional[str] = None,
3687
+ request_options: typing.Optional[RequestOptions] = None,
3688
+ ) -> AsyncHttpResponse[SingleUploadData]:
3689
+ """
3690
+ Parameters
3691
+ ----------
3692
+ web_url : str
3693
+
3694
+ tenant_id : str
3695
+
3696
+ sub_tenant_id : typing.Optional[str]
3697
+
3698
+ file_id : typing.Optional[str]
3699
+
3700
+ request_options : typing.Optional[RequestOptions]
3701
+ Request-specific configuration.
3702
+
3703
+ Returns
3704
+ -------
3705
+ AsyncHttpResponse[SingleUploadData]
3706
+ Successful Response
3707
+ """
3708
+ _response = await self._client_wrapper.httpx_client.request(
3709
+ "upload/scrape_webpage",
3710
+ method="POST",
3711
+ params={
3712
+ "web_url": web_url,
3713
+ "tenant_id": tenant_id,
3714
+ "sub_tenant_id": sub_tenant_id,
3715
+ "file_id": file_id,
3716
+ },
3717
+ request_options=request_options,
3718
+ )
3719
+ try:
3720
+ if 200 <= _response.status_code < 300:
3721
+ _data = typing.cast(
3722
+ SingleUploadData,
3723
+ parse_obj_as(
3724
+ type_=SingleUploadData, # type: ignore
3725
+ object_=_response.json(),
3726
+ ),
3727
+ )
3728
+ return AsyncHttpResponse(response=_response, data=_data)
3729
+ if _response.status_code == 400:
3730
+ raise BadRequestError(
3731
+ headers=dict(_response.headers),
3732
+ body=typing.cast(
3733
+ ActualErrorResponse,
3734
+ parse_obj_as(
3735
+ type_=ActualErrorResponse, # type: ignore
3736
+ object_=_response.json(),
3737
+ ),
3738
+ ),
3739
+ )
3740
+ if _response.status_code == 401:
3741
+ raise UnauthorizedError(
3742
+ headers=dict(_response.headers),
3743
+ body=typing.cast(
3744
+ ActualErrorResponse,
3745
+ parse_obj_as(
3746
+ type_=ActualErrorResponse, # type: ignore
3747
+ object_=_response.json(),
3748
+ ),
3749
+ ),
3750
+ )
3751
+ if _response.status_code == 403:
3752
+ raise ForbiddenError(
3753
+ headers=dict(_response.headers),
3754
+ body=typing.cast(
3755
+ ActualErrorResponse,
3756
+ parse_obj_as(
3757
+ type_=ActualErrorResponse, # type: ignore
3758
+ object_=_response.json(),
3759
+ ),
3760
+ ),
3761
+ )
3762
+ if _response.status_code == 404:
3763
+ raise NotFoundError(
3764
+ headers=dict(_response.headers),
3765
+ body=typing.cast(
3766
+ ActualErrorResponse,
3767
+ parse_obj_as(
3768
+ type_=ActualErrorResponse, # type: ignore
3769
+ object_=_response.json(),
3770
+ ),
3771
+ ),
3772
+ )
3773
+ if _response.status_code == 422:
3774
+ raise UnprocessableEntityError(
3775
+ headers=dict(_response.headers),
3776
+ body=typing.cast(
3777
+ typing.Optional[typing.Any],
3778
+ parse_obj_as(
3779
+ type_=typing.Optional[typing.Any], # type: ignore
3780
+ object_=_response.json(),
3781
+ ),
3782
+ ),
3783
+ )
3784
+ if _response.status_code == 500:
3785
+ raise InternalServerError(
3786
+ headers=dict(_response.headers),
3787
+ body=typing.cast(
3788
+ ActualErrorResponse,
3789
+ parse_obj_as(
3790
+ type_=ActualErrorResponse, # type: ignore
3791
+ object_=_response.json(),
3792
+ ),
3793
+ ),
3794
+ )
3795
+ if _response.status_code == 503:
3796
+ raise ServiceUnavailableError(
3797
+ headers=dict(_response.headers),
3798
+ body=typing.cast(
3799
+ ActualErrorResponse,
3800
+ parse_obj_as(
3801
+ type_=ActualErrorResponse, # type: ignore
3802
+ object_=_response.json(),
3803
+ ),
3804
+ ),
3805
+ )
3806
+ _response_json = _response.json()
3807
+ except JSONDecodeError:
3808
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
3809
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
3810
+
3811
+ async def update_webpage(
3812
+ self,
3813
+ *,
3814
+ web_url: str,
3815
+ source_id: str,
3816
+ tenant_id: str,
3817
+ sub_tenant_id: typing.Optional[str] = None,
3818
+ request_options: typing.Optional[RequestOptions] = None,
3819
+ ) -> AsyncHttpResponse[SingleUploadData]:
3820
+ """
3821
+ Parameters
3822
+ ----------
3823
+ web_url : str
3824
+
3825
+ source_id : str
3826
+
3827
+ tenant_id : str
3828
+
3829
+ sub_tenant_id : typing.Optional[str]
3830
+
3831
+ request_options : typing.Optional[RequestOptions]
3832
+ Request-specific configuration.
3833
+
3834
+ Returns
3835
+ -------
3836
+ AsyncHttpResponse[SingleUploadData]
3837
+ Successful Response
3838
+ """
3839
+ _response = await self._client_wrapper.httpx_client.request(
3840
+ "upload/update_webpage",
3841
+ method="PATCH",
3842
+ params={
3843
+ "web_url": web_url,
3844
+ "source_id": source_id,
3845
+ "tenant_id": tenant_id,
3846
+ "sub_tenant_id": sub_tenant_id,
3847
+ },
3848
+ request_options=request_options,
3849
+ )
3850
+ try:
3851
+ if 200 <= _response.status_code < 300:
3852
+ _data = typing.cast(
3853
+ SingleUploadData,
3854
+ parse_obj_as(
3855
+ type_=SingleUploadData, # type: ignore
3856
+ object_=_response.json(),
3857
+ ),
3858
+ )
3859
+ return AsyncHttpResponse(response=_response, data=_data)
3860
+ if _response.status_code == 400:
3861
+ raise BadRequestError(
3862
+ headers=dict(_response.headers),
3863
+ body=typing.cast(
3864
+ ActualErrorResponse,
3865
+ parse_obj_as(
3866
+ type_=ActualErrorResponse, # type: ignore
3867
+ object_=_response.json(),
3868
+ ),
3869
+ ),
3870
+ )
3871
+ if _response.status_code == 401:
3872
+ raise UnauthorizedError(
3873
+ headers=dict(_response.headers),
3874
+ body=typing.cast(
3875
+ ActualErrorResponse,
3876
+ parse_obj_as(
3877
+ type_=ActualErrorResponse, # type: ignore
3878
+ object_=_response.json(),
3879
+ ),
3880
+ ),
3881
+ )
3882
+ if _response.status_code == 403:
3883
+ raise ForbiddenError(
3884
+ headers=dict(_response.headers),
3885
+ body=typing.cast(
3886
+ ActualErrorResponse,
3887
+ parse_obj_as(
3888
+ type_=ActualErrorResponse, # type: ignore
3889
+ object_=_response.json(),
3890
+ ),
3891
+ ),
3892
+ )
3893
+ if _response.status_code == 404:
3894
+ raise NotFoundError(
3895
+ headers=dict(_response.headers),
3896
+ body=typing.cast(
3897
+ ActualErrorResponse,
3898
+ parse_obj_as(
3899
+ type_=ActualErrorResponse, # type: ignore
3900
+ object_=_response.json(),
3901
+ ),
3902
+ ),
3903
+ )
3904
+ if _response.status_code == 422:
3905
+ raise UnprocessableEntityError(
3906
+ headers=dict(_response.headers),
3907
+ body=typing.cast(
3908
+ typing.Optional[typing.Any],
3909
+ parse_obj_as(
3910
+ type_=typing.Optional[typing.Any], # type: ignore
3911
+ object_=_response.json(),
3912
+ ),
3913
+ ),
3914
+ )
3915
+ if _response.status_code == 500:
3916
+ raise InternalServerError(
3917
+ headers=dict(_response.headers),
3918
+ body=typing.cast(
3919
+ ActualErrorResponse,
3920
+ parse_obj_as(
3921
+ type_=ActualErrorResponse, # type: ignore
3922
+ object_=_response.json(),
3923
+ ),
3924
+ ),
3925
+ )
3926
+ if _response.status_code == 503:
3927
+ raise ServiceUnavailableError(
3928
+ headers=dict(_response.headers),
3929
+ body=typing.cast(
3930
+ ActualErrorResponse,
3931
+ parse_obj_as(
3932
+ type_=ActualErrorResponse, # type: ignore
3933
+ object_=_response.json(),
3934
+ ),
3935
+ ),
3936
+ )
3937
+ _response_json = _response.json()
3938
+ except JSONDecodeError:
3939
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
3940
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
3941
+
3942
+ async def delete_source(
3943
+ self,
3944
+ *,
3945
+ tenant_id: str,
3946
+ source_ids: typing.Sequence[str],
3947
+ sub_tenant_id: typing.Optional[str] = OMIT,
3948
+ request_options: typing.Optional[RequestOptions] = None,
3949
+ ) -> AsyncHttpResponse[typing.Optional[typing.Any]]:
3950
+ """
3951
+ Parameters
3952
+ ----------
3953
+ tenant_id : str
3954
+
3955
+ source_ids : typing.Sequence[str]
3956
+
3957
+ sub_tenant_id : typing.Optional[str]
3958
+
3959
+ request_options : typing.Optional[RequestOptions]
3960
+ Request-specific configuration.
3961
+
3962
+ Returns
3963
+ -------
3964
+ AsyncHttpResponse[typing.Optional[typing.Any]]
3965
+ Successful Response
3966
+ """
3967
+ _response = await self._client_wrapper.httpx_client.request(
3968
+ "upload/delete_source",
3969
+ method="DELETE",
3970
+ json={
3971
+ "tenant_id": tenant_id,
3972
+ "source_ids": source_ids,
3973
+ "sub_tenant_id": sub_tenant_id,
3974
+ },
3975
+ headers={
3976
+ "content-type": "application/json",
3977
+ },
3978
+ request_options=request_options,
3979
+ omit=OMIT,
3980
+ )
3981
+ try:
3982
+ if _response is None or not _response.text.strip():
3983
+ return AsyncHttpResponse(response=_response, data=None)
3984
+ if 200 <= _response.status_code < 300:
3985
+ _data = typing.cast(
3986
+ typing.Optional[typing.Any],
3987
+ parse_obj_as(
3988
+ type_=typing.Optional[typing.Any], # type: ignore
3989
+ object_=_response.json(),
3990
+ ),
3991
+ )
3992
+ return AsyncHttpResponse(response=_response, data=_data)
3993
+ if _response.status_code == 422:
3994
+ raise UnprocessableEntityError(
3995
+ headers=dict(_response.headers),
3996
+ body=typing.cast(
3997
+ typing.Optional[typing.Any],
3998
+ parse_obj_as(
3999
+ type_=typing.Optional[typing.Any], # type: ignore
4000
+ object_=_response.json(),
4001
+ ),
4002
+ ),
4003
+ )
4004
+ _response_json = _response.json()
4005
+ except JSONDecodeError:
4006
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
4007
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
4008
+
4009
+ async def delete_memory(
4010
+ self,
4011
+ *,
4012
+ tenant_id: str,
4013
+ source_ids: typing.Sequence[str],
4014
+ sub_tenant_id: typing.Optional[str] = OMIT,
4015
+ request_options: typing.Optional[RequestOptions] = None,
4016
+ ) -> AsyncHttpResponse[typing.Optional[typing.Any]]:
4017
+ """
4018
+ Parameters
4019
+ ----------
4020
+ tenant_id : str
4021
+
4022
+ source_ids : typing.Sequence[str]
4023
+
4024
+ sub_tenant_id : typing.Optional[str]
4025
+
4026
+ request_options : typing.Optional[RequestOptions]
4027
+ Request-specific configuration.
4028
+
4029
+ Returns
4030
+ -------
4031
+ AsyncHttpResponse[typing.Optional[typing.Any]]
4032
+ Successful Response
4033
+ """
4034
+ _response = await self._client_wrapper.httpx_client.request(
4035
+ "upload/delete_memory",
4036
+ method="DELETE",
4037
+ json={
4038
+ "tenant_id": tenant_id,
4039
+ "source_ids": source_ids,
4040
+ "sub_tenant_id": sub_tenant_id,
4041
+ },
4042
+ headers={
4043
+ "content-type": "application/json",
4044
+ },
4045
+ request_options=request_options,
4046
+ omit=OMIT,
4047
+ )
4048
+ try:
4049
+ if _response is None or not _response.text.strip():
4050
+ return AsyncHttpResponse(response=_response, data=None)
4051
+ if 200 <= _response.status_code < 300:
4052
+ _data = typing.cast(
4053
+ typing.Optional[typing.Any],
4054
+ parse_obj_as(
4055
+ type_=typing.Optional[typing.Any], # type: ignore
4056
+ object_=_response.json(),
4057
+ ),
4058
+ )
4059
+ return AsyncHttpResponse(response=_response, data=_data)
4060
+ if _response.status_code == 422:
4061
+ raise UnprocessableEntityError(
4062
+ headers=dict(_response.headers),
4063
+ body=typing.cast(
4064
+ typing.Optional[typing.Any],
4065
+ parse_obj_as(
4066
+ type_=typing.Optional[typing.Any], # type: ignore
4067
+ object_=_response.json(),
4068
+ ),
4069
+ ),
4070
+ )
4071
+ _response_json = _response.json()
4072
+ except JSONDecodeError:
4073
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
4074
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
4075
+
4076
+ async def verify_processing(
4077
+ self,
4078
+ *,
4079
+ file_id: str,
4080
+ tenant_id: typing.Optional[str] = None,
4081
+ request_options: typing.Optional[RequestOptions] = None,
4082
+ ) -> AsyncHttpResponse[ProcessingStatus]:
4083
+ """
4084
+ Verify the processing status of an uploaded file.
4085
+
4086
+ Returns:
4087
+ ProcessingStatusResponse: Processing status information
4088
+
4089
+ Parameters
4090
+ ----------
4091
+ file_id : str
4092
+
4093
+ tenant_id : typing.Optional[str]
4094
+
4095
+ request_options : typing.Optional[RequestOptions]
4096
+ Request-specific configuration.
4097
+
4098
+ Returns
4099
+ -------
4100
+ AsyncHttpResponse[ProcessingStatus]
4101
+ Successful Response
4102
+ """
4103
+ _response = await self._client_wrapper.httpx_client.request(
4104
+ "upload/verify_processing",
4105
+ method="POST",
4106
+ params={
4107
+ "file_id": file_id,
4108
+ "tenant_id": tenant_id,
4109
+ },
4110
+ request_options=request_options,
4111
+ )
4112
+ try:
4113
+ if 200 <= _response.status_code < 300:
4114
+ _data = typing.cast(
4115
+ ProcessingStatus,
4116
+ parse_obj_as(
4117
+ type_=ProcessingStatus, # type: ignore
4118
+ object_=_response.json(),
4119
+ ),
4120
+ )
4121
+ return AsyncHttpResponse(response=_response, data=_data)
4122
+ if _response.status_code == 400:
4123
+ raise BadRequestError(
4124
+ headers=dict(_response.headers),
4125
+ body=typing.cast(
4126
+ ActualErrorResponse,
4127
+ parse_obj_as(
4128
+ type_=ActualErrorResponse, # type: ignore
4129
+ object_=_response.json(),
4130
+ ),
4131
+ ),
4132
+ )
4133
+ if _response.status_code == 401:
4134
+ raise UnauthorizedError(
4135
+ headers=dict(_response.headers),
4136
+ body=typing.cast(
4137
+ ActualErrorResponse,
4138
+ parse_obj_as(
4139
+ type_=ActualErrorResponse, # type: ignore
4140
+ object_=_response.json(),
4141
+ ),
4142
+ ),
4143
+ )
4144
+ if _response.status_code == 403:
4145
+ raise ForbiddenError(
4146
+ headers=dict(_response.headers),
4147
+ body=typing.cast(
4148
+ ActualErrorResponse,
4149
+ parse_obj_as(
4150
+ type_=ActualErrorResponse, # type: ignore
4151
+ object_=_response.json(),
4152
+ ),
4153
+ ),
4154
+ )
4155
+ if _response.status_code == 404:
4156
+ raise NotFoundError(
4157
+ headers=dict(_response.headers),
4158
+ body=typing.cast(
4159
+ ActualErrorResponse,
4160
+ parse_obj_as(
4161
+ type_=ActualErrorResponse, # type: ignore
4162
+ object_=_response.json(),
4163
+ ),
4164
+ ),
4165
+ )
4166
+ if _response.status_code == 422:
4167
+ raise UnprocessableEntityError(
4168
+ headers=dict(_response.headers),
4169
+ body=typing.cast(
4170
+ typing.Optional[typing.Any],
4171
+ parse_obj_as(
4172
+ type_=typing.Optional[typing.Any], # type: ignore
4173
+ object_=_response.json(),
4174
+ ),
4175
+ ),
4176
+ )
4177
+ if _response.status_code == 500:
4178
+ raise InternalServerError(
4179
+ headers=dict(_response.headers),
4180
+ body=typing.cast(
4181
+ ActualErrorResponse,
4182
+ parse_obj_as(
4183
+ type_=ActualErrorResponse, # type: ignore
4184
+ object_=_response.json(),
4185
+ ),
4186
+ ),
4187
+ )
4188
+ if _response.status_code == 503:
4189
+ raise ServiceUnavailableError(
4190
+ headers=dict(_response.headers),
4191
+ body=typing.cast(
4192
+ ActualErrorResponse,
4193
+ parse_obj_as(
4194
+ type_=ActualErrorResponse, # type: ignore
4195
+ object_=_response.json(),
4196
+ ),
4197
+ ),
4198
+ )
4199
+ _response_json = _response.json()
4200
+ except JSONDecodeError:
4201
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
4202
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)