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