frameio 0.0.28__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.
Files changed (385) hide show
  1. frameio/__init__.py +1158 -0
  2. frameio/account_permissions/__init__.py +4 -0
  3. frameio/account_permissions/client.py +193 -0
  4. frameio/account_permissions/raw_client.py +333 -0
  5. frameio/accounts/__init__.py +4 -0
  6. frameio/accounts/client.py +162 -0
  7. frameio/accounts/raw_client.py +309 -0
  8. frameio/client.py +439 -0
  9. frameio/comments/__init__.py +38 -0
  10. frameio/comments/client.py +654 -0
  11. frameio/comments/raw_client.py +1316 -0
  12. frameio/comments/types/__init__.py +40 -0
  13. frameio/comments/types/comments_show_request_include.py +5 -0
  14. frameio/comments/types/create_comment_params_data.py +33 -0
  15. frameio/comments/types/update_comment_params_data.py +33 -0
  16. frameio/core/__init__.py +122 -0
  17. frameio/core/api_error.py +23 -0
  18. frameio/core/client_wrapper.py +95 -0
  19. frameio/core/custom_pagination.py +152 -0
  20. frameio/core/datetime_utils.py +28 -0
  21. frameio/core/file.py +67 -0
  22. frameio/core/force_multipart.py +18 -0
  23. frameio/core/http_client.py +663 -0
  24. frameio/core/http_response.py +55 -0
  25. frameio/core/http_sse/__init__.py +42 -0
  26. frameio/core/http_sse/_api.py +112 -0
  27. frameio/core/http_sse/_decoders.py +61 -0
  28. frameio/core/http_sse/_exceptions.py +7 -0
  29. frameio/core/http_sse/_models.py +17 -0
  30. frameio/core/jsonable_encoder.py +100 -0
  31. frameio/core/pagination.py +82 -0
  32. frameio/core/pydantic_utilities.py +361 -0
  33. frameio/core/query_encoder.py +58 -0
  34. frameio/core/remove_none_from_dict.py +11 -0
  35. frameio/core/request_options.py +35 -0
  36. frameio/core/serialization.py +276 -0
  37. frameio/core/unchecked_base_model.py +376 -0
  38. frameio/environment.py +7 -0
  39. frameio/errors/__init__.py +53 -0
  40. frameio/errors/bad_request_error.py +11 -0
  41. frameio/errors/forbidden_error.py +11 -0
  42. frameio/errors/not_found_error.py +11 -0
  43. frameio/errors/too_many_requests_error.py +11 -0
  44. frameio/errors/unauthorized_error.py +11 -0
  45. frameio/errors/unprocessable_entity_error.py +10 -0
  46. frameio/files/__init__.py +58 -0
  47. frameio/files/client.py +1171 -0
  48. frameio/files/raw_client.py +2517 -0
  49. frameio/files/types/__init__.py +56 -0
  50. frameio/files/types/file_copy_params_data.py +15 -0
  51. frameio/files/types/file_create_local_upload_params_data.py +20 -0
  52. frameio/files/types/file_create_params_data.py +31 -0
  53. frameio/files/types/file_create_remote_upload_params_data.py +20 -0
  54. frameio/files/types/file_move_params_data.py +15 -0
  55. frameio/files/types/file_update_params_data.py +15 -0
  56. frameio/files/types/files_copy_request_copy_comments.py +5 -0
  57. frameio/folders/__init__.py +39 -0
  58. frameio/folders/client.py +1004 -0
  59. frameio/folders/raw_client.py +2074 -0
  60. frameio/folders/types/__init__.py +42 -0
  61. frameio/folders/types/folder_copy_params_data.py +15 -0
  62. frameio/folders/types/folder_create_params_data.py +15 -0
  63. frameio/folders/types/folder_move_params_data.py +15 -0
  64. frameio/folders/types/folder_update_params_data.py +15 -0
  65. frameio/metadata/__init__.py +37 -0
  66. frameio/metadata/client.py +293 -0
  67. frameio/metadata/raw_client.py +509 -0
  68. frameio/metadata/types/__init__.py +38 -0
  69. frameio/metadata/types/bulk_update_metadata_params_data.py +23 -0
  70. frameio/metadata/types/bulk_update_metadata_params_data_values_item.py +13 -0
  71. frameio/metadata_fields/__init__.py +103 -0
  72. frameio/metadata_fields/client.py +536 -0
  73. frameio/metadata_fields/raw_client.py +996 -0
  74. frameio/metadata_fields/types/__init__.py +105 -0
  75. frameio/metadata_fields/types/create_field_definition_params_data.py +112 -0
  76. frameio/metadata_fields/types/update_field_definition_params_data.py +118 -0
  77. frameio/project_permissions/__init__.py +4 -0
  78. frameio/project_permissions/client.py +426 -0
  79. frameio/project_permissions/raw_client.py +824 -0
  80. frameio/projects/__init__.py +38 -0
  81. frameio/projects/client.py +604 -0
  82. frameio/projects/raw_client.py +1286 -0
  83. frameio/projects/types/__init__.py +40 -0
  84. frameio/projects/types/project_params_data.py +20 -0
  85. frameio/projects/types/project_update_params_data.py +26 -0
  86. frameio/projects/types/project_update_params_data_status.py +5 -0
  87. frameio/py.typed +0 -0
  88. frameio/shares/__init__.py +64 -0
  89. frameio/shares/client.py +1217 -0
  90. frameio/shares/raw_client.py +2511 -0
  91. frameio/shares/types/__init__.py +61 -0
  92. frameio/shares/types/add_asset_params_data.py +15 -0
  93. frameio/shares/types/add_reviewers_to_share_params_data.py +18 -0
  94. frameio/shares/types/add_reviewers_to_share_params_data_reviewers.py +27 -0
  95. frameio/shares/types/create_share_params_data.py +26 -0
  96. frameio/shares/types/remove_reviewer_params_data.py +13 -0
  97. frameio/shares/types/remove_reviewer_params_data_reviewers.py +27 -0
  98. frameio/shares/types/update_share_params_data.py +34 -0
  99. frameio/shares/types/update_share_params_data_access.py +5 -0
  100. frameio/types/__init__.py +983 -0
  101. frameio/types/account.py +70 -0
  102. frameio/types/account_roles_item.py +5 -0
  103. frameio/types/account_user_role.py +23 -0
  104. frameio/types/account_user_role_role.py +5 -0
  105. frameio/types/account_user_roles_response.py +27 -0
  106. frameio/types/accounts_response.py +23 -0
  107. frameio/types/add_asset_response.py +13 -0
  108. frameio/types/add_asset_response_data.py +15 -0
  109. frameio/types/asset_common.py +48 -0
  110. frameio/types/asset_common_type.py +5 -0
  111. frameio/types/asset_common_with_includes.py +58 -0
  112. frameio/types/asset_common_with_includes_type.py +5 -0
  113. frameio/types/asset_include.py +5 -0
  114. frameio/types/asset_share_params.py +39 -0
  115. frameio/types/asset_share_params_access.py +5 -0
  116. frameio/types/asset_with_includes.py +76 -0
  117. frameio/types/assets_with_includes_response.py +23 -0
  118. frameio/types/bad_request.py +13 -0
  119. frameio/types/bad_request_errors_item.py +15 -0
  120. frameio/types/bad_request_errors_item_source.py +12 -0
  121. frameio/types/boolean_value.py +12 -0
  122. frameio/types/children_type.py +3 -0
  123. frameio/types/comment.py +59 -0
  124. frameio/types/comment_include.py +5 -0
  125. frameio/types/comment_response.py +13 -0
  126. frameio/types/comment_with_includes.py +17 -0
  127. frameio/types/comment_with_includes_response.py +13 -0
  128. frameio/types/comments_with_includes_response.py +23 -0
  129. frameio/types/date_definition.py +49 -0
  130. frameio/types/date_definition_field_configuration.py +21 -0
  131. frameio/types/date_definition_field_configuration_display_format.py +7 -0
  132. frameio/types/date_definition_field_configuration_time_format.py +5 -0
  133. frameio/types/date_definition_field_type.py +10 -0
  134. frameio/types/date_definition_params.py +17 -0
  135. frameio/types/date_definition_params_field_configuration.py +23 -0
  136. frameio/types/date_definition_params_field_configuration_display_format.py +7 -0
  137. frameio/types/date_definition_params_field_configuration_time_format.py +7 -0
  138. frameio/types/date_definition_with_includes.py +13 -0
  139. frameio/types/date_value.py +12 -0
  140. frameio/types/email.py +3 -0
  141. frameio/types/empty_json.py +5 -0
  142. frameio/types/field_definition.py +167 -0
  143. frameio/types/field_definition_include.py +5 -0
  144. frameio/types/field_definition_response.py +13 -0
  145. frameio/types/field_definition_with_includes.py +178 -0
  146. frameio/types/field_definitions_with_includes_response.py +27 -0
  147. frameio/types/field_value_common.py +29 -0
  148. frameio/types/file.py +60 -0
  149. frameio/types/file_copy_response.py +13 -0
  150. frameio/types/file_remote_upload_response.py +17 -0
  151. frameio/types/file_response.py +13 -0
  152. frameio/types/file_status.py +5 -0
  153. frameio/types/file_upload_status.py +41 -0
  154. frameio/types/file_upload_status_response.py +13 -0
  155. frameio/types/file_with_includes.py +25 -0
  156. frameio/types/file_with_includes_response.py +13 -0
  157. frameio/types/file_with_includes_status.py +5 -0
  158. frameio/types/file_with_media_links_include.py +19 -0
  159. frameio/types/file_with_upload_urls.py +16 -0
  160. frameio/types/file_with_upload_urls_response.py +13 -0
  161. frameio/types/folder.py +15 -0
  162. frameio/types/folder_copy_response.py +13 -0
  163. frameio/types/folder_response.py +13 -0
  164. frameio/types/folder_with_includes.py +63 -0
  165. frameio/types/folder_with_includes_response.py +13 -0
  166. frameio/types/folders_with_includes_response.py +23 -0
  167. frameio/types/forbidden.py +13 -0
  168. frameio/types/forbidden_errors_item.py +15 -0
  169. frameio/types/forbidden_errors_item_source.py +12 -0
  170. frameio/types/include.py +5 -0
  171. frameio/types/include_total_count.py +3 -0
  172. frameio/types/integer_value.py +12 -0
  173. frameio/types/json_error_response.py +13 -0
  174. frameio/types/json_error_response_errors_item.py +15 -0
  175. frameio/types/json_error_response_errors_item_source.py +12 -0
  176. frameio/types/links.py +22 -0
  177. frameio/types/long_text_definition.py +49 -0
  178. frameio/types/long_text_definition_field_configuration.py +10 -0
  179. frameio/types/long_text_definition_field_type.py +10 -0
  180. frameio/types/long_text_definition_params.py +15 -0
  181. frameio/types/long_text_definition_with_includes.py +13 -0
  182. frameio/types/media_link_common.py +17 -0
  183. frameio/types/media_links_collection.py +24 -0
  184. frameio/types/metadata_field.py +149 -0
  185. frameio/types/metadata_response.py +13 -0
  186. frameio/types/metadata_with_definition.py +21 -0
  187. frameio/types/multi_select_value.py +14 -0
  188. frameio/types/multi_user_value.py +20 -0
  189. frameio/types/multi_user_value_member_options_type.py +5 -0
  190. frameio/types/no_content.py +3 -0
  191. frameio/types/not_found.py +13 -0
  192. frameio/types/not_found_errors_item.py +15 -0
  193. frameio/types/not_found_errors_item_source.py +12 -0
  194. frameio/types/number_definition.py +43 -0
  195. frameio/types/number_definition_field_configuration.py +21 -0
  196. frameio/types/number_definition_field_configuration_number_format.py +7 -0
  197. frameio/types/number_definition_params.py +17 -0
  198. frameio/types/number_definition_params_field_configuration.py +23 -0
  199. frameio/types/number_definition_params_field_configuration_number_format.py +7 -0
  200. frameio/types/number_definition_with_includes.py +13 -0
  201. frameio/types/number_value.py +12 -0
  202. frameio/types/original_media_link.py +16 -0
  203. frameio/types/profile.py +34 -0
  204. frameio/types/profile_response.py +17 -0
  205. frameio/types/project.py +66 -0
  206. frameio/types/project_include.py +5 -0
  207. frameio/types/project_response.py +17 -0
  208. frameio/types/project_status.py +5 -0
  209. frameio/types/project_with_includes.py +18 -0
  210. frameio/types/project_with_includes_response.py +17 -0
  211. frameio/types/projects_with_includes_response.py +27 -0
  212. frameio/types/rating_definition.py +43 -0
  213. frameio/types/rating_definition_field_configuration.py +22 -0
  214. frameio/types/rating_definition_field_configuration_style.py +5 -0
  215. frameio/types/rating_definition_params.py +17 -0
  216. frameio/types/rating_definition_params_field_configuration.py +22 -0
  217. frameio/types/rating_definition_params_field_configuration_style.py +5 -0
  218. frameio/types/rating_definition_with_includes.py +13 -0
  219. frameio/types/remove_asset_response.py +13 -0
  220. frameio/types/remove_asset_response_data.py +15 -0
  221. frameio/types/rendition_media_link.py +19 -0
  222. frameio/types/request_after_opaque_cursor.py +5 -0
  223. frameio/types/request_page_size.py +3 -0
  224. frameio/types/select_definition.py +43 -0
  225. frameio/types/select_definition_field_configuration.py +18 -0
  226. frameio/types/select_definition_field_configuration_options_item.py +22 -0
  227. frameio/types/select_definition_params.py +17 -0
  228. frameio/types/select_definition_params_field_configuration.py +20 -0
  229. frameio/types/select_definition_params_field_configuration_options_item.py +20 -0
  230. frameio/types/select_definition_with_includes.py +13 -0
  231. frameio/types/select_multi_definition.py +49 -0
  232. frameio/types/select_multi_definition_field_configuration.py +18 -0
  233. frameio/types/select_multi_definition_field_configuration_options_item.py +22 -0
  234. frameio/types/select_multi_definition_field_type.py +10 -0
  235. frameio/types/select_multi_definition_params.py +17 -0
  236. frameio/types/select_multi_definition_params_field_configuration.py +20 -0
  237. frameio/types/select_multi_definition_params_field_configuration_options_item.py +20 -0
  238. frameio/types/select_multi_definition_with_includes.py +13 -0
  239. frameio/types/select_option.py +20 -0
  240. frameio/types/select_value.py +14 -0
  241. frameio/types/share.py +66 -0
  242. frameio/types/share_access.py +5 -0
  243. frameio/types/share_response.py +13 -0
  244. frameio/types/share_reviewers_response.py +27 -0
  245. frameio/types/shares_response.py +27 -0
  246. frameio/types/single_user_value.py +20 -0
  247. frameio/types/single_user_value_member_options_type.py +5 -0
  248. frameio/types/text_definition.py +49 -0
  249. frameio/types/text_definition_field_configuration.py +10 -0
  250. frameio/types/text_definition_field_type.py +10 -0
  251. frameio/types/text_definition_params.py +15 -0
  252. frameio/types/text_definition_with_includes.py +13 -0
  253. frameio/types/text_value.py +12 -0
  254. frameio/types/time_stamp.py +5 -0
  255. frameio/types/toggle_definition.py +43 -0
  256. frameio/types/toggle_definition_field_configuration.py +15 -0
  257. frameio/types/toggle_definition_params.py +17 -0
  258. frameio/types/toggle_definition_params_field_configuration.py +15 -0
  259. frameio/types/toggle_definition_with_includes.py +13 -0
  260. frameio/types/too_many_requests.py +13 -0
  261. frameio/types/too_many_requests_errors_item.py +15 -0
  262. frameio/types/too_many_requests_errors_item_source.py +12 -0
  263. frameio/types/unauthorized.py +13 -0
  264. frameio/types/unauthorized_errors_item.py +15 -0
  265. frameio/types/unauthorized_errors_item_source.py +12 -0
  266. frameio/types/unprocessable_entity.py +13 -0
  267. frameio/types/unprocessable_entity_errors_item.py +15 -0
  268. frameio/types/unprocessable_entity_errors_item_source.py +12 -0
  269. frameio/types/update_date_definition_params.py +17 -0
  270. frameio/types/update_date_definition_params_field_configuration.py +25 -0
  271. frameio/types/update_date_definition_params_field_configuration_display_format.py +7 -0
  272. frameio/types/update_date_definition_params_field_configuration_time_format.py +7 -0
  273. frameio/types/update_long_text_definition_params.py +15 -0
  274. frameio/types/update_number_definition_params.py +17 -0
  275. frameio/types/update_number_definition_params_field_configuration.py +25 -0
  276. frameio/types/update_number_definition_params_field_configuration_number_format.py +7 -0
  277. frameio/types/update_rating_definition_params.py +17 -0
  278. frameio/types/update_rating_definition_params_field_configuration.py +24 -0
  279. frameio/types/update_rating_definition_params_field_configuration_style.py +7 -0
  280. frameio/types/update_select_definition_params.py +17 -0
  281. frameio/types/update_select_definition_params_field_configuration.py +20 -0
  282. frameio/types/update_select_definition_params_field_configuration_options_item.py +20 -0
  283. frameio/types/update_select_multi_definition_params.py +19 -0
  284. frameio/types/update_select_multi_definition_params_field_configuration.py +20 -0
  285. frameio/types/update_select_multi_definition_params_field_configuration_options_item.py +20 -0
  286. frameio/types/update_text_definition_params.py +15 -0
  287. frameio/types/update_toggle_definition_params.py +17 -0
  288. frameio/types/update_toggle_definition_params_field_configuration.py +15 -0
  289. frameio/types/update_user_multi_definition_params.py +17 -0
  290. frameio/types/update_user_multi_definition_params_field_configuration.py +25 -0
  291. frameio/types/update_user_multi_definition_params_field_configuration_custom_members_item.py +20 -0
  292. frameio/types/update_user_multi_definition_params_field_configuration_custom_members_item_type.py +7 -0
  293. frameio/types/update_user_multi_definition_params_field_configuration_member_options_type.py +7 -0
  294. frameio/types/update_user_roles_params.py +17 -0
  295. frameio/types/update_user_roles_params_data.py +13 -0
  296. frameio/types/update_user_roles_params_data_role.py +7 -0
  297. frameio/types/update_user_roles_response.py +13 -0
  298. frameio/types/update_user_roles_response_data.py +13 -0
  299. frameio/types/update_user_roles_response_data_role.py +7 -0
  300. frameio/types/update_user_single_definition_params.py +17 -0
  301. frameio/types/update_user_single_definition_params_field_configuration.py +25 -0
  302. frameio/types/update_user_single_definition_params_field_configuration_custom_members_item.py +20 -0
  303. frameio/types/update_user_single_definition_params_field_configuration_custom_members_item_type.py +7 -0
  304. frameio/types/update_user_single_definition_params_field_configuration_member_options_type.py +7 -0
  305. frameio/types/upload_url.py +20 -0
  306. frameio/types/user.py +44 -0
  307. frameio/types/user_multi_definition.py +49 -0
  308. frameio/types/user_multi_definition_field_configuration.py +23 -0
  309. frameio/types/user_multi_definition_field_configuration_custom_members_item.py +20 -0
  310. frameio/types/user_multi_definition_field_configuration_custom_members_item_type.py +7 -0
  311. frameio/types/user_multi_definition_field_configuration_member_options_type.py +7 -0
  312. frameio/types/user_multi_definition_field_type.py +10 -0
  313. frameio/types/user_multi_definition_params.py +17 -0
  314. frameio/types/user_multi_definition_params_field_configuration.py +23 -0
  315. frameio/types/user_multi_definition_params_field_configuration_custom_members_item.py +20 -0
  316. frameio/types/user_multi_definition_params_field_configuration_custom_members_item_type.py +7 -0
  317. frameio/types/user_multi_definition_params_field_configuration_member_options_type.py +7 -0
  318. frameio/types/user_multi_definition_with_includes.py +13 -0
  319. frameio/types/user_role.py +19 -0
  320. frameio/types/user_role_role.py +7 -0
  321. frameio/types/user_roles_response.py +27 -0
  322. frameio/types/user_single_definition.py +49 -0
  323. frameio/types/user_single_definition_field_configuration.py +23 -0
  324. frameio/types/user_single_definition_field_configuration_custom_members_item.py +20 -0
  325. frameio/types/user_single_definition_field_configuration_custom_members_item_type.py +7 -0
  326. frameio/types/user_single_definition_field_configuration_member_options_type.py +7 -0
  327. frameio/types/user_single_definition_field_type.py +10 -0
  328. frameio/types/user_single_definition_params.py +17 -0
  329. frameio/types/user_single_definition_params_field_configuration.py +23 -0
  330. frameio/types/user_single_definition_params_field_configuration_custom_members_item.py +20 -0
  331. frameio/types/user_single_definition_params_field_configuration_custom_members_item_type.py +7 -0
  332. frameio/types/user_single_definition_params_field_configuration_member_options_type.py +7 -0
  333. frameio/types/user_single_definition_with_includes.py +13 -0
  334. frameio/types/user_value.py +18 -0
  335. frameio/types/user_value_type.py +5 -0
  336. frameio/types/uuid_.py +3 -0
  337. frameio/types/version_stack.py +50 -0
  338. frameio/types/version_stack_copy_response.py +13 -0
  339. frameio/types/version_stack_response.py +13 -0
  340. frameio/types/version_stack_with_includes.py +60 -0
  341. frameio/types/version_stack_with_includes_response.py +13 -0
  342. frameio/types/version_stacks_with_includes_response.py +19 -0
  343. frameio/types/webhook.py +36 -0
  344. frameio/types/webhook_create_response.py +17 -0
  345. frameio/types/webhook_create_response_data.py +15 -0
  346. frameio/types/webhook_events.py +5 -0
  347. frameio/types/webhook_response.py +13 -0
  348. frameio/types/webhook_with_includes.py +13 -0
  349. frameio/types/webhook_with_includes_response.py +13 -0
  350. frameio/types/webhooks_with_includes_response.py +23 -0
  351. frameio/types/workspace.py +40 -0
  352. frameio/types/workspace_include.py +5 -0
  353. frameio/types/workspace_params.py +17 -0
  354. frameio/types/workspace_params_data.py +15 -0
  355. frameio/types/workspace_response.py +17 -0
  356. frameio/types/workspace_with_includes.py +13 -0
  357. frameio/types/workspace_with_includes_response.py +17 -0
  358. frameio/types/workspaces_with_includes_response.py +27 -0
  359. frameio/users/__init__.py +4 -0
  360. frameio/users/client.py +100 -0
  361. frameio/users/raw_client.py +234 -0
  362. frameio/version.py +3 -0
  363. frameio/version_stacks/__init__.py +49 -0
  364. frameio/version_stacks/client.py +818 -0
  365. frameio/version_stacks/raw_client.py +1614 -0
  366. frameio/version_stacks/types/__init__.py +47 -0
  367. frameio/version_stacks/types/version_stack_copy_params_data.py +15 -0
  368. frameio/version_stacks/types/version_stack_create_params_data.py +19 -0
  369. frameio/version_stacks/types/version_stack_move_params_data.py +15 -0
  370. frameio/version_stacks/types/version_stacks_show_request_include.py +19 -0
  371. frameio/webhooks/__init__.py +34 -0
  372. frameio/webhooks/client.py +793 -0
  373. frameio/webhooks/raw_client.py +1347 -0
  374. frameio/webhooks/types/__init__.py +38 -0
  375. frameio/webhooks/types/webhook_create_params_data.py +18 -0
  376. frameio/webhooks/types/webhook_update_params_data.py +23 -0
  377. frameio/workspace_permissions/__init__.py +4 -0
  378. frameio/workspace_permissions/client.py +430 -0
  379. frameio/workspace_permissions/raw_client.py +824 -0
  380. frameio/workspaces/__init__.py +4 -0
  381. frameio/workspaces/client.py +563 -0
  382. frameio/workspaces/raw_client.py +1259 -0
  383. frameio-0.0.28.dist-info/METADATA +259 -0
  384. frameio-0.0.28.dist-info/RECORD +385 -0
  385. frameio-0.0.28.dist-info/WHEEL +4 -0
