immichpy 1.6.5__py3-none-any.whl → 1.7.6__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 (438) hide show
  1. immichpy/cli/__main__.py +1 -1
  2. immichpy/cli/commands/activities.py +23 -11
  3. immichpy/cli/commands/albums.py +34 -20
  4. immichpy/cli/commands/api_keys.py +6 -4
  5. immichpy/cli/commands/assets.py +274 -65
  6. immichpy/cli/commands/authentication.py +115 -25
  7. immichpy/cli/commands/database_backups_admin.py +111 -0
  8. immichpy/cli/commands/download.py +13 -5
  9. immichpy/cli/commands/duplicates.py +1 -1
  10. immichpy/cli/commands/faces.py +17 -11
  11. immichpy/cli/commands/jobs.py +6 -4
  12. immichpy/cli/commands/libraries.py +15 -9
  13. immichpy/cli/commands/maintenance_admin.py +39 -2
  14. immichpy/cli/commands/map.py +8 -8
  15. immichpy/cli/commands/memories.py +35 -21
  16. immichpy/cli/commands/notifications.py +16 -8
  17. immichpy/cli/commands/notifications_admin.py +43 -17
  18. immichpy/cli/commands/partners.py +9 -3
  19. immichpy/cli/commands/people.py +30 -24
  20. immichpy/cli/commands/plugins.py +14 -0
  21. immichpy/cli/commands/queues.py +8 -6
  22. immichpy/cli/commands/search.py +395 -189
  23. immichpy/cli/commands/server.py +6 -2
  24. immichpy/cli/commands/sessions.py +6 -4
  25. immichpy/cli/commands/shared_links.py +42 -25
  26. immichpy/cli/commands/stacks.py +4 -4
  27. immichpy/cli/commands/sync.py +26 -10
  28. immichpy/cli/commands/system_config.py +216 -115
  29. immichpy/cli/commands/system_metadata.py +3 -1
  30. immichpy/cli/commands/tags.py +9 -9
  31. immichpy/cli/commands/trash.py +1 -1
  32. immichpy/cli/commands/users.py +57 -29
  33. immichpy/cli/commands/users_admin.py +79 -45
  34. immichpy/cli/commands/workflows.py +40 -11
  35. immichpy/cli/main.py +10 -2
  36. immichpy/cli/utils.py +2 -2
  37. immichpy/cli/wrapper/setup.py +1 -1
  38. immichpy/client/.openapi-generator/FILES +26 -2
  39. immichpy/client/generated/__init__.py +101 -7
  40. immichpy/client/generated/api/__init__.py +3 -0
  41. immichpy/client/generated/api/activities_api.py +73 -43
  42. immichpy/client/generated/api/albums_api.py +40 -19
  43. immichpy/client/generated/api/api_keys_api.py +1 -1
  44. immichpy/client/generated/api/assets_api.py +1768 -366
  45. immichpy/client/generated/api/authentication_admin_api.py +1 -1
  46. immichpy/client/generated/api/authentication_api.py +1 -1
  47. immichpy/client/generated/api/database_backups_admin_api.py +1224 -0
  48. immichpy/client/generated/api/deprecated_api.py +103 -73
  49. immichpy/client/generated/api/download_api.py +1 -1
  50. immichpy/client/generated/api/duplicates_api.py +1 -1
  51. immichpy/client/generated/api/faces_api.py +7 -7
  52. immichpy/client/generated/api/jobs_api.py +7 -7
  53. immichpy/client/generated/api/libraries_api.py +1 -1
  54. immichpy/client/generated/api/maintenance_admin_api.py +459 -1
  55. immichpy/client/generated/api/map_api.py +103 -49
  56. immichpy/client/generated/api/memories_api.py +109 -61
  57. immichpy/client/generated/api/notifications_admin_api.py +1 -1
  58. immichpy/client/generated/api/notifications_api.py +52 -25
  59. immichpy/client/generated/api/partners_api.py +7 -7
  60. immichpy/client/generated/api/people_api.py +37 -19
  61. immichpy/client/generated/api/plugins_api.py +230 -1
  62. immichpy/client/generated/api/queues_api.py +37 -31
  63. immichpy/client/generated/api/search_api.py +529 -283
  64. immichpy/client/generated/api/server_api.py +1 -1
  65. immichpy/client/generated/api/sessions_api.py +1 -1
  66. immichpy/client/generated/api/shared_links_api.py +53 -19
  67. immichpy/client/generated/api/stacks_api.py +13 -7
  68. immichpy/client/generated/api/sync_api.py +1 -1
  69. immichpy/client/generated/api/system_config_api.py +1 -1
  70. immichpy/client/generated/api/system_metadata_api.py +1 -1
  71. immichpy/client/generated/api/tags_api.py +1 -1
  72. immichpy/client/generated/api/timeline_api.py +1 -1
  73. immichpy/client/generated/api/trash_api.py +1 -1
  74. immichpy/client/generated/api/users_admin_api.py +55 -31
  75. immichpy/client/generated/api/users_api.py +16 -7
  76. immichpy/client/generated/api/views_api.py +1 -1
  77. immichpy/client/generated/api/workflows_api.py +1 -1
  78. immichpy/client/generated/api_client.py +1 -1
  79. immichpy/client/generated/configuration.py +2 -2
  80. immichpy/client/generated/exceptions.py +1 -1
  81. immichpy/client/generated/models/__init__.py +56 -3
  82. immichpy/client/generated/models/activity_create_dto.py +11 -5
  83. immichpy/client/generated/models/activity_response_dto.py +10 -6
  84. immichpy/client/generated/models/activity_statistics_response_dto.py +4 -4
  85. immichpy/client/generated/models/add_users_dto.py +2 -2
  86. immichpy/client/generated/models/admin_onboarding_update_dto.py +4 -2
  87. immichpy/client/generated/models/album_response_dto.py +28 -16
  88. immichpy/client/generated/models/album_statistics_response_dto.py +6 -4
  89. immichpy/client/generated/models/album_user_add_dto.py +3 -3
  90. immichpy/client/generated/models/album_user_create_dto.py +3 -3
  91. immichpy/client/generated/models/album_user_response_dto.py +3 -3
  92. immichpy/client/generated/models/album_user_role.py +2 -2
  93. immichpy/client/generated/models/albums_add_assets_dto.py +3 -3
  94. immichpy/client/generated/models/albums_add_assets_response_dto.py +4 -4
  95. immichpy/client/generated/models/albums_response.py +4 -2
  96. immichpy/client/generated/models/albums_update.py +5 -3
  97. immichpy/client/generated/models/api_key_create_dto.py +5 -3
  98. immichpy/client/generated/models/api_key_create_response_dto.py +2 -2
  99. immichpy/client/generated/models/api_key_response_dto.py +6 -6
  100. immichpy/client/generated/models/api_key_update_dto.py +5 -3
  101. immichpy/client/generated/models/asset_bulk_delete_dto.py +6 -4
  102. immichpy/client/generated/models/asset_bulk_update_dto.py +28 -12
  103. immichpy/client/generated/models/asset_bulk_upload_check_dto.py +3 -3
  104. immichpy/client/generated/models/asset_bulk_upload_check_item.py +3 -3
  105. immichpy/client/generated/models/asset_bulk_upload_check_response_dto.py +5 -3
  106. immichpy/client/generated/models/asset_bulk_upload_check_result.py +12 -6
  107. immichpy/client/generated/models/asset_copy_dto.py +16 -8
  108. immichpy/client/generated/models/asset_delta_sync_dto.py +5 -3
  109. immichpy/client/generated/models/asset_delta_sync_response_dto.py +6 -4
  110. immichpy/client/generated/models/asset_edit_action.py +35 -0
  111. immichpy/client/generated/models/asset_edit_action_crop.py +95 -0
  112. immichpy/client/generated/models/asset_edit_action_list_dto.py +104 -0
  113. immichpy/client/generated/models/asset_edit_action_list_dto_edits_inner.py +188 -0
  114. immichpy/client/generated/models/asset_edit_action_mirror.py +95 -0
  115. immichpy/client/generated/models/asset_edit_action_rotate.py +95 -0
  116. immichpy/client/generated/models/asset_edits_dto.py +107 -0
  117. immichpy/client/generated/models/asset_face_create_dto.py +13 -9
  118. immichpy/client/generated/models/asset_face_delete_dto.py +3 -3
  119. immichpy/client/generated/models/asset_face_response_dto.py +26 -10
  120. immichpy/client/generated/models/asset_face_update_dto.py +3 -3
  121. immichpy/client/generated/models/asset_face_update_item.py +3 -3
  122. immichpy/client/generated/models/asset_face_without_person_response_dto.py +23 -9
  123. immichpy/client/generated/models/asset_full_sync_dto.py +13 -5
  124. immichpy/client/generated/models/asset_ids_dto.py +2 -2
  125. immichpy/client/generated/models/asset_ids_response_dto.py +6 -4
  126. immichpy/client/generated/models/asset_job_name.py +2 -2
  127. immichpy/client/generated/models/asset_jobs_dto.py +3 -3
  128. immichpy/client/generated/models/asset_media_response_dto.py +4 -4
  129. immichpy/client/generated/models/asset_media_size.py +2 -1
  130. immichpy/client/generated/models/asset_media_status.py +2 -2
  131. immichpy/client/generated/models/asset_metadata_bulk_delete_dto.py +103 -0
  132. immichpy/client/generated/models/asset_metadata_bulk_delete_item_dto.py +86 -0
  133. immichpy/client/generated/models/asset_metadata_bulk_response_dto.py +93 -0
  134. immichpy/client/generated/models/asset_metadata_bulk_upsert_dto.py +103 -0
  135. immichpy/client/generated/models/asset_metadata_bulk_upsert_item_dto.py +91 -0
  136. immichpy/client/generated/models/asset_metadata_response_dto.py +5 -6
  137. immichpy/client/generated/models/asset_metadata_upsert_dto.py +5 -3
  138. immichpy/client/generated/models/asset_metadata_upsert_item_dto.py +4 -5
  139. immichpy/client/generated/models/asset_ocr_response_dto.py +1 -1
  140. immichpy/client/generated/models/asset_order.py +2 -2
  141. immichpy/client/generated/models/asset_response_dto.py +66 -24
  142. immichpy/client/generated/models/asset_stack_response_dto.py +8 -4
  143. immichpy/client/generated/models/asset_stats_response_dto.py +5 -5
  144. immichpy/client/generated/models/asset_type_enum.py +2 -2
  145. immichpy/client/generated/models/asset_visibility.py +2 -2
  146. immichpy/client/generated/models/audio_codec.py +2 -2
  147. immichpy/client/generated/models/auth_status_response_dto.py +12 -6
  148. immichpy/client/generated/models/avatar_update.py +3 -3
  149. immichpy/client/generated/models/bulk_id_error_reason.py +2 -2
  150. immichpy/client/generated/models/bulk_id_response_dto.py +14 -5
  151. immichpy/client/generated/models/bulk_ids_dto.py +3 -3
  152. immichpy/client/generated/models/cast_response.py +4 -2
  153. immichpy/client/generated/models/cast_update.py +4 -2
  154. immichpy/client/generated/models/change_password_dto.py +6 -4
  155. immichpy/client/generated/models/check_existing_assets_dto.py +3 -3
  156. immichpy/client/generated/models/check_existing_assets_response_dto.py +4 -2
  157. immichpy/client/generated/models/clip_config.py +5 -3
  158. immichpy/client/generated/models/colorspace.py +1 -1
  159. immichpy/client/generated/models/contributor_count_response_dto.py +5 -3
  160. immichpy/client/generated/models/cq_mode.py +2 -2
  161. immichpy/client/generated/models/create_album_dto.py +9 -5
  162. immichpy/client/generated/models/create_library_dto.py +9 -5
  163. immichpy/client/generated/models/create_profile_image_response_dto.py +8 -4
  164. immichpy/client/generated/models/crop_parameters.py +105 -0
  165. immichpy/client/generated/models/database_backup_config.py +6 -4
  166. immichpy/client/generated/models/database_backup_delete_dto.py +82 -0
  167. immichpy/client/generated/models/database_backup_dto.py +85 -0
  168. immichpy/client/generated/models/database_backup_list_response_dto.py +98 -0
  169. immichpy/client/generated/models/download_archive_info.py +5 -3
  170. immichpy/client/generated/models/download_info_dto.py +11 -5
  171. immichpy/client/generated/models/download_response.py +8 -3
  172. immichpy/client/generated/models/download_response_dto.py +3 -3
  173. immichpy/client/generated/models/download_update.py +5 -3
  174. immichpy/client/generated/models/duplicate_detection_config.py +6 -3
  175. immichpy/client/generated/models/duplicate_response_dto.py +5 -3
  176. immichpy/client/generated/models/email_notifications_response.py +10 -4
  177. immichpy/client/generated/models/email_notifications_update.py +14 -4
  178. immichpy/client/generated/models/exif_response_dto.py +47 -23
  179. immichpy/client/generated/models/face_dto.py +3 -3
  180. immichpy/client/generated/models/facial_recognition_config.py +15 -6
  181. immichpy/client/generated/models/folders_response.py +5 -3
  182. immichpy/client/generated/models/folders_update.py +9 -3
  183. immichpy/client/generated/models/image_format.py +2 -2
  184. immichpy/client/generated/models/job_create_dto.py +3 -3
  185. immichpy/client/generated/models/job_name.py +3 -2
  186. immichpy/client/generated/models/job_settings_dto.py +4 -2
  187. immichpy/client/generated/models/library_response_dto.py +16 -10
  188. immichpy/client/generated/models/library_stats_response_dto.py +6 -6
  189. immichpy/client/generated/models/license_key_dto.py +7 -3
  190. immichpy/client/generated/models/license_response_dto.py +8 -4
  191. immichpy/client/generated/models/log_level.py +1 -1
  192. immichpy/client/generated/models/login_credential_dto.py +4 -4
  193. immichpy/client/generated/models/login_response_dto.py +13 -9
  194. immichpy/client/generated/models/logout_response_dto.py +3 -3
  195. immichpy/client/generated/models/machine_learning_availability_checks_dto.py +3 -3
  196. immichpy/client/generated/models/maintenance_action.py +4 -2
  197. immichpy/client/generated/models/maintenance_auth_dto.py +3 -3
  198. immichpy/client/generated/models/maintenance_detect_install_response_dto.py +101 -0
  199. immichpy/client/generated/models/maintenance_detect_install_storage_folder_dto.py +95 -0
  200. immichpy/client/generated/models/maintenance_login_dto.py +3 -3
  201. immichpy/client/generated/models/maintenance_status_response_dto.py +109 -0
  202. immichpy/client/generated/models/manual_job_name.py +2 -2
  203. immichpy/client/generated/models/map_marker_response_dto.py +8 -8
  204. immichpy/client/generated/models/map_reverse_geocode_response_dto.py +5 -5
  205. immichpy/client/generated/models/memories_response.py +4 -4
  206. immichpy/client/generated/models/memories_update.py +7 -3
  207. immichpy/client/generated/models/memory_create_dto.py +12 -6
  208. immichpy/client/generated/models/memory_response_dto.py +20 -12
  209. immichpy/client/generated/models/memory_search_order.py +1 -1
  210. immichpy/client/generated/models/memory_statistics_response_dto.py +3 -3
  211. immichpy/client/generated/models/memory_type.py +1 -1
  212. immichpy/client/generated/models/memory_update_dto.py +10 -4
  213. immichpy/client/generated/models/merge_person_dto.py +3 -3
  214. immichpy/client/generated/models/metadata_search_dto.py +124 -46
  215. immichpy/client/generated/models/{asset_metadata_key.py → mirror_axis.py} +6 -5
  216. immichpy/client/generated/models/mirror_parameters.py +83 -0
  217. immichpy/client/generated/models/notification_create_dto.py +18 -8
  218. immichpy/client/generated/models/notification_delete_all_dto.py +3 -3
  219. immichpy/client/generated/models/notification_dto.py +15 -9
  220. immichpy/client/generated/models/notification_level.py +1 -1
  221. immichpy/client/generated/models/notification_type.py +1 -1
  222. immichpy/client/generated/models/notification_update_all_dto.py +5 -3
  223. immichpy/client/generated/models/notification_update_dto.py +4 -2
  224. immichpy/client/generated/models/o_auth_authorize_response_dto.py +3 -3
  225. immichpy/client/generated/models/o_auth_callback_dto.py +8 -4
  226. immichpy/client/generated/models/o_auth_config_dto.py +10 -4
  227. immichpy/client/generated/models/o_auth_token_endpoint_auth_method.py +2 -2
  228. immichpy/client/generated/models/ocr_config.py +14 -6
  229. immichpy/client/generated/models/on_this_day_dto.py +2 -2
  230. immichpy/client/generated/models/onboarding_dto.py +4 -2
  231. immichpy/client/generated/models/onboarding_response_dto.py +4 -2
  232. immichpy/client/generated/models/partner_create_dto.py +4 -2
  233. immichpy/client/generated/models/partner_direction.py +1 -1
  234. immichpy/client/generated/models/partner_response_dto.py +16 -8
  235. immichpy/client/generated/models/partner_update_dto.py +4 -2
  236. immichpy/client/generated/models/people_response.py +5 -3
  237. immichpy/client/generated/models/people_response_dto.py +7 -5
  238. immichpy/client/generated/models/people_update.py +9 -3
  239. immichpy/client/generated/models/people_update_dto.py +3 -3
  240. immichpy/client/generated/models/people_update_item.py +10 -10
  241. immichpy/client/generated/models/permission.py +13 -2
  242. immichpy/client/generated/models/person_create_dto.py +8 -8
  243. immichpy/client/generated/models/person_response_dto.py +17 -9
  244. immichpy/client/generated/models/person_statistics_response_dto.py +3 -3
  245. immichpy/client/generated/models/person_update_dto.py +9 -9
  246. immichpy/client/generated/models/person_with_faces_response_dto.py +20 -10
  247. immichpy/client/generated/models/pin_code_change_dto.py +10 -4
  248. immichpy/client/generated/models/pin_code_reset_dto.py +7 -3
  249. immichpy/client/generated/models/pin_code_setup_dto.py +2 -2
  250. immichpy/client/generated/models/places_response_dto.py +11 -7
  251. immichpy/client/generated/models/plugin_action_response_dto.py +13 -9
  252. immichpy/client/generated/models/{plugin_context.py → plugin_context_type.py} +4 -4
  253. immichpy/client/generated/models/plugin_filter_response_dto.py +13 -9
  254. immichpy/client/generated/models/plugin_response_dto.py +11 -11
  255. immichpy/client/generated/models/plugin_trigger_response_dto.py +89 -0
  256. immichpy/client/generated/models/plugin_trigger_type.py +2 -2
  257. immichpy/client/generated/models/purchase_response.py +7 -3
  258. immichpy/client/generated/models/purchase_update.py +7 -3
  259. immichpy/client/generated/models/queue_command.py +2 -2
  260. immichpy/client/generated/models/queue_command_dto.py +6 -4
  261. immichpy/client/generated/models/queue_delete_dto.py +1 -1
  262. immichpy/client/generated/models/queue_job_response_dto.py +6 -6
  263. immichpy/client/generated/models/queue_job_status.py +1 -1
  264. immichpy/client/generated/models/queue_name.py +2 -1
  265. immichpy/client/generated/models/queue_response_dto.py +5 -3
  266. immichpy/client/generated/models/queue_response_legacy_dto.py +1 -1
  267. immichpy/client/generated/models/queue_statistics_dto.py +8 -8
  268. immichpy/client/generated/models/queue_status_legacy_dto.py +8 -3
  269. immichpy/client/generated/models/queue_update_dto.py +4 -2
  270. immichpy/client/generated/models/queues_response_legacy_dto.py +9 -1
  271. immichpy/client/generated/models/random_search_dto.py +96 -34
  272. immichpy/client/generated/models/ratings_response.py +3 -3
  273. immichpy/client/generated/models/ratings_update.py +5 -3
  274. immichpy/client/generated/models/reaction_level.py +1 -1
  275. immichpy/client/generated/models/reaction_type.py +1 -1
  276. immichpy/client/generated/models/reverse_geocoding_state_response_dto.py +7 -3
  277. immichpy/client/generated/models/rotate_parameters.py +84 -0
  278. immichpy/client/generated/models/search_album_response_dto.py +4 -4
  279. immichpy/client/generated/models/search_asset_response_dto.py +6 -4
  280. immichpy/client/generated/models/search_explore_item.py +3 -3
  281. immichpy/client/generated/models/search_explore_response_dto.py +2 -2
  282. immichpy/client/generated/models/search_facet_count_response_dto.py +4 -4
  283. immichpy/client/generated/models/search_facet_response_dto.py +3 -3
  284. immichpy/client/generated/models/search_response_dto.py +1 -1
  285. immichpy/client/generated/models/search_statistics_response_dto.py +3 -3
  286. immichpy/client/generated/models/search_suggestion_type.py +1 -1
  287. immichpy/client/generated/models/server_about_response_dto.py +46 -22
  288. immichpy/client/generated/models/server_apk_links_dto.py +12 -6
  289. immichpy/client/generated/models/server_config_dto.py +36 -12
  290. immichpy/client/generated/models/server_features_dto.py +32 -16
  291. immichpy/client/generated/models/server_media_types_response_dto.py +5 -5
  292. immichpy/client/generated/models/server_ping_response.py +1 -1
  293. immichpy/client/generated/models/server_stats_response_dto.py +10 -6
  294. immichpy/client/generated/models/server_storage_response_dto.py +21 -8
  295. immichpy/client/generated/models/server_theme_dto.py +4 -2
  296. immichpy/client/generated/models/server_version_history_response_dto.py +6 -4
  297. immichpy/client/generated/models/server_version_response_dto.py +5 -5
  298. immichpy/client/generated/models/session_create_dto.py +8 -4
  299. immichpy/client/generated/models/session_create_response_dto.py +17 -11
  300. immichpy/client/generated/models/session_response_dto.py +16 -10
  301. immichpy/client/generated/models/session_unlock_dto.py +7 -3
  302. immichpy/client/generated/models/session_update_dto.py +2 -2
  303. immichpy/client/generated/models/set_maintenance_mode_dto.py +17 -7
  304. immichpy/client/generated/models/shared_link_create_dto.py +25 -11
  305. immichpy/client/generated/models/shared_link_edit_dto.py +19 -9
  306. immichpy/client/generated/models/shared_link_response_dto.py +18 -14
  307. immichpy/client/generated/models/shared_link_type.py +2 -2
  308. immichpy/client/generated/models/shared_links_response.py +5 -3
  309. immichpy/client/generated/models/shared_links_update.py +9 -3
  310. immichpy/client/generated/models/sign_up_dto.py +5 -5
  311. immichpy/client/generated/models/smart_search_dto.py +102 -36
  312. immichpy/client/generated/models/source_type.py +2 -2
  313. immichpy/client/generated/models/stack_create_dto.py +2 -2
  314. immichpy/client/generated/models/stack_response_dto.py +6 -4
  315. immichpy/client/generated/models/stack_update_dto.py +4 -2
  316. immichpy/client/generated/models/statistics_search_dto.py +86 -30
  317. immichpy/client/generated/models/storage_folder.py +38 -0
  318. immichpy/client/generated/models/sync_ack_delete_dto.py +5 -3
  319. immichpy/client/generated/models/sync_ack_dto.py +4 -4
  320. immichpy/client/generated/models/sync_ack_set_dto.py +4 -2
  321. immichpy/client/generated/models/sync_album_delete_v1.py +2 -2
  322. immichpy/client/generated/models/sync_album_to_asset_delete_v1.py +3 -3
  323. immichpy/client/generated/models/sync_album_to_asset_v1.py +3 -3
  324. immichpy/client/generated/models/sync_album_user_delete_v1.py +3 -3
  325. immichpy/client/generated/models/sync_album_user_v1.py +4 -4
  326. immichpy/client/generated/models/sync_album_v1.py +13 -9
  327. immichpy/client/generated/models/sync_asset_delete_v1.py +2 -2
  328. immichpy/client/generated/models/sync_asset_exif_v1.py +46 -26
  329. immichpy/client/generated/models/sync_asset_face_delete_v1.py +2 -2
  330. immichpy/client/generated/models/sync_asset_face_v1.py +5 -5
  331. immichpy/client/generated/models/sync_asset_metadata_delete_v1.py +3 -4
  332. immichpy/client/generated/models/sync_asset_metadata_v1.py +4 -5
  333. immichpy/client/generated/models/sync_asset_v1.py +47 -18
  334. immichpy/client/generated/models/sync_auth_user_v1.py +22 -12
  335. immichpy/client/generated/models/sync_entity_type.py +2 -2
  336. immichpy/client/generated/models/sync_memory_asset_delete_v1.py +3 -3
  337. immichpy/client/generated/models/sync_memory_asset_v1.py +3 -3
  338. immichpy/client/generated/models/sync_memory_delete_v1.py +2 -2
  339. immichpy/client/generated/models/sync_memory_v1.py +13 -13
  340. immichpy/client/generated/models/sync_partner_delete_v1.py +5 -3
  341. immichpy/client/generated/models/sync_partner_v1.py +6 -4
  342. immichpy/client/generated/models/sync_person_delete_v1.py +2 -2
  343. immichpy/client/generated/models/sync_person_v1.py +13 -11
  344. immichpy/client/generated/models/sync_request_type.py +2 -2
  345. immichpy/client/generated/models/sync_stack_delete_v1.py +2 -2
  346. immichpy/client/generated/models/sync_stack_v1.py +8 -6
  347. immichpy/client/generated/models/sync_stream_dto.py +4 -4
  348. immichpy/client/generated/models/sync_user_delete_v1.py +2 -2
  349. immichpy/client/generated/models/sync_user_metadata_delete_v1.py +3 -3
  350. immichpy/client/generated/models/sync_user_metadata_v1.py +4 -4
  351. immichpy/client/generated/models/sync_user_v1.py +16 -8
  352. immichpy/client/generated/models/system_config_backups_dto.py +1 -1
  353. immichpy/client/generated/models/system_config_dto.py +1 -1
  354. immichpy/client/generated/models/system_config_f_fmpeg_dto.py +44 -22
  355. immichpy/client/generated/models/system_config_faces_dto.py +2 -2
  356. immichpy/client/generated/models/system_config_generated_fullsize_image_dto.py +13 -7
  357. immichpy/client/generated/models/system_config_generated_image_dto.py +14 -8
  358. immichpy/client/generated/models/system_config_image_dto.py +5 -3
  359. immichpy/client/generated/models/system_config_job_dto.py +9 -1
  360. immichpy/client/generated/models/system_config_library_dto.py +1 -1
  361. immichpy/client/generated/models/system_config_library_scan_dto.py +2 -2
  362. immichpy/client/generated/models/system_config_library_watch_dto.py +3 -3
  363. immichpy/client/generated/models/system_config_logging_dto.py +3 -3
  364. immichpy/client/generated/models/system_config_machine_learning_dto.py +2 -2
  365. immichpy/client/generated/models/system_config_map_dto.py +2 -2
  366. immichpy/client/generated/models/system_config_metadata_dto.py +1 -1
  367. immichpy/client/generated/models/system_config_new_version_check_dto.py +3 -3
  368. immichpy/client/generated/models/system_config_nightly_tasks_dto.py +16 -6
  369. immichpy/client/generated/models/system_config_notifications_dto.py +1 -1
  370. immichpy/client/generated/models/system_config_o_auth_dto.py +28 -18
  371. immichpy/client/generated/models/system_config_password_login_dto.py +3 -3
  372. immichpy/client/generated/models/system_config_reverse_geocoding_dto.py +3 -3
  373. immichpy/client/generated/models/system_config_server_dto.py +8 -4
  374. immichpy/client/generated/models/system_config_smtp_dto.py +8 -4
  375. immichpy/client/generated/models/system_config_smtp_transport_dto.py +9 -7
  376. immichpy/client/generated/models/system_config_storage_template_dto.py +6 -4
  377. immichpy/client/generated/models/system_config_template_emails_dto.py +1 -1
  378. immichpy/client/generated/models/system_config_template_storage_option_dto.py +32 -9
  379. immichpy/client/generated/models/system_config_templates_dto.py +1 -1
  380. immichpy/client/generated/models/system_config_theme_dto.py +4 -2
  381. immichpy/client/generated/models/system_config_trash_dto.py +3 -3
  382. immichpy/client/generated/models/system_config_user_dto.py +4 -2
  383. immichpy/client/generated/models/tag_bulk_assets_dto.py +3 -3
  384. immichpy/client/generated/models/tag_bulk_assets_response_dto.py +3 -3
  385. immichpy/client/generated/models/tag_create_dto.py +8 -4
  386. immichpy/client/generated/models/tag_response_dto.py +10 -8
  387. immichpy/client/generated/models/tag_update_dto.py +3 -3
  388. immichpy/client/generated/models/tag_upsert_dto.py +3 -3
  389. immichpy/client/generated/models/tags_response.py +5 -3
  390. immichpy/client/generated/models/tags_update.py +9 -3
  391. immichpy/client/generated/models/template_dto.py +3 -3
  392. immichpy/client/generated/models/template_response_dto.py +4 -4
  393. immichpy/client/generated/models/test_email_response_dto.py +2 -2
  394. immichpy/client/generated/models/time_bucket_asset_response_dto.py +2 -3
  395. immichpy/client/generated/models/time_buckets_response_dto.py +1 -1
  396. immichpy/client/generated/models/tone_mapping.py +2 -2
  397. immichpy/client/generated/models/transcode_hw_accel.py +2 -2
  398. immichpy/client/generated/models/transcode_policy.py +2 -2
  399. immichpy/client/generated/models/trash_response_dto.py +3 -3
  400. immichpy/client/generated/models/update_album_dto.py +12 -6
  401. immichpy/client/generated/models/update_album_user_dto.py +3 -3
  402. immichpy/client/generated/models/update_asset_dto.py +21 -9
  403. immichpy/client/generated/models/update_library_dto.py +8 -4
  404. immichpy/client/generated/models/usage_by_user_dto.py +16 -9
  405. immichpy/client/generated/models/user_admin_create_dto.py +20 -10
  406. immichpy/client/generated/models/user_admin_delete_dto.py +5 -3
  407. immichpy/client/generated/models/user_admin_response_dto.py +35 -18
  408. immichpy/client/generated/models/user_admin_update_dto.py +20 -10
  409. immichpy/client/generated/models/user_avatar_color.py +2 -2
  410. immichpy/client/generated/models/user_license.py +6 -4
  411. immichpy/client/generated/models/user_metadata_key.py +2 -2
  412. immichpy/client/generated/models/user_preferences_response_dto.py +1 -1
  413. immichpy/client/generated/models/user_preferences_update_dto.py +1 -1
  414. immichpy/client/generated/models/user_response_dto.py +13 -7
  415. immichpy/client/generated/models/user_status.py +2 -2
  416. immichpy/client/generated/models/user_update_me_dto.py +10 -5
  417. immichpy/client/generated/models/validate_access_token_response_dto.py +4 -2
  418. immichpy/client/generated/models/validate_library_dto.py +9 -3
  419. immichpy/client/generated/models/validate_library_import_path_response_dto.py +4 -4
  420. immichpy/client/generated/models/validate_library_response_dto.py +4 -2
  421. immichpy/client/generated/models/version_check_state_response_dto.py +7 -3
  422. immichpy/client/generated/models/video_codec.py +2 -2
  423. immichpy/client/generated/models/video_container.py +2 -2
  424. immichpy/client/generated/models/workflow_action_item_dto.py +7 -3
  425. immichpy/client/generated/models/workflow_action_response_dto.py +10 -6
  426. immichpy/client/generated/models/workflow_create_dto.py +11 -7
  427. immichpy/client/generated/models/workflow_filter_item_dto.py +7 -3
  428. immichpy/client/generated/models/workflow_filter_response_dto.py +10 -6
  429. immichpy/client/generated/models/workflow_response_dto.py +14 -27
  430. immichpy/client/generated/models/workflow_update_dto.py +19 -7
  431. immichpy/client/generated/rest.py +1 -1
  432. immichpy/client/main.py +4 -1
  433. {immichpy-1.6.5.dist-info → immichpy-1.7.6.dist-info}/METADATA +1 -3
  434. immichpy-1.7.6.dist-info/RECORD +464 -0
  435. immichpy-1.6.5.dist-info/RECORD +0 -439
  436. {immichpy-1.6.5.dist-info → immichpy-1.7.6.dist-info}/WHEEL +0 -0
  437. {immichpy-1.6.5.dist-info → immichpy-1.7.6.dist-info}/entry_points.txt +0 -0
  438. {immichpy-1.6.5.dist-info → immichpy-1.7.6.dist-info}/licenses/LICENSE +0 -0
