frameio 0.0.23__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 frameio might be problematic. Click here for more details.

Files changed (363) hide show
  1. frameio/__init__.py +1115 -0
  2. frameio/account_permissions/__init__.py +4 -0
  3. frameio/account_permissions/client.py +182 -0
  4. frameio/account_permissions/raw_client.py +301 -0
  5. frameio/accounts/__init__.py +4 -0
  6. frameio/accounts/client.py +151 -0
  7. frameio/accounts/raw_client.py +281 -0
  8. frameio/client.py +439 -0
  9. frameio/comments/__init__.py +34 -0
  10. frameio/comments/client.py +596 -0
  11. frameio/comments/raw_client.py +1252 -0
  12. frameio/comments/types/__init__.py +38 -0
  13. frameio/comments/types/create_comment_params_data.py +25 -0
  14. frameio/comments/types/update_comment_params_data.py +25 -0
  15. frameio/core/__init__.py +110 -0
  16. frameio/core/api_error.py +23 -0
  17. frameio/core/client_wrapper.py +87 -0
  18. frameio/core/datetime_utils.py +28 -0
  19. frameio/core/file.py +67 -0
  20. frameio/core/force_multipart.py +18 -0
  21. frameio/core/http_client.py +543 -0
  22. frameio/core/http_response.py +55 -0
  23. frameio/core/jsonable_encoder.py +100 -0
  24. frameio/core/pagination.py +82 -0
  25. frameio/core/pydantic_utilities.py +258 -0
  26. frameio/core/query_encoder.py +58 -0
  27. frameio/core/remove_none_from_dict.py +11 -0
  28. frameio/core/request_options.py +35 -0
  29. frameio/core/serialization.py +276 -0
  30. frameio/environment.py +7 -0
  31. frameio/errors/__init__.py +53 -0
  32. frameio/errors/bad_request_error.py +11 -0
  33. frameio/errors/forbidden_error.py +11 -0
  34. frameio/errors/not_found_error.py +11 -0
  35. frameio/errors/too_many_requests_error.py +11 -0
  36. frameio/errors/unauthorized_error.py +11 -0
  37. frameio/errors/unprocessable_entity_error.py +10 -0
  38. frameio/files/__init__.py +55 -0
  39. frameio/files/client.py +1136 -0
  40. frameio/files/raw_client.py +2492 -0
  41. frameio/files/types/__init__.py +53 -0
  42. frameio/files/types/file_copy_params_data.py +15 -0
  43. frameio/files/types/file_create_local_upload_params_data.py +20 -0
  44. frameio/files/types/file_create_params_data.py +31 -0
  45. frameio/files/types/file_create_remote_upload_params_data.py +20 -0
  46. frameio/files/types/file_move_params_data.py +15 -0
  47. frameio/files/types/file_update_params_data.py +15 -0
  48. frameio/folders/__init__.py +39 -0
  49. frameio/folders/client.py +988 -0
  50. frameio/folders/raw_client.py +2058 -0
  51. frameio/folders/types/__init__.py +42 -0
  52. frameio/folders/types/folder_copy_params_data.py +15 -0
  53. frameio/folders/types/folder_create_params_data.py +15 -0
  54. frameio/folders/types/folder_move_params_data.py +15 -0
  55. frameio/folders/types/folder_update_params_data.py +15 -0
  56. frameio/metadata/__init__.py +37 -0
  57. frameio/metadata/client.py +291 -0
  58. frameio/metadata/raw_client.py +509 -0
  59. frameio/metadata/types/__init__.py +38 -0
  60. frameio/metadata/types/bulk_update_metadata_params_data.py +23 -0
  61. frameio/metadata/types/bulk_update_metadata_params_data_values_item.py +13 -0
  62. frameio/metadata_fields/__init__.py +103 -0
  63. frameio/metadata_fields/client.py +536 -0
  64. frameio/metadata_fields/raw_client.py +996 -0
  65. frameio/metadata_fields/types/__init__.py +105 -0
  66. frameio/metadata_fields/types/create_field_definition_params_data.py +108 -0
  67. frameio/metadata_fields/types/update_field_definition_params_data.py +114 -0
  68. frameio/project_permissions/__init__.py +4 -0
  69. frameio/project_permissions/client.py +415 -0
  70. frameio/project_permissions/raw_client.py +789 -0
  71. frameio/projects/__init__.py +4 -0
  72. frameio/projects/client.py +582 -0
  73. frameio/projects/raw_client.py +1250 -0
  74. frameio/py.typed +0 -0
  75. frameio/shares/__init__.py +64 -0
  76. frameio/shares/client.py +1192 -0
  77. frameio/shares/raw_client.py +2446 -0
  78. frameio/shares/types/__init__.py +61 -0
  79. frameio/shares/types/add_asset_params_data.py +15 -0
  80. frameio/shares/types/add_reviewers_to_share_params_data.py +18 -0
  81. frameio/shares/types/add_reviewers_to_share_params_data_reviewers.py +27 -0
  82. frameio/shares/types/create_share_params_data.py +25 -0
  83. frameio/shares/types/remove_reviewer_params_data.py +13 -0
  84. frameio/shares/types/remove_reviewer_params_data_reviewers.py +27 -0
  85. frameio/shares/types/update_share_params_data.py +33 -0
  86. frameio/shares/types/update_share_params_data_access.py +5 -0
  87. frameio/types/__init__.py +959 -0
  88. frameio/types/account.py +65 -0
  89. frameio/types/account_roles_item.py +5 -0
  90. frameio/types/account_user_role.py +23 -0
  91. frameio/types/account_user_role_role.py +5 -0
  92. frameio/types/account_user_roles_response.py +27 -0
  93. frameio/types/accounts_response.py +23 -0
  94. frameio/types/add_asset_response.py +13 -0
  95. frameio/types/add_asset_response_data.py +15 -0
  96. frameio/types/asset_common.py +48 -0
  97. frameio/types/asset_common_type.py +5 -0
  98. frameio/types/asset_common_with_includes.py +56 -0
  99. frameio/types/asset_include.py +5 -0
  100. frameio/types/asset_share_params.py +38 -0
  101. frameio/types/asset_share_params_access.py +5 -0
  102. frameio/types/asset_with_includes.py +72 -0
  103. frameio/types/assets_with_includes_response.py +23 -0
  104. frameio/types/bad_request.py +13 -0
  105. frameio/types/bad_request_errors_item.py +15 -0
  106. frameio/types/bad_request_errors_item_source.py +12 -0
  107. frameio/types/boolean_value.py +12 -0
  108. frameio/types/children_type.py +3 -0
  109. frameio/types/comment.py +52 -0
  110. frameio/types/comment_include.py +5 -0
  111. frameio/types/comment_response.py +13 -0
  112. frameio/types/comment_with_includes.py +17 -0
  113. frameio/types/comment_with_includes_response.py +13 -0
  114. frameio/types/comments_with_includes_response.py +23 -0
  115. frameio/types/date_definition.py +43 -0
  116. frameio/types/date_definition_field_configuration.py +21 -0
  117. frameio/types/date_definition_field_configuration_display_format.py +7 -0
  118. frameio/types/date_definition_field_configuration_time_format.py +5 -0
  119. frameio/types/date_definition_params.py +17 -0
  120. frameio/types/date_definition_params_field_configuration.py +23 -0
  121. frameio/types/date_definition_params_field_configuration_display_format.py +7 -0
  122. frameio/types/date_definition_params_field_configuration_time_format.py +7 -0
  123. frameio/types/date_definition_with_includes.py +13 -0
  124. frameio/types/date_value.py +12 -0
  125. frameio/types/email.py +3 -0
  126. frameio/types/field_definition.py +163 -0
  127. frameio/types/field_definition_include.py +5 -0
  128. frameio/types/field_definition_response.py +13 -0
  129. frameio/types/field_definition_with_includes.py +174 -0
  130. frameio/types/field_definitions_with_includes_response.py +27 -0
  131. frameio/types/field_value_common.py +29 -0
  132. frameio/types/file.py +60 -0
  133. frameio/types/file_copy_response.py +13 -0
  134. frameio/types/file_remote_upload_response.py +17 -0
  135. frameio/types/file_response.py +13 -0
  136. frameio/types/file_status.py +5 -0
  137. frameio/types/file_upload_status.py +41 -0
  138. frameio/types/file_upload_status_response.py +13 -0
  139. frameio/types/file_with_includes.py +25 -0
  140. frameio/types/file_with_includes_response.py +13 -0
  141. frameio/types/file_with_includes_status.py +5 -0
  142. frameio/types/file_with_media_links_include.py +19 -0
  143. frameio/types/file_with_upload_urls.py +16 -0
  144. frameio/types/file_with_upload_urls_response.py +13 -0
  145. frameio/types/folder.py +15 -0
  146. frameio/types/folder_copy_response.py +13 -0
  147. frameio/types/folder_response.py +13 -0
  148. frameio/types/folder_with_includes.py +61 -0
  149. frameio/types/folder_with_includes_response.py +13 -0
  150. frameio/types/folders_with_includes_response.py +23 -0
  151. frameio/types/forbidden.py +13 -0
  152. frameio/types/forbidden_errors_item.py +15 -0
  153. frameio/types/forbidden_errors_item_source.py +12 -0
  154. frameio/types/include.py +5 -0
  155. frameio/types/include_total_count.py +3 -0
  156. frameio/types/integer_value.py +12 -0
  157. frameio/types/json_error_response.py +13 -0
  158. frameio/types/json_error_response_errors_item.py +15 -0
  159. frameio/types/json_error_response_errors_item_source.py +12 -0
  160. frameio/types/links.py +22 -0
  161. frameio/types/long_text_definition.py +43 -0
  162. frameio/types/long_text_definition_field_configuration.py +10 -0
  163. frameio/types/long_text_definition_params.py +15 -0
  164. frameio/types/long_text_definition_with_includes.py +13 -0
  165. frameio/types/media_link_common.py +17 -0
  166. frameio/types/media_links_collection.py +23 -0
  167. frameio/types/metadata_field.py +145 -0
  168. frameio/types/metadata_response.py +13 -0
  169. frameio/types/metadata_with_definition.py +21 -0
  170. frameio/types/multi_select_value.py +14 -0
  171. frameio/types/multi_user_value.py +20 -0
  172. frameio/types/multi_user_value_member_options_type.py +5 -0
  173. frameio/types/no_content.py +3 -0
  174. frameio/types/not_found.py +13 -0
  175. frameio/types/not_found_errors_item.py +15 -0
  176. frameio/types/not_found_errors_item_source.py +12 -0
  177. frameio/types/number_definition.py +43 -0
  178. frameio/types/number_definition_field_configuration.py +21 -0
  179. frameio/types/number_definition_field_configuration_number_format.py +7 -0
  180. frameio/types/number_definition_params.py +17 -0
  181. frameio/types/number_definition_params_field_configuration.py +23 -0
  182. frameio/types/number_definition_params_field_configuration_number_format.py +7 -0
  183. frameio/types/number_definition_with_includes.py +13 -0
  184. frameio/types/number_value.py +12 -0
  185. frameio/types/original_media_link.py +16 -0
  186. frameio/types/profile.py +34 -0
  187. frameio/types/profile_response.py +17 -0
  188. frameio/types/project.py +55 -0
  189. frameio/types/project_include.py +5 -0
  190. frameio/types/project_params.py +17 -0
  191. frameio/types/project_params_data.py +15 -0
  192. frameio/types/project_response.py +17 -0
  193. frameio/types/project_with_includes.py +18 -0
  194. frameio/types/project_with_includes_response.py +17 -0
  195. frameio/types/projects_with_includes_response.py +27 -0
  196. frameio/types/rating_definition.py +43 -0
  197. frameio/types/rating_definition_field_configuration.py +22 -0
  198. frameio/types/rating_definition_field_configuration_style.py +5 -0
  199. frameio/types/rating_definition_params.py +17 -0
  200. frameio/types/rating_definition_params_field_configuration.py +22 -0
  201. frameio/types/rating_definition_params_field_configuration_style.py +5 -0
  202. frameio/types/rating_definition_with_includes.py +13 -0
  203. frameio/types/remove_asset_response.py +13 -0
  204. frameio/types/remove_asset_response_data.py +15 -0
  205. frameio/types/rendition_media_link.py +19 -0
  206. frameio/types/request_after_opaque_cursor.py +5 -0
  207. frameio/types/request_page_size.py +3 -0
  208. frameio/types/select_definition.py +43 -0
  209. frameio/types/select_definition_field_configuration.py +18 -0
  210. frameio/types/select_definition_field_configuration_options_item.py +22 -0
  211. frameio/types/select_definition_params.py +17 -0
  212. frameio/types/select_definition_params_field_configuration.py +20 -0
  213. frameio/types/select_definition_params_field_configuration_options_item.py +20 -0
  214. frameio/types/select_definition_with_includes.py +13 -0
  215. frameio/types/select_multi_definition.py +43 -0
  216. frameio/types/select_multi_definition_field_configuration.py +18 -0
  217. frameio/types/select_multi_definition_field_configuration_options_item.py +22 -0
  218. frameio/types/select_multi_definition_params.py +17 -0
  219. frameio/types/select_multi_definition_params_field_configuration.py +20 -0
  220. frameio/types/select_multi_definition_params_field_configuration_options_item.py +20 -0
  221. frameio/types/select_multi_definition_with_includes.py +13 -0
  222. frameio/types/select_option.py +20 -0
  223. frameio/types/select_value.py +14 -0
  224. frameio/types/share.py +66 -0
  225. frameio/types/share_access.py +5 -0
  226. frameio/types/share_response.py +13 -0
  227. frameio/types/share_reviewers_response.py +27 -0
  228. frameio/types/shares_response.py +27 -0
  229. frameio/types/single_user_value.py +20 -0
  230. frameio/types/single_user_value_member_options_type.py +5 -0
  231. frameio/types/text_definition.py +43 -0
  232. frameio/types/text_definition_field_configuration.py +10 -0
  233. frameio/types/text_definition_params.py +15 -0
  234. frameio/types/text_definition_with_includes.py +13 -0
  235. frameio/types/text_value.py +12 -0
  236. frameio/types/toggle_definition.py +43 -0
  237. frameio/types/toggle_definition_field_configuration.py +15 -0
  238. frameio/types/toggle_definition_params.py +17 -0
  239. frameio/types/toggle_definition_params_field_configuration.py +15 -0
  240. frameio/types/toggle_definition_with_includes.py +13 -0
  241. frameio/types/too_many_requests.py +13 -0
  242. frameio/types/too_many_requests_errors_item.py +15 -0
  243. frameio/types/too_many_requests_errors_item_source.py +12 -0
  244. frameio/types/unauthorized.py +13 -0
  245. frameio/types/unauthorized_errors_item.py +15 -0
  246. frameio/types/unauthorized_errors_item_source.py +12 -0
  247. frameio/types/unprocessable_entity.py +13 -0
  248. frameio/types/unprocessable_entity_errors_item.py +15 -0
  249. frameio/types/unprocessable_entity_errors_item_source.py +12 -0
  250. frameio/types/update_date_definition_params.py +17 -0
  251. frameio/types/update_date_definition_params_field_configuration.py +25 -0
  252. frameio/types/update_date_definition_params_field_configuration_display_format.py +7 -0
  253. frameio/types/update_date_definition_params_field_configuration_time_format.py +7 -0
  254. frameio/types/update_long_text_definition_params.py +15 -0
  255. frameio/types/update_number_definition_params.py +17 -0
  256. frameio/types/update_number_definition_params_field_configuration.py +25 -0
  257. frameio/types/update_number_definition_params_field_configuration_number_format.py +7 -0
  258. frameio/types/update_rating_definition_params.py +17 -0
  259. frameio/types/update_rating_definition_params_field_configuration.py +24 -0
  260. frameio/types/update_rating_definition_params_field_configuration_style.py +7 -0
  261. frameio/types/update_select_definition_params.py +17 -0
  262. frameio/types/update_select_definition_params_field_configuration.py +20 -0
  263. frameio/types/update_select_definition_params_field_configuration_options_item.py +20 -0
  264. frameio/types/update_select_multi_definition_params.py +19 -0
  265. frameio/types/update_select_multi_definition_params_field_configuration.py +20 -0
  266. frameio/types/update_select_multi_definition_params_field_configuration_options_item.py +20 -0
  267. frameio/types/update_text_definition_params.py +15 -0
  268. frameio/types/update_toggle_definition_params.py +17 -0
  269. frameio/types/update_toggle_definition_params_field_configuration.py +15 -0
  270. frameio/types/update_user_multi_definition_params.py +17 -0
  271. frameio/types/update_user_multi_definition_params_field_configuration.py +25 -0
  272. frameio/types/update_user_multi_definition_params_field_configuration_custom_members_item.py +20 -0
  273. frameio/types/update_user_multi_definition_params_field_configuration_custom_members_item_type.py +7 -0
  274. frameio/types/update_user_multi_definition_params_field_configuration_member_options_type.py +7 -0
  275. frameio/types/update_user_roles_params.py +17 -0
  276. frameio/types/update_user_roles_params_data.py +13 -0
  277. frameio/types/update_user_roles_params_data_role.py +7 -0
  278. frameio/types/update_user_roles_response.py +13 -0
  279. frameio/types/update_user_roles_response_data.py +13 -0
  280. frameio/types/update_user_roles_response_data_role.py +7 -0
  281. frameio/types/update_user_single_definition_params.py +17 -0
  282. frameio/types/update_user_single_definition_params_field_configuration.py +25 -0
  283. frameio/types/update_user_single_definition_params_field_configuration_custom_members_item.py +20 -0
  284. frameio/types/update_user_single_definition_params_field_configuration_custom_members_item_type.py +7 -0
  285. frameio/types/update_user_single_definition_params_field_configuration_member_options_type.py +7 -0
  286. frameio/types/upload_url.py +20 -0
  287. frameio/types/user.py +44 -0
  288. frameio/types/user_multi_definition.py +43 -0
  289. frameio/types/user_multi_definition_field_configuration.py +23 -0
  290. frameio/types/user_multi_definition_field_configuration_custom_members_item.py +20 -0
  291. frameio/types/user_multi_definition_field_configuration_custom_members_item_type.py +7 -0
  292. frameio/types/user_multi_definition_field_configuration_member_options_type.py +7 -0
  293. frameio/types/user_multi_definition_params.py +17 -0
  294. frameio/types/user_multi_definition_params_field_configuration.py +23 -0
  295. frameio/types/user_multi_definition_params_field_configuration_custom_members_item.py +20 -0
  296. frameio/types/user_multi_definition_params_field_configuration_custom_members_item_type.py +7 -0
  297. frameio/types/user_multi_definition_params_field_configuration_member_options_type.py +7 -0
  298. frameio/types/user_multi_definition_with_includes.py +13 -0
  299. frameio/types/user_role.py +19 -0
  300. frameio/types/user_role_role.py +7 -0
  301. frameio/types/user_roles_response.py +27 -0
  302. frameio/types/user_single_definition.py +43 -0
  303. frameio/types/user_single_definition_field_configuration.py +23 -0
  304. frameio/types/user_single_definition_field_configuration_custom_members_item.py +20 -0
  305. frameio/types/user_single_definition_field_configuration_custom_members_item_type.py +7 -0
  306. frameio/types/user_single_definition_field_configuration_member_options_type.py +7 -0
  307. frameio/types/user_single_definition_params.py +17 -0
  308. frameio/types/user_single_definition_params_field_configuration.py +23 -0
  309. frameio/types/user_single_definition_params_field_configuration_custom_members_item.py +20 -0
  310. frameio/types/user_single_definition_params_field_configuration_custom_members_item_type.py +7 -0
  311. frameio/types/user_single_definition_params_field_configuration_member_options_type.py +7 -0
  312. frameio/types/user_single_definition_with_includes.py +13 -0
  313. frameio/types/user_value.py +18 -0
  314. frameio/types/user_value_type.py +5 -0
  315. frameio/types/uuid_.py +3 -0
  316. frameio/types/version_stack.py +50 -0
  317. frameio/types/version_stack_copy_response.py +13 -0
  318. frameio/types/version_stack_response.py +13 -0
  319. frameio/types/version_stack_with_includes.py +58 -0
  320. frameio/types/version_stack_with_includes_response.py +13 -0
  321. frameio/types/version_stacks_with_includes_response.py +19 -0
  322. frameio/types/webhook.py +36 -0
  323. frameio/types/webhook_create_response.py +17 -0
  324. frameio/types/webhook_create_response_data.py +15 -0
  325. frameio/types/webhook_events.py +5 -0
  326. frameio/types/webhook_response.py +13 -0
  327. frameio/types/webhook_with_includes.py +13 -0
  328. frameio/types/webhook_with_includes_response.py +13 -0
  329. frameio/types/webhooks_with_includes_response.py +23 -0
  330. frameio/types/workspace.py +40 -0
  331. frameio/types/workspace_include.py +5 -0
  332. frameio/types/workspace_params.py +17 -0
  333. frameio/types/workspace_params_data.py +15 -0
  334. frameio/types/workspace_response.py +17 -0
  335. frameio/types/workspace_with_includes.py +13 -0
  336. frameio/types/workspace_with_includes_response.py +17 -0
  337. frameio/types/workspaces_with_includes_response.py +27 -0
  338. frameio/users/__init__.py +4 -0
  339. frameio/users/client.py +100 -0
  340. frameio/users/raw_client.py +234 -0
  341. frameio/version.py +3 -0
  342. frameio/version_stacks/__init__.py +38 -0
  343. frameio/version_stacks/client.py +699 -0
  344. frameio/version_stacks/raw_client.py +1359 -0
  345. frameio/version_stacks/types/__init__.py +40 -0
  346. frameio/version_stacks/types/version_stack_copy_params_data.py +15 -0
  347. frameio/version_stacks/types/version_stack_create_params_data.py +19 -0
  348. frameio/version_stacks/types/version_stack_move_params_data.py +15 -0
  349. frameio/webhooks/__init__.py +34 -0
  350. frameio/webhooks/client.py +782 -0
  351. frameio/webhooks/raw_client.py +1312 -0
  352. frameio/webhooks/types/__init__.py +38 -0
  353. frameio/webhooks/types/webhook_create_params_data.py +18 -0
  354. frameio/webhooks/types/webhook_update_params_data.py +23 -0
  355. frameio/workspace_permissions/__init__.py +4 -0
  356. frameio/workspace_permissions/client.py +419 -0
  357. frameio/workspace_permissions/raw_client.py +789 -0
  358. frameio/workspaces/__init__.py +4 -0
  359. frameio/workspaces/client.py +552 -0
  360. frameio/workspaces/raw_client.py +1226 -0
  361. frameio-0.0.23.dist-info/METADATA +255 -0
  362. frameio-0.0.23.dist-info/RECORD +363 -0
  363. frameio-0.0.23.dist-info/WHEEL +4 -0
