label-studio-sdk 1.0.20__py3-none-any.whl → 2.0.1__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 (421) hide show
  1. label_studio_sdk/__init__.py +345 -180
  2. label_studio_sdk/actions/__init__.py +4 -0
  3. label_studio_sdk/actions/client.py +46 -10
  4. label_studio_sdk/actions/types/__init__.py +4 -0
  5. label_studio_sdk/actions/types/actions_create_request_filters.py +2 -2
  6. label_studio_sdk/actions/types/actions_create_request_filters_items_item.py +2 -2
  7. label_studio_sdk/actions/types/actions_create_request_id.py +7 -7
  8. label_studio_sdk/actions/types/actions_create_request_selected_items_excluded.py +2 -2
  9. label_studio_sdk/actions/types/actions_create_request_selected_items_included.py +2 -2
  10. label_studio_sdk/actions/types/actions_list_response_item.py +25 -0
  11. label_studio_sdk/actions/types/actions_list_response_item_dialog.py +22 -0
  12. label_studio_sdk/annotations/__init__.py +2 -2
  13. label_studio_sdk/annotations/client.py +379 -243
  14. label_studio_sdk/annotations/types/__init__.py +4 -2
  15. label_studio_sdk/annotations/types/annotation_bulk_serializer_with_selected_items_request_last_action.py +7 -0
  16. label_studio_sdk/annotations/types/annotations_create_bulk_response_item.py +8 -5
  17. label_studio_sdk/base_client.py +32 -24
  18. label_studio_sdk/billing/__init__.py +2 -0
  19. label_studio_sdk/billing/client.py +112 -0
  20. label_studio_sdk/comments/client.py +378 -140
  21. label_studio_sdk/converter/README.md +207 -0
  22. label_studio_sdk/converter/imports/coco.py +132 -23
  23. label_studio_sdk/core/__init__.py +4 -0
  24. label_studio_sdk/core/unchecked_base_model.py +305 -0
  25. label_studio_sdk/environment.py +1 -1
  26. label_studio_sdk/errors/__init__.py +10 -1
  27. label_studio_sdk/errors/forbidden_error.py +9 -0
  28. label_studio_sdk/errors/method_not_allowed_error.py +9 -0
  29. label_studio_sdk/export_storage/__init__.py +1 -24
  30. label_studio_sdk/export_storage/azure/__init__.py +0 -3
  31. label_studio_sdk/export_storage/azure/client.py +231 -273
  32. label_studio_sdk/export_storage/client.py +5 -5
  33. label_studio_sdk/export_storage/gcs/__init__.py +0 -3
  34. label_studio_sdk/export_storage/gcs/client.py +231 -273
  35. label_studio_sdk/export_storage/local/__init__.py +0 -3
  36. label_studio_sdk/export_storage/local/client.py +211 -253
  37. label_studio_sdk/export_storage/redis/__init__.py +0 -3
  38. label_studio_sdk/export_storage/redis/client.py +239 -281
  39. label_studio_sdk/export_storage/s3/__init__.py +0 -3
  40. label_studio_sdk/export_storage/s3/client.py +254 -296
  41. label_studio_sdk/export_storage/s3s/client.py +694 -210
  42. label_studio_sdk/export_storage/types/export_storage_list_types_response_item.py +2 -2
  43. label_studio_sdk/files/client.py +52 -71
  44. label_studio_sdk/import_storage/__init__.py +1 -24
  45. label_studio_sdk/import_storage/azure/__init__.py +0 -3
  46. label_studio_sdk/import_storage/azure/client.py +249 -299
  47. label_studio_sdk/import_storage/client.py +5 -5
  48. label_studio_sdk/import_storage/gcs/__init__.py +0 -3
  49. label_studio_sdk/import_storage/gcs/client.py +249 -299
  50. label_studio_sdk/import_storage/local/__init__.py +0 -3
  51. label_studio_sdk/import_storage/local/client.py +211 -257
  52. label_studio_sdk/import_storage/redis/__init__.py +0 -3
  53. label_studio_sdk/import_storage/redis/client.py +239 -285
  54. label_studio_sdk/import_storage/s3/__init__.py +0 -3
  55. label_studio_sdk/import_storage/s3/client.py +274 -324
  56. label_studio_sdk/import_storage/s3s/client.py +728 -434
  57. label_studio_sdk/import_storage/types/import_storage_list_types_response_item.py +2 -2
  58. label_studio_sdk/jwt_settings/client.py +56 -58
  59. label_studio_sdk/label_interface/control_tags.py +48 -8
  60. label_studio_sdk/label_interface/interface.py +261 -56
  61. label_studio_sdk/ml/__init__.py +2 -16
  62. label_studio_sdk/ml/client.py +196 -179
  63. label_studio_sdk/ml/types/__init__.py +2 -12
  64. label_studio_sdk/ml/types/ml_list_model_versions_response.py +20 -0
  65. label_studio_sdk/model_providers/__init__.py +3 -0
  66. label_studio_sdk/model_providers/client.py +280 -228
  67. label_studio_sdk/model_providers/types/__init__.py +5 -0
  68. label_studio_sdk/{prompts/types/prompts_batch_predictions_response.py → model_providers/types/model_providers_list_model_provider_choices_response.py} +3 -3
  69. label_studio_sdk/organizations/__init__.py +5 -0
  70. label_studio_sdk/organizations/client.py +331 -0
  71. label_studio_sdk/organizations/members/__init__.py +2 -0
  72. label_studio_sdk/organizations/members/client.py +636 -0
  73. label_studio_sdk/predictions/client.py +29 -77
  74. label_studio_sdk/projects/__init__.py +18 -9
  75. label_studio_sdk/projects/client.py +905 -414
  76. label_studio_sdk/projects/exports/__init__.py +2 -2
  77. label_studio_sdk/projects/exports/client.py +336 -396
  78. label_studio_sdk/projects/exports/client_ext.py +30 -30
  79. label_studio_sdk/projects/exports/types/__init__.py +1 -2
  80. label_studio_sdk/projects/exports/types/exports_convert_response.py +5 -9
  81. label_studio_sdk/projects/pauses/client.py +114 -105
  82. label_studio_sdk/projects/stats/__init__.py +5 -0
  83. label_studio_sdk/projects/stats/client.py +175 -0
  84. label_studio_sdk/projects/stats/types/__init__.py +8 -0
  85. label_studio_sdk/projects/stats/types/stats_iaa_response.py +44 -0
  86. label_studio_sdk/projects/stats/types/stats_iaa_response_common_tasks.py +7 -0
  87. label_studio_sdk/projects/stats/types/stats_iaa_response_iaa.py +5 -0
  88. label_studio_sdk/{types/base_task_file_upload.py → projects/stats/types/stats_iaa_response_std.py} +1 -1
  89. label_studio_sdk/projects/types/__init__.py +10 -6
  90. label_studio_sdk/projects/types/lse_project_create_request_sampling.py +7 -0
  91. label_studio_sdk/projects/types/lse_project_create_request_skip_queue.py +7 -0
  92. label_studio_sdk/projects/types/patched_lse_project_update_request_sampling.py +7 -0
  93. label_studio_sdk/projects/types/patched_lse_project_update_request_skip_queue.py +7 -0
  94. label_studio_sdk/{prompts/types/prompts_batch_failed_predictions_response.py → projects/types/projects_duplicate_response.py} +8 -5
  95. label_studio_sdk/projects/types/projects_import_tasks_response.py +2 -2
  96. label_studio_sdk/projects/types/projects_list_request_filter.py +1 -1
  97. label_studio_sdk/prompts/__init__.py +4 -10
  98. label_studio_sdk/prompts/client.py +511 -442
  99. label_studio_sdk/prompts/indicators/__init__.py +3 -0
  100. label_studio_sdk/prompts/indicators/client.py +47 -49
  101. label_studio_sdk/prompts/indicators/types/__init__.py +5 -0
  102. label_studio_sdk/{types/key_indicator_value.py → prompts/indicators/types/indicators_list_response_item.py} +3 -3
  103. label_studio_sdk/prompts/runs/client.py +113 -135
  104. label_studio_sdk/prompts/types/__init__.py +2 -12
  105. label_studio_sdk/prompts/types/prompts_compatible_projects_request_project_type.py +7 -0
  106. label_studio_sdk/prompts/versions/client.py +372 -312
  107. label_studio_sdk/tasks/__init__.py +2 -2
  108. label_studio_sdk/tasks/client.py +514 -213
  109. label_studio_sdk/tasks/types/__init__.py +1 -2
  110. label_studio_sdk/tokens/client.py +160 -152
  111. label_studio_sdk/tokens/client_ext.py +3 -3
  112. label_studio_sdk/types/__init__.py +276 -142
  113. label_studio_sdk/{webhooks/types/webhooks_update_request_actions_item.py → types/actions_enum.py} +4 -1
  114. label_studio_sdk/types/all_roles_project_list.py +197 -0
  115. label_studio_sdk/types/all_roles_project_list_sampling.py +7 -0
  116. label_studio_sdk/types/all_roles_project_list_skip_queue.py +7 -0
  117. label_studio_sdk/types/annotated_enum.py +5 -0
  118. label_studio_sdk/types/annotation.py +24 -10
  119. label_studio_sdk/types/annotation_last_action.py +3 -15
  120. label_studio_sdk/types/{annotations_dm_field.py → annotation_request.py} +21 -30
  121. label_studio_sdk/types/annotation_request_last_action.py +7 -0
  122. label_studio_sdk/types/assignment_settings.py +31 -0
  123. label_studio_sdk/types/assignment_settings_label_stream_task_distribution.py +7 -0
  124. label_studio_sdk/types/assignment_settings_request.py +32 -0
  125. label_studio_sdk/types/assignment_settings_request_label_stream_task_distribution.py +7 -0
  126. label_studio_sdk/types/associated_project.py +30 -0
  127. label_studio_sdk/types/auth_method_enum.py +5 -0
  128. label_studio_sdk/types/azure_blob_export_storage.py +8 -12
  129. label_studio_sdk/types/azure_blob_import_storage.py +8 -12
  130. label_studio_sdk/types/{prompt_associated_projects_item_id.py → batch_failed_predictions.py} +4 -4
  131. label_studio_sdk/types/{access_token_response.py → batch_predictions.py} +6 -8
  132. label_studio_sdk/types/billing_checks.py +39 -0
  133. label_studio_sdk/types/billing_flags.py +44 -0
  134. label_studio_sdk/types/billing_info_response.py +22 -0
  135. label_studio_sdk/types/blank_enum.py +5 -0
  136. label_studio_sdk/types/{key_indicators_item_extra_kpis_item.py → blueprint_list.py} +12 -6
  137. label_studio_sdk/types/budget_reset_period_enum.py +5 -0
  138. label_studio_sdk/types/child_filter.py +44 -0
  139. label_studio_sdk/types/comment.py +39 -14
  140. label_studio_sdk/types/comment_request.py +32 -0
  141. label_studio_sdk/types/comment_serializer_with_expanded_user.py +53 -0
  142. label_studio_sdk/types/converted_format.py +5 -5
  143. label_studio_sdk/types/{api_token_response.py → converted_format_request.py} +8 -15
  144. label_studio_sdk/types/count_limit.py +22 -0
  145. label_studio_sdk/types/custom_scripts_editable_by_enum.py +5 -0
  146. label_studio_sdk/types/default_role_enum.py +5 -0
  147. label_studio_sdk/types/edition_enum.py +5 -0
  148. label_studio_sdk/types/export.py +7 -7
  149. label_studio_sdk/types/file_upload.py +5 -5
  150. label_studio_sdk/types/filter.py +9 -6
  151. label_studio_sdk/types/filter_group.py +3 -3
  152. label_studio_sdk/types/finished_enum.py +5 -0
  153. label_studio_sdk/types/gcs_export_storage.py +8 -12
  154. label_studio_sdk/types/gcs_import_storage.py +8 -12
  155. label_studio_sdk/types/{rotate_token_response.py → hotkeys.py} +5 -8
  156. label_studio_sdk/types/{base_task.py → import_api_request.py} +11 -34
  157. label_studio_sdk/types/inference_run_cost_estimate.py +2 -2
  158. label_studio_sdk/types/label_stream_task_distribution_enum.py +5 -0
  159. label_studio_sdk/types/{annotations_dm_field_last_action.py → last_action_enum.py} +1 -1
  160. label_studio_sdk/types/local_files_export_storage.py +8 -12
  161. label_studio_sdk/types/local_files_import_storage.py +8 -12
  162. label_studio_sdk/types/{annotation_filter_options.py → lse_annotation_filter_options.py} +12 -2
  163. label_studio_sdk/types/lse_annotation_filter_options_request.py +42 -0
  164. label_studio_sdk/types/lse_annotation_filter_options_request_reviewed.py +7 -0
  165. label_studio_sdk/types/lse_annotation_filter_options_reviewed.py +7 -0
  166. label_studio_sdk/types/{export_snapshot.py → lse_export_create.py} +11 -11
  167. label_studio_sdk/types/lse_fields.py +49 -0
  168. label_studio_sdk/types/lse_fields_onboarding_state.py +8 -0
  169. label_studio_sdk/types/lse_fields_trial_role.py +8 -0
  170. label_studio_sdk/types/lse_key_indicator_value.py +35 -0
  171. label_studio_sdk/types/lse_organization.py +57 -0
  172. label_studio_sdk/types/lse_organization_custom_scripts_editable_by.py +7 -0
  173. label_studio_sdk/types/{key_indicators_item_additional_kpis_item.py → lse_organization_member_list.py} +12 -7
  174. label_studio_sdk/types/lse_project_create.py +196 -0
  175. label_studio_sdk/types/lse_project_create_sampling.py +7 -0
  176. label_studio_sdk/types/lse_project_create_skip_queue.py +7 -0
  177. label_studio_sdk/types/lse_project_update.py +215 -0
  178. label_studio_sdk/types/lse_project_update_sampling.py +7 -0
  179. label_studio_sdk/types/lse_project_update_skip_queue.py +7 -0
  180. label_studio_sdk/types/lse_s3export_storage.py +134 -0
  181. label_studio_sdk/{import_storage/s3/types/s3create_response.py → types/lse_s3export_storage_request.py} +47 -21
  182. label_studio_sdk/{import_storage/s3/types/s3update_response.py → types/lse_s3import_storage.py} +60 -21
  183. label_studio_sdk/types/{s3s_import_storage.py → lse_s3import_storage_request.py} +32 -21
  184. label_studio_sdk/types/lse_task.py +117 -0
  185. label_studio_sdk/types/{data_manager_task_serializer_drafts_item.py → lse_task_drafts_item.py} +2 -2
  186. label_studio_sdk/types/lse_task_filter_options.py +63 -0
  187. label_studio_sdk/types/lse_task_filter_options_annotated.py +7 -0
  188. label_studio_sdk/types/lse_task_filter_options_finished.py +7 -0
  189. label_studio_sdk/types/lse_task_filter_options_request.py +63 -0
  190. label_studio_sdk/types/lse_task_filter_options_request_annotated.py +7 -0
  191. label_studio_sdk/types/lse_task_filter_options_request_finished.py +7 -0
  192. label_studio_sdk/types/lse_task_filter_options_request_reviewed.py +7 -0
  193. label_studio_sdk/types/lse_task_filter_options_request_skipped.py +7 -0
  194. label_studio_sdk/types/lse_task_filter_options_reviewed.py +7 -0
  195. label_studio_sdk/types/lse_task_filter_options_skipped.py +7 -0
  196. label_studio_sdk/types/{data_manager_task_serializer_predictions_item.py → lse_task_predictions_item.py} +4 -5
  197. label_studio_sdk/types/lse_task_serializer_for_annotators.py +54 -0
  198. label_studio_sdk/types/lse_task_serializer_for_annotators_drafts_item.py +22 -0
  199. label_studio_sdk/types/lse_task_serializer_for_annotators_predictions_item.py +28 -0
  200. label_studio_sdk/types/lse_task_serializer_for_reviewers.py +117 -0
  201. label_studio_sdk/types/lse_task_serializer_for_reviewers_drafts_item.py +22 -0
  202. label_studio_sdk/types/lse_task_serializer_for_reviewers_predictions_item.py +28 -0
  203. label_studio_sdk/types/lse_user.py +49 -0
  204. label_studio_sdk/types/{base_user.py → lse_user_api.py} +17 -6
  205. label_studio_sdk/types/lse_user_organization_member_list.py +48 -0
  206. label_studio_sdk/types/lseapi_token_create.py +21 -0
  207. label_studio_sdk/types/lseapi_token_list.py +21 -0
  208. label_studio_sdk/types/lsejwt_settings.py +32 -0
  209. label_studio_sdk/types/maybe_expanded_comment.py +7 -0
  210. label_studio_sdk/types/ml_backend.py +16 -17
  211. label_studio_sdk/types/mode_enum.py +5 -0
  212. label_studio_sdk/types/model_interface.py +44 -0
  213. label_studio_sdk/types/model_interface_request.py +40 -0
  214. label_studio_sdk/types/model_interface_serializer_get.py +45 -0
  215. label_studio_sdk/types/model_provider_connection.py +48 -17
  216. label_studio_sdk/types/model_provider_connection_budget_reset_period.py +3 -1
  217. label_studio_sdk/types/model_provider_connection_request.py +71 -0
  218. label_studio_sdk/types/model_run.py +40 -0
  219. label_studio_sdk/types/{inference_run_status.py → model_run_status_enum.py} +1 -1
  220. label_studio_sdk/types/null_enum.py +3 -0
  221. label_studio_sdk/types/onboarding_state_enum.py +7 -0
  222. label_studio_sdk/types/organization_billing.py +20 -0
  223. label_studio_sdk/types/organization_id.py +28 -0
  224. label_studio_sdk/types/organization_invite.py +20 -0
  225. label_studio_sdk/types/organization_member.py +37 -0
  226. label_studio_sdk/types/organization_membership.py +24 -0
  227. label_studio_sdk/{projects/types/projects_list_response.py → types/paginated_all_roles_project_list_list.py} +5 -5
  228. label_studio_sdk/types/paginated_lse_organization_member_list_list.py +23 -0
  229. label_studio_sdk/types/{jwt_settings_response.py → paginated_role_based_task_list.py} +11 -9
  230. label_studio_sdk/types/pause.py +55 -14
  231. label_studio_sdk/types/pause_request.py +41 -0
  232. label_studio_sdk/types/prediction.py +7 -11
  233. label_studio_sdk/types/prediction_request.py +56 -0
  234. label_studio_sdk/types/project.py +32 -39
  235. label_studio_sdk/types/project_import.py +12 -13
  236. label_studio_sdk/types/project_label_config.py +2 -2
  237. label_studio_sdk/types/project_label_config_request.py +22 -0
  238. label_studio_sdk/types/project_sampling.py +3 -3
  239. label_studio_sdk/types/project_skip_queue.py +3 -1
  240. label_studio_sdk/types/project_subset_enum.py +5 -0
  241. label_studio_sdk/types/prompts_status_enum.py +16 -0
  242. label_studio_sdk/types/{prompt_version_provider.py → provider_enum.py} +1 -1
  243. label_studio_sdk/types/reason_enum.py +7 -0
  244. label_studio_sdk/types/redis_export_storage.py +8 -12
  245. label_studio_sdk/types/redis_import_storage.py +8 -12
  246. label_studio_sdk/types/refined_prompt_response.py +5 -6
  247. label_studio_sdk/types/requeue_rejected_tasks_mode_enum.py +5 -0
  248. label_studio_sdk/types/review_criteria_enum.py +5 -0
  249. label_studio_sdk/types/review_settings.py +80 -0
  250. label_studio_sdk/types/review_settings_request.py +80 -0
  251. label_studio_sdk/types/review_settings_request_requeue_rejected_tasks_mode.py +8 -0
  252. label_studio_sdk/types/review_settings_request_review_criteria.py +7 -0
  253. label_studio_sdk/types/review_settings_requeue_rejected_tasks_mode.py +8 -0
  254. label_studio_sdk/types/review_settings_review_criteria.py +7 -0
  255. label_studio_sdk/types/reviewed_enum.py +5 -0
  256. label_studio_sdk/types/role9e7enum.py +5 -0
  257. label_studio_sdk/types/role_based_task.py +8 -0
  258. label_studio_sdk/types/s3export_storage.py +8 -12
  259. label_studio_sdk/types/s3import_storage.py +8 -12
  260. label_studio_sdk/types/sampling_enum.py +7 -0
  261. label_studio_sdk/types/scope_enum.py +5 -0
  262. label_studio_sdk/types/selected_items_request.py +23 -0
  263. label_studio_sdk/types/serialization_option.py +2 -6
  264. label_studio_sdk/types/serialization_option_request.py +22 -0
  265. label_studio_sdk/types/serialization_options.py +17 -5
  266. label_studio_sdk/types/serialization_options_request.py +47 -0
  267. label_studio_sdk/types/skill_name_enum.py +5 -0
  268. label_studio_sdk/types/skip_queue_enum.py +5 -0
  269. label_studio_sdk/types/skipped_enum.py +5 -0
  270. label_studio_sdk/types/state_enum.py +5 -0
  271. label_studio_sdk/types/status7bf_enum.py +5 -0
  272. label_studio_sdk/types/{azure_blob_import_storage_status.py → status_c5a_enum.py} +2 -2
  273. label_studio_sdk/types/third_party_model_version.py +65 -0
  274. label_studio_sdk/types/third_party_model_version_request.py +54 -0
  275. label_studio_sdk/types/token_refresh_response.py +19 -0
  276. label_studio_sdk/types/token_rotate_response.py +19 -0
  277. label_studio_sdk/types/trial_role_enum.py +16 -0
  278. label_studio_sdk/types/user_simple.py +8 -5
  279. label_studio_sdk/types/user_simple_request.py +28 -0
  280. label_studio_sdk/types/version_response.py +49 -0
  281. label_studio_sdk/types/view.py +8 -15
  282. label_studio_sdk/types/webhook.py +9 -13
  283. label_studio_sdk/types/webhook_serializer_for_update.py +15 -13
  284. label_studio_sdk/types/workspace.py +14 -34
  285. label_studio_sdk/types/workspace_member_create.py +27 -0
  286. label_studio_sdk/types/workspace_member_list.py +24 -0
  287. label_studio_sdk/users/client.py +604 -87
  288. label_studio_sdk/users/types/users_get_token_response.py +4 -11
  289. label_studio_sdk/users/types/users_reset_token_response.py +4 -11
  290. label_studio_sdk/versions/__init__.py +0 -3
  291. label_studio_sdk/versions/client.py +14 -14
  292. label_studio_sdk/views/client.py +227 -141
  293. label_studio_sdk/views/types/views_create_request_data.py +2 -2
  294. label_studio_sdk/views/types/views_create_request_data_filters.py +2 -2
  295. label_studio_sdk/views/types/views_create_request_data_filters_items_item.py +2 -2
  296. label_studio_sdk/views/types/views_update_request_data.py +2 -2
  297. label_studio_sdk/views/types/views_update_request_data_filters.py +2 -2
  298. label_studio_sdk/views/types/views_update_request_data_filters_items_item.py +2 -2
  299. label_studio_sdk/webhooks/__init__.py +36 -2
  300. label_studio_sdk/webhooks/client.py +173 -367
  301. label_studio_sdk/webhooks/types/__init__.py +34 -2
  302. label_studio_sdk/webhooks/types/webhooks_info_response.py +80 -0
  303. label_studio_sdk/webhooks/types/webhooks_info_response_annotation_created.py +24 -0
  304. label_studio_sdk/webhooks/types/webhooks_info_response_annotation_updated.py +24 -0
  305. label_studio_sdk/webhooks/types/webhooks_info_response_annotations_created.py +24 -0
  306. label_studio_sdk/webhooks/types/webhooks_info_response_annotations_deleted.py +24 -0
  307. label_studio_sdk/webhooks/types/webhooks_info_response_label_link_created.py +24 -0
  308. label_studio_sdk/webhooks/types/webhooks_info_response_label_link_deleted.py +24 -0
  309. label_studio_sdk/webhooks/types/webhooks_info_response_label_link_updated.py +24 -0
  310. label_studio_sdk/webhooks/types/webhooks_info_response_project_created.py +24 -0
  311. label_studio_sdk/webhooks/types/webhooks_info_response_project_deleted.py +24 -0
  312. label_studio_sdk/webhooks/types/webhooks_info_response_project_updated.py +24 -0
  313. label_studio_sdk/webhooks/types/webhooks_info_response_review_created.py +24 -0
  314. label_studio_sdk/webhooks/types/webhooks_info_response_review_updated.py +24 -0
  315. label_studio_sdk/webhooks/types/webhooks_info_response_reviews_deleted.py +24 -0
  316. label_studio_sdk/webhooks/types/webhooks_info_response_tasks_created.py +24 -0
  317. label_studio_sdk/webhooks/types/webhooks_info_response_tasks_deleted.py +24 -0
  318. label_studio_sdk/workspaces/__init__.py +1 -2
  319. label_studio_sdk/workspaces/client.py +97 -117
  320. label_studio_sdk/workspaces/members/__init__.py +0 -3
  321. label_studio_sdk/workspaces/members/client.py +65 -81
  322. {label_studio_sdk-1.0.20.dist-info → label_studio_sdk-2.0.1.dist-info}/METADATA +73 -25
  323. label_studio_sdk-2.0.1.dist-info/RECORD +435 -0
  324. {label_studio_sdk-1.0.20.dist-info → label_studio_sdk-2.0.1.dist-info}/WHEEL +1 -1
  325. label_studio_sdk/annotations/types/annotations_create_bulk_request_selected_items.py +0 -34
  326. label_studio_sdk/export_storage/azure/types/__init__.py +0 -6
  327. label_studio_sdk/export_storage/azure/types/azure_create_response.py +0 -57
  328. label_studio_sdk/export_storage/azure/types/azure_update_response.py +0 -57
  329. label_studio_sdk/export_storage/gcs/types/__init__.py +0 -6
  330. label_studio_sdk/export_storage/gcs/types/gcs_create_response.py +0 -57
  331. label_studio_sdk/export_storage/gcs/types/gcs_update_response.py +0 -57
  332. label_studio_sdk/export_storage/local/types/__init__.py +0 -6
  333. label_studio_sdk/export_storage/local/types/local_create_response.py +0 -47
  334. label_studio_sdk/export_storage/local/types/local_update_response.py +0 -47
  335. label_studio_sdk/export_storage/redis/types/__init__.py +0 -6
  336. label_studio_sdk/export_storage/redis/types/redis_create_response.py +0 -62
  337. label_studio_sdk/export_storage/redis/types/redis_update_response.py +0 -62
  338. label_studio_sdk/export_storage/s3/types/__init__.py +0 -6
  339. label_studio_sdk/export_storage/s3/types/s3create_response.py +0 -81
  340. label_studio_sdk/export_storage/s3/types/s3update_response.py +0 -81
  341. label_studio_sdk/import_storage/azure/types/__init__.py +0 -6
  342. label_studio_sdk/import_storage/azure/types/azure_create_response.py +0 -72
  343. label_studio_sdk/import_storage/azure/types/azure_update_response.py +0 -72
  344. label_studio_sdk/import_storage/gcs/types/__init__.py +0 -6
  345. label_studio_sdk/import_storage/gcs/types/gcs_create_response.py +0 -72
  346. label_studio_sdk/import_storage/gcs/types/gcs_update_response.py +0 -72
  347. label_studio_sdk/import_storage/local/types/__init__.py +0 -6
  348. label_studio_sdk/import_storage/local/types/local_create_response.py +0 -47
  349. label_studio_sdk/import_storage/local/types/local_update_response.py +0 -47
  350. label_studio_sdk/import_storage/redis/types/__init__.py +0 -6
  351. label_studio_sdk/import_storage/redis/types/redis_create_response.py +0 -62
  352. label_studio_sdk/import_storage/redis/types/redis_update_response.py +0 -62
  353. label_studio_sdk/import_storage/s3/types/__init__.py +0 -6
  354. label_studio_sdk/ml/types/ml_create_response.py +0 -68
  355. label_studio_sdk/ml/types/ml_create_response_auth_method.py +0 -5
  356. label_studio_sdk/ml/types/ml_update_response.py +0 -68
  357. label_studio_sdk/ml/types/ml_update_response_auth_method.py +0 -5
  358. label_studio_sdk/projects/exports/types/exports_list_formats_response_item.py +0 -44
  359. label_studio_sdk/projects/types/projects_create_response.py +0 -91
  360. label_studio_sdk/projects/types/projects_update_response.py +0 -96
  361. label_studio_sdk/prompts/types/prompts_batch_failed_predictions_request_failed_predictions_item.py +0 -32
  362. label_studio_sdk/prompts/types/prompts_batch_predictions_request_results_item.py +0 -59
  363. label_studio_sdk/tasks/types/tasks_list_response.py +0 -38
  364. label_studio_sdk/types/annotation_completed_by.py +0 -6
  365. label_studio_sdk/types/azure_blob_export_storage_status.py +0 -7
  366. label_studio_sdk/types/base_task_updated_by.py +0 -7
  367. label_studio_sdk/types/comment_created_by.py +0 -5
  368. label_studio_sdk/types/converted_format_status.py +0 -5
  369. label_studio_sdk/types/data_manager_task_serializer.py +0 -118
  370. label_studio_sdk/types/data_manager_task_serializer_annotators_item.py +0 -5
  371. label_studio_sdk/types/data_manager_task_serializer_comment_authors_item.py +0 -5
  372. label_studio_sdk/types/data_manager_task_serializer_predictions_item_model_run.py +0 -5
  373. label_studio_sdk/types/export_format.py +0 -25
  374. label_studio_sdk/types/export_snapshot_status.py +0 -5
  375. label_studio_sdk/types/export_status.py +0 -5
  376. label_studio_sdk/types/gcs_export_storage_status.py +0 -7
  377. label_studio_sdk/types/gcs_import_storage_status.py +0 -7
  378. label_studio_sdk/types/inference_run.py +0 -34
  379. label_studio_sdk/types/inference_run_created_by.py +0 -5
  380. label_studio_sdk/types/inference_run_organization.py +0 -5
  381. label_studio_sdk/types/inference_run_project_subset.py +0 -5
  382. label_studio_sdk/types/key_indicators.py +0 -6
  383. label_studio_sdk/types/key_indicators_item.py +0 -41
  384. label_studio_sdk/types/local_files_export_storage_status.py +0 -7
  385. label_studio_sdk/types/local_files_import_storage_status.py +0 -7
  386. label_studio_sdk/types/ml_backend_auth_method.py +0 -5
  387. label_studio_sdk/types/ml_backend_state.py +0 -5
  388. label_studio_sdk/types/model_provider_connection_created_by.py +0 -5
  389. label_studio_sdk/types/model_provider_connection_organization.py +0 -5
  390. label_studio_sdk/types/model_provider_connection_provider.py +0 -7
  391. label_studio_sdk/types/model_provider_connection_scope.py +0 -5
  392. label_studio_sdk/types/pause_paused_by.py +0 -5
  393. label_studio_sdk/types/project_import_status.py +0 -5
  394. label_studio_sdk/types/prompt.py +0 -71
  395. label_studio_sdk/types/prompt_associated_projects_item.py +0 -6
  396. label_studio_sdk/types/prompt_created_by.py +0 -5
  397. label_studio_sdk/types/prompt_organization.py +0 -5
  398. label_studio_sdk/types/prompt_version.py +0 -32
  399. label_studio_sdk/types/prompt_version_created_by.py +0 -5
  400. label_studio_sdk/types/prompt_version_organization.py +0 -5
  401. label_studio_sdk/types/redis_export_storage_status.py +0 -7
  402. label_studio_sdk/types/redis_import_storage_status.py +0 -7
  403. label_studio_sdk/types/refined_prompt_response_refinement_status.py +0 -7
  404. label_studio_sdk/types/s3export_storage_status.py +0 -7
  405. label_studio_sdk/types/s3import_storage_status.py +0 -7
  406. label_studio_sdk/types/s3s_export_storage.py +0 -73
  407. label_studio_sdk/types/s3s_import_storage_status.py +0 -7
  408. label_studio_sdk/types/task.py +0 -156
  409. label_studio_sdk/types/task_annotators_item.py +0 -5
  410. label_studio_sdk/types/task_comment_authors_item.py +0 -5
  411. label_studio_sdk/types/task_filter_options.py +0 -39
  412. label_studio_sdk/types/webhook_actions_item.py +0 -21
  413. label_studio_sdk/types/webhook_serializer_for_update_actions_item.py +0 -21
  414. label_studio_sdk/versions/types/__init__.py +0 -6
  415. label_studio_sdk/versions/types/versions_get_response.py +0 -73
  416. label_studio_sdk/versions/types/versions_get_response_edition.py +0 -5
  417. label_studio_sdk/workspaces/members/types/__init__.py +0 -6
  418. label_studio_sdk/workspaces/members/types/members_create_response.py +0 -22
  419. label_studio_sdk/workspaces/members/types/members_list_response_item.py +0 -22
  420. label_studio_sdk-1.0.20.dist-info/RECORD +0 -374
  421. {label_studio_sdk-1.0.20.dist-info → label_studio_sdk-2.0.1.dist-info}/LICENSE +0 -0
