immichpy 1.6.5__py3-none-any.whl → 1.7.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 (435) hide show
  1. immichpy/cli/commands/activities.py +23 -11
  2. immichpy/cli/commands/albums.py +34 -20
  3. immichpy/cli/commands/api_keys.py +6 -4
  4. immichpy/cli/commands/assets.py +274 -65
  5. immichpy/cli/commands/authentication.py +115 -25
  6. immichpy/cli/commands/database_backups_admin.py +111 -0
  7. immichpy/cli/commands/download.py +13 -5
  8. immichpy/cli/commands/duplicates.py +1 -1
  9. immichpy/cli/commands/faces.py +17 -11
  10. immichpy/cli/commands/jobs.py +6 -4
  11. immichpy/cli/commands/libraries.py +15 -9
  12. immichpy/cli/commands/maintenance_admin.py +39 -2
  13. immichpy/cli/commands/map.py +8 -8
  14. immichpy/cli/commands/memories.py +35 -21
  15. immichpy/cli/commands/notifications.py +16 -8
  16. immichpy/cli/commands/notifications_admin.py +43 -17
  17. immichpy/cli/commands/partners.py +9 -3
  18. immichpy/cli/commands/people.py +30 -24
  19. immichpy/cli/commands/plugins.py +14 -0
  20. immichpy/cli/commands/queues.py +8 -6
  21. immichpy/cli/commands/search.py +395 -189
  22. immichpy/cli/commands/server.py +6 -2
  23. immichpy/cli/commands/sessions.py +6 -4
  24. immichpy/cli/commands/shared_links.py +42 -25
  25. immichpy/cli/commands/stacks.py +4 -4
  26. immichpy/cli/commands/sync.py +26 -10
  27. immichpy/cli/commands/system_config.py +216 -115
  28. immichpy/cli/commands/system_metadata.py +3 -1
  29. immichpy/cli/commands/tags.py +9 -9
  30. immichpy/cli/commands/trash.py +1 -1
  31. immichpy/cli/commands/users.py +57 -29
  32. immichpy/cli/commands/users_admin.py +79 -45
  33. immichpy/cli/commands/workflows.py +40 -11
  34. immichpy/cli/main.py +8 -0
  35. immichpy/client/.openapi-generator/FILES +26 -2
  36. immichpy/client/generated/__init__.py +101 -7
  37. immichpy/client/generated/api/__init__.py +3 -0
  38. immichpy/client/generated/api/activities_api.py +73 -43
  39. immichpy/client/generated/api/albums_api.py +40 -19
  40. immichpy/client/generated/api/api_keys_api.py +1 -1
  41. immichpy/client/generated/api/assets_api.py +1768 -366
  42. immichpy/client/generated/api/authentication_admin_api.py +1 -1
  43. immichpy/client/generated/api/authentication_api.py +1 -1
  44. immichpy/client/generated/api/database_backups_admin_api.py +1224 -0
  45. immichpy/client/generated/api/deprecated_api.py +103 -73
  46. immichpy/client/generated/api/download_api.py +1 -1
  47. immichpy/client/generated/api/duplicates_api.py +1 -1
  48. immichpy/client/generated/api/faces_api.py +7 -7
  49. immichpy/client/generated/api/jobs_api.py +7 -7
  50. immichpy/client/generated/api/libraries_api.py +1 -1
  51. immichpy/client/generated/api/maintenance_admin_api.py +459 -1
  52. immichpy/client/generated/api/map_api.py +103 -49
  53. immichpy/client/generated/api/memories_api.py +109 -61
  54. immichpy/client/generated/api/notifications_admin_api.py +1 -1
  55. immichpy/client/generated/api/notifications_api.py +52 -25
  56. immichpy/client/generated/api/partners_api.py +7 -7
  57. immichpy/client/generated/api/people_api.py +37 -19
  58. immichpy/client/generated/api/plugins_api.py +230 -1
  59. immichpy/client/generated/api/queues_api.py +37 -31
  60. immichpy/client/generated/api/search_api.py +529 -283
  61. immichpy/client/generated/api/server_api.py +1 -1
  62. immichpy/client/generated/api/sessions_api.py +1 -1
  63. immichpy/client/generated/api/shared_links_api.py +53 -19
  64. immichpy/client/generated/api/stacks_api.py +13 -7
  65. immichpy/client/generated/api/sync_api.py +1 -1
  66. immichpy/client/generated/api/system_config_api.py +1 -1
  67. immichpy/client/generated/api/system_metadata_api.py +1 -1
  68. immichpy/client/generated/api/tags_api.py +1 -1
  69. immichpy/client/generated/api/timeline_api.py +1 -1
  70. immichpy/client/generated/api/trash_api.py +1 -1
  71. immichpy/client/generated/api/users_admin_api.py +55 -31
  72. immichpy/client/generated/api/users_api.py +16 -7
  73. immichpy/client/generated/api/views_api.py +1 -1
  74. immichpy/client/generated/api/workflows_api.py +1 -1
  75. immichpy/client/generated/api_client.py +1 -1
  76. immichpy/client/generated/configuration.py +2 -2
  77. immichpy/client/generated/exceptions.py +1 -1
  78. immichpy/client/generated/models/__init__.py +56 -3
  79. immichpy/client/generated/models/activity_create_dto.py +11 -5
  80. immichpy/client/generated/models/activity_response_dto.py +10 -6
  81. immichpy/client/generated/models/activity_statistics_response_dto.py +4 -4
  82. immichpy/client/generated/models/add_users_dto.py +2 -2
  83. immichpy/client/generated/models/admin_onboarding_update_dto.py +4 -2
  84. immichpy/client/generated/models/album_response_dto.py +28 -16
  85. immichpy/client/generated/models/album_statistics_response_dto.py +6 -4
  86. immichpy/client/generated/models/album_user_add_dto.py +3 -3
  87. immichpy/client/generated/models/album_user_create_dto.py +3 -3
  88. immichpy/client/generated/models/album_user_response_dto.py +3 -3
  89. immichpy/client/generated/models/album_user_role.py +2 -2
  90. immichpy/client/generated/models/albums_add_assets_dto.py +3 -3
  91. immichpy/client/generated/models/albums_add_assets_response_dto.py +4 -4
  92. immichpy/client/generated/models/albums_response.py +4 -2
  93. immichpy/client/generated/models/albums_update.py +5 -3
  94. immichpy/client/generated/models/api_key_create_dto.py +5 -3
  95. immichpy/client/generated/models/api_key_create_response_dto.py +2 -2
  96. immichpy/client/generated/models/api_key_response_dto.py +6 -6
  97. immichpy/client/generated/models/api_key_update_dto.py +5 -3
  98. immichpy/client/generated/models/asset_bulk_delete_dto.py +6 -4
  99. immichpy/client/generated/models/asset_bulk_update_dto.py +28 -12
  100. immichpy/client/generated/models/asset_bulk_upload_check_dto.py +3 -3
  101. immichpy/client/generated/models/asset_bulk_upload_check_item.py +3 -3
  102. immichpy/client/generated/models/asset_bulk_upload_check_response_dto.py +5 -3
  103. immichpy/client/generated/models/asset_bulk_upload_check_result.py +12 -6
  104. immichpy/client/generated/models/asset_copy_dto.py +16 -8
  105. immichpy/client/generated/models/asset_delta_sync_dto.py +5 -3
  106. immichpy/client/generated/models/asset_delta_sync_response_dto.py +6 -4
  107. immichpy/client/generated/models/asset_edit_action.py +35 -0
  108. immichpy/client/generated/models/asset_edit_action_crop.py +95 -0
  109. immichpy/client/generated/models/asset_edit_action_list_dto.py +104 -0
  110. immichpy/client/generated/models/asset_edit_action_list_dto_edits_inner.py +188 -0
  111. immichpy/client/generated/models/asset_edit_action_mirror.py +95 -0
  112. immichpy/client/generated/models/asset_edit_action_rotate.py +95 -0
  113. immichpy/client/generated/models/asset_edits_dto.py +107 -0
  114. immichpy/client/generated/models/asset_face_create_dto.py +13 -9
  115. immichpy/client/generated/models/asset_face_delete_dto.py +3 -3
  116. immichpy/client/generated/models/asset_face_response_dto.py +26 -10
  117. immichpy/client/generated/models/asset_face_update_dto.py +3 -3
  118. immichpy/client/generated/models/asset_face_update_item.py +3 -3
  119. immichpy/client/generated/models/asset_face_without_person_response_dto.py +23 -9
  120. immichpy/client/generated/models/asset_full_sync_dto.py +13 -5
  121. immichpy/client/generated/models/asset_ids_dto.py +2 -2
  122. immichpy/client/generated/models/asset_ids_response_dto.py +6 -4
  123. immichpy/client/generated/models/asset_job_name.py +2 -2
  124. immichpy/client/generated/models/asset_jobs_dto.py +3 -3
  125. immichpy/client/generated/models/asset_media_response_dto.py +4 -4
  126. immichpy/client/generated/models/asset_media_size.py +2 -1
  127. immichpy/client/generated/models/asset_media_status.py +2 -2
  128. immichpy/client/generated/models/asset_metadata_bulk_delete_dto.py +103 -0
  129. immichpy/client/generated/models/asset_metadata_bulk_delete_item_dto.py +86 -0
  130. immichpy/client/generated/models/asset_metadata_bulk_response_dto.py +93 -0
  131. immichpy/client/generated/models/asset_metadata_bulk_upsert_dto.py +103 -0
  132. immichpy/client/generated/models/asset_metadata_bulk_upsert_item_dto.py +91 -0
  133. immichpy/client/generated/models/asset_metadata_response_dto.py +5 -6
  134. immichpy/client/generated/models/asset_metadata_upsert_dto.py +5 -3
  135. immichpy/client/generated/models/asset_metadata_upsert_item_dto.py +4 -5
  136. immichpy/client/generated/models/asset_ocr_response_dto.py +1 -1
  137. immichpy/client/generated/models/asset_order.py +2 -2
  138. immichpy/client/generated/models/asset_response_dto.py +66 -24
  139. immichpy/client/generated/models/asset_stack_response_dto.py +8 -4
  140. immichpy/client/generated/models/asset_stats_response_dto.py +5 -5
  141. immichpy/client/generated/models/asset_type_enum.py +2 -2
  142. immichpy/client/generated/models/asset_visibility.py +2 -2
  143. immichpy/client/generated/models/audio_codec.py +2 -2
  144. immichpy/client/generated/models/auth_status_response_dto.py +12 -6
  145. immichpy/client/generated/models/avatar_update.py +3 -3
  146. immichpy/client/generated/models/bulk_id_error_reason.py +2 -2
  147. immichpy/client/generated/models/bulk_id_response_dto.py +14 -5
  148. immichpy/client/generated/models/bulk_ids_dto.py +3 -3
  149. immichpy/client/generated/models/cast_response.py +4 -2
  150. immichpy/client/generated/models/cast_update.py +4 -2
  151. immichpy/client/generated/models/change_password_dto.py +6 -4
  152. immichpy/client/generated/models/check_existing_assets_dto.py +3 -3
  153. immichpy/client/generated/models/check_existing_assets_response_dto.py +4 -2
  154. immichpy/client/generated/models/clip_config.py +5 -3
  155. immichpy/client/generated/models/colorspace.py +1 -1
  156. immichpy/client/generated/models/contributor_count_response_dto.py +5 -3
  157. immichpy/client/generated/models/cq_mode.py +2 -2
  158. immichpy/client/generated/models/create_album_dto.py +9 -5
  159. immichpy/client/generated/models/create_library_dto.py +9 -5
  160. immichpy/client/generated/models/create_profile_image_response_dto.py +8 -4
  161. immichpy/client/generated/models/crop_parameters.py +105 -0
  162. immichpy/client/generated/models/database_backup_config.py +6 -4
  163. immichpy/client/generated/models/database_backup_delete_dto.py +82 -0
  164. immichpy/client/generated/models/database_backup_dto.py +85 -0
  165. immichpy/client/generated/models/database_backup_list_response_dto.py +98 -0
  166. immichpy/client/generated/models/download_archive_info.py +5 -3
  167. immichpy/client/generated/models/download_info_dto.py +11 -5
  168. immichpy/client/generated/models/download_response.py +8 -3
  169. immichpy/client/generated/models/download_response_dto.py +3 -3
  170. immichpy/client/generated/models/download_update.py +5 -3
  171. immichpy/client/generated/models/duplicate_detection_config.py +6 -3
  172. immichpy/client/generated/models/duplicate_response_dto.py +5 -3
  173. immichpy/client/generated/models/email_notifications_response.py +10 -4
  174. immichpy/client/generated/models/email_notifications_update.py +14 -4
  175. immichpy/client/generated/models/exif_response_dto.py +47 -23
  176. immichpy/client/generated/models/face_dto.py +3 -3
  177. immichpy/client/generated/models/facial_recognition_config.py +15 -6
  178. immichpy/client/generated/models/folders_response.py +5 -3
  179. immichpy/client/generated/models/folders_update.py +9 -3
  180. immichpy/client/generated/models/image_format.py +2 -2
  181. immichpy/client/generated/models/job_create_dto.py +3 -3
  182. immichpy/client/generated/models/job_name.py +3 -2
  183. immichpy/client/generated/models/job_settings_dto.py +4 -2
  184. immichpy/client/generated/models/library_response_dto.py +16 -10
  185. immichpy/client/generated/models/library_stats_response_dto.py +6 -6
  186. immichpy/client/generated/models/license_key_dto.py +7 -3
  187. immichpy/client/generated/models/license_response_dto.py +8 -4
  188. immichpy/client/generated/models/log_level.py +1 -1
  189. immichpy/client/generated/models/login_credential_dto.py +4 -4
  190. immichpy/client/generated/models/login_response_dto.py +13 -9
  191. immichpy/client/generated/models/logout_response_dto.py +3 -3
  192. immichpy/client/generated/models/machine_learning_availability_checks_dto.py +3 -3
  193. immichpy/client/generated/models/maintenance_action.py +4 -2
  194. immichpy/client/generated/models/maintenance_auth_dto.py +3 -3
  195. immichpy/client/generated/models/maintenance_detect_install_response_dto.py +101 -0
  196. immichpy/client/generated/models/maintenance_detect_install_storage_folder_dto.py +95 -0
  197. immichpy/client/generated/models/maintenance_login_dto.py +3 -3
  198. immichpy/client/generated/models/maintenance_status_response_dto.py +109 -0
  199. immichpy/client/generated/models/manual_job_name.py +2 -2
  200. immichpy/client/generated/models/map_marker_response_dto.py +8 -8
  201. immichpy/client/generated/models/map_reverse_geocode_response_dto.py +5 -5
  202. immichpy/client/generated/models/memories_response.py +4 -4
  203. immichpy/client/generated/models/memories_update.py +7 -3
  204. immichpy/client/generated/models/memory_create_dto.py +12 -6
  205. immichpy/client/generated/models/memory_response_dto.py +20 -12
  206. immichpy/client/generated/models/memory_search_order.py +1 -1
  207. immichpy/client/generated/models/memory_statistics_response_dto.py +3 -3
  208. immichpy/client/generated/models/memory_type.py +1 -1
  209. immichpy/client/generated/models/memory_update_dto.py +10 -4
  210. immichpy/client/generated/models/merge_person_dto.py +3 -3
  211. immichpy/client/generated/models/metadata_search_dto.py +124 -46
  212. immichpy/client/generated/models/{asset_metadata_key.py → mirror_axis.py} +6 -5
  213. immichpy/client/generated/models/mirror_parameters.py +83 -0
  214. immichpy/client/generated/models/notification_create_dto.py +18 -8
  215. immichpy/client/generated/models/notification_delete_all_dto.py +3 -3
  216. immichpy/client/generated/models/notification_dto.py +15 -9
  217. immichpy/client/generated/models/notification_level.py +1 -1
  218. immichpy/client/generated/models/notification_type.py +1 -1
  219. immichpy/client/generated/models/notification_update_all_dto.py +5 -3
  220. immichpy/client/generated/models/notification_update_dto.py +4 -2
  221. immichpy/client/generated/models/o_auth_authorize_response_dto.py +3 -3
  222. immichpy/client/generated/models/o_auth_callback_dto.py +8 -4
  223. immichpy/client/generated/models/o_auth_config_dto.py +10 -4
  224. immichpy/client/generated/models/o_auth_token_endpoint_auth_method.py +2 -2
  225. immichpy/client/generated/models/ocr_config.py +14 -6
  226. immichpy/client/generated/models/on_this_day_dto.py +2 -2
  227. immichpy/client/generated/models/onboarding_dto.py +4 -2
  228. immichpy/client/generated/models/onboarding_response_dto.py +4 -2
  229. immichpy/client/generated/models/partner_create_dto.py +4 -2
  230. immichpy/client/generated/models/partner_direction.py +1 -1
  231. immichpy/client/generated/models/partner_response_dto.py +16 -8
  232. immichpy/client/generated/models/partner_update_dto.py +4 -2
  233. immichpy/client/generated/models/people_response.py +5 -3
  234. immichpy/client/generated/models/people_response_dto.py +7 -5
  235. immichpy/client/generated/models/people_update.py +9 -3
  236. immichpy/client/generated/models/people_update_dto.py +3 -3
  237. immichpy/client/generated/models/people_update_item.py +10 -10
  238. immichpy/client/generated/models/permission.py +13 -2
  239. immichpy/client/generated/models/person_create_dto.py +8 -8
  240. immichpy/client/generated/models/person_response_dto.py +17 -9
  241. immichpy/client/generated/models/person_statistics_response_dto.py +3 -3
  242. immichpy/client/generated/models/person_update_dto.py +9 -9
  243. immichpy/client/generated/models/person_with_faces_response_dto.py +20 -10
  244. immichpy/client/generated/models/pin_code_change_dto.py +10 -4
  245. immichpy/client/generated/models/pin_code_reset_dto.py +7 -3
  246. immichpy/client/generated/models/pin_code_setup_dto.py +2 -2
  247. immichpy/client/generated/models/places_response_dto.py +11 -7
  248. immichpy/client/generated/models/plugin_action_response_dto.py +13 -9
  249. immichpy/client/generated/models/{plugin_context.py → plugin_context_type.py} +4 -4
  250. immichpy/client/generated/models/plugin_filter_response_dto.py +13 -9
  251. immichpy/client/generated/models/plugin_response_dto.py +11 -11
  252. immichpy/client/generated/models/plugin_trigger_response_dto.py +89 -0
  253. immichpy/client/generated/models/plugin_trigger_type.py +2 -2
  254. immichpy/client/generated/models/purchase_response.py +7 -3
  255. immichpy/client/generated/models/purchase_update.py +7 -3
  256. immichpy/client/generated/models/queue_command.py +2 -2
  257. immichpy/client/generated/models/queue_command_dto.py +6 -4
  258. immichpy/client/generated/models/queue_delete_dto.py +1 -1
  259. immichpy/client/generated/models/queue_job_response_dto.py +6 -6
  260. immichpy/client/generated/models/queue_job_status.py +1 -1
  261. immichpy/client/generated/models/queue_name.py +2 -1
  262. immichpy/client/generated/models/queue_response_dto.py +5 -3
  263. immichpy/client/generated/models/queue_response_legacy_dto.py +1 -1
  264. immichpy/client/generated/models/queue_statistics_dto.py +8 -8
  265. immichpy/client/generated/models/queue_status_legacy_dto.py +8 -3
  266. immichpy/client/generated/models/queue_update_dto.py +4 -2
  267. immichpy/client/generated/models/queues_response_legacy_dto.py +9 -1
  268. immichpy/client/generated/models/random_search_dto.py +96 -34
  269. immichpy/client/generated/models/ratings_response.py +3 -3
  270. immichpy/client/generated/models/ratings_update.py +5 -3
  271. immichpy/client/generated/models/reaction_level.py +1 -1
  272. immichpy/client/generated/models/reaction_type.py +1 -1
  273. immichpy/client/generated/models/reverse_geocoding_state_response_dto.py +7 -3
  274. immichpy/client/generated/models/rotate_parameters.py +84 -0
  275. immichpy/client/generated/models/search_album_response_dto.py +4 -4
  276. immichpy/client/generated/models/search_asset_response_dto.py +6 -4
  277. immichpy/client/generated/models/search_explore_item.py +3 -3
  278. immichpy/client/generated/models/search_explore_response_dto.py +2 -2
  279. immichpy/client/generated/models/search_facet_count_response_dto.py +4 -4
  280. immichpy/client/generated/models/search_facet_response_dto.py +3 -3
  281. immichpy/client/generated/models/search_response_dto.py +1 -1
  282. immichpy/client/generated/models/search_statistics_response_dto.py +3 -3
  283. immichpy/client/generated/models/search_suggestion_type.py +1 -1
  284. immichpy/client/generated/models/server_about_response_dto.py +46 -22
  285. immichpy/client/generated/models/server_apk_links_dto.py +12 -6
  286. immichpy/client/generated/models/server_config_dto.py +36 -12
  287. immichpy/client/generated/models/server_features_dto.py +32 -16
  288. immichpy/client/generated/models/server_media_types_response_dto.py +5 -5
  289. immichpy/client/generated/models/server_ping_response.py +1 -1
  290. immichpy/client/generated/models/server_stats_response_dto.py +10 -6
  291. immichpy/client/generated/models/server_storage_response_dto.py +21 -8
  292. immichpy/client/generated/models/server_theme_dto.py +4 -2
  293. immichpy/client/generated/models/server_version_history_response_dto.py +6 -4
  294. immichpy/client/generated/models/server_version_response_dto.py +5 -5
  295. immichpy/client/generated/models/session_create_dto.py +8 -4
  296. immichpy/client/generated/models/session_create_response_dto.py +17 -11
  297. immichpy/client/generated/models/session_response_dto.py +16 -10
  298. immichpy/client/generated/models/session_unlock_dto.py +7 -3
  299. immichpy/client/generated/models/session_update_dto.py +2 -2
  300. immichpy/client/generated/models/set_maintenance_mode_dto.py +17 -7
  301. immichpy/client/generated/models/shared_link_create_dto.py +25 -11
  302. immichpy/client/generated/models/shared_link_edit_dto.py +19 -9
  303. immichpy/client/generated/models/shared_link_response_dto.py +18 -14
  304. immichpy/client/generated/models/shared_link_type.py +2 -2
  305. immichpy/client/generated/models/shared_links_response.py +5 -3
  306. immichpy/client/generated/models/shared_links_update.py +9 -3
  307. immichpy/client/generated/models/sign_up_dto.py +5 -5
  308. immichpy/client/generated/models/smart_search_dto.py +102 -36
  309. immichpy/client/generated/models/source_type.py +2 -2
  310. immichpy/client/generated/models/stack_create_dto.py +2 -2
  311. immichpy/client/generated/models/stack_response_dto.py +6 -4
  312. immichpy/client/generated/models/stack_update_dto.py +4 -2
  313. immichpy/client/generated/models/statistics_search_dto.py +86 -30
  314. immichpy/client/generated/models/storage_folder.py +38 -0
  315. immichpy/client/generated/models/sync_ack_delete_dto.py +5 -3
  316. immichpy/client/generated/models/sync_ack_dto.py +4 -4
  317. immichpy/client/generated/models/sync_ack_set_dto.py +4 -2
  318. immichpy/client/generated/models/sync_album_delete_v1.py +2 -2
  319. immichpy/client/generated/models/sync_album_to_asset_delete_v1.py +3 -3
  320. immichpy/client/generated/models/sync_album_to_asset_v1.py +3 -3
  321. immichpy/client/generated/models/sync_album_user_delete_v1.py +3 -3
  322. immichpy/client/generated/models/sync_album_user_v1.py +4 -4
  323. immichpy/client/generated/models/sync_album_v1.py +13 -9
  324. immichpy/client/generated/models/sync_asset_delete_v1.py +2 -2
  325. immichpy/client/generated/models/sync_asset_exif_v1.py +46 -26
  326. immichpy/client/generated/models/sync_asset_face_delete_v1.py +2 -2
  327. immichpy/client/generated/models/sync_asset_face_v1.py +5 -5
  328. immichpy/client/generated/models/sync_asset_metadata_delete_v1.py +3 -4
  329. immichpy/client/generated/models/sync_asset_metadata_v1.py +4 -5
  330. immichpy/client/generated/models/sync_asset_v1.py +47 -18
  331. immichpy/client/generated/models/sync_auth_user_v1.py +22 -12
  332. immichpy/client/generated/models/sync_entity_type.py +2 -2
  333. immichpy/client/generated/models/sync_memory_asset_delete_v1.py +3 -3
  334. immichpy/client/generated/models/sync_memory_asset_v1.py +3 -3
  335. immichpy/client/generated/models/sync_memory_delete_v1.py +2 -2
  336. immichpy/client/generated/models/sync_memory_v1.py +13 -13
  337. immichpy/client/generated/models/sync_partner_delete_v1.py +5 -3
  338. immichpy/client/generated/models/sync_partner_v1.py +6 -4
  339. immichpy/client/generated/models/sync_person_delete_v1.py +2 -2
  340. immichpy/client/generated/models/sync_person_v1.py +13 -11
  341. immichpy/client/generated/models/sync_request_type.py +2 -2
  342. immichpy/client/generated/models/sync_stack_delete_v1.py +2 -2
  343. immichpy/client/generated/models/sync_stack_v1.py +8 -6
  344. immichpy/client/generated/models/sync_stream_dto.py +4 -4
  345. immichpy/client/generated/models/sync_user_delete_v1.py +2 -2
  346. immichpy/client/generated/models/sync_user_metadata_delete_v1.py +3 -3
  347. immichpy/client/generated/models/sync_user_metadata_v1.py +4 -4
  348. immichpy/client/generated/models/sync_user_v1.py +16 -8
  349. immichpy/client/generated/models/system_config_backups_dto.py +1 -1
  350. immichpy/client/generated/models/system_config_dto.py +1 -1
  351. immichpy/client/generated/models/system_config_f_fmpeg_dto.py +44 -22
  352. immichpy/client/generated/models/system_config_faces_dto.py +2 -2
  353. immichpy/client/generated/models/system_config_generated_fullsize_image_dto.py +13 -7
  354. immichpy/client/generated/models/system_config_generated_image_dto.py +14 -8
  355. immichpy/client/generated/models/system_config_image_dto.py +5 -3
  356. immichpy/client/generated/models/system_config_job_dto.py +9 -1
  357. immichpy/client/generated/models/system_config_library_dto.py +1 -1
  358. immichpy/client/generated/models/system_config_library_scan_dto.py +2 -2
  359. immichpy/client/generated/models/system_config_library_watch_dto.py +3 -3
  360. immichpy/client/generated/models/system_config_logging_dto.py +3 -3
  361. immichpy/client/generated/models/system_config_machine_learning_dto.py +2 -2
  362. immichpy/client/generated/models/system_config_map_dto.py +2 -2
  363. immichpy/client/generated/models/system_config_metadata_dto.py +1 -1
  364. immichpy/client/generated/models/system_config_new_version_check_dto.py +3 -3
  365. immichpy/client/generated/models/system_config_nightly_tasks_dto.py +16 -6
  366. immichpy/client/generated/models/system_config_notifications_dto.py +1 -1
  367. immichpy/client/generated/models/system_config_o_auth_dto.py +28 -18
  368. immichpy/client/generated/models/system_config_password_login_dto.py +3 -3
  369. immichpy/client/generated/models/system_config_reverse_geocoding_dto.py +3 -3
  370. immichpy/client/generated/models/system_config_server_dto.py +8 -4
  371. immichpy/client/generated/models/system_config_smtp_dto.py +8 -4
  372. immichpy/client/generated/models/system_config_smtp_transport_dto.py +9 -7
  373. immichpy/client/generated/models/system_config_storage_template_dto.py +6 -4
  374. immichpy/client/generated/models/system_config_template_emails_dto.py +1 -1
  375. immichpy/client/generated/models/system_config_template_storage_option_dto.py +32 -9
  376. immichpy/client/generated/models/system_config_templates_dto.py +1 -1
  377. immichpy/client/generated/models/system_config_theme_dto.py +4 -2
  378. immichpy/client/generated/models/system_config_trash_dto.py +3 -3
  379. immichpy/client/generated/models/system_config_user_dto.py +4 -2
  380. immichpy/client/generated/models/tag_bulk_assets_dto.py +3 -3
  381. immichpy/client/generated/models/tag_bulk_assets_response_dto.py +3 -3
  382. immichpy/client/generated/models/tag_create_dto.py +8 -4
  383. immichpy/client/generated/models/tag_response_dto.py +10 -8
  384. immichpy/client/generated/models/tag_update_dto.py +3 -3
  385. immichpy/client/generated/models/tag_upsert_dto.py +3 -3
  386. immichpy/client/generated/models/tags_response.py +5 -3
  387. immichpy/client/generated/models/tags_update.py +9 -3
  388. immichpy/client/generated/models/template_dto.py +3 -3
  389. immichpy/client/generated/models/template_response_dto.py +4 -4
  390. immichpy/client/generated/models/test_email_response_dto.py +2 -2
  391. immichpy/client/generated/models/time_bucket_asset_response_dto.py +2 -3
  392. immichpy/client/generated/models/time_buckets_response_dto.py +1 -1
  393. immichpy/client/generated/models/tone_mapping.py +2 -2
  394. immichpy/client/generated/models/transcode_hw_accel.py +2 -2
  395. immichpy/client/generated/models/transcode_policy.py +2 -2
  396. immichpy/client/generated/models/trash_response_dto.py +3 -3
  397. immichpy/client/generated/models/update_album_dto.py +12 -6
  398. immichpy/client/generated/models/update_album_user_dto.py +3 -3
  399. immichpy/client/generated/models/update_asset_dto.py +21 -9
  400. immichpy/client/generated/models/update_library_dto.py +8 -4
  401. immichpy/client/generated/models/usage_by_user_dto.py +16 -9
  402. immichpy/client/generated/models/user_admin_create_dto.py +20 -10
  403. immichpy/client/generated/models/user_admin_delete_dto.py +5 -3
  404. immichpy/client/generated/models/user_admin_response_dto.py +35 -18
  405. immichpy/client/generated/models/user_admin_update_dto.py +20 -10
  406. immichpy/client/generated/models/user_avatar_color.py +2 -2
  407. immichpy/client/generated/models/user_license.py +6 -4
  408. immichpy/client/generated/models/user_metadata_key.py +2 -2
  409. immichpy/client/generated/models/user_preferences_response_dto.py +1 -1
  410. immichpy/client/generated/models/user_preferences_update_dto.py +1 -1
  411. immichpy/client/generated/models/user_response_dto.py +13 -7
  412. immichpy/client/generated/models/user_status.py +2 -2
  413. immichpy/client/generated/models/user_update_me_dto.py +10 -5
  414. immichpy/client/generated/models/validate_access_token_response_dto.py +4 -2
  415. immichpy/client/generated/models/validate_library_dto.py +9 -3
  416. immichpy/client/generated/models/validate_library_import_path_response_dto.py +4 -4
  417. immichpy/client/generated/models/validate_library_response_dto.py +4 -2
  418. immichpy/client/generated/models/version_check_state_response_dto.py +7 -3
  419. immichpy/client/generated/models/video_codec.py +2 -2
  420. immichpy/client/generated/models/video_container.py +2 -2
  421. immichpy/client/generated/models/workflow_action_item_dto.py +7 -3
  422. immichpy/client/generated/models/workflow_action_response_dto.py +10 -6
  423. immichpy/client/generated/models/workflow_create_dto.py +11 -7
  424. immichpy/client/generated/models/workflow_filter_item_dto.py +7 -3
  425. immichpy/client/generated/models/workflow_filter_response_dto.py +10 -6
  426. immichpy/client/generated/models/workflow_response_dto.py +14 -27
  427. immichpy/client/generated/models/workflow_update_dto.py +19 -7
  428. immichpy/client/generated/rest.py +1 -1
  429. immichpy/client/main.py +4 -1
  430. {immichpy-1.6.5.dist-info → immichpy-1.7.5.dist-info}/METADATA +1 -3
  431. immichpy-1.7.5.dist-info/RECORD +464 -0
  432. immichpy-1.6.5.dist-info/RECORD +0 -439
  433. {immichpy-1.6.5.dist-info → immichpy-1.7.5.dist-info}/WHEEL +0 -0
  434. {immichpy-1.6.5.dist-info → immichpy-1.7.5.dist-info}/entry_points.txt +0 -0
  435. {immichpy-1.6.5.dist-info → immichpy-1.7.5.dist-info}/licenses/LICENSE +0 -0