@@ -0,0 +1,2492 @@
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.pydantic_utilities import parse_obj_as
11
+ from ..core.request_options import RequestOptions
12
+ from ..core.serialization import convert_and_respect_annotation_metadata
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_copy_response import FileCopyResponse
22
+ from ..types.file_remote_upload_response import FileRemoteUploadResponse
23
+ from ..types.file_response import FileResponse
24
+ from ..types.file_upload_status_response import FileUploadStatusResponse
25
+ from ..types.file_with_includes_response import FileWithIncludesResponse
26
+ from ..types.file_with_media_links_include import FileWithMediaLinksInclude
27
+ from ..types.file_with_upload_urls_response import FileWithUploadUrlsResponse
28
+ from ..types.forbidden import Forbidden
29
+ from ..types.include_total_count import IncludeTotalCount
30
+ from ..types.not_found import NotFound
31
+ from ..types.request_after_opaque_cursor import RequestAfterOpaqueCursor
32
+ from ..types.request_page_size import RequestPageSize
33
+ from ..types.too_many_requests import TooManyRequests
34
+ from ..types.unauthorized import Unauthorized
35
+ from ..types.uuid_ import Uuid
36
+ from .types.file_copy_params_data import FileCopyParamsData
37
+ from .types.file_create_local_upload_params_data import FileCreateLocalUploadParamsData
38
+ from .types.file_create_params_data import FileCreateParamsData
39
+ from .types.file_create_remote_upload_params_data import FileCreateRemoteUploadParamsData
40
+ from .types.file_move_params_data import FileMoveParamsData
41
+ from .types.file_update_params_data import FileUpdateParamsData
42
+
43
+ # this is used as the default value for optional parameters
44
+ OMIT = typing.cast(typing.Any, ...)
45
+
46
+
47
+ class RawFilesClient:
48
+ def __init__(self, *, client_wrapper: SyncClientWrapper):
49
+ self._client_wrapper = client_wrapper
50
+
51
+ def list(
52
+ self,
53
+ account_id: Uuid,
54
+ folder_id: Uuid,
55
+ *,
56
+ include: typing.Optional[FileWithMediaLinksInclude] = None,
57
+ after: typing.Optional[RequestAfterOpaqueCursor] = None,
58
+ page_size: typing.Optional[RequestPageSize] = None,
59
+ include_total_count: typing.Optional[IncludeTotalCount] = None,
60
+ request_options: typing.Optional[RequestOptions] = None,
61
+ ) -> HttpResponse[AssetsWithIncludesResponse]:
62
+ """
63
+ List files in a given folder. <br><br>Rate Limits: 5 calls per 1 second(s) per account
64
+
65
+ Parameters
66
+ ----------
67
+ account_id : Uuid
68
+
69
+
70
+ folder_id : Uuid
71
+
72
+
73
+ include : typing.Optional[FileWithMediaLinksInclude]
74
+
75
+
76
+ after : typing.Optional[RequestAfterOpaqueCursor]
77
+ Opaque Cursor query param for requests returning paginated results.
78
+ <br/>
79
+ NOTE: this value is auto-generated and included as part of links from a previous response. It is not intended to be human readable.
80
+
81
+ page_size : typing.Optional[RequestPageSize]
82
+
83
+
84
+ include_total_count : typing.Optional[IncludeTotalCount]
85
+
86
+
87
+ request_options : typing.Optional[RequestOptions]
88
+ Request-specific configuration.
89
+
90
+ Returns
91
+ -------
92
+ HttpResponse[AssetsWithIncludesResponse]
93
+ OK
94
+ """
95
+ _response = self._client_wrapper.httpx_client.request(
96
+ f"v4/accounts/{jsonable_encoder(account_id)}/folders/{jsonable_encoder(folder_id)}/files",
97
+ method="GET",
98
+ params={
99
+ "include": include,
100
+ "after": after,
101
+ "page_size": page_size,
102
+ "include_total_count": include_total_count,
103
+ },
104
+ request_options=request_options,
105
+ )
106
+ try:
107
+ if 200 <= _response.status_code < 300:
108
+ _data = typing.cast(
109
+ AssetsWithIncludesResponse,
110
+ parse_obj_as(
111
+ type_=AssetsWithIncludesResponse, # type: ignore
112
+ object_=_response.json(),
113
+ ),
114
+ )
115
+ return HttpResponse(response=_response, data=_data)
116
+ if _response.status_code == 400:
117
+ raise BadRequestError(
118
+ headers=dict(_response.headers),
119
+ body=typing.cast(
120
+ BadRequest,
121
+ parse_obj_as(
122
+ type_=BadRequest, # type: ignore
123
+ object_=_response.json(),
124
+ ),
125
+ ),
126
+ )
127
+ if _response.status_code == 401:
128
+ raise UnauthorizedError(
129
+ headers=dict(_response.headers),
130
+ body=typing.cast(
131
+ Unauthorized,
132
+ parse_obj_as(
133
+ type_=Unauthorized, # type: ignore
134
+ object_=_response.json(),
135
+ ),
136
+ ),
137
+ )
138
+ if _response.status_code == 403:
139
+ raise ForbiddenError(
140
+ headers=dict(_response.headers),
141
+ body=typing.cast(
142
+ Forbidden,
143
+ parse_obj_as(
144
+ type_=Forbidden, # type: ignore
145
+ object_=_response.json(),
146
+ ),
147
+ ),
148
+ )
149
+ if _response.status_code == 404:
150
+ raise NotFoundError(
151
+ headers=dict(_response.headers),
152
+ body=typing.cast(
153
+ NotFound,
154
+ parse_obj_as(
155
+ type_=NotFound, # type: ignore
156
+ object_=_response.json(),
157
+ ),
158
+ ),
159
+ )
160
+ if _response.status_code == 422:
161
+ raise UnprocessableEntityError(
162
+ headers=dict(_response.headers),
163
+ body=typing.cast(
164
+ typing.Optional[typing.Any],
165
+ parse_obj_as(
166
+ type_=typing.Optional[typing.Any], # type: ignore
167
+ object_=_response.json(),
168
+ ),
169
+ ),
170
+ )
171
+ if _response.status_code == 429:
172
+ raise TooManyRequestsError(
173
+ headers=dict(_response.headers),
174
+ body=typing.cast(
175
+ TooManyRequests,
176
+ parse_obj_as(
177
+ type_=TooManyRequests, # type: ignore
178
+ object_=_response.json(),
179
+ ),
180
+ ),
181
+ )
182
+ _response_json = _response.json()
183
+ except JSONDecodeError:
184
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
185
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
186
+
187
+ def create(
188
+ self,
189
+ account_id: Uuid,
190
+ folder_id: Uuid,
191
+ *,
192
+ data: FileCreateParamsData,
193
+ request_options: typing.Optional[RequestOptions] = None,
194
+ ) -> HttpResponse[FileWithUploadUrlsResponse]:
195
+ """
196
+ Create new file under parent folder. `Create file (local upload)` and `Create file (remote upload)` have replaced this endpoint. <br><br>Rate Limits: 5 calls per 1 second(s) per account
197
+
198
+ Parameters
199
+ ----------
200
+ account_id : Uuid
201
+
202
+
203
+ folder_id : Uuid
204
+
205
+
206
+ data : FileCreateParamsData
207
+
208
+ request_options : typing.Optional[RequestOptions]
209
+ Request-specific configuration.
210
+
211
+ Returns
212
+ -------
213
+ HttpResponse[FileWithUploadUrlsResponse]
214
+ Created
215
+ """
216
+ _response = self._client_wrapper.httpx_client.request(
217
+ f"v4/accounts/{jsonable_encoder(account_id)}/folders/{jsonable_encoder(folder_id)}/files",
218
+ method="POST",
219
+ json={
220
+ "data": convert_and_respect_annotation_metadata(
221
+ object_=data, annotation=FileCreateParamsData, direction="write"
222
+ ),
223
+ },
224
+ headers={
225
+ "content-type": "application/json",
226
+ },
227
+ request_options=request_options,
228
+ omit=OMIT,
229
+ )
230
+ try:
231
+ if 200 <= _response.status_code < 300:
232
+ _data = typing.cast(
233
+ FileWithUploadUrlsResponse,
234
+ parse_obj_as(
235
+ type_=FileWithUploadUrlsResponse, # type: ignore
236
+ object_=_response.json(),
237
+ ),
238
+ )
239
+ return HttpResponse(response=_response, data=_data)
240
+ if _response.status_code == 400:
241
+ raise BadRequestError(
242
+ headers=dict(_response.headers),
243
+ body=typing.cast(
244
+ BadRequest,
245
+ parse_obj_as(
246
+ type_=BadRequest, # type: ignore
247
+ object_=_response.json(),
248
+ ),
249
+ ),
250
+ )
251
+ if _response.status_code == 401:
252
+ raise UnauthorizedError(
253
+ headers=dict(_response.headers),
254
+ body=typing.cast(
255
+ Unauthorized,
256
+ parse_obj_as(
257
+ type_=Unauthorized, # type: ignore
258
+ object_=_response.json(),
259
+ ),
260
+ ),
261
+ )
262
+ if _response.status_code == 403:
263
+ raise ForbiddenError(
264
+ headers=dict(_response.headers),
265
+ body=typing.cast(
266
+ Forbidden,
267
+ parse_obj_as(
268
+ type_=Forbidden, # type: ignore
269
+ object_=_response.json(),
270
+ ),
271
+ ),
272
+ )
273
+ if _response.status_code == 404:
274
+ raise NotFoundError(
275
+ headers=dict(_response.headers),
276
+ body=typing.cast(
277
+ NotFound,
278
+ parse_obj_as(
279
+ type_=NotFound, # type: ignore
280
+ object_=_response.json(),
281
+ ),
282
+ ),
283
+ )
284
+ if _response.status_code == 422:
285
+ raise UnprocessableEntityError(
286
+ headers=dict(_response.headers),
287
+ body=typing.cast(
288
+ typing.Optional[typing.Any],
289
+ parse_obj_as(
290
+ type_=typing.Optional[typing.Any], # type: ignore
291
+ object_=_response.json(),
292
+ ),
293
+ ),
294
+ )
295
+ if _response.status_code == 429:
296
+ raise TooManyRequestsError(
297
+ headers=dict(_response.headers),
298
+ body=typing.cast(
299
+ TooManyRequests,
300
+ parse_obj_as(
301
+ type_=TooManyRequests, # type: ignore
302
+ object_=_response.json(),
303
+ ),
304
+ ),
305
+ )
306
+ _response_json = _response.json()
307
+ except JSONDecodeError:
308
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
309
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
310
+
311
+ def show(
312
+ self,
313
+ account_id: Uuid,
314
+ file_id: Uuid,
315
+ *,
316
+ include: typing.Optional[FileWithMediaLinksInclude] = None,
317
+ request_options: typing.Optional[RequestOptions] = None,
318
+ ) -> HttpResponse[FileWithIncludesResponse]:
319
+ """
320
+ Show file details.
321
+ <br><br>
322
+ Use the `include` query parameter to selectively include additional properties in the response.
323
+ <br><br>
324
+ Note: if you include `media_links.original` and the user does not have permission to download the file
325
+ then this endpoint will respond with a `403 Forbidden` error. If the content is inaccessible because
326
+ watermarking is required for this user and isn't supported by the requested media_links, then the request will
327
+ succeed but the unsupported media links will be set to null.
328
+ Similarly, if a requested transcode link does not exist for a particular file (e.g. including
329
+ `media_links.video_h264_180` on a static image file) or transoding process hasn't completed
330
+ (i.e. the file's `status` is "uploaded" rather than "transcoded"), then the link will also be set to null in
331
+ the response payload. In short, the client must handle null media links gracefully.
332
+ <br><br>Rate Limits: 5 calls per 1 second(s) per account
333
+
334
+ Parameters
335
+ ----------
336
+ account_id : Uuid
337
+
338
+
339
+ file_id : Uuid
340
+
341
+
342
+ include : typing.Optional[FileWithMediaLinksInclude]
343
+
344
+
345
+ request_options : typing.Optional[RequestOptions]
346
+ Request-specific configuration.
347
+
348
+ Returns
349
+ -------
350
+ HttpResponse[FileWithIncludesResponse]
351
+ OK
352
+ """
353
+ _response = self._client_wrapper.httpx_client.request(
354
+ f"v4/accounts/{jsonable_encoder(account_id)}/files/{jsonable_encoder(file_id)}",
355
+ method="GET",
356
+ params={
357
+ "include": include,
358
+ },
359
+ request_options=request_options,
360
+ )
361
+ try:
362
+ if 200 <= _response.status_code < 300:
363
+ _data = typing.cast(
364
+ FileWithIncludesResponse,
365
+ parse_obj_as(
366
+ type_=FileWithIncludesResponse, # type: ignore
367
+ object_=_response.json(),
368
+ ),
369
+ )
370
+ return HttpResponse(response=_response, data=_data)
371
+ if _response.status_code == 400:
372
+ raise BadRequestError(
373
+ headers=dict(_response.headers),
374
+ body=typing.cast(
375
+ BadRequest,
376
+ parse_obj_as(
377
+ type_=BadRequest, # type: ignore
378
+ object_=_response.json(),
379
+ ),
380
+ ),
381
+ )
382
+ if _response.status_code == 401:
383
+ raise UnauthorizedError(
384
+ headers=dict(_response.headers),
385
+ body=typing.cast(
386
+ Unauthorized,
387
+ parse_obj_as(
388
+ type_=Unauthorized, # type: ignore
389
+ object_=_response.json(),
390
+ ),
391
+ ),
392
+ )
393
+ if _response.status_code == 403:
394
+ raise ForbiddenError(
395
+ headers=dict(_response.headers),
396
+ body=typing.cast(
397
+ Forbidden,
398
+ parse_obj_as(
399
+ type_=Forbidden, # type: ignore
400
+ object_=_response.json(),
401
+ ),
402
+ ),
403
+ )
404
+ if _response.status_code == 404:
405
+ raise NotFoundError(
406
+ headers=dict(_response.headers),
407
+ body=typing.cast(
408
+ NotFound,
409
+ parse_obj_as(
410
+ type_=NotFound, # type: ignore
411
+ object_=_response.json(),
412
+ ),
413
+ ),
414
+ )
415
+ if _response.status_code == 422:
416
+ raise UnprocessableEntityError(
417
+ headers=dict(_response.headers),
418
+ body=typing.cast(
419
+ typing.Optional[typing.Any],
420
+ parse_obj_as(
421
+ type_=typing.Optional[typing.Any], # type: ignore
422
+ object_=_response.json(),
423
+ ),
424
+ ),
425
+ )
426
+ if _response.status_code == 429:
427
+ raise TooManyRequestsError(
428
+ headers=dict(_response.headers),
429
+ body=typing.cast(
430
+ TooManyRequests,
431
+ parse_obj_as(
432
+ type_=TooManyRequests, # type: ignore
433
+ object_=_response.json(),
434
+ ),
435
+ ),
436
+ )
437
+ _response_json = _response.json()
438
+ except JSONDecodeError:
439
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
440
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
441
+
442
+ def delete(
443
+ self, account_id: Uuid, file_id: Uuid, *, request_options: typing.Optional[RequestOptions] = None
444
+ ) -> HttpResponse[None]:
445
+ """
446
+ Delete file by ID. <br><br>Rate Limits: 100 calls per 1.00 minute(s) per account
447
+
448
+ Parameters
449
+ ----------
450
+ account_id : Uuid
451
+
452
+
453
+ file_id : Uuid
454
+
455
+
456
+ request_options : typing.Optional[RequestOptions]
457
+ Request-specific configuration.
458
+
459
+ Returns
460
+ -------
461
+ HttpResponse[None]
462
+ """
463
+ _response = self._client_wrapper.httpx_client.request(
464
+ f"v4/accounts/{jsonable_encoder(account_id)}/files/{jsonable_encoder(file_id)}",
465
+ method="DELETE",
466
+ request_options=request_options,
467
+ )
468
+ try:
469
+ if 200 <= _response.status_code < 300:
470
+ return HttpResponse(response=_response, data=None)
471
+ if _response.status_code == 400:
472
+ raise BadRequestError(
473
+ headers=dict(_response.headers),
474
+ body=typing.cast(
475
+ BadRequest,
476
+ parse_obj_as(
477
+ type_=BadRequest, # type: ignore
478
+ object_=_response.json(),
479
+ ),
480
+ ),
481
+ )
482
+ if _response.status_code == 401:
483
+ raise UnauthorizedError(
484
+ headers=dict(_response.headers),
485
+ body=typing.cast(
486
+ Unauthorized,
487
+ parse_obj_as(
488
+ type_=Unauthorized, # type: ignore
489
+ object_=_response.json(),
490
+ ),
491
+ ),
492
+ )
493
+ if _response.status_code == 403:
494
+ raise ForbiddenError(
495
+ headers=dict(_response.headers),
496
+ body=typing.cast(
497
+ Forbidden,
498
+ parse_obj_as(
499
+ type_=Forbidden, # type: ignore
500
+ object_=_response.json(),
501
+ ),
502
+ ),
503
+ )
504
+ if _response.status_code == 404:
505
+ raise NotFoundError(
506
+ headers=dict(_response.headers),
507
+ body=typing.cast(
508
+ NotFound,
509
+ parse_obj_as(
510
+ type_=NotFound, # type: ignore
511
+ object_=_response.json(),
512
+ ),
513
+ ),
514
+ )
515
+ if _response.status_code == 422:
516
+ raise UnprocessableEntityError(
517
+ headers=dict(_response.headers),
518
+ body=typing.cast(
519
+ typing.Optional[typing.Any],
520
+ parse_obj_as(
521
+ type_=typing.Optional[typing.Any], # type: ignore
522
+ object_=_response.json(),
523
+ ),
524
+ ),
525
+ )
526
+ if _response.status_code == 429:
527
+ raise TooManyRequestsError(
528
+ headers=dict(_response.headers),
529
+ body=typing.cast(
530
+ TooManyRequests,
531
+ parse_obj_as(
532
+ type_=TooManyRequests, # type: ignore
533
+ object_=_response.json(),
534
+ ),
535
+ ),
536
+ )
537
+ _response_json = _response.json()
538
+ except JSONDecodeError:
539
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
540
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
541
+
542
+ def update(
543
+ self,
544
+ account_id: Uuid,
545
+ file_id: Uuid,
546
+ *,
547
+ data: FileUpdateParamsData,
548
+ request_options: typing.Optional[RequestOptions] = None,
549
+ ) -> HttpResponse[FileResponse]:
550
+ """
551
+ Update file details. <br><br>Rate Limits: 100 calls per 1.00 minute(s) per account
552
+
553
+ Parameters
554
+ ----------
555
+ account_id : Uuid
556
+
557
+
558
+ file_id : Uuid
559
+
560
+
561
+ data : FileUpdateParamsData
562
+
563
+ request_options : typing.Optional[RequestOptions]
564
+ Request-specific configuration.
565
+
566
+ Returns
567
+ -------
568
+ HttpResponse[FileResponse]
569
+ OK
570
+ """
571
+ _response = self._client_wrapper.httpx_client.request(
572
+ f"v4/accounts/{jsonable_encoder(account_id)}/files/{jsonable_encoder(file_id)}",
573
+ method="PATCH",
574
+ json={
575
+ "data": convert_and_respect_annotation_metadata(
576
+ object_=data, annotation=FileUpdateParamsData, direction="write"
577
+ ),
578
+ },
579
+ headers={
580
+ "content-type": "application/json",
581
+ },
582
+ request_options=request_options,
583
+ omit=OMIT,
584
+ )
585
+ try:
586
+ if 200 <= _response.status_code < 300:
587
+ _data = typing.cast(
588
+ FileResponse,
589
+ parse_obj_as(
590
+ type_=FileResponse, # type: ignore
591
+ object_=_response.json(),
592
+ ),
593
+ )
594
+ return HttpResponse(response=_response, data=_data)
595
+ if _response.status_code == 400:
596
+ raise BadRequestError(
597
+ headers=dict(_response.headers),
598
+ body=typing.cast(
599
+ BadRequest,
600
+ parse_obj_as(
601
+ type_=BadRequest, # type: ignore
602
+ object_=_response.json(),
603
+ ),
604
+ ),
605
+ )
606
+ if _response.status_code == 401:
607
+ raise UnauthorizedError(
608
+ headers=dict(_response.headers),
609
+ body=typing.cast(
610
+ Unauthorized,
611
+ parse_obj_as(
612
+ type_=Unauthorized, # type: ignore
613
+ object_=_response.json(),
614
+ ),
615
+ ),
616
+ )
617
+ if _response.status_code == 403:
618
+ raise ForbiddenError(
619
+ headers=dict(_response.headers),
620
+ body=typing.cast(
621
+ Forbidden,
622
+ parse_obj_as(
623
+ type_=Forbidden, # type: ignore
624
+ object_=_response.json(),
625
+ ),
626
+ ),
627
+ )
628
+ if _response.status_code == 404:
629
+ raise NotFoundError(
630
+ headers=dict(_response.headers),
631
+ body=typing.cast(
632
+ NotFound,
633
+ parse_obj_as(
634
+ type_=NotFound, # type: ignore
635
+ object_=_response.json(),
636
+ ),
637
+ ),
638
+ )
639
+ if _response.status_code == 422:
640
+ raise UnprocessableEntityError(
641
+ headers=dict(_response.headers),
642
+ body=typing.cast(
643
+ typing.Optional[typing.Any],
644
+ parse_obj_as(
645
+ type_=typing.Optional[typing.Any], # type: ignore
646
+ object_=_response.json(),
647
+ ),
648
+ ),
649
+ )
650
+ if _response.status_code == 429:
651
+ raise TooManyRequestsError(
652
+ headers=dict(_response.headers),
653
+ body=typing.cast(
654
+ TooManyRequests,
655
+ parse_obj_as(
656
+ type_=TooManyRequests, # type: ignore
657
+ object_=_response.json(),
658
+ ),
659
+ ),
660
+ )
661
+ _response_json = _response.json()
662
+ except JSONDecodeError:
663
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
664
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
665
+
666
+ def copy(
667
+ self,
668
+ account_id: Uuid,
669
+ file_id: Uuid,
670
+ *,
671
+ data: typing.Optional[FileCopyParamsData] = OMIT,
672
+ request_options: typing.Optional[RequestOptions] = None,
673
+ ) -> HttpResponse[FileCopyResponse]:
674
+ """
675
+ Copy file. <br><br>Rate Limits: 100 calls per 1.00 minute(s) per account
676
+
677
+ Parameters
678
+ ----------
679
+ account_id : Uuid
680
+
681
+
682
+ file_id : Uuid
683
+
684
+
685
+ data : typing.Optional[FileCopyParamsData]
686
+
687
+ request_options : typing.Optional[RequestOptions]
688
+ Request-specific configuration.
689
+
690
+ Returns
691
+ -------
692
+ HttpResponse[FileCopyResponse]
693
+ OK
694
+ """
695
+ _response = self._client_wrapper.httpx_client.request(
696
+ f"v4/accounts/{jsonable_encoder(account_id)}/files/{jsonable_encoder(file_id)}/copy",
697
+ method="POST",
698
+ json={
699
+ "data": convert_and_respect_annotation_metadata(
700
+ object_=data, annotation=FileCopyParamsData, direction="write"
701
+ ),
702
+ },
703
+ headers={
704
+ "content-type": "application/json",
705
+ },
706
+ request_options=request_options,
707
+ omit=OMIT,
708
+ )
709
+ try:
710
+ if 200 <= _response.status_code < 300:
711
+ _data = typing.cast(
712
+ FileCopyResponse,
713
+ parse_obj_as(
714
+ type_=FileCopyResponse, # type: ignore
715
+ object_=_response.json(),
716
+ ),
717
+ )
718
+ return HttpResponse(response=_response, data=_data)
719
+ if _response.status_code == 400:
720
+ raise BadRequestError(
721
+ headers=dict(_response.headers),
722
+ body=typing.cast(
723
+ BadRequest,
724
+ parse_obj_as(
725
+ type_=BadRequest, # type: ignore
726
+ object_=_response.json(),
727
+ ),
728
+ ),
729
+ )
730
+ if _response.status_code == 401:
731
+ raise UnauthorizedError(
732
+ headers=dict(_response.headers),
733
+ body=typing.cast(
734
+ Unauthorized,
735
+ parse_obj_as(
736
+ type_=Unauthorized, # type: ignore
737
+ object_=_response.json(),
738
+ ),
739
+ ),
740
+ )
741
+ if _response.status_code == 403:
742
+ raise ForbiddenError(
743
+ headers=dict(_response.headers),
744
+ body=typing.cast(
745
+ Forbidden,
746
+ parse_obj_as(
747
+ type_=Forbidden, # type: ignore
748
+ object_=_response.json(),
749
+ ),
750
+ ),
751
+ )
752
+ if _response.status_code == 404:
753
+ raise NotFoundError(
754
+ headers=dict(_response.headers),
755
+ body=typing.cast(
756
+ NotFound,
757
+ parse_obj_as(
758
+ type_=NotFound, # type: ignore
759
+ object_=_response.json(),
760
+ ),
761
+ ),
762
+ )
763
+ if _response.status_code == 422:
764
+ raise UnprocessableEntityError(
765
+ headers=dict(_response.headers),
766
+ body=typing.cast(
767
+ typing.Optional[typing.Any],
768
+ parse_obj_as(
769
+ type_=typing.Optional[typing.Any], # type: ignore
770
+ object_=_response.json(),
771
+ ),
772
+ ),
773
+ )
774
+ if _response.status_code == 429:
775
+ raise TooManyRequestsError(
776
+ headers=dict(_response.headers),
777
+ body=typing.cast(
778
+ TooManyRequests,
779
+ parse_obj_as(
780
+ type_=TooManyRequests, # type: ignore
781
+ object_=_response.json(),
782
+ ),
783
+ ),
784
+ )
785
+ _response_json = _response.json()
786
+ except JSONDecodeError:
787
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
788
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
789
+
790
+ def create_remote_upload(
791
+ self,
792
+ account_id: Uuid,
793
+ folder_id: Uuid,
794
+ *,
795
+ data: FileCreateRemoteUploadParamsData,
796
+ request_options: typing.Optional[RequestOptions] = None,
797
+ ) -> HttpResponse[FileRemoteUploadResponse]:
798
+ """
799
+ Create new file under parent folder through remote upload. <br><br>Rate Limits: 5 calls per 1 second(s) per account
800
+
801
+ Parameters
802
+ ----------
803
+ account_id : Uuid
804
+
805
+
806
+ folder_id : Uuid
807
+
808
+
809
+ data : FileCreateRemoteUploadParamsData
810
+
811
+ request_options : typing.Optional[RequestOptions]
812
+ Request-specific configuration.
813
+
814
+ Returns
815
+ -------
816
+ HttpResponse[FileRemoteUploadResponse]
817
+ Accepted
818
+ """
819
+ _response = self._client_wrapper.httpx_client.request(
820
+ f"v4/accounts/{jsonable_encoder(account_id)}/folders/{jsonable_encoder(folder_id)}/files/remote_upload",
821
+ method="POST",
822
+ json={
823
+ "data": convert_and_respect_annotation_metadata(
824
+ object_=data, annotation=FileCreateRemoteUploadParamsData, direction="write"
825
+ ),
826
+ },
827
+ headers={
828
+ "content-type": "application/json",
829
+ },
830
+ request_options=request_options,
831
+ omit=OMIT,
832
+ )
833
+ try:
834
+ if 200 <= _response.status_code < 300:
835
+ _data = typing.cast(
836
+ FileRemoteUploadResponse,
837
+ parse_obj_as(
838
+ type_=FileRemoteUploadResponse, # type: ignore
839
+ object_=_response.json(),
840
+ ),
841
+ )
842
+ return HttpResponse(response=_response, data=_data)
843
+ if _response.status_code == 400:
844
+ raise BadRequestError(
845
+ headers=dict(_response.headers),
846
+ body=typing.cast(
847
+ BadRequest,
848
+ parse_obj_as(
849
+ type_=BadRequest, # type: ignore
850
+ object_=_response.json(),
851
+ ),
852
+ ),
853
+ )
854
+ if _response.status_code == 401:
855
+ raise UnauthorizedError(
856
+ headers=dict(_response.headers),
857
+ body=typing.cast(
858
+ Unauthorized,
859
+ parse_obj_as(
860
+ type_=Unauthorized, # type: ignore
861
+ object_=_response.json(),
862
+ ),
863
+ ),
864
+ )
865
+ if _response.status_code == 403:
866
+ raise ForbiddenError(
867
+ headers=dict(_response.headers),
868
+ body=typing.cast(
869
+ Forbidden,
870
+ parse_obj_as(
871
+ type_=Forbidden, # type: ignore
872
+ object_=_response.json(),
873
+ ),
874
+ ),
875
+ )
876
+ if _response.status_code == 404:
877
+ raise NotFoundError(
878
+ headers=dict(_response.headers),
879
+ body=typing.cast(
880
+ NotFound,
881
+ parse_obj_as(
882
+ type_=NotFound, # type: ignore
883
+ object_=_response.json(),
884
+ ),
885
+ ),
886
+ )
887
+ if _response.status_code == 422:
888
+ raise UnprocessableEntityError(
889
+ headers=dict(_response.headers),
890
+ body=typing.cast(
891
+ typing.Optional[typing.Any],
892
+ parse_obj_as(
893
+ type_=typing.Optional[typing.Any], # type: ignore
894
+ object_=_response.json(),
895
+ ),
896
+ ),
897
+ )
898
+ if _response.status_code == 429:
899
+ raise TooManyRequestsError(
900
+ headers=dict(_response.headers),
901
+ body=typing.cast(
902
+ TooManyRequests,
903
+ parse_obj_as(
904
+ type_=TooManyRequests, # type: ignore
905
+ object_=_response.json(),
906
+ ),
907
+ ),
908
+ )
909
+ _response_json = _response.json()
910
+ except JSONDecodeError:
911
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
912
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
913
+
914
+ def move(
915
+ self,
916
+ account_id: Uuid,
917
+ file_id: Uuid,
918
+ *,
919
+ data: FileMoveParamsData,
920
+ request_options: typing.Optional[RequestOptions] = None,
921
+ ) -> HttpResponse[FileResponse]:
922
+ """
923
+ Move file to a folder or version_stack. <br><br>Rate Limits: 100 calls per 1.00 minute(s) per account
924
+
925
+ Parameters
926
+ ----------
927
+ account_id : Uuid
928
+
929
+
930
+ file_id : Uuid
931
+
932
+
933
+ data : FileMoveParamsData
934
+
935
+ request_options : typing.Optional[RequestOptions]
936
+ Request-specific configuration.
937
+
938
+ Returns
939
+ -------
940
+ HttpResponse[FileResponse]
941
+ OK
942
+ """
943
+ _response = self._client_wrapper.httpx_client.request(
944
+ f"v4/accounts/{jsonable_encoder(account_id)}/files/{jsonable_encoder(file_id)}/move",
945
+ method="PATCH",
946
+ json={
947
+ "data": convert_and_respect_annotation_metadata(
948
+ object_=data, annotation=FileMoveParamsData, direction="write"
949
+ ),
950
+ },
951
+ headers={
952
+ "content-type": "application/json",
953
+ },
954
+ request_options=request_options,
955
+ omit=OMIT,
956
+ )
957
+ try:
958
+ if 200 <= _response.status_code < 300:
959
+ _data = typing.cast(
960
+ FileResponse,
961
+ parse_obj_as(
962
+ type_=FileResponse, # type: ignore
963
+ object_=_response.json(),
964
+ ),
965
+ )
966
+ return HttpResponse(response=_response, data=_data)
967
+ if _response.status_code == 400:
968
+ raise BadRequestError(
969
+ headers=dict(_response.headers),
970
+ body=typing.cast(
971
+ BadRequest,
972
+ parse_obj_as(
973
+ type_=BadRequest, # type: ignore
974
+ object_=_response.json(),
975
+ ),
976
+ ),
977
+ )
978
+ if _response.status_code == 401:
979
+ raise UnauthorizedError(
980
+ headers=dict(_response.headers),
981
+ body=typing.cast(
982
+ Unauthorized,
983
+ parse_obj_as(
984
+ type_=Unauthorized, # type: ignore
985
+ object_=_response.json(),
986
+ ),
987
+ ),
988
+ )
989
+ if _response.status_code == 403:
990
+ raise ForbiddenError(
991
+ headers=dict(_response.headers),
992
+ body=typing.cast(
993
+ Forbidden,
994
+ parse_obj_as(
995
+ type_=Forbidden, # type: ignore
996
+ object_=_response.json(),
997
+ ),
998
+ ),
999
+ )
1000
+ if _response.status_code == 404:
1001
+ raise NotFoundError(
1002
+ headers=dict(_response.headers),
1003
+ body=typing.cast(
1004
+ NotFound,
1005
+ parse_obj_as(
1006
+ type_=NotFound, # type: ignore
1007
+ object_=_response.json(),
1008
+ ),
1009
+ ),
1010
+ )
1011
+ if _response.status_code == 422:
1012
+ raise UnprocessableEntityError(
1013
+ headers=dict(_response.headers),
1014
+ body=typing.cast(
1015
+ typing.Optional[typing.Any],
1016
+ parse_obj_as(
1017
+ type_=typing.Optional[typing.Any], # type: ignore
1018
+ object_=_response.json(),
1019
+ ),
1020
+ ),
1021
+ )
1022
+ if _response.status_code == 429:
1023
+ raise TooManyRequestsError(
1024
+ headers=dict(_response.headers),
1025
+ body=typing.cast(
1026
+ TooManyRequests,
1027
+ parse_obj_as(
1028
+ type_=TooManyRequests, # type: ignore
1029
+ object_=_response.json(),
1030
+ ),
1031
+ ),
1032
+ )
1033
+ _response_json = _response.json()
1034
+ except JSONDecodeError:
1035
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
1036
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
1037
+
1038
+ def create_local_upload(
1039
+ self,
1040
+ account_id: Uuid,
1041
+ folder_id: Uuid,
1042
+ *,
1043
+ data: FileCreateLocalUploadParamsData,
1044
+ request_options: typing.Optional[RequestOptions] = None,
1045
+ ) -> HttpResponse[FileWithUploadUrlsResponse]:
1046
+ """
1047
+ Create new file under parent folder through local upload. <br><br>Rate Limits: 5 calls per 1 second(s) per account
1048
+
1049
+ Parameters
1050
+ ----------
1051
+ account_id : Uuid
1052
+
1053
+
1054
+ folder_id : Uuid
1055
+
1056
+
1057
+ data : FileCreateLocalUploadParamsData
1058
+
1059
+ request_options : typing.Optional[RequestOptions]
1060
+ Request-specific configuration.
1061
+
1062
+ Returns
1063
+ -------
1064
+ HttpResponse[FileWithUploadUrlsResponse]
1065
+ Created
1066
+ """
1067
+ _response = self._client_wrapper.httpx_client.request(
1068
+ f"v4/accounts/{jsonable_encoder(account_id)}/folders/{jsonable_encoder(folder_id)}/files/local_upload",
1069
+ method="POST",
1070
+ json={
1071
+ "data": convert_and_respect_annotation_metadata(
1072
+ object_=data, annotation=FileCreateLocalUploadParamsData, direction="write"
1073
+ ),
1074
+ },
1075
+ headers={
1076
+ "content-type": "application/json",
1077
+ },
1078
+ request_options=request_options,
1079
+ omit=OMIT,
1080
+ )
1081
+ try:
1082
+ if 200 <= _response.status_code < 300:
1083
+ _data = typing.cast(
1084
+ FileWithUploadUrlsResponse,
1085
+ parse_obj_as(
1086
+ type_=FileWithUploadUrlsResponse, # type: ignore
1087
+ object_=_response.json(),
1088
+ ),
1089
+ )
1090
+ return HttpResponse(response=_response, data=_data)
1091
+ if _response.status_code == 400:
1092
+ raise BadRequestError(
1093
+ headers=dict(_response.headers),
1094
+ body=typing.cast(
1095
+ BadRequest,
1096
+ parse_obj_as(
1097
+ type_=BadRequest, # type: ignore
1098
+ object_=_response.json(),
1099
+ ),
1100
+ ),
1101
+ )
1102
+ if _response.status_code == 401:
1103
+ raise UnauthorizedError(
1104
+ headers=dict(_response.headers),
1105
+ body=typing.cast(
1106
+ Unauthorized,
1107
+ parse_obj_as(
1108
+ type_=Unauthorized, # type: ignore
1109
+ object_=_response.json(),
1110
+ ),
1111
+ ),
1112
+ )
1113
+ if _response.status_code == 403:
1114
+ raise ForbiddenError(
1115
+ headers=dict(_response.headers),
1116
+ body=typing.cast(
1117
+ Forbidden,
1118
+ parse_obj_as(
1119
+ type_=Forbidden, # type: ignore
1120
+ object_=_response.json(),
1121
+ ),
1122
+ ),
1123
+ )
1124
+ if _response.status_code == 404:
1125
+ raise NotFoundError(
1126
+ headers=dict(_response.headers),
1127
+ body=typing.cast(
1128
+ NotFound,
1129
+ parse_obj_as(
1130
+ type_=NotFound, # type: ignore
1131
+ object_=_response.json(),
1132
+ ),
1133
+ ),
1134
+ )
1135
+ if _response.status_code == 422:
1136
+ raise UnprocessableEntityError(
1137
+ headers=dict(_response.headers),
1138
+ body=typing.cast(
1139
+ typing.Optional[typing.Any],
1140
+ parse_obj_as(
1141
+ type_=typing.Optional[typing.Any], # type: ignore
1142
+ object_=_response.json(),
1143
+ ),
1144
+ ),
1145
+ )
1146
+ if _response.status_code == 429:
1147
+ raise TooManyRequestsError(
1148
+ headers=dict(_response.headers),
1149
+ body=typing.cast(
1150
+ TooManyRequests,
1151
+ parse_obj_as(
1152
+ type_=TooManyRequests, # type: ignore
1153
+ object_=_response.json(),
1154
+ ),
1155
+ ),
1156
+ )
1157
+ _response_json = _response.json()
1158
+ except JSONDecodeError:
1159
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
1160
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
1161
+
1162
+ def show_file_upload_status(
1163
+ self, account_id: Uuid, file_id: Uuid, *, request_options: typing.Optional[RequestOptions] = None
1164
+ ) -> HttpResponse[FileUploadStatusResponse]:
1165
+ """
1166
+ Show file upload status details. <br><br>Rate Limits: 5 calls per 1 second(s) per account
1167
+
1168
+ Parameters
1169
+ ----------
1170
+ account_id : Uuid
1171
+
1172
+
1173
+ file_id : Uuid
1174
+
1175
+
1176
+ request_options : typing.Optional[RequestOptions]
1177
+ Request-specific configuration.
1178
+
1179
+ Returns
1180
+ -------
1181
+ HttpResponse[FileUploadStatusResponse]
1182
+ OK
1183
+ """
1184
+ _response = self._client_wrapper.httpx_client.request(
1185
+ f"v4/accounts/{jsonable_encoder(account_id)}/files/{jsonable_encoder(file_id)}/status",
1186
+ method="GET",
1187
+ request_options=request_options,
1188
+ )
1189
+ try:
1190
+ if 200 <= _response.status_code < 300:
1191
+ _data = typing.cast(
1192
+ FileUploadStatusResponse,
1193
+ parse_obj_as(
1194
+ type_=FileUploadStatusResponse, # type: ignore
1195
+ object_=_response.json(),
1196
+ ),
1197
+ )
1198
+ return HttpResponse(response=_response, data=_data)
1199
+ if _response.status_code == 400:
1200
+ raise BadRequestError(
1201
+ headers=dict(_response.headers),
1202
+ body=typing.cast(
1203
+ BadRequest,
1204
+ parse_obj_as(
1205
+ type_=BadRequest, # type: ignore
1206
+ object_=_response.json(),
1207
+ ),
1208
+ ),
1209
+ )
1210
+ if _response.status_code == 401:
1211
+ raise UnauthorizedError(
1212
+ headers=dict(_response.headers),
1213
+ body=typing.cast(
1214
+ Unauthorized,
1215
+ parse_obj_as(
1216
+ type_=Unauthorized, # type: ignore
1217
+ object_=_response.json(),
1218
+ ),
1219
+ ),
1220
+ )
1221
+ if _response.status_code == 403:
1222
+ raise ForbiddenError(
1223
+ headers=dict(_response.headers),
1224
+ body=typing.cast(
1225
+ Forbidden,
1226
+ parse_obj_as(
1227
+ type_=Forbidden, # type: ignore
1228
+ object_=_response.json(),
1229
+ ),
1230
+ ),
1231
+ )
1232
+ if _response.status_code == 404:
1233
+ raise NotFoundError(
1234
+ headers=dict(_response.headers),
1235
+ body=typing.cast(
1236
+ NotFound,
1237
+ parse_obj_as(
1238
+ type_=NotFound, # type: ignore
1239
+ object_=_response.json(),
1240
+ ),
1241
+ ),
1242
+ )
1243
+ if _response.status_code == 422:
1244
+ raise UnprocessableEntityError(
1245
+ headers=dict(_response.headers),
1246
+ body=typing.cast(
1247
+ typing.Optional[typing.Any],
1248
+ parse_obj_as(
1249
+ type_=typing.Optional[typing.Any], # type: ignore
1250
+ object_=_response.json(),
1251
+ ),
1252
+ ),
1253
+ )
1254
+ if _response.status_code == 429:
1255
+ raise TooManyRequestsError(
1256
+ headers=dict(_response.headers),
1257
+ body=typing.cast(
1258
+ TooManyRequests,
1259
+ parse_obj_as(
1260
+ type_=TooManyRequests, # type: ignore
1261
+ object_=_response.json(),
1262
+ ),
1263
+ ),
1264
+ )
1265
+ _response_json = _response.json()
1266
+ except JSONDecodeError:
1267
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
1268
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
1269
+
1270
+
1271
+ class AsyncRawFilesClient:
1272
+ def __init__(self, *, client_wrapper: AsyncClientWrapper):
1273
+ self._client_wrapper = client_wrapper
1274
+
1275
+ async def list(
1276
+ self,
1277
+ account_id: Uuid,
1278
+ folder_id: Uuid,
1279
+ *,
1280
+ include: typing.Optional[FileWithMediaLinksInclude] = None,
1281
+ after: typing.Optional[RequestAfterOpaqueCursor] = None,
1282
+ page_size: typing.Optional[RequestPageSize] = None,
1283
+ include_total_count: typing.Optional[IncludeTotalCount] = None,
1284
+ request_options: typing.Optional[RequestOptions] = None,
1285
+ ) -> AsyncHttpResponse[AssetsWithIncludesResponse]:
1286
+ """
1287
+ List files in a given folder. <br><br>Rate Limits: 5 calls per 1 second(s) per account
1288
+
1289
+ Parameters
1290
+ ----------
1291
+ account_id : Uuid
1292
+
1293
+
1294
+ folder_id : Uuid
1295
+
1296
+
1297
+ include : typing.Optional[FileWithMediaLinksInclude]
1298
+
1299
+
1300
+ after : typing.Optional[RequestAfterOpaqueCursor]
1301
+ Opaque Cursor query param for requests returning paginated results.
1302
+ <br/>
1303
+ NOTE: this value is auto-generated and included as part of links from a previous response. It is not intended to be human readable.
1304
+
1305
+ page_size : typing.Optional[RequestPageSize]
1306
+
1307
+
1308
+ include_total_count : typing.Optional[IncludeTotalCount]
1309
+
1310
+
1311
+ request_options : typing.Optional[RequestOptions]
1312
+ Request-specific configuration.
1313
+
1314
+ Returns
1315
+ -------
1316
+ AsyncHttpResponse[AssetsWithIncludesResponse]
1317
+ OK
1318
+ """
1319
+ _response = await self._client_wrapper.httpx_client.request(
1320
+ f"v4/accounts/{jsonable_encoder(account_id)}/folders/{jsonable_encoder(folder_id)}/files",
1321
+ method="GET",
1322
+ params={
1323
+ "include": include,
1324
+ "after": after,
1325
+ "page_size": page_size,
1326
+ "include_total_count": include_total_count,
1327
+ },
1328
+ request_options=request_options,
1329
+ )
1330
+ try:
1331
+ if 200 <= _response.status_code < 300:
1332
+ _data = typing.cast(
1333
+ AssetsWithIncludesResponse,
1334
+ parse_obj_as(
1335
+ type_=AssetsWithIncludesResponse, # type: ignore
1336
+ object_=_response.json(),
1337
+ ),
1338
+ )
1339
+ return AsyncHttpResponse(response=_response, data=_data)
1340
+ if _response.status_code == 400:
1341
+ raise BadRequestError(
1342
+ headers=dict(_response.headers),
1343
+ body=typing.cast(
1344
+ BadRequest,
1345
+ parse_obj_as(
1346
+ type_=BadRequest, # type: ignore
1347
+ object_=_response.json(),
1348
+ ),
1349
+ ),
1350
+ )
1351
+ if _response.status_code == 401:
1352
+ raise UnauthorizedError(
1353
+ headers=dict(_response.headers),
1354
+ body=typing.cast(
1355
+ Unauthorized,
1356
+ parse_obj_as(
1357
+ type_=Unauthorized, # type: ignore
1358
+ object_=_response.json(),
1359
+ ),
1360
+ ),
1361
+ )
1362
+ if _response.status_code == 403:
1363
+ raise ForbiddenError(
1364
+ headers=dict(_response.headers),
1365
+ body=typing.cast(
1366
+ Forbidden,
1367
+ parse_obj_as(
1368
+ type_=Forbidden, # type: ignore
1369
+ object_=_response.json(),
1370
+ ),
1371
+ ),
1372
+ )
1373
+ if _response.status_code == 404:
1374
+ raise NotFoundError(
1375
+ headers=dict(_response.headers),
1376
+ body=typing.cast(
1377
+ NotFound,
1378
+ parse_obj_as(
1379
+ type_=NotFound, # type: ignore
1380
+ object_=_response.json(),
1381
+ ),
1382
+ ),
1383
+ )
1384
+ if _response.status_code == 422:
1385
+ raise UnprocessableEntityError(
1386
+ headers=dict(_response.headers),
1387
+ body=typing.cast(
1388
+ typing.Optional[typing.Any],
1389
+ parse_obj_as(
1390
+ type_=typing.Optional[typing.Any], # type: ignore
1391
+ object_=_response.json(),
1392
+ ),
1393
+ ),
1394
+ )
1395
+ if _response.status_code == 429:
1396
+ raise TooManyRequestsError(
1397
+ headers=dict(_response.headers),
1398
+ body=typing.cast(
1399
+ TooManyRequests,
1400
+ parse_obj_as(
1401
+ type_=TooManyRequests, # type: ignore
1402
+ object_=_response.json(),
1403
+ ),
1404
+ ),
1405
+ )
1406
+ _response_json = _response.json()
1407
+ except JSONDecodeError:
1408
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
1409
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
1410
+
1411
+ async def create(
1412
+ self,
1413
+ account_id: Uuid,
1414
+ folder_id: Uuid,
1415
+ *,
1416
+ data: FileCreateParamsData,
1417
+ request_options: typing.Optional[RequestOptions] = None,
1418
+ ) -> AsyncHttpResponse[FileWithUploadUrlsResponse]:
1419
+ """
1420
+ Create new file under parent folder. `Create file (local upload)` and `Create file (remote upload)` have replaced this endpoint. <br><br>Rate Limits: 5 calls per 1 second(s) per account
1421
+
1422
+ Parameters
1423
+ ----------
1424
+ account_id : Uuid
1425
+
1426
+
1427
+ folder_id : Uuid
1428
+
1429
+
1430
+ data : FileCreateParamsData
1431
+
1432
+ request_options : typing.Optional[RequestOptions]
1433
+ Request-specific configuration.
1434
+
1435
+ Returns
1436
+ -------
1437
+ AsyncHttpResponse[FileWithUploadUrlsResponse]
1438
+ Created
1439
+ """
1440
+ _response = await self._client_wrapper.httpx_client.request(
1441
+ f"v4/accounts/{jsonable_encoder(account_id)}/folders/{jsonable_encoder(folder_id)}/files",
1442
+ method="POST",
1443
+ json={
1444
+ "data": convert_and_respect_annotation_metadata(
1445
+ object_=data, annotation=FileCreateParamsData, direction="write"
1446
+ ),
1447
+ },
1448
+ headers={
1449
+ "content-type": "application/json",
1450
+ },
1451
+ request_options=request_options,
1452
+ omit=OMIT,
1453
+ )
1454
+ try:
1455
+ if 200 <= _response.status_code < 300:
1456
+ _data = typing.cast(
1457
+ FileWithUploadUrlsResponse,
1458
+ parse_obj_as(
1459
+ type_=FileWithUploadUrlsResponse, # type: ignore
1460
+ object_=_response.json(),
1461
+ ),
1462
+ )
1463
+ return AsyncHttpResponse(response=_response, data=_data)
1464
+ if _response.status_code == 400:
1465
+ raise BadRequestError(
1466
+ headers=dict(_response.headers),
1467
+ body=typing.cast(
1468
+ BadRequest,
1469
+ parse_obj_as(
1470
+ type_=BadRequest, # type: ignore
1471
+ object_=_response.json(),
1472
+ ),
1473
+ ),
1474
+ )
1475
+ if _response.status_code == 401:
1476
+ raise UnauthorizedError(
1477
+ headers=dict(_response.headers),
1478
+ body=typing.cast(
1479
+ Unauthorized,
1480
+ parse_obj_as(
1481
+ type_=Unauthorized, # type: ignore
1482
+ object_=_response.json(),
1483
+ ),
1484
+ ),
1485
+ )
1486
+ if _response.status_code == 403:
1487
+ raise ForbiddenError(
1488
+ headers=dict(_response.headers),
1489
+ body=typing.cast(
1490
+ Forbidden,
1491
+ parse_obj_as(
1492
+ type_=Forbidden, # type: ignore
1493
+ object_=_response.json(),
1494
+ ),
1495
+ ),
1496
+ )
1497
+ if _response.status_code == 404:
1498
+ raise NotFoundError(
1499
+ headers=dict(_response.headers),
1500
+ body=typing.cast(
1501
+ NotFound,
1502
+ parse_obj_as(
1503
+ type_=NotFound, # type: ignore
1504
+ object_=_response.json(),
1505
+ ),
1506
+ ),
1507
+ )
1508
+ if _response.status_code == 422:
1509
+ raise UnprocessableEntityError(
1510
+ headers=dict(_response.headers),
1511
+ body=typing.cast(
1512
+ typing.Optional[typing.Any],
1513
+ parse_obj_as(
1514
+ type_=typing.Optional[typing.Any], # type: ignore
1515
+ object_=_response.json(),
1516
+ ),
1517
+ ),
1518
+ )
1519
+ if _response.status_code == 429:
1520
+ raise TooManyRequestsError(
1521
+ headers=dict(_response.headers),
1522
+ body=typing.cast(
1523
+ TooManyRequests,
1524
+ parse_obj_as(
1525
+ type_=TooManyRequests, # type: ignore
1526
+ object_=_response.json(),
1527
+ ),
1528
+ ),
1529
+ )
1530
+ _response_json = _response.json()
1531
+ except JSONDecodeError:
1532
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
1533
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
1534
+
1535
+ async def show(
1536
+ self,
1537
+ account_id: Uuid,
1538
+ file_id: Uuid,
1539
+ *,
1540
+ include: typing.Optional[FileWithMediaLinksInclude] = None,
1541
+ request_options: typing.Optional[RequestOptions] = None,
1542
+ ) -> AsyncHttpResponse[FileWithIncludesResponse]:
1543
+ """
1544
+ Show file details.
1545
+ <br><br>
1546
+ Use the `include` query parameter to selectively include additional properties in the response.
1547
+ <br><br>
1548
+ Note: if you include `media_links.original` and the user does not have permission to download the file
1549
+ then this endpoint will respond with a `403 Forbidden` error. If the content is inaccessible because
1550
+ watermarking is required for this user and isn't supported by the requested media_links, then the request will
1551
+ succeed but the unsupported media links will be set to null.
1552
+ Similarly, if a requested transcode link does not exist for a particular file (e.g. including
1553
+ `media_links.video_h264_180` on a static image file) or transoding process hasn't completed
1554
+ (i.e. the file's `status` is "uploaded" rather than "transcoded"), then the link will also be set to null in
1555
+ the response payload. In short, the client must handle null media links gracefully.
1556
+ <br><br>Rate Limits: 5 calls per 1 second(s) per account
1557
+
1558
+ Parameters
1559
+ ----------
1560
+ account_id : Uuid
1561
+
1562
+
1563
+ file_id : Uuid
1564
+
1565
+
1566
+ include : typing.Optional[FileWithMediaLinksInclude]
1567
+
1568
+
1569
+ request_options : typing.Optional[RequestOptions]
1570
+ Request-specific configuration.
1571
+
1572
+ Returns
1573
+ -------
1574
+ AsyncHttpResponse[FileWithIncludesResponse]
1575
+ OK
1576
+ """
1577
+ _response = await self._client_wrapper.httpx_client.request(
1578
+ f"v4/accounts/{jsonable_encoder(account_id)}/files/{jsonable_encoder(file_id)}",
1579
+ method="GET",
1580
+ params={
1581
+ "include": include,
1582
+ },
1583
+ request_options=request_options,
1584
+ )
1585
+ try:
1586
+ if 200 <= _response.status_code < 300:
1587
+ _data = typing.cast(
1588
+ FileWithIncludesResponse,
1589
+ parse_obj_as(
1590
+ type_=FileWithIncludesResponse, # type: ignore
1591
+ object_=_response.json(),
1592
+ ),
1593
+ )
1594
+ return AsyncHttpResponse(response=_response, data=_data)
1595
+ if _response.status_code == 400:
1596
+ raise BadRequestError(
1597
+ headers=dict(_response.headers),
1598
+ body=typing.cast(
1599
+ BadRequest,
1600
+ parse_obj_as(
1601
+ type_=BadRequest, # type: ignore
1602
+ object_=_response.json(),
1603
+ ),
1604
+ ),
1605
+ )
1606
+ if _response.status_code == 401:
1607
+ raise UnauthorizedError(
1608
+ headers=dict(_response.headers),
1609
+ body=typing.cast(
1610
+ Unauthorized,
1611
+ parse_obj_as(
1612
+ type_=Unauthorized, # type: ignore
1613
+ object_=_response.json(),
1614
+ ),
1615
+ ),
1616
+ )
1617
+ if _response.status_code == 403:
1618
+ raise ForbiddenError(
1619
+ headers=dict(_response.headers),
1620
+ body=typing.cast(
1621
+ Forbidden,
1622
+ parse_obj_as(
1623
+ type_=Forbidden, # type: ignore
1624
+ object_=_response.json(),
1625
+ ),
1626
+ ),
1627
+ )
1628
+ if _response.status_code == 404:
1629
+ raise NotFoundError(
1630
+ headers=dict(_response.headers),
1631
+ body=typing.cast(
1632
+ NotFound,
1633
+ parse_obj_as(
1634
+ type_=NotFound, # type: ignore
1635
+ object_=_response.json(),
1636
+ ),
1637
+ ),
1638
+ )
1639
+ if _response.status_code == 422:
1640
+ raise UnprocessableEntityError(
1641
+ headers=dict(_response.headers),
1642
+ body=typing.cast(
1643
+ typing.Optional[typing.Any],
1644
+ parse_obj_as(
1645
+ type_=typing.Optional[typing.Any], # type: ignore
1646
+ object_=_response.json(),
1647
+ ),
1648
+ ),
1649
+ )
1650
+ if _response.status_code == 429:
1651
+ raise TooManyRequestsError(
1652
+ headers=dict(_response.headers),
1653
+ body=typing.cast(
1654
+ TooManyRequests,
1655
+ parse_obj_as(
1656
+ type_=TooManyRequests, # type: ignore
1657
+ object_=_response.json(),
1658
+ ),
1659
+ ),
1660
+ )
1661
+ _response_json = _response.json()
1662
+ except JSONDecodeError:
1663
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
1664
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
1665
+
1666
+ async def delete(
1667
+ self, account_id: Uuid, file_id: Uuid, *, request_options: typing.Optional[RequestOptions] = None
1668
+ ) -> AsyncHttpResponse[None]:
1669
+ """
1670
+ Delete file by ID. <br><br>Rate Limits: 100 calls per 1.00 minute(s) per account
1671
+
1672
+ Parameters
1673
+ ----------
1674
+ account_id : Uuid
1675
+
1676
+
1677
+ file_id : Uuid
1678
+
1679
+
1680
+ request_options : typing.Optional[RequestOptions]
1681
+ Request-specific configuration.
1682
+
1683
+ Returns
1684
+ -------
1685
+ AsyncHttpResponse[None]
1686
+ """
1687
+ _response = await self._client_wrapper.httpx_client.request(
1688
+ f"v4/accounts/{jsonable_encoder(account_id)}/files/{jsonable_encoder(file_id)}",
1689
+ method="DELETE",
1690
+ request_options=request_options,
1691
+ )
1692
+ try:
1693
+ if 200 <= _response.status_code < 300:
1694
+ return AsyncHttpResponse(response=_response, data=None)
1695
+ if _response.status_code == 400:
1696
+ raise BadRequestError(
1697
+ headers=dict(_response.headers),
1698
+ body=typing.cast(
1699
+ BadRequest,
1700
+ parse_obj_as(
1701
+ type_=BadRequest, # type: ignore
1702
+ object_=_response.json(),
1703
+ ),
1704
+ ),
1705
+ )
1706
+ if _response.status_code == 401:
1707
+ raise UnauthorizedError(
1708
+ headers=dict(_response.headers),
1709
+ body=typing.cast(
1710
+ Unauthorized,
1711
+ parse_obj_as(
1712
+ type_=Unauthorized, # type: ignore
1713
+ object_=_response.json(),
1714
+ ),
1715
+ ),
1716
+ )
1717
+ if _response.status_code == 403:
1718
+ raise ForbiddenError(
1719
+ headers=dict(_response.headers),
1720
+ body=typing.cast(
1721
+ Forbidden,
1722
+ parse_obj_as(
1723
+ type_=Forbidden, # type: ignore
1724
+ object_=_response.json(),
1725
+ ),
1726
+ ),
1727
+ )
1728
+ if _response.status_code == 404:
1729
+ raise NotFoundError(
1730
+ headers=dict(_response.headers),
1731
+ body=typing.cast(
1732
+ NotFound,
1733
+ parse_obj_as(
1734
+ type_=NotFound, # type: ignore
1735
+ object_=_response.json(),
1736
+ ),
1737
+ ),
1738
+ )
1739
+ if _response.status_code == 422:
1740
+ raise UnprocessableEntityError(
1741
+ headers=dict(_response.headers),
1742
+ body=typing.cast(
1743
+ typing.Optional[typing.Any],
1744
+ parse_obj_as(
1745
+ type_=typing.Optional[typing.Any], # type: ignore
1746
+ object_=_response.json(),
1747
+ ),
1748
+ ),
1749
+ )
1750
+ if _response.status_code == 429:
1751
+ raise TooManyRequestsError(
1752
+ headers=dict(_response.headers),
1753
+ body=typing.cast(
1754
+ TooManyRequests,
1755
+ parse_obj_as(
1756
+ type_=TooManyRequests, # type: ignore
1757
+ object_=_response.json(),
1758
+ ),
1759
+ ),
1760
+ )
1761
+ _response_json = _response.json()
1762
+ except JSONDecodeError:
1763
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
1764
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
1765
+
1766
+ async def update(
1767
+ self,
1768
+ account_id: Uuid,
1769
+ file_id: Uuid,
1770
+ *,
1771
+ data: FileUpdateParamsData,
1772
+ request_options: typing.Optional[RequestOptions] = None,
1773
+ ) -> AsyncHttpResponse[FileResponse]:
1774
+ """
1775
+ Update file details. <br><br>Rate Limits: 100 calls per 1.00 minute(s) per account
1776
+
1777
+ Parameters
1778
+ ----------
1779
+ account_id : Uuid
1780
+
1781
+
1782
+ file_id : Uuid
1783
+
1784
+
1785
+ data : FileUpdateParamsData
1786
+
1787
+ request_options : typing.Optional[RequestOptions]
1788
+ Request-specific configuration.
1789
+
1790
+ Returns
1791
+ -------
1792
+ AsyncHttpResponse[FileResponse]
1793
+ OK
1794
+ """
1795
+ _response = await self._client_wrapper.httpx_client.request(
1796
+ f"v4/accounts/{jsonable_encoder(account_id)}/files/{jsonable_encoder(file_id)}",
1797
+ method="PATCH",
1798
+ json={
1799
+ "data": convert_and_respect_annotation_metadata(
1800
+ object_=data, annotation=FileUpdateParamsData, direction="write"
1801
+ ),
1802
+ },
1803
+ headers={
1804
+ "content-type": "application/json",
1805
+ },
1806
+ request_options=request_options,
1807
+ omit=OMIT,
1808
+ )
1809
+ try:
1810
+ if 200 <= _response.status_code < 300:
1811
+ _data = typing.cast(
1812
+ FileResponse,
1813
+ parse_obj_as(
1814
+ type_=FileResponse, # type: ignore
1815
+ object_=_response.json(),
1816
+ ),
1817
+ )
1818
+ return AsyncHttpResponse(response=_response, data=_data)
1819
+ if _response.status_code == 400:
1820
+ raise BadRequestError(
1821
+ headers=dict(_response.headers),
1822
+ body=typing.cast(
1823
+ BadRequest,
1824
+ parse_obj_as(
1825
+ type_=BadRequest, # type: ignore
1826
+ object_=_response.json(),
1827
+ ),
1828
+ ),
1829
+ )
1830
+ if _response.status_code == 401:
1831
+ raise UnauthorizedError(
1832
+ headers=dict(_response.headers),
1833
+ body=typing.cast(
1834
+ Unauthorized,
1835
+ parse_obj_as(
1836
+ type_=Unauthorized, # type: ignore
1837
+ object_=_response.json(),
1838
+ ),
1839
+ ),
1840
+ )
1841
+ if _response.status_code == 403:
1842
+ raise ForbiddenError(
1843
+ headers=dict(_response.headers),
1844
+ body=typing.cast(
1845
+ Forbidden,
1846
+ parse_obj_as(
1847
+ type_=Forbidden, # type: ignore
1848
+ object_=_response.json(),
1849
+ ),
1850
+ ),
1851
+ )
1852
+ if _response.status_code == 404:
1853
+ raise NotFoundError(
1854
+ headers=dict(_response.headers),
1855
+ body=typing.cast(
1856
+ NotFound,
1857
+ parse_obj_as(
1858
+ type_=NotFound, # type: ignore
1859
+ object_=_response.json(),
1860
+ ),
1861
+ ),
1862
+ )
1863
+ if _response.status_code == 422:
1864
+ raise UnprocessableEntityError(
1865
+ headers=dict(_response.headers),
1866
+ body=typing.cast(
1867
+ typing.Optional[typing.Any],
1868
+ parse_obj_as(
1869
+ type_=typing.Optional[typing.Any], # type: ignore
1870
+ object_=_response.json(),
1871
+ ),
1872
+ ),
1873
+ )
1874
+ if _response.status_code == 429:
1875
+ raise TooManyRequestsError(
1876
+ headers=dict(_response.headers),
1877
+ body=typing.cast(
1878
+ TooManyRequests,
1879
+ parse_obj_as(
1880
+ type_=TooManyRequests, # type: ignore
1881
+ object_=_response.json(),
1882
+ ),
1883
+ ),
1884
+ )
1885
+ _response_json = _response.json()
1886
+ except JSONDecodeError:
1887
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
1888
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
1889
+
1890
+ async def copy(
1891
+ self,
1892
+ account_id: Uuid,
1893
+ file_id: Uuid,
1894
+ *,
1895
+ data: typing.Optional[FileCopyParamsData] = OMIT,
1896
+ request_options: typing.Optional[RequestOptions] = None,
1897
+ ) -> AsyncHttpResponse[FileCopyResponse]:
1898
+ """
1899
+ Copy file. <br><br>Rate Limits: 100 calls per 1.00 minute(s) per account
1900
+
1901
+ Parameters
1902
+ ----------
1903
+ account_id : Uuid
1904
+
1905
+
1906
+ file_id : Uuid
1907
+
1908
+
1909
+ data : typing.Optional[FileCopyParamsData]
1910
+
1911
+ request_options : typing.Optional[RequestOptions]
1912
+ Request-specific configuration.
1913
+
1914
+ Returns
1915
+ -------
1916
+ AsyncHttpResponse[FileCopyResponse]
1917
+ OK
1918
+ """
1919
+ _response = await self._client_wrapper.httpx_client.request(
1920
+ f"v4/accounts/{jsonable_encoder(account_id)}/files/{jsonable_encoder(file_id)}/copy",
1921
+ method="POST",
1922
+ json={
1923
+ "data": convert_and_respect_annotation_metadata(
1924
+ object_=data, annotation=FileCopyParamsData, direction="write"
1925
+ ),
1926
+ },
1927
+ headers={
1928
+ "content-type": "application/json",
1929
+ },
1930
+ request_options=request_options,
1931
+ omit=OMIT,
1932
+ )
1933
+ try:
1934
+ if 200 <= _response.status_code < 300:
1935
+ _data = typing.cast(
1936
+ FileCopyResponse,
1937
+ parse_obj_as(
1938
+ type_=FileCopyResponse, # type: ignore
1939
+ object_=_response.json(),
1940
+ ),
1941
+ )
1942
+ return AsyncHttpResponse(response=_response, data=_data)
1943
+ if _response.status_code == 400:
1944
+ raise BadRequestError(
1945
+ headers=dict(_response.headers),
1946
+ body=typing.cast(
1947
+ BadRequest,
1948
+ parse_obj_as(
1949
+ type_=BadRequest, # type: ignore
1950
+ object_=_response.json(),
1951
+ ),
1952
+ ),
1953
+ )
1954
+ if _response.status_code == 401:
1955
+ raise UnauthorizedError(
1956
+ headers=dict(_response.headers),
1957
+ body=typing.cast(
1958
+ Unauthorized,
1959
+ parse_obj_as(
1960
+ type_=Unauthorized, # type: ignore
1961
+ object_=_response.json(),
1962
+ ),
1963
+ ),
1964
+ )
1965
+ if _response.status_code == 403:
1966
+ raise ForbiddenError(
1967
+ headers=dict(_response.headers),
1968
+ body=typing.cast(
1969
+ Forbidden,
1970
+ parse_obj_as(
1971
+ type_=Forbidden, # type: ignore
1972
+ object_=_response.json(),
1973
+ ),
1974
+ ),
1975
+ )
1976
+ if _response.status_code == 404:
1977
+ raise NotFoundError(
1978
+ headers=dict(_response.headers),
1979
+ body=typing.cast(
1980
+ NotFound,
1981
+ parse_obj_as(
1982
+ type_=NotFound, # type: ignore
1983
+ object_=_response.json(),
1984
+ ),
1985
+ ),
1986
+ )
1987
+ if _response.status_code == 422:
1988
+ raise UnprocessableEntityError(
1989
+ headers=dict(_response.headers),
1990
+ body=typing.cast(
1991
+ typing.Optional[typing.Any],
1992
+ parse_obj_as(
1993
+ type_=typing.Optional[typing.Any], # type: ignore
1994
+ object_=_response.json(),
1995
+ ),
1996
+ ),
1997
+ )
1998
+ if _response.status_code == 429:
1999
+ raise TooManyRequestsError(
2000
+ headers=dict(_response.headers),
2001
+ body=typing.cast(
2002
+ TooManyRequests,
2003
+ parse_obj_as(
2004
+ type_=TooManyRequests, # type: ignore
2005
+ object_=_response.json(),
2006
+ ),
2007
+ ),
2008
+ )
2009
+ _response_json = _response.json()
2010
+ except JSONDecodeError:
2011
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
2012
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
2013
+
2014
+ async def create_remote_upload(
2015
+ self,
2016
+ account_id: Uuid,
2017
+ folder_id: Uuid,
2018
+ *,
2019
+ data: FileCreateRemoteUploadParamsData,
2020
+ request_options: typing.Optional[RequestOptions] = None,
2021
+ ) -> AsyncHttpResponse[FileRemoteUploadResponse]:
2022
+ """
2023
+ Create new file under parent folder through remote upload. <br><br>Rate Limits: 5 calls per 1 second(s) per account
2024
+
2025
+ Parameters
2026
+ ----------
2027
+ account_id : Uuid
2028
+
2029
+
2030
+ folder_id : Uuid
2031
+
2032
+
2033
+ data : FileCreateRemoteUploadParamsData
2034
+
2035
+ request_options : typing.Optional[RequestOptions]
2036
+ Request-specific configuration.
2037
+
2038
+ Returns
2039
+ -------
2040
+ AsyncHttpResponse[FileRemoteUploadResponse]
2041
+ Accepted
2042
+ """
2043
+ _response = await self._client_wrapper.httpx_client.request(
2044
+ f"v4/accounts/{jsonable_encoder(account_id)}/folders/{jsonable_encoder(folder_id)}/files/remote_upload",
2045
+ method="POST",
2046
+ json={
2047
+ "data": convert_and_respect_annotation_metadata(
2048
+ object_=data, annotation=FileCreateRemoteUploadParamsData, direction="write"
2049
+ ),
2050
+ },
2051
+ headers={
2052
+ "content-type": "application/json",
2053
+ },
2054
+ request_options=request_options,
2055
+ omit=OMIT,
2056
+ )
2057
+ try:
2058
+ if 200 <= _response.status_code < 300:
2059
+ _data = typing.cast(
2060
+ FileRemoteUploadResponse,
2061
+ parse_obj_as(
2062
+ type_=FileRemoteUploadResponse, # type: ignore
2063
+ object_=_response.json(),
2064
+ ),
2065
+ )
2066
+ return AsyncHttpResponse(response=_response, data=_data)
2067
+ if _response.status_code == 400:
2068
+ raise BadRequestError(
2069
+ headers=dict(_response.headers),
2070
+ body=typing.cast(
2071
+ BadRequest,
2072
+ parse_obj_as(
2073
+ type_=BadRequest, # type: ignore
2074
+ object_=_response.json(),
2075
+ ),
2076
+ ),
2077
+ )
2078
+ if _response.status_code == 401:
2079
+ raise UnauthorizedError(
2080
+ headers=dict(_response.headers),
2081
+ body=typing.cast(
2082
+ Unauthorized,
2083
+ parse_obj_as(
2084
+ type_=Unauthorized, # type: ignore
2085
+ object_=_response.json(),
2086
+ ),
2087
+ ),
2088
+ )
2089
+ if _response.status_code == 403:
2090
+ raise ForbiddenError(
2091
+ headers=dict(_response.headers),
2092
+ body=typing.cast(
2093
+ Forbidden,
2094
+ parse_obj_as(
2095
+ type_=Forbidden, # type: ignore
2096
+ object_=_response.json(),
2097
+ ),
2098
+ ),
2099
+ )
2100
+ if _response.status_code == 404:
2101
+ raise NotFoundError(
2102
+ headers=dict(_response.headers),
2103
+ body=typing.cast(
2104
+ NotFound,
2105
+ parse_obj_as(
2106
+ type_=NotFound, # type: ignore
2107
+ object_=_response.json(),
2108
+ ),
2109
+ ),
2110
+ )
2111
+ if _response.status_code == 422:
2112
+ raise UnprocessableEntityError(
2113
+ headers=dict(_response.headers),
2114
+ body=typing.cast(
2115
+ typing.Optional[typing.Any],
2116
+ parse_obj_as(
2117
+ type_=typing.Optional[typing.Any], # type: ignore
2118
+ object_=_response.json(),
2119
+ ),
2120
+ ),
2121
+ )
2122
+ if _response.status_code == 429:
2123
+ raise TooManyRequestsError(
2124
+ headers=dict(_response.headers),
2125
+ body=typing.cast(
2126
+ TooManyRequests,
2127
+ parse_obj_as(
2128
+ type_=TooManyRequests, # type: ignore
2129
+ object_=_response.json(),
2130
+ ),
2131
+ ),
2132
+ )
2133
+ _response_json = _response.json()
2134
+ except JSONDecodeError:
2135
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
2136
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
2137
+
2138
+ async def move(
2139
+ self,
2140
+ account_id: Uuid,
2141
+ file_id: Uuid,
2142
+ *,
2143
+ data: FileMoveParamsData,
2144
+ request_options: typing.Optional[RequestOptions] = None,
2145
+ ) -> AsyncHttpResponse[FileResponse]:
2146
+ """
2147
+ Move file to a folder or version_stack. <br><br>Rate Limits: 100 calls per 1.00 minute(s) per account
2148
+
2149
+ Parameters
2150
+ ----------
2151
+ account_id : Uuid
2152
+
2153
+
2154
+ file_id : Uuid
2155
+
2156
+
2157
+ data : FileMoveParamsData
2158
+
2159
+ request_options : typing.Optional[RequestOptions]
2160
+ Request-specific configuration.
2161
+
2162
+ Returns
2163
+ -------
2164
+ AsyncHttpResponse[FileResponse]
2165
+ OK
2166
+ """
2167
+ _response = await self._client_wrapper.httpx_client.request(
2168
+ f"v4/accounts/{jsonable_encoder(account_id)}/files/{jsonable_encoder(file_id)}/move",
2169
+ method="PATCH",
2170
+ json={
2171
+ "data": convert_and_respect_annotation_metadata(
2172
+ object_=data, annotation=FileMoveParamsData, direction="write"
2173
+ ),
2174
+ },
2175
+ headers={
2176
+ "content-type": "application/json",
2177
+ },
2178
+ request_options=request_options,
2179
+ omit=OMIT,
2180
+ )
2181
+ try:
2182
+ if 200 <= _response.status_code < 300:
2183
+ _data = typing.cast(
2184
+ FileResponse,
2185
+ parse_obj_as(
2186
+ type_=FileResponse, # type: ignore
2187
+ object_=_response.json(),
2188
+ ),
2189
+ )
2190
+ return AsyncHttpResponse(response=_response, data=_data)
2191
+ if _response.status_code == 400:
2192
+ raise BadRequestError(
2193
+ headers=dict(_response.headers),
2194
+ body=typing.cast(
2195
+ BadRequest,
2196
+ parse_obj_as(
2197
+ type_=BadRequest, # type: ignore
2198
+ object_=_response.json(),
2199
+ ),
2200
+ ),
2201
+ )
2202
+ if _response.status_code == 401:
2203
+ raise UnauthorizedError(
2204
+ headers=dict(_response.headers),
2205
+ body=typing.cast(
2206
+ Unauthorized,
2207
+ parse_obj_as(
2208
+ type_=Unauthorized, # type: ignore
2209
+ object_=_response.json(),
2210
+ ),
2211
+ ),
2212
+ )
2213
+ if _response.status_code == 403:
2214
+ raise ForbiddenError(
2215
+ headers=dict(_response.headers),
2216
+ body=typing.cast(
2217
+ Forbidden,
2218
+ parse_obj_as(
2219
+ type_=Forbidden, # type: ignore
2220
+ object_=_response.json(),
2221
+ ),
2222
+ ),
2223
+ )
2224
+ if _response.status_code == 404:
2225
+ raise NotFoundError(
2226
+ headers=dict(_response.headers),
2227
+ body=typing.cast(
2228
+ NotFound,
2229
+ parse_obj_as(
2230
+ type_=NotFound, # type: ignore
2231
+ object_=_response.json(),
2232
+ ),
2233
+ ),
2234
+ )
2235
+ if _response.status_code == 422:
2236
+ raise UnprocessableEntityError(
2237
+ headers=dict(_response.headers),
2238
+ body=typing.cast(
2239
+ typing.Optional[typing.Any],
2240
+ parse_obj_as(
2241
+ type_=typing.Optional[typing.Any], # type: ignore
2242
+ object_=_response.json(),
2243
+ ),
2244
+ ),
2245
+ )
2246
+ if _response.status_code == 429:
2247
+ raise TooManyRequestsError(
2248
+ headers=dict(_response.headers),
2249
+ body=typing.cast(
2250
+ TooManyRequests,
2251
+ parse_obj_as(
2252
+ type_=TooManyRequests, # type: ignore
2253
+ object_=_response.json(),
2254
+ ),
2255
+ ),
2256
+ )
2257
+ _response_json = _response.json()
2258
+ except JSONDecodeError:
2259
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
2260
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
2261
+
2262
+ async def create_local_upload(
2263
+ self,
2264
+ account_id: Uuid,
2265
+ folder_id: Uuid,
2266
+ *,
2267
+ data: FileCreateLocalUploadParamsData,
2268
+ request_options: typing.Optional[RequestOptions] = None,
2269
+ ) -> AsyncHttpResponse[FileWithUploadUrlsResponse]:
2270
+ """
2271
+ Create new file under parent folder through local upload. <br><br>Rate Limits: 5 calls per 1 second(s) per account
2272
+
2273
+ Parameters
2274
+ ----------
2275
+ account_id : Uuid
2276
+
2277
+
2278
+ folder_id : Uuid
2279
+
2280
+
2281
+ data : FileCreateLocalUploadParamsData
2282
+
2283
+ request_options : typing.Optional[RequestOptions]
2284
+ Request-specific configuration.
2285
+
2286
+ Returns
2287
+ -------
2288
+ AsyncHttpResponse[FileWithUploadUrlsResponse]
2289
+ Created
2290
+ """
2291
+ _response = await self._client_wrapper.httpx_client.request(
2292
+ f"v4/accounts/{jsonable_encoder(account_id)}/folders/{jsonable_encoder(folder_id)}/files/local_upload",
2293
+ method="POST",
2294
+ json={
2295
+ "data": convert_and_respect_annotation_metadata(
2296
+ object_=data, annotation=FileCreateLocalUploadParamsData, direction="write"
2297
+ ),
2298
+ },
2299
+ headers={
2300
+ "content-type": "application/json",
2301
+ },
2302
+ request_options=request_options,
2303
+ omit=OMIT,
2304
+ )
2305
+ try:
2306
+ if 200 <= _response.status_code < 300:
2307
+ _data = typing.cast(
2308
+ FileWithUploadUrlsResponse,
2309
+ parse_obj_as(
2310
+ type_=FileWithUploadUrlsResponse, # type: ignore
2311
+ object_=_response.json(),
2312
+ ),
2313
+ )
2314
+ return AsyncHttpResponse(response=_response, data=_data)
2315
+ if _response.status_code == 400:
2316
+ raise BadRequestError(
2317
+ headers=dict(_response.headers),
2318
+ body=typing.cast(
2319
+ BadRequest,
2320
+ parse_obj_as(
2321
+ type_=BadRequest, # type: ignore
2322
+ object_=_response.json(),
2323
+ ),
2324
+ ),
2325
+ )
2326
+ if _response.status_code == 401:
2327
+ raise UnauthorizedError(
2328
+ headers=dict(_response.headers),
2329
+ body=typing.cast(
2330
+ Unauthorized,
2331
+ parse_obj_as(
2332
+ type_=Unauthorized, # type: ignore
2333
+ object_=_response.json(),
2334
+ ),
2335
+ ),
2336
+ )
2337
+ if _response.status_code == 403:
2338
+ raise ForbiddenError(
2339
+ headers=dict(_response.headers),
2340
+ body=typing.cast(
2341
+ Forbidden,
2342
+ parse_obj_as(
2343
+ type_=Forbidden, # type: ignore
2344
+ object_=_response.json(),
2345
+ ),
2346
+ ),
2347
+ )
2348
+ if _response.status_code == 404:
2349
+ raise NotFoundError(
2350
+ headers=dict(_response.headers),
2351
+ body=typing.cast(
2352
+ NotFound,
2353
+ parse_obj_as(
2354
+ type_=NotFound, # type: ignore
2355
+ object_=_response.json(),
2356
+ ),
2357
+ ),
2358
+ )
2359
+ if _response.status_code == 422:
2360
+ raise UnprocessableEntityError(
2361
+ headers=dict(_response.headers),
2362
+ body=typing.cast(
2363
+ typing.Optional[typing.Any],
2364
+ parse_obj_as(
2365
+ type_=typing.Optional[typing.Any], # type: ignore
2366
+ object_=_response.json(),
2367
+ ),
2368
+ ),
2369
+ )
2370
+ if _response.status_code == 429:
2371
+ raise TooManyRequestsError(
2372
+ headers=dict(_response.headers),
2373
+ body=typing.cast(
2374
+ TooManyRequests,
2375
+ parse_obj_as(
2376
+ type_=TooManyRequests, # type: ignore
2377
+ object_=_response.json(),
2378
+ ),
2379
+ ),
2380
+ )
2381
+ _response_json = _response.json()
2382
+ except JSONDecodeError:
2383
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
2384
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
2385
+
2386
+ async def show_file_upload_status(
2387
+ self, account_id: Uuid, file_id: Uuid, *, request_options: typing.Optional[RequestOptions] = None
2388
+ ) -> AsyncHttpResponse[FileUploadStatusResponse]:
2389
+ """
2390
+ Show file upload status details. <br><br>Rate Limits: 5 calls per 1 second(s) per account
2391
+
2392
+ Parameters
2393
+ ----------
2394
+ account_id : Uuid
2395
+
2396
+
2397
+ file_id : Uuid
2398
+
2399
+
2400
+ request_options : typing.Optional[RequestOptions]
2401
+ Request-specific configuration.
2402
+
2403
+ Returns
2404
+ -------
2405
+ AsyncHttpResponse[FileUploadStatusResponse]
2406
+ OK
2407
+ """
2408
+ _response = await self._client_wrapper.httpx_client.request(
2409
+ f"v4/accounts/{jsonable_encoder(account_id)}/files/{jsonable_encoder(file_id)}/status",
2410
+ method="GET",
2411
+ request_options=request_options,
2412
+ )
2413
+ try:
2414
+ if 200 <= _response.status_code < 300:
2415
+ _data = typing.cast(
2416
+ FileUploadStatusResponse,
2417
+ parse_obj_as(
2418
+ type_=FileUploadStatusResponse, # type: ignore
2419
+ object_=_response.json(),
2420
+ ),
2421
+ )
2422
+ return AsyncHttpResponse(response=_response, data=_data)
2423
+ if _response.status_code == 400:
2424
+ raise BadRequestError(
2425
+ headers=dict(_response.headers),
2426
+ body=typing.cast(
2427
+ BadRequest,
2428
+ parse_obj_as(
2429
+ type_=BadRequest, # type: ignore
2430
+ object_=_response.json(),
2431
+ ),
2432
+ ),
2433
+ )
2434
+ if _response.status_code == 401:
2435
+ raise UnauthorizedError(
2436
+ headers=dict(_response.headers),
2437
+ body=typing.cast(
2438
+ Unauthorized,
2439
+ parse_obj_as(
2440
+ type_=Unauthorized, # type: ignore
2441
+ object_=_response.json(),
2442
+ ),
2443
+ ),
2444
+ )
2445
+ if _response.status_code == 403:
2446
+ raise ForbiddenError(
2447
+ headers=dict(_response.headers),
2448
+ body=typing.cast(
2449
+ Forbidden,
2450
+ parse_obj_as(
2451
+ type_=Forbidden, # type: ignore
2452
+ object_=_response.json(),
2453
+ ),
2454
+ ),
2455
+ )
2456
+ if _response.status_code == 404:
2457
+ raise NotFoundError(
2458
+ headers=dict(_response.headers),
2459
+ body=typing.cast(
2460
+ NotFound,
2461
+ parse_obj_as(
2462
+ type_=NotFound, # type: ignore
2463
+ object_=_response.json(),
2464
+ ),
2465
+ ),
2466
+ )
2467
+ if _response.status_code == 422:
2468
+ raise UnprocessableEntityError(
2469
+ headers=dict(_response.headers),
2470
+ body=typing.cast(
2471
+ typing.Optional[typing.Any],
2472
+ parse_obj_as(
2473
+ type_=typing.Optional[typing.Any], # type: ignore
2474
+ object_=_response.json(),
2475
+ ),
2476
+ ),
2477
+ )
2478
+ if _response.status_code == 429:
2479
+ raise TooManyRequestsError(
2480
+ headers=dict(_response.headers),
2481
+ body=typing.cast(
2482
+ TooManyRequests,
2483
+ parse_obj_as(
2484
+ type_=TooManyRequests, # type: ignore
2485
+ object_=_response.json(),
2486
+ ),
2487
+ ),
2488
+ )
2489
+ _response_json = _response.json()
2490
+ except JSONDecodeError:
2491
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
2492
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)