@@ -4,12 +4,10 @@ import typing
4
4
  from ...core.client_wrapper import SyncClientWrapper
5
5
  from ...core.request_options import RequestOptions
6
6
  from ...types.azure_blob_import_storage import AzureBlobImportStorage
7
- from ...core.pydantic_utilities import parse_obj_as
7
+ from ...core.unchecked_base_model import construct_type
8
8
  from json.decoder import JSONDecodeError
9
9
  from ...core.api_error import ApiError
10
- from .types.azure_create_response import AzureCreateResponse
11
10
  from ...core.jsonable_encoder import jsonable_encoder
12
- from .types.azure_update_response import AzureUpdateResponse
13
11
  from ...core.client_wrapper import AsyncClientWrapper
14
12
 
15
13
  # this is used as the default value for optional parameters
@@ -21,18 +19,20 @@ class AzureClient:
21
19
  self._client_wrapper = client_wrapper
22
20
 
23
21
  def list(
24
- self, *, project: typing.Optional[int] = None, request_options: typing.Optional[RequestOptions] = None
22
+ self,
23
+ *,
24
+ ordering: typing.Optional[str] = None,
25
+ project: typing.Optional[int] = None,
26
+ request_options: typing.Optional[RequestOptions] = None,
25
27
  ) -> typing.List[AzureBlobImportStorage]:
