holder-python 0.2.5__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 (391) hide show
  1. holder/__init__.py +21 -0
  2. holder/client.py +182 -0
  3. holder/collections.py +70 -0
  4. holder/events.py +238 -0
  5. holder/exceptions.py +35 -0
  6. holder/generated/__init__.py +8 -0
  7. holder/generated/api/__init__.py +1 -0
  8. holder/generated/api/default/__init__.py +1 -0
  9. holder/generated/api/default/delete_ai_messages_message_id.py +166 -0
  10. holder/generated/api/default/delete_ai_messages_message_id_links.py +205 -0
  11. holder/generated/api/default/delete_ai_providers_credentials_provider.py +168 -0
  12. holder/generated/api/default/delete_ai_threads_thread_id.py +166 -0
  13. holder/generated/api/default/delete_cards_card_id.py +225 -0
  14. holder/generated/api/default/delete_cards_card_id_links.py +205 -0
  15. holder/generated/api/default/delete_cards_card_id_milestones_milestone_id.py +175 -0
  16. holder/generated/api/default/delete_cards_card_id_resources.py +197 -0
  17. holder/generated/api/default/delete_cards_card_id_tags.py +197 -0
  18. holder/generated/api/default/delete_locations_location_id.py +105 -0
  19. holder/generated/api/default/delete_locations_location_id_binding.py +102 -0
  20. holder/generated/api/default/delete_projects_project_id.py +187 -0
  21. holder/generated/api/default/delete_resources_resource_id.py +161 -0
  22. holder/generated/api/default/delete_trash.py +181 -0
  23. holder/generated/api/default/delete_trash_type_id.py +175 -0
  24. holder/generated/api/default/get_ai_capabilities.py +166 -0
  25. holder/generated/api/default/get_ai_catalog_json.py +134 -0
  26. holder/generated/api/default/get_ai_catalog_yaml.py +132 -0
  27. holder/generated/api/default/get_ai_local_models_config.py +134 -0
  28. holder/generated/api/default/get_ai_messages.py +186 -0
  29. holder/generated/api/default/get_ai_messages_message_id.py +166 -0
  30. holder/generated/api/default/get_ai_messages_message_id_backlinks.py +194 -0
  31. holder/generated/api/default/get_ai_messages_message_id_links.py +194 -0
  32. holder/generated/api/default/get_ai_providers_catalog.py +139 -0
  33. holder/generated/api/default/get_ai_providers_credentials.py +136 -0
  34. holder/generated/api/default/get_ai_runner_pull_job_id.py +171 -0
  35. holder/generated/api/default/get_ai_runner_pull_job_id_events.py +218 -0
  36. holder/generated/api/default/get_ai_runs.py +186 -0
  37. holder/generated/api/default/get_ai_runs_run_id.py +166 -0
  38. holder/generated/api/default/get_ai_runs_run_id_events.py +213 -0
  39. holder/generated/api/default/get_ai_status.py +134 -0
  40. holder/generated/api/default/get_ai_threads.py +171 -0
  41. holder/generated/api/default/get_ai_threads_thread_id.py +166 -0
  42. holder/generated/api/default/get_calendar.py +221 -0
  43. holder/generated/api/default/get_cards.py +286 -0
  44. holder/generated/api/default/get_cards_card_id.py +166 -0
  45. holder/generated/api/default/get_cards_card_id_backlinks.py +194 -0
  46. holder/generated/api/default/get_cards_card_id_links.py +194 -0
  47. holder/generated/api/default/get_cards_card_id_milestones.py +173 -0
  48. holder/generated/api/default/get_cards_context.py +226 -0
  49. holder/generated/api/default/get_event_cursor.py +198 -0
  50. holder/generated/api/default/get_git_providers_json.py +134 -0
  51. holder/generated/api/default/get_git_providers_yaml.py +132 -0
  52. holder/generated/api/default/get_health.py +134 -0
  53. holder/generated/api/default/get_imports_job_id.py +159 -0
  54. holder/generated/api/default/get_locations.py +160 -0
  55. holder/generated/api/default/get_locations_location_id.py +157 -0
  56. holder/generated/api/default/get_openapi_yaml.py +132 -0
  57. holder/generated/api/default/get_ping.py +128 -0
  58. holder/generated/api/default/get_projects.py +261 -0
  59. holder/generated/api/default/get_projects_project_id.py +166 -0
  60. holder/generated/api/default/get_projects_project_id_cards.py +321 -0
  61. holder/generated/api/default/get_projects_project_id_encryption_check.py +166 -0
  62. holder/generated/api/default/get_projects_project_id_git_sync_status.py +171 -0
  63. holder/generated/api/default/get_projects_project_id_history.py +246 -0
  64. holder/generated/api/default/get_projects_project_id_history_cards_card_id.py +243 -0
  65. holder/generated/api/default/get_projects_project_id_history_cards_card_id_compare.py +286 -0
  66. holder/generated/api/default/get_projects_project_id_history_cards_card_id_snapshot.py +225 -0
  67. holder/generated/api/default/get_projects_project_id_tags.py +171 -0
  68. holder/generated/api/default/get_resources.py +242 -0
  69. holder/generated/api/default/get_resources_resource_id.py +161 -0
  70. holder/generated/api/default/get_resources_resource_id_assets_asset_id_content.py +247 -0
  71. holder/generated/api/default/get_search_ai.py +216 -0
  72. holder/generated/api/default/get_search_cards.py +216 -0
  73. holder/generated/api/default/get_trash.py +181 -0
  74. holder/generated/api/default/patch_ai_messages_message_id.py +192 -0
  75. holder/generated/api/default/patch_ai_threads_thread_id.py +192 -0
  76. holder/generated/api/default/patch_cards_card_id.py +192 -0
  77. holder/generated/api/default/patch_cards_card_id_milestones_milestone_id.py +214 -0
  78. holder/generated/api/default/patch_locations_location_id.py +117 -0
  79. holder/generated/api/default/patch_projects_project_id.py +192 -0
  80. holder/generated/api/default/patch_resources_resource_id.py +192 -0
  81. holder/generated/api/default/post_ai_messages.py +176 -0
  82. holder/generated/api/default/post_ai_messages_capture.py +181 -0
  83. holder/generated/api/default/post_ai_messages_message_id_links.py +192 -0
  84. holder/generated/api/default/post_ai_messages_message_id_restore.py +166 -0
  85. holder/generated/api/default/post_ai_runner_pull.py +181 -0
  86. holder/generated/api/default/post_ai_runner_retry.py +139 -0
  87. holder/generated/api/default/post_ai_runs.py +194 -0
  88. holder/generated/api/default/post_ai_threads.py +176 -0
  89. holder/generated/api/default/post_bye.py +166 -0
  90. holder/generated/api/default/post_card_references_resolve.py +181 -0
  91. holder/generated/api/default/post_cards.py +176 -0
  92. holder/generated/api/default/post_cards_card_id_links.py +192 -0
  93. holder/generated/api/default/post_cards_card_id_milestones.py +199 -0
  94. holder/generated/api/default/post_cards_card_id_move.py +222 -0
  95. holder/generated/api/default/post_cards_card_id_resources.py +197 -0
  96. holder/generated/api/default/post_cards_card_id_restore.py +186 -0
  97. holder/generated/api/default/post_cards_card_id_tags.py +197 -0
  98. holder/generated/api/default/post_imports.py +160 -0
  99. holder/generated/api/default/post_locations.py +160 -0
  100. holder/generated/api/default/post_locations_location_id_test.py +105 -0
  101. holder/generated/api/default/post_projects.py +171 -0
  102. holder/generated/api/default/post_projects_project_id_git_pull.py +211 -0
  103. holder/generated/api/default/post_projects_project_id_git_push.py +193 -0
  104. holder/generated/api/default/post_projects_project_id_git_sync.py +207 -0
  105. holder/generated/api/default/post_projects_project_id_git_test_remote.py +205 -0
  106. holder/generated/api/default/post_projects_project_id_history_cards_card_id_restore.py +240 -0
  107. holder/generated/api/default/post_projects_project_id_recovery_token_export.py +196 -0
  108. holder/generated/api/default/post_projects_project_id_recovery_token_import.py +196 -0
  109. holder/generated/api/default/post_projects_project_id_repair_hierarchy.py +240 -0
  110. holder/generated/api/default/post_rebuild.py +176 -0
  111. holder/generated/api/default/post_recovery_token_import.py +185 -0
  112. holder/generated/api/default/post_reindex.py +139 -0
  113. holder/generated/api/default/post_resources.py +176 -0
  114. holder/generated/api/default/put_ai_local_models_config.py +173 -0
  115. holder/generated/api/default/put_ai_providers_credentials.py +175 -0
  116. holder/generated/api/default/put_locations_location_id_binding.py +117 -0
  117. holder/generated/api/default/put_locations_preferred.py +107 -0
  118. holder/generated/api/default/stream_changes.py +256 -0
  119. holder/generated/client.py +280 -0
  120. holder/generated/errors.py +16 -0
  121. holder/generated/models/__init__.py +569 -0
  122. holder/generated/models/ai_local_model_config_data.py +111 -0
  123. holder/generated/models/ai_local_model_config_response.py +78 -0
  124. holder/generated/models/ai_local_model_config_update_request.py +134 -0
  125. holder/generated/models/ai_message.py +204 -0
  126. holder/generated/models/ai_message_capture_request.py +246 -0
  127. holder/generated/models/ai_message_capture_request_context_type_0.py +46 -0
  128. holder/generated/models/ai_message_capture_response.py +78 -0
  129. holder/generated/models/ai_message_capture_response_data.py +78 -0
  130. holder/generated/models/ai_message_create_request.py +186 -0
  131. holder/generated/models/ai_message_create_response.py +78 -0
  132. holder/generated/models/ai_message_create_response_data.py +62 -0
  133. holder/generated/models/ai_message_get_response.py +76 -0
  134. holder/generated/models/ai_message_list_response.py +84 -0
  135. holder/generated/models/ai_message_update_request.py +203 -0
  136. holder/generated/models/ai_message_update_response.py +78 -0
  137. holder/generated/models/ai_message_update_response_data.py +62 -0
  138. holder/generated/models/ai_provider_catalog_provider.py +265 -0
  139. holder/generated/models/ai_provider_catalog_provider_api_type_0.py +46 -0
  140. holder/generated/models/ai_provider_catalog_provider_auth_type_0.py +46 -0
  141. holder/generated/models/ai_provider_catalog_provider_models_item.py +46 -0
  142. holder/generated/models/ai_provider_catalog_response.py +78 -0
  143. holder/generated/models/ai_provider_catalog_response_data.py +100 -0
  144. holder/generated/models/ai_provider_credential.py +94 -0
  145. holder/generated/models/ai_provider_credential_delete_response.py +80 -0
  146. holder/generated/models/ai_provider_credential_delete_response_data.py +62 -0
  147. holder/generated/models/ai_provider_credential_upsert_request.py +92 -0
  148. holder/generated/models/ai_provider_credential_upsert_response.py +78 -0
  149. holder/generated/models/ai_provider_credentials_list_response.py +80 -0
  150. holder/generated/models/ai_provider_credentials_list_response_data.py +78 -0
  151. holder/generated/models/ai_run_create_request.py +133 -0
  152. holder/generated/models/ai_run_create_request_context.py +46 -0
  153. holder/generated/models/ai_run_event_data.py +146 -0
  154. holder/generated/models/ai_run_get_response.py +76 -0
  155. holder/generated/models/ai_run_item.py +328 -0
  156. holder/generated/models/ai_run_item_policy_trace_type_0.py +46 -0
  157. holder/generated/models/ai_run_list_response.py +84 -0
  158. holder/generated/models/ai_status_data.py +186 -0
  159. holder/generated/models/ai_status_pull_job.py +130 -0
  160. holder/generated/models/ai_status_response.py +76 -0
  161. holder/generated/models/ai_thread.py +116 -0
  162. holder/generated/models/ai_thread_create_request.py +119 -0
  163. holder/generated/models/ai_thread_create_response.py +78 -0
  164. holder/generated/models/ai_thread_create_response_data.py +62 -0
  165. holder/generated/models/ai_thread_get_response.py +76 -0
  166. holder/generated/models/ai_thread_list_response.py +84 -0
  167. holder/generated/models/ai_thread_patch_response.py +78 -0
  168. holder/generated/models/ai_thread_patch_response_data.py +62 -0
  169. holder/generated/models/ai_thread_update_request.py +104 -0
  170. holder/generated/models/asset_import_job.py +141 -0
  171. holder/generated/models/asset_import_job_response.py +76 -0
  172. holder/generated/models/asset_import_job_status.py +13 -0
  173. holder/generated/models/asset_import_request.py +86 -0
  174. holder/generated/models/asset_placement.py +96 -0
  175. holder/generated/models/asset_placement_encoding.py +9 -0
  176. holder/generated/models/bye_response.py +62 -0
  177. holder/generated/models/calendar_card_activity.py +86 -0
  178. holder/generated/models/card_context_breadcrumb.py +113 -0
  179. holder/generated/models/card_context_breadcrumb_type.py +9 -0
  180. holder/generated/models/card_context_card.py +161 -0
  181. holder/generated/models/card_context_data.py +124 -0
  182. holder/generated/models/card_context_data_project.py +70 -0
  183. holder/generated/models/card_context_response.py +76 -0
  184. holder/generated/models/card_create_request.py +147 -0
  185. holder/generated/models/card_create_response.py +78 -0
  186. holder/generated/models/card_create_response_data.py +70 -0
  187. holder/generated/models/card_data.py +160 -0
  188. holder/generated/models/card_get_response.py +76 -0
  189. holder/generated/models/card_history_author.py +70 -0
  190. holder/generated/models/card_history_comparison_data.py +110 -0
  191. holder/generated/models/card_history_comparison_response.py +78 -0
  192. holder/generated/models/card_history_diff_line.py +100 -0
  193. holder/generated/models/card_history_diff_line_origin.py +10 -0
  194. holder/generated/models/card_history_entry.py +172 -0
  195. holder/generated/models/card_history_entry_kind.py +16 -0
  196. holder/generated/models/card_history_entry_saves_item.py +94 -0
  197. holder/generated/models/card_history_page_data.py +114 -0
  198. holder/generated/models/card_history_page_response.py +76 -0
  199. holder/generated/models/card_history_restore_response.py +80 -0
  200. holder/generated/models/card_history_restore_response_data.py +108 -0
  201. holder/generated/models/card_history_snapshot_response.py +80 -0
  202. holder/generated/models/card_history_snapshot_response_data.py +76 -0
  203. holder/generated/models/card_history_version.py +86 -0
  204. holder/generated/models/card_link.py +116 -0
  205. holder/generated/models/card_link_create_request.py +111 -0
  206. holder/generated/models/card_link_create_response.py +76 -0
  207. holder/generated/models/card_link_delete_request.py +80 -0
  208. holder/generated/models/card_link_list_response.py +84 -0
  209. holder/generated/models/card_list_item.py +161 -0
  210. holder/generated/models/card_list_response.py +84 -0
  211. holder/generated/models/card_move_intent.py +15 -0
  212. holder/generated/models/card_move_request.py +134 -0
  213. holder/generated/models/card_move_response.py +76 -0
  214. holder/generated/models/card_move_result.py +114 -0
  215. holder/generated/models/card_page.py +90 -0
  216. holder/generated/models/card_page_item.py +170 -0
  217. holder/generated/models/card_page_response.py +76 -0
  218. holder/generated/models/card_patch_response.py +78 -0
  219. holder/generated/models/card_patch_response_data.py +62 -0
  220. holder/generated/models/card_reference_candidate.py +84 -0
  221. holder/generated/models/card_reference_resolve_data.py +129 -0
  222. holder/generated/models/card_reference_resolve_data_match_kind.py +10 -0
  223. holder/generated/models/card_reference_resolve_data_status.py +10 -0
  224. holder/generated/models/card_reference_resolve_request.py +82 -0
  225. holder/generated/models/card_reference_resolve_request_scope.py +10 -0
  226. holder/generated/models/card_reference_resolve_response.py +78 -0
  227. holder/generated/models/card_tag_mutation_request.py +70 -0
  228. holder/generated/models/card_tag_mutation_response.py +78 -0
  229. holder/generated/models/card_tag_mutation_result.py +88 -0
  230. holder/generated/models/card_tag_mutation_result_outcome.py +12 -0
  231. holder/generated/models/card_update_request.py +122 -0
  232. holder/generated/models/caste_info.py +85 -0
  233. holder/generated/models/caste_info_name.py +12 -0
  234. holder/generated/models/caste_recommended_model.py +143 -0
  235. holder/generated/models/caste_recommended_model_required_caste.py +12 -0
  236. holder/generated/models/change_event_data.py +109 -0
  237. holder/generated/models/change_event_data_entity.py +14 -0
  238. holder/generated/models/delete_cards_card_id_children.py +9 -0
  239. holder/generated/models/delete_cards_card_id_resources_body.py +70 -0
  240. holder/generated/models/error.py +70 -0
  241. holder/generated/models/error_response.py +76 -0
  242. holder/generated/models/event_checkpoint.py +92 -0
  243. holder/generated/models/event_checkpoint_git_revisions.py +66 -0
  244. holder/generated/models/event_checkpoint_history_urls.py +48 -0
  245. holder/generated/models/event_checkpoint_response.py +76 -0
  246. holder/generated/models/event_resync_data.py +116 -0
  247. holder/generated/models/event_resync_data_reason.py +9 -0
  248. holder/generated/models/get_ai_catalog_json_response_200.py +46 -0
  249. holder/generated/models/get_ai_messages_message_id_backlinks_include_deleted.py +9 -0
  250. holder/generated/models/get_ai_messages_message_id_links_include_deleted.py +9 -0
  251. holder/generated/models/get_cards_card_id_backlinks_include_deleted.py +9 -0
  252. holder/generated/models/get_cards_card_id_links_include_deleted.py +9 -0
  253. holder/generated/models/get_cards_context_order.py +10 -0
  254. holder/generated/models/get_cards_order.py +10 -0
  255. holder/generated/models/get_cards_view.py +9 -0
  256. holder/generated/models/get_git_providers_json_response_200.py +46 -0
  257. holder/generated/models/get_locations_location_id_response_200.py +46 -0
  258. holder/generated/models/get_ping_response_200.py +8 -0
  259. holder/generated/models/get_projects_order.py +13 -0
  260. holder/generated/models/get_projects_project_id_cards_order.py +9 -0
  261. holder/generated/models/get_projects_project_id_cards_parent_type_0.py +8 -0
  262. holder/generated/models/get_projects_project_id_history_cards_card_id_compare_mode.py +9 -0
  263. holder/generated/models/get_projects_project_id_history_kind.py +13 -0
  264. holder/generated/models/health_data.py +110 -0
  265. holder/generated/models/health_data_crypt_filter.py +78 -0
  266. holder/generated/models/health_response.py +76 -0
  267. holder/generated/models/hierarchy_repair.py +100 -0
  268. holder/generated/models/hierarchy_repair_move.py +76 -0
  269. holder/generated/models/hierarchy_repair_request.py +62 -0
  270. holder/generated/models/hierarchy_repair_response.py +76 -0
  271. holder/generated/models/local_model.py +91 -0
  272. holder/generated/models/location_binding_request.py +81 -0
  273. holder/generated/models/location_binding_request_values.py +46 -0
  274. holder/generated/models/milestone.py +177 -0
  275. holder/generated/models/milestone_create_request.py +135 -0
  276. holder/generated/models/milestone_list_response.py +84 -0
  277. holder/generated/models/milestone_remove_response.py +78 -0
  278. holder/generated/models/milestone_remove_result.py +79 -0
  279. holder/generated/models/milestone_response.py +76 -0
  280. holder/generated/models/milestone_update_request.py +116 -0
  281. holder/generated/models/patch_locations_location_id_body.py +90 -0
  282. holder/generated/models/patch_locations_location_id_body_configuration.py +46 -0
  283. holder/generated/models/post_ai_runner_pull_body.py +62 -0
  284. holder/generated/models/post_cards_card_id_resources_body.py +70 -0
  285. holder/generated/models/post_locations_response_201.py +46 -0
  286. holder/generated/models/project.py +197 -0
  287. holder/generated/models/project_calendar_response.py +78 -0
  288. holder/generated/models/project_calendar_response_data.py +136 -0
  289. holder/generated/models/project_create_request.py +177 -0
  290. holder/generated/models/project_create_request_privacy_mode.py +9 -0
  291. holder/generated/models/project_create_response.py +78 -0
  292. holder/generated/models/project_create_response_data.py +62 -0
  293. holder/generated/models/project_delete_response.py +78 -0
  294. holder/generated/models/project_delete_response_data.py +62 -0
  295. holder/generated/models/project_encryption_check.py +94 -0
  296. holder/generated/models/project_encryption_check_response.py +80 -0
  297. holder/generated/models/project_encryption_check_response_data.py +92 -0
  298. holder/generated/models/project_encryption_check_response_data_privacy_mode.py +9 -0
  299. holder/generated/models/project_get_response.py +76 -0
  300. holder/generated/models/project_git_push_request.py +95 -0
  301. holder/generated/models/project_git_push_response.py +78 -0
  302. holder/generated/models/project_git_push_response_data.py +199 -0
  303. holder/generated/models/project_git_push_response_data_status.py +15 -0
  304. holder/generated/models/project_git_sync_operation_response.py +80 -0
  305. holder/generated/models/project_git_sync_operation_response_data.py +163 -0
  306. holder/generated/models/project_git_sync_operation_response_data_pull.py +96 -0
  307. holder/generated/models/project_git_sync_operation_response_data_pull_status.py +11 -0
  308. holder/generated/models/project_git_sync_operation_response_data_push.py +118 -0
  309. holder/generated/models/project_git_sync_operation_response_data_push_status.py +15 -0
  310. holder/generated/models/project_git_sync_operation_response_data_status.py +9 -0
  311. holder/generated/models/project_git_sync_request.py +94 -0
  312. holder/generated/models/project_git_sync_status_response.py +80 -0
  313. holder/generated/models/project_git_sync_status_response_data.py +76 -0
  314. holder/generated/models/project_git_test_remote_request.py +96 -0
  315. holder/generated/models/project_git_test_remote_response.py +80 -0
  316. holder/generated/models/project_git_test_remote_response_data.py +151 -0
  317. holder/generated/models/project_git_test_remote_response_data_status.py +14 -0
  318. holder/generated/models/project_history_activity.py +138 -0
  319. holder/generated/models/project_history_affected_object.py +74 -0
  320. holder/generated/models/project_history_affected_object_kind.py +13 -0
  321. holder/generated/models/project_history_page_data.py +115 -0
  322. holder/generated/models/project_history_page_response.py +78 -0
  323. holder/generated/models/project_list_response.py +84 -0
  324. holder/generated/models/project_privacy_mode.py +9 -0
  325. holder/generated/models/project_recovery_token_export_request.py +62 -0
  326. holder/generated/models/project_recovery_token_export_response.py +80 -0
  327. holder/generated/models/project_recovery_token_export_response_data.py +78 -0
  328. holder/generated/models/project_recovery_token_import_request.py +70 -0
  329. holder/generated/models/project_recovery_token_import_response.py +80 -0
  330. holder/generated/models/project_recovery_token_import_response_data.py +62 -0
  331. holder/generated/models/project_sync.py +227 -0
  332. holder/generated/models/project_tag.py +70 -0
  333. holder/generated/models/project_tag_list_response.py +84 -0
  334. holder/generated/models/project_update_request.py +181 -0
  335. holder/generated/models/project_update_request_privacy_mode.py +9 -0
  336. holder/generated/models/project_update_response.py +78 -0
  337. holder/generated/models/project_update_response_data.py +75 -0
  338. holder/generated/models/put_locations_preferred_body.py +70 -0
  339. holder/generated/models/rebuild_data.py +94 -0
  340. holder/generated/models/rebuild_request.py +62 -0
  341. holder/generated/models/rebuild_response.py +76 -0
  342. holder/generated/models/recovery_token_import_auto_response.py +80 -0
  343. holder/generated/models/recovery_token_import_auto_response_data.py +141 -0
  344. holder/generated/models/recovery_token_import_auto_response_data_pull_status.py +10 -0
  345. holder/generated/models/reindex_data.py +62 -0
  346. holder/generated/models/reindex_response.py +76 -0
  347. holder/generated/models/resource.py +134 -0
  348. holder/generated/models/resource_asset.py +140 -0
  349. holder/generated/models/resource_attachment_response.py +80 -0
  350. holder/generated/models/resource_attachment_response_data.py +90 -0
  351. holder/generated/models/resource_attachment_response_data_outcome.py +11 -0
  352. holder/generated/models/resource_create_request.py +129 -0
  353. holder/generated/models/resource_delete_response.py +78 -0
  354. holder/generated/models/resource_delete_response_data.py +62 -0
  355. holder/generated/models/resource_list_response.py +134 -0
  356. holder/generated/models/resource_metadata.py +55 -0
  357. holder/generated/models/resource_response.py +76 -0
  358. holder/generated/models/resource_update_request.py +102 -0
  359. holder/generated/models/runner_capabilities_data.py +220 -0
  360. holder/generated/models/runner_capabilities_response.py +78 -0
  361. holder/generated/models/runner_pull_job.py +122 -0
  362. holder/generated/models/runner_pull_progress.py +86 -0
  363. holder/generated/models/runner_pull_start_response.py +78 -0
  364. holder/generated/models/runner_pull_start_response_data.py +78 -0
  365. holder/generated/models/runner_pull_status_response.py +76 -0
  366. holder/generated/models/search_card_item.py +102 -0
  367. holder/generated/models/search_cards_response.py +84 -0
  368. holder/generated/models/search_message_item.py +86 -0
  369. holder/generated/models/search_messages_response.py +84 -0
  370. holder/generated/models/storage_location.py +149 -0
  371. holder/generated/models/storage_location_configuration.py +48 -0
  372. holder/generated/models/storage_location_list_response.py +100 -0
  373. holder/generated/models/storage_location_provider.py +9 -0
  374. holder/generated/models/storage_location_request.py +118 -0
  375. holder/generated/models/storage_location_request_configuration.py +46 -0
  376. holder/generated/models/storage_location_request_provider.py +9 -0
  377. holder/generated/models/trash_delete_response.py +78 -0
  378. holder/generated/models/trash_delete_response_data.py +46 -0
  379. holder/generated/models/trash_item.py +211 -0
  380. holder/generated/models/trash_list_response.py +84 -0
  381. holder/generated/types.py +54 -0
  382. holder/library.py +15 -0
  383. holder/models/__init__.py +15 -0
  384. holder/models/card.py +272 -0
  385. holder/models/project.py +207 -0
  386. holder/models/search.py +66 -0
  387. holder/models/tag.py +117 -0
  388. holder/py.typed +0 -0
  389. holder_python-0.2.5.dist-info/METADATA +120 -0
  390. holder_python-0.2.5.dist-info/RECORD +391 -0
  391. holder_python-0.2.5.dist-info/WHEEL +4 -0
