frameio 0.0.28__py3-none-any.whl

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