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,197 @@
1
+ from __future__ import annotations
2
+
3
+ from collections.abc import Mapping
4
+ from typing import TYPE_CHECKING, 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 ..models.project_privacy_mode import ProjectPrivacyMode
11
+ from ..types import UNSET, Unset
12
+
13
+ if TYPE_CHECKING:
14
+ from ..models.project_sync import ProjectSync
15
+
16
+
17
+ T = TypeVar("T", bound="Project")
18
+
19
+
20
+ @_attrs_define
21
+ class Project:
22
+ """
23
+ Attributes:
24
+ project_id (str):
25
+ name (str):
26
+ root_path (str):
27
+ privacy_mode (ProjectPrivacyMode):
28
+ created_at (int):
29
+ updated_at (int):
30
+ sync (ProjectSync):
31
+ git_remote_url (None | str | Unset):
32
+ git_provider (None | str | Unset):
33
+ project_key_id (None | str | Unset):
34
+ card_count (int | Unset): Present when count=true.
35
+ root_card_count (int | Unset): Present when count=true.
36
+ """
37
+
38
+ project_id: str
39
+ name: str
40
+ root_path: str
41
+ privacy_mode: ProjectPrivacyMode
42
+ created_at: int
43
+ updated_at: int
44
+ sync: ProjectSync
45
+ git_remote_url: None | str | Unset = UNSET
46
+ git_provider: None | str | Unset = UNSET
47
+ project_key_id: None | str | Unset = UNSET
48
+ card_count: int | Unset = UNSET
49
+ root_card_count: int | Unset = UNSET
50
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
51
+
52
+ def to_dict(self) -> dict[str, Any]:
53
+ project_id = self.project_id
54
+
55
+ name = self.name
56
+
57
+ root_path = self.root_path
58
+
59
+ privacy_mode = self.privacy_mode.value
60
+
61
+ created_at = self.created_at
62
+
63
+ updated_at = self.updated_at
64
+
65
+ sync = self.sync.to_dict()
66
+
67
+ git_remote_url: None | str | Unset
68
+ if isinstance(self.git_remote_url, Unset):
69
+ git_remote_url = UNSET
70
+ else:
71
+ git_remote_url = self.git_remote_url
72
+
73
+ git_provider: None | str | Unset
74
+ if isinstance(self.git_provider, Unset):
75
+ git_provider = UNSET
76
+ else:
77
+ git_provider = self.git_provider
78
+
79
+ project_key_id: None | str | Unset
80
+ if isinstance(self.project_key_id, Unset):
81
+ project_key_id = UNSET
82
+ else:
83
+ project_key_id = self.project_key_id
84
+
85
+ card_count = self.card_count
86
+
87
+ root_card_count = self.root_card_count
88
+
89
+ field_dict: dict[str, Any] = {}
90
+ field_dict.update(self.additional_properties)
91
+ field_dict.update(
92
+ {
93
+ "project_id": project_id,
94
+ "name": name,
95
+ "root_path": root_path,
96
+ "privacy_mode": privacy_mode,
97
+ "created_at": created_at,
98
+ "updated_at": updated_at,
99
+ "sync": sync,
100
+ }
101
+ )
102
+ if git_remote_url is not UNSET:
103
+ field_dict["git_remote_url"] = git_remote_url
104
+ if git_provider is not UNSET:
105
+ field_dict["git_provider"] = git_provider
106
+ if project_key_id is not UNSET:
107
+ field_dict["project_key_id"] = project_key_id
108
+ if card_count is not UNSET:
109
+ field_dict["card_count"] = card_count
110
+ if root_card_count is not UNSET:
111
+ field_dict["root_card_count"] = root_card_count
112
+
113
+ return field_dict
114
+
115
+ @classmethod
116
+ def from_dict(cls, src_dict: Mapping[str, Any]) -> Self:
117
+ from ..models.project_sync import ProjectSync
118
+
119
+ d = dict(src_dict)
120
+ project_id = d.pop("project_id")
121
+
122
+ name = d.pop("name")
123
+
124
+ root_path = d.pop("root_path")
125
+
126
+ privacy_mode = ProjectPrivacyMode(d.pop("privacy_mode"))
127
+
128
+ created_at = d.pop("created_at")
129
+
130
+ updated_at = d.pop("updated_at")
131
+
132
+ sync = ProjectSync.from_dict(d.pop("sync"))
133
+
134
+ def _parse_git_remote_url(data: object) -> None | str | Unset:
135
+ if data is None:
136
+ return data
137
+ if isinstance(data, Unset):
138
+ return data
139
+ return cast(None | str | Unset, data)
140
+
141
+ git_remote_url = _parse_git_remote_url(d.pop("git_remote_url", UNSET))
142
+
143
+ def _parse_git_provider(data: object) -> None | str | Unset:
144
+ if data is None:
145
+ return data
146
+ if isinstance(data, Unset):
147
+ return data
148
+ return cast(None | str | Unset, data)
149
+
150
+ git_provider = _parse_git_provider(d.pop("git_provider", UNSET))
151
+
152
+ def _parse_project_key_id(data: object) -> None | str | Unset:
153
+ if data is None:
154
+ return data
155
+ if isinstance(data, Unset):
156
+ return data
157
+ return cast(None | str | Unset, data)
158
+
159
+ project_key_id = _parse_project_key_id(d.pop("project_key_id", UNSET))
160
+
161
+ card_count = d.pop("card_count", UNSET)
162
+
163
+ root_card_count = d.pop("root_card_count", UNSET)
164
+
165
+ project = cls(
166
+ project_id=project_id,
167
+ name=name,
168
+ root_path=root_path,
169
+ privacy_mode=privacy_mode,
170
+ created_at=created_at,
171
+ updated_at=updated_at,
172
+ sync=sync,
173
+ git_remote_url=git_remote_url,
174
+ git_provider=git_provider,
175
+ project_key_id=project_key_id,
176
+ card_count=card_count,
177
+ root_card_count=root_card_count,
178
+ )
179
+
180
+ project.additional_properties = d
181
+ return project
182
+
183
+ @property
184
+ def additional_keys(self) -> list[str]:
185
+ return list(self.additional_properties.keys())
186
+
187
+ def __getitem__(self, key: str) -> Any:
188
+ return self.additional_properties[key]
189
+
190
+ def __setitem__(self, key: str, value: Any) -> None:
191
+ self.additional_properties[key] = value
192
+
193
+ def __delitem__(self, key: str) -> None:
194
+ del self.additional_properties[key]
195
+
196
+ def __contains__(self, key: str) -> bool:
197
+ return key in self.additional_properties
@@ -0,0 +1,78 @@
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.project_calendar_response_data import ProjectCalendarResponseData
12
+
13
+
14
+ T = TypeVar("T", bound="ProjectCalendarResponse")
15
+
16
+
17
+ @_attrs_define
18
+ class ProjectCalendarResponse:
19
+ """
20
+ Attributes:
21
+ ok (bool):
22
+ data (ProjectCalendarResponseData):
23
+ """
24
+
25
+ ok: bool
26
+ data: ProjectCalendarResponseData
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.project_calendar_response_data import (
48
+ ProjectCalendarResponseData,
49
+ )
50
+
51
+ d = dict(src_dict)
52
+ ok = d.pop("ok")
53
+
54
+ data = ProjectCalendarResponseData.from_dict(d.pop("data"))
55
+
56
+ project_calendar_response = cls(
57
+ ok=ok,
58
+ data=data,
59
+ )
60
+
61
+ project_calendar_response.additional_properties = d
62
+ return project_calendar_response
63
+
64
+ @property
65
+ def additional_keys(self) -> list[str]:
66
+ return list(self.additional_properties.keys())
67
+
68
+ def __getitem__(self, key: str) -> Any:
69
+ return self.additional_properties[key]
70
+
71
+ def __setitem__(self, key: str, value: Any) -> None:
72
+ self.additional_properties[key] = value
73
+
74
+ def __delitem__(self, key: str) -> None:
75
+ del self.additional_properties[key]
76
+
77
+ def __contains__(self, key: str) -> bool:
78
+ return key in self.additional_properties
@@ -0,0 +1,136 @@
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.calendar_card_activity import CalendarCardActivity
12
+ from ..models.milestone import Milestone
13
+
14
+
15
+ T = TypeVar("T", bound="ProjectCalendarResponseData")
16
+
17
+
18
+ @_attrs_define
19
+ class ProjectCalendarResponseData:
20
+ """
21
+ Attributes:
22
+ project_id (str):
23
+ from_ (int): Inclusive lower bound in Unix epoch seconds.
24
+ to (int): Inclusive upper bound in Unix epoch seconds.
25
+ milestones (list[Milestone]):
26
+ created_cards (list[CalendarCardActivity]):
27
+ updated_cards (list[CalendarCardActivity]):
28
+ """
29
+
30
+ project_id: str
31
+ from_: int
32
+ to: int
33
+ milestones: list[Milestone]
34
+ created_cards: list[CalendarCardActivity]
35
+ updated_cards: list[CalendarCardActivity]
36
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
37
+
38
+ def to_dict(self) -> dict[str, Any]:
39
+ project_id = self.project_id
40
+
41
+ from_ = self.from_
42
+
43
+ to = self.to
44
+
45
+ milestones = []
46
+ for milestones_item_data in self.milestones:
47
+ milestones_item = milestones_item_data.to_dict()
48
+ milestones.append(milestones_item)
49
+
50
+ created_cards = []
51
+ for created_cards_item_data in self.created_cards:
52
+ created_cards_item = created_cards_item_data.to_dict()
53
+ created_cards.append(created_cards_item)
54
+
55
+ updated_cards = []
56
+ for updated_cards_item_data in self.updated_cards:
57
+ updated_cards_item = updated_cards_item_data.to_dict()
58
+ updated_cards.append(updated_cards_item)
59
+
60
+ field_dict: dict[str, Any] = {}
61
+ field_dict.update(self.additional_properties)
62
+ field_dict.update(
63
+ {
64
+ "project_id": project_id,
65
+ "from": from_,
66
+ "to": to,
67
+ "milestones": milestones,
68
+ "created_cards": created_cards,
69
+ "updated_cards": updated_cards,
70
+ }
71
+ )
72
+
73
+ return field_dict
74
+
75
+ @classmethod
76
+ def from_dict(cls, src_dict: Mapping[str, Any]) -> Self:
77
+ from ..models.calendar_card_activity import (
78
+ CalendarCardActivity,
79
+ )
80
+ from ..models.milestone import Milestone
81
+
82
+ d = dict(src_dict)
83
+ project_id = d.pop("project_id")
84
+
85
+ from_ = d.pop("from")
86
+
87
+ to = d.pop("to")
88
+
89
+ milestones = []
90
+ _milestones = d.pop("milestones")
91
+ for milestones_item_data in _milestones:
92
+ milestones_item = Milestone.from_dict(milestones_item_data)
93
+
94
+ milestones.append(milestones_item)
95
+
96
+ created_cards = []
97
+ _created_cards = d.pop("created_cards")
98
+ for created_cards_item_data in _created_cards:
99
+ created_cards_item = CalendarCardActivity.from_dict(created_cards_item_data)
100
+
101
+ created_cards.append(created_cards_item)
102
+
103
+ updated_cards = []
104
+ _updated_cards = d.pop("updated_cards")
105
+ for updated_cards_item_data in _updated_cards:
106
+ updated_cards_item = CalendarCardActivity.from_dict(updated_cards_item_data)
107
+
108
+ updated_cards.append(updated_cards_item)
109
+
110
+ project_calendar_response_data = cls(
111
+ project_id=project_id,
112
+ from_=from_,
113
+ to=to,
114
+ milestones=milestones,
115
+ created_cards=created_cards,
116
+ updated_cards=updated_cards,
117
+ )
118
+
119
+ project_calendar_response_data.additional_properties = d
120
+ return project_calendar_response_data
121
+
122
+ @property
123
+ def additional_keys(self) -> list[str]:
124
+ return list(self.additional_properties.keys())
125
+
126
+ def __getitem__(self, key: str) -> Any:
127
+ return self.additional_properties[key]
128
+
129
+ def __setitem__(self, key: str, value: Any) -> None:
130
+ self.additional_properties[key] = value
131
+
132
+ def __delitem__(self, key: str) -> None:
133
+ del self.additional_properties[key]
134
+
135
+ def __contains__(self, key: str) -> bool:
136
+ return key in self.additional_properties
@@ -0,0 +1,177 @@
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 ..models.project_create_request_privacy_mode import ProjectCreateRequestPrivacyMode
11
+ from ..types import UNSET, Unset
12
+
13
+ T = TypeVar("T", bound="ProjectCreateRequest")
14
+
15
+
16
+ @_attrs_define
17
+ class ProjectCreateRequest:
18
+ """
19
+ Attributes:
20
+ name (str):
21
+ project_id (str | Unset): Optional; server generates if omitted.
22
+ root_path (str | Unset): Optional; server chooses a default if omitted.
23
+ git_remote_url (None | str | Unset):
24
+ git_provider (None | str | Unset):
25
+ privacy_mode (ProjectCreateRequestPrivacyMode | Unset): Optional; defaults to encrypted_git.
26
+ project_key_id (None | str | Unset): Optional keyring identifier (metadata only).
27
+ created_at (int | Unset): Optional; server uses current time if omitted or 0.
28
+ updated_at (int | Unset): Optional; server uses created_at if omitted or 0.
29
+ """
30
+
31
+ name: str
32
+ project_id: str | Unset = UNSET
33
+ root_path: str | Unset = UNSET
34
+ git_remote_url: None | str | Unset = UNSET
35
+ git_provider: None | str | Unset = UNSET
36
+ privacy_mode: ProjectCreateRequestPrivacyMode | Unset = UNSET
37
+ project_key_id: None | str | Unset = UNSET
38
+ created_at: int | Unset = UNSET
39
+ updated_at: int | Unset = UNSET
40
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
41
+
42
+ def to_dict(self) -> dict[str, Any]:
43
+ name = self.name
44
+
45
+ project_id = self.project_id
46
+
47
+ root_path = self.root_path
48
+
49
+ git_remote_url: None | str | Unset
50
+ if isinstance(self.git_remote_url, Unset):
51
+ git_remote_url = UNSET
52
+ else:
53
+ git_remote_url = self.git_remote_url
54
+
55
+ git_provider: None | str | Unset
56
+ if isinstance(self.git_provider, Unset):
57
+ git_provider = UNSET
58
+ else:
59
+ git_provider = self.git_provider
60
+
61
+ privacy_mode: str | Unset = UNSET
62
+ if not isinstance(self.privacy_mode, Unset):
63
+ privacy_mode = self.privacy_mode.value
64
+
65
+ project_key_id: None | str | Unset
66
+ if isinstance(self.project_key_id, Unset):
67
+ project_key_id = UNSET
68
+ else:
69
+ project_key_id = self.project_key_id
70
+
71
+ created_at = self.created_at
72
+
73
+ updated_at = self.updated_at
74
+
75
+ field_dict: dict[str, Any] = {}
76
+ field_dict.update(self.additional_properties)
77
+ field_dict.update(
78
+ {
79
+ "name": name,
80
+ }
81
+ )
82
+ if project_id is not UNSET:
83
+ field_dict["project_id"] = project_id
84
+ if root_path is not UNSET:
85
+ field_dict["root_path"] = root_path
86
+ if git_remote_url is not UNSET:
87
+ field_dict["git_remote_url"] = git_remote_url
88
+ if git_provider is not UNSET:
89
+ field_dict["git_provider"] = git_provider
90
+ if privacy_mode is not UNSET:
91
+ field_dict["privacy_mode"] = privacy_mode
92
+ if project_key_id is not UNSET:
93
+ field_dict["project_key_id"] = project_key_id
94
+ if created_at is not UNSET:
95
+ field_dict["created_at"] = created_at
96
+ if updated_at is not UNSET:
97
+ field_dict["updated_at"] = updated_at
98
+
99
+ return field_dict
100
+
101
+ @classmethod
102
+ def from_dict(cls, src_dict: Mapping[str, Any]) -> Self:
103
+ d = dict(src_dict)
104
+ name = d.pop("name")
105
+
106
+ project_id = d.pop("project_id", UNSET)
107
+
108
+ root_path = d.pop("root_path", UNSET)
109
+
110
+ def _parse_git_remote_url(data: object) -> None | str | Unset:
111
+ if data is None:
112
+ return data
113
+ if isinstance(data, Unset):
114
+ return data
115
+ return cast(None | str | Unset, data)
116
+
117
+ git_remote_url = _parse_git_remote_url(d.pop("git_remote_url", UNSET))
118
+
119
+ def _parse_git_provider(data: object) -> None | str | Unset:
120
+ if data is None:
121
+ return data
122
+ if isinstance(data, Unset):
123
+ return data
124
+ return cast(None | str | Unset, data)
125
+
126
+ git_provider = _parse_git_provider(d.pop("git_provider", UNSET))
127
+
128
+ _privacy_mode = d.pop("privacy_mode", UNSET)
129
+ privacy_mode: ProjectCreateRequestPrivacyMode | Unset
130
+ if isinstance(_privacy_mode, Unset):
131
+ privacy_mode = UNSET
132
+ else:
133
+ privacy_mode = ProjectCreateRequestPrivacyMode(_privacy_mode)
134
+
135
+ def _parse_project_key_id(data: object) -> None | str | Unset:
136
+ if data is None:
137
+ return data
138
+ if isinstance(data, Unset):
139
+ return data
140
+ return cast(None | str | Unset, data)
141
+
142
+ project_key_id = _parse_project_key_id(d.pop("project_key_id", UNSET))
143
+
144
+ created_at = d.pop("created_at", UNSET)
145
+
146
+ updated_at = d.pop("updated_at", UNSET)
147
+
148
+ project_create_request = cls(
149
+ name=name,
150
+ project_id=project_id,
151
+ root_path=root_path,
152
+ git_remote_url=git_remote_url,
153
+ git_provider=git_provider,
154
+ privacy_mode=privacy_mode,
155
+ project_key_id=project_key_id,
156
+ created_at=created_at,
157
+ updated_at=updated_at,
158
+ )
159
+
160
+ project_create_request.additional_properties = d
161
+ return project_create_request
162
+
163
+ @property
164
+ def additional_keys(self) -> list[str]:
165
+ return list(self.additional_properties.keys())
166
+
167
+ def __getitem__(self, key: str) -> Any:
168
+ return self.additional_properties[key]
169
+
170
+ def __setitem__(self, key: str, value: Any) -> None:
171
+ self.additional_properties[key] = value
172
+
173
+ def __delitem__(self, key: str) -> None:
174
+ del self.additional_properties[key]
175
+
176
+ def __contains__(self, key: str) -> bool:
177
+ return key in self.additional_properties
@@ -0,0 +1,9 @@
1
+ from enum import StrEnum
2
+
3
+
4
+ class ProjectCreateRequestPrivacyMode(StrEnum):
5
+ ENCRYPTED_GIT = "encrypted_git"
6
+ PLAIN = "plain"
7
+
8
+ def __str__(self) -> str:
9
+ return str(self.value)
@@ -0,0 +1,78 @@
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.project_create_response_data import ProjectCreateResponseData
12
+
13
+
14
+ T = TypeVar("T", bound="ProjectCreateResponse")
15
+
16
+
17
+ @_attrs_define
18
+ class ProjectCreateResponse:
19
+ """
20
+ Attributes:
21
+ ok (bool):
22
+ data (ProjectCreateResponseData):
23
+ """
24
+
25
+ ok: bool
26
+ data: ProjectCreateResponseData
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.project_create_response_data import (
48
+ ProjectCreateResponseData,
49
+ )
50
+
51
+ d = dict(src_dict)
52
+ ok = d.pop("ok")
53
+
54
+ data = ProjectCreateResponseData.from_dict(d.pop("data"))
55
+
56
+ project_create_response = cls(
57
+ ok=ok,
58
+ data=data,
59
+ )
60
+
61
+ project_create_response.additional_properties = d
62
+ return project_create_response
63
+
64
+ @property
65
+ def additional_keys(self) -> list[str]:
66
+ return list(self.additional_properties.keys())
67
+
68
+ def __getitem__(self, key: str) -> Any:
69
+ return self.additional_properties[key]
70
+
71
+ def __setitem__(self, key: str, value: Any) -> None:
72
+ self.additional_properties[key] = value
73
+
74
+ def __delitem__(self, key: str) -> None:
75
+ del self.additional_properties[key]
76
+
77
+ def __contains__(self, key: str) -> bool:
78
+ return key in self.additional_properties