@@ -0,0 +1,116 @@
1
+ from __future__ import annotations
2
+
3
+ from collections.abc import Mapping
4
+ from typing import Any, TypeVar, cast
5
+
6
+ from attrs import define as _attrs_define
7
+ from attrs import field as _attrs_field
8
+ from typing_extensions import Self
9
+
10
+ from ..types import UNSET, Unset
11
+
12
+ T = TypeVar("T", bound="CardLink")
13
+
14
+
15
+ @_attrs_define
16
+ class CardLink:
17
+ """
18
+ Attributes:
19
+ from_card_id (str):
20
+ to_card_id (str):
21
+ to_type (str): Target type (card, ai_message, ai_thread, resource).
22
+ kind (str):
23
+ created_at (int):
24
+ label (None | str | Unset):
25
+ """
26
+
27
+ from_card_id: str
28
+ to_card_id: str
29
+ to_type: str
30
+ kind: str
31
+ created_at: int
32
+ label: None | str | Unset = UNSET
33
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
34
+
35
+ def to_dict(self) -> dict[str, Any]:
36
+ from_card_id = self.from_card_id
37
+
38
+ to_card_id = self.to_card_id
39
+
40
+ to_type = self.to_type
41
+
42
+ kind = self.kind
43
+
44
+ created_at = self.created_at
45
+
46
+ label: None | str | Unset
47
+ if isinstance(self.label, Unset):
48
+ label = UNSET
49
+ else:
50
+ label = self.label
51
+
52
+ field_dict: dict[str, Any] = {}
53
+ field_dict.update(self.additional_properties)
54
+ field_dict.update(
55
+ {
56
+ "from_card_id": from_card_id,
57
+ "to_card_id": to_card_id,
58
+ "to_type": to_type,
59
+ "kind": kind,
60
+ "created_at": created_at,
61
+ }
62
+ )
63
+ if label is not UNSET:
64
+ field_dict["label"] = label
65
+
66
+ return field_dict
67
+
68
+ @classmethod
69
+ def from_dict(cls, src_dict: Mapping[str, Any]) -> Self:
70
+ d = dict(src_dict)
71
+ from_card_id = d.pop("from_card_id")
72
+
73
+ to_card_id = d.pop("to_card_id")
74
+
75
+ to_type = d.pop("to_type")
76
+
77
+ kind = d.pop("kind")
78
+
79
+ created_at = d.pop("created_at")
80
+
81
+ def _parse_label(data: object) -> None | str | Unset:
82
+ if data is None:
83
+ return data
84
+ if isinstance(data, Unset):
85
+ return data
86
+ return cast(None | str | Unset, data)
87
+
88
+ label = _parse_label(d.pop("label", UNSET))
89
+
90
+ card_link = cls(
91
+ from_card_id=from_card_id,
92
+ to_card_id=to_card_id,
93
+ to_type=to_type,
94
+ kind=kind,
95
+ created_at=created_at,
96
+ label=label,
97
+ )
98
+
99
+ card_link.additional_properties = d
100
+ return card_link
101
+
102
+ @property
103
+ def additional_keys(self) -> list[str]:
104
+ return list(self.additional_properties.keys())
105
+
106
+ def __getitem__(self, key: str) -> Any:
107
+ return self.additional_properties[key]
108
+
109
+ def __setitem__(self, key: str, value: Any) -> None:
110
+ self.additional_properties[key] = value
111
+
112
+ def __delitem__(self, key: str) -> None:
113
+ del self.additional_properties[key]
114
+
115
+ def __contains__(self, key: str) -> bool:
116
+ return key in self.additional_properties
@@ -0,0 +1,111 @@
1
+ from __future__ import annotations
2
+
3
+ from collections.abc import Mapping
4
+ from typing import Any, TypeVar, cast
5
+
6
+ from attrs import define as _attrs_define
7
+ from attrs import field as _attrs_field
8
+ from typing_extensions import Self
9
+
10
+ from ..types import UNSET, Unset
11
+
12
+ T = TypeVar("T", bound="CardLinkCreateRequest")
13
+
14
+
15
+ @_attrs_define
16
+ class CardLinkCreateRequest:
17
+ """
18
+ Attributes:
19
+ to_card_id (str):
20
+ to_type (str | Unset): Optional; defaults to "card".
21
+ kind (str | Unset): Optional; defaults to "ref".
22
+ label (None | str | Unset):
23
+ created_at (int | Unset): Optional; server uses current time if omitted or 0.
24
+ """
25
+
26
+ to_card_id: str
27
+ to_type: str | Unset = UNSET
28
+ kind: str | Unset = UNSET
29
+ label: None | str | Unset = UNSET
30
+ created_at: int | Unset = UNSET
31
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
32
+
33
+ def to_dict(self) -> dict[str, Any]:
34
+ to_card_id = self.to_card_id
35
+
36
+ to_type = self.to_type
37
+
38
+ kind = self.kind
39
+
40
+ label: None | str | Unset
41
+ if isinstance(self.label, Unset):
42
+ label = UNSET
43
+ else:
44
+ label = self.label
45
+
46
+ created_at = self.created_at
47
+
48
+ field_dict: dict[str, Any] = {}
49
+ field_dict.update(self.additional_properties)
50
+ field_dict.update(
51
+ {
52
+ "to_card_id": to_card_id,
53
+ }
54
+ )
55
+ if to_type is not UNSET:
56
+ field_dict["to_type"] = to_type
57
+ if kind is not UNSET:
58
+ field_dict["kind"] = kind
59
+ if label is not UNSET:
60
+ field_dict["label"] = label
61
+ if created_at is not UNSET:
62
+ field_dict["created_at"] = created_at
63
+
64
+ return field_dict
65
+
66
+ @classmethod
67
+ def from_dict(cls, src_dict: Mapping[str, Any]) -> Self:
68
+ d = dict(src_dict)
69
+ to_card_id = d.pop("to_card_id")
70
+
71
+ to_type = d.pop("to_type", UNSET)
72
+
73
+ kind = d.pop("kind", UNSET)
74
+
75
+ def _parse_label(data: object) -> None | str | Unset:
76
+ if data is None:
77
+ return data
78
+ if isinstance(data, Unset):
79
+ return data
80
+ return cast(None | str | Unset, data)
81
+
82
+ label = _parse_label(d.pop("label", UNSET))
83
+
84
+ created_at = d.pop("created_at", UNSET)
85
+
86
+ card_link_create_request = cls(
87
+ to_card_id=to_card_id,
88
+ to_type=to_type,
89
+ kind=kind,
90
+ label=label,
91
+ created_at=created_at,
92
+ )
93
+
94
+ card_link_create_request.additional_properties = d
95
+ return card_link_create_request
96
+
97
+ @property
98
+ def additional_keys(self) -> list[str]:
99
+ return list(self.additional_properties.keys())
100
+
101
+ def __getitem__(self, key: str) -> Any:
102
+ return self.additional_properties[key]
103
+
104
+ def __setitem__(self, key: str, value: Any) -> None:
105
+ self.additional_properties[key] = value
106
+
107
+ def __delitem__(self, key: str) -> None:
108
+ del self.additional_properties[key]
109
+
110
+ def __contains__(self, key: str) -> bool:
111
+ return key in self.additional_properties
@@ -0,0 +1,76 @@
1
+ from __future__ import annotations
2
+
3
+ from collections.abc import Mapping
4
+ from typing import TYPE_CHECKING, Any, TypeVar
5
+
6
+ from attrs import define as _attrs_define
7
+ from attrs import field as _attrs_field
8
+ from typing_extensions import Self
9
+
10
+ if TYPE_CHECKING:
11
+ from ..models.card_link import CardLink
12
+
13
+
14
+ T = TypeVar("T", bound="CardLinkCreateResponse")
15
+
16
+
17
+ @_attrs_define
18
+ class CardLinkCreateResponse:
19
+ """
20
+ Attributes:
21
+ ok (bool):
22
+ data (CardLink):
23
+ """
24
+
25
+ ok: bool
26
+ data: CardLink
27
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
28
+
29
+ def to_dict(self) -> dict[str, Any]:
30
+ ok = self.ok
31
+
32
+ data = self.data.to_dict()
33
+
34
+ field_dict: dict[str, Any] = {}
35
+ field_dict.update(self.additional_properties)
36
+ field_dict.update(
37
+ {
38
+ "ok": ok,
39
+ "data": data,
40
+ }
41
+ )
42
+
43
+ return field_dict
44
+
45
+ @classmethod
46
+ def from_dict(cls, src_dict: Mapping[str, Any]) -> Self:
47
+ from ..models.card_link import CardLink
48
+
49
+ d = dict(src_dict)
50
+ ok = d.pop("ok")
51
+
52
+ data = CardLink.from_dict(d.pop("data"))
53
+
54
+ card_link_create_response = cls(
55
+ ok=ok,
56
+ data=data,
57
+ )
58
+
59
+ card_link_create_response.additional_properties = d
60
+ return card_link_create_response
61
+
62
+ @property
63
+ def additional_keys(self) -> list[str]:
64
+ return list(self.additional_properties.keys())
65
+
66
+ def __getitem__(self, key: str) -> Any:
67
+ return self.additional_properties[key]
68
+
69
+ def __setitem__(self, key: str, value: Any) -> None:
70
+ self.additional_properties[key] = value
71
+
72
+ def __delitem__(self, key: str) -> None:
73
+ del self.additional_properties[key]
74
+
75
+ def __contains__(self, key: str) -> bool:
76
+ return key in self.additional_properties
@@ -0,0 +1,80 @@
1
+ from __future__ import annotations
2
+
3
+ from collections.abc import Mapping
4
+ from typing import Any, TypeVar
5
+
6
+ from attrs import define as _attrs_define
7
+ from attrs import field as _attrs_field
8
+ from typing_extensions import Self
9
+
10
+ from ..types import UNSET, Unset
11
+
12
+ T = TypeVar("T", bound="CardLinkDeleteRequest")
13
+
14
+
15
+ @_attrs_define
16
+ class CardLinkDeleteRequest:
17
+ """
18
+ Attributes:
19
+ to_card_id (str | Unset):
20
+ to_type (str | Unset):
21
+ kind (str | Unset):
22
+ """
23
+
24
+ to_card_id: str | Unset = UNSET
25
+ to_type: str | Unset = UNSET
26
+ kind: str | Unset = UNSET
27
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
28
+
29
+ def to_dict(self) -> dict[str, Any]:
30
+ to_card_id = self.to_card_id
31
+
32
+ to_type = self.to_type
33
+
34
+ kind = self.kind
35
+
36
+ field_dict: dict[str, Any] = {}
37
+ field_dict.update(self.additional_properties)
38
+ field_dict.update({})
39
+ if to_card_id is not UNSET:
40
+ field_dict["to_card_id"] = to_card_id
41
+ if to_type is not UNSET:
42
+ field_dict["to_type"] = to_type
43
+ if kind is not UNSET:
44
+ field_dict["kind"] = kind
45
+
46
+ return field_dict
47
+
48
+ @classmethod
49
+ def from_dict(cls, src_dict: Mapping[str, Any]) -> Self:
50
+ d = dict(src_dict)
51
+ to_card_id = d.pop("to_card_id", UNSET)
52
+
53
+ to_type = d.pop("to_type", UNSET)
54
+
55
+ kind = d.pop("kind", UNSET)
56
+
57
+ card_link_delete_request = cls(
58
+ to_card_id=to_card_id,
59
+ to_type=to_type,
60
+ kind=kind,
61
+ )
62
+
63
+ card_link_delete_request.additional_properties = d
64
+ return card_link_delete_request
65
+
66
+ @property
67
+ def additional_keys(self) -> list[str]:
68
+ return list(self.additional_properties.keys())
69
+
70
+ def __getitem__(self, key: str) -> Any:
71
+ return self.additional_properties[key]
72
+
73
+ def __setitem__(self, key: str, value: Any) -> None:
74
+ self.additional_properties[key] = value
75
+
76
+ def __delitem__(self, key: str) -> None:
77
+ del self.additional_properties[key]
78
+
79
+ def __contains__(self, key: str) -> bool:
80
+ return key in self.additional_properties
@@ -0,0 +1,84 @@
1
+ from __future__ import annotations
2
+
3
+ from collections.abc import Mapping
4
+ from typing import TYPE_CHECKING, Any, TypeVar
5
+
6
+ from attrs import define as _attrs_define
7
+ from attrs import field as _attrs_field
8
+ from typing_extensions import Self
9
+
10
+ if TYPE_CHECKING:
11
+ from ..models.card_link import CardLink
12
+
13
+
14
+ T = TypeVar("T", bound="CardLinkListResponse")
15
+
16
+
17
+ @_attrs_define
18
+ class CardLinkListResponse:
19
+ """
20
+ Attributes:
21
+ ok (bool):
22
+ data (list[CardLink]):
23
+ """
24
+
25
+ ok: bool
26
+ data: list[CardLink]
27
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
28
+
29
+ def to_dict(self) -> dict[str, Any]:
30
+ ok = self.ok
31
+
32
+ data = []
33
+ for data_item_data in self.data:
34
+ data_item = data_item_data.to_dict()
35
+ data.append(data_item)
36
+
37
+ field_dict: dict[str, Any] = {}
38
+ field_dict.update(self.additional_properties)
39
+ field_dict.update(
40
+ {
41
+ "ok": ok,
42
+ "data": data,
43
+ }
44
+ )
45
+
46
+ return field_dict
47
+
48
+ @classmethod
49
+ def from_dict(cls, src_dict: Mapping[str, Any]) -> Self:
50
+ from ..models.card_link import CardLink
51
+
52
+ d = dict(src_dict)
53
+ ok = d.pop("ok")
54
+
55
+ data = []
56
+ _data = d.pop("data")
57
+ for data_item_data in _data:
58
+ data_item = CardLink.from_dict(data_item_data)
59
+
60
+ data.append(data_item)
61
+
62
+ card_link_list_response = cls(
63
+ ok=ok,
64
+ data=data,
65
+ )
66
+
67
+ card_link_list_response.additional_properties = d
68
+ return card_link_list_response
69
+
70
+ @property
71
+ def additional_keys(self) -> list[str]:
72
+ return list(self.additional_properties.keys())
73
+
74
+ def __getitem__(self, key: str) -> Any:
75
+ return self.additional_properties[key]
76
+
77
+ def __setitem__(self, key: str, value: Any) -> None:
78
+ self.additional_properties[key] = value
79
+
80
+ def __delitem__(self, key: str) -> None:
81
+ del self.additional_properties[key]
82
+
83
+ def __contains__(self, key: str) -> bool:
84
+ return key in self.additional_properties
@@ -0,0 +1,161 @@
1
+ from __future__ import annotations
2
+
3
+ from collections.abc import Mapping
4
+ from typing import Any, TypeVar, cast
5
+
6
+ from attrs import define as _attrs_define
7
+ from attrs import field as _attrs_field
8
+ from typing_extensions import Self
9
+
10
+ from ..types import UNSET, Unset
11
+
12
+ T = TypeVar("T", bound="CardListItem")
13
+
14
+
15
+ @_attrs_define
16
+ class CardListItem:
17
+ """
18
+ Attributes:
19
+ card_id (str):
20
+ project_id (str):
21
+ title (str):
22
+ rel_path (str):
23
+ sort_key (float):
24
+ created_at (int):
25
+ updated_at (int):
26
+ parent_card_id (None | str | Unset):
27
+ deleted_at (int | None | Unset):
28
+ child_count (int | Unset): Present when count=true.
29
+ """
30
+
31
+ card_id: str
32
+ project_id: str
33
+ title: str
34
+ rel_path: str
35
+ sort_key: float
36
+ created_at: int
37
+ updated_at: int
38
+ parent_card_id: None | str | Unset = UNSET
39
+ deleted_at: int | None | Unset = UNSET
40
+ child_count: int | Unset = UNSET
41
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
42
+
43
+ def to_dict(self) -> dict[str, Any]:
44
+ card_id = self.card_id
45
+
46
+ project_id = self.project_id
47
+
48
+ title = self.title
49
+
50
+ rel_path = self.rel_path
51
+
52
+ sort_key = self.sort_key
53
+
54
+ created_at = self.created_at
55
+
56
+ updated_at = self.updated_at
57
+
58
+ parent_card_id: None | str | Unset
59
+ if isinstance(self.parent_card_id, Unset):
60
+ parent_card_id = UNSET
61
+ else:
62
+ parent_card_id = self.parent_card_id
63
+
64
+ deleted_at: int | None | Unset
65
+ if isinstance(self.deleted_at, Unset):
66
+ deleted_at = UNSET
67
+ else:
68
+ deleted_at = self.deleted_at
69
+
70
+ child_count = self.child_count
71
+
72
+ field_dict: dict[str, Any] = {}
73
+ field_dict.update(self.additional_properties)
74
+ field_dict.update(
75
+ {
76
+ "card_id": card_id,
77
+ "project_id": project_id,
78
+ "title": title,
79
+ "rel_path": rel_path,
80
+ "sort_key": sort_key,
81
+ "created_at": created_at,
82
+ "updated_at": updated_at,
83
+ }
84
+ )
85
+ if parent_card_id is not UNSET:
86
+ field_dict["parent_card_id"] = parent_card_id
87
+ if deleted_at is not UNSET:
88
+ field_dict["deleted_at"] = deleted_at
89
+ if child_count is not UNSET:
90
+ field_dict["child_count"] = child_count
91
+
92
+ return field_dict
93
+
94
+ @classmethod
95
+ def from_dict(cls, src_dict: Mapping[str, Any]) -> Self:
96
+ d = dict(src_dict)
97
+ card_id = d.pop("card_id")
98
+
99
+ project_id = d.pop("project_id")
100
+
101
+ title = d.pop("title")
102
+
103
+ rel_path = d.pop("rel_path")
104
+
105
+ sort_key = d.pop("sort_key")
106
+
107
+ created_at = d.pop("created_at")
108
+
109
+ updated_at = d.pop("updated_at")
110
+
111
+ def _parse_parent_card_id(data: object) -> None | str | Unset:
112
+ if data is None:
113
+ return data
114
+ if isinstance(data, Unset):
115
+ return data
116
+ return cast(None | str | Unset, data)
117
+
118
+ parent_card_id = _parse_parent_card_id(d.pop("parent_card_id", UNSET))
119
+
120
+ def _parse_deleted_at(data: object) -> int | None | Unset:
121
+ if data is None:
122
+ return data
123
+ if isinstance(data, Unset):
124
+ return data
125
+ return cast(int | None | Unset, data)
126
+
127
+ deleted_at = _parse_deleted_at(d.pop("deleted_at", UNSET))
128
+
129
+ child_count = d.pop("child_count", UNSET)
130
+
131
+ card_list_item = cls(
132
+ card_id=card_id,
133
+ project_id=project_id,
134
+ title=title,
135
+ rel_path=rel_path,
136
+ sort_key=sort_key,
137
+ created_at=created_at,
138
+ updated_at=updated_at,
139
+ parent_card_id=parent_card_id,
140
+ deleted_at=deleted_at,
141
+ child_count=child_count,
142
+ )
143
+
144
+ card_list_item.additional_properties = d
145
+ return card_list_item
146
+
147
+ @property
148
+ def additional_keys(self) -> list[str]:
149
+ return list(self.additional_properties.keys())
150
+
151
+ def __getitem__(self, key: str) -> Any:
152
+ return self.additional_properties[key]
153
+
154
+ def __setitem__(self, key: str, value: Any) -> None:
155
+ self.additional_properties[key] = value
156
+
157
+ def __delitem__(self, key: str) -> None:
158
+ del self.additional_properties[key]
159
+
160
+ def __contains__(self, key: str) -> bool:
161
+ return key in self.additional_properties
@@ -0,0 +1,84 @@
1
+ from __future__ import annotations
2
+
3
+ from collections.abc import Mapping
4
+ from typing import TYPE_CHECKING, Any, TypeVar
5
+
6
+ from attrs import define as _attrs_define
7
+ from attrs import field as _attrs_field
8
+ from typing_extensions import Self
9
+
10
+ if TYPE_CHECKING:
11
+ from ..models.card_list_item import CardListItem
12
+
13
+
14
+ T = TypeVar("T", bound="CardListResponse")
15
+
16
+
17
+ @_attrs_define
18
+ class CardListResponse:
19
+ """
20
+ Attributes:
21
+ ok (bool):
22
+ data (list[CardListItem]):
23
+ """
24
+
25
+ ok: bool
26
+ data: list[CardListItem]
27
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
28
+
29
+ def to_dict(self) -> dict[str, Any]:
30
+ ok = self.ok
31
+
32
+ data = []
33
+ for data_item_data in self.data:
34
+ data_item = data_item_data.to_dict()
35
+ data.append(data_item)
36
+
37
+ field_dict: dict[str, Any] = {}
38
+ field_dict.update(self.additional_properties)
39
+ field_dict.update(
40
+ {
41
+ "ok": ok,
42
+ "data": data,
43
+ }
44
+ )
45
+
46
+ return field_dict
47
+
48
+ @classmethod
49
+ def from_dict(cls, src_dict: Mapping[str, Any]) -> Self:
50
+ from ..models.card_list_item import CardListItem
51
+
52
+ d = dict(src_dict)
53
+ ok = d.pop("ok")
54
+
55
+ data = []
56
+ _data = d.pop("data")
57
+ for data_item_data in _data:
58
+ data_item = CardListItem.from_dict(data_item_data)
59
+
60
+ data.append(data_item)
61
+
62
+ card_list_response = cls(
63
+ ok=ok,
64
+ data=data,
65
+ )
66
+
67
+ card_list_response.additional_properties = d
68
+ return card_list_response
69
+
70
+ @property
71
+ def additional_keys(self) -> list[str]:
72
+ return list(self.additional_properties.keys())
73
+
74
+ def __getitem__(self, key: str) -> Any:
75
+ return self.additional_properties[key]
76
+
77
+ def __setitem__(self, key: str, value: Any) -> None:
78
+ self.additional_properties[key] = value
79
+
80
+ def __delitem__(self, key: str) -> None:
81
+ del self.additional_properties[key]
82
+
83
+ def __contains__(self, key: str) -> bool:
84
+ return key in self.additional_properties