26
28
  """
27
-
28
- You can connect your Microsoft Azure Blob storage container to Label Studio as a source storage or target storage. Use this API request to get a list of all Azure import (source) storage connections for a specific project.
29
-
30
- The project ID can be found in the URL when viewing the project in Label Studio, or you can retrieve all project IDs using [List all projects](../projects/list).
31
-
32
- For more information about working with external storage, see [Sync data from external storage](https://labelstud.io/guide/storage).
29
+ Get list of all Azure import storage connections.
33
30
 
34
31
  Parameters
35
32
  ----------
33
+ ordering : typing.Optional[str]
34
+ Which field to use when ordering the results.
35
+
36
36
  project : typing.Optional[int]
37
37
  Project ID
38
38
 
@@ -57,6 +57,7 @@ class AzureClient:
57
57
  "api/storages/azure/",
58
58
  method="GET",
59
59
  params={
60
+ "ordering": ordering,
60
61
  "project": project,
61
62
  },
62
63
  request_options=request_options,
@@ -65,7 +66,7 @@ class AzureClient:
65
66
  if 200 <= _response.status_code < 300:
66
67
  return typing.cast(
67
68
  typing.List[AzureBlobImportStorage],
68
- parse_obj_as(
69
+ construct_type(
69
70
  type_=typing.List[AzureBlobImportStorage], # type: ignore
70
71
  object_=_response.json(),
71
72
  ),
@@ -90,16 +91,9 @@ class AzureClient:
90
91
  account_name: typing.Optional[str] = OMIT,
91
92
  account_key: typing.Optional[str] = OMIT,
92
93
  request_options: typing.Optional[RequestOptions] = None,
93
- ) -> AzureCreateResponse:
94
+ ) -> AzureBlobImportStorage:
94
95
  """
