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,1359 @@
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_with_media_links_include import FileWithMediaLinksInclude
22
+ from ..types.forbidden import Forbidden
23
+ from ..types.include_total_count import IncludeTotalCount
24
+ from ..types.not_found import NotFound
25
+ from ..types.request_after_opaque_cursor import RequestAfterOpaqueCursor
26
+ from ..types.request_page_size import RequestPageSize
27
+ from ..types.too_many_requests import TooManyRequests
28
+ from ..types.unauthorized import Unauthorized
29
+ from ..types.uuid_ import Uuid
30
+ from ..types.version_stack_copy_response import VersionStackCopyResponse
31
+ from ..types.version_stack_response import VersionStackResponse
32
+ from ..types.version_stack_with_includes_response import VersionStackWithIncludesResponse
33
+ from ..types.version_stacks_with_includes_response import VersionStacksWithIncludesResponse
34
+ from .types.version_stack_copy_params_data import VersionStackCopyParamsData
35
+ from .types.version_stack_create_params_data import VersionStackCreateParamsData
36
+ from .types.version_stack_move_params_data import VersionStackMoveParamsData
37
+
38
+ # this is used as the default value for optional parameters
39
+ OMIT = typing.cast(typing.Any, ...)
40
+
41
+
42
+ class RawVersionStacksClient:
43
+ def __init__(self, *, client_wrapper: SyncClientWrapper):
44
+ self._client_wrapper = client_wrapper
45
+
46
+ def index(
47
+ self,
48
+ account_id: Uuid,
49
+ version_stack_id: Uuid,
50
+ *,
51
+ include: typing.Optional[FileWithMediaLinksInclude] = None,
52
+ after: typing.Optional[RequestAfterOpaqueCursor] = None,
53
+ page_size: typing.Optional[RequestPageSize] = None,
54
+ include_total_count: typing.Optional[IncludeTotalCount] = None,
55
+ request_options: typing.Optional[RequestOptions] = None,
56
+ ) -> HttpResponse[AssetsWithIncludesResponse]:
57
+ """
58
+ List the children (files) in a given version stack.
59
+ <br><br>
60
+ Use the `include` query parameter to selectively include additional properties in the response.
61
+ <br><br>
62
+ Note: if you include `media_links.original` and the user does not have permission to download files
63
+ in the corresponding project, then this endpoint will respond with a `403 Forbidden` error.
64
+ If the content is inaccessible because watermarking is required for this user and isn't supported by
65
+ the requested media_links, then the request will succeed but the unsupported media links will be set to null.
66
+ Similarly, if a requested transcode link does not exist for a particular file (e.g. including
67
+ `media_links.video_h264_180` on a static image file) or transoding process hasn't finished
68
+ (i.e. the file's `status` is "uploaded" rather than "transcoded"), then the a media link will also be set to
69
+ null in the response payload. In short, the client must handle null media links gracefully.
70
+
71
+ Parameters
72
+ ----------
73
+ account_id : Uuid
74
+
75
+
76
+ version_stack_id : Uuid
77
+
78
+
79
+ include : typing.Optional[FileWithMediaLinksInclude]
80
+
81
+
82
+ after : typing.Optional[RequestAfterOpaqueCursor]
83
+ Opaque Cursor query param for requests returning paginated results.
84
+ <br/>
85
+ NOTE: this value is auto-generated and included as part of links from a previous response. It is not intended to be human readable.
86
+
87
+ page_size : typing.Optional[RequestPageSize]
88
+
89
+
90
+ include_total_count : typing.Optional[IncludeTotalCount]
91
+
92
+
93
+ request_options : typing.Optional[RequestOptions]
94
+ Request-specific configuration.
95
+
96
+ Returns
97
+ -------
98
+ HttpResponse[AssetsWithIncludesResponse]
99
+ OK
100
+ """
101
+ _response = self._client_wrapper.httpx_client.request(
102
+ f"v4/accounts/{jsonable_encoder(account_id)}/version_stacks/{jsonable_encoder(version_stack_id)}/children",
103
+ method="GET",
104
+ params={
105
+ "include": include,
106
+ "after": after,
107
+ "page_size": page_size,
108
+ "include_total_count": include_total_count,
109
+ },
110
+ request_options=request_options,
111
+ )
112
+ try:
113
+ if 200 <= _response.status_code < 300:
114
+ _data = typing.cast(
115
+ AssetsWithIncludesResponse,
116
+ parse_obj_as(
117
+ type_=AssetsWithIncludesResponse, # type: ignore
118
+ object_=_response.json(),
119
+ ),
120
+ )
121
+ return HttpResponse(response=_response, data=_data)
122
+ if _response.status_code == 400:
123
+ raise BadRequestError(
124
+ headers=dict(_response.headers),
125
+ body=typing.cast(
126
+ BadRequest,
127
+ parse_obj_as(
128
+ type_=BadRequest, # type: ignore
129
+ object_=_response.json(),
130
+ ),
131
+ ),
132
+ )
133
+ if _response.status_code == 401:
134
+ raise UnauthorizedError(
135
+ headers=dict(_response.headers),
136
+ body=typing.cast(
137
+ Unauthorized,
138
+ parse_obj_as(
139
+ type_=Unauthorized, # type: ignore
140
+ object_=_response.json(),
141
+ ),
142
+ ),
143
+ )
144
+ if _response.status_code == 403:
145
+ raise ForbiddenError(
146
+ headers=dict(_response.headers),
147
+ body=typing.cast(
148
+ Forbidden,
149
+ parse_obj_as(
150
+ type_=Forbidden, # type: ignore
151
+ object_=_response.json(),
152
+ ),
153
+ ),
154
+ )
155
+ if _response.status_code == 404:
156
+ raise NotFoundError(
157
+ headers=dict(_response.headers),
158
+ body=typing.cast(
159
+ NotFound,
160
+ parse_obj_as(
161
+ type_=NotFound, # type: ignore
162
+ object_=_response.json(),
163
+ ),
164
+ ),
165
+ )
166
+ if _response.status_code == 422:
167
+ raise UnprocessableEntityError(
168
+ headers=dict(_response.headers),
169
+ body=typing.cast(
170
+ typing.Optional[typing.Any],
171
+ parse_obj_as(
172
+ type_=typing.Optional[typing.Any], # type: ignore
173
+ object_=_response.json(),
174
+ ),
175
+ ),
176
+ )
177
+ if _response.status_code == 429:
178
+ raise TooManyRequestsError(
179
+ headers=dict(_response.headers),
180
+ body=typing.cast(
181
+ TooManyRequests,
182
+ parse_obj_as(
183
+ type_=TooManyRequests, # type: ignore
184
+ object_=_response.json(),
185
+ ),
186
+ ),
187
+ )
188
+ _response_json = _response.json()
189
+ except JSONDecodeError:
190
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
191
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
192
+
193
+ def copy(
194
+ self,
195
+ account_id: Uuid,
196
+ version_stack_id: Uuid,
197
+ *,
198
+ data: typing.Optional[VersionStackCopyParamsData] = OMIT,
199
+ request_options: typing.Optional[RequestOptions] = None,
200
+ ) -> HttpResponse[VersionStackCopyResponse]:
201
+ """
202
+ Copy version stack. <br><br>Rate Limits: 10 calls per 1.00 minute(s) per account
203
+
204
+ Parameters
205
+ ----------
206
+ account_id : Uuid
207
+
208
+
209
+ version_stack_id : Uuid
210
+
211
+
212
+ data : typing.Optional[VersionStackCopyParamsData]
213
+
214
+ request_options : typing.Optional[RequestOptions]
215
+ Request-specific configuration.
216
+
217
+ Returns
218
+ -------
219
+ HttpResponse[VersionStackCopyResponse]
220
+ OK
221
+ """
222
+ _response = self._client_wrapper.httpx_client.request(
223
+ f"v4/accounts/{jsonable_encoder(account_id)}/version_stacks/{jsonable_encoder(version_stack_id)}/copy",
224
+ method="POST",
225
+ json={
226
+ "data": convert_and_respect_annotation_metadata(
227
+ object_=data, annotation=VersionStackCopyParamsData, direction="write"
228
+ ),
229
+ },
230
+ headers={
231
+ "content-type": "application/json",
232
+ },
233
+ request_options=request_options,
234
+ omit=OMIT,
235
+ )
236
+ try:
237
+ if 200 <= _response.status_code < 300:
238
+ _data = typing.cast(
239
+ VersionStackCopyResponse,
240
+ parse_obj_as(
241
+ type_=VersionStackCopyResponse, # type: ignore
242
+ object_=_response.json(),
243
+ ),
244
+ )
245
+ return HttpResponse(response=_response, data=_data)
246
+ if _response.status_code == 400:
247
+ raise BadRequestError(
248
+ headers=dict(_response.headers),
249
+ body=typing.cast(
250
+ BadRequest,
251
+ parse_obj_as(
252
+ type_=BadRequest, # type: ignore
253
+ object_=_response.json(),
254
+ ),
255
+ ),
256
+ )
257
+ if _response.status_code == 401:
258
+ raise UnauthorizedError(
259
+ headers=dict(_response.headers),
260
+ body=typing.cast(
261
+ Unauthorized,
262
+ parse_obj_as(
263
+ type_=Unauthorized, # type: ignore
264
+ object_=_response.json(),
265
+ ),
266
+ ),
267
+ )
268
+ if _response.status_code == 403:
269
+ raise ForbiddenError(
270
+ headers=dict(_response.headers),
271
+ body=typing.cast(
272
+ Forbidden,
273
+ parse_obj_as(
274
+ type_=Forbidden, # type: ignore
275
+ object_=_response.json(),
276
+ ),
277
+ ),
278
+ )
279
+ if _response.status_code == 404:
280
+ raise NotFoundError(
281
+ headers=dict(_response.headers),
282
+ body=typing.cast(
283
+ NotFound,
284
+ parse_obj_as(
285
+ type_=NotFound, # type: ignore
286
+ object_=_response.json(),
287
+ ),
288
+ ),
289
+ )
290
+ if _response.status_code == 422:
291
+ raise UnprocessableEntityError(
292
+ headers=dict(_response.headers),
293
+ body=typing.cast(
294
+ typing.Optional[typing.Any],
295
+ parse_obj_as(
296
+ type_=typing.Optional[typing.Any], # type: ignore
297
+ object_=_response.json(),
298
+ ),
299
+ ),
300
+ )
301
+ if _response.status_code == 429:
302
+ raise TooManyRequestsError(
303
+ headers=dict(_response.headers),
304
+ body=typing.cast(
305
+ TooManyRequests,
306
+ parse_obj_as(
307
+ type_=TooManyRequests, # type: ignore
308
+ object_=_response.json(),
309
+ ),
310
+ ),
311
+ )
312
+ _response_json = _response.json()
313
+ except JSONDecodeError:
314
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
315
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
316
+
317
+ def list(
318
+ self,
319
+ account_id: Uuid,
320
+ folder_id: Uuid,
321
+ *,
322
+ include: typing.Optional[FileWithMediaLinksInclude] = None,
323
+ after: typing.Optional[RequestAfterOpaqueCursor] = None,
324
+ page_size: typing.Optional[RequestPageSize] = None,
325
+ include_total_count: typing.Optional[IncludeTotalCount] = None,
326
+ request_options: typing.Optional[RequestOptions] = None,
327
+ ) -> HttpResponse[VersionStacksWithIncludesResponse]:
328
+ """
329
+ List version stacks in a given folder
330
+
331
+ Parameters
332
+ ----------
333
+ account_id : Uuid
334
+
335
+
336
+ folder_id : Uuid
337
+
338
+
339
+ include : typing.Optional[FileWithMediaLinksInclude]
340
+
341
+
342
+ after : typing.Optional[RequestAfterOpaqueCursor]
343
+ Opaque Cursor query param for requests returning paginated results.
344
+ <br/>
345
+ NOTE: this value is auto-generated and included as part of links from a previous response. It is not intended to be human readable.
346
+
347
+ page_size : typing.Optional[RequestPageSize]
348
+
349
+
350
+ include_total_count : typing.Optional[IncludeTotalCount]
351
+
352
+
353
+ request_options : typing.Optional[RequestOptions]
354
+ Request-specific configuration.
355
+
356
+ Returns
357
+ -------
358
+ HttpResponse[VersionStacksWithIncludesResponse]
359
+ OK
360
+ """
361
+ _response = self._client_wrapper.httpx_client.request(
362
+ f"v4/accounts/{jsonable_encoder(account_id)}/folders/{jsonable_encoder(folder_id)}/version_stacks",
363
+ method="GET",
364
+ params={
365
+ "include": include,
366
+ "after": after,
367
+ "page_size": page_size,
368
+ "include_total_count": include_total_count,
369
+ },
370
+ request_options=request_options,
371
+ )
372
+ try:
373
+ if 200 <= _response.status_code < 300:
374
+ _data = typing.cast(
375
+ VersionStacksWithIncludesResponse,
376
+ parse_obj_as(
377
+ type_=VersionStacksWithIncludesResponse, # type: ignore
378
+ object_=_response.json(),
379
+ ),
380
+ )
381
+ return HttpResponse(response=_response, data=_data)
382
+ if _response.status_code == 400:
383
+ raise BadRequestError(
384
+ headers=dict(_response.headers),
385
+ body=typing.cast(
386
+ BadRequest,
387
+ parse_obj_as(
388
+ type_=BadRequest, # type: ignore
389
+ object_=_response.json(),
390
+ ),
391
+ ),
392
+ )
393
+ if _response.status_code == 401:
394
+ raise UnauthorizedError(
395
+ headers=dict(_response.headers),
396
+ body=typing.cast(
397
+ Unauthorized,
398
+ parse_obj_as(
399
+ type_=Unauthorized, # type: ignore
400
+ object_=_response.json(),
401
+ ),
402
+ ),
403
+ )
404
+ if _response.status_code == 403:
405
+ raise ForbiddenError(
406
+ headers=dict(_response.headers),
407
+ body=typing.cast(
408
+ Forbidden,
409
+ parse_obj_as(
410
+ type_=Forbidden, # type: ignore
411
+ object_=_response.json(),
412
+ ),
413
+ ),
414
+ )
415
+ if _response.status_code == 404:
416
+ raise NotFoundError(
417
+ headers=dict(_response.headers),
418
+ body=typing.cast(
419
+ NotFound,
420
+ parse_obj_as(
421
+ type_=NotFound, # type: ignore
422
+ object_=_response.json(),
423
+ ),
424
+ ),
425
+ )
426
+ if _response.status_code == 422:
427
+ raise UnprocessableEntityError(
428
+ headers=dict(_response.headers),
429
+ body=typing.cast(
430
+ typing.Optional[typing.Any],
431
+ parse_obj_as(
432
+ type_=typing.Optional[typing.Any], # type: ignore
433
+ object_=_response.json(),
434
+ ),
435
+ ),
436
+ )
437
+ if _response.status_code == 429:
438
+ raise TooManyRequestsError(
439
+ headers=dict(_response.headers),
440
+ body=typing.cast(
441
+ TooManyRequests,
442
+ parse_obj_as(
443
+ type_=TooManyRequests, # type: ignore
444
+ object_=_response.json(),
445
+ ),
446
+ ),
447
+ )
448
+ _response_json = _response.json()
449
+ except JSONDecodeError:
450
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
451
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
452
+
453
+ def create(
454
+ self,
455
+ account_id: Uuid,
456
+ folder_id: Uuid,
457
+ *,
458
+ data: VersionStackCreateParamsData,
459
+ request_options: typing.Optional[RequestOptions] = None,
460
+ ) -> HttpResponse[VersionStackWithIncludesResponse]:
461
+ """
462
+ Create a new Version Stack under the parent folder. <br><br>Rate Limits: 10 calls per 1.00 minute(s) per account
463
+
464
+ Parameters
465
+ ----------
466
+ account_id : Uuid
467
+
468
+
469
+ folder_id : Uuid
470
+
471
+
472
+ data : VersionStackCreateParamsData
473
+
474
+ request_options : typing.Optional[RequestOptions]
475
+ Request-specific configuration.
476
+
477
+ Returns
478
+ -------
479
+ HttpResponse[VersionStackWithIncludesResponse]
480
+ Created
481
+ """
482
+ _response = self._client_wrapper.httpx_client.request(
483
+ f"v4/accounts/{jsonable_encoder(account_id)}/folders/{jsonable_encoder(folder_id)}/version_stacks",
484
+ method="POST",
485
+ json={
486
+ "data": convert_and_respect_annotation_metadata(
487
+ object_=data, annotation=VersionStackCreateParamsData, direction="write"
488
+ ),
489
+ },
490
+ headers={
491
+ "content-type": "application/json",
492
+ },
493
+ request_options=request_options,
494
+ omit=OMIT,
495
+ )
496
+ try:
497
+ if 200 <= _response.status_code < 300:
498
+ _data = typing.cast(
499
+ VersionStackWithIncludesResponse,
500
+ parse_obj_as(
501
+ type_=VersionStackWithIncludesResponse, # type: ignore
502
+ object_=_response.json(),
503
+ ),
504
+ )
505
+ return HttpResponse(response=_response, data=_data)
506
+ if _response.status_code == 400:
507
+ raise BadRequestError(
508
+ headers=dict(_response.headers),
509
+ body=typing.cast(
510
+ BadRequest,
511
+ parse_obj_as(
512
+ type_=BadRequest, # type: ignore
513
+ object_=_response.json(),
514
+ ),
515
+ ),
516
+ )
517
+ if _response.status_code == 401:
518
+ raise UnauthorizedError(
519
+ headers=dict(_response.headers),
520
+ body=typing.cast(
521
+ Unauthorized,
522
+ parse_obj_as(
523
+ type_=Unauthorized, # type: ignore
524
+ object_=_response.json(),
525
+ ),
526
+ ),
527
+ )
528
+ if _response.status_code == 403:
529
+ raise ForbiddenError(
530
+ headers=dict(_response.headers),
531
+ body=typing.cast(
532
+ Forbidden,
533
+ parse_obj_as(
534
+ type_=Forbidden, # type: ignore
535
+ object_=_response.json(),
536
+ ),
537
+ ),
538
+ )
539
+ if _response.status_code == 404:
540
+ raise NotFoundError(
541
+ headers=dict(_response.headers),
542
+ body=typing.cast(
543
+ NotFound,
544
+ parse_obj_as(
545
+ type_=NotFound, # type: ignore
546
+ object_=_response.json(),
547
+ ),
548
+ ),
549
+ )
550
+ if _response.status_code == 422:
551
+ raise UnprocessableEntityError(
552
+ headers=dict(_response.headers),
553
+ body=typing.cast(
554
+ typing.Optional[typing.Any],
555
+ parse_obj_as(
556
+ type_=typing.Optional[typing.Any], # type: ignore
557
+ object_=_response.json(),
558
+ ),
559
+ ),
560
+ )
561
+ if _response.status_code == 429:
562
+ raise TooManyRequestsError(
563
+ headers=dict(_response.headers),
564
+ body=typing.cast(
565
+ TooManyRequests,
566
+ parse_obj_as(
567
+ type_=TooManyRequests, # type: ignore
568
+ object_=_response.json(),
569
+ ),
570
+ ),
571
+ )
572
+ _response_json = _response.json()
573
+ except JSONDecodeError:
574
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
575
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
576
+
577
+ def move(
578
+ self,
579
+ account_id: Uuid,
580
+ version_stack_id: Uuid,
581
+ *,
582
+ data: VersionStackMoveParamsData,
583
+ request_options: typing.Optional[RequestOptions] = None,
584
+ ) -> HttpResponse[VersionStackResponse]:
585
+ """
586
+ Move version stack to a folder. <br><br>Rate Limits: 10 calls per 1.00 minute(s) per account
587
+
588
+ Parameters
589
+ ----------
590
+ account_id : Uuid
591
+
592
+
593
+ version_stack_id : Uuid
594
+
595
+
596
+ data : VersionStackMoveParamsData
597
+
598
+ request_options : typing.Optional[RequestOptions]
599
+ Request-specific configuration.
600
+
601
+ Returns
602
+ -------
603
+ HttpResponse[VersionStackResponse]
604
+ OK
605
+ """
606
+ _response = self._client_wrapper.httpx_client.request(
607
+ f"v4/accounts/{jsonable_encoder(account_id)}/version_stacks/{jsonable_encoder(version_stack_id)}/move",
608
+ method="PATCH",
609
+ json={
610
+ "data": convert_and_respect_annotation_metadata(
611
+ object_=data, annotation=VersionStackMoveParamsData, direction="write"
612
+ ),
613
+ },
614
+ headers={
615
+ "content-type": "application/json",
616
+ },
617
+ request_options=request_options,
618
+ omit=OMIT,
619
+ )
620
+ try:
621
+ if 200 <= _response.status_code < 300:
622
+ _data = typing.cast(
623
+ VersionStackResponse,
624
+ parse_obj_as(
625
+ type_=VersionStackResponse, # type: ignore
626
+ object_=_response.json(),
627
+ ),
628
+ )
629
+ return HttpResponse(response=_response, data=_data)
630
+ if _response.status_code == 400:
631
+ raise BadRequestError(
632
+ headers=dict(_response.headers),
633
+ body=typing.cast(
634
+ BadRequest,
635
+ parse_obj_as(
636
+ type_=BadRequest, # type: ignore
637
+ object_=_response.json(),
638
+ ),
639
+ ),
640
+ )
641
+ if _response.status_code == 401:
642
+ raise UnauthorizedError(
643
+ headers=dict(_response.headers),
644
+ body=typing.cast(
645
+ Unauthorized,
646
+ parse_obj_as(
647
+ type_=Unauthorized, # type: ignore
648
+ object_=_response.json(),
649
+ ),
650
+ ),
651
+ )
652
+ if _response.status_code == 403:
653
+ raise ForbiddenError(
654
+ headers=dict(_response.headers),
655
+ body=typing.cast(
656
+ Forbidden,
657
+ parse_obj_as(
658
+ type_=Forbidden, # type: ignore
659
+ object_=_response.json(),
660
+ ),
661
+ ),
662
+ )
663
+ if _response.status_code == 404:
664
+ raise NotFoundError(
665
+ headers=dict(_response.headers),
666
+ body=typing.cast(
667
+ NotFound,
668
+ parse_obj_as(
669
+ type_=NotFound, # type: ignore
670
+ object_=_response.json(),
671
+ ),
672
+ ),
673
+ )
674
+ if _response.status_code == 422:
675
+ raise UnprocessableEntityError(
676
+ headers=dict(_response.headers),
677
+ body=typing.cast(
678
+ typing.Optional[typing.Any],
679
+ parse_obj_as(
680
+ type_=typing.Optional[typing.Any], # type: ignore
681
+ object_=_response.json(),
682
+ ),
683
+ ),
684
+ )
685
+ if _response.status_code == 429:
686
+ raise TooManyRequestsError(
687
+ headers=dict(_response.headers),
688
+ body=typing.cast(
689
+ TooManyRequests,
690
+ parse_obj_as(
691
+ type_=TooManyRequests, # type: ignore
692
+ object_=_response.json(),
693
+ ),
694
+ ),
695
+ )
696
+ _response_json = _response.json()
697
+ except JSONDecodeError:
698
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
699
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
700
+
701
+
702
+ class AsyncRawVersionStacksClient:
703
+ def __init__(self, *, client_wrapper: AsyncClientWrapper):
704
+ self._client_wrapper = client_wrapper
705
+
706
+ async def index(
707
+ self,
708
+ account_id: Uuid,
709
+ version_stack_id: Uuid,
710
+ *,
711
+ include: typing.Optional[FileWithMediaLinksInclude] = None,
712
+ after: typing.Optional[RequestAfterOpaqueCursor] = None,
713
+ page_size: typing.Optional[RequestPageSize] = None,
714
+ include_total_count: typing.Optional[IncludeTotalCount] = None,
715
+ request_options: typing.Optional[RequestOptions] = None,
716
+ ) -> AsyncHttpResponse[AssetsWithIncludesResponse]:
717
+ """
718
+ List the children (files) in a given version stack.
719
+ <br><br>
720
+ Use the `include` query parameter to selectively include additional properties in the response.
721
+ <br><br>
722
+ Note: if you include `media_links.original` and the user does not have permission to download files
723
+ in the corresponding project, then this endpoint will respond with a `403 Forbidden` error.
724
+ If the content is inaccessible because watermarking is required for this user and isn't supported by
725
+ the requested media_links, then the request will succeed but the unsupported media links will be set to null.
726
+ Similarly, if a requested transcode link does not exist for a particular file (e.g. including
727
+ `media_links.video_h264_180` on a static image file) or transoding process hasn't finished
728
+ (i.e. the file's `status` is "uploaded" rather than "transcoded"), then the a media link will also be set to
729
+ null in the response payload. In short, the client must handle null media links gracefully.
730
+
731
+ Parameters
732
+ ----------
733
+ account_id : Uuid
734
+
735
+
736
+ version_stack_id : Uuid
737
+
738
+
739
+ include : typing.Optional[FileWithMediaLinksInclude]
740
+
741
+
742
+ after : typing.Optional[RequestAfterOpaqueCursor]
743
+ Opaque Cursor query param for requests returning paginated results.
744
+ <br/>
745
+ NOTE: this value is auto-generated and included as part of links from a previous response. It is not intended to be human readable.
746
+
747
+ page_size : typing.Optional[RequestPageSize]
748
+
749
+
750
+ include_total_count : typing.Optional[IncludeTotalCount]
751
+
752
+
753
+ request_options : typing.Optional[RequestOptions]
754
+ Request-specific configuration.
755
+
756
+ Returns
757
+ -------
758
+ AsyncHttpResponse[AssetsWithIncludesResponse]
759
+ OK
760
+ """
761
+ _response = await self._client_wrapper.httpx_client.request(
762
+ f"v4/accounts/{jsonable_encoder(account_id)}/version_stacks/{jsonable_encoder(version_stack_id)}/children",
763
+ method="GET",
764
+ params={
765
+ "include": include,
766
+ "after": after,
767
+ "page_size": page_size,
768
+ "include_total_count": include_total_count,
769
+ },
770
+ request_options=request_options,
771
+ )
772
+ try:
773
+ if 200 <= _response.status_code < 300:
774
+ _data = typing.cast(
775
+ AssetsWithIncludesResponse,
776
+ parse_obj_as(
777
+ type_=AssetsWithIncludesResponse, # type: ignore
778
+ object_=_response.json(),
779
+ ),
780
+ )
781
+ return AsyncHttpResponse(response=_response, data=_data)
782
+ if _response.status_code == 400:
783
+ raise BadRequestError(
784
+ headers=dict(_response.headers),
785
+ body=typing.cast(
786
+ BadRequest,
787
+ parse_obj_as(
788
+ type_=BadRequest, # type: ignore
789
+ object_=_response.json(),
790
+ ),
791
+ ),
792
+ )
793
+ if _response.status_code == 401:
794
+ raise UnauthorizedError(
795
+ headers=dict(_response.headers),
796
+ body=typing.cast(
797
+ Unauthorized,
798
+ parse_obj_as(
799
+ type_=Unauthorized, # type: ignore
800
+ object_=_response.json(),
801
+ ),
802
+ ),
803
+ )
804
+ if _response.status_code == 403:
805
+ raise ForbiddenError(
806
+ headers=dict(_response.headers),
807
+ body=typing.cast(
808
+ Forbidden,
809
+ parse_obj_as(
810
+ type_=Forbidden, # type: ignore
811
+ object_=_response.json(),
812
+ ),
813
+ ),
814
+ )
815
+ if _response.status_code == 404:
816
+ raise NotFoundError(
817
+ headers=dict(_response.headers),
818
+ body=typing.cast(
819
+ NotFound,
820
+ parse_obj_as(
821
+ type_=NotFound, # type: ignore
822
+ object_=_response.json(),
823
+ ),
824
+ ),
825
+ )
826
+ if _response.status_code == 422:
827
+ raise UnprocessableEntityError(
828
+ headers=dict(_response.headers),
829
+ body=typing.cast(
830
+ typing.Optional[typing.Any],
831
+ parse_obj_as(
832
+ type_=typing.Optional[typing.Any], # type: ignore
833
+ object_=_response.json(),
834
+ ),
835
+ ),
836
+ )
837
+ if _response.status_code == 429:
838
+ raise TooManyRequestsError(
839
+ headers=dict(_response.headers),
840
+ body=typing.cast(
841
+ TooManyRequests,
842
+ parse_obj_as(
843
+ type_=TooManyRequests, # type: ignore
844
+ object_=_response.json(),
845
+ ),
846
+ ),
847
+ )
848
+ _response_json = _response.json()
849
+ except JSONDecodeError:
850
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
851
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
852
+
853
+ async def copy(
854
+ self,
855
+ account_id: Uuid,
856
+ version_stack_id: Uuid,
857
+ *,
858
+ data: typing.Optional[VersionStackCopyParamsData] = OMIT,
859
+ request_options: typing.Optional[RequestOptions] = None,
860
+ ) -> AsyncHttpResponse[VersionStackCopyResponse]:
861
+ """
862
+ Copy version stack. <br><br>Rate Limits: 10 calls per 1.00 minute(s) per account
863
+
864
+ Parameters
865
+ ----------
866
+ account_id : Uuid
867
+
868
+
869
+ version_stack_id : Uuid
870
+
871
+
872
+ data : typing.Optional[VersionStackCopyParamsData]
873
+
874
+ request_options : typing.Optional[RequestOptions]
875
+ Request-specific configuration.
876
+
877
+ Returns
878
+ -------
879
+ AsyncHttpResponse[VersionStackCopyResponse]
880
+ OK
881
+ """
882
+ _response = await self._client_wrapper.httpx_client.request(
883
+ f"v4/accounts/{jsonable_encoder(account_id)}/version_stacks/{jsonable_encoder(version_stack_id)}/copy",
884
+ method="POST",
885
+ json={
886
+ "data": convert_and_respect_annotation_metadata(
887
+ object_=data, annotation=VersionStackCopyParamsData, direction="write"
888
+ ),
889
+ },
890
+ headers={
891
+ "content-type": "application/json",
892
+ },
893
+ request_options=request_options,
894
+ omit=OMIT,
895
+ )
896
+ try:
897
+ if 200 <= _response.status_code < 300:
898
+ _data = typing.cast(
899
+ VersionStackCopyResponse,
900
+ parse_obj_as(
901
+ type_=VersionStackCopyResponse, # type: ignore
902
+ object_=_response.json(),
903
+ ),
904
+ )
905
+ return AsyncHttpResponse(response=_response, data=_data)
906
+ if _response.status_code == 400:
907
+ raise BadRequestError(
908
+ headers=dict(_response.headers),
909
+ body=typing.cast(
910
+ BadRequest,
911
+ parse_obj_as(
912
+ type_=BadRequest, # type: ignore
913
+ object_=_response.json(),
914
+ ),
915
+ ),
916
+ )
917
+ if _response.status_code == 401:
918
+ raise UnauthorizedError(
919
+ headers=dict(_response.headers),
920
+ body=typing.cast(
921
+ Unauthorized,
922
+ parse_obj_as(
923
+ type_=Unauthorized, # type: ignore
924
+ object_=_response.json(),
925
+ ),
926
+ ),
927
+ )
928
+ if _response.status_code == 403:
929
+ raise ForbiddenError(
930
+ headers=dict(_response.headers),
931
+ body=typing.cast(
932
+ Forbidden,
933
+ parse_obj_as(
934
+ type_=Forbidden, # type: ignore
935
+ object_=_response.json(),
936
+ ),
937
+ ),
938
+ )
939
+ if _response.status_code == 404:
940
+ raise NotFoundError(
941
+ headers=dict(_response.headers),
942
+ body=typing.cast(
943
+ NotFound,
944
+ parse_obj_as(
945
+ type_=NotFound, # type: ignore
946
+ object_=_response.json(),
947
+ ),
948
+ ),
949
+ )
950
+ if _response.status_code == 422:
951
+ raise UnprocessableEntityError(
952
+ headers=dict(_response.headers),
953
+ body=typing.cast(
954
+ typing.Optional[typing.Any],
955
+ parse_obj_as(
956
+ type_=typing.Optional[typing.Any], # type: ignore
957
+ object_=_response.json(),
958
+ ),
959
+ ),
960
+ )
961
+ if _response.status_code == 429:
962
+ raise TooManyRequestsError(
963
+ headers=dict(_response.headers),
964
+ body=typing.cast(
965
+ TooManyRequests,
966
+ parse_obj_as(
967
+ type_=TooManyRequests, # type: ignore
968
+ object_=_response.json(),
969
+ ),
970
+ ),
971
+ )
972
+ _response_json = _response.json()
973
+ except JSONDecodeError:
974
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
975
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
976
+
977
+ async def list(
978
+ self,
979
+ account_id: Uuid,
980
+ folder_id: Uuid,
981
+ *,
982
+ include: typing.Optional[FileWithMediaLinksInclude] = None,
983
+ after: typing.Optional[RequestAfterOpaqueCursor] = None,
984
+ page_size: typing.Optional[RequestPageSize] = None,
985
+ include_total_count: typing.Optional[IncludeTotalCount] = None,
986
+ request_options: typing.Optional[RequestOptions] = None,
987
+ ) -> AsyncHttpResponse[VersionStacksWithIncludesResponse]:
988
+ """
989
+ List version stacks in a given folder
990
+
991
+ Parameters
992
+ ----------
993
+ account_id : Uuid
994
+
995
+
996
+ folder_id : Uuid
997
+
998
+
999
+ include : typing.Optional[FileWithMediaLinksInclude]
1000
+
1001
+
1002
+ after : typing.Optional[RequestAfterOpaqueCursor]
1003
+ Opaque Cursor query param for requests returning paginated results.
1004
+ <br/>
1005
+ NOTE: this value is auto-generated and included as part of links from a previous response. It is not intended to be human readable.
1006
+
1007
+ page_size : typing.Optional[RequestPageSize]
1008
+
1009
+
1010
+ include_total_count : typing.Optional[IncludeTotalCount]
1011
+
1012
+
1013
+ request_options : typing.Optional[RequestOptions]
1014
+ Request-specific configuration.
1015
+
1016
+ Returns
1017
+ -------
1018
+ AsyncHttpResponse[VersionStacksWithIncludesResponse]
1019
+ OK
1020
+ """
1021
+ _response = await self._client_wrapper.httpx_client.request(
1022
+ f"v4/accounts/{jsonable_encoder(account_id)}/folders/{jsonable_encoder(folder_id)}/version_stacks",
1023
+ method="GET",
1024
+ params={
1025
+ "include": include,
1026
+ "after": after,
1027
+ "page_size": page_size,
1028
+ "include_total_count": include_total_count,
1029
+ },
1030
+ request_options=request_options,
1031
+ )
1032
+ try:
1033
+ if 200 <= _response.status_code < 300:
1034
+ _data = typing.cast(
1035
+ VersionStacksWithIncludesResponse,
1036
+ parse_obj_as(
1037
+ type_=VersionStacksWithIncludesResponse, # type: ignore
1038
+ object_=_response.json(),
1039
+ ),
1040
+ )
1041
+ return AsyncHttpResponse(response=_response, data=_data)
1042
+ if _response.status_code == 400:
1043
+ raise BadRequestError(
1044
+ headers=dict(_response.headers),
1045
+ body=typing.cast(
1046
+ BadRequest,
1047
+ parse_obj_as(
1048
+ type_=BadRequest, # type: ignore
1049
+ object_=_response.json(),
1050
+ ),
1051
+ ),
1052
+ )
1053
+ if _response.status_code == 401:
1054
+ raise UnauthorizedError(
1055
+ headers=dict(_response.headers),
1056
+ body=typing.cast(
1057
+ Unauthorized,
1058
+ parse_obj_as(
1059
+ type_=Unauthorized, # type: ignore
1060
+ object_=_response.json(),
1061
+ ),
1062
+ ),
1063
+ )
1064
+ if _response.status_code == 403:
1065
+ raise ForbiddenError(
1066
+ headers=dict(_response.headers),
1067
+ body=typing.cast(
1068
+ Forbidden,
1069
+ parse_obj_as(
1070
+ type_=Forbidden, # type: ignore
1071
+ object_=_response.json(),
1072
+ ),
1073
+ ),
1074
+ )
1075
+ if _response.status_code == 404:
1076
+ raise NotFoundError(
1077
+ headers=dict(_response.headers),
1078
+ body=typing.cast(
1079
+ NotFound,
1080
+ parse_obj_as(
1081
+ type_=NotFound, # type: ignore
1082
+ object_=_response.json(),
1083
+ ),
1084
+ ),
1085
+ )
1086
+ if _response.status_code == 422:
1087
+ raise UnprocessableEntityError(
1088
+ headers=dict(_response.headers),
1089
+ body=typing.cast(
1090
+ typing.Optional[typing.Any],
1091
+ parse_obj_as(
1092
+ type_=typing.Optional[typing.Any], # type: ignore
1093
+ object_=_response.json(),
1094
+ ),
1095
+ ),
1096
+ )
1097
+ if _response.status_code == 429:
1098
+ raise TooManyRequestsError(
1099
+ headers=dict(_response.headers),
1100
+ body=typing.cast(
1101
+ TooManyRequests,
1102
+ parse_obj_as(
1103
+ type_=TooManyRequests, # type: ignore
1104
+ object_=_response.json(),
1105
+ ),
1106
+ ),
1107
+ )
1108
+ _response_json = _response.json()
1109
+ except JSONDecodeError:
1110
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
1111
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
1112
+
1113
+ async def create(
1114
+ self,
1115
+ account_id: Uuid,
1116
+ folder_id: Uuid,
1117
+ *,
1118
+ data: VersionStackCreateParamsData,
1119
+ request_options: typing.Optional[RequestOptions] = None,
1120
+ ) -> AsyncHttpResponse[VersionStackWithIncludesResponse]:
1121
+ """
1122
+ Create a new Version Stack under the parent folder. <br><br>Rate Limits: 10 calls per 1.00 minute(s) per account
1123
+
1124
+ Parameters
1125
+ ----------
1126
+ account_id : Uuid
1127
+
1128
+
1129
+ folder_id : Uuid
1130
+
1131
+
1132
+ data : VersionStackCreateParamsData
1133
+
1134
+ request_options : typing.Optional[RequestOptions]
1135
+ Request-specific configuration.
1136
+
1137
+ Returns
1138
+ -------
1139
+ AsyncHttpResponse[VersionStackWithIncludesResponse]
1140
+ Created
1141
+ """
1142
+ _response = await self._client_wrapper.httpx_client.request(
1143
+ f"v4/accounts/{jsonable_encoder(account_id)}/folders/{jsonable_encoder(folder_id)}/version_stacks",
1144
+ method="POST",
1145
+ json={
1146
+ "data": convert_and_respect_annotation_metadata(
1147
+ object_=data, annotation=VersionStackCreateParamsData, direction="write"
1148
+ ),
1149
+ },
1150
+ headers={
1151
+ "content-type": "application/json",
1152
+ },
1153
+ request_options=request_options,
1154
+ omit=OMIT,
1155
+ )
1156
+ try:
1157
+ if 200 <= _response.status_code < 300:
1158
+ _data = typing.cast(
1159
+ VersionStackWithIncludesResponse,
1160
+ parse_obj_as(
1161
+ type_=VersionStackWithIncludesResponse, # type: ignore
1162
+ object_=_response.json(),
1163
+ ),
1164
+ )
1165
+ return AsyncHttpResponse(response=_response, data=_data)
1166
+ if _response.status_code == 400:
1167
+ raise BadRequestError(
1168
+ headers=dict(_response.headers),
1169
+ body=typing.cast(
1170
+ BadRequest,
1171
+ parse_obj_as(
1172
+ type_=BadRequest, # type: ignore
1173
+ object_=_response.json(),
1174
+ ),
1175
+ ),
1176
+ )
1177
+ if _response.status_code == 401:
1178
+ raise UnauthorizedError(
1179
+ headers=dict(_response.headers),
1180
+ body=typing.cast(
1181
+ Unauthorized,
1182
+ parse_obj_as(
1183
+ type_=Unauthorized, # type: ignore
1184
+ object_=_response.json(),
1185
+ ),
1186
+ ),
1187
+ )
1188
+ if _response.status_code == 403:
1189
+ raise ForbiddenError(
1190
+ headers=dict(_response.headers),
1191
+ body=typing.cast(
1192
+ Forbidden,
1193
+ parse_obj_as(
1194
+ type_=Forbidden, # type: ignore
1195
+ object_=_response.json(),
1196
+ ),
1197
+ ),
1198
+ )
1199
+ if _response.status_code == 404:
1200
+ raise NotFoundError(
1201
+ headers=dict(_response.headers),
1202
+ body=typing.cast(
1203
+ NotFound,
1204
+ parse_obj_as(
1205
+ type_=NotFound, # type: ignore
1206
+ object_=_response.json(),
1207
+ ),
1208
+ ),
1209
+ )
1210
+ if _response.status_code == 422:
1211
+ raise UnprocessableEntityError(
1212
+ headers=dict(_response.headers),
1213
+ body=typing.cast(
1214
+ typing.Optional[typing.Any],
1215
+ parse_obj_as(
1216
+ type_=typing.Optional[typing.Any], # type: ignore
1217
+ object_=_response.json(),
1218
+ ),
1219
+ ),
1220
+ )
1221
+ if _response.status_code == 429:
1222
+ raise TooManyRequestsError(
1223
+ headers=dict(_response.headers),
1224
+ body=typing.cast(
1225
+ TooManyRequests,
1226
+ parse_obj_as(
1227
+ type_=TooManyRequests, # type: ignore
1228
+ object_=_response.json(),
1229
+ ),
1230
+ ),
1231
+ )
1232
+ _response_json = _response.json()
1233
+ except JSONDecodeError:
1234
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
1235
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
1236
+
1237
+ async def move(
1238
+ self,
1239
+ account_id: Uuid,
1240
+ version_stack_id: Uuid,
1241
+ *,
1242
+ data: VersionStackMoveParamsData,
1243
+ request_options: typing.Optional[RequestOptions] = None,
1244
+ ) -> AsyncHttpResponse[VersionStackResponse]:
1245
+ """
1246
+ Move version stack to a folder. <br><br>Rate Limits: 10 calls per 1.00 minute(s) per account
1247
+
1248
+ Parameters
1249
+ ----------
1250
+ account_id : Uuid
1251
+
1252
+
1253
+ version_stack_id : Uuid
1254
+
1255
+
1256
+ data : VersionStackMoveParamsData
1257
+
1258
+ request_options : typing.Optional[RequestOptions]
1259
+ Request-specific configuration.
1260
+
1261
+ Returns
1262
+ -------
1263
+ AsyncHttpResponse[VersionStackResponse]
1264
+ OK
1265
+ """
1266
+ _response = await self._client_wrapper.httpx_client.request(
1267
+ f"v4/accounts/{jsonable_encoder(account_id)}/version_stacks/{jsonable_encoder(version_stack_id)}/move",
1268
+ method="PATCH",
1269
+ json={
1270
+ "data": convert_and_respect_annotation_metadata(
1271
+ object_=data, annotation=VersionStackMoveParamsData, direction="write"
1272
+ ),
1273
+ },
1274
+ headers={
1275
+ "content-type": "application/json",
1276
+ },
1277
+ request_options=request_options,
1278
+ omit=OMIT,
1279
+ )
1280
+ try:
1281
+ if 200 <= _response.status_code < 300:
1282
+ _data = typing.cast(
1283
+ VersionStackResponse,
1284
+ parse_obj_as(
1285
+ type_=VersionStackResponse, # type: ignore
1286
+ object_=_response.json(),
1287
+ ),
1288
+ )
1289
+ return AsyncHttpResponse(response=_response, data=_data)
1290
+ if _response.status_code == 400:
1291
+ raise BadRequestError(
1292
+ headers=dict(_response.headers),
1293
+ body=typing.cast(
1294
+ BadRequest,
1295
+ parse_obj_as(
1296
+ type_=BadRequest, # type: ignore
1297
+ object_=_response.json(),
1298
+ ),
1299
+ ),
1300
+ )
1301
+ if _response.status_code == 401:
1302
+ raise UnauthorizedError(
1303
+ headers=dict(_response.headers),
1304
+ body=typing.cast(
1305
+ Unauthorized,
1306
+ parse_obj_as(
1307
+ type_=Unauthorized, # type: ignore
1308
+ object_=_response.json(),
1309
+ ),
1310
+ ),
1311
+ )
1312
+ if _response.status_code == 403:
1313
+ raise ForbiddenError(
1314
+ headers=dict(_response.headers),
1315
+ body=typing.cast(
1316
+ Forbidden,
1317
+ parse_obj_as(
1318
+ type_=Forbidden, # type: ignore
1319
+ object_=_response.json(),
1320
+ ),
1321
+ ),
1322
+ )
1323
+ if _response.status_code == 404:
1324
+ raise NotFoundError(
1325
+ headers=dict(_response.headers),
1326
+ body=typing.cast(
1327
+ NotFound,
1328
+ parse_obj_as(
1329
+ type_=NotFound, # type: ignore
1330
+ object_=_response.json(),
1331
+ ),
1332
+ ),
1333
+ )
1334
+ if _response.status_code == 422:
1335
+ raise UnprocessableEntityError(
1336
+ headers=dict(_response.headers),
1337
+ body=typing.cast(
1338
+ typing.Optional[typing.Any],
1339
+ parse_obj_as(
1340
+ type_=typing.Optional[typing.Any], # type: ignore
1341
+ object_=_response.json(),
1342
+ ),
1343
+ ),
1344
+ )
1345
+ if _response.status_code == 429:
1346
+ raise TooManyRequestsError(
1347
+ headers=dict(_response.headers),
1348
+ body=typing.cast(
1349
+ TooManyRequests,
1350
+ parse_obj_as(
1351
+ type_=TooManyRequests, # type: ignore
1352
+ object_=_response.json(),
1353
+ ),
1354
+ ),
1355
+ )
1356
+ _response_json = _response.json()
1357
+ except JSONDecodeError:
1358
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
1359
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)