@@ -48,15 +48,23 @@ def get_explore_data(
48
48
  @app.command("get-search-suggestions", deprecated=False, rich_help_panel="API commands")
49
49
  def get_search_suggestions(
50
50
  ctx: typer.Context,
51
- country: str | None = typer.Option(None, "--country", help=""""""),
51
+ country: str | None = typer.Option(None, "--country", help="""Filter by country"""),
52
52
  include_null: Literal["true", "false"] | None = typer.Option(
53
- None, "--include-null", help=""""""
53
+ None, "--include-null", help="""Include null values in suggestions"""
54
+ ),
55
+ lens_model: str | None = typer.Option(
56
+ None, "--lens-model", help="""Filter by lens model"""
57
+ ),
58
+ make: str | None = typer.Option(None, "--make", help="""Filter by camera make"""),
59
+ model: str | None = typer.Option(
60
+ None, "--model", help="""Filter by camera model"""
61
+ ),
62
+ state: str | None = typer.Option(
63
+ None, "--state", help="""Filter by state/province"""
64
+ ),
65
+ type: SearchSuggestionType = typer.Option(
66
+ ..., "--type", help="""Suggestion type"""
54
67
  ),
55
- lens_model: str | None = typer.Option(None, "--lens-model", help=""""""),
56
- make: str | None = typer.Option(None, "--make", help=""""""),
57
- model: str | None = typer.Option(None, "--model", help=""""""),
58
- state: str | None = typer.Option(None, "--state", help=""""""),
59
- type: SearchSuggestionType = typer.Option(..., "--type", help=""""""),
60
68
  ) -> None:
61
69
  """Retrieve search suggestions
62
70
 
@@ -86,51 +94,87 @@ def get_search_suggestions(
86
94
  )
87
95
  def search_asset_statistics(
88
96
  ctx: typer.Context,
89
- album_ids: list[str] | None = typer.Option(None, "--album-ids", help=""""""),
90
- city: str | None = typer.Option(None, "--city", help=""""""),
91
- country: str | None = typer.Option(None, "--country", help=""""""),
92
- created_after: datetime | None = typer.Option(None, "--created-after", help=""""""),
97
+ album_ids: list[str] | None = typer.Option(
98
+ None, "--album-ids", help="""Filter by album IDs"""
99
+ ),
100
+ city: str | None = typer.Option(None, "--city", help="""Filter by city name"""),
101
+ country: str | None = typer.Option(
102
+ None, "--country", help="""Filter by country name"""
103
+ ),
104
+ created_after: datetime | None = typer.Option(
105
+ None, "--created-after", help="""Filter by creation date (after)"""
106
+ ),
93
107
  created_before: datetime | None = typer.Option(
94
- None, "--created-before", help=""""""
108
+ None, "--created-before", help="""Filter by creation date (before)"""
109
+ ),
110
+ description: str | None = typer.Option(
111
+ None, "--description", help="""Filter by description text"""
112
+ ),
113
+ device_id: str | None = typer.Option(
114
+ None, "--device-id", help="""Device ID to filter by"""
95
115
  ),
96
- description: str | None = typer.Option(None, "--description", help=""""""),
97
- device_id: str | None = typer.Option(None, "--device-id", help=""""""),
98
116
  is_encoded: Literal["true", "false"] | None = typer.Option(
99
- None, "--is-encoded", help=""""""
117
+ None, "--is-encoded", help="""Filter by encoded status"""
100
118
  ),
101
119
  is_favorite: Literal["true", "false"] | None = typer.Option(
102
- None, "--is-favorite", help=""""""
120
+ None, "--is-favorite", help="""Filter by favorite status"""
103
121
  ),
104
122
  is_motion: Literal["true", "false"] | None = typer.Option(
105
- None, "--is-motion", help=""""""
123
+ None, "--is-motion", help="""Filter by motion photo status"""
106
124
  ),
107
125
  is_not_in_album: Literal["true", "false"] | None = typer.Option(
108
- None, "--is-not-in-album", help=""""""
126
+ None, "--is-not-in-album", help="""Filter assets not in any album"""
109
127
  ),
110
128
  is_offline: Literal["true", "false"] | None = typer.Option(
111
- None, "--is-offline", help=""""""
112
- ),
113
- lens_model: str | None = typer.Option(None, "--lens-model", help=""""""),
114
- library_id: str | None = typer.Option(None, "--library-id", help=""""""),
115
- make: str | None = typer.Option(None, "--make", help=""""""),
116
- model: str | None = typer.Option(None, "--model", help=""""""),
117
- ocr: str | None = typer.Option(None, "--ocr", help=""""""),
118
- person_ids: list[str] | None = typer.Option(None, "--person-ids", help=""""""),
119
- rating: float | None = typer.Option(None, "--rating", help="""""", min=-1, max=5),
120
- state: str | None = typer.Option(None, "--state", help=""""""),
121
- tag_ids: list[str] | None = typer.Option(None, "--tag-ids", help=""""""),
122
- taken_after: datetime | None = typer.Option(None, "--taken-after", help=""""""),
123
- taken_before: datetime | None = typer.Option(None, "--taken-before", help=""""""),
124
- trashed_after: datetime | None = typer.Option(None, "--trashed-after", help=""""""),
129
+ None, "--is-offline", help="""Filter by offline status"""
130
+ ),
131
+ lens_model: str | None = typer.Option(
132
+ None, "--lens-model", help="""Filter by lens model"""
133
+ ),
134
+ library_id: str | None = typer.Option(
135
+ None, "--library-id", help="""Library ID to filter by"""
136
+ ),
137
+ make: str | None = typer.Option(None, "--make", help="""Filter by camera make"""),
138
+ model: str | None = typer.Option(
139
+ None, "--model", help="""Filter by camera model"""
140
+ ),
141
+ ocr: str | None = typer.Option(
142
+ None, "--ocr", help="""Filter by OCR text content"""
143
+ ),
144
+ person_ids: list[str] | None = typer.Option(
145
+ None, "--person-ids", help="""Filter by person IDs"""
146
+ ),
147
+ rating: float | None = typer.Option(
148
+ None, "--rating", help="""Filter by rating""", min=-1, max=5
149
+ ),
150
+ state: str | None = typer.Option(
151
+ None, "--state", help="""Filter by state/province name"""
152
+ ),
153
+ tag_ids: list[str] | None = typer.Option(
154
+ None, "--tag-ids", help="""Filter by tag IDs"""
155
+ ),
156
+ taken_after: datetime | None = typer.Option(
157
+ None, "--taken-after", help="""Filter by taken date (after)"""
158
+ ),
159
+ taken_before: datetime | None = typer.Option(
160
+ None, "--taken-before", help="""Filter by taken date (before)"""
161
+ ),
162
+ trashed_after: datetime | None = typer.Option(
163
+ None, "--trashed-after", help="""Filter by trash date (after)"""
164
+ ),
125
165
  trashed_before: datetime | None = typer.Option(
126
- None, "--trashed-before", help=""""""
166
+ None, "--trashed-before", help="""Filter by trash date (before)"""
167
+ ),
168
+ type: str | None = typer.Option(None, "--type", help="""Asset type"""),
169
+ updated_after: datetime | None = typer.Option(
170
+ None, "--updated-after", help="""Filter by update date (after)"""
127
171
  ),
128
- type: str | None = typer.Option(None, "--type", help=""""""),
129
- updated_after: datetime | None = typer.Option(None, "--updated-after", help=""""""),
130
172
  updated_before: datetime | None = typer.Option(
131
- None, "--updated-before", help=""""""
173
+ None, "--updated-before", help="""Filter by update date (before)"""
174
+ ),
175
+ visibility: str | None = typer.Option(
176
+ None, "--visibility", help="""Asset visibility"""
132
177
  ),
133
- visibility: str | None = typer.Option(None, "--visibility", help=""""""),
134
178
  ) -> None:
135
179
  """Search asset statistics
136
180
 
@@ -208,77 +252,125 @@ def search_asset_statistics(
208
252
  @app.command("search-assets", deprecated=False, rich_help_panel="API commands")
209
253
  def search_assets(
210
254
  ctx: typer.Context,
211
- album_ids: list[str] | None = typer.Option(None, "--album-ids", help=""""""),
212
- checksum: str | None = typer.Option(None, "--checksum", help=""""""),
213
- city: str | None = typer.Option(None, "--city", help=""""""),
214
- country: str | None = typer.Option(None, "--country", help=""""""),
215
- created_after: datetime | None = typer.Option(None, "--created-after", help=""""""),
255
+ album_ids: list[str] | None = typer.Option(
256
+ None, "--album-ids", help="""Filter by album IDs"""
257
+ ),
258
+ checksum: str | None = typer.Option(
259
+ None, "--checksum", help="""Filter by file checksum"""
260
+ ),
261
+ city: str | None = typer.Option(None, "--city", help="""Filter by city name"""),
262
+ country: str | None = typer.Option(
263
+ None, "--country", help="""Filter by country name"""
264
+ ),
265
+ created_after: datetime | None = typer.Option(
266
+ None, "--created-after", help="""Filter by creation date (after)"""
267
+ ),
216
268
  created_before: datetime | None = typer.Option(
217
- None, "--created-before", help=""""""
269
+ None, "--created-before", help="""Filter by creation date (before)"""
270
+ ),
271
+ description: str | None = typer.Option(
272
+ None, "--description", help="""Filter by description text"""
273
+ ),
274
+ device_asset_id: str | None = typer.Option(
275
+ None, "--device-asset-id", help="""Filter by device asset ID"""
276
+ ),
277
+ device_id: str | None = typer.Option(
278
+ None, "--device-id", help="""Device ID to filter by"""
218
279
  ),
219
- description: str | None = typer.Option(None, "--description", help=""""""),
220
- device_asset_id: str | None = typer.Option(None, "--device-asset-id", help=""""""),
221
- device_id: str | None = typer.Option(None, "--device-id", help=""""""),
222
280
  encoded_video_path: str | None = typer.Option(
223
- None, "--encoded-video-path", help=""""""
281
+ None, "--encoded-video-path", help="""Filter by encoded video file path"""
224
282
  ),
225
- id: str | None = typer.Option(None, "--id", help=""""""),
283
+ id: str | None = typer.Option(None, "--id", help="""Filter by asset ID"""),
226
284
  is_encoded: Literal["true", "false"] | None = typer.Option(
227
- None, "--is-encoded", help=""""""
285
+ None, "--is-encoded", help="""Filter by encoded status"""
228
286
  ),
229
287
  is_favorite: Literal["true", "false"] | None = typer.Option(
230
- None, "--is-favorite", help=""""""
288
+ None, "--is-favorite", help="""Filter by favorite status"""
231
289
  ),
232
290
  is_motion: Literal["true", "false"] | None = typer.Option(
233
- None, "--is-motion", help=""""""
291
+ None, "--is-motion", help="""Filter by motion photo status"""
234
292
  ),
235
293
  is_not_in_album: Literal["true", "false"] | None = typer.Option(
236
- None, "--is-not-in-album", help=""""""
294
+ None, "--is-not-in-album", help="""Filter assets not in any album"""
237
295
  ),
238
296
  is_offline: Literal["true", "false"] | None = typer.Option(
239
- None, "--is-offline", help=""""""
240
- ),
241
- lens_model: str | None = typer.Option(None, "--lens-model", help=""""""),
242
- library_id: str | None = typer.Option(None, "--library-id", help=""""""),
243
- make: str | None = typer.Option(None, "--make", help=""""""),
244
- model: str | None = typer.Option(None, "--model", help=""""""),
245
- ocr: str | None = typer.Option(None, "--ocr", help=""""""),
246
- order: str | None = typer.Option(None, "--order", help=""""""),
297
+ None, "--is-offline", help="""Filter by offline status"""
298
+ ),
299
+ lens_model: str | None = typer.Option(
300
+ None, "--lens-model", help="""Filter by lens model"""
301
+ ),
302
+ library_id: str | None = typer.Option(
303
+ None, "--library-id", help="""Library ID to filter by"""
304
+ ),
305
+ make: str | None = typer.Option(None, "--make", help="""Filter by camera make"""),
306
+ model: str | None = typer.Option(
307
+ None, "--model", help="""Filter by camera model"""
308
+ ),
309
+ ocr: str | None = typer.Option(
310
+ None, "--ocr", help="""Filter by OCR text content"""
311
+ ),
312
+ order: str | None = typer.Option(None, "--order", help="""Asset sort order"""),
247
313
  original_file_name: str | None = typer.Option(
248
- None, "--original-file-name", help=""""""
249
- ),
250
- original_path: str | None = typer.Option(None, "--original-path", help=""""""),
251
- page: float | None = typer.Option(None, "--page", help="""""", min=1),
252
- person_ids: list[str] | None = typer.Option(None, "--person-ids", help=""""""),
253
- preview_path: str | None = typer.Option(None, "--preview-path", help=""""""),
254
- rating: float | None = typer.Option(None, "--rating", help="""""", min=-1, max=5),
255
- size: float | None = typer.Option(None, "--size", help="""""", min=1, max=1000),
256
- state: str | None = typer.Option(None, "--state", help=""""""),
257
- tag_ids: list[str] | None = typer.Option(None, "--tag-ids", help=""""""),
258
- taken_after: datetime | None = typer.Option(None, "--taken-after", help=""""""),
259
- taken_before: datetime | None = typer.Option(None, "--taken-before", help=""""""),
260
- thumbnail_path: str | None = typer.Option(None, "--thumbnail-path", help=""""""),
261
- trashed_after: datetime | None = typer.Option(None, "--trashed-after", help=""""""),
314
+ None, "--original-file-name", help="""Filter by original file name"""
315
+ ),
316
+ original_path: str | None = typer.Option(
317
+ None, "--original-path", help="""Filter by original file path"""
318
+ ),
319
+ page: float | None = typer.Option(None, "--page", help="""Page number""", min=1),
320
+ person_ids: list[str] | None = typer.Option(
321
+ None, "--person-ids", help="""Filter by person IDs"""
322
+ ),
323
+ preview_path: str | None = typer.Option(
324
+ None, "--preview-path", help="""Filter by preview file path"""
325
+ ),
326
+ rating: float | None = typer.Option(
327
+ None, "--rating", help="""Filter by rating""", min=-1, max=5
328
+ ),
329
+ size: float | None = typer.Option(
330
+ None, "--size", help="""Number of results to return""", min=1, max=1000
331
+ ),
332
+ state: str | None = typer.Option(
333
+ None, "--state", help="""Filter by state/province name"""
334
+ ),
335
+ tag_ids: list[str] | None = typer.Option(
336
+ None, "--tag-ids", help="""Filter by tag IDs"""
337
+ ),
338
+ taken_after: datetime | None = typer.Option(
339
+ None, "--taken-after", help="""Filter by taken date (after)"""
340
+ ),
341
+ taken_before: datetime | None = typer.Option(
342
+ None, "--taken-before", help="""Filter by taken date (before)"""
343
+ ),
344
+ thumbnail_path: str | None = typer.Option(
345
+ None, "--thumbnail-path", help="""Filter by thumbnail file path"""
346
+ ),
347
+ trashed_after: datetime | None = typer.Option(
348
+ None, "--trashed-after", help="""Filter by trash date (after)"""
349
+ ),
262
350
  trashed_before: datetime | None = typer.Option(
263
- None, "--trashed-before", help=""""""
351
+ None, "--trashed-before", help="""Filter by trash date (before)"""
352
+ ),
353
+ type: str | None = typer.Option(None, "--type", help="""Asset type"""),
354
+ updated_after: datetime | None = typer.Option(
355
+ None, "--updated-after", help="""Filter by update date (after)"""
264
356
  ),
265
- type: str | None = typer.Option(None, "--type", help=""""""),
266
- updated_after: datetime | None = typer.Option(None, "--updated-after", help=""""""),
267
357
  updated_before: datetime | None = typer.Option(
268
- None, "--updated-before", help=""""""
358
+ None, "--updated-before", help="""Filter by update date (before)"""
359
+ ),
360
+ visibility: str | None = typer.Option(
361
+ None, "--visibility", help="""Asset visibility"""
269
362
  ),
270
- visibility: str | None = typer.Option(None, "--visibility", help=""""""),
271
363
  with_deleted: Literal["true", "false"] | None = typer.Option(
272
- None, "--with-deleted", help=""""""
364
+ None, "--with-deleted", help="""Include deleted assets"""
273
365
  ),
274
366
  with_exif: Literal["true", "false"] | None = typer.Option(
275
- None, "--with-exif", help=""""""
367
+ None, "--with-exif", help="""Include EXIF data in response"""
276
368
  ),
277
369
  with_people: Literal["true", "false"] | None = typer.Option(
278
- None, "--with-people", help=""""""
370
+ None, "--with-people", help="""Include assets with people"""
279
371
  ),
280
372
  with_stacked: Literal["true", "false"] | None = typer.Option(
281
- None, "--with-stacked", help=""""""
373
+ None, "--with-stacked", help="""Include stacked assets"""
282
374
  ),
283
375
  ) -> None:
284
376
  """Search assets by metadata
@@ -385,61 +477,97 @@ def search_assets(
385
477
  @app.command("search-large-assets", deprecated=False, rich_help_panel="API commands")
386
478
  def search_large_assets(
387
479
  ctx: typer.Context,
388
- album_ids: list[str] | None = typer.Option(None, "--album-ids", help=""""""),
389
- city: str | None = typer.Option(None, "--city", help=""""""),
390
- country: str | None = typer.Option(None, "--country", help=""""""),
391
- created_after: datetime | None = typer.Option(None, "--created-after", help=""""""),
480
+ album_ids: list[str] | None = typer.Option(
481
+ None, "--album-ids", help="""Filter by album IDs"""
482
+ ),
483
+ city: str | None = typer.Option(None, "--city", help="""Filter by city name"""),
484
+ country: str | None = typer.Option(
485
+ None, "--country", help="""Filter by country name"""
486
+ ),
487
+ created_after: datetime | None = typer.Option(
488
+ None, "--created-after", help="""Filter by creation date (after)"""
489
+ ),
392
490
  created_before: datetime | None = typer.Option(
393
- None, "--created-before", help=""""""
491
+ None, "--created-before", help="""Filter by creation date (before)"""
492
+ ),
493
+ device_id: str | None = typer.Option(
494
+ None, "--device-id", help="""Device ID to filter by"""
394
495
  ),
395
- device_id: str | None = typer.Option(None, "--device-id", help=""""""),
396
496
  is_encoded: Literal["true", "false"] | None = typer.Option(
397
- None, "--is-encoded", help=""""""
497
+ None, "--is-encoded", help="""Filter by encoded status"""
398
498
  ),
399
499
  is_favorite: Literal["true", "false"] | None = typer.Option(
400
- None, "--is-favorite", help=""""""
500
+ None, "--is-favorite", help="""Filter by favorite status"""
401
501
  ),
402
502
  is_motion: Literal["true", "false"] | None = typer.Option(
403
- None, "--is-motion", help=""""""
503
+ None, "--is-motion", help="""Filter by motion photo status"""
404
504
  ),
405
505
  is_not_in_album: Literal["true", "false"] | None = typer.Option(
406
- None, "--is-not-in-album", help=""""""
506
+ None, "--is-not-in-album", help="""Filter assets not in any album"""
407
507
  ),
408
508
  is_offline: Literal["true", "false"] | None = typer.Option(
409
- None, "--is-offline", help=""""""
509
+ None, "--is-offline", help="""Filter by offline status"""
510
+ ),
511
+ lens_model: str | None = typer.Option(
512
+ None, "--lens-model", help="""Filter by lens model"""
513
+ ),
514
+ library_id: str | None = typer.Option(
515
+ None, "--library-id", help="""Library ID to filter by"""
410
516
  ),
411
- lens_model: str | None = typer.Option(None, "--lens-model", help=""""""),
412
- library_id: str | None = typer.Option(None, "--library-id", help=""""""),
413
- make: str | None = typer.Option(None, "--make", help=""""""),
517
+ make: str | None = typer.Option(None, "--make", help="""Filter by camera make"""),
414
518
  min_file_size: int | None = typer.Option(
415
- None, "--min-file-size", help="""""", min=0
416
- ),
417
- model: str | None = typer.Option(None, "--model", help=""""""),
418
- ocr: str | None = typer.Option(None, "--ocr", help=""""""),
419
- person_ids: list[str] | None = typer.Option(None, "--person-ids", help=""""""),
420
- rating: float | None = typer.Option(None, "--rating", help="""""", min=-1, max=5),
421
- size: float | None = typer.Option(None, "--size", help="""""", min=1, max=1000),
422
- state: str | None = typer.Option(None, "--state", help=""""""),
423
- tag_ids: list[str] | None = typer.Option(None, "--tag-ids", help=""""""),
424
- taken_after: datetime | None = typer.Option(None, "--taken-after", help=""""""),
425
- taken_before: datetime | None = typer.Option(None, "--taken-before", help=""""""),
426
- trashed_after: datetime | None = typer.Option(None, "--trashed-after", help=""""""),
519
+ None, "--min-file-size", help="""Minimum file size in bytes""", min=0
520
+ ),
521
+ model: str | None = typer.Option(
522
+ None, "--model", help="""Filter by camera model"""
523
+ ),
524
+ ocr: str | None = typer.Option(
525
+ None, "--ocr", help="""Filter by OCR text content"""
526
+ ),
527
+ person_ids: list[str] | None = typer.Option(
528
+ None, "--person-ids", help="""Filter by person IDs"""
529
+ ),
530
+ rating: float | None = typer.Option(
531
+ None, "--rating", help="""Filter by rating""", min=-1, max=5
532
+ ),
533
+ size: float | None = typer.Option(
534
+ None, "--size", help="""Number of results to return""", min=1, max=1000
535
+ ),
536
+ state: str | None = typer.Option(
537
+ None, "--state", help="""Filter by state/province name"""
538
+ ),
539
+ tag_ids: list[str] | None = typer.Option(
540
+ None, "--tag-ids", help="""Filter by tag IDs"""
541
+ ),
542
+ taken_after: datetime | None = typer.Option(
543
+ None, "--taken-after", help="""Filter by taken date (after)"""
544
+ ),
545
+ taken_before: datetime | None = typer.Option(
546
+ None, "--taken-before", help="""Filter by taken date (before)"""
547
+ ),
548
+ trashed_after: datetime | None = typer.Option(
549
+ None, "--trashed-after", help="""Filter by trash date (after)"""
550
+ ),
427
551
  trashed_before: datetime | None = typer.Option(
428
- None, "--trashed-before", help=""""""
552
+ None, "--trashed-before", help="""Filter by trash date (before)"""
553
+ ),
554
+ type: AssetTypeEnum | None = typer.Option(
555
+ None, "--type", help="""Asset type filter"""
556
+ ),
557
+ updated_after: datetime | None = typer.Option(
558
+ None, "--updated-after", help="""Filter by update date (after)"""
429
559
  ),
430
- type: AssetTypeEnum | None = typer.Option(None, "--type", help=""""""),
431
- updated_after: datetime | None = typer.Option(None, "--updated-after", help=""""""),
432
560
  updated_before: datetime | None = typer.Option(
433
- None, "--updated-before", help=""""""
561
+ None, "--updated-before", help="""Filter by update date (before)"""
434
562
  ),
435
563
  visibility: AssetVisibility | None = typer.Option(
436
- None, "--visibility", help=""""""
564
+ None, "--visibility", help="""Filter by visibility"""
437
565
  ),
438
566
  with_deleted: Literal["true", "false"] | None = typer.Option(
439
- None, "--with-deleted", help=""""""
567
+ None, "--with-deleted", help="""Include deleted assets"""
440
568
  ),
441
569
  with_exif: Literal["true", "false"] | None = typer.Option(
442
- None, "--with-exif", help=""""""
570
+ None, "--with-exif", help="""Include EXIF data in response"""
443
571
  ),
444
572
  ) -> None:
445
573
  """Search large assets