95
-
96
- Create a new source storage connection to Microsoft Azure Blob storage.
97
-
98
- For information about the required fields and prerequisites, see [Microsoft Azure Blob storage](https://labelstud.io/guide/storage#Microsoft-Azure-Blob-storage) in the Label Studio documentation.
99
-
100
- <Info>Ensure you configure CORS before adding cloud storage. This ensures you will be able to see the content of the data rather than just a link.</Info>
101
-
102
- <Tip>After you add the storage, you should validate the connection before attempting to sync your data. Your data will not be imported until you [sync your connection](sync).</Tip>
96
+ Create new Azure import storage
103
97
 
104
98
  Parameters
105
99
  ----------
@@ -141,7 +135,7 @@ class AzureClient:
141
135
 
142
136
  Returns
143
137
  -------
144
- AzureCreateResponse
138
+ AzureBlobImportStorage
145
139
 
146
140
 
147
141
  Examples
@@ -178,9 +172,9 @@ class AzureClient:
178
172
  try:
179
173
  if 200 <= _response.status_code < 300:
180
174
  return typing.cast(
181
- AzureCreateResponse,
182
- parse_obj_as(
183
- type_=AzureCreateResponse, # type: ignore
175
+ AzureBlobImportStorage,
176
+ construct_type(
177
+ type_=AzureBlobImportStorage, # type: ignore
184
178
  object_=_response.json(),
185
179
  ),
186
180
  )
@@ -189,123 +183,13 @@ class AzureClient:
189
183
  raise ApiError(status_code=_response.status_code, body=_response.text)
190
184
  raise ApiError(status_code=_response.status_code, body=_response_json)
191
185
 
192
- def validate(
193
- self,
194
- *,
195
- id: typing.Optional[int] = OMIT,
196
- regex_filter: typing.Optional[str] = OMIT,
197
- use_blob_urls: typing.Optional[bool] = OMIT,
198
- presign: typing.Optional[bool] = OMIT,
199
- presign_ttl: typing.Optional[int] = OMIT,
200
- title: typing.Optional[str] = OMIT,
201
- description: typing.Optional[str] = OMIT,
202
- project: typing.Optional[int] = OMIT,
203
- container: typing.Optional[str] = OMIT,
204
- prefix: typing.Optional[str] = OMIT,
205
- account_name: typing.Optional[str] = OMIT,
206
- account_key: typing.Optional[str] = OMIT,
207
- request_options: typing.Optional[RequestOptions] = None,
208
- ) -> None:
209
- """
210
-
211
- Validate a specific Azure import storage connection. This is useful to ensure that the storage configuration settings are correct and operational before attempting to import data.
212
-
213
- Parameters
214
- ----------
215
- id : typing.Optional[int]
216
- Storage ID. If set, storage with specified ID will be updated
217
-
218
- regex_filter : typing.Optional[str]
219
- Cloud storage regex for filtering objects. You must specify it otherwise no objects will be imported.
220
-
221
- use_blob_urls : typing.Optional[bool]
222
- Interpret objects as BLOBs and generate URLs. For example, if your bucket contains images, you can use this option to generate URLs for these images. If set to False, it will read the content of the file and load it into Label Studio.
223
-
224
- presign : typing.Optional[bool]
225
- Presign URLs for direct download
226
-
227
- presign_ttl : typing.Optional[int]
228
- Presign TTL in minutes
229
-
230
- title : typing.Optional[str]
231
- Storage title
232
-
233
- description : typing.Optional[str]
234
- Storage description
235
-
236
- project : typing.Optional[int]
237
- Project ID
238
-
239
- container : typing.Optional[str]
240
- Azure blob container
241
-
242
- prefix : typing.Optional[str]
243
- Azure blob prefix name
244
-
245
- account_name : typing.Optional[str]
246
- Azure Blob account name
247
-
248
- account_key : typing.Optional[str]
249
- Azure Blob account key
250
-
251
- request_options : typing.Optional[RequestOptions]
252
- Request-specific configuration.
253
-
254
- Returns
255
- -------
256
- None
257
-
258
- Examples
259
- --------
260
- from label_studio_sdk import LabelStudio
261
-
262
- client = LabelStudio(
263
- api_key="YOUR_API_KEY",
264
- )
265
- client.import_storage.azure.validate()
266
- """
267
- _response = self._client_wrapper.httpx_client.request(
268
- "api/storages/azure/validate",
269
- method="POST",
270
- json={
271
- "id": id,
272
- "regex_filter": regex_filter,
273
- "use_blob_urls": use_blob_urls,
274
- "presign": presign,
275
- "presign_ttl": presign_ttl,
276
- "title": title,
277
- "description": description,
278
- "project": project,
279
- "container": container,
280
- "prefix": prefix,
281
- "account_name": account_name,
282
- "account_key": account_key,
283
- },
284
- headers={
285
- "content-type": "application/json",
286
- },
287
- request_options=request_options,
288
- omit=OMIT,
289
- )
290
- try:
291
- if 200 <= _response.status_code < 300:
292
- return
293
- _response_json = _response.json()
294
- except JSONDecodeError:
295
- raise ApiError(status_code=_response.status_code, body=_response.text)
296
- raise ApiError(status_code=_response.status_code, body=_response_json)
297
-
298
186
  def get(self, id: int, *, request_options: typing.Optional[RequestOptions] = None) -> AzureBlobImportStorage:
299
187
  """
300
-
301
- Get a specific Azure import storage connection. You will need to provide the import storage ID. You can find this using [List import storages](list).
302
-
303
- For more information about working with external storage, see [Sync data from external storage](https://labelstud.io/guide/storage).
188
+ Get a specific Azure import storage connection.
304
189
 
305
190
  Parameters
306
191
  ----------
307
192
  id : int
308
- A unique integer value identifying this azure blob import storage.
309
193
 
310
194
  request_options : typing.Optional[RequestOptions]
311
195
  Request-specific configuration.
@@ -335,7 +219,7 @@ class AzureClient:
335
219
  if 200 <= _response.status_code < 300:
336
220
  return typing.cast(
337
221
  AzureBlobImportStorage,
338
- parse_obj_as(
222
+ construct_type(
339
223
  type_=AzureBlobImportStorage, # type: ignore
340
224
  object_=_response.json(),
341
225
  ),
@@ -347,17 +231,11 @@ class AzureClient:
347
231
 
348
232
  def delete(self, id: int, *, request_options: typing.Optional[RequestOptions] = None) -> None:
349
233
  """
350
-
351
- Delete a specific Azure import storage connection. You will need to provide the import storage ID. You can find this using [List import storages](list).
352
-
353
- Deleting a source storage connection does not affect tasks with synced data in Label Studio. The sync process is designed to import new or updated tasks from the connected storage into the project, but it does not track deletions of files from the storage. Therefore, if you remove the external storage connection, the tasks that were created from that storage will remain in the project.
354
-
355
- If you want to remove the tasks that were synced from the external storage, you will need to delete them manually from within the Label Studio UI or use the [Delete tasks](../../tasks/delete-all-tasks) API.
234
+ Delete a specific Azure import storage connection.
356
235
 
357
236
  Parameters
358
237
  ----------
359
238
  id : int
360
- A unique integer value identifying this azure blob import storage.
361
239
 
362
240
  request_options : typing.Optional[RequestOptions]
363
241
  Request-specific configuration.
@@ -406,17 +284,13 @@ class AzureClient:
406
284
  account_name: typing.Optional[str] = OMIT,
407
285
  account_key: typing.Optional[str] = OMIT,
408
286
  request_options: typing.Optional[RequestOptions] = None,
409
- ) -> AzureUpdateResponse:
287
+ ) -> AzureBlobImportStorage:
410
288
  """
411
-
412
- Update a specific Azure import storage connection. You will need to provide the import storage ID. You can find this using [List import storages](list).
413
-
414
- For more information about working with external storage, see [Sync data from external storage](https://labelstud.io/guide/storage).
289
+ Update a specific Azure import storage connection.
415
290
 
416
291
  Parameters
417
292
  ----------
418
293
  id : int
419
- A unique integer value identifying this azure blob import storage.
420
294
 
421
295
  regex_filter : typing.Optional[str]
422
296
  Cloud storage regex for filtering objects. You must specify it otherwise no objects will be imported.
@@ -456,7 +330,7 @@ class AzureClient:
456
330
 
457
331
  Returns
458
332
  -------
459
- AzureUpdateResponse
333
+ AzureBlobImportStorage
460
334
 
461
335
 
462
336
  Examples
@@ -495,9 +369,9 @@ class AzureClient:
495
369
  try:
496
370
  if 200 <= _response.status_code < 300:
497
371
  return typing.cast(
498
- AzureUpdateResponse,
499
- parse_obj_as(
500
- type_=AzureUpdateResponse, # type: ignore
372
+ AzureBlobImportStorage,
373
+ construct_type(
374
+ type_=AzureBlobImportStorage, # type: ignore
501
375
  object_=_response.json(),
502
376
  ),
503
377
  )
@@ -508,12 +382,7 @@ class AzureClient:
508
382
 
509
383
  def sync(self, id: int, *, request_options: typing.Optional[RequestOptions] = None) -> AzureBlobImportStorage:
510
384
  """
