label-studio-sdk 2.0.0__py3-none-any.whl → 2.0.2__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


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

Files changed (175) hide show
  1. label_studio_sdk/__init__.py +24 -0
  2. label_studio_sdk/actions/client.py +13 -13
  3. label_studio_sdk/actions/types/actions_list_response_item.py +3 -3
  4. label_studio_sdk/actions/types/actions_list_response_item_dialog.py +2 -2
  5. label_studio_sdk/annotations/client.py +441 -441
  6. label_studio_sdk/base_client.py +4 -0
  7. label_studio_sdk/billing/__init__.py +2 -0
  8. label_studio_sdk/billing/client.py +112 -0
  9. label_studio_sdk/comments/client.py +176 -176
  10. label_studio_sdk/export_storage/azure/client.py +274 -274
  11. label_studio_sdk/export_storage/gcs/client.py +263 -263
  12. label_studio_sdk/export_storage/local/client.py +206 -206
  13. label_studio_sdk/export_storage/redis/client.py +287 -287
  14. label_studio_sdk/export_storage/s3/client.py +347 -347
  15. label_studio_sdk/export_storage/s3s/client.py +678 -678
  16. label_studio_sdk/import_storage/azure/client.py +357 -357
  17. label_studio_sdk/import_storage/gcs/client.py +357 -357
  18. label_studio_sdk/import_storage/local/client.py +206 -206
  19. label_studio_sdk/import_storage/redis/client.py +309 -309
  20. label_studio_sdk/import_storage/s3/client.py +452 -452
  21. label_studio_sdk/import_storage/s3s/client.py +735 -735
  22. label_studio_sdk/jwt_settings/client.py +10 -10
  23. label_studio_sdk/ml/client.py +118 -118
  24. label_studio_sdk/ml/types/ml_list_model_versions_response.py +1 -1
  25. label_studio_sdk/model_providers/client.py +181 -181
  26. label_studio_sdk/organizations/members/client.py +348 -2
  27. label_studio_sdk/predictions/client.py +60 -60
  28. label_studio_sdk/projects/__init__.py +30 -1
  29. label_studio_sdk/projects/assignments/__init__.py +33 -0
  30. label_studio_sdk/projects/assignments/client.py +764 -0
  31. label_studio_sdk/projects/assignments/types/__init__.py +35 -0
  32. label_studio_sdk/projects/assignments/types/assignments_assign_request_type.py +5 -0
  33. label_studio_sdk/projects/assignments/types/assignments_bulk_assign_request_filters.py +33 -0
  34. label_studio_sdk/projects/assignments/types/assignments_bulk_assign_request_filters_conjunction.py +5 -0
  35. label_studio_sdk/projects/assignments/types/assignments_bulk_assign_request_filters_items_item.py +44 -0
  36. label_studio_sdk/projects/assignments/types/assignments_bulk_assign_request_filters_items_item_filter.py +31 -0
  37. label_studio_sdk/projects/assignments/types/assignments_bulk_assign_request_filters_items_item_operator.py +23 -0
  38. label_studio_sdk/projects/assignments/types/assignments_bulk_assign_request_filters_items_item_value.py +7 -0
  39. label_studio_sdk/projects/assignments/types/assignments_bulk_assign_request_selected_items.py +9 -0
  40. label_studio_sdk/projects/assignments/types/assignments_bulk_assign_request_selected_items_excluded.py +29 -0
  41. label_studio_sdk/projects/assignments/types/assignments_bulk_assign_request_selected_items_included.py +29 -0
  42. label_studio_sdk/projects/assignments/types/assignments_bulk_assign_request_type.py +5 -0
  43. label_studio_sdk/projects/assignments/types/assignments_bulk_assign_response.py +22 -0
  44. label_studio_sdk/projects/assignments/types/assignments_update_request_type.py +5 -0
  45. label_studio_sdk/projects/client.py +441 -425
  46. label_studio_sdk/projects/exports/client.py +55 -55
  47. label_studio_sdk/projects/exports/types/exports_convert_response.py +1 -1
  48. label_studio_sdk/projects/stats/types/stats_iaa_response.py +5 -5
  49. label_studio_sdk/projects/types/projects_import_tasks_response.py +12 -12
  50. label_studio_sdk/prompts/client.py +211 -211
  51. label_studio_sdk/prompts/runs/client.py +33 -33
  52. label_studio_sdk/prompts/versions/client.py +72 -72
  53. label_studio_sdk/tasks/client.py +174 -174
  54. label_studio_sdk/types/__init__.py +22 -0
  55. label_studio_sdk/types/all_roles_project_list.py +98 -98
  56. label_studio_sdk/types/annotation.py +35 -35
  57. label_studio_sdk/types/annotation_request.py +27 -27
  58. label_studio_sdk/types/azure_blob_export_storage.py +29 -29
  59. label_studio_sdk/types/azure_blob_import_storage.py +33 -33
  60. label_studio_sdk/types/batch_failed_predictions.py +1 -1
  61. label_studio_sdk/types/billing_checks.py +39 -0
  62. label_studio_sdk/types/billing_flags.py +44 -0
  63. label_studio_sdk/types/billing_info_response.py +22 -0
  64. label_studio_sdk/types/blueprint_list.py +7 -8
  65. label_studio_sdk/types/child_filter.py +11 -10
  66. label_studio_sdk/types/comment.py +15 -15
  67. label_studio_sdk/types/comment_request.py +7 -8
  68. label_studio_sdk/types/comment_serializer_with_expanded_user.py +17 -18
  69. label_studio_sdk/types/converted_format.py +1 -1
  70. label_studio_sdk/types/converted_format_request.py +1 -1
  71. label_studio_sdk/types/count_limit.py +22 -0
  72. label_studio_sdk/types/export.py +8 -8
  73. label_studio_sdk/types/file_upload.py +3 -2
  74. label_studio_sdk/types/filter.py +10 -9
  75. label_studio_sdk/types/filter_group.py +4 -3
  76. label_studio_sdk/types/gcs_export_storage.py +23 -23
  77. label_studio_sdk/types/gcs_import_storage.py +27 -27
  78. label_studio_sdk/types/import_api_request.py +26 -26
  79. label_studio_sdk/types/inference_run_cost_estimate.py +10 -10
  80. label_studio_sdk/types/local_files_export_storage.py +23 -23
  81. label_studio_sdk/types/local_files_import_storage.py +26 -26
  82. label_studio_sdk/types/lse_annotation_filter_options.py +10 -10
  83. label_studio_sdk/types/lse_annotation_filter_options_request.py +10 -10
  84. label_studio_sdk/types/lse_export_create.py +12 -12
  85. label_studio_sdk/types/lse_fields.py +14 -14
  86. label_studio_sdk/types/lse_organization.py +17 -17
  87. label_studio_sdk/types/lse_organization_member_list.py +32 -0
  88. label_studio_sdk/types/lse_project_create.py +72 -72
  89. label_studio_sdk/types/lse_project_update.py +89 -89
  90. label_studio_sdk/types/lse_s3export_storage.py +46 -46
  91. label_studio_sdk/types/lse_s3export_storage_request.py +43 -43
  92. label_studio_sdk/types/lse_s3import_storage.py +53 -53
  93. label_studio_sdk/types/lse_s3import_storage_request.py +49 -49
  94. label_studio_sdk/types/lse_task.py +49 -49
  95. label_studio_sdk/types/lse_task_drafts_item.py +1 -1
  96. label_studio_sdk/types/lse_task_filter_options.py +14 -14
  97. label_studio_sdk/types/lse_task_filter_options_request.py +14 -14
  98. label_studio_sdk/types/lse_task_predictions_item.py +5 -5
  99. label_studio_sdk/types/lse_task_serializer_for_annotators.py +12 -12
  100. label_studio_sdk/types/lse_task_serializer_for_annotators_drafts_item.py +1 -1
  101. label_studio_sdk/types/lse_task_serializer_for_annotators_predictions_item.py +5 -5
  102. label_studio_sdk/types/lse_task_serializer_for_reviewers.py +49 -49
  103. label_studio_sdk/types/lse_task_serializer_for_reviewers_drafts_item.py +1 -1
  104. label_studio_sdk/types/lse_task_serializer_for_reviewers_predictions_item.py +5 -5
  105. label_studio_sdk/types/lse_user.py +13 -13
  106. label_studio_sdk/types/lse_user_api.py +11 -11
  107. label_studio_sdk/types/lse_user_organization_member_list.py +48 -0
  108. label_studio_sdk/types/lseapi_token_create.py +1 -1
  109. label_studio_sdk/types/lseapi_token_list.py +1 -1
  110. label_studio_sdk/types/lsejwt_settings.py +5 -5
  111. label_studio_sdk/types/ml_backend.py +27 -28
  112. label_studio_sdk/types/model_interface.py +12 -12
  113. label_studio_sdk/types/model_interface_request.py +7 -8
  114. label_studio_sdk/types/model_interface_serializer_get.py +13 -13
  115. label_studio_sdk/types/model_provider_connection.py +34 -34
  116. label_studio_sdk/types/model_provider_connection_request.py +15 -14
  117. label_studio_sdk/types/model_run.py +12 -12
  118. label_studio_sdk/types/organization_billing.py +1 -1
  119. label_studio_sdk/types/organization_id.py +2 -2
  120. label_studio_sdk/types/organization_invite.py +1 -1
  121. label_studio_sdk/types/organization_member.py +8 -9
  122. label_studio_sdk/types/organization_membership.py +2 -1
  123. label_studio_sdk/types/paginated_lse_organization_member_list_list.py +23 -0
  124. label_studio_sdk/types/pause.py +23 -23
  125. label_studio_sdk/types/prediction.py +21 -21
  126. label_studio_sdk/types/prediction_request.py +16 -16
  127. label_studio_sdk/types/project.py +72 -72
  128. label_studio_sdk/types/project_import.py +21 -21
  129. label_studio_sdk/types/prompts_status_enum.py +16 -0
  130. label_studio_sdk/types/redis_export_storage.py +34 -34
  131. label_studio_sdk/types/redis_import_storage.py +37 -37
  132. label_studio_sdk/types/refined_prompt_response.py +11 -11
  133. label_studio_sdk/types/review_settings.py +29 -30
  134. label_studio_sdk/types/review_settings_request.py +29 -30
  135. label_studio_sdk/types/role9e7enum.py +5 -0
  136. label_studio_sdk/types/s3export_storage.py +45 -45
  137. label_studio_sdk/types/s3import_storage.py +44 -44
  138. label_studio_sdk/types/selected_items_request.py +1 -1
  139. label_studio_sdk/types/serialization_options.py +10 -10
  140. label_studio_sdk/types/serialization_options_request.py +10 -10
  141. label_studio_sdk/types/task_assignment.py +43 -0
  142. label_studio_sdk/types/third_party_model_version.py +11 -11
  143. label_studio_sdk/types/third_party_model_version_request.py +6 -7
  144. label_studio_sdk/types/type_enum.py +5 -0
  145. label_studio_sdk/types/user_simple.py +3 -3
  146. label_studio_sdk/types/user_simple_request.py +1 -1
  147. label_studio_sdk/types/version_response.py +19 -20
  148. label_studio_sdk/types/view.py +8 -8
  149. label_studio_sdk/types/webhook.py +16 -16
  150. label_studio_sdk/types/webhook_serializer_for_update.py +16 -16
  151. label_studio_sdk/types/workspace.py +10 -11
  152. label_studio_sdk/users/client.py +160 -160
  153. label_studio_sdk/views/client.py +164 -164
  154. label_studio_sdk/webhooks/client.py +183 -183
  155. label_studio_sdk/webhooks/types/webhooks_info_response.py +32 -32
  156. label_studio_sdk/webhooks/types/webhooks_info_response_annotation_created.py +1 -1
  157. label_studio_sdk/webhooks/types/webhooks_info_response_annotation_updated.py +1 -1
  158. label_studio_sdk/webhooks/types/webhooks_info_response_annotations_created.py +1 -1
  159. label_studio_sdk/webhooks/types/webhooks_info_response_annotations_deleted.py +1 -1
  160. label_studio_sdk/webhooks/types/webhooks_info_response_label_link_created.py +1 -1
  161. label_studio_sdk/webhooks/types/webhooks_info_response_label_link_deleted.py +1 -1
  162. label_studio_sdk/webhooks/types/webhooks_info_response_label_link_updated.py +1 -1
  163. label_studio_sdk/webhooks/types/webhooks_info_response_project_created.py +1 -1
  164. label_studio_sdk/webhooks/types/webhooks_info_response_project_deleted.py +1 -1
  165. label_studio_sdk/webhooks/types/webhooks_info_response_project_updated.py +1 -1
  166. label_studio_sdk/webhooks/types/webhooks_info_response_review_created.py +1 -1
  167. label_studio_sdk/webhooks/types/webhooks_info_response_review_updated.py +1 -1
  168. label_studio_sdk/webhooks/types/webhooks_info_response_reviews_deleted.py +1 -1
  169. label_studio_sdk/webhooks/types/webhooks_info_response_tasks_created.py +1 -1
  170. label_studio_sdk/webhooks/types/webhooks_info_response_tasks_deleted.py +1 -1
  171. label_studio_sdk/workspaces/client.py +40 -40
  172. {label_studio_sdk-2.0.0.dist-info → label_studio_sdk-2.0.2.dist-info}/METADATA +73 -25
  173. {label_studio_sdk-2.0.0.dist-info → label_studio_sdk-2.0.2.dist-info}/RECORD +175 -146
  174. {label_studio_sdk-2.0.0.dist-info → label_studio_sdk-2.0.2.dist-info}/LICENSE +0 -0
  175. {label_studio_sdk-2.0.0.dist-info → label_studio_sdk-2.0.2.dist-info}/WHEEL +0 -0
