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,1259 @@
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.workspace_params_data import WorkspaceParamsData
30
+ from ..types.workspace_response import WorkspaceResponse
31
+ from ..types.workspace_with_includes import WorkspaceWithIncludes
32
+ from ..types.workspace_with_includes_response import WorkspaceWithIncludesResponse
33
+ from ..types.workspaces_with_includes_response import WorkspacesWithIncludesResponse
34
+
35
+ # this is used as the default value for optional parameters
36
+ OMIT = typing.cast(typing.Any, ...)
37
+
38
+
39
+ class RawWorkspacesClient:
40
+ def __init__(self, *, client_wrapper: SyncClientWrapper):
41
+ self._client_wrapper = client_wrapper
42
+
43
+ def show(
44
+ self,
45
+ account_id: Uuid,
46
+ workspace_id: Uuid,
47
+ *,
48
+ include: typing.Optional[typing.Literal["creator"]] = None,
49
+ request_options: typing.Optional[RequestOptions] = None,
50
+ ) -> HttpResponse[WorkspaceWithIncludesResponse]:
51
+ """
52
+ Show workspace details. <br>Rate Limits: 100 calls per 1.00 minute(s) per account_user
53
+
54
+ Parameters
55
+ ----------
56
+ account_id : Uuid
57
+
58
+
59
+ workspace_id : Uuid
60
+
61
+
62
+ include : typing.Optional[typing.Literal["creator"]]
63
+
64
+
65
+ request_options : typing.Optional[RequestOptions]
66
+ Request-specific configuration.
67
+
68
+ Returns
69
+ -------
70
+ HttpResponse[WorkspaceWithIncludesResponse]
71
+ OK
72
+ """
73
+ _response = self._client_wrapper.httpx_client.request(
74
+ f"v4/accounts/{jsonable_encoder(account_id)}/workspaces/{jsonable_encoder(workspace_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
+ WorkspaceWithIncludesResponse,
85
+ construct_type(
86
+ type_=WorkspaceWithIncludesResponse, # 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
+ construct_type(
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
+ construct_type(
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
+ construct_type(
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
+ construct_type(
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.Any,
140
+ construct_type(
141
+ type_=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
+ construct_type(
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, workspace_id: Uuid, *, request_options: typing.Optional[RequestOptions] = None
164
+ ) -> HttpResponse[None]:
165
+ """
166
+ Delete workspace from account. <br>Rate Limits: 60 calls per 1.00 minute(s) per account_user
167
+
168
+ Parameters
169
+ ----------
170
+ account_id : Uuid
171
+
172
+
173
+ workspace_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)}/workspaces/{jsonable_encoder(workspace_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
+ construct_type(
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
+ construct_type(
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
+ construct_type(
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
+ construct_type(
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.Any,
240
+ construct_type(
241
+ type_=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
+ construct_type(
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
+ workspace_id: Uuid,
266
+ *,
267
+ data: WorkspaceParamsData,
268
+ request_options: typing.Optional[RequestOptions] = None,
269
+ ) -> HttpResponse[WorkspaceResponse]:
270
+ """
271
+ Update a workspace. <br>Rate Limits: 10 calls per 1.00 minute(s) per account_user
272
+
273
+ Parameters
274
+ ----------
275
+ account_id : Uuid
276
+
277
+
278
+ workspace_id : Uuid
279
+
280
+
281
+ data : WorkspaceParamsData
282
+
283
+ request_options : typing.Optional[RequestOptions]
284
+ Request-specific configuration.
285
+
286
+ Returns
287
+ -------
288
+ HttpResponse[WorkspaceResponse]
289
+ OK
290
+ """
291
+ _response = self._client_wrapper.httpx_client.request(
292
+ f"v4/accounts/{jsonable_encoder(account_id)}/workspaces/{jsonable_encoder(workspace_id)}",
293
+ method="PATCH",
294
+ json={
295
+ "data": convert_and_respect_annotation_metadata(
296
+ object_=data, annotation=WorkspaceParamsData, 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
+ WorkspaceResponse,
309
+ construct_type(
310
+ type_=WorkspaceResponse, # 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
+ construct_type(
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
+ construct_type(
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
+ construct_type(
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
+ construct_type(
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.Any,
364
+ construct_type(
365
+ type_=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
+ construct_type(
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
+ *,
390
+ include: typing.Optional[typing.Literal["creator"]] = None,
391
+ after: typing.Optional[RequestAfterOpaqueCursor] = None,
392
+ page_size: typing.Optional[RequestPageSize] = None,
393
+ include_total_count: typing.Optional[IncludeTotalCount] = None,
394
+ request_options: typing.Optional[RequestOptions] = None,
395
+ ) -> SyncPager[WorkspaceWithIncludes, WorkspacesWithIncludesResponse]:
396
+ """
397
+ List workspaces for a given account. <br>Rate Limits: 100 calls per 1.00 minute(s) per account_user
398
+
399
+ Parameters
400
+ ----------
401
+ account_id : Uuid
402
+
403
+
404
+ include : typing.Optional[typing.Literal["creator"]]
405
+
406
+
407
+ after : typing.Optional[RequestAfterOpaqueCursor]
408
+ Opaque Cursor query param for requests returning paginated results.
409
+ <br/>
410
+ NOTE: this value is auto-generated and included as part of links from a previous response. It is not intended to be human readable.
411
+
412
+ page_size : typing.Optional[RequestPageSize]
413
+
414
+
415
+ include_total_count : typing.Optional[IncludeTotalCount]
416
+
417
+
418
+ request_options : typing.Optional[RequestOptions]
419
+ Request-specific configuration.
420
+
421
+ Returns
422
+ -------
423
+ SyncPager[WorkspaceWithIncludes, WorkspacesWithIncludesResponse]
424
+ OK
425
+ """
426
+ _response = self._client_wrapper.httpx_client.request(
427
+ f"v4/accounts/{jsonable_encoder(account_id)}/workspaces",
428
+ method="GET",
429
+ params={
430
+ "include": include,
431
+ "after": after,
432
+ "page_size": page_size,
433
+ "include_total_count": include_total_count,
434
+ },
435
+ request_options=request_options,
436
+ )
437
+ try:
438
+ if 200 <= _response.status_code < 300:
439
+ _parsed_response = typing.cast(
440
+ WorkspacesWithIncludesResponse,
441
+ construct_type(
442
+ type_=WorkspacesWithIncludesResponse, # type: ignore
443
+ object_=_response.json(),
444
+ ),
445
+ )
446
+ _items = _parsed_response.data
447
+ _has_next = False
448
+ _get_next = None
449
+ if _parsed_response.links is not None:
450
+ _parsed_next = _parsed_response.links.next
451
+ _has_next = _parsed_next is not None and _parsed_next != ""
452
+ _get_next = lambda: self.index(
453
+ account_id,
454
+ include=include,
455
+ after=_parsed_next,
456
+ page_size=page_size,
457
+ include_total_count=include_total_count,
458
+ request_options=request_options,
459
+ )
460
+ return SyncPager(has_next=_has_next, items=_items, get_next=_get_next, response=_parsed_response)
461
+ if _response.status_code == 400:
462
+ raise BadRequestError(
463
+ headers=dict(_response.headers),
464
+ body=typing.cast(
465
+ BadRequest,
466
+ construct_type(
467
+ type_=BadRequest, # type: ignore
468
+ object_=_response.json(),
469
+ ),
470
+ ),
471
+ )
472
+ if _response.status_code == 401:
473
+ raise UnauthorizedError(
474
+ headers=dict(_response.headers),
475
+ body=typing.cast(
476
+ Unauthorized,
477
+ construct_type(
478
+ type_=Unauthorized, # type: ignore
479
+ object_=_response.json(),
480
+ ),
481
+ ),
482
+ )
483
+ if _response.status_code == 403:
484
+ raise ForbiddenError(
485
+ headers=dict(_response.headers),
486
+ body=typing.cast(
487
+ Forbidden,
488
+ construct_type(
489
+ type_=Forbidden, # type: ignore
490
+ object_=_response.json(),
491
+ ),
492
+ ),
493
+ )
494
+ if _response.status_code == 404:
495
+ raise NotFoundError(
496
+ headers=dict(_response.headers),
497
+ body=typing.cast(
498
+ NotFound,
499
+ construct_type(
500
+ type_=NotFound, # type: ignore
501
+ object_=_response.json(),
502
+ ),
503
+ ),
504
+ )
505
+ if _response.status_code == 422:
506
+ raise UnprocessableEntityError(
507
+ headers=dict(_response.headers),
508
+ body=typing.cast(
509
+ typing.Any,
510
+ construct_type(
511
+ type_=typing.Any, # type: ignore
512
+ object_=_response.json(),
513
+ ),
514
+ ),
515
+ )
516
+ if _response.status_code == 429:
517
+ raise TooManyRequestsError(
518
+ headers=dict(_response.headers),
519
+ body=typing.cast(
520
+ TooManyRequests,
521
+ construct_type(
522
+ type_=TooManyRequests, # type: ignore
523
+ object_=_response.json(),
524
+ ),
525
+ ),
526
+ )
527
+ _response_json = _response.json()
528
+ except JSONDecodeError:
529
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
530
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
531
+
532
+ def create(
533
+ self, account_id: Uuid, *, data: WorkspaceParamsData, request_options: typing.Optional[RequestOptions] = None
534
+ ) -> HttpResponse[WorkspaceResponse]:
535
+ """
536
+ Create workspace from an account. <br>Rate Limits: 10 calls per 1.00 minute(s) per account_user
537
+
538
+ Parameters
539
+ ----------
540
+ account_id : Uuid
541
+
542
+
543
+ data : WorkspaceParamsData
544
+
545
+ request_options : typing.Optional[RequestOptions]
546
+ Request-specific configuration.
547
+
548
+ Returns
549
+ -------
550
+ HttpResponse[WorkspaceResponse]
551
+ Created
552
+ """
553
+ _response = self._client_wrapper.httpx_client.request(
554
+ f"v4/accounts/{jsonable_encoder(account_id)}/workspaces",
555
+ method="POST",
556
+ json={
557
+ "data": convert_and_respect_annotation_metadata(
558
+ object_=data, annotation=WorkspaceParamsData, direction="write"
559
+ ),
560
+ },
561
+ headers={
562
+ "content-type": "application/json",
563
+ },
564
+ request_options=request_options,
565
+ omit=OMIT,
566
+ )
567
+ try:
568
+ if 200 <= _response.status_code < 300:
569
+ _data = typing.cast(
570
+ WorkspaceResponse,
571
+ construct_type(
572
+ type_=WorkspaceResponse, # type: ignore
573
+ object_=_response.json(),
574
+ ),
575
+ )
576
+ return HttpResponse(response=_response, data=_data)
577
+ if _response.status_code == 400:
578
+ raise BadRequestError(
579
+ headers=dict(_response.headers),
580
+ body=typing.cast(
581
+ BadRequest,
582
+ construct_type(
583
+ type_=BadRequest, # type: ignore
584
+ object_=_response.json(),
585
+ ),
586
+ ),
587
+ )
588
+ if _response.status_code == 401:
589
+ raise UnauthorizedError(
590
+ headers=dict(_response.headers),
591
+ body=typing.cast(
592
+ Unauthorized,
593
+ construct_type(
594
+ type_=Unauthorized, # type: ignore
595
+ object_=_response.json(),
596
+ ),
597
+ ),
598
+ )
599
+ if _response.status_code == 403:
600
+ raise ForbiddenError(
601
+ headers=dict(_response.headers),
602
+ body=typing.cast(
603
+ Forbidden,
604
+ construct_type(
605
+ type_=Forbidden, # type: ignore
606
+ object_=_response.json(),
607
+ ),
608
+ ),
609
+ )
610
+ if _response.status_code == 404:
611
+ raise NotFoundError(
612
+ headers=dict(_response.headers),
613
+ body=typing.cast(
614
+ NotFound,
615
+ construct_type(
616
+ type_=NotFound, # type: ignore
617
+ object_=_response.json(),
618
+ ),
619
+ ),
620
+ )
621
+ if _response.status_code == 422:
622
+ raise UnprocessableEntityError(
623
+ headers=dict(_response.headers),
624
+ body=typing.cast(
625
+ typing.Any,
626
+ construct_type(
627
+ type_=typing.Any, # type: ignore
628
+ object_=_response.json(),
629
+ ),
630
+ ),
631
+ )
632
+ if _response.status_code == 429:
633
+ raise TooManyRequestsError(
634
+ headers=dict(_response.headers),
635
+ body=typing.cast(
636
+ TooManyRequests,
637
+ construct_type(
638
+ type_=TooManyRequests, # type: ignore
639
+ object_=_response.json(),
640
+ ),
641
+ ),
642
+ )
643
+ _response_json = _response.json()
644
+ except JSONDecodeError:
645
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
646
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
647
+
648
+
649
+ class AsyncRawWorkspacesClient:
650
+ def __init__(self, *, client_wrapper: AsyncClientWrapper):
651
+ self._client_wrapper = client_wrapper
652
+
653
+ async def show(
654
+ self,
655
+ account_id: Uuid,
656
+ workspace_id: Uuid,
657
+ *,
658
+ include: typing.Optional[typing.Literal["creator"]] = None,
659
+ request_options: typing.Optional[RequestOptions] = None,
660
+ ) -> AsyncHttpResponse[WorkspaceWithIncludesResponse]:
661
+ """
662
+ Show workspace details. <br>Rate Limits: 100 calls per 1.00 minute(s) per account_user
663
+
664
+ Parameters
665
+ ----------
666
+ account_id : Uuid
667
+
668
+
669
+ workspace_id : Uuid
670
+
671
+
672
+ include : typing.Optional[typing.Literal["creator"]]
673
+
674
+
675
+ request_options : typing.Optional[RequestOptions]
676
+ Request-specific configuration.
677
+
678
+ Returns
679
+ -------
680
+ AsyncHttpResponse[WorkspaceWithIncludesResponse]
681
+ OK
682
+ """
683
+ _response = await self._client_wrapper.httpx_client.request(
684
+ f"v4/accounts/{jsonable_encoder(account_id)}/workspaces/{jsonable_encoder(workspace_id)}",
685
+ method="GET",
686
+ params={
687
+ "include": include,
688
+ },
689
+ request_options=request_options,
690
+ )
691
+ try:
692
+ if 200 <= _response.status_code < 300:
693
+ _data = typing.cast(
694
+ WorkspaceWithIncludesResponse,
695
+ construct_type(
696
+ type_=WorkspaceWithIncludesResponse, # type: ignore
697
+ object_=_response.json(),
698
+ ),
699
+ )
700
+ return AsyncHttpResponse(response=_response, data=_data)
701
+ if _response.status_code == 400:
702
+ raise BadRequestError(
703
+ headers=dict(_response.headers),
704
+ body=typing.cast(
705
+ BadRequest,
706
+ construct_type(
707
+ type_=BadRequest, # type: ignore
708
+ object_=_response.json(),
709
+ ),
710
+ ),
711
+ )
712
+ if _response.status_code == 401:
713
+ raise UnauthorizedError(
714
+ headers=dict(_response.headers),
715
+ body=typing.cast(
716
+ Unauthorized,
717
+ construct_type(
718
+ type_=Unauthorized, # type: ignore
719
+ object_=_response.json(),
720
+ ),
721
+ ),
722
+ )
723
+ if _response.status_code == 403:
724
+ raise ForbiddenError(
725
+ headers=dict(_response.headers),
726
+ body=typing.cast(
727
+ Forbidden,
728
+ construct_type(
729
+ type_=Forbidden, # type: ignore
730
+ object_=_response.json(),
731
+ ),
732
+ ),
733
+ )
734
+ if _response.status_code == 404:
735
+ raise NotFoundError(
736
+ headers=dict(_response.headers),
737
+ body=typing.cast(
738
+ NotFound,
739
+ construct_type(
740
+ type_=NotFound, # type: ignore
741
+ object_=_response.json(),
742
+ ),
743
+ ),
744
+ )
745
+ if _response.status_code == 422:
746
+ raise UnprocessableEntityError(
747
+ headers=dict(_response.headers),
748
+ body=typing.cast(
749
+ typing.Any,
750
+ construct_type(
751
+ type_=typing.Any, # type: ignore
752
+ object_=_response.json(),
753
+ ),
754
+ ),
755
+ )
756
+ if _response.status_code == 429:
757
+ raise TooManyRequestsError(
758
+ headers=dict(_response.headers),
759
+ body=typing.cast(
760
+ TooManyRequests,
761
+ construct_type(
762
+ type_=TooManyRequests, # type: ignore
763
+ object_=_response.json(),
764
+ ),
765
+ ),
766
+ )
767
+ _response_json = _response.json()
768
+ except JSONDecodeError:
769
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
770
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
771
+
772
+ async def delete(
773
+ self, account_id: Uuid, workspace_id: Uuid, *, request_options: typing.Optional[RequestOptions] = None
774
+ ) -> AsyncHttpResponse[None]:
775
+ """
776
+ Delete workspace from account. <br>Rate Limits: 60 calls per 1.00 minute(s) per account_user
777
+
778
+ Parameters
779
+ ----------
780
+ account_id : Uuid
781
+
782
+
783
+ workspace_id : Uuid
784
+
785
+
786
+ request_options : typing.Optional[RequestOptions]
787
+ Request-specific configuration.
788
+
789
+ Returns
790
+ -------
791
+ AsyncHttpResponse[None]
792
+ """
793
+ _response = await self._client_wrapper.httpx_client.request(
794
+ f"v4/accounts/{jsonable_encoder(account_id)}/workspaces/{jsonable_encoder(workspace_id)}",
795
+ method="DELETE",
796
+ request_options=request_options,
797
+ )
798
+ try:
799
+ if 200 <= _response.status_code < 300:
800
+ return AsyncHttpResponse(response=_response, data=None)
801
+ if _response.status_code == 400:
802
+ raise BadRequestError(
803
+ headers=dict(_response.headers),
804
+ body=typing.cast(
805
+ BadRequest,
806
+ construct_type(
807
+ type_=BadRequest, # type: ignore
808
+ object_=_response.json(),
809
+ ),
810
+ ),
811
+ )
812
+ if _response.status_code == 401:
813
+ raise UnauthorizedError(
814
+ headers=dict(_response.headers),
815
+ body=typing.cast(
816
+ Unauthorized,
817
+ construct_type(
818
+ type_=Unauthorized, # type: ignore
819
+ object_=_response.json(),
820
+ ),
821
+ ),
822
+ )
823
+ if _response.status_code == 403:
824
+ raise ForbiddenError(
825
+ headers=dict(_response.headers),
826
+ body=typing.cast(
827
+ Forbidden,
828
+ construct_type(
829
+ type_=Forbidden, # type: ignore
830
+ object_=_response.json(),
831
+ ),
832
+ ),
833
+ )
834
+ if _response.status_code == 404:
835
+ raise NotFoundError(
836
+ headers=dict(_response.headers),
837
+ body=typing.cast(
838
+ NotFound,
839
+ construct_type(
840
+ type_=NotFound, # type: ignore
841
+ object_=_response.json(),
842
+ ),
843
+ ),
844
+ )
845
+ if _response.status_code == 422:
846
+ raise UnprocessableEntityError(
847
+ headers=dict(_response.headers),
848
+ body=typing.cast(
849
+ typing.Any,
850
+ construct_type(
851
+ type_=typing.Any, # type: ignore
852
+ object_=_response.json(),
853
+ ),
854
+ ),
855
+ )
856
+ if _response.status_code == 429:
857
+ raise TooManyRequestsError(
858
+ headers=dict(_response.headers),
859
+ body=typing.cast(
860
+ TooManyRequests,
861
+ construct_type(
862
+ type_=TooManyRequests, # type: ignore
863
+ object_=_response.json(),
864
+ ),
865
+ ),
866
+ )
867
+ _response_json = _response.json()
868
+ except JSONDecodeError:
869
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
870
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
871
+
872
+ async def update(
873
+ self,
874
+ account_id: Uuid,
875
+ workspace_id: Uuid,
876
+ *,
877
+ data: WorkspaceParamsData,
878
+ request_options: typing.Optional[RequestOptions] = None,
879
+ ) -> AsyncHttpResponse[WorkspaceResponse]:
880
+ """
881
+ Update a workspace. <br>Rate Limits: 10 calls per 1.00 minute(s) per account_user
882
+
883
+ Parameters
884
+ ----------
885
+ account_id : Uuid
886
+
887
+
888
+ workspace_id : Uuid
889
+
890
+
891
+ data : WorkspaceParamsData
892
+
893
+ request_options : typing.Optional[RequestOptions]
894
+ Request-specific configuration.
895
+
896
+ Returns
897
+ -------
898
+ AsyncHttpResponse[WorkspaceResponse]
899
+ OK
900
+ """
901
+ _response = await self._client_wrapper.httpx_client.request(
902
+ f"v4/accounts/{jsonable_encoder(account_id)}/workspaces/{jsonable_encoder(workspace_id)}",
903
+ method="PATCH",
904
+ json={
905
+ "data": convert_and_respect_annotation_metadata(
906
+ object_=data, annotation=WorkspaceParamsData, direction="write"
907
+ ),
908
+ },
909
+ headers={
910
+ "content-type": "application/json",
911
+ },
912
+ request_options=request_options,
913
+ omit=OMIT,
914
+ )
915
+ try:
916
+ if 200 <= _response.status_code < 300:
917
+ _data = typing.cast(
918
+ WorkspaceResponse,
919
+ construct_type(
920
+ type_=WorkspaceResponse, # type: ignore
921
+ object_=_response.json(),
922
+ ),
923
+ )
924
+ return AsyncHttpResponse(response=_response, data=_data)
925
+ if _response.status_code == 400:
926
+ raise BadRequestError(
927
+ headers=dict(_response.headers),
928
+ body=typing.cast(
929
+ BadRequest,
930
+ construct_type(
931
+ type_=BadRequest, # type: ignore
932
+ object_=_response.json(),
933
+ ),
934
+ ),
935
+ )
936
+ if _response.status_code == 401:
937
+ raise UnauthorizedError(
938
+ headers=dict(_response.headers),
939
+ body=typing.cast(
940
+ Unauthorized,
941
+ construct_type(
942
+ type_=Unauthorized, # type: ignore
943
+ object_=_response.json(),
944
+ ),
945
+ ),
946
+ )
947
+ if _response.status_code == 403:
948
+ raise ForbiddenError(
949
+ headers=dict(_response.headers),
950
+ body=typing.cast(
951
+ Forbidden,
952
+ construct_type(
953
+ type_=Forbidden, # type: ignore
954
+ object_=_response.json(),
955
+ ),
956
+ ),
957
+ )
958
+ if _response.status_code == 404:
959
+ raise NotFoundError(
960
+ headers=dict(_response.headers),
961
+ body=typing.cast(
962
+ NotFound,
963
+ construct_type(
964
+ type_=NotFound, # type: ignore
965
+ object_=_response.json(),
966
+ ),
967
+ ),
968
+ )
969
+ if _response.status_code == 422:
970
+ raise UnprocessableEntityError(
971
+ headers=dict(_response.headers),
972
+ body=typing.cast(
973
+ typing.Any,
974
+ construct_type(
975
+ type_=typing.Any, # type: ignore
976
+ object_=_response.json(),
977
+ ),
978
+ ),
979
+ )
980
+ if _response.status_code == 429:
981
+ raise TooManyRequestsError(
982
+ headers=dict(_response.headers),
983
+ body=typing.cast(
984
+ TooManyRequests,
985
+ construct_type(
986
+ type_=TooManyRequests, # type: ignore
987
+ object_=_response.json(),
988
+ ),
989
+ ),
990
+ )
991
+ _response_json = _response.json()
992
+ except JSONDecodeError:
993
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
994
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
995
+
996
+ async def index(
997
+ self,
998
+ account_id: Uuid,
999
+ *,
1000
+ include: typing.Optional[typing.Literal["creator"]] = None,
1001
+ after: typing.Optional[RequestAfterOpaqueCursor] = None,
1002
+ page_size: typing.Optional[RequestPageSize] = None,
1003
+ include_total_count: typing.Optional[IncludeTotalCount] = None,
1004
+ request_options: typing.Optional[RequestOptions] = None,
1005
+ ) -> AsyncPager[WorkspaceWithIncludes, WorkspacesWithIncludesResponse]:
1006
+ """
1007
+ List workspaces for a given account. <br>Rate Limits: 100 calls per 1.00 minute(s) per account_user
1008
+
1009
+ Parameters
1010
+ ----------
1011
+ account_id : Uuid
1012
+
1013
+
1014
+ include : typing.Optional[typing.Literal["creator"]]
1015
+
1016
+
1017
+ after : typing.Optional[RequestAfterOpaqueCursor]
1018
+ Opaque Cursor query param for requests returning paginated results.
1019
+ <br/>
1020
+ NOTE: this value is auto-generated and included as part of links from a previous response. It is not intended to be human readable.
1021
+
1022
+ page_size : typing.Optional[RequestPageSize]
1023
+
1024
+
1025
+ include_total_count : typing.Optional[IncludeTotalCount]
1026
+
1027
+
1028
+ request_options : typing.Optional[RequestOptions]
1029
+ Request-specific configuration.
1030
+
1031
+ Returns
1032
+ -------
1033
+ AsyncPager[WorkspaceWithIncludes, WorkspacesWithIncludesResponse]
1034
+ OK
1035
+ """
1036
+ _response = await self._client_wrapper.httpx_client.request(
1037
+ f"v4/accounts/{jsonable_encoder(account_id)}/workspaces",
1038
+ method="GET",
1039
+ params={
1040
+ "include": include,
1041
+ "after": after,
1042
+ "page_size": page_size,
1043
+ "include_total_count": include_total_count,
1044
+ },
1045
+ request_options=request_options,
1046
+ )
1047
+ try:
1048
+ if 200 <= _response.status_code < 300:
1049
+ _parsed_response = typing.cast(
1050
+ WorkspacesWithIncludesResponse,
1051
+ construct_type(
1052
+ type_=WorkspacesWithIncludesResponse, # type: ignore
1053
+ object_=_response.json(),
1054
+ ),
1055
+ )
1056
+ _items = _parsed_response.data
1057
+ _has_next = False
1058
+ _get_next = None
1059
+ if _parsed_response.links is not None:
1060
+ _parsed_next = _parsed_response.links.next
1061
+ _has_next = _parsed_next is not None and _parsed_next != ""
1062
+
1063
+ async def _get_next():
1064
+ return await self.index(
1065
+ account_id,
1066
+ include=include,
1067
+ after=_parsed_next,
1068
+ page_size=page_size,
1069
+ include_total_count=include_total_count,
1070
+ request_options=request_options,
1071
+ )
1072
+
1073
+ return AsyncPager(has_next=_has_next, items=_items, get_next=_get_next, response=_parsed_response)
1074
+ if _response.status_code == 400:
1075
+ raise BadRequestError(
1076
+ headers=dict(_response.headers),
1077
+ body=typing.cast(
1078
+ BadRequest,
1079
+ construct_type(
1080
+ type_=BadRequest, # type: ignore
1081
+ object_=_response.json(),
1082
+ ),
1083
+ ),
1084
+ )
1085
+ if _response.status_code == 401:
1086
+ raise UnauthorizedError(
1087
+ headers=dict(_response.headers),
1088
+ body=typing.cast(
1089
+ Unauthorized,
1090
+ construct_type(
1091
+ type_=Unauthorized, # type: ignore
1092
+ object_=_response.json(),
1093
+ ),
1094
+ ),
1095
+ )
1096
+ if _response.status_code == 403:
1097
+ raise ForbiddenError(
1098
+ headers=dict(_response.headers),
1099
+ body=typing.cast(
1100
+ Forbidden,
1101
+ construct_type(
1102
+ type_=Forbidden, # type: ignore
1103
+ object_=_response.json(),
1104
+ ),
1105
+ ),
1106
+ )
1107
+ if _response.status_code == 404:
1108
+ raise NotFoundError(
1109
+ headers=dict(_response.headers),
1110
+ body=typing.cast(
1111
+ NotFound,
1112
+ construct_type(
1113
+ type_=NotFound, # type: ignore
1114
+ object_=_response.json(),
1115
+ ),
1116
+ ),
1117
+ )
1118
+ if _response.status_code == 422:
1119
+ raise UnprocessableEntityError(
1120
+ headers=dict(_response.headers),
1121
+ body=typing.cast(
1122
+ typing.Any,
1123
+ construct_type(
1124
+ type_=typing.Any, # type: ignore
1125
+ object_=_response.json(),
1126
+ ),
1127
+ ),
1128
+ )
1129
+ if _response.status_code == 429:
1130
+ raise TooManyRequestsError(
1131
+ headers=dict(_response.headers),
1132
+ body=typing.cast(
1133
+ TooManyRequests,
1134
+ construct_type(
1135
+ type_=TooManyRequests, # type: ignore
1136
+ object_=_response.json(),
1137
+ ),
1138
+ ),
1139
+ )
1140
+ _response_json = _response.json()
1141
+ except JSONDecodeError:
1142
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
1143
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
1144
+
1145
+ async def create(
1146
+ self, account_id: Uuid, *, data: WorkspaceParamsData, request_options: typing.Optional[RequestOptions] = None
1147
+ ) -> AsyncHttpResponse[WorkspaceResponse]:
1148
+ """
1149
+ Create workspace from an account. <br>Rate Limits: 10 calls per 1.00 minute(s) per account_user
1150
+
1151
+ Parameters
1152
+ ----------
1153
+ account_id : Uuid
1154
+
1155
+
1156
+ data : WorkspaceParamsData
1157
+
1158
+ request_options : typing.Optional[RequestOptions]
1159
+ Request-specific configuration.
1160
+
1161
+ Returns
1162
+ -------
1163
+ AsyncHttpResponse[WorkspaceResponse]
1164
+ Created
1165
+ """
1166
+ _response = await self._client_wrapper.httpx_client.request(
1167
+ f"v4/accounts/{jsonable_encoder(account_id)}/workspaces",
1168
+ method="POST",
1169
+ json={
1170
+ "data": convert_and_respect_annotation_metadata(
1171
+ object_=data, annotation=WorkspaceParamsData, direction="write"
1172
+ ),
1173
+ },
1174
+ headers={
1175
+ "content-type": "application/json",
1176
+ },
1177
+ request_options=request_options,
1178
+ omit=OMIT,
1179
+ )
1180
+ try:
1181
+ if 200 <= _response.status_code < 300:
1182
+ _data = typing.cast(
1183
+ WorkspaceResponse,
1184
+ construct_type(
1185
+ type_=WorkspaceResponse, # type: ignore
1186
+ object_=_response.json(),
1187
+ ),
1188
+ )
1189
+ return AsyncHttpResponse(response=_response, data=_data)
1190
+ if _response.status_code == 400:
1191
+ raise BadRequestError(
1192
+ headers=dict(_response.headers),
1193
+ body=typing.cast(
1194
+ BadRequest,
1195
+ construct_type(
1196
+ type_=BadRequest, # type: ignore
1197
+ object_=_response.json(),
1198
+ ),
1199
+ ),
1200
+ )
1201
+ if _response.status_code == 401:
1202
+ raise UnauthorizedError(
1203
+ headers=dict(_response.headers),
1204
+ body=typing.cast(
1205
+ Unauthorized,
1206
+ construct_type(
1207
+ type_=Unauthorized, # type: ignore
1208
+ object_=_response.json(),
1209
+ ),
1210
+ ),
1211
+ )
1212
+ if _response.status_code == 403:
1213
+ raise ForbiddenError(
1214
+ headers=dict(_response.headers),
1215
+ body=typing.cast(
1216
+ Forbidden,
1217
+ construct_type(
1218
+ type_=Forbidden, # type: ignore
1219
+ object_=_response.json(),
1220
+ ),
1221
+ ),
1222
+ )
1223
+ if _response.status_code == 404:
1224
+ raise NotFoundError(
1225
+ headers=dict(_response.headers),
1226
+ body=typing.cast(
1227
+ NotFound,
1228
+ construct_type(
1229
+ type_=NotFound, # type: ignore
1230
+ object_=_response.json(),
1231
+ ),
1232
+ ),
1233
+ )
1234
+ if _response.status_code == 422:
1235
+ raise UnprocessableEntityError(
1236
+ headers=dict(_response.headers),
1237
+ body=typing.cast(
1238
+ typing.Any,
1239
+ construct_type(
1240
+ type_=typing.Any, # type: ignore
1241
+ object_=_response.json(),
1242
+ ),
1243
+ ),
1244
+ )
1245
+ if _response.status_code == 429:
1246
+ raise TooManyRequestsError(
1247
+ headers=dict(_response.headers),
1248
+ body=typing.cast(
1249
+ TooManyRequests,
1250
+ construct_type(
1251
+ type_=TooManyRequests, # type: ignore
1252
+ object_=_response.json(),
1253
+ ),
1254
+ ),
1255
+ )
1256
+ _response_json = _response.json()
1257
+ except JSONDecodeError:
1258
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
1259
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)