511
-
512
- Sync tasks from an Azure import storage connection. You will need to provide the import storage ID. You can find this using [List import storages](list).
513
-
514
- Sync operations with external containers only go one way. They either create tasks from objects in the container (source/import storage) or push annotations to the output container (export/target storage). Changing something on the Microsoft side doesn’t guarantee consistency in results.
515
-
516
- <Note>Before proceeding, you should review [How sync operations work - Source storage](https://labelstud.io/guide/storage#Source-storage) to ensure that your data remains secure and private.</Note>
385
+ Sync tasks from an Azure import storage connection.
517
386
 
518
387
  Parameters
519
388
  ----------
@@ -548,7 +417,7 @@ class AzureClient:
548
417
  if 200 <= _response.status_code < 300:
549
418
  return typing.cast(
550
419
  AzureBlobImportStorage,
551
- parse_obj_as(
420
+ construct_type(
552
421
  type_=AzureBlobImportStorage, # type: ignore
553
422
  object_=_response.json(),
554
423
  ),
@@ -558,77 +427,10 @@ class AzureClient:
558
427
  raise ApiError(status_code=_response.status_code, body=_response.text)
559
428
  raise ApiError(status_code=_response.status_code, body=_response_json)
560
429
 
561
-
562
- class AsyncAzureClient:
563
- def __init__(self, *, client_wrapper: AsyncClientWrapper):
564
- self._client_wrapper = client_wrapper
565
-
566
- async def list(
567
- self, *, project: typing.Optional[int] = None, request_options: typing.Optional[RequestOptions] = None
568
- ) -> typing.List[AzureBlobImportStorage]:
569
- """
570
-
571
- You can connect your Microsoft Azure Blob storage container to Label Studio as a source storage or target storage. Use this API request to get a list of all Azure import (source) storage connections for a specific project.
572
-
573
- The project ID can be found in the URL when viewing the project in Label Studio, or you can retrieve all project IDs using [List all projects](../projects/list).
574
-
575
- For more information about working with external storage, see [Sync data from external storage](https://labelstud.io/guide/storage).
576
-
577
- Parameters
578
- ----------
579
- project : typing.Optional[int]
580
- Project ID
581
-
582
- request_options : typing.Optional[RequestOptions]
583
- Request-specific configuration.
584
-
585
- Returns
586
- -------
587
- typing.List[AzureBlobImportStorage]
588
-
589
-
590
- Examples
591
- --------
592
- import asyncio
593
-
594
- from label_studio_sdk import AsyncLabelStudio
595
-
596
- client = AsyncLabelStudio(
597
- api_key="YOUR_API_KEY",
598
- )
599
-
600
-
601
- async def main() -> None:
602
- await client.import_storage.azure.list()
603
-
604
-
605
- asyncio.run(main())
606
- """
607
- _response = await self._client_wrapper.httpx_client.request(
608
- "api/storages/azure/",
609
- method="GET",
610
- params={
611
- "project": project,
612
- },
613
- request_options=request_options,
614
- )
615
- try:
616
- if 200 <= _response.status_code < 300:
617
- return typing.cast(
618
- typing.List[AzureBlobImportStorage],
619
- parse_obj_as(
620
- type_=typing.List[AzureBlobImportStorage], # type: ignore
621
- object_=_response.json(),
622
- ),
623
- )
624
- _response_json = _response.json()
625
- except JSONDecodeError:
626
- raise ApiError(status_code=_response.status_code, body=_response.text)
627
- raise ApiError(status_code=_response.status_code, body=_response_json)
628
-
629
- async def create(
430
+ def validate(
630
431
  self,
631
432
  *,
433
+ id: typing.Optional[int] = OMIT,
632
434
  regex_filter: typing.Optional[str] = OMIT,
633
435
  use_blob_urls: typing.Optional[bool] = OMIT,
634
436
  presign: typing.Optional[bool] = OMIT,
@@ -641,19 +443,15 @@ class AsyncAzureClient:
641
443
  account_name: typing.Optional[str] = OMIT,
642
444
  account_key: typing.Optional[str] = OMIT,
643
445
  request_options: typing.Optional[RequestOptions] = None,
644
- ) -> AzureCreateResponse:
446
+ ) -> None:
645
447
  """
646
-
647
- Create a new source storage connection to Microsoft Azure Blob storage.
648
-
649
- For information about the required fields and prerequisites, see [Microsoft Azure Blob storage](https://labelstud.io/guide/storage#Microsoft-Azure-Blob-storage) in the Label Studio documentation.
650
-
651
- <Info>Ensure you configure CORS before adding cloud storage. This ensures you will be able to see the content of the data rather than just a link.</Info>
652
-
653
- <Tip>After you add the storage, you should validate the connection before attempting to sync your data. Your data will not be imported until you [sync your connection](sync).</Tip>
448
+ Validate a specific Azure import storage connection.
654
449
 
655
450
  Parameters
656
451
  ----------
452
+ id : typing.Optional[int]
453
+ Storage ID. If set, storage with specified ID will be updated
454
+
657
455
  regex_filter : typing.Optional[str]
658
456
  Cloud storage regex for filtering objects. You must specify it otherwise no objects will be imported.
659
457
 
@@ -692,30 +490,22 @@ class AsyncAzureClient:
692
490
 
693
491
  Returns
694
492
  -------
695
- AzureCreateResponse
696
-
493
+ None
697
494
 
698
495
  Examples
699
496
  --------
700
- import asyncio
701
-
702
- from label_studio_sdk import AsyncLabelStudio
497
+ from label_studio_sdk import LabelStudio
703
498
 
704
- client = AsyncLabelStudio(
499
+ client = LabelStudio(
705
500
  api_key="YOUR_API_KEY",
706
501
  )
707
-
708
-
709
- async def main() -> None:
710
- await client.import_storage.azure.create()
711
-
712
-
713
- asyncio.run(main())
502
+ client.import_storage.azure.validate()
714
503
  """
715
- _response = await self._client_wrapper.httpx_client.request(
716
- "api/storages/azure/",
504
+ _response = self._client_wrapper.httpx_client.request(
505
+ "api/storages/azure/validate",
717
506
  method="POST",
718
507
  json={
508
+ "id": id,
719
509
  "regex_filter": regex_filter,
720
510
  "use_blob_urls": use_blob_urls,
721
511
  "presign": presign,
@@ -734,12 +524,77 @@ class AsyncAzureClient:
734
524
  request_options=request_options,
735
525
  omit=OMIT,
736
526
  )
527
+ try:
528
+ if 200 <= _response.status_code < 300:
529
+ return
530
+ _response_json = _response.json()
531
+ except JSONDecodeError:
532
+ raise ApiError(status_code=_response.status_code, body=_response.text)
533
+ raise ApiError(status_code=_response.status_code, body=_response_json)
534
+
535
+
536
+ class AsyncAzureClient:
537
+ def __init__(self, *, client_wrapper: AsyncClientWrapper):
538
+ self._client_wrapper = client_wrapper
539
+
540
+ async def list(
541
+ self,
542
+ *,
543
+ ordering: typing.Optional[str] = None,
544
+ project: typing.Optional[int] = None,
545
+ request_options: typing.Optional[RequestOptions] = None,
546
+ ) -> typing.List[AzureBlobImportStorage]:
547
+ """
548
+ Get list of all Azure import storage connections.
549
+
550
+ Parameters
551
+ ----------
552
+ ordering : typing.Optional[str]
553
+ Which field to use when ordering the results.
554
+
555
+ project : typing.Optional[int]
556
+ Project ID
557
+
558
+ request_options : typing.Optional[RequestOptions]
559
+ Request-specific configuration.
560
+
561
+ Returns
562
+ -------
563
+ typing.List[AzureBlobImportStorage]
564
+
565
+
566
+ Examples
567
+ --------
568
+ import asyncio
569
+
570
+ from label_studio_sdk import AsyncLabelStudio
571
+
572
+ client = AsyncLabelStudio(
573
+ api_key="YOUR_API_KEY",
574
+ )
575
+
576
+
577
+ async def main() -> None:
578
+ await client.import_storage.azure.list()
579
+
580
+
581
+ asyncio.run(main())
582
+ """
583
+ _response = await self._client_wrapper.httpx_client.request(
584
+ "api/storages/azure/",
585
+ method="GET",
586
+ params={
587
+ "ordering": ordering,
588
+ "project": project,
589
+ },
590
+ request_options=request_options,
591
+ )
737
592
  try:
738
593
  if 200 <= _response.status_code < 300:
739
594
  return typing.cast(
740
- AzureCreateResponse,
741
- parse_obj_as(
742
- type_=AzureCreateResponse, # type: ignore
595
+ typing.List[AzureBlobImportStorage],
596
+ construct_type(
597
+ type_=typing.List[AzureBlobImportStorage], # type: ignore
743
598
  object_=_response.json(),
744
599
  ),
745
600
  )
@@ -748,10 +603,9 @@ class AsyncAzureClient:
748
603
  raise ApiError(status_code=_response.status_code, body=_response.text)
749
604
  raise ApiError(status_code=_response.status_code, body=_response_json)
750
605
 
751
- async def validate(
606
+ async def create(
752
607
  self,
753
608
  *,
754
- id: typing.Optional[int] = OMIT,
755
609
  regex_filter: typing.Optional[str] = OMIT,
756
610
  use_blob_urls: typing.Optional[bool] = OMIT,
757
611
  presign: typing.Optional[bool] = OMIT,
@@ -764,16 +618,12 @@ class AsyncAzureClient:
764
618
  account_name: typing.Optional[str] = OMIT,
765
619
  account_key: typing.Optional[str] = OMIT,
766
620
  request_options: typing.Optional[RequestOptions] = None,
767
- ) -> None:
621
+ ) -> AzureBlobImportStorage:
768
622
  """
769
-
770
- Validate a specific Azure import storage connection. This is useful to ensure that the storage configuration settings are correct and operational before attempting to import data.
623
+ Create new Azure import storage
771
624
 
772
625
  Parameters
773
626
  ----------
774
- id : typing.Optional[int]
775
- Storage ID. If set, storage with specified ID will be updated
776
-
777
627
  regex_filter : typing.Optional[str]
778
628
  Cloud storage regex for filtering objects. You must specify it otherwise no objects will be imported.
779
629
 
@@ -812,7 +662,8 @@ class AsyncAzureClient:
812
662
 
813
663
  Returns
814
664
  -------
815
- None
665
+ AzureBlobImportStorage
666
+
816
667
 
817
668
  Examples
818
669
  --------
@@ -826,16 +677,15 @@ class AsyncAzureClient:
826
677
 
827
678
 
828
679
  async def main() -> None:
829
- await client.import_storage.azure.validate()
680
+ await client.import_storage.azure.create()
830
681
 
831
682
 
832
683
  asyncio.run(main())
833
684
  """
834
685
  _response = await self._client_wrapper.httpx_client.request(
835
- "api/storages/azure/validate",
686
+ "api/storages/azure/",
836
687
  method="POST",
837
688
  json={
838
- "id": id,
839
689
  "regex_filter": regex_filter,
840
690
  "use_blob_urls": use_blob_urls,
841
691
  "presign": presign,
@@ -856,7 +706,13 @@ class AsyncAzureClient:
856
706
  )
857
707
  try:
858
708
  if 200 <= _response.status_code < 300:
859
- return
709
+ return typing.cast(
710
+ AzureBlobImportStorage,
711
+ construct_type(
712
+ type_=AzureBlobImportStorage, # type: ignore
713
+ object_=_response.json(),
714
+ ),
715
+ )
860
716
  _response_json = _response.json()
861
717
  except JSONDecodeError:
862
718
  raise ApiError(status_code=_response.status_code, body=_response.text)
@@ -864,15 +720,11 @@ class AsyncAzureClient:
864
720
 
865
721
  async def get(self, id: int, *, request_options: typing.Optional[RequestOptions] = None) -> AzureBlobImportStorage:
866
722
  """
867
-
868
- Get a specific Azure import storage connection. You will need to provide the import storage ID. You can find this using [List import storages](list).
869
-
870
- For more information about working with external storage, see [Sync data from external storage](https://labelstud.io/guide/storage).
723
+ Get a specific Azure import storage connection.
871
724
 
872
725
  Parameters
873
726
  ----------
874
727
  id : int
875
- A unique integer value identifying this azure blob import storage.
876
728
 
877
729
  request_options : typing.Optional[RequestOptions]
878
730
  Request-specific configuration.
@@ -910,7 +762,7 @@ class AsyncAzureClient:
910
762
  if 200 <= _response.status_code < 300:
911
763
  return typing.cast(
912
764
  AzureBlobImportStorage,
913
- parse_obj_as(
765
+ construct_type(
914
766
  type_=AzureBlobImportStorage, # type: ignore
915
767
  object_=_response.json(),
916
768
  ),
@@ -922,17 +774,11 @@ class AsyncAzureClient:
922
774
 
923
775
  async def delete(self, id: int, *, request_options: typing.Optional[RequestOptions] = None) -> None:
924
776
  """
925
-
926
- Delete a specific Azure import storage connection. You will need to provide the import storage ID. You can find this using [List import storages](list).
927
-
928
- Deleting a source storage connection does not affect tasks with synced data in Label Studio. The sync process is designed to import new or updated tasks from the connected storage into the project, but it does not track deletions of files from the storage. Therefore, if you remove the external storage connection, the tasks that were created from that storage will remain in the project.
929
-
930
- If you want to remove the tasks that were synced from the external storage, you will need to delete them manually from within the Label Studio UI or use the [Delete tasks](../../tasks/delete-all-tasks) API.
777
+ Delete a specific Azure import storage connection.
931
778
 
932
779
  Parameters
933
780
  ----------
934
781
  id : int
935
- A unique integer value identifying this azure blob import storage.
936
782
 
937
783
  request_options : typing.Optional[RequestOptions]
938
784
  Request-specific configuration.
@@ -989,17 +835,13 @@ class AsyncAzureClient:
989
835
  account_name: typing.Optional[str] = OMIT,
990
836
  account_key: typing.Optional[str] = OMIT,
991
837
  request_options: typing.Optional[RequestOptions] = None,
992
- ) -> AzureUpdateResponse:
838
+ ) -> AzureBlobImportStorage:
993
839
  """
994
-
995
- Update a specific Azure import storage connection. You will need to provide the import storage ID. You can find this using [List import storages](list).
996
-
997
- For more information about working with external storage, see [Sync data from external storage](https://labelstud.io/guide/storage).
840
+ Update a specific Azure import storage connection.
998
841
 
999
842
  Parameters
1000
843
  ----------
1001
844
  id : int
1002
- A unique integer value identifying this azure blob import storage.
1003
845
 
1004
846
  regex_filter : typing.Optional[str]
1005
847
  Cloud storage regex for filtering objects. You must specify it otherwise no objects will be imported.
@@ -1039,7 +881,7 @@ class AsyncAzureClient:
1039
881
 
1040
882
  Returns
1041
883
  -------
1042
- AzureUpdateResponse
884
+ AzureBlobImportStorage
1043
885
 
1044
886
 
1045
887
  Examples
@@ -1086,9 +928,9 @@ class AsyncAzureClient:
1086
928
  try:
1087
929
  if 200 <= _response.status_code < 300:
1088
930
  return typing.cast(
1089
- AzureUpdateResponse,
1090
- parse_obj_as(
1091
- type_=AzureUpdateResponse, # type: ignore
931
+ AzureBlobImportStorage,
932
+ construct_type(
933
+ type_=AzureBlobImportStorage, # type: ignore
1092
934
  object_=_response.json(),
1093
935
  ),
1094
936
  )
@@ -1099,12 +941,7 @@ class AsyncAzureClient:
1099
941
 
1100
942
  async def sync(self, id: int, *, request_options: typing.Optional[RequestOptions] = None) -> AzureBlobImportStorage:
1101
943
  """
1102
-
1103
- Sync tasks from an Azure import storage connection. You will need to provide the import storage ID. You can find this using [List import storages](list).
1104
-
1105
- Sync operations with external containers only go one way. They either create tasks from objects in the container (source/import storage) or push annotations to the output container (export/target storage). Changing something on the Microsoft side doesn’t guarantee consistency in results.
1106
-
1107
- <Note>Before proceeding, you should review [How sync operations work - Source storage](https://labelstud.io/guide/storage#Source-storage) to ensure that your data remains secure and private.</Note>
944
+ Sync tasks from an Azure import storage connection.
1108
945
 
1109
946
  Parameters
1110
947
  ----------
@@ -1147,7 +984,7 @@ class AsyncAzureClient:
1147
984
  if 200 <= _response.status_code < 300:
1148
985
  return typing.cast(
1149
986
  AzureBlobImportStorage,
1150
- parse_obj_as(
987
+ construct_type(
1151
988
  type_=AzureBlobImportStorage, # type: ignore
1152
989
  object_=_response.json(),
1153
990
  ),
@@ -1156,3 +993,116 @@ class AsyncAzureClient:
1156
993
  except JSONDecodeError:
1157
994
  raise ApiError(status_code=_response.status_code, body=_response.text)
1158
995
  raise ApiError(status_code=_response.status_code, body=_response_json)
996
+
997
+ async def validate(
998
+ self,
999
+ *,
1000
+ id: typing.Optional[int] = OMIT,
1001
+ regex_filter: typing.Optional[str] = OMIT,
1002
+ use_blob_urls: typing.Optional[bool] = OMIT,
1003
+ presign: typing.Optional[bool] = OMIT,
1004
+ presign_ttl: typing.Optional[int] = OMIT,
1005
+ title: typing.Optional[str] = OMIT,
1006
+ description: typing.Optional[str] = OMIT,
1007
+ project: typing.Optional[int] = OMIT,
1008
+ container: typing.Optional[str] = OMIT,
1009
+ prefix: typing.Optional[str] = OMIT,
1010
+ account_name: typing.Optional[str] = OMIT,
1011
+ account_key: typing.Optional[str] = OMIT,
1012
+ request_options: typing.Optional[RequestOptions] = None,
1013
+ ) -> None:
1014
+ """
1015
+ Validate a specific Azure import storage connection.
1016
+
1017
+ Parameters
1018
+ ----------
1019
+ id : typing.Optional[int]
1020
+ Storage ID. If set, storage with specified ID will be updated
1021
+
1022
+ regex_filter : typing.Optional[str]
1023
+ Cloud storage regex for filtering objects. You must specify it otherwise no objects will be imported.
1024
+
1025
+ use_blob_urls : typing.Optional[bool]
1026
+ Interpret objects as BLOBs and generate URLs. For example, if your bucket contains images, you can use this option to generate URLs for these images. If set to False, it will read the content of the file and load it into Label Studio.
1027
+
1028
+ presign : typing.Optional[bool]
1029
+ Presign URLs for direct download
1030
+
1031
+ presign_ttl : typing.Optional[int]
1032
+ Presign TTL in minutes
1033
+
1034
+ title : typing.Optional[str]
1035
+ Storage title
1036
+
1037
+ description : typing.Optional[str]
1038
+ Storage description
1039
+
1040
+ project : typing.Optional[int]
1041
+ Project ID
1042
+
1043
+ container : typing.Optional[str]
1044
+ Azure blob container
1045
+
1046
+ prefix : typing.Optional[str]
1047
+ Azure blob prefix name
1048
+
1049
+ account_name : typing.Optional[str]
1050
+ Azure Blob account name
1051
+
1052
+ account_key : typing.Optional[str]
1053
+ Azure Blob account key
1054
+
1055
+ request_options : typing.Optional[RequestOptions]
1056
+ Request-specific configuration.
1057
+
1058
+ Returns
1059
+ -------
1060
+ None
1061
+
1062
+ Examples
1063
+ --------
1064
+ import asyncio
1065
+
1066
+ from label_studio_sdk import AsyncLabelStudio
1067
+
1068
+ client = AsyncLabelStudio(
1069
+ api_key="YOUR_API_KEY",
1070
+ )
1071
+
1072
+
1073
+ async def main() -> None:
1074
+ await client.import_storage.azure.validate()
1075
+
1076
+
1077
+ asyncio.run(main())
1078
+ """
1079
+ _response = await self._client_wrapper.httpx_client.request(
1080
+ "api/storages/azure/validate",
1081
+ method="POST",
1082
+ json={
1083
+ "id": id,
1084
+ "regex_filter": regex_filter,
1085
+ "use_blob_urls": use_blob_urls,
1086
+ "presign": presign,
1087
+ "presign_ttl": presign_ttl,
1088
+ "title": title,
1089
+ "description": description,
1090
+ "project": project,
1091
+ "container": container,
1092
+ "prefix": prefix,
1093
+ "account_name": account_name,
1094
+ "account_key": account_key,
1095
+ },
1096
+ headers={
1097
+ "content-type": "application/json",
1098
+ },
1099
+ request_options=request_options,
1100
+ omit=OMIT,
1101
+ )
1102
+ try:
1103
+ if 200 <= _response.status_code < 300:
1104
+ return
1105
+ _response_json = _response.json()
1106
+ except JSONDecodeError:
1107
+ raise ApiError(status_code=_response.status_code, body=_response.text)
1108
+ raise ApiError(status_code=_response.status_code, body=_response_json)