@planqk/planqk-api-sdk 1.0.0

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 (222) hide show
  1. package/.devcontainer/devcontainer.json +32 -0
  2. package/.devcontainer/post-create.sh +7 -0
  3. package/.env.template +2 -0
  4. package/.gitlab-ci.yml +71 -0
  5. package/.python-version +1 -0
  6. package/.releaserc.json +45 -0
  7. package/LICENSE +201 -0
  8. package/README-node.md +18 -0
  9. package/README-python.md +21 -0
  10. package/README.md +56 -0
  11. package/dist/Client.d.ts +32 -0
  12. package/dist/Client.js +60 -0
  13. package/dist/api/errors/BadRequestError.d.ts +8 -0
  14. package/dist/api/errors/BadRequestError.js +52 -0
  15. package/dist/api/errors/ForbiddenError.d.ts +8 -0
  16. package/dist/api/errors/ForbiddenError.js +52 -0
  17. package/dist/api/errors/InternalServerError.d.ts +8 -0
  18. package/dist/api/errors/InternalServerError.js +52 -0
  19. package/dist/api/errors/NotFoundError.d.ts +8 -0
  20. package/dist/api/errors/NotFoundError.js +52 -0
  21. package/dist/api/errors/UnauthorizedError.d.ts +8 -0
  22. package/dist/api/errors/UnauthorizedError.js +52 -0
  23. package/dist/api/errors/index.d.ts +5 -0
  24. package/dist/api/errors/index.js +21 -0
  25. package/dist/api/index.d.ts +3 -0
  26. package/dist/api/index.js +19 -0
  27. package/dist/api/resources/dataPools/client/Client.d.ts +177 -0
  28. package/dist/api/resources/dataPools/client/Client.js +676 -0
  29. package/dist/api/resources/dataPools/client/index.d.ts +2 -0
  30. package/dist/api/resources/dataPools/client/index.js +17 -0
  31. package/dist/api/resources/dataPools/client/requests/AddDataPoolFileRequest.d.ts +14 -0
  32. package/dist/api/resources/dataPools/client/requests/AddDataPoolFileRequest.js +5 -0
  33. package/dist/api/resources/dataPools/client/requests/CreateDataPoolRequest.d.ts +10 -0
  34. package/dist/api/resources/dataPools/client/requests/CreateDataPoolRequest.js +5 -0
  35. package/dist/api/resources/dataPools/client/requests/UpdateDataPoolRequest.d.ts +12 -0
  36. package/dist/api/resources/dataPools/client/requests/UpdateDataPoolRequest.js +5 -0
  37. package/dist/api/resources/dataPools/client/requests/index.d.ts +3 -0
  38. package/dist/api/resources/dataPools/client/requests/index.js +2 -0
  39. package/dist/api/resources/dataPools/index.d.ts +1 -0
  40. package/dist/api/resources/dataPools/index.js +17 -0
  41. package/dist/api/resources/index.d.ts +2 -0
  42. package/dist/api/resources/index.js +41 -0
  43. package/dist/api/types/DataPoolDto.d.ts +23 -0
  44. package/dist/api/types/DataPoolDto.js +14 -0
  45. package/dist/api/types/DataPoolFileDto.d.ts +12 -0
  46. package/dist/api/types/DataPoolFileDto.js +5 -0
  47. package/dist/api/types/OauthScope.d.ts +9 -0
  48. package/dist/api/types/OauthScope.js +9 -0
  49. package/dist/api/types/index.d.ts +3 -0
  50. package/dist/api/types/index.js +19 -0
  51. package/dist/core/fetcher/APIResponse.d.ts +20 -0
  52. package/dist/core/fetcher/APIResponse.js +2 -0
  53. package/dist/core/fetcher/BinaryResponse.d.ts +20 -0
  54. package/dist/core/fetcher/BinaryResponse.js +17 -0
  55. package/dist/core/fetcher/Fetcher.d.ts +40 -0
  56. package/dist/core/fetcher/Fetcher.js +105 -0
  57. package/dist/core/fetcher/Headers.d.ts +2 -0
  58. package/dist/core/fetcher/Headers.js +85 -0
  59. package/dist/core/fetcher/HttpResponsePromise.d.ts +58 -0
  60. package/dist/core/fetcher/HttpResponsePromise.js +94 -0
  61. package/dist/core/fetcher/RawResponse.d.ts +29 -0
  62. package/dist/core/fetcher/RawResponse.js +44 -0
  63. package/dist/core/fetcher/ResponseWithBody.d.ts +4 -0
  64. package/dist/core/fetcher/ResponseWithBody.js +6 -0
  65. package/dist/core/fetcher/Supplier.d.ts +4 -0
  66. package/dist/core/fetcher/Supplier.js +13 -0
  67. package/dist/core/fetcher/createRequestUrl.d.ts +1 -0
  68. package/dist/core/fetcher/createRequestUrl.js +8 -0
  69. package/dist/core/fetcher/getErrorResponseBody.d.ts +1 -0
  70. package/dist/core/fetcher/getErrorResponseBody.js +32 -0
  71. package/dist/core/fetcher/getFetchFn.d.ts +1 -0
  72. package/dist/core/fetcher/getFetchFn.js +6 -0
  73. package/dist/core/fetcher/getHeader.d.ts +1 -0
  74. package/dist/core/fetcher/getHeader.js +11 -0
  75. package/dist/core/fetcher/getRequestBody.d.ts +7 -0
  76. package/dist/core/fetcher/getRequestBody.js +12 -0
  77. package/dist/core/fetcher/getResponseBody.d.ts +1 -0
  78. package/dist/core/fetcher/getResponseBody.js +44 -0
  79. package/dist/core/fetcher/index.d.ts +9 -0
  80. package/dist/core/fetcher/index.js +15 -0
  81. package/dist/core/fetcher/makeRequest.d.ts +1 -0
  82. package/dist/core/fetcher/makeRequest.js +33 -0
  83. package/dist/core/fetcher/requestWithRetries.d.ts +1 -0
  84. package/dist/core/fetcher/requestWithRetries.js +29 -0
  85. package/dist/core/fetcher/signals.d.ts +11 -0
  86. package/dist/core/fetcher/signals.js +36 -0
  87. package/dist/core/file.d.ts +1 -0
  88. package/dist/core/file.js +2 -0
  89. package/dist/core/form-data-utils/FormDataWrapper.d.ts +16 -0
  90. package/dist/core/form-data-utils/FormDataWrapper.js +166 -0
  91. package/dist/core/form-data-utils/encodeAsFormParameter.d.ts +1 -0
  92. package/dist/core/form-data-utils/encodeAsFormParameter.js +12 -0
  93. package/dist/core/form-data-utils/index.d.ts +2 -0
  94. package/dist/core/form-data-utils/index.js +20 -0
  95. package/dist/core/headers.d.ts +3 -0
  96. package/dist/core/headers.js +29 -0
  97. package/dist/core/index.d.ts +5 -0
  98. package/dist/core/index.js +44 -0
  99. package/dist/core/json.d.ts +15 -0
  100. package/dist/core/json.js +24 -0
  101. package/dist/core/runtime/index.d.ts +1 -0
  102. package/dist/core/runtime/index.js +5 -0
  103. package/dist/core/runtime/runtime.d.ts +9 -0
  104. package/dist/core/runtime/runtime.js +101 -0
  105. package/dist/core/url/index.d.ts +2 -0
  106. package/dist/core/url/index.js +7 -0
  107. package/dist/core/url/join.d.ts +1 -0
  108. package/dist/core/url/join.js +49 -0
  109. package/dist/core/url/qs.d.ts +6 -0
  110. package/dist/core/url/qs.js +67 -0
  111. package/dist/environments.d.ts +7 -0
  112. package/dist/environments.js +9 -0
  113. package/dist/errors/PlanqkApiError.d.ts +15 -0
  114. package/dist/errors/PlanqkApiError.js +33 -0
  115. package/dist/errors/PlanqkApiTimeoutError.d.ts +6 -0
  116. package/dist/errors/PlanqkApiTimeoutError.js +13 -0
  117. package/dist/errors/index.d.ts +2 -0
  118. package/dist/errors/index.js +7 -0
  119. package/dist/index.d.ts +4 -0
  120. package/dist/index.js +44 -0
  121. package/eslint.config.mjs +11 -0
  122. package/fern/fern.config.json +4 -0
  123. package/fern/generators.yml +25 -0
  124. package/fern/openapi/openapi.json +610 -0
  125. package/notebooks/python-sdk.ipynb +218 -0
  126. package/package.json +48 -0
  127. package/planqk/__init__.py +0 -0
  128. package/planqk/api/__init__.py +1 -0
  129. package/planqk/api/_version.py +1 -0
  130. package/planqk/api/client.py +19 -0
  131. package/planqk/api/credentials.py +103 -0
  132. package/planqk/api/sdk/__init__.py +25 -0
  133. package/planqk/api/sdk/client.py +153 -0
  134. package/planqk/api/sdk/core/__init__.py +52 -0
  135. package/planqk/api/sdk/core/api_error.py +23 -0
  136. package/planqk/api/sdk/core/client_wrapper.py +76 -0
  137. package/planqk/api/sdk/core/datetime_utils.py +28 -0
  138. package/planqk/api/sdk/core/file.py +67 -0
  139. package/planqk/api/sdk/core/force_multipart.py +16 -0
  140. package/planqk/api/sdk/core/http_client.py +543 -0
  141. package/planqk/api/sdk/core/http_response.py +55 -0
  142. package/planqk/api/sdk/core/jsonable_encoder.py +100 -0
  143. package/planqk/api/sdk/core/pydantic_utilities.py +255 -0
  144. package/planqk/api/sdk/core/query_encoder.py +58 -0
  145. package/planqk/api/sdk/core/remove_none_from_dict.py +11 -0
  146. package/planqk/api/sdk/core/request_options.py +35 -0
  147. package/planqk/api/sdk/core/serialization.py +276 -0
  148. package/planqk/api/sdk/data_pools/__init__.py +4 -0
  149. package/planqk/api/sdk/data_pools/client.py +700 -0
  150. package/planqk/api/sdk/data_pools/raw_client.py +1650 -0
  151. package/planqk/api/sdk/environment.py +7 -0
  152. package/planqk/api/sdk/errors/__init__.py +11 -0
  153. package/planqk/api/sdk/errors/bad_request_error.py +10 -0
  154. package/planqk/api/sdk/errors/forbidden_error.py +10 -0
  155. package/planqk/api/sdk/errors/internal_server_error.py +10 -0
  156. package/planqk/api/sdk/errors/not_found_error.py +10 -0
  157. package/planqk/api/sdk/errors/unauthorized_error.py +10 -0
  158. package/planqk/api/sdk/types/__init__.py +10 -0
  159. package/planqk/api/sdk/types/data_pool_dto.py +33 -0
  160. package/planqk/api/sdk/types/data_pool_dto_current_user_permission.py +5 -0
  161. package/planqk/api/sdk/types/data_pool_file_dto.py +27 -0
  162. package/planqk/api/sdk/types/oauth_scope.py +5 -0
  163. package/pyproject.toml +51 -0
  164. package/scripts/update-version.sh +6 -0
  165. package/src/Client.ts +53 -0
  166. package/src/api/errors/BadRequestError.ts +18 -0
  167. package/src/api/errors/ForbiddenError.ts +18 -0
  168. package/src/api/errors/InternalServerError.ts +18 -0
  169. package/src/api/errors/NotFoundError.ts +18 -0
  170. package/src/api/errors/UnauthorizedError.ts +18 -0
  171. package/src/api/errors/index.ts +5 -0
  172. package/src/api/index.ts +3 -0
  173. package/src/api/resources/dataPools/client/Client.ts +825 -0
  174. package/src/api/resources/dataPools/client/index.ts +2 -0
  175. package/src/api/resources/dataPools/client/requests/AddDataPoolFileRequest.ts +17 -0
  176. package/src/api/resources/dataPools/client/requests/CreateDataPoolRequest.ts +11 -0
  177. package/src/api/resources/dataPools/client/requests/UpdateDataPoolRequest.ts +13 -0
  178. package/src/api/resources/dataPools/client/requests/index.ts +3 -0
  179. package/src/api/resources/dataPools/index.ts +1 -0
  180. package/src/api/resources/index.ts +2 -0
  181. package/src/api/types/DataPoolDto.ts +25 -0
  182. package/src/api/types/DataPoolFileDto.ts +13 -0
  183. package/src/api/types/OauthScope.ts +10 -0
  184. package/src/api/types/index.ts +3 -0
  185. package/src/core/fetcher/APIResponse.ts +23 -0
  186. package/src/core/fetcher/BinaryResponse.ts +36 -0
  187. package/src/core/fetcher/Fetcher.ts +163 -0
  188. package/src/core/fetcher/Headers.ts +93 -0
  189. package/src/core/fetcher/HttpResponsePromise.ts +116 -0
  190. package/src/core/fetcher/RawResponse.ts +61 -0
  191. package/src/core/fetcher/ResponseWithBody.ts +7 -0
  192. package/src/core/fetcher/Supplier.ts +11 -0
  193. package/src/core/fetcher/createRequestUrl.ts +6 -0
  194. package/src/core/fetcher/getErrorResponseBody.ts +32 -0
  195. package/src/core/fetcher/getFetchFn.ts +3 -0
  196. package/src/core/fetcher/getHeader.ts +8 -0
  197. package/src/core/fetcher/getRequestBody.ts +16 -0
  198. package/src/core/fetcher/getResponseBody.ts +43 -0
  199. package/src/core/fetcher/index.ts +9 -0
  200. package/src/core/fetcher/makeRequest.ts +44 -0
  201. package/src/core/fetcher/requestWithRetries.ts +33 -0
  202. package/src/core/fetcher/signals.ts +38 -0
  203. package/src/core/file.ts +11 -0
  204. package/src/core/form-data-utils/FormDataWrapper.ts +176 -0
  205. package/src/core/form-data-utils/encodeAsFormParameter.ts +12 -0
  206. package/src/core/form-data-utils/index.ts +2 -0
  207. package/src/core/headers.ts +35 -0
  208. package/src/core/index.ts +5 -0
  209. package/src/core/json.ts +27 -0
  210. package/src/core/runtime/index.ts +1 -0
  211. package/src/core/runtime/runtime.ts +133 -0
  212. package/src/core/url/index.ts +2 -0
  213. package/src/core/url/join.ts +55 -0
  214. package/src/core/url/qs.ts +74 -0
  215. package/src/environments.ts +9 -0
  216. package/src/errors/PlanqkApiError.ts +55 -0
  217. package/src/errors/PlanqkApiTimeoutError.ts +10 -0
  218. package/src/errors/index.ts +2 -0
  219. package/src/index.test.ts +17 -0
  220. package/src/index.ts +4 -0
  221. package/tsconfig.json +18 -0
  222. package/uv.lock +1102 -0