@@ -81,30 +81,30 @@ class S3SClient:
81
81
  def create(
82
82
  self,
83
83
  *,
84
- role_arn: str,
85
84
  project: int,
86
- synchronizable: typing.Optional[bool] = OMIT,
85
+ role_arn: str,
86
+ aws_access_key_id: typing.Optional[str] = OMIT,
87
+ aws_secret_access_key: typing.Optional[str] = OMIT,
88
+ aws_session_token: typing.Optional[str] = OMIT,
89
+ aws_sse_kms_key_id: typing.Optional[str] = OMIT,
90
+ bucket: typing.Optional[str] = OMIT,
91
+ can_delete_objects: typing.Optional[bool] = OMIT,
92
+ description: typing.Optional[str] = OMIT,
93
+ external_id: typing.Optional[str] = OMIT,
87
94
  last_sync: typing.Optional[dt.datetime] = OMIT,
88
95
  last_sync_count: typing.Optional[int] = OMIT,
89
96
  last_sync_job: typing.Optional[str] = OMIT,
90
- status: typing.Optional[StatusC5AEnum] = OMIT,
91
- traceback: typing.Optional[str] = OMIT,
97
+ legacy_auth: typing.Optional[bool] = OMIT,
92
98
  meta: typing.Optional[typing.Optional[typing.Any]] = OMIT,
93
- title: typing.Optional[str] = OMIT,
94
- description: typing.Optional[str] = OMIT,
95
- can_delete_objects: typing.Optional[bool] = OMIT,
96
- bucket: typing.Optional[str] = OMIT,
97
99
  prefix: typing.Optional[str] = OMIT,
98
100
  regex_filter: typing.Optional[str] = OMIT,
99
- use_blob_urls: typing.Optional[bool] = OMIT,
100
- aws_access_key_id: typing.Optional[str] = OMIT,
101
- aws_secret_access_key: typing.Optional[str] = OMIT,
102
- aws_session_token: typing.Optional[str] = OMIT,
103
- aws_sse_kms_key_id: typing.Optional[str] = OMIT,
104
101
  region_name: typing.Optional[str] = OMIT,
105
102
  s3endpoint: typing.Optional[str] = OMIT,
106
- external_id: typing.Optional[str] = OMIT,
107
- legacy_auth: typing.Optional[bool] = OMIT,
103
+ status: typing.Optional[StatusC5AEnum] = OMIT,
104
+ synchronizable: typing.Optional[bool] = OMIT,
105
+ title: typing.Optional[str] = OMIT,
106
+ traceback: typing.Optional[str] = OMIT,
107
+ use_blob_urls: typing.Optional[bool] = OMIT,
108
108
  request_options: typing.Optional[RequestOptions] = None,
109
109
  ) -> LseS3ExportStorage:
110
110
  """
@@ -112,13 +112,35 @@ class S3SClient:
112
112
 
113
113
  Parameters
114
114
  ----------
115
+ project : int
116
+ A unique integer value identifying this project.
117
+
115
118
  role_arn : str
116
119
  AWS RoleArn
117
120
 
118
- project : int
119
- A unique integer value identifying this project.
121
+ aws_access_key_id : typing.Optional[str]
122
+ AWS_ACCESS_KEY_ID
120
123
 
121
- synchronizable : typing.Optional[bool]
124
+ aws_secret_access_key : typing.Optional[str]
125
+ AWS_SECRET_ACCESS_KEY
126
+
127
+ aws_session_token : typing.Optional[str]
128
+ AWS_SESSION_TOKEN
129
+
130
+ aws_sse_kms_key_id : typing.Optional[str]
131
+ AWS SSE KMS Key ID
132
+
133
+ bucket : typing.Optional[str]
134
+ S3 bucket name
135
+
136
+ can_delete_objects : typing.Optional[bool]
137
+ Deletion from storage enabled
138
+
139
+ description : typing.Optional[str]
140
+ Cloud storage description
141
+
142
+ external_id : typing.Optional[str]
143
+ AWS ExternalId
122
144
 
123
145
  last_sync : typing.Optional[dt.datetime]
124
146
  Last sync finished time
@@ -129,56 +151,34 @@ class S3SClient:
129
151
  last_sync_job : typing.Optional[str]
130
152
  Last sync job ID
131
153
 
132
- status : typing.Optional[StatusC5AEnum]
133
-
134
- traceback : typing.Optional[str]
135
- Traceback report for the last failed sync
154
+ legacy_auth : typing.Optional[bool]
136
155
 
137
156
  meta : typing.Optional[typing.Optional[typing.Any]]
138
157
 
139
- title : typing.Optional[str]
140
- Cloud storage title
141
-
142
- description : typing.Optional[str]
143
- Cloud storage description
144
-
145
- can_delete_objects : typing.Optional[bool]
146
- Deletion from storage enabled
147
-
148
- bucket : typing.Optional[str]
149
- S3 bucket name
150
-
151
158
  prefix : typing.Optional[str]
152
159
  S3 bucket prefix
153
160
 
154
161
  regex_filter : typing.Optional[str]
155
162
  Cloud storage regex for filtering objects
156
163
 
157
- use_blob_urls : typing.Optional[bool]
158
- Interpret objects as BLOBs and generate URLs
159
-
160
- aws_access_key_id : typing.Optional[str]
161
- AWS_ACCESS_KEY_ID
162
-
163
- aws_secret_access_key : typing.Optional[str]
164
- AWS_SECRET_ACCESS_KEY
165
-
166
- aws_session_token : typing.Optional[str]
167
- AWS_SESSION_TOKEN
168
-
169
- aws_sse_kms_key_id : typing.Optional[str]
170
- AWS SSE KMS Key ID
171
-
172
164
  region_name : typing.Optional[str]
173
165
  AWS Region
174
166
 
175
167
  s3endpoint : typing.Optional[str]
176
168
  S3 Endpoint
177
169
 
178
- external_id : typing.Optional[str]
179
- AWS ExternalId
170
+ status : typing.Optional[StatusC5AEnum]
180
171
 
181
- legacy_auth : typing.Optional[bool]
172
+ synchronizable : typing.Optional[bool]
173
+
174
+ title : typing.Optional[str]
175
+ Cloud storage title
176
+
177
+ traceback : typing.Optional[str]
178
+ Traceback report for the last failed sync
179
+
180
+ use_blob_urls : typing.Optional[bool]
181
+ Interpret objects as BLOBs and generate URLs
182
182
 
183
183
  request_options : typing.Optional[RequestOptions]
184
184
  Request-specific configuration.
@@ -196,38 +196,38 @@ class S3SClient:
196
196
  api_key="YOUR_API_KEY",
197
197
  )
198
198
  client.export_storage.s3s.create(
199
- role_arn="role_arn",
200
199
  project=1,
200
+ role_arn="role_arn",
201
201
  )
202
202
  """