@@ -0,0 +1,1614 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+ from json.decoder import JSONDecodeError
5
+
6
+ from ..core.api_error import ApiError
7
+ from ..core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
8
+ from ..core.http_response import AsyncHttpResponse, HttpResponse
9
+ from ..core.jsonable_encoder import jsonable_encoder
10
+ from ..core.request_options import RequestOptions
11
+ from ..core.serialization import convert_and_respect_annotation_metadata
12
+ from ..core.unchecked_base_model import construct_type
13
+ from ..errors.bad_request_error import BadRequestError
14
+ from ..errors.forbidden_error import ForbiddenError
15
+ from ..errors.not_found_error import NotFoundError
16
+ from ..errors.too_many_requests_error import TooManyRequestsError
17
+ from ..errors.unauthorized_error import UnauthorizedError
18
+ from ..errors.unprocessable_entity_error import UnprocessableEntityError
19
+ from ..types.assets_with_includes_response import AssetsWithIncludesResponse
20
+ from ..types.bad_request import BadRequest
21
+ from ..types.file_with_media_links_include import FileWithMediaLinksInclude
22
+ from ..types.forbidden import Forbidden
23
+ from ..types.include_total_count import IncludeTotalCount
24
+ from ..types.not_found import NotFound
25
+ from ..types.request_after_opaque_cursor import RequestAfterOpaqueCursor
26
+ from ..types.request_page_size import RequestPageSize
27
+ from ..types.too_many_requests import TooManyRequests
28
+ from ..types.unauthorized import Unauthorized
29
+ from ..types.uuid_ import Uuid
30
+ from ..types.version_stack_copy_response import VersionStackCopyResponse
31
+ from ..types.version_stack_response import VersionStackResponse
32
+ from ..types.version_stack_with_includes_response import VersionStackWithIncludesResponse
33
+ from ..types.version_stacks_with_includes_response import VersionStacksWithIncludesResponse
34
+ from .types.version_stack_copy_params_data import VersionStackCopyParamsData
35
+ from .types.version_stack_create_params_data import VersionStackCreateParamsData
36
+ from .types.version_stack_move_params_data import VersionStackMoveParamsData
37
+ from .types.version_stacks_show_request_include import VersionStacksShowRequestInclude
38
+
39
+ # this is used as the default value for optional parameters
40
+ OMIT = typing.cast(typing.Any, ...)
41
+
42
+
43
+ class RawVersionStacksClient:
44
+ def __init__(self, *, client_wrapper: SyncClientWrapper):
45
+ self._client_wrapper = client_wrapper
46
+
47
+ def index(
48
+ self,
49
+ account_id: Uuid,
50
+ version_stack_id: Uuid,
51
+ *,
52
+ include: typing.Optional[FileWithMediaLinksInclude] = None,
53
+ after: typing.Optional[RequestAfterOpaqueCursor] = None,
54
+ page_size: typing.Optional[RequestPageSize] = None,
55
+ include_total_count: typing.Optional[IncludeTotalCount] = None,
56
+ request_options: typing.Optional[RequestOptions] = None,
57
+ ) -> HttpResponse[AssetsWithIncludesResponse]:
58
+ """
59
+ List the children (files) in a given version stack.
60
+ <br>
61
+ Use the `include` query parameter to selectively include additional properties in the response.
62
+ <br>
63
+ Note: if you include `media_links.original` and the user does not have permission to download files
64
+ in the corresponding project, then this endpoint will respond with a `403 Forbidden` error.
65
+ If the content is inaccessible because watermarking is required for this user and isn't supported by
66
+ the requested media_links, then the request will succeed but the unsupported media links will be set to null.
67
+ Similarly, if a requested transcode link does not exist for a particular file (e.g. including
68
+ `media_links.video_h264_180` on a static image file) or transoding process hasn't finished
69
+ (i.e. the file's `status` is "uploaded" rather than "transcoded"), then the a media link will also be set to
70
+ null in the response payload. In short, the client must handle null media links gracefully.
71
+ <br>Rate Limits: 100 calls per 1.00 minute(s) per account_user
72
+
73
+ Parameters
74
+ ----------
75
+ account_id : Uuid
76
+
77
+
78
+ version_stack_id : Uuid
79
+
80
+
81
+ include : typing.Optional[FileWithMediaLinksInclude]
82
+
83
+
84
+ after : typing.Optional[RequestAfterOpaqueCursor]
85
+ Opaque Cursor query param for requests returning paginated results.
86
+ <br/>
87
+ NOTE: this value is auto-generated and included as part of links from a previous response. It is not intended to be human readable.
88
+
89
+ page_size : typing.Optional[RequestPageSize]
90
+
91
+
92
+ include_total_count : typing.Optional[IncludeTotalCount]
93
+
94
+
95
+ request_options : typing.Optional[RequestOptions]
96
+ Request-specific configuration.
97
+
98
+ Returns
99
+ -------
100
+ HttpResponse[AssetsWithIncludesResponse]
101
+ OK
102
+ """
103
+ _response = self._client_wrapper.httpx_client.request(
104
+ f"v4/accounts/{jsonable_encoder(account_id)}/version_stacks/{jsonable_encoder(version_stack_id)}/children",
105
+ method="GET",
106
+ params={
107
+ "include": include,
108
+ "after": after,
109
+ "page_size": page_size,
110
+ "include_total_count": include_total_count,
111
+ },
112
+ request_options=request_options,
113
+ )
114
+ try:
115
+ if 200 <= _response.status_code < 300:
116
+ _data = typing.cast(
117
+ AssetsWithIncludesResponse,
118
+ construct_type(
119
+ type_=AssetsWithIncludesResponse, # type: ignore
120
+ object_=_response.json(),
121
+ ),
122
+ )
123
+ return HttpResponse(response=_response, data=_data)
124
+ if _response.status_code == 400:
125
+ raise BadRequestError(
126
+ headers=dict(_response.headers),
127
+ body=typing.cast(
128
+ BadRequest,
129
+ construct_type(
130
+ type_=BadRequest, # type: ignore
131
+ object_=_response.json(),
132
+ ),
133
+ ),
134
+ )
135
+ if _response.status_code == 401:
136
+ raise UnauthorizedError(
137
+ headers=dict(_response.headers),
138
+ body=typing.cast(
139
+ Unauthorized,
140
+ construct_type(
141
+ type_=Unauthorized, # type: ignore
142
+ object_=_response.json(),
143
+ ),
144
+ ),
145
+ )
146
+ if _response.status_code == 403:
147
+ raise ForbiddenError(
148
+ headers=dict(_response.headers),
149
+ body=typing.cast(
150
+ Forbidden,
151
+ construct_type(
152
+ type_=Forbidden, # type: ignore
153
+ object_=_response.json(),
154
+ ),
155
+ ),
156
+ )
157
+ if _response.status_code == 404:
158
+ raise NotFoundError(
159
+ headers=dict(_response.headers),
160
+ body=typing.cast(
161
+ NotFound,
162
+ construct_type(
163
+ type_=NotFound, # type: ignore
164
+ object_=_response.json(),
165
+ ),
166
+ ),
167
+ )
168
+ if _response.status_code == 422:
169
+ raise UnprocessableEntityError(
170
+ headers=dict(_response.headers),
171
+ body=typing.cast(
172
+ typing.Any,
173
+ construct_type(
174
+ type_=typing.Any, # type: ignore
175
+ object_=_response.json(),
176
+ ),
177
+ ),
178
+ )
179
+ if _response.status_code == 429:
180
+ raise TooManyRequestsError(
181
+ headers=dict(_response.headers),
182
+ body=typing.cast(
183
+ TooManyRequests,
184
+ construct_type(
185
+ type_=TooManyRequests, # type: ignore
186
+ object_=_response.json(),
187
+ ),
188
+ ),
189
+ )
190
+ _response_json = _response.json()
191
+ except JSONDecodeError:
192
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
193
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
194
+
195
+ def show(
196
+ self,
197
+ account_id: Uuid,
198
+ version_stack_id: Uuid,
199
+ *,
200
+ include: typing.Optional[VersionStacksShowRequestInclude] = None,
201
+ request_options: typing.Optional[RequestOptions] = None,
202
+ ) -> HttpResponse[VersionStackWithIncludesResponse]:
203
+ """
204
+ Show version stack details. <br>Rate Limits: 100 calls per 1.00 minute(s) per account_user
205
+
206
+ Parameters
207
+ ----------
208
+ account_id : Uuid
209
+
210
+
211
+ version_stack_id : Uuid
212
+
213
+
214
+ include : typing.Optional[VersionStacksShowRequestInclude]
215
+
216
+
217
+ request_options : typing.Optional[RequestOptions]
218
+ Request-specific configuration.
219
+
220
+ Returns
221
+ -------
222
+ HttpResponse[VersionStackWithIncludesResponse]
223
+ OK
224
+ """
225
+ _response = self._client_wrapper.httpx_client.request(
226
+ f"v4/accounts/{jsonable_encoder(account_id)}/version_stacks/{jsonable_encoder(version_stack_id)}",
227
+ method="GET",
228
+ params={
229
+ "include": include,
230
+ },
231
+ request_options=request_options,
232
+ )
233
+ try:
234
+ if 200 <= _response.status_code < 300:
235
+ _data = typing.cast(
236
+ VersionStackWithIncludesResponse,
237
+ construct_type(
238
+ type_=VersionStackWithIncludesResponse, # type: ignore
239
+ object_=_response.json(),
240
+ ),
241
+ )
242
+ return HttpResponse(response=_response, data=_data)
243
+ if _response.status_code == 400:
244
+ raise BadRequestError(
245
+ headers=dict(_response.headers),
246
+ body=typing.cast(
247
+ BadRequest,
248
+ construct_type(
249
+ type_=BadRequest, # type: ignore
250
+ object_=_response.json(),
251
+ ),
252
+ ),
253
+ )
254
+ if _response.status_code == 401:
255
+ raise UnauthorizedError(
256
+ headers=dict(_response.headers),
257
+ body=typing.cast(
258
+ Unauthorized,
259
+ construct_type(
260
+ type_=Unauthorized, # type: ignore
261
+ object_=_response.json(),
262
+ ),
263
+ ),
264
+ )
265
+ if _response.status_code == 403:
266
+ raise ForbiddenError(
267
+ headers=dict(_response.headers),
268
+ body=typing.cast(
269
+ Forbidden,
270
+ construct_type(
271
+ type_=Forbidden, # type: ignore
272
+ object_=_response.json(),
273
+ ),
274
+ ),
275
+ )
276
+ if _response.status_code == 404:
277
+ raise NotFoundError(
278
+ headers=dict(_response.headers),
279
+ body=typing.cast(
280
+ NotFound,
281
+ construct_type(
282
+ type_=NotFound, # type: ignore
283
+ object_=_response.json(),
284
+ ),
285
+ ),
286
+ )
287
+ if _response.status_code == 422:
288
+ raise UnprocessableEntityError(
289
+ headers=dict(_response.headers),
290
+ body=typing.cast(
291
+ typing.Any,
292
+ construct_type(
293
+ type_=typing.Any, # type: ignore
294
+ object_=_response.json(),
295
+ ),
296
+ ),
297
+ )
298
+ if _response.status_code == 429:
299
+ raise TooManyRequestsError(
300
+ headers=dict(_response.headers),
301
+ body=typing.cast(
302
+ TooManyRequests,
303
+ construct_type(
304
+ type_=TooManyRequests, # type: ignore
305
+ object_=_response.json(),
306
+ ),
307
+ ),
308
+ )
309
+ _response_json = _response.json()
310
+ except JSONDecodeError:
311
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
312
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
313
+
314
+ def copy(
315
+ self,
316
+ account_id: Uuid,
317
+ version_stack_id: Uuid,
318
+ *,
319
+ copy_metadata: typing.Optional[bool] = None,
320
+ data: typing.Optional[VersionStackCopyParamsData] = OMIT,
321
+ request_options: typing.Optional[RequestOptions] = None,
322
+ ) -> HttpResponse[VersionStackCopyResponse]:
323
+ """
324
+ Copy version stack. <br>Rate Limits: 10 calls per 1.00 minute(s) per account_user
325
+
326
+ Parameters
327
+ ----------
328
+ account_id : Uuid
329
+
330
+
331
+ version_stack_id : Uuid
332
+
333
+
334
+ copy_metadata : typing.Optional[bool]
335
+ Whether to copy metadata values along with the version stack
336
+
337
+ data : typing.Optional[VersionStackCopyParamsData]
338
+
339
+ request_options : typing.Optional[RequestOptions]
340
+ Request-specific configuration.
341
+
342
+ Returns
343
+ -------
344
+ HttpResponse[VersionStackCopyResponse]
345
+ OK
346
+ """
347
+ _response = self._client_wrapper.httpx_client.request(
348
+ f"v4/accounts/{jsonable_encoder(account_id)}/version_stacks/{jsonable_encoder(version_stack_id)}/copy",
349
+ method="POST",
350
+ params={
351
+ "copy_metadata": copy_metadata,
352
+ },
353
+ json={
354
+ "data": convert_and_respect_annotation_metadata(
355
+ object_=data, annotation=VersionStackCopyParamsData, direction="write"
356
+ ),
357
+ },
358
+ headers={
359
+ "content-type": "application/json",
360
+ },
361
+ request_options=request_options,
362
+ omit=OMIT,
363
+ )
364
+ try:
365
+ if 200 <= _response.status_code < 300:
366
+ _data = typing.cast(
367
+ VersionStackCopyResponse,
368
+ construct_type(
369
+ type_=VersionStackCopyResponse, # type: ignore
370
+ object_=_response.json(),
371
+ ),
372
+ )
373
+ return HttpResponse(response=_response, data=_data)
374
+ if _response.status_code == 400:
375
+ raise BadRequestError(
376
+ headers=dict(_response.headers),
377
+ body=typing.cast(
378
+ BadRequest,
379
+ construct_type(
380
+ type_=BadRequest, # type: ignore
381
+ object_=_response.json(),
382
+ ),
383
+ ),
384
+ )
385
+ if _response.status_code == 401:
386
+ raise UnauthorizedError(
387
+ headers=dict(_response.headers),
388
+ body=typing.cast(
389
+ Unauthorized,
390
+ construct_type(
391
+ type_=Unauthorized, # type: ignore
392
+ object_=_response.json(),
393
+ ),
394
+ ),
395
+ )
396
+ if _response.status_code == 403:
397
+ raise ForbiddenError(
398
+ headers=dict(_response.headers),
399
+ body=typing.cast(
400
+ Forbidden,
401
+ construct_type(
402
+ type_=Forbidden, # type: ignore
403
+ object_=_response.json(),
404
+ ),
405
+ ),
406
+ )
407
+ if _response.status_code == 404:
408
+ raise NotFoundError(
409
+ headers=dict(_response.headers),
410
+ body=typing.cast(
411
+ NotFound,
412
+ construct_type(
413
+ type_=NotFound, # type: ignore
414
+ object_=_response.json(),
415
+ ),
416
+ ),
417
+ )
418
+ if _response.status_code == 422:
419
+ raise UnprocessableEntityError(
420
+ headers=dict(_response.headers),
421
+ body=typing.cast(
422
+ typing.Any,
423
+ construct_type(
424
+ type_=typing.Any, # type: ignore
425
+ object_=_response.json(),
426
+ ),
427
+ ),
428
+ )
429
+ if _response.status_code == 429:
430
+ raise TooManyRequestsError(
431
+ headers=dict(_response.headers),
432
+ body=typing.cast(
433
+ TooManyRequests,
434
+ construct_type(
435
+ type_=TooManyRequests, # type: ignore
436
+ object_=_response.json(),
437
+ ),
438
+ ),
439
+ )
440
+ _response_json = _response.json()
441
+ except JSONDecodeError:
442
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
443
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
444
+
445
+ def list(
446
+ self,
447
+ account_id: Uuid,
448
+ folder_id: Uuid,
449
+ *,
450
+ include: typing.Optional[FileWithMediaLinksInclude] = None,
451
+ after: typing.Optional[RequestAfterOpaqueCursor] = None,
452
+ page_size: typing.Optional[RequestPageSize] = None,
453
+ include_total_count: typing.Optional[IncludeTotalCount] = None,
454
+ request_options: typing.Optional[RequestOptions] = None,
455
+ ) -> HttpResponse[VersionStacksWithIncludesResponse]:
456
+ """
457
+ List version stacks in a given folder. <br>Rate Limits: 5 calls per 1 second(s) per account_user
458
+
459
+ Parameters
460
+ ----------
461
+ account_id : Uuid
462
+
463
+
464
+ folder_id : Uuid
465
+
466
+
467
+ include : typing.Optional[FileWithMediaLinksInclude]
468
+
469
+
470
+ after : typing.Optional[RequestAfterOpaqueCursor]
471
+ Opaque Cursor query param for requests returning paginated results.
472
+ <br/>
473
+ NOTE: this value is auto-generated and included as part of links from a previous response. It is not intended to be human readable.
474
+
475
+ page_size : typing.Optional[RequestPageSize]
476
+
477
+
478
+ include_total_count : typing.Optional[IncludeTotalCount]
479
+
480
+
481
+ request_options : typing.Optional[RequestOptions]
482
+ Request-specific configuration.
483
+
484
+ Returns
485
+ -------
486
+ HttpResponse[VersionStacksWithIncludesResponse]
487
+ OK
488
+ """
489
+ _response = self._client_wrapper.httpx_client.request(
490
+ f"v4/accounts/{jsonable_encoder(account_id)}/folders/{jsonable_encoder(folder_id)}/version_stacks",
491
+ method="GET",
492
+ params={
493
+ "include": include,
494
+ "after": after,
495
+ "page_size": page_size,
496
+ "include_total_count": include_total_count,
497
+ },
498
+ request_options=request_options,
499
+ )
500
+ try:
501
+ if 200 <= _response.status_code < 300:
502
+ _data = typing.cast(
503
+ VersionStacksWithIncludesResponse,
504
+ construct_type(
505
+ type_=VersionStacksWithIncludesResponse, # type: ignore
506
+ object_=_response.json(),
507
+ ),
508
+ )
509
+ return HttpResponse(response=_response, data=_data)
510
+ if _response.status_code == 400:
511
+ raise BadRequestError(
512
+ headers=dict(_response.headers),
513
+ body=typing.cast(
514
+ BadRequest,
515
+ construct_type(
516
+ type_=BadRequest, # type: ignore
517
+ object_=_response.json(),
518
+ ),
519
+ ),
520
+ )
521
+ if _response.status_code == 401:
522
+ raise UnauthorizedError(
523
+ headers=dict(_response.headers),
524
+ body=typing.cast(
525
+ Unauthorized,
526
+ construct_type(
527
+ type_=Unauthorized, # type: ignore
528
+ object_=_response.json(),
529
+ ),
530
+ ),
531
+ )
532
+ if _response.status_code == 403:
533
+ raise ForbiddenError(
534
+ headers=dict(_response.headers),
535
+ body=typing.cast(
536
+ Forbidden,
537
+ construct_type(
538
+ type_=Forbidden, # type: ignore
539
+ object_=_response.json(),
540
+ ),
541
+ ),
542
+ )
543
+ if _response.status_code == 404:
544
+ raise NotFoundError(
545
+ headers=dict(_response.headers),
546
+ body=typing.cast(
547
+ NotFound,
548
+ construct_type(
549
+ type_=NotFound, # type: ignore
550
+ object_=_response.json(),
551
+ ),
552
+ ),
553
+ )
554
+ if _response.status_code == 422:
555
+ raise UnprocessableEntityError(
556
+ headers=dict(_response.headers),
557
+ body=typing.cast(
558
+ typing.Any,
559
+ construct_type(
560
+ type_=typing.Any, # type: ignore
561
+ object_=_response.json(),
562
+ ),
563
+ ),
564
+ )
565
+ if _response.status_code == 429:
566
+ raise TooManyRequestsError(
567
+ headers=dict(_response.headers),
568
+ body=typing.cast(
569
+ TooManyRequests,
570
+ construct_type(
571
+ type_=TooManyRequests, # type: ignore
572
+ object_=_response.json(),
573
+ ),
574
+ ),
575
+ )
576
+ _response_json = _response.json()
577
+ except JSONDecodeError:
578
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
579
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
580
+
581
+ def create(
582
+ self,
583
+ account_id: Uuid,
584
+ folder_id: Uuid,
585
+ *,
586
+ data: VersionStackCreateParamsData,
587
+ request_options: typing.Optional[RequestOptions] = None,
588
+ ) -> HttpResponse[VersionStackWithIncludesResponse]:
589
+ """
590
+ Create a new Version Stack under the parent folder. <br>Rate Limits: 10 calls per 1.00 minute(s) per account_user
591
+
592
+ Parameters
593
+ ----------
594
+ account_id : Uuid
595
+
596
+
597
+ folder_id : Uuid
598
+
599
+
600
+ data : VersionStackCreateParamsData
601
+
602
+ request_options : typing.Optional[RequestOptions]
603
+ Request-specific configuration.
604
+
605
+ Returns
606
+ -------
607
+ HttpResponse[VersionStackWithIncludesResponse]
608
+ Created
609
+ """
610
+ _response = self._client_wrapper.httpx_client.request(
611
+ f"v4/accounts/{jsonable_encoder(account_id)}/folders/{jsonable_encoder(folder_id)}/version_stacks",
612
+ method="POST",
613
+ json={
614
+ "data": convert_and_respect_annotation_metadata(
615
+ object_=data, annotation=VersionStackCreateParamsData, direction="write"
616
+ ),
617
+ },
618
+ headers={
619
+ "content-type": "application/json",
620
+ },
621
+ request_options=request_options,
622
+ omit=OMIT,
623
+ )
624
+ try:
625
+ if 200 <= _response.status_code < 300:
626
+ _data = typing.cast(
627
+ VersionStackWithIncludesResponse,
628
+ construct_type(
629
+ type_=VersionStackWithIncludesResponse, # type: ignore
630
+ object_=_response.json(),
631
+ ),
632
+ )
633
+ return HttpResponse(response=_response, data=_data)
634
+ if _response.status_code == 400:
635
+ raise BadRequestError(
636
+ headers=dict(_response.headers),
637
+ body=typing.cast(
638
+ BadRequest,
639
+ construct_type(
640
+ type_=BadRequest, # type: ignore
641
+ object_=_response.json(),
642
+ ),
643
+ ),
644
+ )
645
+ if _response.status_code == 401:
646
+ raise UnauthorizedError(
647
+ headers=dict(_response.headers),
648
+ body=typing.cast(
649
+ Unauthorized,
650
+ construct_type(
651
+ type_=Unauthorized, # type: ignore
652
+ object_=_response.json(),
653
+ ),
654
+ ),
655
+ )
656
+ if _response.status_code == 403:
657
+ raise ForbiddenError(
658
+ headers=dict(_response.headers),
659
+ body=typing.cast(
660
+ Forbidden,
661
+ construct_type(
662
+ type_=Forbidden, # type: ignore
663
+ object_=_response.json(),
664
+ ),
665
+ ),
666
+ )
667
+ if _response.status_code == 404:
668
+ raise NotFoundError(
669
+ headers=dict(_response.headers),
670
+ body=typing.cast(
671
+ NotFound,
672
+ construct_type(
673
+ type_=NotFound, # type: ignore
674
+ object_=_response.json(),
675
+ ),
676
+ ),
677
+ )
678
+ if _response.status_code == 422:
679
+ raise UnprocessableEntityError(
680
+ headers=dict(_response.headers),
681
+ body=typing.cast(
682
+ typing.Any,
683
+ construct_type(
684
+ type_=typing.Any, # type: ignore
685
+ object_=_response.json(),
686
+ ),
687
+ ),
688
+ )
689
+ if _response.status_code == 429:
690
+ raise TooManyRequestsError(
691
+ headers=dict(_response.headers),
692
+ body=typing.cast(
693
+ TooManyRequests,
694
+ construct_type(
695
+ type_=TooManyRequests, # type: ignore
696
+ object_=_response.json(),
697
+ ),
698
+ ),
699
+ )
700
+ _response_json = _response.json()
701
+ except JSONDecodeError:
702
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
703
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
704
+
705
+ def move(
706
+ self,
707
+ account_id: Uuid,
708
+ version_stack_id: Uuid,
709
+ *,
710
+ data: VersionStackMoveParamsData,
711
+ request_options: typing.Optional[RequestOptions] = None,
712
+ ) -> HttpResponse[VersionStackResponse]:
713
+ """
714
+ Move version stack to a folder. <br>Rate Limits: 10 calls per 1.00 minute(s) per account_user
715
+
716
+ Parameters
717
+ ----------
718
+ account_id : Uuid
719
+
720
+
721
+ version_stack_id : Uuid
722
+
723
+
724
+ data : VersionStackMoveParamsData
725
+
726
+ request_options : typing.Optional[RequestOptions]
727
+ Request-specific configuration.
728
+
729
+ Returns
730
+ -------
731
+ HttpResponse[VersionStackResponse]
732
+ OK
733
+ """
734
+ _response = self._client_wrapper.httpx_client.request(
735
+ f"v4/accounts/{jsonable_encoder(account_id)}/version_stacks/{jsonable_encoder(version_stack_id)}/move",
736
+ method="PATCH",
737
+ json={
738
+ "data": convert_and_respect_annotation_metadata(
739
+ object_=data, annotation=VersionStackMoveParamsData, direction="write"
740
+ ),
741
+ },
742
+ headers={
743
+ "content-type": "application/json",
744
+ },
745
+ request_options=request_options,
746
+ omit=OMIT,
747
+ )
748
+ try:
749
+ if 200 <= _response.status_code < 300:
750
+ _data = typing.cast(
751
+ VersionStackResponse,
752
+ construct_type(
753
+ type_=VersionStackResponse, # type: ignore
754
+ object_=_response.json(),
755
+ ),
756
+ )
757
+ return HttpResponse(response=_response, data=_data)
758
+ if _response.status_code == 400:
759
+ raise BadRequestError(
760
+ headers=dict(_response.headers),
761
+ body=typing.cast(
762
+ BadRequest,
763
+ construct_type(
764
+ type_=BadRequest, # type: ignore
765
+ object_=_response.json(),
766
+ ),
767
+ ),
768
+ )
769
+ if _response.status_code == 401:
770
+ raise UnauthorizedError(
771
+ headers=dict(_response.headers),
772
+ body=typing.cast(
773
+ Unauthorized,
774
+ construct_type(
775
+ type_=Unauthorized, # type: ignore
776
+ object_=_response.json(),
777
+ ),
778
+ ),
779
+ )
780
+ if _response.status_code == 403:
781
+ raise ForbiddenError(
782
+ headers=dict(_response.headers),
783
+ body=typing.cast(
784
+ Forbidden,
785
+ construct_type(
786
+ type_=Forbidden, # type: ignore
787
+ object_=_response.json(),
788
+ ),
789
+ ),
790
+ )
791
+ if _response.status_code == 404:
792
+ raise NotFoundError(
793
+ headers=dict(_response.headers),
794
+ body=typing.cast(
795
+ NotFound,
796
+ construct_type(
797
+ type_=NotFound, # type: ignore
798
+ object_=_response.json(),
799
+ ),
800
+ ),
801
+ )
802
+ if _response.status_code == 422:
803
+ raise UnprocessableEntityError(
804
+ headers=dict(_response.headers),
805
+ body=typing.cast(
806
+ typing.Any,
807
+ construct_type(
808
+ type_=typing.Any, # type: ignore
809
+ object_=_response.json(),
810
+ ),
811
+ ),
812
+ )
813
+ if _response.status_code == 429:
814
+ raise TooManyRequestsError(
815
+ headers=dict(_response.headers),
816
+ body=typing.cast(
817
+ TooManyRequests,
818
+ construct_type(
819
+ type_=TooManyRequests, # type: ignore
820
+ object_=_response.json(),
821
+ ),
822
+ ),
823
+ )
824
+ _response_json = _response.json()
825
+ except JSONDecodeError:
826
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
827
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
828
+
829
+
830
+ class AsyncRawVersionStacksClient:
831
+ def __init__(self, *, client_wrapper: AsyncClientWrapper):
832
+ self._client_wrapper = client_wrapper
833
+
834
+ async def index(
835
+ self,
836
+ account_id: Uuid,
837
+ version_stack_id: Uuid,
838
+ *,
839
+ include: typing.Optional[FileWithMediaLinksInclude] = None,
840
+ after: typing.Optional[RequestAfterOpaqueCursor] = None,
841
+ page_size: typing.Optional[RequestPageSize] = None,
842
+ include_total_count: typing.Optional[IncludeTotalCount] = None,
843
+ request_options: typing.Optional[RequestOptions] = None,
844
+ ) -> AsyncHttpResponse[AssetsWithIncludesResponse]:
845
+ """
846
+ List the children (files) in a given version stack.
847
+ <br>
848
+ Use the `include` query parameter to selectively include additional properties in the response.
849
+ <br>
850
+ Note: if you include `media_links.original` and the user does not have permission to download files
851
+ in the corresponding project, then this endpoint will respond with a `403 Forbidden` error.
852
+ If the content is inaccessible because watermarking is required for this user and isn't supported by
853
+ the requested media_links, then the request will succeed but the unsupported media links will be set to null.
854
+ Similarly, if a requested transcode link does not exist for a particular file (e.g. including
855
+ `media_links.video_h264_180` on a static image file) or transoding process hasn't finished
856
+ (i.e. the file's `status` is "uploaded" rather than "transcoded"), then the a media link will also be set to
857
+ null in the response payload. In short, the client must handle null media links gracefully.
858
+ <br>Rate Limits: 100 calls per 1.00 minute(s) per account_user
859
+
860
+ Parameters
861
+ ----------
862
+ account_id : Uuid
863
+
864
+
865
+ version_stack_id : Uuid
866
+
867
+
868
+ include : typing.Optional[FileWithMediaLinksInclude]
869
+
870
+
871
+ after : typing.Optional[RequestAfterOpaqueCursor]
872
+ Opaque Cursor query param for requests returning paginated results.
873
+ <br/>
874
+ NOTE: this value is auto-generated and included as part of links from a previous response. It is not intended to be human readable.
875
+
876
+ page_size : typing.Optional[RequestPageSize]
877
+
878
+
879
+ include_total_count : typing.Optional[IncludeTotalCount]
880
+
881
+
882
+ request_options : typing.Optional[RequestOptions]
883
+ Request-specific configuration.
884
+
885
+ Returns
886
+ -------
887
+ AsyncHttpResponse[AssetsWithIncludesResponse]
888
+ OK
889
+ """
890
+ _response = await self._client_wrapper.httpx_client.request(
891
+ f"v4/accounts/{jsonable_encoder(account_id)}/version_stacks/{jsonable_encoder(version_stack_id)}/children",
892
+ method="GET",
893
+ params={
894
+ "include": include,
895
+ "after": after,
896
+ "page_size": page_size,
897
+ "include_total_count": include_total_count,
898
+ },
899
+ request_options=request_options,
900
+ )
901
+ try:
902
+ if 200 <= _response.status_code < 300:
903
+ _data = typing.cast(
904
+ AssetsWithIncludesResponse,
905
+ construct_type(
906
+ type_=AssetsWithIncludesResponse, # type: ignore
907
+ object_=_response.json(),
908
+ ),
909
+ )
910
+ return AsyncHttpResponse(response=_response, data=_data)
911
+ if _response.status_code == 400:
912
+ raise BadRequestError(
913
+ headers=dict(_response.headers),
914
+ body=typing.cast(
915
+ BadRequest,
916
+ construct_type(
917
+ type_=BadRequest, # type: ignore
918
+ object_=_response.json(),
919
+ ),
920
+ ),
921
+ )
922
+ if _response.status_code == 401:
923
+ raise UnauthorizedError(
924
+ headers=dict(_response.headers),
925
+ body=typing.cast(
926
+ Unauthorized,
927
+ construct_type(
928
+ type_=Unauthorized, # type: ignore
929
+ object_=_response.json(),
930
+ ),
931
+ ),
932
+ )
933
+ if _response.status_code == 403:
934
+ raise ForbiddenError(
935
+ headers=dict(_response.headers),
936
+ body=typing.cast(
937
+ Forbidden,
938
+ construct_type(
939
+ type_=Forbidden, # type: ignore
940
+ object_=_response.json(),
941
+ ),
942
+ ),
943
+ )
944
+ if _response.status_code == 404:
945
+ raise NotFoundError(
946
+ headers=dict(_response.headers),
947
+ body=typing.cast(
948
+ NotFound,
949
+ construct_type(
950
+ type_=NotFound, # type: ignore
951
+ object_=_response.json(),
952
+ ),
953
+ ),
954
+ )
955
+ if _response.status_code == 422:
956
+ raise UnprocessableEntityError(
957
+ headers=dict(_response.headers),
958
+ body=typing.cast(
959
+ typing.Any,
960
+ construct_type(
961
+ type_=typing.Any, # type: ignore
962
+ object_=_response.json(),
963
+ ),
964
+ ),
965
+ )
966
+ if _response.status_code == 429:
967
+ raise TooManyRequestsError(
968
+ headers=dict(_response.headers),
969
+ body=typing.cast(
970
+ TooManyRequests,
971
+ construct_type(
972
+ type_=TooManyRequests, # type: ignore
973
+ object_=_response.json(),
974
+ ),
975
+ ),
976
+ )
977
+ _response_json = _response.json()
978
+ except JSONDecodeError:
979
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
980
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
981
+
982
+ async def show(
983
+ self,
984
+ account_id: Uuid,
985
+ version_stack_id: Uuid,
986
+ *,
987
+ include: typing.Optional[VersionStacksShowRequestInclude] = None,
988
+ request_options: typing.Optional[RequestOptions] = None,
989
+ ) -> AsyncHttpResponse[VersionStackWithIncludesResponse]:
990
+ """
991
+ Show version stack details. <br>Rate Limits: 100 calls per 1.00 minute(s) per account_user
992
+
993
+ Parameters
994
+ ----------
995
+ account_id : Uuid
996
+
997
+
998
+ version_stack_id : Uuid
999
+
1000
+
1001
+ include : typing.Optional[VersionStacksShowRequestInclude]
1002
+
1003
+
1004
+ request_options : typing.Optional[RequestOptions]
1005
+ Request-specific configuration.
1006
+
1007
+ Returns
1008
+ -------
1009
+ AsyncHttpResponse[VersionStackWithIncludesResponse]
1010
+ OK
1011
+ """
1012
+ _response = await self._client_wrapper.httpx_client.request(
1013
+ f"v4/accounts/{jsonable_encoder(account_id)}/version_stacks/{jsonable_encoder(version_stack_id)}",
1014
+ method="GET",
1015
+ params={
1016
+ "include": include,
1017
+ },
1018
+ request_options=request_options,
1019
+ )
1020
+ try:
1021
+ if 200 <= _response.status_code < 300:
1022
+ _data = typing.cast(
1023
+ VersionStackWithIncludesResponse,
1024
+ construct_type(
1025
+ type_=VersionStackWithIncludesResponse, # type: ignore
1026
+ object_=_response.json(),
1027
+ ),
1028
+ )
1029
+ return AsyncHttpResponse(response=_response, data=_data)
1030
+ if _response.status_code == 400:
1031
+ raise BadRequestError(
1032
+ headers=dict(_response.headers),
1033
+ body=typing.cast(
1034
+ BadRequest,
1035
+ construct_type(
1036
+ type_=BadRequest, # type: ignore
1037
+ object_=_response.json(),
1038
+ ),
1039
+ ),
1040
+ )
1041
+ if _response.status_code == 401:
1042
+ raise UnauthorizedError(
1043
+ headers=dict(_response.headers),
1044
+ body=typing.cast(
1045
+ Unauthorized,
1046
+ construct_type(
1047
+ type_=Unauthorized, # type: ignore
1048
+ object_=_response.json(),
1049
+ ),
1050
+ ),
1051
+ )
1052
+ if _response.status_code == 403:
1053
+ raise ForbiddenError(
1054
+ headers=dict(_response.headers),
1055
+ body=typing.cast(
1056
+ Forbidden,
1057
+ construct_type(
1058
+ type_=Forbidden, # type: ignore
1059
+ object_=_response.json(),
1060
+ ),
1061
+ ),
1062
+ )
1063
+ if _response.status_code == 404:
1064
+ raise NotFoundError(
1065
+ headers=dict(_response.headers),
1066
+ body=typing.cast(
1067
+ NotFound,
1068
+ construct_type(
1069
+ type_=NotFound, # type: ignore
1070
+ object_=_response.json(),
1071
+ ),
1072
+ ),
1073
+ )
1074
+ if _response.status_code == 422:
1075
+ raise UnprocessableEntityError(
1076
+ headers=dict(_response.headers),
1077
+ body=typing.cast(
1078
+ typing.Any,
1079
+ construct_type(
1080
+ type_=typing.Any, # type: ignore
1081
+ object_=_response.json(),
1082
+ ),
1083
+ ),
1084
+ )
1085
+ if _response.status_code == 429:
1086
+ raise TooManyRequestsError(
1087
+ headers=dict(_response.headers),
1088
+ body=typing.cast(
1089
+ TooManyRequests,
1090
+ construct_type(
1091
+ type_=TooManyRequests, # type: ignore
1092
+ object_=_response.json(),
1093
+ ),
1094
+ ),
1095
+ )
1096
+ _response_json = _response.json()
1097
+ except JSONDecodeError:
1098
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
1099
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
1100
+
1101
+ async def copy(
1102
+ self,
1103
+ account_id: Uuid,
1104
+ version_stack_id: Uuid,
1105
+ *,
1106
+ copy_metadata: typing.Optional[bool] = None,
1107
+ data: typing.Optional[VersionStackCopyParamsData] = OMIT,
1108
+ request_options: typing.Optional[RequestOptions] = None,
1109
+ ) -> AsyncHttpResponse[VersionStackCopyResponse]:
1110
+ """
1111
+ Copy version stack. <br>Rate Limits: 10 calls per 1.00 minute(s) per account_user
1112
+
1113
+ Parameters
1114
+ ----------
1115
+ account_id : Uuid
1116
+
1117
+
1118
+ version_stack_id : Uuid
1119
+
1120
+
1121
+ copy_metadata : typing.Optional[bool]
1122
+ Whether to copy metadata values along with the version stack
1123
+
1124
+ data : typing.Optional[VersionStackCopyParamsData]
1125
+
1126
+ request_options : typing.Optional[RequestOptions]
1127
+ Request-specific configuration.
1128
+
1129
+ Returns
1130
+ -------
1131
+ AsyncHttpResponse[VersionStackCopyResponse]
1132
+ OK
1133
+ """
1134
+ _response = await self._client_wrapper.httpx_client.request(
1135
+ f"v4/accounts/{jsonable_encoder(account_id)}/version_stacks/{jsonable_encoder(version_stack_id)}/copy",
1136
+ method="POST",
1137
+ params={
1138
+ "copy_metadata": copy_metadata,
1139
+ },
1140
+ json={
1141
+ "data": convert_and_respect_annotation_metadata(
1142
+ object_=data, annotation=VersionStackCopyParamsData, direction="write"
1143
+ ),
1144
+ },
1145
+ headers={
1146
+ "content-type": "application/json",
1147
+ },
1148
+ request_options=request_options,
1149
+ omit=OMIT,
1150
+ )
1151
+ try:
1152
+ if 200 <= _response.status_code < 300:
1153
+ _data = typing.cast(
1154
+ VersionStackCopyResponse,
1155
+ construct_type(
1156
+ type_=VersionStackCopyResponse, # type: ignore
1157
+ object_=_response.json(),
1158
+ ),
1159
+ )
1160
+ return AsyncHttpResponse(response=_response, data=_data)
1161
+ if _response.status_code == 400:
1162
+ raise BadRequestError(
1163
+ headers=dict(_response.headers),
1164
+ body=typing.cast(
1165
+ BadRequest,
1166
+ construct_type(
1167
+ type_=BadRequest, # type: ignore
1168
+ object_=_response.json(),
1169
+ ),
1170
+ ),
1171
+ )
1172
+ if _response.status_code == 401:
1173
+ raise UnauthorizedError(
1174
+ headers=dict(_response.headers),
1175
+ body=typing.cast(
1176
+ Unauthorized,
1177
+ construct_type(
1178
+ type_=Unauthorized, # type: ignore
1179
+ object_=_response.json(),
1180
+ ),
1181
+ ),
1182
+ )
1183
+ if _response.status_code == 403:
1184
+ raise ForbiddenError(
1185
+ headers=dict(_response.headers),
1186
+ body=typing.cast(
1187
+ Forbidden,
1188
+ construct_type(
1189
+ type_=Forbidden, # type: ignore
1190
+ object_=_response.json(),
1191
+ ),
1192
+ ),
1193
+ )
1194
+ if _response.status_code == 404:
1195
+ raise NotFoundError(
1196
+ headers=dict(_response.headers),
1197
+ body=typing.cast(
1198
+ NotFound,
1199
+ construct_type(
1200
+ type_=NotFound, # type: ignore
1201
+ object_=_response.json(),
1202
+ ),
1203
+ ),
1204
+ )
1205
+ if _response.status_code == 422:
1206
+ raise UnprocessableEntityError(
1207
+ headers=dict(_response.headers),
1208
+ body=typing.cast(
1209
+ typing.Any,
1210
+ construct_type(
1211
+ type_=typing.Any, # type: ignore
1212
+ object_=_response.json(),
1213
+ ),
1214
+ ),
1215
+ )
1216
+ if _response.status_code == 429:
1217
+ raise TooManyRequestsError(
1218
+ headers=dict(_response.headers),
1219
+ body=typing.cast(
1220
+ TooManyRequests,
1221
+ construct_type(
1222
+ type_=TooManyRequests, # type: ignore
1223
+ object_=_response.json(),
1224
+ ),
1225
+ ),
1226
+ )
1227
+ _response_json = _response.json()
1228
+ except JSONDecodeError:
1229
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
1230
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
1231
+
1232
+ async def list(
1233
+ self,
1234
+ account_id: Uuid,
1235
+ folder_id: Uuid,
1236
+ *,
1237
+ include: typing.Optional[FileWithMediaLinksInclude] = None,
1238
+ after: typing.Optional[RequestAfterOpaqueCursor] = None,
1239
+ page_size: typing.Optional[RequestPageSize] = None,
1240
+ include_total_count: typing.Optional[IncludeTotalCount] = None,
1241
+ request_options: typing.Optional[RequestOptions] = None,
1242
+ ) -> AsyncHttpResponse[VersionStacksWithIncludesResponse]:
1243
+ """
1244
+ List version stacks in a given folder. <br>Rate Limits: 5 calls per 1 second(s) per account_user
1245
+
1246
+ Parameters
1247
+ ----------
1248
+ account_id : Uuid
1249
+
1250
+
1251
+ folder_id : Uuid
1252
+
1253
+
1254
+ include : typing.Optional[FileWithMediaLinksInclude]
1255
+
1256
+
1257
+ after : typing.Optional[RequestAfterOpaqueCursor]
1258
+ Opaque Cursor query param for requests returning paginated results.
1259
+ <br/>
1260
+ NOTE: this value is auto-generated and included as part of links from a previous response. It is not intended to be human readable.
1261
+
1262
+ page_size : typing.Optional[RequestPageSize]
1263
+
1264
+
1265
+ include_total_count : typing.Optional[IncludeTotalCount]
1266
+
1267
+
1268
+ request_options : typing.Optional[RequestOptions]
1269
+ Request-specific configuration.
1270
+
1271
+ Returns
1272
+ -------
1273
+ AsyncHttpResponse[VersionStacksWithIncludesResponse]
1274
+ OK
1275
+ """
1276
+ _response = await self._client_wrapper.httpx_client.request(
1277
+ f"v4/accounts/{jsonable_encoder(account_id)}/folders/{jsonable_encoder(folder_id)}/version_stacks",
1278
+ method="GET",
1279
+ params={
1280
+ "include": include,
1281
+ "after": after,
1282
+ "page_size": page_size,
1283
+ "include_total_count": include_total_count,
1284
+ },
1285
+ request_options=request_options,
1286
+ )
1287
+ try:
1288
+ if 200 <= _response.status_code < 300:
1289
+ _data = typing.cast(
1290
+ VersionStacksWithIncludesResponse,
1291
+ construct_type(
1292
+ type_=VersionStacksWithIncludesResponse, # type: ignore
1293
+ object_=_response.json(),
1294
+ ),
1295
+ )
1296
+ return AsyncHttpResponse(response=_response, data=_data)
1297
+ if _response.status_code == 400:
1298
+ raise BadRequestError(
1299
+ headers=dict(_response.headers),
1300
+ body=typing.cast(
1301
+ BadRequest,
1302
+ construct_type(
1303
+ type_=BadRequest, # type: ignore
1304
+ object_=_response.json(),
1305
+ ),
1306
+ ),
1307
+ )
1308
+ if _response.status_code == 401:
1309
+ raise UnauthorizedError(
1310
+ headers=dict(_response.headers),
1311
+ body=typing.cast(
1312
+ Unauthorized,
1313
+ construct_type(
1314
+ type_=Unauthorized, # type: ignore
1315
+ object_=_response.json(),
1316
+ ),
1317
+ ),
1318
+ )
1319
+ if _response.status_code == 403:
1320
+ raise ForbiddenError(
1321
+ headers=dict(_response.headers),
1322
+ body=typing.cast(
1323
+ Forbidden,
1324
+ construct_type(
1325
+ type_=Forbidden, # type: ignore
1326
+ object_=_response.json(),
1327
+ ),
1328
+ ),
1329
+ )
1330
+ if _response.status_code == 404:
1331
+ raise NotFoundError(
1332
+ headers=dict(_response.headers),
1333
+ body=typing.cast(
1334
+ NotFound,
1335
+ construct_type(
1336
+ type_=NotFound, # type: ignore
1337
+ object_=_response.json(),
1338
+ ),
1339
+ ),
1340
+ )
1341
+ if _response.status_code == 422:
1342
+ raise UnprocessableEntityError(
1343
+ headers=dict(_response.headers),
1344
+ body=typing.cast(
1345
+ typing.Any,
1346
+ construct_type(
1347
+ type_=typing.Any, # type: ignore
1348
+ object_=_response.json(),
1349
+ ),
1350
+ ),
1351
+ )
1352
+ if _response.status_code == 429:
1353
+ raise TooManyRequestsError(
1354
+ headers=dict(_response.headers),
1355
+ body=typing.cast(
1356
+ TooManyRequests,
1357
+ construct_type(
1358
+ type_=TooManyRequests, # type: ignore
1359
+ object_=_response.json(),
1360
+ ),
1361
+ ),
1362
+ )
1363
+ _response_json = _response.json()
1364
+ except JSONDecodeError:
1365
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
1366
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
1367
+
1368
+ async def create(
1369
+ self,
1370
+ account_id: Uuid,
1371
+ folder_id: Uuid,
1372
+ *,
1373
+ data: VersionStackCreateParamsData,
1374
+ request_options: typing.Optional[RequestOptions] = None,
1375
+ ) -> AsyncHttpResponse[VersionStackWithIncludesResponse]:
1376
+ """
1377
+ Create a new Version Stack under the parent folder. <br>Rate Limits: 10 calls per 1.00 minute(s) per account_user
1378
+
1379
+ Parameters
1380
+ ----------
1381
+ account_id : Uuid
1382
+
1383
+
1384
+ folder_id : Uuid
1385
+
1386
+
1387
+ data : VersionStackCreateParamsData
1388
+
1389
+ request_options : typing.Optional[RequestOptions]
1390
+ Request-specific configuration.
1391
+
1392
+ Returns
1393
+ -------
1394
+ AsyncHttpResponse[VersionStackWithIncludesResponse]
1395
+ Created
1396
+ """
1397
+ _response = await self._client_wrapper.httpx_client.request(
1398
+ f"v4/accounts/{jsonable_encoder(account_id)}/folders/{jsonable_encoder(folder_id)}/version_stacks",
1399
+ method="POST",
1400
+ json={
1401
+ "data": convert_and_respect_annotation_metadata(
1402
+ object_=data, annotation=VersionStackCreateParamsData, direction="write"
1403
+ ),
1404
+ },
1405
+ headers={
1406
+ "content-type": "application/json",
1407
+ },
1408
+ request_options=request_options,
1409
+ omit=OMIT,
1410
+ )
1411
+ try:
1412
+ if 200 <= _response.status_code < 300:
1413
+ _data = typing.cast(
1414
+ VersionStackWithIncludesResponse,
1415
+ construct_type(
1416
+ type_=VersionStackWithIncludesResponse, # type: ignore
1417
+ object_=_response.json(),
1418
+ ),
1419
+ )
1420
+ return AsyncHttpResponse(response=_response, data=_data)
1421
+ if _response.status_code == 400:
1422
+ raise BadRequestError(
1423
+ headers=dict(_response.headers),
1424
+ body=typing.cast(
1425
+ BadRequest,
1426
+ construct_type(
1427
+ type_=BadRequest, # type: ignore
1428
+ object_=_response.json(),
1429
+ ),
1430
+ ),
1431
+ )
1432
+ if _response.status_code == 401:
1433
+ raise UnauthorizedError(
1434
+ headers=dict(_response.headers),
1435
+ body=typing.cast(
1436
+ Unauthorized,
1437
+ construct_type(
1438
+ type_=Unauthorized, # type: ignore
1439
+ object_=_response.json(),
1440
+ ),
1441
+ ),
1442
+ )
1443
+ if _response.status_code == 403:
1444
+ raise ForbiddenError(
1445
+ headers=dict(_response.headers),
1446
+ body=typing.cast(
1447
+ Forbidden,
1448
+ construct_type(
1449
+ type_=Forbidden, # type: ignore
1450
+ object_=_response.json(),
1451
+ ),
1452
+ ),
1453
+ )
1454
+ if _response.status_code == 404:
1455
+ raise NotFoundError(
1456
+ headers=dict(_response.headers),
1457
+ body=typing.cast(
1458
+ NotFound,
1459
+ construct_type(
1460
+ type_=NotFound, # type: ignore
1461
+ object_=_response.json(),
1462
+ ),
1463
+ ),
1464
+ )
1465
+ if _response.status_code == 422:
1466
+ raise UnprocessableEntityError(
1467
+ headers=dict(_response.headers),
1468
+ body=typing.cast(
1469
+ typing.Any,
1470
+ construct_type(
1471
+ type_=typing.Any, # type: ignore
1472
+ object_=_response.json(),
1473
+ ),
1474
+ ),
1475
+ )
1476
+ if _response.status_code == 429:
1477
+ raise TooManyRequestsError(
1478
+ headers=dict(_response.headers),
1479
+ body=typing.cast(
1480
+ TooManyRequests,
1481
+ construct_type(
1482
+ type_=TooManyRequests, # type: ignore
1483
+ object_=_response.json(),
1484
+ ),
1485
+ ),
1486
+ )
1487
+ _response_json = _response.json()
1488
+ except JSONDecodeError:
1489
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
1490
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
1491
+
1492
+ async def move(
1493
+ self,
1494
+ account_id: Uuid,
1495
+ version_stack_id: Uuid,
1496
+ *,
1497
+ data: VersionStackMoveParamsData,
1498
+ request_options: typing.Optional[RequestOptions] = None,
1499
+ ) -> AsyncHttpResponse[VersionStackResponse]:
1500
+ """
1501
+ Move version stack to a folder. <br>Rate Limits: 10 calls per 1.00 minute(s) per account_user
1502
+
1503
+ Parameters
1504
+ ----------
1505
+ account_id : Uuid
1506
+
1507
+
1508
+ version_stack_id : Uuid
1509
+
1510
+
1511
+ data : VersionStackMoveParamsData
1512
+
1513
+ request_options : typing.Optional[RequestOptions]
1514
+ Request-specific configuration.
1515
+
1516
+ Returns
1517
+ -------
1518
+ AsyncHttpResponse[VersionStackResponse]
1519
+ OK
1520
+ """
1521
+ _response = await self._client_wrapper.httpx_client.request(
1522
+ f"v4/accounts/{jsonable_encoder(account_id)}/version_stacks/{jsonable_encoder(version_stack_id)}/move",
1523
+ method="PATCH",
1524
+ json={
1525
+ "data": convert_and_respect_annotation_metadata(
1526
+ object_=data, annotation=VersionStackMoveParamsData, direction="write"
1527
+ ),
1528
+ },
1529
+ headers={
1530
+ "content-type": "application/json",
1531
+ },
1532
+ request_options=request_options,
1533
+ omit=OMIT,
1534
+ )
1535
+ try:
1536
+ if 200 <= _response.status_code < 300:
1537
+ _data = typing.cast(
1538
+ VersionStackResponse,
1539
+ construct_type(
1540
+ type_=VersionStackResponse, # type: ignore
1541
+ object_=_response.json(),
1542
+ ),
1543
+ )
1544
+ return AsyncHttpResponse(response=_response, data=_data)
1545
+ if _response.status_code == 400:
1546
+ raise BadRequestError(
1547
+ headers=dict(_response.headers),
1548
+ body=typing.cast(
1549
+ BadRequest,
1550
+ construct_type(
1551
+ type_=BadRequest, # type: ignore
1552
+ object_=_response.json(),
1553
+ ),
1554
+ ),
1555
+ )
1556
+ if _response.status_code == 401:
1557
+ raise UnauthorizedError(
1558
+ headers=dict(_response.headers),
1559
+ body=typing.cast(
1560
+ Unauthorized,
1561
+ construct_type(
1562
+ type_=Unauthorized, # type: ignore
1563
+ object_=_response.json(),
1564
+ ),
1565
+ ),
1566
+ )
1567
+ if _response.status_code == 403:
1568
+ raise ForbiddenError(
1569
+ headers=dict(_response.headers),
1570
+ body=typing.cast(
1571
+ Forbidden,
1572
+ construct_type(
1573
+ type_=Forbidden, # type: ignore
1574
+ object_=_response.json(),
1575
+ ),
1576
+ ),
1577
+ )
1578
+ if _response.status_code == 404:
1579
+ raise NotFoundError(
1580
+ headers=dict(_response.headers),
1581
+ body=typing.cast(
1582
+ NotFound,
1583
+ construct_type(
1584
+ type_=NotFound, # type: ignore
1585
+ object_=_response.json(),
1586
+ ),
1587
+ ),
1588
+ )
1589
+ if _response.status_code == 422:
1590
+ raise UnprocessableEntityError(
1591
+ headers=dict(_response.headers),
1592
+ body=typing.cast(
1593
+ typing.Any,
1594
+ construct_type(
1595
+ type_=typing.Any, # type: ignore
1596
+ object_=_response.json(),
1597
+ ),
1598
+ ),
1599
+ )
1600
+ if _response.status_code == 429:
1601
+ raise TooManyRequestsError(
1602
+ headers=dict(_response.headers),
1603
+ body=typing.cast(
1604
+ TooManyRequests,
1605
+ construct_type(
1606
+ type_=TooManyRequests, # type: ignore
1607
+ object_=_response.json(),
1608
+ ),
1609
+ ),
1610
+ )
1611
+ _response_json = _response.json()
1612
+ except JSONDecodeError:
1613
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
1614
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)