@@ -5,7 +5,7 @@ Immich
5
5
 
6
6
  Immich API
7
7
 
8
- The version of the OpenAPI document: 2.4.1
8
+ The version of the OpenAPI document: 2.5.2
9
9
  Generated by OpenAPI Generator (https://openapi-generator.tech)
10
10
 
11
11
  Do not edit the class manually.
@@ -39,25 +39,41 @@ class AssetBulkUpdateDto(BaseModel):
39
39
  """ # noqa: E501
40
40
 
41
41
  date_time_original: Optional[StrictStr] = Field(
42
- default=None, alias="dateTimeOriginal"
42
+ default=None, description="Original date and time", alias="dateTimeOriginal"
43
43
  )
44
44
  date_time_relative: Optional[Union[StrictFloat, StrictInt]] = Field(
45
- default=None, alias="dateTimeRelative"
45
+ default=None,
46
+ description="Relative time offset in seconds",
47
+ alias="dateTimeRelative",
48
+ )
49
+ description: Optional[StrictStr] = Field(
50
+ default=None, description="Asset description"
51
+ )
52
+ duplicate_id: Optional[StrictStr] = Field(
53
+ default=None, description="Duplicate asset ID", alias="duplicateId"
54
+ )
55
+ ids: List[UUID] = Field(description="Asset IDs to update")
56
+ is_favorite: Optional[StrictBool] = Field(
57
+ default=None, description="Mark as favorite", alias="isFavorite"
58
+ )
59
+ latitude: Optional[Union[StrictFloat, StrictInt]] = Field(
60
+ default=None, description="Latitude coordinate"
61
+ )
62
+ longitude: Optional[Union[StrictFloat, StrictInt]] = Field(
63
+ default=None, description="Longitude coordinate"
46
64
  )
47
- description: Optional[StrictStr] = None
48
- duplicate_id: Optional[StrictStr] = Field(default=None, alias="duplicateId")
49
- ids: List[UUID]
50
- is_favorite: Optional[StrictBool] = Field(default=None, alias="isFavorite")
51
- latitude: Optional[Union[StrictFloat, StrictInt]] = None
52
- longitude: Optional[Union[StrictFloat, StrictInt]] = None
53
65
  rating: Optional[
54
66
  Union[
55
67
  Annotated[float, Field(le=5, strict=True, ge=-1)],
56
68
  Annotated[int, Field(le=5, strict=True, ge=-1)],
57
69
  ]
58
- ] = None
59
- time_zone: Optional[StrictStr] = Field(default=None, alias="timeZone")
60
- visibility: Optional[AssetVisibility] = None
70
+ ] = Field(default=None, description="Rating")
71
+ time_zone: Optional[StrictStr] = Field(
72
+ default=None, description="Time zone (IANA timezone)", alias="timeZone"
73
+ )
74
+ visibility: Optional[AssetVisibility] = Field(
75
+ default=None, description="Asset visibility"
76
+ )
61
77
  __properties: ClassVar[List[str]] = [
62
78
  "dateTimeOriginal",
63
79
  "dateTimeRelative",
@@ -5,7 +5,7 @@ Immich
5
5
 
6
6
  Immich API
7
7
 
8
- The version of the OpenAPI document: 2.4.1
8
+ The version of the OpenAPI document: 2.5.2
9
9
  Generated by OpenAPI Generator (https://openapi-generator.tech)
10
10
 
11
11
  Do not edit the class manually.
@@ -16,7 +16,7 @@ import pprint
16
16
  import re # noqa: F401
17
17
  import json
18
18
 
19
- from pydantic import BaseModel, ConfigDict
19
+ from pydantic import BaseModel, ConfigDict, Field
20
20
  from typing import Any, ClassVar, Dict, List
21
21
  from immichpy.client.generated.models.asset_bulk_upload_check_item import (
22
22
  AssetBulkUploadCheckItem,
@@ -30,7 +30,7 @@ class AssetBulkUploadCheckDto(BaseModel):
30
30
  AssetBulkUploadCheckDto
31
31
  """ # noqa: E501
32
32
 
33
- assets: List[AssetBulkUploadCheckItem]
33
+ assets: List[AssetBulkUploadCheckItem] = Field(description="Assets to check")
34
34
  __properties: ClassVar[List[str]] = ["assets"]
35
35
 
36
36
  model_config = ConfigDict(
@@ -5,7 +5,7 @@ Immich
5
5
 
6
6
  Immich API
7
7
 
8
- The version of the OpenAPI document: 2.4.1
8
+ The version of the OpenAPI document: 2.5.2
9
9
  Generated by OpenAPI Generator (https://openapi-generator.tech)
10
10
 
11
11
  Do not edit the class manually.
@@ -27,8 +27,8 @@ class AssetBulkUploadCheckItem(BaseModel):
27
27
  AssetBulkUploadCheckItem
28
28
  """ # noqa: E501
29
29
 
30
- checksum: StrictStr = Field(description="base64 or hex encoded sha1 hash")
31
- id: StrictStr
30
+ checksum: StrictStr = Field(description="Base64 or hex encoded SHA1 hash")
31
+ id: StrictStr = Field(description="Asset ID")
32
32
  __properties: ClassVar[List[str]] = ["checksum", "id"]
33
33
 
34
34
  model_config = ConfigDict(
@@ -5,7 +5,7 @@ Immich
5
5
 
6
6
  Immich API
7
7
 
8
- The version of the OpenAPI document: 2.4.1
8
+ The version of the OpenAPI document: 2.5.2
9
9
  Generated by OpenAPI Generator (https://openapi-generator.tech)
10
10
 
11
11
  Do not edit the class manually.
@@ -16,7 +16,7 @@ import pprint
16
16
  import re # noqa: F401
17
17
  import json
18
18
 
19
- from pydantic import BaseModel, ConfigDict
19
+ from pydantic import BaseModel, ConfigDict, Field
20
20
  from typing import Any, ClassVar, Dict, List
21
21
  from immichpy.client.generated.models.asset_bulk_upload_check_result import (
22
22
  AssetBulkUploadCheckResult,
@@ -30,7 +30,9 @@ class AssetBulkUploadCheckResponseDto(BaseModel):
30
30
  AssetBulkUploadCheckResponseDto
31
31
  """ # noqa: E501
32
32
 
33
- results: List[AssetBulkUploadCheckResult]
33
+ results: List[AssetBulkUploadCheckResult] = Field(
34
+ description="Upload check results"
35
+ )
34
36
  __properties: ClassVar[List[str]] = ["results"]
35
37
 
36
38
  model_config = ConfigDict(
@@ -5,7 +5,7 @@ Immich
5
5
 
6
6
  Immich API
7
7
 
8
- The version of the OpenAPI document: 2.4.1
8
+ The version of the OpenAPI document: 2.5.2
9
9
  Generated by OpenAPI Generator (https://openapi-generator.tech)
10
10
 
11
11
  Do not edit the class manually.
@@ -34,11 +34,17 @@ class AssetBulkUploadCheckResult(BaseModel):
34
34
  AssetBulkUploadCheckResult
35
35
  """ # noqa: E501
36
36
 
37
- action: StrictStr
38
- asset_id: Optional[StrictStr] = Field(default=None, alias="assetId")
39
- id: StrictStr
40
- is_trashed: Optional[StrictBool] = Field(default=None, alias="isTrashed")
41
- reason: Optional[StrictStr] = None
37
+ action: StrictStr = Field(description="Upload action")
38
+ asset_id: Optional[StrictStr] = Field(
39
+ default=None, description="Existing asset ID if duplicate", alias="assetId"
40
+ )
41
+ id: StrictStr = Field(description="Asset ID")
42
+ is_trashed: Optional[StrictBool] = Field(
43
+ default=None, description="Whether existing asset is trashed", alias="isTrashed"
44
+ )
45
+ reason: Optional[StrictStr] = Field(
46
+ default=None, description="Rejection reason if rejected"
47
+ )
42
48
  __properties: ClassVar[List[str]] = [
43
49
  "action",
44
50
  "assetId",
@@ -5,7 +5,7 @@ Immich
5
5
 
6
6
  Immich API
7
7
 
8
- The version of the OpenAPI document: 2.4.1
8
+ The version of the OpenAPI document: 2.5.2
9
9
  Generated by OpenAPI Generator (https://openapi-generator.tech)
10
10
 
11
11
  Do not edit the class manually.
@@ -28,13 +28,21 @@ class AssetCopyDto(BaseModel):
28
28
  AssetCopyDto
29
29
  """ # noqa: E501
30
30
 
31
- albums: Optional[StrictBool] = True
32
- favorite: Optional[StrictBool] = True
33
- shared_links: Optional[StrictBool] = Field(default=True, alias="sharedLinks")
34
- sidecar: Optional[StrictBool] = True
35
- source_id: UUID = Field(alias="sourceId")
36
- stack: Optional[StrictBool] = True
37
- target_id: UUID = Field(alias="targetId")
31
+ albums: Optional[StrictBool] = Field(
32
+ default=True, description="Copy album associations"
33
+ )
34
+ favorite: Optional[StrictBool] = Field(
35
+ default=True, description="Copy favorite status"
36
+ )
37
+ shared_links: Optional[StrictBool] = Field(
38
+ default=True, description="Copy shared links", alias="sharedLinks"
39
+ )
40
+ sidecar: Optional[StrictBool] = Field(default=True, description="Copy sidecar file")
41
+ source_id: UUID = Field(description="Source asset ID", alias="sourceId")
42
+ stack: Optional[StrictBool] = Field(
43
+ default=True, description="Copy stack association"
44
+ )
45
+ target_id: UUID = Field(description="Target asset ID", alias="targetId")
38
46
  __properties: ClassVar[List[str]] = [
39
47
  "albums",
40
48
  "favorite",
@@ -5,7 +5,7 @@ Immich
5
5
 
6
6
  Immich API
7
7
 
8
- The version of the OpenAPI document: 2.4.1
8
+ The version of the OpenAPI document: 2.5.2
9
9
  Generated by OpenAPI Generator (https://openapi-generator.tech)
10
10
 
11
11
  Do not edit the class manually.
@@ -29,8 +29,10 @@ class AssetDeltaSyncDto(BaseModel):
29
29
  AssetDeltaSyncDto
30
30
  """ # noqa: E501
31
31
 
32
- updated_after: datetime = Field(alias="updatedAfter")
33
- user_ids: List[UUID] = Field(alias="userIds")
32
+ updated_after: datetime = Field(
33
+ description="Sync assets updated after this date", alias="updatedAfter"
34
+ )
35
+ user_ids: List[UUID] = Field(description="User IDs to sync", alias="userIds")
34
36
  __properties: ClassVar[List[str]] = ["updatedAfter", "userIds"]
35
37
 
36
38
  model_config = ConfigDict(
@@ -5,7 +5,7 @@ Immich
5
5
 
6
6
  Immich API
7
7
 
8
- The version of the OpenAPI document: 2.4.1
8
+ The version of the OpenAPI document: 2.5.2
9
9
  Generated by OpenAPI Generator (https://openapi-generator.tech)
10
10
 
11
11
  Do not edit the class manually.
@@ -28,9 +28,11 @@ class AssetDeltaSyncResponseDto(BaseModel):
28
28
  AssetDeltaSyncResponseDto
29
29
  """ # noqa: E501
30
30
 
31
- deleted: List[StrictStr]
32
- needs_full_sync: StrictBool = Field(alias="needsFullSync")
33
- upserted: List[AssetResponseDto]
31
+ deleted: List[StrictStr] = Field(description="Deleted asset IDs")
32
+ needs_full_sync: StrictBool = Field(
33
+ description="Whether full sync is needed", alias="needsFullSync"
34
+ )
35
+ upserted: List[AssetResponseDto] = Field(description="Upserted assets")
34
36
  __properties: ClassVar[List[str]] = ["deleted", "needsFullSync", "upserted"]
35
37
 
36
38
  model_config = ConfigDict(
@@ -0,0 +1,35 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ Immich
5
+
6
+ Immich API
7
+
8
+ The version of the OpenAPI document: 2.5.2
9
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
10
+
11
+ Do not edit the class manually.
12
+ """ # noqa: E501
13
+
14
+ from __future__ import annotations
15
+ import json
16
+ from enum import Enum
17
+ from typing_extensions import Self
18
+
19
+
20
+ class AssetEditAction(str, Enum):
21
+ """
22
+ Type of edit action to perform
23
+ """
24
+
25
+ """
26
+ allowed enum values
27
+ """
28
+ CROP = "crop"
29
+ ROTATE = "rotate"
30
+ MIRROR = "mirror"
31
+
32
+ @classmethod
33
+ def from_json(cls, json_str: str) -> Self:
34
+ """Create an instance of AssetEditAction from a JSON string"""
35
+ return cls(json.loads(json_str))
@@ -0,0 +1,95 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ Immich
5
+
6
+ Immich API
7
+
8
+ The version of the OpenAPI document: 2.5.2
9
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
10
+
11
+ Do not edit the class manually.
12
+ """ # noqa: E501
13
+
14
+ from __future__ import annotations
15
+ import pprint
16
+ import re # noqa: F401
17
+ import json
18
+
19
+ from pydantic import BaseModel, ConfigDict, Field
20
+ from typing import Any, ClassVar, Dict, List
21
+ from immichpy.client.generated.models.asset_edit_action import AssetEditAction
22
+ from immichpy.client.generated.models.crop_parameters import CropParameters
23
+ from typing import Optional, Set
24
+ from typing_extensions import Self
25
+
26
+
27
+ class AssetEditActionCrop(BaseModel):
28
+ """
29
+ AssetEditActionCrop
30
+ """ # noqa: E501
31
+
32
+ action: AssetEditAction = Field(description="Type of edit action to perform")
33
+ parameters: CropParameters
34
+ __properties: ClassVar[List[str]] = ["action", "parameters"]
35
+
36
+ model_config = ConfigDict(
37
+ populate_by_name=True,
38
+ validate_assignment=True,
39
+ protected_namespaces=(),
40
+ )
41
+
42
+ def to_str(self) -> str:
43
+ """Returns the string representation of the model using alias"""
44
+ return pprint.pformat(self.model_dump(by_alias=True))
45
+
46
+ def to_json(self) -> str:
47
+ """Returns the JSON representation of the model using alias"""
48
+ # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
49
+ return json.dumps(self.to_dict())
50
+
51
+ @classmethod
52
+ def from_json(cls, json_str: str) -> Optional[Self]:
53
+ """Create an instance of AssetEditActionCrop from a JSON string"""
54
+ return cls.from_dict(json.loads(json_str))
55
+
56
+ def to_dict(self) -> Dict[str, Any]:
57
+ """Return the dictionary representation of the model using alias.
58
+
59
+ This has the following differences from calling pydantic's
60
+ `self.model_dump(by_alias=True)`:
61
+
62
+ * `None` is only added to the output dict for nullable fields that
63
+ were set at model initialization. Other fields with value `None`
64
+ are ignored.
65
+ """
66
+ excluded_fields: Set[str] = set([])
67
+
68
+ _dict = self.model_dump(
69
+ by_alias=True,
70
+ exclude=excluded_fields,
71
+ exclude_none=True,
72
+ )
73
+ # override the default output from pydantic by calling `to_dict()` of parameters
74
+ if self.parameters:
75
+ _dict["parameters"] = self.parameters.to_dict()
76
+ return _dict
77
+
78
+ @classmethod
79
+ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
80
+ """Create an instance of AssetEditActionCrop from a dict"""
81
+ if obj is None:
82
+ return None
83
+
84
+ if not isinstance(obj, dict):
85
+ return cls.model_validate(obj)
86
+
87
+ _obj = cls.model_validate(
88
+ {
89
+ "action": obj.get("action"),
90
+ "parameters": CropParameters.from_dict(obj["parameters"])
91
+ if obj.get("parameters") is not None
92
+ else None,
93
+ }
94
+ )
95
+ return _obj
@@ -0,0 +1,104 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ Immich
5
+
6
+ Immich API
7
+
8
+ The version of the OpenAPI document: 2.5.2
9
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
10
+
11
+ Do not edit the class manually.
12
+ """ # noqa: E501
13
+
14
+ from __future__ import annotations
15
+ import pprint
16
+ import re # noqa: F401
17
+ import json
18
+
19
+ from pydantic import BaseModel, ConfigDict, Field
20
+ from typing import Any, ClassVar, Dict, List
21
+ from typing_extensions import Annotated
22
+ from immichpy.client.generated.models.asset_edit_action_list_dto_edits_inner import (
23
+ AssetEditActionListDtoEditsInner,
24
+ )
25
+ from typing import Optional, Set
26
+ from typing_extensions import Self
27
+
28
+
29
+ class AssetEditActionListDto(BaseModel):
30
+ """
31
+ AssetEditActionListDto
32
+ """ # noqa: E501
33
+
34
+ edits: Annotated[List[AssetEditActionListDtoEditsInner], Field(min_length=1)] = (
35
+ Field(description="List of edit actions to apply (crop, rotate, or mirror)")
36
+ )
37
+ __properties: ClassVar[List[str]] = ["edits"]
38
+
39
+ model_config = ConfigDict(
40
+ populate_by_name=True,
41
+ validate_assignment=True,
42
+ protected_namespaces=(),
43
+ )
44
+
45
+ def to_str(self) -> str:
46
+ """Returns the string representation of the model using alias"""
47
+ return pprint.pformat(self.model_dump(by_alias=True))
48
+
49
+ def to_json(self) -> str:
50
+ """Returns the JSON representation of the model using alias"""
51
+ # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
52
+ return json.dumps(self.to_dict())
53
+
54
+ @classmethod
55
+ def from_json(cls, json_str: str) -> Optional[Self]:
56
+ """Create an instance of AssetEditActionListDto from a JSON string"""
57
+ return cls.from_dict(json.loads(json_str))
58
+
59
+ def to_dict(self) -> Dict[str, Any]:
60
+ """Return the dictionary representation of the model using alias.
61
+
62
+ This has the following differences from calling pydantic's
63
+ `self.model_dump(by_alias=True)`:
64
+
65
+ * `None` is only added to the output dict for nullable fields that
66
+ were set at model initialization. Other fields with value `None`
67
+ are ignored.
68
+ """
69
+ excluded_fields: Set[str] = set([])
70
+
71
+ _dict = self.model_dump(
72
+ by_alias=True,
73
+ exclude=excluded_fields,
74
+ exclude_none=True,
75
+ )
76
+ # override the default output from pydantic by calling `to_dict()` of each item in edits (list)
77
+ _items = []
78
+ if self.edits:
79
+ for _item_edits in self.edits:
80
+ if _item_edits:
81
+ _items.append(_item_edits.to_dict())
82
+ _dict["edits"] = _items
83
+ return _dict
84
+
85
+ @classmethod
86
+ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
87
+ """Create an instance of AssetEditActionListDto from a dict"""
88
+ if obj is None:
89
+ return None
90
+
91
+ if not isinstance(obj, dict):
92
+ return cls.model_validate(obj)
93
+
94
+ _obj = cls.model_validate(
95
+ {
96
+ "edits": [
97
+ AssetEditActionListDtoEditsInner.from_dict(_item)
98
+ for _item in obj["edits"]
99
+ ]
100
+ if obj.get("edits") is not None
101
+ else None
102
+ }
103
+ )
104
+ return _obj
@@ -0,0 +1,188 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ Immich
5
+
6
+ Immich API
7
+
8
+ The version of the OpenAPI document: 2.5.2
9
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
10
+
11
+ Do not edit the class manually.
12
+ """ # noqa: E501
13
+
14
+ from __future__ import annotations
15
+ import json
16
+ import pprint
17
+ import re # noqa: F401
18
+ from pydantic import BaseModel, ValidationError, field_validator
19
+ from typing import Optional
20
+ from immichpy.client.generated.models.asset_edit_action_crop import AssetEditActionCrop
21
+ from immichpy.client.generated.models.asset_edit_action_mirror import (
22
+ AssetEditActionMirror,
23
+ )
24
+ from immichpy.client.generated.models.asset_edit_action_rotate import (
25
+ AssetEditActionRotate,
26
+ )
27
+ from typing import Union, Any, Set, TYPE_CHECKING, Dict
28
+ from typing_extensions import Self
29
+
30
+ ASSETEDITACTIONLISTDTOEDITSINNER_ANY_OF_SCHEMAS = [
31
+ "AssetEditActionCrop",
32
+ "AssetEditActionMirror",
33
+ "AssetEditActionRotate",
34
+ ]
35
+
36
+
37
+ class AssetEditActionListDtoEditsInner(BaseModel):
38
+ """
39
+ AssetEditActionListDtoEditsInner
40
+ """
41
+
42
+ # data type: AssetEditActionCrop
43
+ anyof_schema_1_validator: Optional[AssetEditActionCrop] = None
44
+ # data type: AssetEditActionRotate
45
+ anyof_schema_2_validator: Optional[AssetEditActionRotate] = None
46
+ # data type: AssetEditActionMirror
47
+ anyof_schema_3_validator: Optional[AssetEditActionMirror] = None
48
+ if TYPE_CHECKING:
49
+ actual_instance: Optional[
50
+ Union[AssetEditActionCrop, AssetEditActionMirror, AssetEditActionRotate]
51
+ ] = None
52
+ else:
53
+ actual_instance: Any = None
54
+ any_of_schemas: Set[str] = {
55
+ "AssetEditActionCrop",
56
+ "AssetEditActionMirror",
57
+ "AssetEditActionRotate",
58
+ }
59
+
60
+ model_config = {
61
+ "validate_assignment": True,
62
+ "protected_namespaces": (),
63
+ }
64
+
65
+ def __init__(self, *args, **kwargs) -> None:
66
+ if args:
67
+ if len(args) > 1:
68
+ raise ValueError(
69
+ "If a position argument is used, only 1 is allowed to set `actual_instance`"
70
+ )
71
+ if kwargs:
72
+ raise ValueError(
73
+ "If a position argument is used, keyword arguments cannot be used."
74
+ )
75
+ super().__init__(actual_instance=args[0])
76
+ else:
77
+ super().__init__(**kwargs)
78
+
79
+ @field_validator("actual_instance")
80
+ def actual_instance_must_validate_anyof(cls, v):
81
+ instance = AssetEditActionListDtoEditsInner.model_construct()
82
+ error_messages = []
83
+ # validate data type: AssetEditActionCrop
84
+ if not isinstance(v, AssetEditActionCrop):
85
+ error_messages.append(
86
+ f"Error! Input type `{type(v)}` is not `AssetEditActionCrop`"
87
+ )
88
+ else:
89
+ return v
90
+
91
+ # validate data type: AssetEditActionRotate
92
+ if not isinstance(v, AssetEditActionRotate):
93
+ error_messages.append(
94
+ f"Error! Input type `{type(v)}` is not `AssetEditActionRotate`"
95
+ )
96
+ else:
97
+ return v
98
+
99
+ # validate data type: AssetEditActionMirror
100
+ if not isinstance(v, AssetEditActionMirror):
101
+ error_messages.append(
102
+ f"Error! Input type `{type(v)}` is not `AssetEditActionMirror`"
103
+ )
104
+ else:
105
+ return v
106
+
107
+ if error_messages:
108
+ # no match
109
+ raise ValueError(
110
+ "No match found when setting the actual_instance in AssetEditActionListDtoEditsInner with anyOf schemas: AssetEditActionCrop, AssetEditActionMirror, AssetEditActionRotate. Details: "
111
+ + ", ".join(error_messages)
112
+ )
113
+ else:
114
+ return v
115
+
116
+ @classmethod
117
+ def from_dict(cls, obj: Dict[str, Any]) -> Self:
118
+ return cls.from_json(json.dumps(obj))
119
+
120
+ @classmethod
121
+ def from_json(cls, json_str: str) -> Self:
122
+ """Returns the object represented by the json string"""
123
+ instance = cls.model_construct()
124
+ error_messages = []
125
+ # anyof_schema_1_validator: Optional[AssetEditActionCrop] = None
126
+ try:
127
+ instance.actual_instance = AssetEditActionCrop.from_json(json_str)
128
+ return instance
129
+ except (ValidationError, ValueError) as e:
130
+ error_messages.append(str(e))
131
+ # anyof_schema_2_validator: Optional[AssetEditActionRotate] = None
132
+ try:
133
+ instance.actual_instance = AssetEditActionRotate.from_json(json_str)
134
+ return instance
135
+ except (ValidationError, ValueError) as e:
136
+ error_messages.append(str(e))
137
+ # anyof_schema_3_validator: Optional[AssetEditActionMirror] = None
138
+ try:
139
+ instance.actual_instance = AssetEditActionMirror.from_json(json_str)
140
+ return instance
141
+ except (ValidationError, ValueError) as e:
142
+ error_messages.append(str(e))
143
+
144
+ if error_messages:
145
+ # no match
146
+ raise ValueError(
147
+ "No match found when deserializing the JSON string into AssetEditActionListDtoEditsInner with anyOf schemas: AssetEditActionCrop, AssetEditActionMirror, AssetEditActionRotate. Details: "
148
+ + ", ".join(error_messages)
149
+ )
150
+ else:
151
+ return instance
152
+
153
+ def to_json(self) -> str:
154
+ """Returns the JSON representation of the actual instance"""
155
+ if self.actual_instance is None:
156
+ return "null"
157
+
158
+ if hasattr(self.actual_instance, "to_json") and callable(
159
+ self.actual_instance.to_json
160
+ ):
161
+ return self.actual_instance.to_json()
162
+ else:
163
+ return json.dumps(self.actual_instance)
164
+
165
+ def to_dict(
166
+ self,
167
+ ) -> Optional[
168
+ Union[
169
+ Dict[str, Any],
170
+ AssetEditActionCrop,
171
+ AssetEditActionMirror,
172
+ AssetEditActionRotate,
173
+ ]
174
+ ]:
175
+ """Returns the dict representation of the actual instance"""
176
+ if self.actual_instance is None:
177
+ return None
178
+
179
+ if hasattr(self.actual_instance, "to_dict") and callable(
180
+ self.actual_instance.to_dict
181
+ ):
182
+ return self.actual_instance.to_dict()
183
+ else:
184
+ return self.actual_instance
185
+
186
+ def to_str(self) -> str:
187
+ """Returns the string representation of the actual instance"""
188
+ return pprint.pformat(self.model_dump())