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