203
203
  _response = self._client_wrapper.httpx_client.request(
204
204
  "api/storages/export/s3s",
205
205
  method="POST",
206
206
  json={
207
- "synchronizable": synchronizable,
207
+ "aws_access_key_id": aws_access_key_id,
208
+ "aws_secret_access_key": aws_secret_access_key,
209
+ "aws_session_token": aws_session_token,
210
+ "aws_sse_kms_key_id": aws_sse_kms_key_id,
211
+ "bucket": bucket,
212
+ "can_delete_objects": can_delete_objects,
213
+ "description": description,
214
+ "external_id": external_id,
208
215
  "last_sync": last_sync,
209
216
  "last_sync_count": last_sync_count,
210
217
  "last_sync_job": last_sync_job,
211
- "status": status,
212
- "traceback": traceback,
218
+ "legacy_auth": legacy_auth,
213
219
  "meta": meta,
214
- "title": title,
215
- "description": description,
216
- "can_delete_objects": can_delete_objects,
217
- "bucket": bucket,
218
220
  "prefix": prefix,
221
+ "project": project,
219
222
  "regex_filter": regex_filter,
220
- "use_blob_urls": use_blob_urls,
221
- "aws_access_key_id": aws_access_key_id,
222
- "aws_secret_access_key": aws_secret_access_key,
223
- "aws_session_token": aws_session_token,
224
- "aws_sse_kms_key_id": aws_sse_kms_key_id,
225
223
  "region_name": region_name,
226
- "s3_endpoint": s3endpoint,
227
- "external_id": external_id,
228
224
  "role_arn": role_arn,
229
- "legacy_auth": legacy_auth,
230
- "project": project,
225
+ "s3_endpoint": s3endpoint,
226
+ "status": status,
227
+ "synchronizable": synchronizable,
228
+ "title": title,
229
+ "traceback": traceback,
230
+ "use_blob_urls": use_blob_urls,
231
231
  },
232
232
  request_options=request_options,
233
233
  omit=OMIT,
@@ -246,21 +246,114 @@ class S3SClient:
246
246
  raise ApiError(status_code=_response.status_code, body=_response.text)
247
247
  raise ApiError(status_code=_response.status_code, body=_response_json)
248
248
 
249
- def get(self, id: int, *, request_options: typing.Optional[RequestOptions] = None) -> LseS3ExportStorage:
249
+ def validate(
250
+ self,
251
+ *,
252
+ project: int,
253
+ role_arn: str,
254
+ aws_access_key_id: typing.Optional[str] = OMIT,
255
+ aws_secret_access_key: typing.Optional[str] = OMIT,
256
+ aws_session_token: typing.Optional[str] = OMIT,
257
+ aws_sse_kms_key_id: typing.Optional[str] = OMIT,
258
+ bucket: typing.Optional[str] = OMIT,
259
+ can_delete_objects: typing.Optional[bool] = OMIT,
260
+ description: typing.Optional[str] = OMIT,
261
+ external_id: typing.Optional[str] = OMIT,
262
+ last_sync: typing.Optional[dt.datetime] = OMIT,
263
+ last_sync_count: typing.Optional[int] = OMIT,
264
+ last_sync_job: typing.Optional[str] = OMIT,
265
+ legacy_auth: typing.Optional[bool] = OMIT,
266
+ meta: typing.Optional[typing.Optional[typing.Any]] = OMIT,
267
+ prefix: typing.Optional[str] = OMIT,
268
+ regex_filter: typing.Optional[str] = OMIT,
269
+ region_name: typing.Optional[str] = OMIT,
270
+ s3endpoint: typing.Optional[str] = OMIT,
271
+ status: typing.Optional[StatusC5AEnum] = OMIT,
272
+ synchronizable: typing.Optional[bool] = OMIT,
273
+ title: typing.Optional[str] = OMIT,
274
+ traceback: typing.Optional[str] = OMIT,
275
+ use_blob_urls: typing.Optional[bool] = OMIT,
276
+ request_options: typing.Optional[RequestOptions] = None,
277
+ ) -> None:
250
278
  """
251
- Get a specific S3 export storage connection that was set up with IAM role access.
279
+ Validate a specific S3 export storage connection that was set up with IAM role access.
252
280
 
253
281
  Parameters
254
282
  ----------
255
- id : int
283
+ project : int
284
+ A unique integer value identifying this project.
285
+
286
+ role_arn : str
287
+ AWS RoleArn
288
+
289
+ aws_access_key_id : typing.Optional[str]
290
+ AWS_ACCESS_KEY_ID
291
+
292
+ aws_secret_access_key : typing.Optional[str]
293
+ AWS_SECRET_ACCESS_KEY
294
+
295
+ aws_session_token : typing.Optional[str]
296
+ AWS_SESSION_TOKEN
297
+
298
+ aws_sse_kms_key_id : typing.Optional[str]
299
+ AWS SSE KMS Key ID
300
+
301
+ bucket : typing.Optional[str]
302
+ S3 bucket name
303
+
304
+ can_delete_objects : typing.Optional[bool]
305
+ Deletion from storage enabled
306
+
307
+ description : typing.Optional[str]
308
+ Cloud storage description
309
+
310
+ external_id : typing.Optional[str]
311
+ AWS ExternalId
312
+
313
+ last_sync : typing.Optional[dt.datetime]
314
+ Last sync finished time
315
+
316
+ last_sync_count : typing.Optional[int]
317
+ Count of tasks synced last time
318
+
319
+ last_sync_job : typing.Optional[str]
320
+ Last sync job ID
321
+
322
+ legacy_auth : typing.Optional[bool]
323
+
324
+ meta : typing.Optional[typing.Optional[typing.Any]]
325
+
326
+ prefix : typing.Optional[str]
327
+ S3 bucket prefix
328
+
329
+ regex_filter : typing.Optional[str]
330
+ Cloud storage regex for filtering objects
331
+
332
+ region_name : typing.Optional[str]
333
+ AWS Region
334
+
335
+ s3endpoint : typing.Optional[str]
336
+ S3 Endpoint
337
+
338
+ status : typing.Optional[StatusC5AEnum]
339
+
340
+ synchronizable : typing.Optional[bool]
341
+
342
+ title : typing.Optional[str]
343
+ Cloud storage title
344
+
345
+ traceback : typing.Optional[str]
346
+ Traceback report for the last failed sync
347
+
348
+ use_blob_urls : typing.Optional[bool]
349
+ Interpret objects as BLOBs and generate URLs
256
350
 
257
351
  request_options : typing.Optional[RequestOptions]
258
352
  Request-specific configuration.
259
353
 
260
354
  Returns
261
355
  -------
262
- LseS3ExportStorage
263
-
356
+ None
264
357
 
265
358
  Examples
266
359
  --------
@@ -269,21 +362,89 @@ class S3SClient:
269
362
  client = LabelStudio(
270
363
  api_key="YOUR_API_KEY",
271
364
  )
272
- client.export_storage.s3s.get(
273
- id=1,
365
+ client.export_storage.s3s.validate(
366
+ project=1,
367
+ role_arn="role_arn",
274
368
  )
275
369
  """
276
370
  _response = self._client_wrapper.httpx_client.request(
277
- f"api/storages/export/s3s/{jsonable_encoder(id)}",
278
- method="GET",
279
- request_options=request_options,
280
- )
281
- try:
282
- if 200 <= _response.status_code < 300:
283
- return typing.cast(
284
- LseS3ExportStorage,
285
- construct_type(
286
- type_=LseS3ExportStorage, # type: ignore
371
+ "api/storages/export/s3s/validate",
372
+ method="POST",
373
+ json={
374
+ "aws_access_key_id": aws_access_key_id,
375
+ "aws_secret_access_key": aws_secret_access_key,
376
+ "aws_session_token": aws_session_token,
377
+ "aws_sse_kms_key_id": aws_sse_kms_key_id,
378
+ "bucket": bucket,
379
+ "can_delete_objects": can_delete_objects,
380
+ "description": description,
381
+ "external_id": external_id,
382
+ "last_sync": last_sync,
383
+ "last_sync_count": last_sync_count,
384
+ "last_sync_job": last_sync_job,
385
+ "legacy_auth": legacy_auth,
386
+ "meta": meta,
387
+ "prefix": prefix,
388
+ "project": project,
389
+ "regex_filter": regex_filter,
390
+ "region_name": region_name,
391
+ "role_arn": role_arn,
392
+ "s3_endpoint": s3endpoint,
393
+ "status": status,
394
+ "synchronizable": synchronizable,
395
+ "title": title,
396
+ "traceback": traceback,
397
+ "use_blob_urls": use_blob_urls,
398
+ },
399
+ request_options=request_options,
400
+ omit=OMIT,
401
+ )
402
+ try:
403
+ if 200 <= _response.status_code < 300:
404
+ return
405
+ _response_json = _response.json()
406
+ except JSONDecodeError:
407
+ raise ApiError(status_code=_response.status_code, body=_response.text)
408
+ raise ApiError(status_code=_response.status_code, body=_response_json)
409
+
410
+ def get(self, id: int, *, request_options: typing.Optional[RequestOptions] = None) -> LseS3ExportStorage:
411
+ """
412
+ Get a specific S3 export storage connection that was set up with IAM role access.
413
+
414
+ Parameters
415
+ ----------
416
+ id : int
417
+
418
+ request_options : typing.Optional[RequestOptions]
419
+ Request-specific configuration.
420
+
421
+ Returns
422
+ -------
423
+ LseS3ExportStorage
424
+
425
+
426
+ Examples
427
+ --------
428
+ from label_studio_sdk import LabelStudio
429
+
430
+ client = LabelStudio(
431
+ api_key="YOUR_API_KEY",
432
+ )
433
+ client.export_storage.s3s.get(
434
+ id=1,
435
+ )
436
+ """
437
+ _response = self._client_wrapper.httpx_client.request(
438
+ f"api/storages/export/s3s/{jsonable_encoder(id)}",
439
+ method="GET",
440
+ request_options=request_options,
441
+ )
442
+ try:
443
+ if 200 <= _response.status_code < 300:
444
+ return typing.cast(
445
+ LseS3ExportStorage,
446
+ construct_type(
447
+ type_=LseS3ExportStorage, # type: ignore
287
448
  object_=_response.json(),
288
449
  ),
289
450
  )
@@ -335,30 +496,30 @@ class S3SClient:
335
496
  self,
336
497
  id: int,
337
498
  *,
338
- synchronizable: typing.Optional[bool] = OMIT,
499
+ aws_access_key_id: typing.Optional[str] = OMIT,
500
+ aws_secret_access_key: typing.Optional[str] = OMIT,
501
+ aws_session_token: typing.Optional[str] = OMIT,
502
+ aws_sse_kms_key_id: typing.Optional[str] = OMIT,
503
+ bucket: typing.Optional[str] = OMIT,
504
+ can_delete_objects: typing.Optional[bool] = OMIT,
505
+ description: typing.Optional[str] = OMIT,
506
+ external_id: typing.Optional[str] = OMIT,
339
507
  last_sync: typing.Optional[dt.datetime] = OMIT,
340
508
  last_sync_count: typing.Optional[int] = OMIT,
341
509
  last_sync_job: typing.Optional[str] = OMIT,
342
- status: typing.Optional[StatusC5AEnum] = OMIT,
343
- traceback: typing.Optional[str] = OMIT,
510
+ legacy_auth: typing.Optional[bool] = OMIT,
344
511
  meta: typing.Optional[typing.Optional[typing.Any]] = OMIT,
345
- title: typing.Optional[str] = OMIT,
346
- description: typing.Optional[str] = OMIT,
347
- can_delete_objects: typing.Optional[bool] = OMIT,
348
- bucket: typing.Optional[str] = OMIT,
349
512
  prefix: typing.Optional[str] = OMIT,
513
+ project: typing.Optional[int] = OMIT,
350
514
  regex_filter: typing.Optional[str] = OMIT,
351
- use_blob_urls: typing.Optional[bool] = OMIT,
352
- aws_access_key_id: typing.Optional[str] = OMIT,
353
- aws_secret_access_key: typing.Optional[str] = OMIT,
354
- aws_session_token: typing.Optional[str] = OMIT,
355
- aws_sse_kms_key_id: typing.Optional[str] = OMIT,
356
515
  region_name: typing.Optional[str] = OMIT,
357
- s3endpoint: typing.Optional[str] = OMIT,
358
- external_id: typing.Optional[str] = OMIT,
359
516
  role_arn: typing.Optional[str] = OMIT,
360
- legacy_auth: typing.Optional[bool] = OMIT,
361
- project: typing.Optional[int] = OMIT,
517
+ s3endpoint: typing.Optional[str] = OMIT,
518
+ status: typing.Optional[StatusC5AEnum] = OMIT,
519
+ synchronizable: typing.Optional[bool] = OMIT,
520
+ title: typing.Optional[str] = OMIT,
521
+ traceback: typing.Optional[str] = OMIT,
522
+ use_blob_urls: typing.Optional[bool] = OMIT,
362
523
  request_options: typing.Optional[RequestOptions] = None,
363
524
  ) -> LseS3ExportStorage:
364
525
  """
@@ -368,7 +529,29 @@ class S3SClient:
368
529
  ----------
369
530
  id : int
370
531
 
371
- synchronizable : typing.Optional[bool]
532
+ aws_access_key_id : typing.Optional[str]
533
+ AWS_ACCESS_KEY_ID
534
+
535
+ aws_secret_access_key : typing.Optional[str]
536
+ AWS_SECRET_ACCESS_KEY
537
+
538
+ aws_session_token : typing.Optional[str]
539
+ AWS_SESSION_TOKEN
540
+
541
+ aws_sse_kms_key_id : typing.Optional[str]
542
+ AWS SSE KMS Key ID
543
+
544
+ bucket : typing.Optional[str]
545
+ S3 bucket name
546
+
547
+ can_delete_objects : typing.Optional[bool]
548
+ Deletion from storage enabled
549
+
550
+ description : typing.Optional[str]
551
+ Cloud storage description
552
+
553
+ external_id : typing.Optional[str]
554
+ AWS ExternalId
372
555
 
373
556
  last_sync : typing.Optional[dt.datetime]
374
557
  Last sync finished time
@@ -379,62 +562,40 @@ class S3SClient:
379
562
  last_sync_job : typing.Optional[str]
380
563
  Last sync job ID
381
564
 
382
- status : typing.Optional[StatusC5AEnum]
383
-
384
- traceback : typing.Optional[str]
385
- Traceback report for the last failed sync
565
+ legacy_auth : typing.Optional[bool]
386
566
 
387
567
  meta : typing.Optional[typing.Optional[typing.Any]]
388
568
 
389
- title : typing.Optional[str]
390
- Cloud storage title
391
-
392
- description : typing.Optional[str]
393
- Cloud storage description
394
-
395
- can_delete_objects : typing.Optional[bool]
396
- Deletion from storage enabled
397
-
398
- bucket : typing.Optional[str]
399
- S3 bucket name
400
-
401
569
  prefix : typing.Optional[str]
402
570
  S3 bucket prefix
403
571
 
572
+ project : typing.Optional[int]
573
+ A unique integer value identifying this project.
574
+
404
575
  regex_filter : typing.Optional[str]
405
576
  Cloud storage regex for filtering objects
406
577
 
407
- use_blob_urls : typing.Optional[bool]
408
- Interpret objects as BLOBs and generate URLs
409
-
410
- aws_access_key_id : typing.Optional[str]
411
- AWS_ACCESS_KEY_ID
412
-
413
- aws_secret_access_key : typing.Optional[str]
414
- AWS_SECRET_ACCESS_KEY
415
-
416
- aws_session_token : typing.Optional[str]
417
- AWS_SESSION_TOKEN
418
-
419
- aws_sse_kms_key_id : typing.Optional[str]
420
- AWS SSE KMS Key ID
421
-
422
578
  region_name : typing.Optional[str]
423
579
  AWS Region
424
580
 
581
+ role_arn : typing.Optional[str]
582
+ AWS RoleArn
583
+
425
584
  s3endpoint : typing.Optional[str]
426
585
  S3 Endpoint
427
586
 
428
- external_id : typing.Optional[str]
429
- AWS ExternalId
587
+ status : typing.Optional[StatusC5AEnum]
430
588
 
431
- role_arn : typing.Optional[str]
432
- AWS RoleArn
589
+ synchronizable : typing.Optional[bool]
433
590
 
434
- legacy_auth : typing.Optional[bool]
591
+ title : typing.Optional[str]
592
+ Cloud storage title
435
593
 
436
- project : typing.Optional[int]
437
- A unique integer value identifying this project.
594
+ traceback : typing.Optional[str]
595
+ Traceback report for the last failed sync
596
+
597
+ use_blob_urls : typing.Optional[bool]
598
+ Interpret objects as BLOBs and generate URLs
438
599
 
439
600
  request_options : typing.Optional[RequestOptions]
440
601
  Request-specific configuration.
@@ -459,30 +620,30 @@ class S3SClient:
459
620
  f"api/storages/export/s3s/{jsonable_encoder(id)}",
460
621
  method="PATCH",
461
622
  json={
462
- "synchronizable": synchronizable,
623
+ "aws_access_key_id": aws_access_key_id,
624
+ "aws_secret_access_key": aws_secret_access_key,
625
+ "aws_session_token": aws_session_token,
626
+ "aws_sse_kms_key_id": aws_sse_kms_key_id,
627
+ "bucket": bucket,
628
+ "can_delete_objects": can_delete_objects,
629
+ "description": description,
630
+ "external_id": external_id,
463
631
  "last_sync": last_sync,
464
632
  "last_sync_count": last_sync_count,
465
633
  "last_sync_job": last_sync_job,
466
- "status": status,
467
- "traceback": traceback,
634
+ "legacy_auth": legacy_auth,
468
635
  "meta": meta,
469
- "title": title,
470
- "description": description,
471
- "can_delete_objects": can_delete_objects,
472
- "bucket": bucket,
473
636
  "prefix": prefix,
637
+ "project": project,
474
638
  "regex_filter": regex_filter,
475
- "use_blob_urls": use_blob_urls,
476
- "aws_access_key_id": aws_access_key_id,
477
- "aws_secret_access_key": aws_secret_access_key,
478
- "aws_session_token": aws_session_token,
479
- "aws_sse_kms_key_id": aws_sse_kms_key_id,
480
639
  "region_name": region_name,
481
- "s3_endpoint": s3endpoint,
482
- "external_id": external_id,
483
640
  "role_arn": role_arn,
484
- "legacy_auth": legacy_auth,
485
- "project": project,
641
+ "s3_endpoint": s3endpoint,
642
+ "status": status,
643
+ "synchronizable": synchronizable,
644
+ "title": title,
645
+ "traceback": traceback,
646
+ "use_blob_urls": use_blob_urls,
486
647
  },
487
648
  headers={
488
649
  "content-type": "application/json",
@@ -550,181 +711,20 @@ class S3SClient:
550
711
  raise ApiError(status_code=_response.status_code, body=_response.text)
551
712
  raise ApiError(status_code=_response.status_code, body=_response_json)
552
713
 
553
- def validate(
714
+
715
+ class AsyncS3SClient:
716
+ def __init__(self, *, client_wrapper: AsyncClientWrapper):
717
+ self._client_wrapper = client_wrapper
718
+
719
+ async def list(
554
720
  self,
555
721
  *,
556
- role_arn: str,
557
- project: int,
558
- synchronizable: typing.Optional[bool] = OMIT,
559
- last_sync: typing.Optional[dt.datetime] = OMIT,
560
- last_sync_count: typing.Optional[int] = OMIT,
561
- last_sync_job: typing.Optional[str] = OMIT,
562
- status: typing.Optional[StatusC5AEnum] = OMIT,
563
- traceback: typing.Optional[str] = OMIT,
564
- meta: typing.Optional[typing.Optional[typing.Any]] = OMIT,
565
- title: typing.Optional[str] = OMIT,
566
- description: typing.Optional[str] = OMIT,
567
- can_delete_objects: typing.Optional[bool] = OMIT,
568
- bucket: typing.Optional[str] = OMIT,
569
- prefix: typing.Optional[str] = OMIT,
570
- regex_filter: typing.Optional[str] = OMIT,
571
- use_blob_urls: typing.Optional[bool] = OMIT,
572
- aws_access_key_id: typing.Optional[str] = OMIT,
573
- aws_secret_access_key: typing.Optional[str] = OMIT,
574
- aws_session_token: typing.Optional[str] = OMIT,
575
- aws_sse_kms_key_id: typing.Optional[str] = OMIT,
576
- region_name: typing.Optional[str] = OMIT,
577
- s3endpoint: typing.Optional[str] = OMIT,
578
- external_id: typing.Optional[str] = OMIT,
579
- legacy_auth: typing.Optional[bool] = OMIT,
722
+ ordering: typing.Optional[str] = None,
723
+ project: typing.Optional[int] = None,
580
724
  request_options: typing.Optional[RequestOptions] = None,
581
- ) -> None:
725
+ ) -> typing.List[LseS3ExportStorage]:
582
726
  """
583
- Validate a specific S3 export storage connection that was set up with IAM role access.
584
-
585
- Parameters
586
- ----------
587
- role_arn : str
588
- AWS RoleArn
589
-
590
- project : int
591
- A unique integer value identifying this project.
592
-
593
- synchronizable : typing.Optional[bool]
594
-
595
- last_sync : typing.Optional[dt.datetime]
596
- Last sync finished time
597
-
598
- last_sync_count : typing.Optional[int]
599
- Count of tasks synced last time
600
-
601
- last_sync_job : typing.Optional[str]
602
- Last sync job ID
603
-
604
- status : typing.Optional[StatusC5AEnum]
605
-
606
- traceback : typing.Optional[str]
607
- Traceback report for the last failed sync
608
-
609
- meta : typing.Optional[typing.Optional[typing.Any]]
610
-
611
- title : typing.Optional[str]
612
- Cloud storage title
613
-
614
- description : typing.Optional[str]
615
- Cloud storage description
616
-
617
- can_delete_objects : typing.Optional[bool]
618
- Deletion from storage enabled
619
-
620
- bucket : typing.Optional[str]
621
- S3 bucket name
622
-
623
- prefix : typing.Optional[str]
624
- S3 bucket prefix
625
-
626
- regex_filter : typing.Optional[str]
627
- Cloud storage regex for filtering objects
628
-
629
- use_blob_urls : typing.Optional[bool]
630
- Interpret objects as BLOBs and generate URLs
631
-
632
- aws_access_key_id : typing.Optional[str]
633
- AWS_ACCESS_KEY_ID
634
-
635
- aws_secret_access_key : typing.Optional[str]
636
- AWS_SECRET_ACCESS_KEY
637
-
638
- aws_session_token : typing.Optional[str]
639
- AWS_SESSION_TOKEN
640
-
641
- aws_sse_kms_key_id : typing.Optional[str]
642
- AWS SSE KMS Key ID
643
-
644
- region_name : typing.Optional[str]
645
- AWS Region
646
-
647
- s3endpoint : typing.Optional[str]
648
- S3 Endpoint
649
-
650
- external_id : typing.Optional[str]
651
- AWS ExternalId
652
-
653
- legacy_auth : typing.Optional[bool]
654
-
655
- request_options : typing.Optional[RequestOptions]
656
- Request-specific configuration.
657
-
658
- Returns
659
- -------
660
- None
661
-
662
- Examples
663
- --------
664
- from label_studio_sdk import LabelStudio
665
-
666
- client = LabelStudio(
667
- api_key="YOUR_API_KEY",
668
- )
669
- client.export_storage.s3s.validate(
670
- role_arn="role_arn",
671
- project=1,
672
- )
673
- """
674
- _response = self._client_wrapper.httpx_client.request(
675
- "api/storages/export/s3s/validate",
676
- method="POST",
677
- json={
678
- "synchronizable": synchronizable,
679
- "last_sync": last_sync,
680
- "last_sync_count": last_sync_count,
681
- "last_sync_job": last_sync_job,
682
- "status": status,
683
- "traceback": traceback,
684
- "meta": meta,
685
- "title": title,
686
- "description": description,
687
- "can_delete_objects": can_delete_objects,
688
- "bucket": bucket,
689
- "prefix": prefix,
690
- "regex_filter": regex_filter,
691
- "use_blob_urls": use_blob_urls,
692
- "aws_access_key_id": aws_access_key_id,
693
- "aws_secret_access_key": aws_secret_access_key,
694
- "aws_session_token": aws_session_token,
695
- "aws_sse_kms_key_id": aws_sse_kms_key_id,
696
- "region_name": region_name,
697
- "s3_endpoint": s3endpoint,
698
- "external_id": external_id,
699
- "role_arn": role_arn,
700
- "legacy_auth": legacy_auth,
701
- "project": project,
702
- },
703
- request_options=request_options,
704
- omit=OMIT,
705
- )
706
- try:
707
- if 200 <= _response.status_code < 300:
708
- return
709
- _response_json = _response.json()
710
- except JSONDecodeError:
711
- raise ApiError(status_code=_response.status_code, body=_response.text)
712
- raise ApiError(status_code=_response.status_code, body=_response_json)
713
-
714
-
715
- class AsyncS3SClient:
716
- def __init__(self, *, client_wrapper: AsyncClientWrapper):
717
- self._client_wrapper = client_wrapper
718
-
719
- async def list(
720
- self,
721
- *,
722
- ordering: typing.Optional[str] = None,
723
- project: typing.Optional[int] = None,
724
- request_options: typing.Optional[RequestOptions] = None,
725
- ) -> typing.List[LseS3ExportStorage]:
726
- """
727
- Get a list of all S3 export storage connections that were set up with IAM role access.
727
+ Get a list of all S3 export storage connections that were set up with IAM role access.
728
728
 
729
729
  Parameters
730
730
  ----------
@@ -785,30 +785,30 @@ class AsyncS3SClient:
785
785
  async def create(
786
786
  self,
787
787
  *,
788
- role_arn: str,
789
788
  project: int,
790
- synchronizable: typing.Optional[bool] = OMIT,
789
+ role_arn: str,
790
+ aws_access_key_id: typing.Optional[str] = OMIT,
791
+ aws_secret_access_key: typing.Optional[str] = OMIT,
792
+ aws_session_token: typing.Optional[str] = OMIT,
793
+ aws_sse_kms_key_id: typing.Optional[str] = OMIT,
794
+ bucket: typing.Optional[str] = OMIT,
795
+ can_delete_objects: typing.Optional[bool] = OMIT,
796
+ description: typing.Optional[str] = OMIT,
797
+ external_id: typing.Optional[str] = OMIT,
791
798
  last_sync: typing.Optional[dt.datetime] = OMIT,
792
799
  last_sync_count: typing.Optional[int] = OMIT,
793
800
  last_sync_job: typing.Optional[str] = OMIT,
794
- status: typing.Optional[StatusC5AEnum] = OMIT,
795
- traceback: typing.Optional[str] = OMIT,
801
+ legacy_auth: typing.Optional[bool] = OMIT,
796
802
  meta: typing.Optional[typing.Optional[typing.Any]] = OMIT,
797
- title: typing.Optional[str] = OMIT,
798
- description: typing.Optional[str] = OMIT,
799
- can_delete_objects: typing.Optional[bool] = OMIT,
800
- bucket: typing.Optional[str] = OMIT,
801
803
  prefix: typing.Optional[str] = OMIT,
802
804
  regex_filter: typing.Optional[str] = OMIT,
803
- use_blob_urls: typing.Optional[bool] = OMIT,
804
- aws_access_key_id: typing.Optional[str] = OMIT,
805
- aws_secret_access_key: typing.Optional[str] = OMIT,
806
- aws_session_token: typing.Optional[str] = OMIT,
807
- aws_sse_kms_key_id: typing.Optional[str] = OMIT,
808
805
  region_name: typing.Optional[str] = OMIT,
809
806
  s3endpoint: typing.Optional[str] = OMIT,
810
- external_id: typing.Optional[str] = OMIT,
811
- legacy_auth: typing.Optional[bool] = OMIT,
807
+ status: typing.Optional[StatusC5AEnum] = OMIT,
808
+ synchronizable: typing.Optional[bool] = OMIT,
809
+ title: typing.Optional[str] = OMIT,
810
+ traceback: typing.Optional[str] = OMIT,
811
+ use_blob_urls: typing.Optional[bool] = OMIT,
812
812
  request_options: typing.Optional[RequestOptions] = None,
813
813
  ) -> LseS3ExportStorage:
814
814
  """
@@ -816,13 +816,35 @@ class AsyncS3SClient:
816
816
 
817
817
  Parameters
818
818
  ----------
819
+ project : int
820
+ A unique integer value identifying this project.
821
+
819
822
  role_arn : str
820
823
  AWS RoleArn
821
824
 
822
- project : int
823
- A unique integer value identifying this project.
825
+ aws_access_key_id : typing.Optional[str]
826
+ AWS_ACCESS_KEY_ID
824
827
 
825
- synchronizable : typing.Optional[bool]
828
+ aws_secret_access_key : typing.Optional[str]
829
+ AWS_SECRET_ACCESS_KEY
830
+
831
+ aws_session_token : typing.Optional[str]
832
+ AWS_SESSION_TOKEN
833
+
834
+ aws_sse_kms_key_id : typing.Optional[str]
835
+ AWS SSE KMS Key ID
836
+
837
+ bucket : typing.Optional[str]
838
+ S3 bucket name
839
+
840
+ can_delete_objects : typing.Optional[bool]
841
+ Deletion from storage enabled
842
+
843
+ description : typing.Optional[str]
844
+ Cloud storage description
845
+
846
+ external_id : typing.Optional[str]
847
+ AWS ExternalId
826
848
 
827
849
  last_sync : typing.Optional[dt.datetime]
828
850
  Last sync finished time
@@ -833,56 +855,34 @@ class AsyncS3SClient:
833
855
  last_sync_job : typing.Optional[str]
834
856
  Last sync job ID
835
857
 
836
- status : typing.Optional[StatusC5AEnum]
837
-
838
- traceback : typing.Optional[str]
839
- Traceback report for the last failed sync
858
+ legacy_auth : typing.Optional[bool]
840
859
 
841
860
  meta : typing.Optional[typing.Optional[typing.Any]]
842
861
 
843
- title : typing.Optional[str]
844
- Cloud storage title
845
-
846
- description : typing.Optional[str]
847
- Cloud storage description
848
-
849
- can_delete_objects : typing.Optional[bool]
850
- Deletion from storage enabled
851
-
852
- bucket : typing.Optional[str]
853
- S3 bucket name
854
-
855
862
  prefix : typing.Optional[str]
856
863
  S3 bucket prefix
857
864
 
858
865
  regex_filter : typing.Optional[str]
859
866
  Cloud storage regex for filtering objects
860
867
 
861
- use_blob_urls : typing.Optional[bool]
862
- Interpret objects as BLOBs and generate URLs
863
-
864
- aws_access_key_id : typing.Optional[str]
865
- AWS_ACCESS_KEY_ID
866
-
867
- aws_secret_access_key : typing.Optional[str]
868
- AWS_SECRET_ACCESS_KEY
869
-
870
- aws_session_token : typing.Optional[str]
871
- AWS_SESSION_TOKEN
872
-
873
- aws_sse_kms_key_id : typing.Optional[str]
874
- AWS SSE KMS Key ID
875
-
876
868
  region_name : typing.Optional[str]
877
869
  AWS Region
878
870
 
879
871
  s3endpoint : typing.Optional[str]
880
872
  S3 Endpoint
881
873
 
882
- external_id : typing.Optional[str]
883
- AWS ExternalId
874
+ status : typing.Optional[StatusC5AEnum]
884
875
 
885
- legacy_auth : typing.Optional[bool]
876
+ synchronizable : typing.Optional[bool]
877
+
878
+ title : typing.Optional[str]
879
+ Cloud storage title
880
+
881
+ traceback : typing.Optional[str]
882
+ Traceback report for the last failed sync
883
+
884
+ use_blob_urls : typing.Optional[bool]
885
+ Interpret objects as BLOBs and generate URLs
886
886
 
887
887
  request_options : typing.Optional[RequestOptions]
888
888
  Request-specific configuration.
@@ -905,8 +905,8 @@ class AsyncS3SClient:
905
905
 
906
906
  async def main() -> None:
907
907
  await client.export_storage.s3s.create(
908
- role_arn="role_arn",
909
908
  project=1,
909
+ role_arn="role_arn",
910
910
  )
911
911
 
912
912
 
@@ -916,30 +916,30 @@ class AsyncS3SClient:
916
916
  "api/storages/export/s3s",
917
917
  method="POST",
918
918
  json={
919
- "synchronizable": synchronizable,
920
- "last_sync": last_sync,
921
- "last_sync_count": last_sync_count,
922
- "last_sync_job": last_sync_job,
923
- "status": status,
924
- "traceback": traceback,
925
- "meta": meta,
926
- "title": title,
927
- "description": description,
928
- "can_delete_objects": can_delete_objects,
929
- "bucket": bucket,
930
- "prefix": prefix,
931
- "regex_filter": regex_filter,
932
- "use_blob_urls": use_blob_urls,
933
919
  "aws_access_key_id": aws_access_key_id,
934
920
  "aws_secret_access_key": aws_secret_access_key,
935
921
  "aws_session_token": aws_session_token,
936
922
  "aws_sse_kms_key_id": aws_sse_kms_key_id,
937
- "region_name": region_name,
938
- "s3_endpoint": s3endpoint,
923
+ "bucket": bucket,
924
+ "can_delete_objects": can_delete_objects,
925
+ "description": description,
939
926
  "external_id": external_id,
940
- "role_arn": role_arn,
927
+ "last_sync": last_sync,
928
+ "last_sync_count": last_sync_count,
929
+ "last_sync_job": last_sync_job,
941
930
  "legacy_auth": legacy_auth,
931
+ "meta": meta,
932
+ "prefix": prefix,
942
933
  "project": project,
934
+ "regex_filter": regex_filter,
935
+ "region_name": region_name,
936
+ "role_arn": role_arn,
937
+ "s3_endpoint": s3endpoint,
938
+ "status": status,
939
+ "synchronizable": synchronizable,
940
+ "title": title,
941
+ "traceback": traceback,
942
+ "use_blob_urls": use_blob_urls,
943
943
  },
944
944
  request_options=request_options,
945
945
  omit=OMIT,
@@ -958,67 +958,107 @@ class AsyncS3SClient:
958
958
  raise ApiError(status_code=_response.status_code, body=_response.text)
959
959
  raise ApiError(status_code=_response.status_code, body=_response_json)
960
960
 
961
- async def get(self, id: int, *, request_options: typing.Optional[RequestOptions] = None) -> LseS3ExportStorage:
961
+ async def validate(
962
+ self,
963
+ *,
964
+ project: int,
965
+ role_arn: str,
966
+ aws_access_key_id: typing.Optional[str] = OMIT,
967
+ aws_secret_access_key: typing.Optional[str] = OMIT,
968
+ aws_session_token: typing.Optional[str] = OMIT,
969
+ aws_sse_kms_key_id: typing.Optional[str] = OMIT,
970
+ bucket: typing.Optional[str] = OMIT,
971
+ can_delete_objects: typing.Optional[bool] = OMIT,
972
+ description: typing.Optional[str] = OMIT,
973
+ external_id: typing.Optional[str] = OMIT,
974
+ last_sync: typing.Optional[dt.datetime] = OMIT,
975
+ last_sync_count: typing.Optional[int] = OMIT,
976
+ last_sync_job: typing.Optional[str] = OMIT,
977
+ legacy_auth: typing.Optional[bool] = OMIT,
978
+ meta: typing.Optional[typing.Optional[typing.Any]] = OMIT,
979
+ prefix: typing.Optional[str] = OMIT,
980
+ regex_filter: typing.Optional[str] = OMIT,
981
+ region_name: typing.Optional[str] = OMIT,
982
+ s3endpoint: typing.Optional[str] = OMIT,
983
+ status: typing.Optional[StatusC5AEnum] = OMIT,
984
+ synchronizable: typing.Optional[bool] = OMIT,
985
+ title: typing.Optional[str] = OMIT,
986
+ traceback: typing.Optional[str] = OMIT,
987
+ use_blob_urls: typing.Optional[bool] = OMIT,
988
+ request_options: typing.Optional[RequestOptions] = None,
989
+ ) -> None:
962
990
  """
963
- Get a specific S3 export storage connection that was set up with IAM role access.
991
+ Validate a specific S3 export storage connection that was set up with IAM role access.
964
992
 
965
993
  Parameters
966
994
  ----------
967
- id : int
995
+ project : int
996
+ A unique integer value identifying this project.
968
997
 
969
- request_options : typing.Optional[RequestOptions]
970
- Request-specific configuration.
998
+ role_arn : str
999
+ AWS RoleArn
971
1000
 
972
- Returns
973
- -------
974
- LseS3ExportStorage
1001
+ aws_access_key_id : typing.Optional[str]
1002
+ AWS_ACCESS_KEY_ID
975
1003
 
1004
+ aws_secret_access_key : typing.Optional[str]
1005
+ AWS_SECRET_ACCESS_KEY
976
1006
 
977
- Examples
978
- --------
979
- import asyncio
1007
+ aws_session_token : typing.Optional[str]
1008
+ AWS_SESSION_TOKEN
980
1009
 
981
- from label_studio_sdk import AsyncLabelStudio
1010
+ aws_sse_kms_key_id : typing.Optional[str]
1011
+ AWS SSE KMS Key ID
982
1012
 
983
- client = AsyncLabelStudio(
984
- api_key="YOUR_API_KEY",
985
- )
1013
+ bucket : typing.Optional[str]
1014
+ S3 bucket name
986
1015
 
1016
+ can_delete_objects : typing.Optional[bool]
1017
+ Deletion from storage enabled
987
1018
 
988
- async def main() -> None:
989
- await client.export_storage.s3s.get(
990
- id=1,
991
- )
1019
+ description : typing.Optional[str]
1020
+ Cloud storage description
992
1021
 
1022
+ external_id : typing.Optional[str]
1023
+ AWS ExternalId
993
1024
 
994
- asyncio.run(main())
995
- """
996
- _response = await self._client_wrapper.httpx_client.request(
997
- f"api/storages/export/s3s/{jsonable_encoder(id)}",
998
- method="GET",
999
- request_options=request_options,
1000
- )
1001
- try:
1002
- if 200 <= _response.status_code < 300:
1003
- return typing.cast(
1004
- LseS3ExportStorage,
1005
- construct_type(
1006
- type_=LseS3ExportStorage, # type: ignore
1007
- object_=_response.json(),
1008
- ),
1009
- )
1010
- _response_json = _response.json()
1011
- except JSONDecodeError:
1012
- raise ApiError(status_code=_response.status_code, body=_response.text)
1013
- raise ApiError(status_code=_response.status_code, body=_response_json)
1025
+ last_sync : typing.Optional[dt.datetime]
1026
+ Last sync finished time
1014
1027
 
1015
- async def delete(self, id: int, *, request_options: typing.Optional[RequestOptions] = None) -> None:
1016
- """
1017
- Delete a specific S3 export storage connection that was set up with IAM role access.
1028
+ last_sync_count : typing.Optional[int]
1029
+ Count of tasks synced last time
1018
1030
 
1019
- Parameters
1020
- ----------
1021
- id : int
1031
+ last_sync_job : typing.Optional[str]
1032
+ Last sync job ID
1033
+
1034
+ legacy_auth : typing.Optional[bool]
1035
+
1036
+ meta : typing.Optional[typing.Optional[typing.Any]]
1037
+
1038
+ prefix : typing.Optional[str]
1039
+ S3 bucket prefix
1040
+
1041
+ regex_filter : typing.Optional[str]
1042
+ Cloud storage regex for filtering objects
1043
+
1044
+ region_name : typing.Optional[str]
1045
+ AWS Region
1046
+
1047
+ s3endpoint : typing.Optional[str]
1048
+ S3 Endpoint
1049
+
1050
+ status : typing.Optional[StatusC5AEnum]
1051
+
1052
+ synchronizable : typing.Optional[bool]
1053
+
1054
+ title : typing.Optional[str]
1055
+ Cloud storage title
1056
+
1057
+ traceback : typing.Optional[str]
1058
+ Traceback report for the last failed sync
1059
+
1060
+ use_blob_urls : typing.Optional[bool]
1061
+ Interpret objects as BLOBs and generate URLs
1022
1062
 
1023
1063
  request_options : typing.Optional[RequestOptions]
1024
1064
  Request-specific configuration.
@@ -1039,17 +1079,45 @@ class AsyncS3SClient:
1039
1079
 
1040
1080
 
1041
1081
  async def main() -> None:
1042
- await client.export_storage.s3s.delete(
1043
- id=1,
1082
+ await client.export_storage.s3s.validate(
1083
+ project=1,
1084
+ role_arn="role_arn",
1044
1085
  )
1045
1086
 
1046
1087
 
1047
1088
  asyncio.run(main())
1048
1089
  """
1049
1090
  _response = await self._client_wrapper.httpx_client.request(
1050
- f"api/storages/export/s3s/{jsonable_encoder(id)}",
1051
- method="DELETE",
1091
+ "api/storages/export/s3s/validate",
1092
+ method="POST",
1093
+ json={
1094
+ "aws_access_key_id": aws_access_key_id,
1095
+ "aws_secret_access_key": aws_secret_access_key,
1096
+ "aws_session_token": aws_session_token,
1097
+ "aws_sse_kms_key_id": aws_sse_kms_key_id,
1098
+ "bucket": bucket,
1099
+ "can_delete_objects": can_delete_objects,
1100
+ "description": description,
1101
+ "external_id": external_id,
1102
+ "last_sync": last_sync,
1103
+ "last_sync_count": last_sync_count,
1104
+ "last_sync_job": last_sync_job,
1105
+ "legacy_auth": legacy_auth,
1106
+ "meta": meta,
1107
+ "prefix": prefix,
1108
+ "project": project,
1109
+ "regex_filter": regex_filter,
1110
+ "region_name": region_name,
1111
+ "role_arn": role_arn,
1112
+ "s3_endpoint": s3endpoint,
1113
+ "status": status,
1114
+ "synchronizable": synchronizable,
1115
+ "title": title,
1116
+ "traceback": traceback,
1117
+ "use_blob_urls": use_blob_urls,
1118
+ },
1052
1119
  request_options=request_options,
1120
+ omit=OMIT,
1053
1121
  )
1054
1122
  try:
1055
1123
  if 200 <= _response.status_code < 300:
@@ -1059,111 +1127,14 @@ class AsyncS3SClient:
1059
1127
  raise ApiError(status_code=_response.status_code, body=_response.text)
1060
1128
  raise ApiError(status_code=_response.status_code, body=_response_json)
1061
1129
 
1062
- async def update(
1063
- self,
1064
- id: int,
1065
- *,
1066
- synchronizable: typing.Optional[bool] = OMIT,
1067
- last_sync: typing.Optional[dt.datetime] = OMIT,
1068
- last_sync_count: typing.Optional[int] = OMIT,
1069
- last_sync_job: typing.Optional[str] = OMIT,
1070
- status: typing.Optional[StatusC5AEnum] = OMIT,
1071
- traceback: typing.Optional[str] = OMIT,
1072
- meta: typing.Optional[typing.Optional[typing.Any]] = OMIT,
1073
- title: typing.Optional[str] = OMIT,
1074
- description: typing.Optional[str] = OMIT,
1075
- can_delete_objects: typing.Optional[bool] = OMIT,
1076
- bucket: typing.Optional[str] = OMIT,
1077
- prefix: typing.Optional[str] = OMIT,
1078
- regex_filter: typing.Optional[str] = OMIT,
1079
- use_blob_urls: typing.Optional[bool] = OMIT,
1080
- aws_access_key_id: typing.Optional[str] = OMIT,
1081
- aws_secret_access_key: typing.Optional[str] = OMIT,
1082
- aws_session_token: typing.Optional[str] = OMIT,
1083
- aws_sse_kms_key_id: typing.Optional[str] = OMIT,
1084
- region_name: typing.Optional[str] = OMIT,
1085
- s3endpoint: typing.Optional[str] = OMIT,
1086
- external_id: typing.Optional[str] = OMIT,
1087
- role_arn: typing.Optional[str] = OMIT,
1088
- legacy_auth: typing.Optional[bool] = OMIT,
1089
- project: typing.Optional[int] = OMIT,
1090
- request_options: typing.Optional[RequestOptions] = None,
1091
- ) -> LseS3ExportStorage:
1130
+ async def get(self, id: int, *, request_options: typing.Optional[RequestOptions] = None) -> LseS3ExportStorage:
1092
1131
  """
1093
- Update a specific S3 export storage connection that was set up with IAM role access.
1132
+ Get a specific S3 export storage connection that was set up with IAM role access.
1094
1133
 
1095
1134
  Parameters
1096
1135
  ----------
1097
1136
  id : int
1098
1137
 
1099
- synchronizable : typing.Optional[bool]
1100
-
1101
- last_sync : typing.Optional[dt.datetime]
1102
- Last sync finished time
1103
-
1104
- last_sync_count : typing.Optional[int]
1105
- Count of tasks synced last time
1106
-
1107
- last_sync_job : typing.Optional[str]
1108
- Last sync job ID
1109
-
1110
- status : typing.Optional[StatusC5AEnum]
1111
-
1112
- traceback : typing.Optional[str]
1113
- Traceback report for the last failed sync
1114
-
1115
- meta : typing.Optional[typing.Optional[typing.Any]]
1116
-
1117
- title : typing.Optional[str]
1118
- Cloud storage title
1119
-
1120
- description : typing.Optional[str]
1121
- Cloud storage description
1122
-
1123
- can_delete_objects : typing.Optional[bool]
1124
- Deletion from storage enabled
1125
-
1126
- bucket : typing.Optional[str]
1127
- S3 bucket name
1128
-
1129
- prefix : typing.Optional[str]
1130
- S3 bucket prefix
1131
-
1132
- regex_filter : typing.Optional[str]
1133
- Cloud storage regex for filtering objects
1134
-
1135
- use_blob_urls : typing.Optional[bool]
1136
- Interpret objects as BLOBs and generate URLs
1137
-
1138
- aws_access_key_id : typing.Optional[str]
1139
- AWS_ACCESS_KEY_ID
1140
-
1141
- aws_secret_access_key : typing.Optional[str]
1142
- AWS_SECRET_ACCESS_KEY
1143
-
1144
- aws_session_token : typing.Optional[str]
1145
- AWS_SESSION_TOKEN
1146
-
1147
- aws_sse_kms_key_id : typing.Optional[str]
1148
- AWS SSE KMS Key ID
1149
-
1150
- region_name : typing.Optional[str]
1151
- AWS Region
1152
-
1153
- s3endpoint : typing.Optional[str]
1154
- S3 Endpoint
1155
-
1156
- external_id : typing.Optional[str]
1157
- AWS ExternalId
1158
-
1159
- role_arn : typing.Optional[str]
1160
- AWS RoleArn
1161
-
1162
- legacy_auth : typing.Optional[bool]
1163
-
1164
- project : typing.Optional[int]
1165
- A unique integer value identifying this project.
1166
-
1167
1138
  request_options : typing.Optional[RequestOptions]
1168
1139
  Request-specific configuration.
1169
1140
 
@@ -1184,47 +1155,17 @@ class AsyncS3SClient:
1184
1155
 
1185
1156
 
1186
1157
  async def main() -> None:
1187
- await client.export_storage.s3s.update(
1158
+ await client.export_storage.s3s.get(
1188
1159
  id=1,
1189
1160
  )
1190
1161
 
1191
-
1192
- asyncio.run(main())
1193
- """
1194
- _response = await self._client_wrapper.httpx_client.request(
1195
- f"api/storages/export/s3s/{jsonable_encoder(id)}",
1196
- method="PATCH",
1197
- json={
1198
- "synchronizable": synchronizable,
1199
- "last_sync": last_sync,
1200
- "last_sync_count": last_sync_count,
1201
- "last_sync_job": last_sync_job,
1202
- "status": status,
1203
- "traceback": traceback,
1204
- "meta": meta,
1205
- "title": title,
1206
- "description": description,
1207
- "can_delete_objects": can_delete_objects,
1208
- "bucket": bucket,
1209
- "prefix": prefix,
1210
- "regex_filter": regex_filter,
1211
- "use_blob_urls": use_blob_urls,
1212
- "aws_access_key_id": aws_access_key_id,
1213
- "aws_secret_access_key": aws_secret_access_key,
1214
- "aws_session_token": aws_session_token,
1215
- "aws_sse_kms_key_id": aws_sse_kms_key_id,
1216
- "region_name": region_name,
1217
- "s3_endpoint": s3endpoint,
1218
- "external_id": external_id,
1219
- "role_arn": role_arn,
1220
- "legacy_auth": legacy_auth,
1221
- "project": project,
1222
- },
1223
- headers={
1224
- "content-type": "application/json",
1225
- },
1162
+
1163
+ asyncio.run(main())
1164
+ """
1165
+ _response = await self._client_wrapper.httpx_client.request(
1166
+ f"api/storages/export/s3s/{jsonable_encoder(id)}",
1167
+ method="GET",
1226
1168
  request_options=request_options,
1227
- omit=OMIT,
1228
1169
  )
1229
1170
  try:
1230
1171
  if 200 <= _response.status_code < 300:
@@ -1240,9 +1181,9 @@ class AsyncS3SClient:
1240
1181
  raise ApiError(status_code=_response.status_code, body=_response.text)
1241
1182
  raise ApiError(status_code=_response.status_code, body=_response_json)
1242
1183
 
1243
- async def sync(self, id: int, *, request_options: typing.Optional[RequestOptions] = None) -> LseS3ExportStorage:
1184
+ async def delete(self, id: int, *, request_options: typing.Optional[RequestOptions] = None) -> None:
1244
1185
  """
1245
- Sync tasks from an S3 export storage.
1186
+ Delete a specific S3 export storage connection that was set up with IAM role access.
1246
1187
 
1247
1188
  Parameters
1248
1189
  ----------
@@ -1253,8 +1194,7 @@ class AsyncS3SClient:
1253
1194
 
1254
1195
  Returns
1255
1196
  -------
1256
- LseS3ExportStorage
1257
-
1197
+ None
1258
1198
 
1259
1199
  Examples
1260
1200
  --------
@@ -1268,7 +1208,7 @@ class AsyncS3SClient:
1268
1208
 
1269
1209
 
1270
1210
  async def main() -> None:
1271
- await client.export_storage.s3s.sync(
1211
+ await client.export_storage.s3s.delete(
1272
1212
  id=1,
1273
1213
  )
1274
1214
 
@@ -1276,65 +1216,78 @@ class AsyncS3SClient:
1276
1216
  asyncio.run(main())
1277
1217
  """
1278
1218
  _response = await self._client_wrapper.httpx_client.request(
1279
- f"api/storages/export/s3s/{jsonable_encoder(id)}/sync",
1280
- method="POST",
1219
+ f"api/storages/export/s3s/{jsonable_encoder(id)}",
1220
+ method="DELETE",
1281
1221
  request_options=request_options,
1282
1222
  )
1283
1223
  try:
1284
1224
  if 200 <= _response.status_code < 300:
1285
- return typing.cast(
1286
- LseS3ExportStorage,
1287
- construct_type(
1288
- type_=LseS3ExportStorage, # type: ignore
1289
- object_=_response.json(),
1290
- ),
1291
- )
1225
+ return
1292
1226
  _response_json = _response.json()
1293
1227
  except JSONDecodeError:
1294
1228
  raise ApiError(status_code=_response.status_code, body=_response.text)
1295
1229
  raise ApiError(status_code=_response.status_code, body=_response_json)
1296
1230
 
1297
- async def validate(
1231
+ async def update(
1298
1232
  self,
1233
+ id: int,
1299
1234
  *,
1300
- role_arn: str,
1301
- project: int,
1302
- synchronizable: typing.Optional[bool] = OMIT,
1235
+ aws_access_key_id: typing.Optional[str] = OMIT,
1236
+ aws_secret_access_key: typing.Optional[str] = OMIT,
1237
+ aws_session_token: typing.Optional[str] = OMIT,
1238
+ aws_sse_kms_key_id: typing.Optional[str] = OMIT,
1239
+ bucket: typing.Optional[str] = OMIT,
1240
+ can_delete_objects: typing.Optional[bool] = OMIT,
1241
+ description: typing.Optional[str] = OMIT,
1242
+ external_id: typing.Optional[str] = OMIT,
1303
1243
  last_sync: typing.Optional[dt.datetime] = OMIT,
1304
1244
  last_sync_count: typing.Optional[int] = OMIT,
1305
1245
  last_sync_job: typing.Optional[str] = OMIT,
1306
- status: typing.Optional[StatusC5AEnum] = OMIT,
1307
- traceback: typing.Optional[str] = OMIT,
1246
+ legacy_auth: typing.Optional[bool] = OMIT,
1308
1247
  meta: typing.Optional[typing.Optional[typing.Any]] = OMIT,
1309
- title: typing.Optional[str] = OMIT,
1310
- description: typing.Optional[str] = OMIT,
1311
- can_delete_objects: typing.Optional[bool] = OMIT,
1312
- bucket: typing.Optional[str] = OMIT,
1313
1248
  prefix: typing.Optional[str] = OMIT,
1249
+ project: typing.Optional[int] = OMIT,
1314
1250
  regex_filter: typing.Optional[str] = OMIT,
1315
- use_blob_urls: typing.Optional[bool] = OMIT,
1316
- aws_access_key_id: typing.Optional[str] = OMIT,
1317
- aws_secret_access_key: typing.Optional[str] = OMIT,
1318
- aws_session_token: typing.Optional[str] = OMIT,
1319
- aws_sse_kms_key_id: typing.Optional[str] = OMIT,
1320
1251
  region_name: typing.Optional[str] = OMIT,
1252
+ role_arn: typing.Optional[str] = OMIT,
1321
1253
  s3endpoint: typing.Optional[str] = OMIT,
1322
- external_id: typing.Optional[str] = OMIT,
1323
- legacy_auth: typing.Optional[bool] = OMIT,
1254
+ status: typing.Optional[StatusC5AEnum] = OMIT,
1255
+ synchronizable: typing.Optional[bool] = OMIT,
1256
+ title: typing.Optional[str] = OMIT,
1257
+ traceback: typing.Optional[str] = OMIT,
1258
+ use_blob_urls: typing.Optional[bool] = OMIT,
1324
1259
  request_options: typing.Optional[RequestOptions] = None,
1325
- ) -> None:
1260
+ ) -> LseS3ExportStorage:
1326
1261
  """
1327
- Validate a specific S3 export storage connection that was set up with IAM role access.
1262
+ Update a specific S3 export storage connection that was set up with IAM role access.
1328
1263
 
1329
1264
  Parameters
1330
1265
  ----------
1331
- role_arn : str
1332
- AWS RoleArn
1266
+ id : int
1333
1267
 
1334
- project : int
1335
- A unique integer value identifying this project.
1268
+ aws_access_key_id : typing.Optional[str]
1269
+ AWS_ACCESS_KEY_ID
1336
1270
 
1337
- synchronizable : typing.Optional[bool]
1271
+ aws_secret_access_key : typing.Optional[str]
1272
+ AWS_SECRET_ACCESS_KEY
1273
+
1274
+ aws_session_token : typing.Optional[str]
1275
+ AWS_SESSION_TOKEN
1276
+
1277
+ aws_sse_kms_key_id : typing.Optional[str]
1278
+ AWS SSE KMS Key ID
1279
+
1280
+ bucket : typing.Optional[str]
1281
+ S3 bucket name
1282
+
1283
+ can_delete_objects : typing.Optional[bool]
1284
+ Deletion from storage enabled
1285
+
1286
+ description : typing.Optional[str]
1287
+ Cloud storage description
1288
+
1289
+ external_id : typing.Optional[str]
1290
+ AWS ExternalId
1338
1291
 
1339
1292
  last_sync : typing.Optional[dt.datetime]
1340
1293
  Last sync finished time
@@ -1345,63 +1298,48 @@ class AsyncS3SClient:
1345
1298
  last_sync_job : typing.Optional[str]
1346
1299
  Last sync job ID
1347
1300
 
1348
- status : typing.Optional[StatusC5AEnum]
1349
-
1350
- traceback : typing.Optional[str]
1351
- Traceback report for the last failed sync
1301
+ legacy_auth : typing.Optional[bool]
1352
1302
 
1353
1303
  meta : typing.Optional[typing.Optional[typing.Any]]
1354
1304
 
1355
- title : typing.Optional[str]
1356
- Cloud storage title
1357
-
1358
- description : typing.Optional[str]
1359
- Cloud storage description
1360
-
1361
- can_delete_objects : typing.Optional[bool]
1362
- Deletion from storage enabled
1363
-
1364
- bucket : typing.Optional[str]
1365
- S3 bucket name
1366
-
1367
1305
  prefix : typing.Optional[str]
1368
1306
  S3 bucket prefix
1369
1307
 
1308
+ project : typing.Optional[int]
1309
+ A unique integer value identifying this project.
1310
+
1370
1311
  regex_filter : typing.Optional[str]
1371
1312
  Cloud storage regex for filtering objects
1372
1313
 
1373
- use_blob_urls : typing.Optional[bool]
1374
- Interpret objects as BLOBs and generate URLs
1375
-
1376
- aws_access_key_id : typing.Optional[str]
1377
- AWS_ACCESS_KEY_ID
1378
-
1379
- aws_secret_access_key : typing.Optional[str]
1380
- AWS_SECRET_ACCESS_KEY
1381
-
1382
- aws_session_token : typing.Optional[str]
1383
- AWS_SESSION_TOKEN
1384
-
1385
- aws_sse_kms_key_id : typing.Optional[str]
1386
- AWS SSE KMS Key ID
1387
-
1388
1314
  region_name : typing.Optional[str]
1389
1315
  AWS Region
1390
1316
 
1317
+ role_arn : typing.Optional[str]
1318
+ AWS RoleArn
1319
+
1391
1320
  s3endpoint : typing.Optional[str]
1392
1321
  S3 Endpoint
1393
1322
 
1394
- external_id : typing.Optional[str]
1395
- AWS ExternalId
1323
+ status : typing.Optional[StatusC5AEnum]
1396
1324
 
1397
- legacy_auth : typing.Optional[bool]
1325
+ synchronizable : typing.Optional[bool]
1326
+
1327
+ title : typing.Optional[str]
1328
+ Cloud storage title
1329
+
1330
+ traceback : typing.Optional[str]
1331
+ Traceback report for the last failed sync
1332
+
1333
+ use_blob_urls : typing.Optional[bool]
1334
+ Interpret objects as BLOBs and generate URLs
1398
1335
 
1399
1336
  request_options : typing.Optional[RequestOptions]
1400
1337
  Request-specific configuration.
1401
1338
 
1402
1339
  Returns
1403
1340
  -------
1404
- None
1341
+ LseS3ExportStorage
1342
+
1405
1343
 
1406
1344
  Examples
1407
1345
  --------
@@ -1415,49 +1353,111 @@ class AsyncS3SClient:
1415
1353
 
1416
1354
 
1417
1355
  async def main() -> None:
1418
- await client.export_storage.s3s.validate(
1419
- role_arn="role_arn",
1420
- project=1,
1356
+ await client.export_storage.s3s.update(
1357
+ id=1,
1421
1358
  )
1422
1359
 
1423
1360
 
1424
1361
  asyncio.run(main())
1425
1362
  """
1426
1363
  _response = await self._client_wrapper.httpx_client.request(
1427
- "api/storages/export/s3s/validate",
1428
- method="POST",
1364
+ f"api/storages/export/s3s/{jsonable_encoder(id)}",
1365
+ method="PATCH",
1429
1366
  json={
1430
- "synchronizable": synchronizable,
1367
+ "aws_access_key_id": aws_access_key_id,
1368
+ "aws_secret_access_key": aws_secret_access_key,
1369
+ "aws_session_token": aws_session_token,
1370
+ "aws_sse_kms_key_id": aws_sse_kms_key_id,
1371
+ "bucket": bucket,
1372
+ "can_delete_objects": can_delete_objects,
1373
+ "description": description,
1374
+ "external_id": external_id,
1431
1375
  "last_sync": last_sync,
1432
1376
  "last_sync_count": last_sync_count,
1433
1377
  "last_sync_job": last_sync_job,
1434
- "status": status,
1435
- "traceback": traceback,
1378
+ "legacy_auth": legacy_auth,
1436
1379
  "meta": meta,
1437
- "title": title,
1438
- "description": description,
1439
- "can_delete_objects": can_delete_objects,
1440
- "bucket": bucket,
1441
1380
  "prefix": prefix,
1381
+ "project": project,
1442
1382
  "regex_filter": regex_filter,
1443
- "use_blob_urls": use_blob_urls,
1444
- "aws_access_key_id": aws_access_key_id,
1445
- "aws_secret_access_key": aws_secret_access_key,
1446
- "aws_session_token": aws_session_token,
1447
- "aws_sse_kms_key_id": aws_sse_kms_key_id,
1448
1383
  "region_name": region_name,
1449
- "s3_endpoint": s3endpoint,
1450
- "external_id": external_id,
1451
1384
  "role_arn": role_arn,
1452
- "legacy_auth": legacy_auth,
1453
- "project": project,
1385
+ "s3_endpoint": s3endpoint,
1386
+ "status": status,
1387
+ "synchronizable": synchronizable,
1388
+ "title": title,
1389
+ "traceback": traceback,
1390
+ "use_blob_urls": use_blob_urls,
1391
+ },
1392
+ headers={
1393
+ "content-type": "application/json",
1454
1394
  },
1455
1395
  request_options=request_options,
1456
1396
  omit=OMIT,
1457
1397
  )
1458
1398
  try:
1459
1399
  if 200 <= _response.status_code < 300:
1460
- return
1400
+ return typing.cast(
1401
+ LseS3ExportStorage,
1402
+ construct_type(
1403
+ type_=LseS3ExportStorage, # type: ignore
1404
+ object_=_response.json(),
1405
+ ),
1406
+ )
1407
+ _response_json = _response.json()
1408
+ except JSONDecodeError:
1409
+ raise ApiError(status_code=_response.status_code, body=_response.text)
1410
+ raise ApiError(status_code=_response.status_code, body=_response_json)
1411
+
1412
+ async def sync(self, id: int, *, request_options: typing.Optional[RequestOptions] = None) -> LseS3ExportStorage:
1413
+ """
1414
+ Sync tasks from an S3 export storage.
1415
+
1416
+ Parameters
1417
+ ----------
1418
+ id : int
1419
+
1420
+ request_options : typing.Optional[RequestOptions]
1421
+ Request-specific configuration.
1422
+
1423
+ Returns
1424
+ -------
1425
+ LseS3ExportStorage
1426
+
1427
+
1428
+ Examples
1429
+ --------
1430
+ import asyncio
1431
+
1432
+ from label_studio_sdk import AsyncLabelStudio
1433
+
1434
+ client = AsyncLabelStudio(
1435
+ api_key="YOUR_API_KEY",
1436
+ )
1437
+
1438
+
1439
+ async def main() -> None:
1440
+ await client.export_storage.s3s.sync(
1441
+ id=1,
1442
+ )
1443
+
1444
+
1445
+ asyncio.run(main())
1446
+ """
1447
+ _response = await self._client_wrapper.httpx_client.request(
1448
+ f"api/storages/export/s3s/{jsonable_encoder(id)}/sync",
1449
+ method="POST",
1450
+ request_options=request_options,
1451
+ )
1452
+ try:
1453
+ if 200 <= _response.status_code < 300:
1454
+ return typing.cast(
1455
+ LseS3ExportStorage,
1456
+ construct_type(
1457
+ type_=LseS3ExportStorage, # type: ignore
1458
+ object_=_response.json(),
1459
+ ),
1460
+ )
1461
1461
  _response_json = _response.json()
1462
1462
  except JSONDecodeError:
1463
1463
  raise ApiError(status_code=_response.status_code, body=_response.text)