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.
- label_studio_sdk/__init__.py +24 -0
- label_studio_sdk/actions/client.py +13 -13
- label_studio_sdk/actions/types/actions_list_response_item.py +3 -3
- label_studio_sdk/actions/types/actions_list_response_item_dialog.py +2 -2
- label_studio_sdk/annotations/client.py +441 -441
- label_studio_sdk/base_client.py +4 -0
- label_studio_sdk/billing/__init__.py +2 -0
- label_studio_sdk/billing/client.py +112 -0
- label_studio_sdk/comments/client.py +176 -176
- label_studio_sdk/export_storage/azure/client.py +274 -274
- label_studio_sdk/export_storage/gcs/client.py +263 -263
- label_studio_sdk/export_storage/local/client.py +206 -206
- label_studio_sdk/export_storage/redis/client.py +287 -287
- label_studio_sdk/export_storage/s3/client.py +347 -347
- label_studio_sdk/export_storage/s3s/client.py +678 -678
- label_studio_sdk/import_storage/azure/client.py +357 -357
- label_studio_sdk/import_storage/gcs/client.py +357 -357
- label_studio_sdk/import_storage/local/client.py +206 -206
- label_studio_sdk/import_storage/redis/client.py +309 -309
- label_studio_sdk/import_storage/s3/client.py +452 -452
- label_studio_sdk/import_storage/s3s/client.py +735 -735
- label_studio_sdk/jwt_settings/client.py +10 -10
- label_studio_sdk/ml/client.py +118 -118
- label_studio_sdk/ml/types/ml_list_model_versions_response.py +1 -1
- label_studio_sdk/model_providers/client.py +181 -181
- label_studio_sdk/organizations/members/client.py +348 -2
- label_studio_sdk/predictions/client.py +60 -60
- label_studio_sdk/projects/__init__.py +30 -1
- label_studio_sdk/projects/assignments/__init__.py +33 -0
- label_studio_sdk/projects/assignments/client.py +764 -0
- label_studio_sdk/projects/assignments/types/__init__.py +35 -0
- label_studio_sdk/projects/assignments/types/assignments_assign_request_type.py +5 -0
- label_studio_sdk/projects/assignments/types/assignments_bulk_assign_request_filters.py +33 -0
- label_studio_sdk/projects/assignments/types/assignments_bulk_assign_request_filters_conjunction.py +5 -0
- label_studio_sdk/projects/assignments/types/assignments_bulk_assign_request_filters_items_item.py +44 -0
- label_studio_sdk/projects/assignments/types/assignments_bulk_assign_request_filters_items_item_filter.py +31 -0
- label_studio_sdk/projects/assignments/types/assignments_bulk_assign_request_filters_items_item_operator.py +23 -0
- label_studio_sdk/projects/assignments/types/assignments_bulk_assign_request_filters_items_item_value.py +7 -0
- label_studio_sdk/projects/assignments/types/assignments_bulk_assign_request_selected_items.py +9 -0
- label_studio_sdk/projects/assignments/types/assignments_bulk_assign_request_selected_items_excluded.py +29 -0
- label_studio_sdk/projects/assignments/types/assignments_bulk_assign_request_selected_items_included.py +29 -0
- label_studio_sdk/projects/assignments/types/assignments_bulk_assign_request_type.py +5 -0
- label_studio_sdk/projects/assignments/types/assignments_bulk_assign_response.py +22 -0
- label_studio_sdk/projects/assignments/types/assignments_update_request_type.py +5 -0
- label_studio_sdk/projects/client.py +441 -425
- label_studio_sdk/projects/exports/client.py +55 -55
- label_studio_sdk/projects/exports/types/exports_convert_response.py +1 -1
- label_studio_sdk/projects/stats/types/stats_iaa_response.py +5 -5
- label_studio_sdk/projects/types/projects_import_tasks_response.py +12 -12
- label_studio_sdk/prompts/client.py +211 -211
- label_studio_sdk/prompts/runs/client.py +33 -33
- label_studio_sdk/prompts/versions/client.py +72 -72
- label_studio_sdk/tasks/client.py +174 -174
- label_studio_sdk/types/__init__.py +22 -0
- label_studio_sdk/types/all_roles_project_list.py +98 -98
- label_studio_sdk/types/annotation.py +35 -35
- label_studio_sdk/types/annotation_request.py +27 -27
- label_studio_sdk/types/azure_blob_export_storage.py +29 -29
- label_studio_sdk/types/azure_blob_import_storage.py +33 -33
- label_studio_sdk/types/batch_failed_predictions.py +1 -1
- label_studio_sdk/types/billing_checks.py +39 -0
- label_studio_sdk/types/billing_flags.py +44 -0
- label_studio_sdk/types/billing_info_response.py +22 -0
- label_studio_sdk/types/blueprint_list.py +7 -8
- label_studio_sdk/types/child_filter.py +11 -10
- label_studio_sdk/types/comment.py +15 -15
- label_studio_sdk/types/comment_request.py +7 -8
- label_studio_sdk/types/comment_serializer_with_expanded_user.py +17 -18
- label_studio_sdk/types/converted_format.py +1 -1
- label_studio_sdk/types/converted_format_request.py +1 -1
- label_studio_sdk/types/count_limit.py +22 -0
- label_studio_sdk/types/export.py +8 -8
- label_studio_sdk/types/file_upload.py +3 -2
- label_studio_sdk/types/filter.py +10 -9
- label_studio_sdk/types/filter_group.py +4 -3
- label_studio_sdk/types/gcs_export_storage.py +23 -23
- label_studio_sdk/types/gcs_import_storage.py +27 -27
- label_studio_sdk/types/import_api_request.py +26 -26
- label_studio_sdk/types/inference_run_cost_estimate.py +10 -10
- label_studio_sdk/types/local_files_export_storage.py +23 -23
- label_studio_sdk/types/local_files_import_storage.py +26 -26
- label_studio_sdk/types/lse_annotation_filter_options.py +10 -10
- label_studio_sdk/types/lse_annotation_filter_options_request.py +10 -10
- label_studio_sdk/types/lse_export_create.py +12 -12
- label_studio_sdk/types/lse_fields.py +14 -14
- label_studio_sdk/types/lse_organization.py +17 -17
- label_studio_sdk/types/lse_organization_member_list.py +32 -0
- label_studio_sdk/types/lse_project_create.py +72 -72
- label_studio_sdk/types/lse_project_update.py +89 -89
- label_studio_sdk/types/lse_s3export_storage.py +46 -46
- label_studio_sdk/types/lse_s3export_storage_request.py +43 -43
- label_studio_sdk/types/lse_s3import_storage.py +53 -53
- label_studio_sdk/types/lse_s3import_storage_request.py +49 -49
- label_studio_sdk/types/lse_task.py +49 -49
- label_studio_sdk/types/lse_task_drafts_item.py +1 -1
- label_studio_sdk/types/lse_task_filter_options.py +14 -14
- label_studio_sdk/types/lse_task_filter_options_request.py +14 -14
- label_studio_sdk/types/lse_task_predictions_item.py +5 -5
- label_studio_sdk/types/lse_task_serializer_for_annotators.py +12 -12
- label_studio_sdk/types/lse_task_serializer_for_annotators_drafts_item.py +1 -1
- label_studio_sdk/types/lse_task_serializer_for_annotators_predictions_item.py +5 -5
- label_studio_sdk/types/lse_task_serializer_for_reviewers.py +49 -49
- label_studio_sdk/types/lse_task_serializer_for_reviewers_drafts_item.py +1 -1
- label_studio_sdk/types/lse_task_serializer_for_reviewers_predictions_item.py +5 -5
- label_studio_sdk/types/lse_user.py +13 -13
- label_studio_sdk/types/lse_user_api.py +11 -11
- label_studio_sdk/types/lse_user_organization_member_list.py +48 -0
- label_studio_sdk/types/lseapi_token_create.py +1 -1
- label_studio_sdk/types/lseapi_token_list.py +1 -1
- label_studio_sdk/types/lsejwt_settings.py +5 -5
- label_studio_sdk/types/ml_backend.py +27 -28
- label_studio_sdk/types/model_interface.py +12 -12
- label_studio_sdk/types/model_interface_request.py +7 -8
- label_studio_sdk/types/model_interface_serializer_get.py +13 -13
- label_studio_sdk/types/model_provider_connection.py +34 -34
- label_studio_sdk/types/model_provider_connection_request.py +15 -14
- label_studio_sdk/types/model_run.py +12 -12
- label_studio_sdk/types/organization_billing.py +1 -1
- label_studio_sdk/types/organization_id.py +2 -2
- label_studio_sdk/types/organization_invite.py +1 -1
- label_studio_sdk/types/organization_member.py +8 -9
- label_studio_sdk/types/organization_membership.py +2 -1
- label_studio_sdk/types/paginated_lse_organization_member_list_list.py +23 -0
- label_studio_sdk/types/pause.py +23 -23
- label_studio_sdk/types/prediction.py +21 -21
- label_studio_sdk/types/prediction_request.py +16 -16
- label_studio_sdk/types/project.py +72 -72
- label_studio_sdk/types/project_import.py +21 -21
- label_studio_sdk/types/prompts_status_enum.py +16 -0
- label_studio_sdk/types/redis_export_storage.py +34 -34
- label_studio_sdk/types/redis_import_storage.py +37 -37
- label_studio_sdk/types/refined_prompt_response.py +11 -11
- label_studio_sdk/types/review_settings.py +29 -30
- label_studio_sdk/types/review_settings_request.py +29 -30
- label_studio_sdk/types/role9e7enum.py +5 -0
- label_studio_sdk/types/s3export_storage.py +45 -45
- label_studio_sdk/types/s3import_storage.py +44 -44
- label_studio_sdk/types/selected_items_request.py +1 -1
- label_studio_sdk/types/serialization_options.py +10 -10
- label_studio_sdk/types/serialization_options_request.py +10 -10
- label_studio_sdk/types/task_assignment.py +43 -0
- label_studio_sdk/types/third_party_model_version.py +11 -11
- label_studio_sdk/types/third_party_model_version_request.py +6 -7
- label_studio_sdk/types/type_enum.py +5 -0
- label_studio_sdk/types/user_simple.py +3 -3
- label_studio_sdk/types/user_simple_request.py +1 -1
- label_studio_sdk/types/version_response.py +19 -20
- label_studio_sdk/types/view.py +8 -8
- label_studio_sdk/types/webhook.py +16 -16
- label_studio_sdk/types/webhook_serializer_for_update.py +16 -16
- label_studio_sdk/types/workspace.py +10 -11
- label_studio_sdk/users/client.py +160 -160
- label_studio_sdk/views/client.py +164 -164
- label_studio_sdk/webhooks/client.py +183 -183
- label_studio_sdk/webhooks/types/webhooks_info_response.py +32 -32
- label_studio_sdk/webhooks/types/webhooks_info_response_annotation_created.py +1 -1
- label_studio_sdk/webhooks/types/webhooks_info_response_annotation_updated.py +1 -1
- label_studio_sdk/webhooks/types/webhooks_info_response_annotations_created.py +1 -1
- label_studio_sdk/webhooks/types/webhooks_info_response_annotations_deleted.py +1 -1
- label_studio_sdk/webhooks/types/webhooks_info_response_label_link_created.py +1 -1
- label_studio_sdk/webhooks/types/webhooks_info_response_label_link_deleted.py +1 -1
- label_studio_sdk/webhooks/types/webhooks_info_response_label_link_updated.py +1 -1
- label_studio_sdk/webhooks/types/webhooks_info_response_project_created.py +1 -1
- label_studio_sdk/webhooks/types/webhooks_info_response_project_deleted.py +1 -1
- label_studio_sdk/webhooks/types/webhooks_info_response_project_updated.py +1 -1
- label_studio_sdk/webhooks/types/webhooks_info_response_review_created.py +1 -1
- label_studio_sdk/webhooks/types/webhooks_info_response_review_updated.py +1 -1
- label_studio_sdk/webhooks/types/webhooks_info_response_reviews_deleted.py +1 -1
- label_studio_sdk/webhooks/types/webhooks_info_response_tasks_created.py +1 -1
- label_studio_sdk/webhooks/types/webhooks_info_response_tasks_deleted.py +1 -1
- label_studio_sdk/workspaces/client.py +40 -40
- {label_studio_sdk-2.0.0.dist-info → label_studio_sdk-2.0.2.dist-info}/METADATA +73 -25
- {label_studio_sdk-2.0.0.dist-info → label_studio_sdk-2.0.2.dist-info}/RECORD +175 -146
- {label_studio_sdk-2.0.0.dist-info → label_studio_sdk-2.0.2.dist-info}/LICENSE +0 -0
- {label_studio_sdk-2.0.0.dist-info → label_studio_sdk-2.0.2.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
|
-
|
|
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
|
-
|
|
105
|
-
|
|
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
|
-
|
|
121
|
-
|
|
123
|
+
aws_access_key_id : typing.Optional[str]
|
|
124
|
+
AWS_ACCESS_KEY_ID
|
|
122
125
|
|
|
123
|
-
|
|
126
|
+
aws_secret_access_key : typing.Optional[str]
|
|
127
|
+
AWS_SECRET_ACCESS_KEY
|
|
124
128
|
|
|
125
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
165
|
-
|
|
162
|
+
presign_ttl : typing.Optional[int]
|
|
163
|
+
Presigned URLs TTL (in minutes)
|
|
166
164
|
|
|
167
|
-
|
|
168
|
-
|
|
165
|
+
recursive_scan : typing.Optional[bool]
|
|
166
|
+
Perform recursive scan over the bucket content
|
|
169
167
|
|
|
170
|
-
|
|
171
|
-
|
|
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
|
-
|
|
180
|
-
AWS ExternalId
|
|
177
|
+
status : typing.Optional[StatusC5AEnum]
|
|
181
178
|
|
|
182
|
-
|
|
179
|
+
synchronizable : typing.Optional[bool]
|
|
183
180
|
|
|
184
|
-
|
|
185
|
-
|
|
181
|
+
title : typing.Optional[str]
|
|
182
|
+
Cloud storage title
|
|
186
183
|
|
|
187
|
-
|
|
188
|
-
|
|
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
|
-
"
|
|
233
|
-
"
|
|
218
|
+
"bucket": bucket,
|
|
219
|
+
"description": description,
|
|
234
220
|
"external_id": external_id,
|
|
235
|
-
"
|
|
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
|
|
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
|
-
|
|
290
|
+
Validate a specific S3 import storage connection that was set up with IAM role access.
|
|
261
291
|
|
|
262
292
|
Parameters
|
|
263
293
|
----------
|
|
264
|
-
|
|
294
|
+
project : int
|
|
295
|
+
A unique integer value identifying this project.
|
|
265
296
|
|
|
266
|
-
|
|
267
|
-
|
|
297
|
+
role_arn : str
|
|
298
|
+
AWS RoleArn
|
|
268
299
|
|
|
269
|
-
|
|
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
|
-
|
|
275
|
-
|
|
276
|
-
from label_studio_sdk import LabelStudio
|
|
306
|
+
aws_session_token : typing.Optional[str]
|
|
307
|
+
AWS_SESSION_TOKEN
|
|
277
308
|
|
|
278
|
-
|
|
279
|
-
|
|
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
|
-
|
|
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
|
-
|
|
309
|
-
|
|
310
|
-
id : int
|
|
315
|
+
description : typing.Optional[str]
|
|
316
|
+
Cloud storage description
|
|
311
317
|
|
|
312
|
-
|
|
313
|
-
|
|
318
|
+
external_id : typing.Optional[str]
|
|
319
|
+
AWS ExternalId
|
|
314
320
|
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
None
|
|
321
|
+
last_sync : typing.Optional[dt.datetime]
|
|
322
|
+
Last sync finished time
|
|
318
323
|
|
|
319
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
424
|
-
|
|
339
|
+
presign_ttl : typing.Optional[int]
|
|
340
|
+
Presigned URLs TTL (in minutes)
|
|
425
341
|
|
|
426
|
-
|
|
427
|
-
|
|
342
|
+
recursive_scan : typing.Optional[bool]
|
|
343
|
+
Perform recursive scan over the bucket content
|
|
428
344
|
|
|
429
|
-
|
|
430
|
-
|
|
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
|
-
|
|
439
|
-
AWS ExternalId
|
|
440
|
-
|
|
441
|
-
role_arn : typing.Optional[str]
|
|
442
|
-
AWS RoleArn
|
|
354
|
+
status : typing.Optional[StatusC5AEnum]
|
|
443
355
|
|
|
444
|
-
|
|
356
|
+
synchronizable : typing.Optional[bool]
|
|
445
357
|
|
|
446
|
-
|
|
447
|
-
|
|
358
|
+
title : typing.Optional[str]
|
|
359
|
+
Cloud storage title
|
|
448
360
|
|
|
449
|
-
|
|
450
|
-
|
|
361
|
+
traceback : typing.Optional[str]
|
|
362
|
+
Traceback report for the last failed sync
|
|
451
363
|
|
|
452
|
-
|
|
453
|
-
|
|
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
|
-
|
|
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.
|
|
471
|
-
|
|
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
|
-
|
|
476
|
-
method="
|
|
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
|
-
"
|
|
497
|
-
"
|
|
394
|
+
"bucket": bucket,
|
|
395
|
+
"description": description,
|
|
498
396
|
"external_id": external_id,
|
|
499
|
-
"
|
|
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
|
-
|
|
506
|
-
"
|
|
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
|
|
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
|
|
428
|
+
def get(self, id: int, *, request_options: typing.Optional[RequestOptions] = None) -> LseS3ImportStorage:
|
|
526
429
|
"""
|
|
527
|
-
|
|
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.
|
|
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)}
|
|
554
|
-
method="
|
|
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
|
|
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
|
-
|
|
476
|
+
Delete a specific S3 import storage connection that was set up with IAM role access.
|
|
604
477
|
|
|
605
478
|
Parameters
|
|
606
479
|
----------
|
|
607
|
-
|
|
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
|
-
|
|
482
|
+
request_options : typing.Optional[RequestOptions]
|
|
483
|
+
Request-specific configuration.
|
|
627
484
|
|
|
628
|
-
|
|
629
|
-
|
|
485
|
+
Returns
|
|
486
|
+
-------
|
|
487
|
+
None
|
|
630
488
|
|
|
631
|
-
|
|
489
|
+
Examples
|
|
490
|
+
--------
|
|
491
|
+
from label_studio_sdk import LabelStudio
|
|
632
492
|
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
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
|
-
|
|
646
|
-
|
|
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
|
-
|
|
649
|
-
|
|
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
|
-
|
|
664
|
-
|
|
564
|
+
bucket : typing.Optional[str]
|
|
565
|
+
S3 bucket name
|
|
665
566
|
|
|
666
|
-
|
|
667
|
-
|
|
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
|
-
|
|
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.
|
|
695
|
-
|
|
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/
|
|
701
|
-
method="
|
|
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
|
-
"
|
|
722
|
-
"
|
|
652
|
+
"bucket": bucket,
|
|
653
|
+
"description": description,
|
|
723
654
|
"external_id": external_id,
|
|
724
|
-
"
|
|
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
|
-
|
|
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
|
-
|
|
836
|
-
|
|
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
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
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
|
-
|
|
852
|
-
|
|
854
|
+
aws_access_key_id : typing.Optional[str]
|
|
855
|
+
AWS_ACCESS_KEY_ID
|
|
853
856
|
|
|
854
|
-
|
|
857
|
+
aws_secret_access_key : typing.Optional[str]
|
|
858
|
+
AWS_SECRET_ACCESS_KEY
|
|
855
859
|
|
|
856
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
896
|
-
|
|
893
|
+
presign_ttl : typing.Optional[int]
|
|
894
|
+
Presigned URLs TTL (in minutes)
|
|
897
895
|
|
|
898
|
-
|
|
899
|
-
|
|
896
|
+
recursive_scan : typing.Optional[bool]
|
|
897
|
+
Perform recursive scan over the bucket content
|
|
900
898
|
|
|
901
|
-
|
|
902
|
-
|
|
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
|
-
|
|
911
|
-
AWS ExternalId
|
|
908
|
+
status : typing.Optional[StatusC5AEnum]
|
|
912
909
|
|
|
913
|
-
|
|
910
|
+
synchronizable : typing.Optional[bool]
|
|
914
911
|
|
|
915
|
-
|
|
916
|
-
|
|
912
|
+
title : typing.Optional[str]
|
|
913
|
+
Cloud storage title
|
|
917
914
|
|
|
918
|
-
|
|
919
|
-
|
|
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
|
-
"
|
|
972
|
-
"
|
|
957
|
+
"bucket": bucket,
|
|
958
|
+
"description": description,
|
|
973
959
|
"external_id": external_id,
|
|
974
|
-
"
|
|
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
|
|
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
|
-
|
|
1029
|
+
Validate a specific S3 import storage connection that was set up with IAM role access.
|
|
1000
1030
|
|
|
1001
1031
|
Parameters
|
|
1002
1032
|
----------
|
|
1003
|
-
|
|
1033
|
+
project : int
|
|
1034
|
+
A unique integer value identifying this project.
|
|
1004
1035
|
|
|
1005
|
-
|
|
1006
|
-
|
|
1036
|
+
role_arn : str
|
|
1037
|
+
AWS RoleArn
|
|
1007
1038
|
|
|
1008
|
-
|
|
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
|
-
|
|
1014
|
-
|
|
1015
|
-
import asyncio
|
|
1045
|
+
aws_session_token : typing.Optional[str]
|
|
1046
|
+
AWS_SESSION_TOKEN
|
|
1016
1047
|
|
|
1017
|
-
|
|
1048
|
+
aws_sse_kms_key_id : typing.Optional[str]
|
|
1049
|
+
AWS SSE KMS Key ID
|
|
1018
1050
|
|
|
1019
|
-
|
|
1020
|
-
|
|
1021
|
-
)
|
|
1051
|
+
bucket : typing.Optional[str]
|
|
1052
|
+
S3 bucket name
|
|
1022
1053
|
|
|
1054
|
+
description : typing.Optional[str]
|
|
1055
|
+
Cloud storage description
|
|
1023
1056
|
|
|
1024
|
-
|
|
1025
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
1056
|
-
|
|
1057
|
-
|
|
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.
|
|
1079
|
-
|
|
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
|
-
|
|
1087
|
-
method="
|
|
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
|
|
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
|
-
|
|
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.
|
|
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="
|
|
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
|
|
1229
|
+
async def delete(self, id: int, *, request_options: typing.Optional[RequestOptions] = None) -> None:
|
|
1289
1230
|
"""
|
|
1290
|
-
|
|
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
|
-
|
|
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.
|
|
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)}
|
|
1325
|
-
method="
|
|
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
|
|
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
|
|
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
|
-
|
|
1366
|
-
|
|
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
|
-
) ->
|
|
1307
|
+
) -> LseS3ImportStorage:
|
|
1373
1308
|
"""
|
|
1374
|
-
|
|
1309
|
+
Update a specific S3 import storage connection that was set up with IAM role access.
|
|
1375
1310
|
|
|
1376
1311
|
Parameters
|
|
1377
1312
|
----------
|
|
1378
|
-
|
|
1379
|
-
AWS RoleArn
|
|
1313
|
+
id : int
|
|
1380
1314
|
|
|
1381
|
-
|
|
1382
|
-
|
|
1315
|
+
aws_access_key_id : typing.Optional[str]
|
|
1316
|
+
AWS_ACCESS_KEY_ID
|
|
1383
1317
|
|
|
1384
|
-
|
|
1318
|
+
aws_secret_access_key : typing.Optional[str]
|
|
1319
|
+
AWS_SECRET_ACCESS_KEY
|
|
1385
1320
|
|
|
1386
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
1423
|
-
|
|
1354
|
+
presign_ttl : typing.Optional[int]
|
|
1355
|
+
Presigned URLs TTL (in minutes)
|
|
1424
1356
|
|
|
1425
|
-
|
|
1426
|
-
|
|
1357
|
+
project : typing.Optional[int]
|
|
1358
|
+
A unique integer value identifying this project.
|
|
1427
1359
|
|
|
1428
|
-
|
|
1429
|
-
|
|
1360
|
+
recursive_scan : typing.Optional[bool]
|
|
1361
|
+
Perform recursive scan over the bucket content
|
|
1430
1362
|
|
|
1431
|
-
|
|
1432
|
-
|
|
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
|
-
|
|
1441
|
-
AWS ExternalId
|
|
1375
|
+
status : typing.Optional[StatusC5AEnum]
|
|
1442
1376
|
|
|
1443
|
-
|
|
1377
|
+
synchronizable : typing.Optional[bool]
|
|
1444
1378
|
|
|
1445
|
-
|
|
1446
|
-
|
|
1379
|
+
title : typing.Optional[str]
|
|
1380
|
+
Cloud storage title
|
|
1447
1381
|
|
|
1448
|
-
|
|
1449
|
-
|
|
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
|
-
|
|
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.
|
|
1471
|
-
|
|
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/
|
|
1480
|
-
method="
|
|
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
|
-
"
|
|
1501
|
-
"
|
|
1423
|
+
"bucket": bucket,
|
|
1424
|
+
"description": description,
|
|
1502
1425
|
"external_id": external_id,
|
|
1503
|
-
"
|
|
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)
|