@@ -0,0 +1,1650 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import contextlib
4
+ import typing
5
+ from json.decoder import JSONDecodeError
6
+
7
+ from .. import core
8
+ from ..core.api_error import ApiError
9
+ from ..core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
10
+ from ..core.http_response import AsyncHttpResponse, HttpResponse
11
+ from ..core.jsonable_encoder import jsonable_encoder
12
+ from ..core.pydantic_utilities import parse_obj_as
13
+ from ..core.request_options import RequestOptions
14
+ from ..errors.bad_request_error import BadRequestError
15
+ from ..errors.forbidden_error import ForbiddenError
16
+ from ..errors.internal_server_error import InternalServerError
17
+ from ..errors.not_found_error import NotFoundError
18
+ from ..errors.unauthorized_error import UnauthorizedError
19
+ from ..types.data_pool_dto import DataPoolDto
20
+ from ..types.data_pool_file_dto import DataPoolFileDto
21
+
22
+ # this is used as the default value for optional parameters
23
+ OMIT = typing.cast(typing.Any, ...)
24
+
25
+
26
+ class RawDataPoolsClient:
27
+ def __init__(self, *, client_wrapper: SyncClientWrapper):
28
+ self._client_wrapper = client_wrapper
29
+
30
+ def get_data_pool(
31
+ self, id: str, *, request_options: typing.Optional[RequestOptions] = None
32
+ ) -> HttpResponse[DataPoolDto]:
33
+ """
34
+ Get a specific data pool (identified by its ID).
35
+
36
+ Parameters
37
+ ----------
38
+ id : str
39
+
40
+ request_options : typing.Optional[RequestOptions]
41
+ Request-specific configuration.
42
+
43
+ Returns
44
+ -------
45
+ HttpResponse[DataPoolDto]
46
+ A data pool
47
+ """
48
+ _response = self._client_wrapper.httpx_client.request(
49
+ f"datapools/{jsonable_encoder(id)}",
50
+ method="GET",
51
+ request_options=request_options,
52
+ )
53
+ try:
54
+ if 200 <= _response.status_code < 300:
55
+ _data = typing.cast(
56
+ DataPoolDto,
57
+ parse_obj_as(
58
+ type_=DataPoolDto, # type: ignore
59
+ object_=_response.json(),
60
+ ),
61
+ )
62
+ return HttpResponse(response=_response, data=_data)
63
+ if _response.status_code == 401:
64
+ raise UnauthorizedError(
65
+ headers=dict(_response.headers),
66
+ body=typing.cast(
67
+ typing.Optional[typing.Any],
68
+ parse_obj_as(
69
+ type_=typing.Optional[typing.Any], # type: ignore
70
+ object_=_response.json(),
71
+ ),
72
+ ),
73
+ )
74
+ if _response.status_code == 403:
75
+ raise ForbiddenError(
76
+ headers=dict(_response.headers),
77
+ body=typing.cast(
78
+ typing.Optional[typing.Any],
79
+ parse_obj_as(
80
+ type_=typing.Optional[typing.Any], # type: ignore
81
+ object_=_response.json(),
82
+ ),
83
+ ),
84
+ )
85
+ if _response.status_code == 404:
86
+ raise NotFoundError(
87
+ headers=dict(_response.headers),
88
+ body=typing.cast(
89
+ typing.Optional[typing.Any],
90
+ parse_obj_as(
91
+ type_=typing.Optional[typing.Any], # type: ignore
92
+ object_=_response.json(),
93
+ ),
94
+ ),
95
+ )
96
+ if _response.status_code == 500:
97
+ raise InternalServerError(
98
+ headers=dict(_response.headers),
99
+ body=typing.cast(
100
+ typing.Optional[typing.Any],
101
+ parse_obj_as(
102
+ type_=typing.Optional[typing.Any], # type: ignore
103
+ object_=_response.json(),
104
+ ),
105
+ ),
106
+ )
107
+ _response_json = _response.json()
108
+ except JSONDecodeError:
109
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
110
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
111
+
112
+ def update_data_pool(
113
+ self,
114
+ id: str,
115
+ *,
116
+ name: typing.Optional[str] = OMIT,
117
+ short_description: typing.Optional[str] = OMIT,
118
+ description: typing.Optional[str] = OMIT,
119
+ request_options: typing.Optional[RequestOptions] = None,
120
+ ) -> HttpResponse[DataPoolDto]:
121
+ """
122
+ Update an existing data pool (identified by its ID).
123
+
124
+ Parameters
125
+ ----------
126
+ id : str
127
+
128
+ name : typing.Optional[str]
129
+
130
+ short_description : typing.Optional[str]
131
+
132
+ description : typing.Optional[str]
133
+
134
+ request_options : typing.Optional[RequestOptions]
135
+ Request-specific configuration.
136
+
137
+ Returns
138
+ -------
139
+ HttpResponse[DataPoolDto]
140
+ Data pool is saved
141
+ """
142
+ _response = self._client_wrapper.httpx_client.request(
143
+ f"datapools/{jsonable_encoder(id)}",
144
+ method="PUT",
145
+ json={
146
+ "name": name,
147
+ "shortDescription": short_description,
148
+ "description": description,
149
+ },
150
+ headers={
151
+ "content-type": "application/json",
152
+ },
153
+ request_options=request_options,
154
+ omit=OMIT,
155
+ )
156
+ try:
157
+ if 200 <= _response.status_code < 300:
158
+ _data = typing.cast(
159
+ DataPoolDto,
160
+ parse_obj_as(
161
+ type_=DataPoolDto, # type: ignore
162
+ object_=_response.json(),
163
+ ),
164
+ )
165
+ return HttpResponse(response=_response, data=_data)
166
+ if _response.status_code == 400:
167
+ raise BadRequestError(
168
+ headers=dict(_response.headers),
169
+ body=typing.cast(
170
+ typing.Optional[typing.Any],
171
+ parse_obj_as(
172
+ type_=typing.Optional[typing.Any], # type: ignore
173
+ object_=_response.json(),
174
+ ),
175
+ ),
176
+ )
177
+ if _response.status_code == 401:
178
+ raise UnauthorizedError(
179
+ headers=dict(_response.headers),
180
+ body=typing.cast(
181
+ typing.Optional[typing.Any],
182
+ parse_obj_as(
183
+ type_=typing.Optional[typing.Any], # type: ignore
184
+ object_=_response.json(),
185
+ ),
186
+ ),
187
+ )
188
+ if _response.status_code == 403:
189
+ raise ForbiddenError(
190
+ headers=dict(_response.headers),
191
+ body=typing.cast(
192
+ typing.Optional[typing.Any],
193
+ parse_obj_as(
194
+ type_=typing.Optional[typing.Any], # type: ignore
195
+ object_=_response.json(),
196
+ ),
197
+ ),
198
+ )
199
+ if _response.status_code == 404:
200
+ raise NotFoundError(
201
+ headers=dict(_response.headers),
202
+ body=typing.cast(
203
+ typing.Optional[typing.Any],
204
+ parse_obj_as(
205
+ type_=typing.Optional[typing.Any], # type: ignore
206
+ object_=_response.json(),
207
+ ),
208
+ ),
209
+ )
210
+ if _response.status_code == 500:
211
+ raise InternalServerError(
212
+ headers=dict(_response.headers),
213
+ body=typing.cast(
214
+ typing.Optional[typing.Any],
215
+ parse_obj_as(
216
+ type_=typing.Optional[typing.Any], # type: ignore
217
+ object_=_response.json(),
218
+ ),
219
+ ),
220
+ )
221
+ _response_json = _response.json()
222
+ except JSONDecodeError:
223
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
224
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
225
+
226
+ def delete_data_pool(
227
+ self, id: str, *, request_options: typing.Optional[RequestOptions] = None
228
+ ) -> HttpResponse[None]:
229
+ """
230
+ Delete a specific data pool (identified by its ID).
231
+
232
+ Parameters
233
+ ----------
234
+ id : str
235
+
236
+ request_options : typing.Optional[RequestOptions]
237
+ Request-specific configuration.
238
+
239
+ Returns
240
+ -------
241
+ HttpResponse[None]
242
+ """
243
+ _response = self._client_wrapper.httpx_client.request(
244
+ f"datapools/{jsonable_encoder(id)}",
245
+ method="DELETE",
246
+ request_options=request_options,
247
+ )
248
+ try:
249
+ if 200 <= _response.status_code < 300:
250
+ return HttpResponse(response=_response, data=None)
251
+ if _response.status_code == 401:
252
+ raise UnauthorizedError(
253
+ headers=dict(_response.headers),
254
+ body=typing.cast(
255
+ typing.Optional[typing.Any],
256
+ parse_obj_as(
257
+ type_=typing.Optional[typing.Any], # type: ignore
258
+ object_=_response.json(),
259
+ ),
260
+ ),
261
+ )
262
+ if _response.status_code == 403:
263
+ raise ForbiddenError(
264
+ headers=dict(_response.headers),
265
+ body=typing.cast(
266
+ typing.Optional[typing.Any],
267
+ parse_obj_as(
268
+ type_=typing.Optional[typing.Any], # type: ignore
269
+ object_=_response.json(),
270
+ ),
271
+ ),
272
+ )
273
+ if _response.status_code == 404:
274
+ raise NotFoundError(
275
+ headers=dict(_response.headers),
276
+ body=typing.cast(
277
+ typing.Optional[typing.Any],
278
+ parse_obj_as(
279
+ type_=typing.Optional[typing.Any], # type: ignore
280
+ object_=_response.json(),
281
+ ),
282
+ ),
283
+ )
284
+ if _response.status_code == 500:
285
+ raise InternalServerError(
286
+ headers=dict(_response.headers),
287
+ body=typing.cast(
288
+ typing.Optional[typing.Any],
289
+ parse_obj_as(
290
+ type_=typing.Optional[typing.Any], # type: ignore
291
+ object_=_response.json(),
292
+ ),
293
+ ),
294
+ )
295
+ _response_json = _response.json()
296
+ except JSONDecodeError:
297
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
298
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
299
+
300
+ def get_data_pools(
301
+ self, *, request_options: typing.Optional[RequestOptions] = None
302
+ ) -> HttpResponse[typing.List[DataPoolDto]]:
303
+ """
304
+ Get a list of all data pools for the current user.
305
+
306
+ Parameters
307
+ ----------
308
+ request_options : typing.Optional[RequestOptions]
309
+ Request-specific configuration.
310
+
311
+ Returns
312
+ -------
313
+ HttpResponse[typing.List[DataPoolDto]]
314
+ List of data pools
315
+ """
316
+ _response = self._client_wrapper.httpx_client.request(
317
+ "datapools",
318
+ method="GET",
319
+ request_options=request_options,
320
+ )
321
+ try:
322
+ if 200 <= _response.status_code < 300:
323
+ _data = typing.cast(
324
+ typing.List[DataPoolDto],
325
+ parse_obj_as(
326
+ type_=typing.List[DataPoolDto], # type: ignore
327
+ object_=_response.json(),
328
+ ),
329
+ )
330
+ return HttpResponse(response=_response, data=_data)
331
+ if _response.status_code == 401:
332
+ raise UnauthorizedError(
333
+ headers=dict(_response.headers),
334
+ body=typing.cast(
335
+ typing.Optional[typing.Any],
336
+ parse_obj_as(
337
+ type_=typing.Optional[typing.Any], # type: ignore
338
+ object_=_response.json(),
339
+ ),
340
+ ),
341
+ )
342
+ if _response.status_code == 403:
343
+ raise ForbiddenError(
344
+ headers=dict(_response.headers),
345
+ body=typing.cast(
346
+ typing.Optional[typing.Any],
347
+ parse_obj_as(
348
+ type_=typing.Optional[typing.Any], # type: ignore
349
+ object_=_response.json(),
350
+ ),
351
+ ),
352
+ )
353
+ if _response.status_code == 404:
354
+ raise NotFoundError(
355
+ headers=dict(_response.headers),
356
+ body=typing.cast(
357
+ typing.Optional[typing.Any],
358
+ parse_obj_as(
359
+ type_=typing.Optional[typing.Any], # type: ignore
360
+ object_=_response.json(),
361
+ ),
362
+ ),
363
+ )
364
+ if _response.status_code == 500:
365
+ raise InternalServerError(
366
+ headers=dict(_response.headers),
367
+ body=typing.cast(
368
+ typing.Optional[typing.Any],
369
+ parse_obj_as(
370
+ type_=typing.Optional[typing.Any], # type: ignore
371
+ object_=_response.json(),
372
+ ),
373
+ ),
374
+ )
375
+ _response_json = _response.json()
376
+ except JSONDecodeError:
377
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
378
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
379
+
380
+ def create_data_pool(
381
+ self, *, name: typing.Optional[str] = OMIT, request_options: typing.Optional[RequestOptions] = None
382
+ ) -> HttpResponse[DataPoolDto]:
383
+ """
384
+ Create a new data pool.
385
+
386
+ Parameters
387
+ ----------
388
+ name : typing.Optional[str]
389
+
390
+ request_options : typing.Optional[RequestOptions]
391
+ Request-specific configuration.
392
+
393
+ Returns
394
+ -------
395
+ HttpResponse[DataPoolDto]
396
+ Data pool is created
397
+ """
398
+ _response = self._client_wrapper.httpx_client.request(
399
+ "datapools",
400
+ method="POST",
401
+ json={
402
+ "name": name,
403
+ },
404
+ headers={
405
+ "content-type": "application/json",
406
+ },
407
+ request_options=request_options,
408
+ omit=OMIT,
409
+ )
410
+ try:
411
+ if 200 <= _response.status_code < 300:
412
+ _data = typing.cast(
413
+ DataPoolDto,
414
+ parse_obj_as(
415
+ type_=DataPoolDto, # type: ignore
416
+ object_=_response.json(),
417
+ ),
418
+ )
419
+ return HttpResponse(response=_response, data=_data)
420
+ if _response.status_code == 400:
421
+ raise BadRequestError(
422
+ headers=dict(_response.headers),
423
+ body=typing.cast(
424
+ typing.Optional[typing.Any],
425
+ parse_obj_as(
426
+ type_=typing.Optional[typing.Any], # type: ignore
427
+ object_=_response.json(),
428
+ ),
429
+ ),
430
+ )
431
+ if _response.status_code == 401:
432
+ raise UnauthorizedError(
433
+ headers=dict(_response.headers),
434
+ body=typing.cast(
435
+ typing.Optional[typing.Any],
436
+ parse_obj_as(
437
+ type_=typing.Optional[typing.Any], # type: ignore
438
+ object_=_response.json(),
439
+ ),
440
+ ),
441
+ )
442
+ if _response.status_code == 403:
443
+ raise ForbiddenError(
444
+ headers=dict(_response.headers),
445
+ body=typing.cast(
446
+ typing.Optional[typing.Any],
447
+ parse_obj_as(
448
+ type_=typing.Optional[typing.Any], # type: ignore
449
+ object_=_response.json(),
450
+ ),
451
+ ),
452
+ )
453
+ if _response.status_code == 404:
454
+ raise NotFoundError(
455
+ headers=dict(_response.headers),
456
+ body=typing.cast(
457
+ typing.Optional[typing.Any],
458
+ parse_obj_as(
459
+ type_=typing.Optional[typing.Any], # type: ignore
460
+ object_=_response.json(),
461
+ ),
462
+ ),
463
+ )
464
+ if _response.status_code == 500:
465
+ raise InternalServerError(
466
+ headers=dict(_response.headers),
467
+ body=typing.cast(
468
+ typing.Optional[typing.Any],
469
+ parse_obj_as(
470
+ type_=typing.Optional[typing.Any], # type: ignore
471
+ object_=_response.json(),
472
+ ),
473
+ ),
474
+ )
475
+ _response_json = _response.json()
476
+ except JSONDecodeError:
477
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
478
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
479
+
480
+ def get_data_pool_files(
481
+ self, id: str, *, request_options: typing.Optional[RequestOptions] = None
482
+ ) -> HttpResponse[typing.List[DataPoolFileDto]]:
483
+ """
484
+ Get all files associated with a specific data pool (identified by its ID).
485
+
486
+ Parameters
487
+ ----------
488
+ id : str
489
+
490
+ request_options : typing.Optional[RequestOptions]
491
+ Request-specific configuration.
492
+
493
+ Returns
494
+ -------
495
+ HttpResponse[typing.List[DataPoolFileDto]]
496
+ List of files in the data pool
497
+ """
498
+ _response = self._client_wrapper.httpx_client.request(
499
+ f"datapools/{jsonable_encoder(id)}/files",
500
+ method="GET",
501
+ request_options=request_options,
502
+ )
503
+ try:
504
+ if 200 <= _response.status_code < 300:
505
+ _data = typing.cast(
506
+ typing.List[DataPoolFileDto],
507
+ parse_obj_as(
508
+ type_=typing.List[DataPoolFileDto], # type: ignore
509
+ object_=_response.json(),
510
+ ),
511
+ )
512
+ return HttpResponse(response=_response, data=_data)
513
+ if _response.status_code == 401:
514
+ raise UnauthorizedError(
515
+ headers=dict(_response.headers),
516
+ body=typing.cast(
517
+ typing.Optional[typing.Any],
518
+ parse_obj_as(
519
+ type_=typing.Optional[typing.Any], # type: ignore
520
+ object_=_response.json(),
521
+ ),
522
+ ),
523
+ )
524
+ if _response.status_code == 403:
525
+ raise ForbiddenError(
526
+ headers=dict(_response.headers),
527
+ body=typing.cast(
528
+ typing.Optional[typing.Any],
529
+ parse_obj_as(
530
+ type_=typing.Optional[typing.Any], # type: ignore
531
+ object_=_response.json(),
532
+ ),
533
+ ),
534
+ )
535
+ if _response.status_code == 404:
536
+ raise NotFoundError(
537
+ headers=dict(_response.headers),
538
+ body=typing.cast(
539
+ typing.Optional[typing.Any],
540
+ parse_obj_as(
541
+ type_=typing.Optional[typing.Any], # type: ignore
542
+ object_=_response.json(),
543
+ ),
544
+ ),
545
+ )
546
+ if _response.status_code == 500:
547
+ raise InternalServerError(
548
+ headers=dict(_response.headers),
549
+ body=typing.cast(
550
+ typing.Optional[typing.Any],
551
+ parse_obj_as(
552
+ type_=typing.Optional[typing.Any], # type: ignore
553
+ object_=_response.json(),
554
+ ),
555
+ ),
556
+ )
557
+ _response_json = _response.json()
558
+ except JSONDecodeError:
559
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
560
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
561
+
562
+ def add_data_pool_file(
563
+ self,
564
+ id: str,
565
+ *,
566
+ file: core.File,
567
+ filename: typing.Optional[str] = None,
568
+ request_options: typing.Optional[RequestOptions] = None,
569
+ ) -> HttpResponse[DataPoolFileDto]:
570
+ """
571
+ Add a new file to a specific data pool (identified by its ID).
572
+
573
+ Parameters
574
+ ----------
575
+ id : str
576
+
577
+ file : core.File
578
+ See core.File for more documentation
579
+
580
+ filename : typing.Optional[str]
581
+
582
+ request_options : typing.Optional[RequestOptions]
583
+ Request-specific configuration.
584
+
585
+ Returns
586
+ -------
587
+ HttpResponse[DataPoolFileDto]
588
+ File is added to the data pool
589
+ """
590
+ _response = self._client_wrapper.httpx_client.request(
591
+ f"datapools/{jsonable_encoder(id)}/files",
592
+ method="POST",
593
+ params={
594
+ "filename": filename,
595
+ },
596
+ data={},
597
+ files={
598
+ "file": file,
599
+ },
600
+ request_options=request_options,
601
+ omit=OMIT,
602
+ force_multipart=True,
603
+ )
604
+ try:
605
+ if 200 <= _response.status_code < 300:
606
+ _data = typing.cast(
607
+ DataPoolFileDto,
608
+ parse_obj_as(
609
+ type_=DataPoolFileDto, # type: ignore
610
+ object_=_response.json(),
611
+ ),
612
+ )
613
+ return HttpResponse(response=_response, data=_data)
614
+ if _response.status_code == 400:
615
+ raise BadRequestError(
616
+ headers=dict(_response.headers),
617
+ body=typing.cast(
618
+ typing.Optional[typing.Any],
619
+ parse_obj_as(
620
+ type_=typing.Optional[typing.Any], # type: ignore
621
+ object_=_response.json(),
622
+ ),
623
+ ),
624
+ )
625
+ if _response.status_code == 401:
626
+ raise UnauthorizedError(
627
+ headers=dict(_response.headers),
628
+ body=typing.cast(
629
+ typing.Optional[typing.Any],
630
+ parse_obj_as(
631
+ type_=typing.Optional[typing.Any], # type: ignore
632
+ object_=_response.json(),
633
+ ),
634
+ ),
635
+ )
636
+ if _response.status_code == 403:
637
+ raise ForbiddenError(
638
+ headers=dict(_response.headers),
639
+ body=typing.cast(
640
+ typing.Optional[typing.Any],
641
+ parse_obj_as(
642
+ type_=typing.Optional[typing.Any], # type: ignore
643
+ object_=_response.json(),
644
+ ),
645
+ ),
646
+ )
647
+ if _response.status_code == 404:
648
+ raise NotFoundError(
649
+ headers=dict(_response.headers),
650
+ body=typing.cast(
651
+ typing.Optional[typing.Any],
652
+ parse_obj_as(
653
+ type_=typing.Optional[typing.Any], # type: ignore
654
+ object_=_response.json(),
655
+ ),
656
+ ),
657
+ )
658
+ if _response.status_code == 500:
659
+ raise InternalServerError(
660
+ headers=dict(_response.headers),
661
+ body=typing.cast(
662
+ typing.Optional[typing.Any],
663
+ parse_obj_as(
664
+ type_=typing.Optional[typing.Any], # type: ignore
665
+ object_=_response.json(),
666
+ ),
667
+ ),
668
+ )
669
+ _response_json = _response.json()
670
+ except JSONDecodeError:
671
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
672
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
673
+
674
+ @contextlib.contextmanager
675
+ def get_data_pool_file(
676
+ self, id: str, file_id: str, *, request_options: typing.Optional[RequestOptions] = None
677
+ ) -> typing.Iterator[HttpResponse[typing.Iterator[bytes]]]:
678
+ """
679
+ Get the content of a specific file from a data pool (both file and data pool identified by their ID).
680
+
681
+ Parameters
682
+ ----------
683
+ id : str
684
+
685
+ file_id : str
686
+
687
+ request_options : typing.Optional[RequestOptions]
688
+ Request-specific configuration. You can pass in configuration such as `chunk_size`, and more to customize the request and response.
689
+
690
+ Returns
691
+ -------
692
+ typing.Iterator[HttpResponse[typing.Iterator[bytes]]]
693
+ The file content
694
+ """
695
+ with self._client_wrapper.httpx_client.stream(
696
+ f"datapools/{jsonable_encoder(id)}/files/{jsonable_encoder(file_id)}",
697
+ method="GET",
698
+ request_options=request_options,
699
+ ) as _response:
700
+
701
+ def _stream() -> HttpResponse[typing.Iterator[bytes]]:
702
+ try:
703
+ if 200 <= _response.status_code < 300:
704
+ _chunk_size = request_options.get("chunk_size", None) if request_options is not None else None
705
+ return HttpResponse(
706
+ response=_response, data=(_chunk for _chunk in _response.iter_bytes(chunk_size=_chunk_size))
707
+ )
708
+ _response.read()
709
+ if _response.status_code == 401:
710
+ raise UnauthorizedError(
711
+ headers=dict(_response.headers),
712
+ body=typing.cast(
713
+ typing.Optional[typing.Any],
714
+ parse_obj_as(
715
+ type_=typing.Optional[typing.Any], # type: ignore
716
+ object_=_response.json(),
717
+ ),
718
+ ),
719
+ )
720
+ if _response.status_code == 403:
721
+ raise ForbiddenError(
722
+ headers=dict(_response.headers),
723
+ body=typing.cast(
724
+ typing.Optional[typing.Any],
725
+ parse_obj_as(
726
+ type_=typing.Optional[typing.Any], # type: ignore
727
+ object_=_response.json(),
728
+ ),
729
+ ),
730
+ )
731
+ if _response.status_code == 404:
732
+ raise NotFoundError(
733
+ headers=dict(_response.headers),
734
+ body=typing.cast(
735
+ typing.Optional[typing.Any],
736
+ parse_obj_as(
737
+ type_=typing.Optional[typing.Any], # type: ignore
738
+ object_=_response.json(),
739
+ ),
740
+ ),
741
+ )
742
+ if _response.status_code == 500:
743
+ raise InternalServerError(
744
+ headers=dict(_response.headers),
745
+ body=typing.cast(
746
+ typing.Optional[typing.Any],
747
+ parse_obj_as(
748
+ type_=typing.Optional[typing.Any], # type: ignore
749
+ object_=_response.json(),
750
+ ),
751
+ ),
752
+ )
753
+ _response_json = _response.json()
754
+ except JSONDecodeError:
755
+ raise ApiError(
756
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response.text
757
+ )
758
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
759
+
760
+ yield _stream()
761
+
762
+ def delete_data_pool_file(
763
+ self, id: str, file_id: str, *, request_options: typing.Optional[RequestOptions] = None
764
+ ) -> HttpResponse[None]:
765
+ """
766
+ Delete a specific file from a data pool (both file and data pool identified by their IDs).
767
+
768
+ Parameters
769
+ ----------
770
+ id : str
771
+
772
+ file_id : str
773
+
774
+ request_options : typing.Optional[RequestOptions]
775
+ Request-specific configuration.
776
+
777
+ Returns
778
+ -------
779
+ HttpResponse[None]
780
+ """
781
+ _response = self._client_wrapper.httpx_client.request(
782
+ f"datapools/{jsonable_encoder(id)}/files/{jsonable_encoder(file_id)}",
783
+ method="DELETE",
784
+ request_options=request_options,
785
+ )
786
+ try:
787
+ if 200 <= _response.status_code < 300:
788
+ return HttpResponse(response=_response, data=None)
789
+ if _response.status_code == 401:
790
+ raise UnauthorizedError(
791
+ headers=dict(_response.headers),
792
+ body=typing.cast(
793
+ typing.Optional[typing.Any],
794
+ parse_obj_as(
795
+ type_=typing.Optional[typing.Any], # type: ignore
796
+ object_=_response.json(),
797
+ ),
798
+ ),
799
+ )
800
+ if _response.status_code == 403:
801
+ raise ForbiddenError(
802
+ headers=dict(_response.headers),
803
+ body=typing.cast(
804
+ typing.Optional[typing.Any],
805
+ parse_obj_as(
806
+ type_=typing.Optional[typing.Any], # type: ignore
807
+ object_=_response.json(),
808
+ ),
809
+ ),
810
+ )
811
+ if _response.status_code == 404:
812
+ raise NotFoundError(
813
+ headers=dict(_response.headers),
814
+ body=typing.cast(
815
+ typing.Optional[typing.Any],
816
+ parse_obj_as(
817
+ type_=typing.Optional[typing.Any], # type: ignore
818
+ object_=_response.json(),
819
+ ),
820
+ ),
821
+ )
822
+ if _response.status_code == 500:
823
+ raise InternalServerError(
824
+ headers=dict(_response.headers),
825
+ body=typing.cast(
826
+ typing.Optional[typing.Any],
827
+ parse_obj_as(
828
+ type_=typing.Optional[typing.Any], # type: ignore
829
+ object_=_response.json(),
830
+ ),
831
+ ),
832
+ )
833
+ _response_json = _response.json()
834
+ except JSONDecodeError:
835
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
836
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
837
+
838
+
839
+ class AsyncRawDataPoolsClient:
840
+ def __init__(self, *, client_wrapper: AsyncClientWrapper):
841
+ self._client_wrapper = client_wrapper
842
+
843
+ async def get_data_pool(
844
+ self, id: str, *, request_options: typing.Optional[RequestOptions] = None
845
+ ) -> AsyncHttpResponse[DataPoolDto]:
846
+ """
847
+ Get a specific data pool (identified by its ID).
848
+
849
+ Parameters
850
+ ----------
851
+ id : str
852
+
853
+ request_options : typing.Optional[RequestOptions]
854
+ Request-specific configuration.
855
+
856
+ Returns
857
+ -------
858
+ AsyncHttpResponse[DataPoolDto]
859
+ A data pool
860
+ """
861
+ _response = await self._client_wrapper.httpx_client.request(
862
+ f"datapools/{jsonable_encoder(id)}",
863
+ method="GET",
864
+ request_options=request_options,
865
+ )
866
+ try:
867
+ if 200 <= _response.status_code < 300:
868
+ _data = typing.cast(
869
+ DataPoolDto,
870
+ parse_obj_as(
871
+ type_=DataPoolDto, # type: ignore
872
+ object_=_response.json(),
873
+ ),
874
+ )
875
+ return AsyncHttpResponse(response=_response, data=_data)
876
+ if _response.status_code == 401:
877
+ raise UnauthorizedError(
878
+ headers=dict(_response.headers),
879
+ body=typing.cast(
880
+ typing.Optional[typing.Any],
881
+ parse_obj_as(
882
+ type_=typing.Optional[typing.Any], # type: ignore
883
+ object_=_response.json(),
884
+ ),
885
+ ),
886
+ )
887
+ if _response.status_code == 403:
888
+ raise ForbiddenError(
889
+ headers=dict(_response.headers),
890
+ body=typing.cast(
891
+ typing.Optional[typing.Any],
892
+ parse_obj_as(
893
+ type_=typing.Optional[typing.Any], # type: ignore
894
+ object_=_response.json(),
895
+ ),
896
+ ),
897
+ )
898
+ if _response.status_code == 404:
899
+ raise NotFoundError(
900
+ headers=dict(_response.headers),
901
+ body=typing.cast(
902
+ typing.Optional[typing.Any],
903
+ parse_obj_as(
904
+ type_=typing.Optional[typing.Any], # type: ignore
905
+ object_=_response.json(),
906
+ ),
907
+ ),
908
+ )
909
+ if _response.status_code == 500:
910
+ raise InternalServerError(
911
+ headers=dict(_response.headers),
912
+ body=typing.cast(
913
+ typing.Optional[typing.Any],
914
+ parse_obj_as(
915
+ type_=typing.Optional[typing.Any], # type: ignore
916
+ object_=_response.json(),
917
+ ),
918
+ ),
919
+ )
920
+ _response_json = _response.json()
921
+ except JSONDecodeError:
922
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
923
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
924
+
925
+ async def update_data_pool(
926
+ self,
927
+ id: str,
928
+ *,
929
+ name: typing.Optional[str] = OMIT,
930
+ short_description: typing.Optional[str] = OMIT,
931
+ description: typing.Optional[str] = OMIT,
932
+ request_options: typing.Optional[RequestOptions] = None,
933
+ ) -> AsyncHttpResponse[DataPoolDto]:
934
+ """
935
+ Update an existing data pool (identified by its ID).
936
+
937
+ Parameters
938
+ ----------
939
+ id : str
940
+
941
+ name : typing.Optional[str]
942
+
943
+ short_description : typing.Optional[str]
944
+
945
+ description : typing.Optional[str]
946
+
947
+ request_options : typing.Optional[RequestOptions]
948
+ Request-specific configuration.
949
+
950
+ Returns
951
+ -------
952
+ AsyncHttpResponse[DataPoolDto]
953
+ Data pool is saved
954
+ """
955
+ _response = await self._client_wrapper.httpx_client.request(
956
+ f"datapools/{jsonable_encoder(id)}",
957
+ method="PUT",
958
+ json={
959
+ "name": name,
960
+ "shortDescription": short_description,
961
+ "description": description,
962
+ },
963
+ headers={
964
+ "content-type": "application/json",
965
+ },
966
+ request_options=request_options,
967
+ omit=OMIT,
968
+ )
969
+ try:
970
+ if 200 <= _response.status_code < 300:
971
+ _data = typing.cast(
972
+ DataPoolDto,
973
+ parse_obj_as(
974
+ type_=DataPoolDto, # type: ignore
975
+ object_=_response.json(),
976
+ ),
977
+ )
978
+ return AsyncHttpResponse(response=_response, data=_data)
979
+ if _response.status_code == 400:
980
+ raise BadRequestError(
981
+ headers=dict(_response.headers),
982
+ body=typing.cast(
983
+ typing.Optional[typing.Any],
984
+ parse_obj_as(
985
+ type_=typing.Optional[typing.Any], # type: ignore
986
+ object_=_response.json(),
987
+ ),
988
+ ),
989
+ )
990
+ if _response.status_code == 401:
991
+ raise UnauthorizedError(
992
+ headers=dict(_response.headers),
993
+ body=typing.cast(
994
+ typing.Optional[typing.Any],
995
+ parse_obj_as(
996
+ type_=typing.Optional[typing.Any], # type: ignore
997
+ object_=_response.json(),
998
+ ),
999
+ ),
1000
+ )
1001
+ if _response.status_code == 403:
1002
+ raise ForbiddenError(
1003
+ headers=dict(_response.headers),
1004
+ body=typing.cast(
1005
+ typing.Optional[typing.Any],
1006
+ parse_obj_as(
1007
+ type_=typing.Optional[typing.Any], # type: ignore
1008
+ object_=_response.json(),
1009
+ ),
1010
+ ),
1011
+ )
1012
+ if _response.status_code == 404:
1013
+ raise NotFoundError(
1014
+ headers=dict(_response.headers),
1015
+ body=typing.cast(
1016
+ typing.Optional[typing.Any],
1017
+ parse_obj_as(
1018
+ type_=typing.Optional[typing.Any], # type: ignore
1019
+ object_=_response.json(),
1020
+ ),
1021
+ ),
1022
+ )
1023
+ if _response.status_code == 500:
1024
+ raise InternalServerError(
1025
+ headers=dict(_response.headers),
1026
+ body=typing.cast(
1027
+ typing.Optional[typing.Any],
1028
+ parse_obj_as(
1029
+ type_=typing.Optional[typing.Any], # type: ignore
1030
+ object_=_response.json(),
1031
+ ),
1032
+ ),
1033
+ )
1034
+ _response_json = _response.json()
1035
+ except JSONDecodeError:
1036
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
1037
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
1038
+
1039
+ async def delete_data_pool(
1040
+ self, id: str, *, request_options: typing.Optional[RequestOptions] = None
1041
+ ) -> AsyncHttpResponse[None]:
1042
+ """
1043
+ Delete a specific data pool (identified by its ID).
1044
+
1045
+ Parameters
1046
+ ----------
1047
+ id : str
1048
+
1049
+ request_options : typing.Optional[RequestOptions]
1050
+ Request-specific configuration.
1051
+
1052
+ Returns
1053
+ -------
1054
+ AsyncHttpResponse[None]
1055
+ """
1056
+ _response = await self._client_wrapper.httpx_client.request(
1057
+ f"datapools/{jsonable_encoder(id)}",
1058
+ method="DELETE",
1059
+ request_options=request_options,
1060
+ )
1061
+ try:
1062
+ if 200 <= _response.status_code < 300:
1063
+ return AsyncHttpResponse(response=_response, data=None)
1064
+ if _response.status_code == 401:
1065
+ raise UnauthorizedError(
1066
+ headers=dict(_response.headers),
1067
+ body=typing.cast(
1068
+ typing.Optional[typing.Any],
1069
+ parse_obj_as(
1070
+ type_=typing.Optional[typing.Any], # type: ignore
1071
+ object_=_response.json(),
1072
+ ),
1073
+ ),
1074
+ )
1075
+ if _response.status_code == 403:
1076
+ raise ForbiddenError(
1077
+ headers=dict(_response.headers),
1078
+ body=typing.cast(
1079
+ typing.Optional[typing.Any],
1080
+ parse_obj_as(
1081
+ type_=typing.Optional[typing.Any], # type: ignore
1082
+ object_=_response.json(),
1083
+ ),
1084
+ ),
1085
+ )
1086
+ if _response.status_code == 404:
1087
+ raise NotFoundError(
1088
+ headers=dict(_response.headers),
1089
+ body=typing.cast(
1090
+ typing.Optional[typing.Any],
1091
+ parse_obj_as(
1092
+ type_=typing.Optional[typing.Any], # type: ignore
1093
+ object_=_response.json(),
1094
+ ),
1095
+ ),
1096
+ )
1097
+ if _response.status_code == 500:
1098
+ raise InternalServerError(
1099
+ headers=dict(_response.headers),
1100
+ body=typing.cast(
1101
+ typing.Optional[typing.Any],
1102
+ parse_obj_as(
1103
+ type_=typing.Optional[typing.Any], # type: ignore
1104
+ object_=_response.json(),
1105
+ ),
1106
+ ),
1107
+ )
1108
+ _response_json = _response.json()
1109
+ except JSONDecodeError:
1110
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
1111
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
1112
+
1113
+ async def get_data_pools(
1114
+ self, *, request_options: typing.Optional[RequestOptions] = None
1115
+ ) -> AsyncHttpResponse[typing.List[DataPoolDto]]:
1116
+ """
1117
+ Get a list of all data pools for the current user.
1118
+
1119
+ Parameters
1120
+ ----------
1121
+ request_options : typing.Optional[RequestOptions]
1122
+ Request-specific configuration.
1123
+
1124
+ Returns
1125
+ -------
1126
+ AsyncHttpResponse[typing.List[DataPoolDto]]
1127
+ List of data pools
1128
+ """
1129
+ _response = await self._client_wrapper.httpx_client.request(
1130
+ "datapools",
1131
+ method="GET",
1132
+ request_options=request_options,
1133
+ )
1134
+ try:
1135
+ if 200 <= _response.status_code < 300:
1136
+ _data = typing.cast(
1137
+ typing.List[DataPoolDto],
1138
+ parse_obj_as(
1139
+ type_=typing.List[DataPoolDto], # type: ignore
1140
+ object_=_response.json(),
1141
+ ),
1142
+ )
1143
+ return AsyncHttpResponse(response=_response, data=_data)
1144
+ if _response.status_code == 401:
1145
+ raise UnauthorizedError(
1146
+ headers=dict(_response.headers),
1147
+ body=typing.cast(
1148
+ typing.Optional[typing.Any],
1149
+ parse_obj_as(
1150
+ type_=typing.Optional[typing.Any], # type: ignore
1151
+ object_=_response.json(),
1152
+ ),
1153
+ ),
1154
+ )
1155
+ if _response.status_code == 403:
1156
+ raise ForbiddenError(
1157
+ headers=dict(_response.headers),
1158
+ body=typing.cast(
1159
+ typing.Optional[typing.Any],
1160
+ parse_obj_as(
1161
+ type_=typing.Optional[typing.Any], # type: ignore
1162
+ object_=_response.json(),
1163
+ ),
1164
+ ),
1165
+ )
1166
+ if _response.status_code == 404:
1167
+ raise NotFoundError(
1168
+ headers=dict(_response.headers),
1169
+ body=typing.cast(
1170
+ typing.Optional[typing.Any],
1171
+ parse_obj_as(
1172
+ type_=typing.Optional[typing.Any], # type: ignore
1173
+ object_=_response.json(),
1174
+ ),
1175
+ ),
1176
+ )
1177
+ if _response.status_code == 500:
1178
+ raise InternalServerError(
1179
+ headers=dict(_response.headers),
1180
+ body=typing.cast(
1181
+ typing.Optional[typing.Any],
1182
+ parse_obj_as(
1183
+ type_=typing.Optional[typing.Any], # type: ignore
1184
+ object_=_response.json(),
1185
+ ),
1186
+ ),
1187
+ )
1188
+ _response_json = _response.json()
1189
+ except JSONDecodeError:
1190
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
1191
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
1192
+
1193
+ async def create_data_pool(
1194
+ self, *, name: typing.Optional[str] = OMIT, request_options: typing.Optional[RequestOptions] = None
1195
+ ) -> AsyncHttpResponse[DataPoolDto]:
1196
+ """
1197
+ Create a new data pool.
1198
+
1199
+ Parameters
1200
+ ----------
1201
+ name : typing.Optional[str]
1202
+
1203
+ request_options : typing.Optional[RequestOptions]
1204
+ Request-specific configuration.
1205
+
1206
+ Returns
1207
+ -------
1208
+ AsyncHttpResponse[DataPoolDto]
1209
+ Data pool is created
1210
+ """
1211
+ _response = await self._client_wrapper.httpx_client.request(
1212
+ "datapools",
1213
+ method="POST",
1214
+ json={
1215
+ "name": name,
1216
+ },
1217
+ headers={
1218
+ "content-type": "application/json",
1219
+ },
1220
+ request_options=request_options,
1221
+ omit=OMIT,
1222
+ )
1223
+ try:
1224
+ if 200 <= _response.status_code < 300:
1225
+ _data = typing.cast(
1226
+ DataPoolDto,
1227
+ parse_obj_as(
1228
+ type_=DataPoolDto, # type: ignore
1229
+ object_=_response.json(),
1230
+ ),
1231
+ )
1232
+ return AsyncHttpResponse(response=_response, data=_data)
1233
+ if _response.status_code == 400:
1234
+ raise BadRequestError(
1235
+ headers=dict(_response.headers),
1236
+ body=typing.cast(
1237
+ typing.Optional[typing.Any],
1238
+ parse_obj_as(
1239
+ type_=typing.Optional[typing.Any], # type: ignore
1240
+ object_=_response.json(),
1241
+ ),
1242
+ ),
1243
+ )
1244
+ if _response.status_code == 401:
1245
+ raise UnauthorizedError(
1246
+ headers=dict(_response.headers),
1247
+ body=typing.cast(
1248
+ typing.Optional[typing.Any],
1249
+ parse_obj_as(
1250
+ type_=typing.Optional[typing.Any], # type: ignore
1251
+ object_=_response.json(),
1252
+ ),
1253
+ ),
1254
+ )
1255
+ if _response.status_code == 403:
1256
+ raise ForbiddenError(
1257
+ headers=dict(_response.headers),
1258
+ body=typing.cast(
1259
+ typing.Optional[typing.Any],
1260
+ parse_obj_as(
1261
+ type_=typing.Optional[typing.Any], # type: ignore
1262
+ object_=_response.json(),
1263
+ ),
1264
+ ),
1265
+ )
1266
+ if _response.status_code == 404:
1267
+ raise NotFoundError(
1268
+ headers=dict(_response.headers),
1269
+ body=typing.cast(
1270
+ typing.Optional[typing.Any],
1271
+ parse_obj_as(
1272
+ type_=typing.Optional[typing.Any], # type: ignore
1273
+ object_=_response.json(),
1274
+ ),
1275
+ ),
1276
+ )
1277
+ if _response.status_code == 500:
1278
+ raise InternalServerError(
1279
+ headers=dict(_response.headers),
1280
+ body=typing.cast(
1281
+ typing.Optional[typing.Any],
1282
+ parse_obj_as(
1283
+ type_=typing.Optional[typing.Any], # type: ignore
1284
+ object_=_response.json(),
1285
+ ),
1286
+ ),
1287
+ )
1288
+ _response_json = _response.json()
1289
+ except JSONDecodeError:
1290
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
1291
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
1292
+
1293
+ async def get_data_pool_files(
1294
+ self, id: str, *, request_options: typing.Optional[RequestOptions] = None
1295
+ ) -> AsyncHttpResponse[typing.List[DataPoolFileDto]]:
1296
+ """
1297
+ Get all files associated with a specific data pool (identified by its ID).
1298
+
1299
+ Parameters
1300
+ ----------
1301
+ id : str
1302
+
1303
+ request_options : typing.Optional[RequestOptions]
1304
+ Request-specific configuration.
1305
+
1306
+ Returns
1307
+ -------
1308
+ AsyncHttpResponse[typing.List[DataPoolFileDto]]
1309
+ List of files in the data pool
1310
+ """
1311
+ _response = await self._client_wrapper.httpx_client.request(
1312
+ f"datapools/{jsonable_encoder(id)}/files",
1313
+ method="GET",
1314
+ request_options=request_options,
1315
+ )
1316
+ try:
1317
+ if 200 <= _response.status_code < 300:
1318
+ _data = typing.cast(
1319
+ typing.List[DataPoolFileDto],
1320
+ parse_obj_as(
1321
+ type_=typing.List[DataPoolFileDto], # type: ignore
1322
+ object_=_response.json(),
1323
+ ),
1324
+ )
1325
+ return AsyncHttpResponse(response=_response, data=_data)
1326
+ if _response.status_code == 401:
1327
+ raise UnauthorizedError(
1328
+ headers=dict(_response.headers),
1329
+ body=typing.cast(
1330
+ typing.Optional[typing.Any],
1331
+ parse_obj_as(
1332
+ type_=typing.Optional[typing.Any], # type: ignore
1333
+ object_=_response.json(),
1334
+ ),
1335
+ ),
1336
+ )
1337
+ if _response.status_code == 403:
1338
+ raise ForbiddenError(
1339
+ headers=dict(_response.headers),
1340
+ body=typing.cast(
1341
+ typing.Optional[typing.Any],
1342
+ parse_obj_as(
1343
+ type_=typing.Optional[typing.Any], # type: ignore
1344
+ object_=_response.json(),
1345
+ ),
1346
+ ),
1347
+ )
1348
+ if _response.status_code == 404:
1349
+ raise NotFoundError(
1350
+ headers=dict(_response.headers),
1351
+ body=typing.cast(
1352
+ typing.Optional[typing.Any],
1353
+ parse_obj_as(
1354
+ type_=typing.Optional[typing.Any], # type: ignore
1355
+ object_=_response.json(),
1356
+ ),
1357
+ ),
1358
+ )
1359
+ if _response.status_code == 500:
1360
+ raise InternalServerError(
1361
+ headers=dict(_response.headers),
1362
+ body=typing.cast(
1363
+ typing.Optional[typing.Any],
1364
+ parse_obj_as(
1365
+ type_=typing.Optional[typing.Any], # type: ignore
1366
+ object_=_response.json(),
1367
+ ),
1368
+ ),
1369
+ )
1370
+ _response_json = _response.json()
1371
+ except JSONDecodeError:
1372
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
1373
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
1374
+
1375
+ async def add_data_pool_file(
1376
+ self,
1377
+ id: str,
1378
+ *,
1379
+ file: core.File,
1380
+ filename: typing.Optional[str] = None,
1381
+ request_options: typing.Optional[RequestOptions] = None,
1382
+ ) -> AsyncHttpResponse[DataPoolFileDto]:
1383
+ """
1384
+ Add a new file to a specific data pool (identified by its ID).
1385
+
1386
+ Parameters
1387
+ ----------
1388
+ id : str
1389
+
1390
+ file : core.File
1391
+ See core.File for more documentation
1392
+
1393
+ filename : typing.Optional[str]
1394
+
1395
+ request_options : typing.Optional[RequestOptions]
1396
+ Request-specific configuration.
1397
+
1398
+ Returns
1399
+ -------
1400
+ AsyncHttpResponse[DataPoolFileDto]
1401
+ File is added to the data pool
1402
+ """
1403
+ _response = await self._client_wrapper.httpx_client.request(
1404
+ f"datapools/{jsonable_encoder(id)}/files",
1405
+ method="POST",
1406
+ params={
1407
+ "filename": filename,
1408
+ },
1409
+ data={},
1410
+ files={
1411
+ "file": file,
1412
+ },
1413
+ request_options=request_options,
1414
+ omit=OMIT,
1415
+ force_multipart=True,
1416
+ )
1417
+ try:
1418
+ if 200 <= _response.status_code < 300:
1419
+ _data = typing.cast(
1420
+ DataPoolFileDto,
1421
+ parse_obj_as(
1422
+ type_=DataPoolFileDto, # type: ignore
1423
+ object_=_response.json(),
1424
+ ),
1425
+ )
1426
+ return AsyncHttpResponse(response=_response, data=_data)
1427
+ if _response.status_code == 400:
1428
+ raise BadRequestError(
1429
+ headers=dict(_response.headers),
1430
+ body=typing.cast(
1431
+ typing.Optional[typing.Any],
1432
+ parse_obj_as(
1433
+ type_=typing.Optional[typing.Any], # type: ignore
1434
+ object_=_response.json(),
1435
+ ),
1436
+ ),
1437
+ )
1438
+ if _response.status_code == 401:
1439
+ raise UnauthorizedError(
1440
+ headers=dict(_response.headers),
1441
+ body=typing.cast(
1442
+ typing.Optional[typing.Any],
1443
+ parse_obj_as(
1444
+ type_=typing.Optional[typing.Any], # type: ignore
1445
+ object_=_response.json(),
1446
+ ),
1447
+ ),
1448
+ )
1449
+ if _response.status_code == 403:
1450
+ raise ForbiddenError(
1451
+ headers=dict(_response.headers),
1452
+ body=typing.cast(
1453
+ typing.Optional[typing.Any],
1454
+ parse_obj_as(
1455
+ type_=typing.Optional[typing.Any], # type: ignore
1456
+ object_=_response.json(),
1457
+ ),
1458
+ ),
1459
+ )
1460
+ if _response.status_code == 404:
1461
+ raise NotFoundError(
1462
+ headers=dict(_response.headers),
1463
+ body=typing.cast(
1464
+ typing.Optional[typing.Any],
1465
+ parse_obj_as(
1466
+ type_=typing.Optional[typing.Any], # type: ignore
1467
+ object_=_response.json(),
1468
+ ),
1469
+ ),
1470
+ )
1471
+ if _response.status_code == 500:
1472
+ raise InternalServerError(
1473
+ headers=dict(_response.headers),
1474
+ body=typing.cast(
1475
+ typing.Optional[typing.Any],
1476
+ parse_obj_as(
1477
+ type_=typing.Optional[typing.Any], # type: ignore
1478
+ object_=_response.json(),
1479
+ ),
1480
+ ),
1481
+ )
1482
+ _response_json = _response.json()
1483
+ except JSONDecodeError:
1484
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
1485
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
1486
+
1487
+ @contextlib.asynccontextmanager
1488
+ async def get_data_pool_file(
1489
+ self, id: str, file_id: str, *, request_options: typing.Optional[RequestOptions] = None
1490
+ ) -> typing.AsyncIterator[AsyncHttpResponse[typing.AsyncIterator[bytes]]]:
1491
+ """
1492
+ Get the content of a specific file from a data pool (both file and data pool identified by their ID).
1493
+
1494
+ Parameters
1495
+ ----------
1496
+ id : str
1497
+
1498
+ file_id : str
1499
+
1500
+ request_options : typing.Optional[RequestOptions]
1501
+ Request-specific configuration. You can pass in configuration such as `chunk_size`, and more to customize the request and response.
1502
+
1503
+ Returns
1504
+ -------
1505
+ typing.AsyncIterator[AsyncHttpResponse[typing.AsyncIterator[bytes]]]
1506
+ The file content
1507
+ """
1508
+ async with self._client_wrapper.httpx_client.stream(
1509
+ f"datapools/{jsonable_encoder(id)}/files/{jsonable_encoder(file_id)}",
1510
+ method="GET",
1511
+ request_options=request_options,
1512
+ ) as _response:
1513
+
1514
+ async def _stream() -> AsyncHttpResponse[typing.AsyncIterator[bytes]]:
1515
+ try:
1516
+ if 200 <= _response.status_code < 300:
1517
+ _chunk_size = request_options.get("chunk_size", None) if request_options is not None else None
1518
+ return AsyncHttpResponse(
1519
+ response=_response,
1520
+ data=(_chunk async for _chunk in _response.aiter_bytes(chunk_size=_chunk_size)),
1521
+ )
1522
+ await _response.aread()
1523
+ if _response.status_code == 401:
1524
+ raise UnauthorizedError(
1525
+ headers=dict(_response.headers),
1526
+ body=typing.cast(
1527
+ typing.Optional[typing.Any],
1528
+ parse_obj_as(
1529
+ type_=typing.Optional[typing.Any], # type: ignore
1530
+ object_=_response.json(),
1531
+ ),
1532
+ ),
1533
+ )
1534
+ if _response.status_code == 403:
1535
+ raise ForbiddenError(
1536
+ headers=dict(_response.headers),
1537
+ body=typing.cast(
1538
+ typing.Optional[typing.Any],
1539
+ parse_obj_as(
1540
+ type_=typing.Optional[typing.Any], # type: ignore
1541
+ object_=_response.json(),
1542
+ ),
1543
+ ),
1544
+ )
1545
+ if _response.status_code == 404:
1546
+ raise NotFoundError(
1547
+ headers=dict(_response.headers),
1548
+ body=typing.cast(
1549
+ typing.Optional[typing.Any],
1550
+ parse_obj_as(
1551
+ type_=typing.Optional[typing.Any], # type: ignore
1552
+ object_=_response.json(),
1553
+ ),
1554
+ ),
1555
+ )
1556
+ if _response.status_code == 500:
1557
+ raise InternalServerError(
1558
+ headers=dict(_response.headers),
1559
+ body=typing.cast(
1560
+ typing.Optional[typing.Any],
1561
+ parse_obj_as(
1562
+ type_=typing.Optional[typing.Any], # type: ignore
1563
+ object_=_response.json(),
1564
+ ),
1565
+ ),
1566
+ )
1567
+ _response_json = _response.json()
1568
+ except JSONDecodeError:
1569
+ raise ApiError(
1570
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response.text
1571
+ )
1572
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
1573
+
1574
+ yield await _stream()
1575
+
1576
+ async def delete_data_pool_file(
1577
+ self, id: str, file_id: str, *, request_options: typing.Optional[RequestOptions] = None
1578
+ ) -> AsyncHttpResponse[None]:
1579
+ """
1580
+ Delete a specific file from a data pool (both file and data pool identified by their IDs).
1581
+
1582
+ Parameters
1583
+ ----------
1584
+ id : str
1585
+
1586
+ file_id : str
1587
+
1588
+ request_options : typing.Optional[RequestOptions]
1589
+ Request-specific configuration.
1590
+
1591
+ Returns
1592
+ -------
1593
+ AsyncHttpResponse[None]
1594
+ """
1595
+ _response = await self._client_wrapper.httpx_client.request(
1596
+ f"datapools/{jsonable_encoder(id)}/files/{jsonable_encoder(file_id)}",
1597
+ method="DELETE",
1598
+ request_options=request_options,
1599
+ )
1600
+ try:
1601
+ if 200 <= _response.status_code < 300:
1602
+ return AsyncHttpResponse(response=_response, data=None)
1603
+ if _response.status_code == 401:
1604
+ raise UnauthorizedError(
1605
+ headers=dict(_response.headers),
1606
+ body=typing.cast(
1607
+ typing.Optional[typing.Any],
1608
+ parse_obj_as(
1609
+ type_=typing.Optional[typing.Any], # type: ignore
1610
+ object_=_response.json(),
1611
+ ),
1612
+ ),
1613
+ )
1614
+ if _response.status_code == 403:
1615
+ raise ForbiddenError(
1616
+ headers=dict(_response.headers),
1617
+ body=typing.cast(
1618
+ typing.Optional[typing.Any],
1619
+ parse_obj_as(
1620
+ type_=typing.Optional[typing.Any], # type: ignore
1621
+ object_=_response.json(),
1622
+ ),
1623
+ ),
1624
+ )
1625
+ if _response.status_code == 404:
1626
+ raise NotFoundError(
1627
+ headers=dict(_response.headers),
1628
+ body=typing.cast(
1629
+ typing.Optional[typing.Any],
1630
+ parse_obj_as(
1631
+ type_=typing.Optional[typing.Any], # type: ignore
1632
+ object_=_response.json(),
1633
+ ),
1634
+ ),
1635
+ )
1636
+ if _response.status_code == 500:
1637
+ raise InternalServerError(
1638
+ headers=dict(_response.headers),
1639
+ body=typing.cast(
1640
+ typing.Optional[typing.Any],
1641
+ parse_obj_as(
1642
+ type_=typing.Optional[typing.Any], # type: ignore
1643
+ object_=_response.json(),
1644
+ ),
1645
+ ),
1646
+ )
1647
+ _response_json = _response.json()
1648
+ except JSONDecodeError:
1649
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
1650
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)