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