@@ -519,9 +647,9 @@ def search_large_assets(
519
647
  @app.command("search-person", deprecated=False, rich_help_panel="API commands")
520
648
  def search_person(
521
649
  ctx: typer.Context,
522
- name: str = typer.Option(..., "--name", help=""""""),
650
+ name: str = typer.Option(..., "--name", help="""Person name to search for"""),
523
651
  with_hidden: Literal["true", "false"] | None = typer.Option(
524
- None, "--with-hidden", help=""""""
652
+ None, "--with-hidden", help="""Include hidden people"""
525
653
  ),
526
654
  ) -> None:
527
655
  """Search people
@@ -540,7 +668,7 @@ def search_person(
540
668
  @app.command("search-places", deprecated=False, rich_help_panel="API commands")
541
669
  def search_places(
542
670
  ctx: typer.Context,
543
- name: str = typer.Option(..., "--name", help=""""""),
671
+ name: str = typer.Option(..., "--name", help="""Place name to search for"""),
544
672
  ) -> None:
545
673
  """Search places
546
674
 
@@ -556,62 +684,98 @@ def search_places(
556
684
  @app.command("search-random", deprecated=False, rich_help_panel="API commands")
557
685
  def search_random(
558
686
  ctx: typer.Context,
559
- album_ids: list[str] | None = typer.Option(None, "--album-ids", help=""""""),
560
- city: str | None = typer.Option(None, "--city", help=""""""),
561
- country: str | None = typer.Option(None, "--country", help=""""""),
562
- created_after: datetime | None = typer.Option(None, "--created-after", help=""""""),
687
+ album_ids: list[str] | None = typer.Option(
688
+ None, "--album-ids", help="""Filter by album IDs"""
689
+ ),
690
+ city: str | None = typer.Option(None, "--city", help="""Filter by city name"""),
691
+ country: str | None = typer.Option(
692
+ None, "--country", help="""Filter by country name"""
693
+ ),
694
+ created_after: datetime | None = typer.Option(
695
+ None, "--created-after", help="""Filter by creation date (after)"""
696
+ ),
563
697
  created_before: datetime | None = typer.Option(
564
- None, "--created-before", help=""""""
698
+ None, "--created-before", help="""Filter by creation date (before)"""
699
+ ),
700
+ device_id: str | None = typer.Option(
701
+ None, "--device-id", help="""Device ID to filter by"""
565
702
  ),
566
- device_id: str | None = typer.Option(None, "--device-id", help=""""""),
567
703
  is_encoded: Literal["true", "false"] | None = typer.Option(
568
- None, "--is-encoded", help=""""""
704
+ None, "--is-encoded", help="""Filter by encoded status"""
569
705
  ),
570
706
  is_favorite: Literal["true", "false"] | None = typer.Option(
571
- None, "--is-favorite", help=""""""
707
+ None, "--is-favorite", help="""Filter by favorite status"""
572
708
  ),
573
709
  is_motion: Literal["true", "false"] | None = typer.Option(
574
- None, "--is-motion", help=""""""
710
+ None, "--is-motion", help="""Filter by motion photo status"""
575
711
  ),
576
712
  is_not_in_album: Literal["true", "false"] | None = typer.Option(
577
- None, "--is-not-in-album", help=""""""
713
+ None, "--is-not-in-album", help="""Filter assets not in any album"""
578
714
  ),
579
715
  is_offline: Literal["true", "false"] | None = typer.Option(
580
- None, "--is-offline", help=""""""
581
- ),
582
- lens_model: str | None = typer.Option(None, "--lens-model", help=""""""),
583
- library_id: str | None = typer.Option(None, "--library-id", help=""""""),
584
- make: str | None = typer.Option(None, "--make", help=""""""),
585
- model: str | None = typer.Option(None, "--model", help=""""""),
586
- ocr: str | None = typer.Option(None, "--ocr", help=""""""),
587
- person_ids: list[str] | None = typer.Option(None, "--person-ids", help=""""""),
588
- rating: float | None = typer.Option(None, "--rating", help="""""", min=-1, max=5),
589
- size: float | None = typer.Option(None, "--size", help="""""", min=1, max=1000),
590
- state: str | None = typer.Option(None, "--state", help=""""""),
591
- tag_ids: list[str] | None = typer.Option(None, "--tag-ids", help=""""""),
592
- taken_after: datetime | None = typer.Option(None, "--taken-after", help=""""""),
593
- taken_before: datetime | None = typer.Option(None, "--taken-before", help=""""""),
594
- trashed_after: datetime | None = typer.Option(None, "--trashed-after", help=""""""),
716
+ None, "--is-offline", help="""Filter by offline status"""
717
+ ),
718
+ lens_model: str | None = typer.Option(
719
+ None, "--lens-model", help="""Filter by lens model"""
720
+ ),
721
+ library_id: str | None = typer.Option(
722
+ None, "--library-id", help="""Library ID to filter by"""
723
+ ),
724
+ make: str | None = typer.Option(None, "--make", help="""Filter by camera make"""),
725
+ model: str | None = typer.Option(
726
+ None, "--model", help="""Filter by camera model"""
727
+ ),
728
+ ocr: str | None = typer.Option(
729
+ None, "--ocr", help="""Filter by OCR text content"""
730
+ ),
731
+ person_ids: list[str] | None = typer.Option(
732
+ None, "--person-ids", help="""Filter by person IDs"""
733
+ ),
734
+ rating: float | None = typer.Option(
735
+ None, "--rating", help="""Filter by rating""", min=-1, max=5
736
+ ),
737
+ size: float | None = typer.Option(
738
+ None, "--size", help="""Number of results to return""", min=1, max=1000
739
+ ),
740
+ state: str | None = typer.Option(
741
+ None, "--state", help="""Filter by state/province name"""
742
+ ),
743
+ tag_ids: list[str] | None = typer.Option(
744
+ None, "--tag-ids", help="""Filter by tag IDs"""
745
+ ),
746
+ taken_after: datetime | None = typer.Option(
747
+ None, "--taken-after", help="""Filter by taken date (after)"""
748
+ ),
749
+ taken_before: datetime | None = typer.Option(
750
+ None, "--taken-before", help="""Filter by taken date (before)"""
751
+ ),
752
+ trashed_after: datetime | None = typer.Option(
753
+ None, "--trashed-after", help="""Filter by trash date (after)"""
754
+ ),
595
755
  trashed_before: datetime | None = typer.Option(
596
- None, "--trashed-before", help=""""""
756
+ None, "--trashed-before", help="""Filter by trash date (before)"""
757
+ ),
758
+ type: str | None = typer.Option(None, "--type", help="""Asset type"""),
759
+ updated_after: datetime | None = typer.Option(
760
+ None, "--updated-after", help="""Filter by update date (after)"""
597
761
  ),
598
- type: str | None = typer.Option(None, "--type", help=""""""),
599
- updated_after: datetime | None = typer.Option(None, "--updated-after", help=""""""),
600
762
  updated_before: datetime | None = typer.Option(
601
- None, "--updated-before", help=""""""
763
+ None, "--updated-before", help="""Filter by update date (before)"""
764
+ ),
765
+ visibility: str | None = typer.Option(
766
+ None, "--visibility", help="""Asset visibility"""
602
767
  ),
603
- visibility: str | None = typer.Option(None, "--visibility", help=""""""),
604
768
  with_deleted: Literal["true", "false"] | None = typer.Option(
605
- None, "--with-deleted", help=""""""
769
+ None, "--with-deleted", help="""Include deleted assets"""
606
770
  ),
607
771
  with_exif: Literal["true", "false"] | None = typer.Option(
608
- None, "--with-exif", help=""""""
772
+ None, "--with-exif", help="""Include EXIF data in response"""
609
773
  ),
610
774
  with_people: Literal["true", "false"] | None = typer.Option(
611
- None, "--with-people", help=""""""
775
+ None, "--with-people", help="""Include assets with people"""
612
776
  ),
613
777
  with_stacked: Literal["true", "false"] | None = typer.Option(
614
- None, "--with-stacked", help=""""""
778
+ None, "--with-stacked", help="""Include stacked assets"""
615
779
  ),
616
780
  ) -> None:
617
781
  """Search random assets
@@ -696,60 +860,102 @@ def search_random(
696
860
  @app.command("search-smart", deprecated=False, rich_help_panel="API commands")
697
861
  def search_smart(
698
862
  ctx: typer.Context,
699
- album_ids: list[str] | None = typer.Option(None, "--album-ids", help=""""""),
700
- city: str | None = typer.Option(None, "--city", help=""""""),
701
- country: str | None = typer.Option(None, "--country", help=""""""),
702
- created_after: datetime | None = typer.Option(None, "--created-after", help=""""""),
863
+ album_ids: list[str] | None = typer.Option(
864
+ None, "--album-ids", help="""Filter by album IDs"""
865
+ ),
866
+ city: str | None = typer.Option(None, "--city", help="""Filter by city name"""),
867
+ country: str | None = typer.Option(
868
+ None, "--country", help="""Filter by country name"""
869
+ ),
870
+ created_after: datetime | None = typer.Option(
871
+ None, "--created-after", help="""Filter by creation date (after)"""
872
+ ),
703
873
  created_before: datetime | None = typer.Option(
704
- None, "--created-before", help=""""""
874
+ None, "--created-before", help="""Filter by creation date (before)"""
875
+ ),
876
+ device_id: str | None = typer.Option(
877
+ None, "--device-id", help="""Device ID to filter by"""
705
878
  ),
706
- device_id: str | None = typer.Option(None, "--device-id", help=""""""),
707
879
  is_encoded: Literal["true", "false"] | None = typer.Option(
708
- None, "--is-encoded", help=""""""
880
+ None, "--is-encoded", help="""Filter by encoded status"""
709
881
  ),
710
882
  is_favorite: Literal["true", "false"] | None = typer.Option(
711
- None, "--is-favorite", help=""""""
883
+ None, "--is-favorite", help="""Filter by favorite status"""
712
884
  ),
713
885
  is_motion: Literal["true", "false"] | None = typer.Option(
714
- None, "--is-motion", help=""""""
886
+ None, "--is-motion", help="""Filter by motion photo status"""
715
887
  ),
716
888
  is_not_in_album: Literal["true", "false"] | None = typer.Option(
717
- None, "--is-not-in-album", help=""""""
889
+ None, "--is-not-in-album", help="""Filter assets not in any album"""
718
890
  ),
719
891
  is_offline: Literal["true", "false"] | None = typer.Option(
720
- None, "--is-offline", help=""""""
721
- ),
722
- language: str | None = typer.Option(None, "--language", help=""""""),
723
- lens_model: str | None = typer.Option(None, "--lens-model", help=""""""),
724
- library_id: str | None = typer.Option(None, "--library-id", help=""""""),
725
- make: str | None = typer.Option(None, "--make", help=""""""),
726
- model: str | None = typer.Option(None, "--model", help=""""""),
727
- ocr: str | None = typer.Option(None, "--ocr", help=""""""),
728
- page: float | None = typer.Option(None, "--page", help="""""", min=1),
729
- person_ids: list[str] | None = typer.Option(None, "--person-ids", help=""""""),
730
- query: str | None = typer.Option(None, "--query", help=""""""),
731
- query_asset_id: str | None = typer.Option(None, "--query-asset-id", help=""""""),
732
- rating: float | None = typer.Option(None, "--rating", help="""""", min=-1, max=5),
733
- size: float | None = typer.Option(None, "--size", help="""""", min=1, max=1000),
734
- state: str | None = typer.Option(None, "--state", help=""""""),
735
- tag_ids: list[str] | None = typer.Option(None, "--tag-ids", help=""""""),
736
- taken_after: datetime | None = typer.Option(None, "--taken-after", help=""""""),
737
- taken_before: datetime | None = typer.Option(None, "--taken-before", help=""""""),
738
- trashed_after: datetime | None = typer.Option(None, "--trashed-after", help=""""""),
892
+ None, "--is-offline", help="""Filter by offline status"""
893
+ ),
894
+ language: str | None = typer.Option(
895
+ None, "--language", help="""Search language code"""
896
+ ),
897
+ lens_model: str | None = typer.Option(
898
+ None, "--lens-model", help="""Filter by lens model"""
899
+ ),
900
+ library_id: str | None = typer.Option(
901
+ None, "--library-id", help="""Library ID to filter by"""
902
+ ),
903
+ make: str | None = typer.Option(None, "--make", help="""Filter by camera make"""),
904
+ model: str | None = typer.Option(
905
+ None, "--model", help="""Filter by camera model"""
906
+ ),
907
+ ocr: str | None = typer.Option(
908
+ None, "--ocr", help="""Filter by OCR text content"""
909
+ ),
910
+ page: float | None = typer.Option(None, "--page", help="""Page number""", min=1),
911
+ person_ids: list[str] | None = typer.Option(
912
+ None, "--person-ids", help="""Filter by person IDs"""
913
+ ),
914
+ query: str | None = typer.Option(
915
+ None, "--query", help="""Natural language search query"""
916
+ ),
917
+ query_asset_id: str | None = typer.Option(
918
+ None, "--query-asset-id", help="""Asset ID to use as search reference"""
919
+ ),
920
+ rating: float | None = typer.Option(
921
+ None, "--rating", help="""Filter by rating""", min=-1, max=5
922
+ ),
923
+ size: float | None = typer.Option(
924
+ None, "--size", help="""Number of results to return""", min=1, max=1000
925
+ ),
926
+ state: str | None = typer.Option(
927
+ None, "--state", help="""Filter by state/province name"""
928
+ ),
929
+ tag_ids: list[str] | None = typer.Option(
930
+ None, "--tag-ids", help="""Filter by tag IDs"""
931
+ ),
932
+ taken_after: datetime | None = typer.Option(
933
+ None, "--taken-after", help="""Filter by taken date (after)"""
934
+ ),
935
+ taken_before: datetime | None = typer.Option(
936
+ None, "--taken-before", help="""Filter by taken date (before)"""
937
+ ),
938
+ trashed_after: datetime | None = typer.Option(
939
+ None, "--trashed-after", help="""Filter by trash date (after)"""
940
+ ),
739
941
  trashed_before: datetime | None = typer.Option(
740
- None, "--trashed-before", help=""""""
942
+ None, "--trashed-before", help="""Filter by trash date (before)"""
943
+ ),
944
+ type: str | None = typer.Option(None, "--type", help="""Asset type"""),
945
+ updated_after: datetime | None = typer.Option(
946
+ None, "--updated-after", help="""Filter by update date (after)"""
741
947
  ),
742
- type: str | None = typer.Option(None, "--type", help=""""""),
743
- updated_after: datetime | None = typer.Option(None, "--updated-after", help=""""""),
744
948
  updated_before: datetime | None = typer.Option(
745
- None, "--updated-before", help=""""""
949
+ None, "--updated-before", help="""Filter by update date (before)"""
950
+ ),
951
+ visibility: str | None = typer.Option(
952
+ None, "--visibility", help="""Asset visibility"""
746
953
  ),
747
- visibility: str | None = typer.Option(None, "--visibility", help=""""""),
748
954
  with_deleted: Literal["true", "false"] | None = typer.Option(
749
- None, "--with-deleted", help=""""""
955
+ None, "--with-deleted", help="""Include deleted assets"""
750
956
  ),
751
957
  with_exif: Literal["true", "false"] | None = typer.Option(
752
- None, "--with-exif", help=""""""
958
+ None, "--with-exif", help="""Include EXIF data in response"""
753
959
  ),
754
960
  ) -> None:
755
961
  """Smart asset search