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.
- immichpy/cli/__main__.py +1 -1
- immichpy/cli/commands/activities.py +23 -11
- immichpy/cli/commands/albums.py +34 -20
- immichpy/cli/commands/api_keys.py +6 -4
- immichpy/cli/commands/assets.py +274 -65
- immichpy/cli/commands/authentication.py +115 -25
- immichpy/cli/commands/database_backups_admin.py +111 -0
- immichpy/cli/commands/download.py +13 -5
- immichpy/cli/commands/duplicates.py +1 -1
- immichpy/cli/commands/faces.py +17 -11
- immichpy/cli/commands/jobs.py +6 -4
- immichpy/cli/commands/libraries.py +15 -9
- immichpy/cli/commands/maintenance_admin.py +39 -2
- immichpy/cli/commands/map.py +8 -8
- immichpy/cli/commands/memories.py +35 -21
- immichpy/cli/commands/notifications.py +16 -8
- immichpy/cli/commands/notifications_admin.py +43 -17
- immichpy/cli/commands/partners.py +9 -3
- immichpy/cli/commands/people.py +30 -24
- immichpy/cli/commands/plugins.py +14 -0
- immichpy/cli/commands/queues.py +8 -6
- immichpy/cli/commands/search.py +395 -189
- immichpy/cli/commands/server.py +6 -2
- immichpy/cli/commands/sessions.py +6 -4
- immichpy/cli/commands/shared_links.py +42 -25
- immichpy/cli/commands/stacks.py +4 -4
- immichpy/cli/commands/sync.py +26 -10
- immichpy/cli/commands/system_config.py +216 -115
- immichpy/cli/commands/system_metadata.py +3 -1
- immichpy/cli/commands/tags.py +9 -9
- immichpy/cli/commands/trash.py +1 -1
- immichpy/cli/commands/users.py +57 -29
- immichpy/cli/commands/users_admin.py +79 -45
- immichpy/cli/commands/workflows.py +40 -11
- immichpy/cli/main.py +10 -2
- immichpy/cli/utils.py +2 -2
- immichpy/cli/wrapper/setup.py +1 -1
- immichpy/client/.openapi-generator/FILES +26 -2
- immichpy/client/generated/__init__.py +101 -7
- immichpy/client/generated/api/__init__.py +3 -0
- immichpy/client/generated/api/activities_api.py +73 -43
- immichpy/client/generated/api/albums_api.py +40 -19
- immichpy/client/generated/api/api_keys_api.py +1 -1
- immichpy/client/generated/api/assets_api.py +1768 -366
- immichpy/client/generated/api/authentication_admin_api.py +1 -1
- immichpy/client/generated/api/authentication_api.py +1 -1
- immichpy/client/generated/api/database_backups_admin_api.py +1224 -0
- immichpy/client/generated/api/deprecated_api.py +103 -73
- immichpy/client/generated/api/download_api.py +1 -1
- immichpy/client/generated/api/duplicates_api.py +1 -1
- immichpy/client/generated/api/faces_api.py +7 -7
- immichpy/client/generated/api/jobs_api.py +7 -7
- immichpy/client/generated/api/libraries_api.py +1 -1
- immichpy/client/generated/api/maintenance_admin_api.py +459 -1
- immichpy/client/generated/api/map_api.py +103 -49
- immichpy/client/generated/api/memories_api.py +109 -61
- immichpy/client/generated/api/notifications_admin_api.py +1 -1
- immichpy/client/generated/api/notifications_api.py +52 -25
- immichpy/client/generated/api/partners_api.py +7 -7
- immichpy/client/generated/api/people_api.py +37 -19
- immichpy/client/generated/api/plugins_api.py +230 -1
- immichpy/client/generated/api/queues_api.py +37 -31
- immichpy/client/generated/api/search_api.py +529 -283
- immichpy/client/generated/api/server_api.py +1 -1
- immichpy/client/generated/api/sessions_api.py +1 -1
- immichpy/client/generated/api/shared_links_api.py +53 -19
- immichpy/client/generated/api/stacks_api.py +13 -7
- immichpy/client/generated/api/sync_api.py +1 -1
- immichpy/client/generated/api/system_config_api.py +1 -1
- immichpy/client/generated/api/system_metadata_api.py +1 -1
- immichpy/client/generated/api/tags_api.py +1 -1
- immichpy/client/generated/api/timeline_api.py +1 -1
- immichpy/client/generated/api/trash_api.py +1 -1
- immichpy/client/generated/api/users_admin_api.py +55 -31
- immichpy/client/generated/api/users_api.py +16 -7
- immichpy/client/generated/api/views_api.py +1 -1
- immichpy/client/generated/api/workflows_api.py +1 -1
- immichpy/client/generated/api_client.py +1 -1
- immichpy/client/generated/configuration.py +2 -2
- immichpy/client/generated/exceptions.py +1 -1
- immichpy/client/generated/models/__init__.py +56 -3
- immichpy/client/generated/models/activity_create_dto.py +11 -5
- immichpy/client/generated/models/activity_response_dto.py +10 -6
- immichpy/client/generated/models/activity_statistics_response_dto.py +4 -4
- immichpy/client/generated/models/add_users_dto.py +2 -2
- immichpy/client/generated/models/admin_onboarding_update_dto.py +4 -2
- immichpy/client/generated/models/album_response_dto.py +28 -16
- immichpy/client/generated/models/album_statistics_response_dto.py +6 -4
- immichpy/client/generated/models/album_user_add_dto.py +3 -3
- immichpy/client/generated/models/album_user_create_dto.py +3 -3
- immichpy/client/generated/models/album_user_response_dto.py +3 -3
- immichpy/client/generated/models/album_user_role.py +2 -2
- immichpy/client/generated/models/albums_add_assets_dto.py +3 -3
- immichpy/client/generated/models/albums_add_assets_response_dto.py +4 -4
- immichpy/client/generated/models/albums_response.py +4 -2
- immichpy/client/generated/models/albums_update.py +5 -3
- immichpy/client/generated/models/api_key_create_dto.py +5 -3
- immichpy/client/generated/models/api_key_create_response_dto.py +2 -2
- immichpy/client/generated/models/api_key_response_dto.py +6 -6
- immichpy/client/generated/models/api_key_update_dto.py +5 -3
- immichpy/client/generated/models/asset_bulk_delete_dto.py +6 -4
- immichpy/client/generated/models/asset_bulk_update_dto.py +28 -12
- immichpy/client/generated/models/asset_bulk_upload_check_dto.py +3 -3
- immichpy/client/generated/models/asset_bulk_upload_check_item.py +3 -3
- immichpy/client/generated/models/asset_bulk_upload_check_response_dto.py +5 -3
- immichpy/client/generated/models/asset_bulk_upload_check_result.py +12 -6
- immichpy/client/generated/models/asset_copy_dto.py +16 -8
- immichpy/client/generated/models/asset_delta_sync_dto.py +5 -3
- immichpy/client/generated/models/asset_delta_sync_response_dto.py +6 -4
- immichpy/client/generated/models/asset_edit_action.py +35 -0
- immichpy/client/generated/models/asset_edit_action_crop.py +95 -0
- immichpy/client/generated/models/asset_edit_action_list_dto.py +104 -0
- immichpy/client/generated/models/asset_edit_action_list_dto_edits_inner.py +188 -0
- immichpy/client/generated/models/asset_edit_action_mirror.py +95 -0
- immichpy/client/generated/models/asset_edit_action_rotate.py +95 -0
- immichpy/client/generated/models/asset_edits_dto.py +107 -0
- immichpy/client/generated/models/asset_face_create_dto.py +13 -9
- immichpy/client/generated/models/asset_face_delete_dto.py +3 -3
- immichpy/client/generated/models/asset_face_response_dto.py +26 -10
- immichpy/client/generated/models/asset_face_update_dto.py +3 -3
- immichpy/client/generated/models/asset_face_update_item.py +3 -3
- immichpy/client/generated/models/asset_face_without_person_response_dto.py +23 -9
- immichpy/client/generated/models/asset_full_sync_dto.py +13 -5
- immichpy/client/generated/models/asset_ids_dto.py +2 -2
- immichpy/client/generated/models/asset_ids_response_dto.py +6 -4
- immichpy/client/generated/models/asset_job_name.py +2 -2
- immichpy/client/generated/models/asset_jobs_dto.py +3 -3
- immichpy/client/generated/models/asset_media_response_dto.py +4 -4
- immichpy/client/generated/models/asset_media_size.py +2 -1
- immichpy/client/generated/models/asset_media_status.py +2 -2
- immichpy/client/generated/models/asset_metadata_bulk_delete_dto.py +103 -0
- immichpy/client/generated/models/asset_metadata_bulk_delete_item_dto.py +86 -0
- immichpy/client/generated/models/asset_metadata_bulk_response_dto.py +93 -0
- immichpy/client/generated/models/asset_metadata_bulk_upsert_dto.py +103 -0
- immichpy/client/generated/models/asset_metadata_bulk_upsert_item_dto.py +91 -0
- immichpy/client/generated/models/asset_metadata_response_dto.py +5 -6
- immichpy/client/generated/models/asset_metadata_upsert_dto.py +5 -3
- immichpy/client/generated/models/asset_metadata_upsert_item_dto.py +4 -5
- immichpy/client/generated/models/asset_ocr_response_dto.py +1 -1
- immichpy/client/generated/models/asset_order.py +2 -2
- immichpy/client/generated/models/asset_response_dto.py +66 -24
- immichpy/client/generated/models/asset_stack_response_dto.py +8 -4
- immichpy/client/generated/models/asset_stats_response_dto.py +5 -5
- immichpy/client/generated/models/asset_type_enum.py +2 -2
- immichpy/client/generated/models/asset_visibility.py +2 -2
- immichpy/client/generated/models/audio_codec.py +2 -2
- immichpy/client/generated/models/auth_status_response_dto.py +12 -6
- immichpy/client/generated/models/avatar_update.py +3 -3
- immichpy/client/generated/models/bulk_id_error_reason.py +2 -2
- immichpy/client/generated/models/bulk_id_response_dto.py +14 -5
- immichpy/client/generated/models/bulk_ids_dto.py +3 -3
- immichpy/client/generated/models/cast_response.py +4 -2
- immichpy/client/generated/models/cast_update.py +4 -2
- immichpy/client/generated/models/change_password_dto.py +6 -4
- immichpy/client/generated/models/check_existing_assets_dto.py +3 -3
- immichpy/client/generated/models/check_existing_assets_response_dto.py +4 -2
- immichpy/client/generated/models/clip_config.py +5 -3
- immichpy/client/generated/models/colorspace.py +1 -1
- immichpy/client/generated/models/contributor_count_response_dto.py +5 -3
- immichpy/client/generated/models/cq_mode.py +2 -2
- immichpy/client/generated/models/create_album_dto.py +9 -5
- immichpy/client/generated/models/create_library_dto.py +9 -5
- immichpy/client/generated/models/create_profile_image_response_dto.py +8 -4
- immichpy/client/generated/models/crop_parameters.py +105 -0
- immichpy/client/generated/models/database_backup_config.py +6 -4
- immichpy/client/generated/models/database_backup_delete_dto.py +82 -0
- immichpy/client/generated/models/database_backup_dto.py +85 -0
- immichpy/client/generated/models/database_backup_list_response_dto.py +98 -0
- immichpy/client/generated/models/download_archive_info.py +5 -3
- immichpy/client/generated/models/download_info_dto.py +11 -5
- immichpy/client/generated/models/download_response.py +8 -3
- immichpy/client/generated/models/download_response_dto.py +3 -3
- immichpy/client/generated/models/download_update.py +5 -3
- immichpy/client/generated/models/duplicate_detection_config.py +6 -3
- immichpy/client/generated/models/duplicate_response_dto.py +5 -3
- immichpy/client/generated/models/email_notifications_response.py +10 -4
- immichpy/client/generated/models/email_notifications_update.py +14 -4
- immichpy/client/generated/models/exif_response_dto.py +47 -23
- immichpy/client/generated/models/face_dto.py +3 -3
- immichpy/client/generated/models/facial_recognition_config.py +15 -6
- immichpy/client/generated/models/folders_response.py +5 -3
- immichpy/client/generated/models/folders_update.py +9 -3
- immichpy/client/generated/models/image_format.py +2 -2
- immichpy/client/generated/models/job_create_dto.py +3 -3
- immichpy/client/generated/models/job_name.py +3 -2
- immichpy/client/generated/models/job_settings_dto.py +4 -2
- immichpy/client/generated/models/library_response_dto.py +16 -10
- immichpy/client/generated/models/library_stats_response_dto.py +6 -6
- immichpy/client/generated/models/license_key_dto.py +7 -3
- immichpy/client/generated/models/license_response_dto.py +8 -4
- immichpy/client/generated/models/log_level.py +1 -1
- immichpy/client/generated/models/login_credential_dto.py +4 -4
- immichpy/client/generated/models/login_response_dto.py +13 -9
- immichpy/client/generated/models/logout_response_dto.py +3 -3
- immichpy/client/generated/models/machine_learning_availability_checks_dto.py +3 -3
- immichpy/client/generated/models/maintenance_action.py +4 -2
- immichpy/client/generated/models/maintenance_auth_dto.py +3 -3
- immichpy/client/generated/models/maintenance_detect_install_response_dto.py +101 -0
- immichpy/client/generated/models/maintenance_detect_install_storage_folder_dto.py +95 -0
- immichpy/client/generated/models/maintenance_login_dto.py +3 -3
- immichpy/client/generated/models/maintenance_status_response_dto.py +109 -0
- immichpy/client/generated/models/manual_job_name.py +2 -2
- immichpy/client/generated/models/map_marker_response_dto.py +8 -8
- immichpy/client/generated/models/map_reverse_geocode_response_dto.py +5 -5
- immichpy/client/generated/models/memories_response.py +4 -4
- immichpy/client/generated/models/memories_update.py +7 -3
- immichpy/client/generated/models/memory_create_dto.py +12 -6
- immichpy/client/generated/models/memory_response_dto.py +20 -12
- immichpy/client/generated/models/memory_search_order.py +1 -1
- immichpy/client/generated/models/memory_statistics_response_dto.py +3 -3
- immichpy/client/generated/models/memory_type.py +1 -1
- immichpy/client/generated/models/memory_update_dto.py +10 -4
- immichpy/client/generated/models/merge_person_dto.py +3 -3
- immichpy/client/generated/models/metadata_search_dto.py +124 -46
- immichpy/client/generated/models/{asset_metadata_key.py → mirror_axis.py} +6 -5
- immichpy/client/generated/models/mirror_parameters.py +83 -0
- immichpy/client/generated/models/notification_create_dto.py +18 -8
- immichpy/client/generated/models/notification_delete_all_dto.py +3 -3
- immichpy/client/generated/models/notification_dto.py +15 -9
- immichpy/client/generated/models/notification_level.py +1 -1
- immichpy/client/generated/models/notification_type.py +1 -1
- immichpy/client/generated/models/notification_update_all_dto.py +5 -3
- immichpy/client/generated/models/notification_update_dto.py +4 -2
- immichpy/client/generated/models/o_auth_authorize_response_dto.py +3 -3
- immichpy/client/generated/models/o_auth_callback_dto.py +8 -4
- immichpy/client/generated/models/o_auth_config_dto.py +10 -4
- immichpy/client/generated/models/o_auth_token_endpoint_auth_method.py +2 -2
- immichpy/client/generated/models/ocr_config.py +14 -6
- immichpy/client/generated/models/on_this_day_dto.py +2 -2
- immichpy/client/generated/models/onboarding_dto.py +4 -2
- immichpy/client/generated/models/onboarding_response_dto.py +4 -2
- immichpy/client/generated/models/partner_create_dto.py +4 -2
- immichpy/client/generated/models/partner_direction.py +1 -1
- immichpy/client/generated/models/partner_response_dto.py +16 -8
- immichpy/client/generated/models/partner_update_dto.py +4 -2
- immichpy/client/generated/models/people_response.py +5 -3
- immichpy/client/generated/models/people_response_dto.py +7 -5
- immichpy/client/generated/models/people_update.py +9 -3
- immichpy/client/generated/models/people_update_dto.py +3 -3
- immichpy/client/generated/models/people_update_item.py +10 -10
- immichpy/client/generated/models/permission.py +13 -2
- immichpy/client/generated/models/person_create_dto.py +8 -8
- immichpy/client/generated/models/person_response_dto.py +17 -9
- immichpy/client/generated/models/person_statistics_response_dto.py +3 -3
- immichpy/client/generated/models/person_update_dto.py +9 -9
- immichpy/client/generated/models/person_with_faces_response_dto.py +20 -10
- immichpy/client/generated/models/pin_code_change_dto.py +10 -4
- immichpy/client/generated/models/pin_code_reset_dto.py +7 -3
- immichpy/client/generated/models/pin_code_setup_dto.py +2 -2
- immichpy/client/generated/models/places_response_dto.py +11 -7
- immichpy/client/generated/models/plugin_action_response_dto.py +13 -9
- immichpy/client/generated/models/{plugin_context.py → plugin_context_type.py} +4 -4
- immichpy/client/generated/models/plugin_filter_response_dto.py +13 -9
- immichpy/client/generated/models/plugin_response_dto.py +11 -11
- immichpy/client/generated/models/plugin_trigger_response_dto.py +89 -0
- immichpy/client/generated/models/plugin_trigger_type.py +2 -2
- immichpy/client/generated/models/purchase_response.py +7 -3
- immichpy/client/generated/models/purchase_update.py +7 -3
- immichpy/client/generated/models/queue_command.py +2 -2
- immichpy/client/generated/models/queue_command_dto.py +6 -4
- immichpy/client/generated/models/queue_delete_dto.py +1 -1
- immichpy/client/generated/models/queue_job_response_dto.py +6 -6
- immichpy/client/generated/models/queue_job_status.py +1 -1
- immichpy/client/generated/models/queue_name.py +2 -1
- immichpy/client/generated/models/queue_response_dto.py +5 -3
- immichpy/client/generated/models/queue_response_legacy_dto.py +1 -1
- immichpy/client/generated/models/queue_statistics_dto.py +8 -8
- immichpy/client/generated/models/queue_status_legacy_dto.py +8 -3
- immichpy/client/generated/models/queue_update_dto.py +4 -2
- immichpy/client/generated/models/queues_response_legacy_dto.py +9 -1
- immichpy/client/generated/models/random_search_dto.py +96 -34
- immichpy/client/generated/models/ratings_response.py +3 -3
- immichpy/client/generated/models/ratings_update.py +5 -3
- immichpy/client/generated/models/reaction_level.py +1 -1
- immichpy/client/generated/models/reaction_type.py +1 -1
- immichpy/client/generated/models/reverse_geocoding_state_response_dto.py +7 -3
- immichpy/client/generated/models/rotate_parameters.py +84 -0
- immichpy/client/generated/models/search_album_response_dto.py +4 -4
- immichpy/client/generated/models/search_asset_response_dto.py +6 -4
- immichpy/client/generated/models/search_explore_item.py +3 -3
- immichpy/client/generated/models/search_explore_response_dto.py +2 -2
- immichpy/client/generated/models/search_facet_count_response_dto.py +4 -4
- immichpy/client/generated/models/search_facet_response_dto.py +3 -3
- immichpy/client/generated/models/search_response_dto.py +1 -1
- immichpy/client/generated/models/search_statistics_response_dto.py +3 -3
- immichpy/client/generated/models/search_suggestion_type.py +1 -1
- immichpy/client/generated/models/server_about_response_dto.py +46 -22
- immichpy/client/generated/models/server_apk_links_dto.py +12 -6
- immichpy/client/generated/models/server_config_dto.py +36 -12
- immichpy/client/generated/models/server_features_dto.py +32 -16
- immichpy/client/generated/models/server_media_types_response_dto.py +5 -5
- immichpy/client/generated/models/server_ping_response.py +1 -1
- immichpy/client/generated/models/server_stats_response_dto.py +10 -6
- immichpy/client/generated/models/server_storage_response_dto.py +21 -8
- immichpy/client/generated/models/server_theme_dto.py +4 -2
- immichpy/client/generated/models/server_version_history_response_dto.py +6 -4
- immichpy/client/generated/models/server_version_response_dto.py +5 -5
- immichpy/client/generated/models/session_create_dto.py +8 -4
- immichpy/client/generated/models/session_create_response_dto.py +17 -11
- immichpy/client/generated/models/session_response_dto.py +16 -10
- immichpy/client/generated/models/session_unlock_dto.py +7 -3
- immichpy/client/generated/models/session_update_dto.py +2 -2
- immichpy/client/generated/models/set_maintenance_mode_dto.py +17 -7
- immichpy/client/generated/models/shared_link_create_dto.py +25 -11
- immichpy/client/generated/models/shared_link_edit_dto.py +19 -9
- immichpy/client/generated/models/shared_link_response_dto.py +18 -14
- immichpy/client/generated/models/shared_link_type.py +2 -2
- immichpy/client/generated/models/shared_links_response.py +5 -3
- immichpy/client/generated/models/shared_links_update.py +9 -3
- immichpy/client/generated/models/sign_up_dto.py +5 -5
- immichpy/client/generated/models/smart_search_dto.py +102 -36
- immichpy/client/generated/models/source_type.py +2 -2
- immichpy/client/generated/models/stack_create_dto.py +2 -2
- immichpy/client/generated/models/stack_response_dto.py +6 -4
- immichpy/client/generated/models/stack_update_dto.py +4 -2
- immichpy/client/generated/models/statistics_search_dto.py +86 -30
- immichpy/client/generated/models/storage_folder.py +38 -0
- immichpy/client/generated/models/sync_ack_delete_dto.py +5 -3
- immichpy/client/generated/models/sync_ack_dto.py +4 -4
- immichpy/client/generated/models/sync_ack_set_dto.py +4 -2
- immichpy/client/generated/models/sync_album_delete_v1.py +2 -2
- immichpy/client/generated/models/sync_album_to_asset_delete_v1.py +3 -3
- immichpy/client/generated/models/sync_album_to_asset_v1.py +3 -3
- immichpy/client/generated/models/sync_album_user_delete_v1.py +3 -3
- immichpy/client/generated/models/sync_album_user_v1.py +4 -4
- immichpy/client/generated/models/sync_album_v1.py +13 -9
- immichpy/client/generated/models/sync_asset_delete_v1.py +2 -2
- immichpy/client/generated/models/sync_asset_exif_v1.py +46 -26
- immichpy/client/generated/models/sync_asset_face_delete_v1.py +2 -2
- immichpy/client/generated/models/sync_asset_face_v1.py +5 -5
- immichpy/client/generated/models/sync_asset_metadata_delete_v1.py +3 -4
- immichpy/client/generated/models/sync_asset_metadata_v1.py +4 -5
- immichpy/client/generated/models/sync_asset_v1.py +47 -18
- immichpy/client/generated/models/sync_auth_user_v1.py +22 -12
- immichpy/client/generated/models/sync_entity_type.py +2 -2
- immichpy/client/generated/models/sync_memory_asset_delete_v1.py +3 -3
- immichpy/client/generated/models/sync_memory_asset_v1.py +3 -3
- immichpy/client/generated/models/sync_memory_delete_v1.py +2 -2
- immichpy/client/generated/models/sync_memory_v1.py +13 -13
- immichpy/client/generated/models/sync_partner_delete_v1.py +5 -3
- immichpy/client/generated/models/sync_partner_v1.py +6 -4
- immichpy/client/generated/models/sync_person_delete_v1.py +2 -2
- immichpy/client/generated/models/sync_person_v1.py +13 -11
- immichpy/client/generated/models/sync_request_type.py +2 -2
- immichpy/client/generated/models/sync_stack_delete_v1.py +2 -2
- immichpy/client/generated/models/sync_stack_v1.py +8 -6
- immichpy/client/generated/models/sync_stream_dto.py +4 -4
- immichpy/client/generated/models/sync_user_delete_v1.py +2 -2
- immichpy/client/generated/models/sync_user_metadata_delete_v1.py +3 -3
- immichpy/client/generated/models/sync_user_metadata_v1.py +4 -4
- immichpy/client/generated/models/sync_user_v1.py +16 -8
- immichpy/client/generated/models/system_config_backups_dto.py +1 -1
- immichpy/client/generated/models/system_config_dto.py +1 -1
- immichpy/client/generated/models/system_config_f_fmpeg_dto.py +44 -22
- immichpy/client/generated/models/system_config_faces_dto.py +2 -2
- immichpy/client/generated/models/system_config_generated_fullsize_image_dto.py +13 -7
- immichpy/client/generated/models/system_config_generated_image_dto.py +14 -8
- immichpy/client/generated/models/system_config_image_dto.py +5 -3
- immichpy/client/generated/models/system_config_job_dto.py +9 -1
- immichpy/client/generated/models/system_config_library_dto.py +1 -1
- immichpy/client/generated/models/system_config_library_scan_dto.py +2 -2
- immichpy/client/generated/models/system_config_library_watch_dto.py +3 -3
- immichpy/client/generated/models/system_config_logging_dto.py +3 -3
- immichpy/client/generated/models/system_config_machine_learning_dto.py +2 -2
- immichpy/client/generated/models/system_config_map_dto.py +2 -2
- immichpy/client/generated/models/system_config_metadata_dto.py +1 -1
- immichpy/client/generated/models/system_config_new_version_check_dto.py +3 -3
- immichpy/client/generated/models/system_config_nightly_tasks_dto.py +16 -6
- immichpy/client/generated/models/system_config_notifications_dto.py +1 -1
- immichpy/client/generated/models/system_config_o_auth_dto.py +28 -18
- immichpy/client/generated/models/system_config_password_login_dto.py +3 -3
- immichpy/client/generated/models/system_config_reverse_geocoding_dto.py +3 -3
- immichpy/client/generated/models/system_config_server_dto.py +8 -4
- immichpy/client/generated/models/system_config_smtp_dto.py +8 -4
- immichpy/client/generated/models/system_config_smtp_transport_dto.py +9 -7
- immichpy/client/generated/models/system_config_storage_template_dto.py +6 -4
- immichpy/client/generated/models/system_config_template_emails_dto.py +1 -1
- immichpy/client/generated/models/system_config_template_storage_option_dto.py +32 -9
- immichpy/client/generated/models/system_config_templates_dto.py +1 -1
- immichpy/client/generated/models/system_config_theme_dto.py +4 -2
- immichpy/client/generated/models/system_config_trash_dto.py +3 -3
- immichpy/client/generated/models/system_config_user_dto.py +4 -2
- immichpy/client/generated/models/tag_bulk_assets_dto.py +3 -3
- immichpy/client/generated/models/tag_bulk_assets_response_dto.py +3 -3
- immichpy/client/generated/models/tag_create_dto.py +8 -4
- immichpy/client/generated/models/tag_response_dto.py +10 -8
- immichpy/client/generated/models/tag_update_dto.py +3 -3
- immichpy/client/generated/models/tag_upsert_dto.py +3 -3
- immichpy/client/generated/models/tags_response.py +5 -3
- immichpy/client/generated/models/tags_update.py +9 -3
- immichpy/client/generated/models/template_dto.py +3 -3
- immichpy/client/generated/models/template_response_dto.py +4 -4
- immichpy/client/generated/models/test_email_response_dto.py +2 -2
- immichpy/client/generated/models/time_bucket_asset_response_dto.py +2 -3
- immichpy/client/generated/models/time_buckets_response_dto.py +1 -1
- immichpy/client/generated/models/tone_mapping.py +2 -2
- immichpy/client/generated/models/transcode_hw_accel.py +2 -2
- immichpy/client/generated/models/transcode_policy.py +2 -2
- immichpy/client/generated/models/trash_response_dto.py +3 -3
- immichpy/client/generated/models/update_album_dto.py +12 -6
- immichpy/client/generated/models/update_album_user_dto.py +3 -3
- immichpy/client/generated/models/update_asset_dto.py +21 -9
- immichpy/client/generated/models/update_library_dto.py +8 -4
- immichpy/client/generated/models/usage_by_user_dto.py +16 -9
- immichpy/client/generated/models/user_admin_create_dto.py +20 -10
- immichpy/client/generated/models/user_admin_delete_dto.py +5 -3
- immichpy/client/generated/models/user_admin_response_dto.py +35 -18
- immichpy/client/generated/models/user_admin_update_dto.py +20 -10
- immichpy/client/generated/models/user_avatar_color.py +2 -2
- immichpy/client/generated/models/user_license.py +6 -4
- immichpy/client/generated/models/user_metadata_key.py +2 -2
- immichpy/client/generated/models/user_preferences_response_dto.py +1 -1
- immichpy/client/generated/models/user_preferences_update_dto.py +1 -1
- immichpy/client/generated/models/user_response_dto.py +13 -7
- immichpy/client/generated/models/user_status.py +2 -2
- immichpy/client/generated/models/user_update_me_dto.py +10 -5
- immichpy/client/generated/models/validate_access_token_response_dto.py +4 -2
- immichpy/client/generated/models/validate_library_dto.py +9 -3
- immichpy/client/generated/models/validate_library_import_path_response_dto.py +4 -4
- immichpy/client/generated/models/validate_library_response_dto.py +4 -2
- immichpy/client/generated/models/version_check_state_response_dto.py +7 -3
- immichpy/client/generated/models/video_codec.py +2 -2
- immichpy/client/generated/models/video_container.py +2 -2
- immichpy/client/generated/models/workflow_action_item_dto.py +7 -3
- immichpy/client/generated/models/workflow_action_response_dto.py +10 -6
- immichpy/client/generated/models/workflow_create_dto.py +11 -7
- immichpy/client/generated/models/workflow_filter_item_dto.py +7 -3
- immichpy/client/generated/models/workflow_filter_response_dto.py +10 -6
- immichpy/client/generated/models/workflow_response_dto.py +14 -27
- immichpy/client/generated/models/workflow_update_dto.py +19 -7
- immichpy/client/generated/rest.py +1 -1
- immichpy/client/main.py +4 -1
- {immichpy-1.6.5.dist-info → immichpy-1.7.6.dist-info}/METADATA +1 -3
- immichpy-1.7.6.dist-info/RECORD +464 -0
- immichpy-1.6.5.dist-info/RECORD +0 -439
- {immichpy-1.6.5.dist-info → immichpy-1.7.6.dist-info}/WHEEL +0 -0
- {immichpy-1.6.5.dist-info → immichpy-1.7.6.dist-info}/entry_points.txt +0 -0
- {immichpy-1.6.5.dist-info → immichpy-1.7.6.dist-info}/licenses/LICENSE +0 -0
immichpy/cli/commands/users.py
CHANGED
|
@@ -20,7 +20,9 @@ app = typer.Typer(
|
|
|
20
20
|
@app.command("create-profile-image", deprecated=False, rich_help_panel="API commands")
|
|
21
21
|
def create_profile_image(
|
|
22
22
|
ctx: typer.Context,
|
|
23
|
-
file: Path = typer.Option(
|
|
23
|
+
file: Path = typer.Option(
|
|
24
|
+
..., "--file", help="""Profile image file""", exists=True
|
|
25
|
+
),
|
|
24
26
|
) -> None:
|
|
25
27
|
"""Create user profile image
|
|
26
28
|
|
|
@@ -182,8 +184,12 @@ def search_users(
|
|
|
182
184
|
@app.command("set-user-license", deprecated=False, rich_help_panel="API commands")
|
|
183
185
|
def set_user_license(
|
|
184
186
|
ctx: typer.Context,
|
|
185
|
-
activation_key: str = typer.Option(
|
|
186
|
-
|
|
187
|
+
activation_key: str = typer.Option(
|
|
188
|
+
..., "--activation-key", help="""Activation key"""
|
|
189
|
+
),
|
|
190
|
+
license_key: str = typer.Option(
|
|
191
|
+
..., "--license-key", help="""License key (format: IM(SV|CL)(-XXXX){8})"""
|
|
192
|
+
),
|
|
187
193
|
) -> None:
|
|
188
194
|
"""Set user product key
|
|
189
195
|
|
|
@@ -203,7 +209,9 @@ def set_user_license(
|
|
|
203
209
|
@app.command("set-user-onboarding", deprecated=False, rich_help_panel="API commands")
|
|
204
210
|
def set_user_onboarding(
|
|
205
211
|
ctx: typer.Context,
|
|
206
|
-
is_onboarded: bool = typer.Option(
|
|
212
|
+
is_onboarded: bool = typer.Option(
|
|
213
|
+
..., "--is-onboarded", help="""Is user onboarded"""
|
|
214
|
+
),
|
|
207
215
|
) -> None:
|
|
208
216
|
"""Update user onboarding
|
|
209
217
|
|
|
@@ -223,65 +231,79 @@ def set_user_onboarding(
|
|
|
223
231
|
def update_my_preferences(
|
|
224
232
|
ctx: typer.Context,
|
|
225
233
|
albums_default_asset_order: str | None = typer.Option(
|
|
226
|
-
None, "--albums-default-asset-order", help=""""""
|
|
234
|
+
None, "--albums-default-asset-order", help="""Asset sort order"""
|
|
235
|
+
),
|
|
236
|
+
avatar_color: str | None = typer.Option(
|
|
237
|
+
None, "--avatar-color", help="""Avatar color"""
|
|
227
238
|
),
|
|
228
|
-
avatar_color: str | None = typer.Option(None, "--avatar-color", help=""""""),
|
|
229
239
|
cast_g_cast_enabled: Literal["true", "false"] | None = typer.Option(
|
|
230
|
-
None, "--cast-g-cast-enabled", help=""""""
|
|
240
|
+
None, "--cast-g-cast-enabled", help="""Whether Google Cast is enabled"""
|
|
231
241
|
),
|
|
232
242
|
download_archive_size: int | None = typer.Option(
|
|
233
|
-
None, "--download-archive-size", help="""""", min=1
|
|
243
|
+
None, "--download-archive-size", help="""Maximum archive size in bytes""", min=1
|
|
234
244
|
),
|
|
235
245
|
download_include_embedded_videos: Literal["true", "false"] | None = typer.Option(
|
|
236
|
-
None,
|
|
246
|
+
None,
|
|
247
|
+
"--download-include-embedded-videos",
|
|
248
|
+
help="""Whether to include embedded videos in downloads""",
|
|
237
249
|
),
|
|
238
250
|
email_notifications_album_invite: Literal["true", "false"] | None = typer.Option(
|
|
239
|
-
None,
|
|
251
|
+
None,
|
|
252
|
+
"--email-notifications-album-invite",
|
|
253
|
+
help="""Whether to receive email notifications for album invites""",
|
|
240
254
|
),
|
|
241
255
|
email_notifications_album_update: Literal["true", "false"] | None = typer.Option(
|
|
242
|
-
None,
|
|
256
|
+
None,
|
|
257
|
+
"--email-notifications-album-update",
|
|
258
|
+
help="""Whether to receive email notifications for album updates""",
|
|
243
259
|
),
|
|
244
260
|
email_notifications_enabled: Literal["true", "false"] | None = typer.Option(
|
|
245
|
-
None,
|
|
261
|
+
None,
|
|
262
|
+
"--email-notifications-enabled",
|
|
263
|
+
help="""Whether email notifications are enabled""",
|
|
246
264
|
),
|
|
247
265
|
folders_enabled: Literal["true", "false"] | None = typer.Option(
|
|
248
|
-
None, "--folders-enabled", help=""""""
|
|
266
|
+
None, "--folders-enabled", help="""Whether folders are enabled"""
|
|
249
267
|
),
|
|
250
268
|
folders_sidebar_web: Literal["true", "false"] | None = typer.Option(
|
|
251
|
-
None, "--folders-sidebar-web", help=""""""
|
|
269
|
+
None, "--folders-sidebar-web", help="""Whether folders appear in web sidebar"""
|
|
252
270
|
),
|
|
253
271
|
memories_duration: int | None = typer.Option(
|
|
254
|
-
None, "--memories-duration", help="""""", min=1
|
|
272
|
+
None, "--memories-duration", help="""Memory duration in seconds""", min=1
|
|
255
273
|
),
|
|
256
274
|
memories_enabled: Literal["true", "false"] | None = typer.Option(
|
|
257
|
-
None, "--memories-enabled", help=""""""
|
|
275
|
+
None, "--memories-enabled", help="""Whether memories are enabled"""
|
|
258
276
|
),
|
|
259
277
|
people_enabled: Literal["true", "false"] | None = typer.Option(
|
|
260
|
-
None, "--people-enabled", help=""""""
|
|
278
|
+
None, "--people-enabled", help="""Whether people are enabled"""
|
|
261
279
|
),
|
|
262
280
|
people_sidebar_web: Literal["true", "false"] | None = typer.Option(
|
|
263
|
-
None, "--people-sidebar-web", help=""""""
|
|
281
|
+
None, "--people-sidebar-web", help="""Whether people appear in web sidebar"""
|
|
264
282
|
),
|
|
265
283
|
purchase_hide_buy_button_until: str | None = typer.Option(
|
|
266
|
-
None,
|
|
284
|
+
None,
|
|
285
|
+
"--purchase-hide-buy-button-until",
|
|
286
|
+
help="""Date until which to hide buy button""",
|
|
267
287
|
),
|
|
268
288
|
purchase_show_support_badge: Literal["true", "false"] | None = typer.Option(
|
|
269
|
-
None, "--purchase-show-support-badge", help=""""""
|
|
289
|
+
None, "--purchase-show-support-badge", help="""Whether to show support badge"""
|
|
270
290
|
),
|
|
271
291
|
ratings_enabled: Literal["true", "false"] | None = typer.Option(
|
|
272
|
-
None, "--ratings-enabled", help=""""""
|
|
292
|
+
None, "--ratings-enabled", help="""Whether ratings are enabled"""
|
|
273
293
|
),
|
|
274
294
|
shared_links_enabled: Literal["true", "false"] | None = typer.Option(
|
|
275
|
-
None, "--shared-links-enabled", help=""""""
|
|
295
|
+
None, "--shared-links-enabled", help="""Whether shared links are enabled"""
|
|
276
296
|
),
|
|
277
297
|
shared_links_sidebar_web: Literal["true", "false"] | None = typer.Option(
|
|
278
|
-
None,
|
|
298
|
+
None,
|
|
299
|
+
"--shared-links-sidebar-web",
|
|
300
|
+
help="""Whether shared links appear in web sidebar""",
|
|
279
301
|
),
|
|
280
302
|
tags_enabled: Literal["true", "false"] | None = typer.Option(
|
|
281
|
-
None, "--tags-enabled", help=""""""
|
|
303
|
+
None, "--tags-enabled", help="""Whether tags are enabled"""
|
|
282
304
|
),
|
|
283
305
|
tags_sidebar_web: Literal["true", "false"] | None = typer.Option(
|
|
284
|
-
None, "--tags-sidebar-web", help=""""""
|
|
306
|
+
None, "--tags-sidebar-web", help="""Whether tags appear in web sidebar"""
|
|
285
307
|
),
|
|
286
308
|
) -> None:
|
|
287
309
|
"""Update my preferences
|
|
@@ -380,10 +402,16 @@ def update_my_preferences(
|
|
|
380
402
|
@app.command("update-my-user", deprecated=False, rich_help_panel="API commands")
|
|
381
403
|
def update_my_user(
|
|
382
404
|
ctx: typer.Context,
|
|
383
|
-
avatar_color: str | None = typer.Option(
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
405
|
+
avatar_color: str | None = typer.Option(
|
|
406
|
+
None, "--avatar-color", help="""Avatar color"""
|
|
407
|
+
),
|
|
408
|
+
email: str | None = typer.Option(None, "--email", help="""User email"""),
|
|
409
|
+
name: str | None = typer.Option(None, "--name", help="""User name"""),
|
|
410
|
+
password: str | None = typer.Option(
|
|
411
|
+
None,
|
|
412
|
+
"--password",
|
|
413
|
+
help="""User password (deprecated, use change password endpoint)""",
|
|
414
|
+
),
|
|
387
415
|
) -> None:
|
|
388
416
|
"""Update current user
|
|
389
417
|
|
|
@@ -19,23 +19,29 @@ app = typer.Typer(
|
|
|
19
19
|
@app.command("create-user-admin", deprecated=False, rich_help_panel="API commands")
|
|
20
20
|
def create_user_admin(
|
|
21
21
|
ctx: typer.Context,
|
|
22
|
-
avatar_color: str | None = typer.Option(
|
|
23
|
-
|
|
22
|
+
avatar_color: str | None = typer.Option(
|
|
23
|
+
None, "--avatar-color", help="""Avatar color"""
|
|
24
|
+
),
|
|
25
|
+
email: str = typer.Option(..., "--email", help="""User email"""),
|
|
24
26
|
is_admin: Literal["true", "false"] | None = typer.Option(
|
|
25
|
-
None, "--is-admin", help=""""""
|
|
27
|
+
None, "--is-admin", help="""Grant admin privileges"""
|
|
26
28
|
),
|
|
27
|
-
name: str = typer.Option(..., "--name", help=""""""),
|
|
29
|
+
name: str = typer.Option(..., "--name", help="""User name"""),
|
|
28
30
|
notify: Literal["true", "false"] | None = typer.Option(
|
|
29
|
-
None, "--notify", help=""""""
|
|
31
|
+
None, "--notify", help="""Send notification email"""
|
|
30
32
|
),
|
|
31
|
-
password: str = typer.Option(..., "--password", help=""""""),
|
|
33
|
+
password: str = typer.Option(..., "--password", help="""User password"""),
|
|
32
34
|
quota_size_in_bytes: int | None = typer.Option(
|
|
33
|
-
None, "--quota-size-in-bytes", help="""""", min=0
|
|
35
|
+
None, "--quota-size-in-bytes", help="""Storage quota in bytes""", min=0
|
|
34
36
|
),
|
|
35
37
|
should_change_password: Literal["true", "false"] | None = typer.Option(
|
|
36
|
-
None,
|
|
38
|
+
None,
|
|
39
|
+
"--should-change-password",
|
|
40
|
+
help="""Require password change on next login""",
|
|
41
|
+
),
|
|
42
|
+
storage_label: str | None = typer.Option(
|
|
43
|
+
None, "--storage-label", help="""Storage label"""
|
|
37
44
|
),
|
|
38
|
-
storage_label: str | None = typer.Option(None, "--storage-label", help=""""""),
|
|
39
45
|
) -> None:
|
|
40
46
|
"""Create a user
|
|
41
47
|
|
|
@@ -73,7 +79,9 @@ def create_user_admin(
|
|
|
73
79
|
def delete_user_admin(
|
|
74
80
|
ctx: typer.Context,
|
|
75
81
|
id: str = typer.Argument(..., help=""""""),
|
|
76
|
-
force: Literal["true", "false"] | None = typer.Option(
|
|
82
|
+
force: Literal["true", "false"] | None = typer.Option(
|
|
83
|
+
None, "--force", help="""Force delete even if user has assets"""
|
|
84
|
+
),
|
|
77
85
|
) -> None:
|
|
78
86
|
"""Delete a user
|
|
79
87
|
|
|
@@ -154,13 +162,13 @@ def get_user_statistics_admin(
|
|
|
154
162
|
ctx: typer.Context,
|
|
155
163
|
id: str = typer.Argument(..., help=""""""),
|
|
156
164
|
is_favorite: Literal["true", "false"] | None = typer.Option(
|
|
157
|
-
None, "--is-favorite", help=""""""
|
|
165
|
+
None, "--is-favorite", help="""Filter by favorite status"""
|
|
158
166
|
),
|
|
159
167
|
is_trashed: Literal["true", "false"] | None = typer.Option(
|
|
160
|
-
None, "--is-trashed", help=""""""
|
|
168
|
+
None, "--is-trashed", help="""Filter by trash status"""
|
|
161
169
|
),
|
|
162
170
|
visibility: AssetVisibility | None = typer.Option(
|
|
163
|
-
None, "--visibility", help=""""""
|
|
171
|
+
None, "--visibility", help="""Filter by visibility"""
|
|
164
172
|
),
|
|
165
173
|
) -> None:
|
|
166
174
|
"""Retrieve user statistics
|
|
@@ -203,9 +211,9 @@ def restore_user_admin(
|
|
|
203
211
|
@app.command("search-users-admin", deprecated=False, rich_help_panel="API commands")
|
|
204
212
|
def search_users_admin(
|
|
205
213
|
ctx: typer.Context,
|
|
206
|
-
id: str | None = typer.Option(None, "--id", help=""""""),
|
|
214
|
+
id: str | None = typer.Option(None, "--id", help="""User ID filter"""),
|
|
207
215
|
with_deleted: Literal["true", "false"] | None = typer.Option(
|
|
208
|
-
None, "--with-deleted", help=""""""
|
|
216
|
+
None, "--with-deleted", help="""Include deleted users"""
|
|
209
217
|
),
|
|
210
218
|
) -> None:
|
|
211
219
|
"""Search users
|
|
@@ -228,21 +236,33 @@ def search_users_admin(
|
|
|
228
236
|
def update_user_admin(
|
|
229
237
|
ctx: typer.Context,
|
|
230
238
|
id: str = typer.Argument(..., help=""""""),
|
|
231
|
-
avatar_color: str | None = typer.Option(
|
|
232
|
-
|
|
239
|
+
avatar_color: str | None = typer.Option(
|
|
240
|
+
None, "--avatar-color", help="""Avatar color"""
|
|
241
|
+
),
|
|
242
|
+
email: str | None = typer.Option(None, "--email", help="""User email"""),
|
|
233
243
|
is_admin: Literal["true", "false"] | None = typer.Option(
|
|
234
|
-
None, "--is-admin", help=""""""
|
|
244
|
+
None, "--is-admin", help="""Grant admin privileges"""
|
|
245
|
+
),
|
|
246
|
+
name: str | None = typer.Option(None, "--name", help="""User name"""),
|
|
247
|
+
password: str | None = typer.Option(None, "--password", help="""User password"""),
|
|
248
|
+
pin_code: str | None = typer.Option(
|
|
249
|
+
None,
|
|
250
|
+
"--pin-code",
|
|
251
|
+
help="""PIN code
|
|
252
|
+
|
|
253
|
+
Example: 123456""",
|
|
235
254
|
),
|
|
236
|
-
name: str | None = typer.Option(None, "--name", help=""""""),
|
|
237
|
-
password: str | None = typer.Option(None, "--password", help=""""""),
|
|
238
|
-
pin_code: str | None = typer.Option(None, "--pin-code", help="""Example: 123456"""),
|
|
239
255
|
quota_size_in_bytes: int | None = typer.Option(
|
|
240
|
-
None, "--quota-size-in-bytes", help="""""", min=0
|
|
256
|
+
None, "--quota-size-in-bytes", help="""Storage quota in bytes""", min=0
|
|
241
257
|
),
|
|
242
258
|
should_change_password: Literal["true", "false"] | None = typer.Option(
|
|
243
|
-
None,
|
|
259
|
+
None,
|
|
260
|
+
"--should-change-password",
|
|
261
|
+
help="""Require password change on next login""",
|
|
262
|
+
),
|
|
263
|
+
storage_label: str | None = typer.Option(
|
|
264
|
+
None, "--storage-label", help="""Storage label"""
|
|
244
265
|
),
|
|
245
|
-
storage_label: str | None = typer.Option(None, "--storage-label", help=""""""),
|
|
246
266
|
) -> None:
|
|
247
267
|
"""Update a user
|
|
248
268
|
|
|
@@ -287,65 +307,79 @@ def update_user_preferences_admin(
|
|
|
287
307
|
ctx: typer.Context,
|
|
288
308
|
id: str = typer.Argument(..., help=""""""),
|
|
289
309
|
albums_default_asset_order: str | None = typer.Option(
|
|
290
|
-
None, "--albums-default-asset-order", help=""""""
|
|
310
|
+
None, "--albums-default-asset-order", help="""Asset sort order"""
|
|
311
|
+
),
|
|
312
|
+
avatar_color: str | None = typer.Option(
|
|
313
|
+
None, "--avatar-color", help="""Avatar color"""
|
|
291
314
|
),
|
|
292
|
-
avatar_color: str | None = typer.Option(None, "--avatar-color", help=""""""),
|
|
293
315
|
cast_g_cast_enabled: Literal["true", "false"] | None = typer.Option(
|
|
294
|
-
None, "--cast-g-cast-enabled", help=""""""
|
|
316
|
+
None, "--cast-g-cast-enabled", help="""Whether Google Cast is enabled"""
|
|
295
317
|
),
|
|
296
318
|
download_archive_size: int | None = typer.Option(
|
|
297
|
-
None, "--download-archive-size", help="""""", min=1
|
|
319
|
+
None, "--download-archive-size", help="""Maximum archive size in bytes""", min=1
|
|
298
320
|
),
|
|
299
321
|
download_include_embedded_videos: Literal["true", "false"] | None = typer.Option(
|
|
300
|
-
None,
|
|
322
|
+
None,
|
|
323
|
+
"--download-include-embedded-videos",
|
|
324
|
+
help="""Whether to include embedded videos in downloads""",
|
|
301
325
|
),
|
|
302
326
|
email_notifications_album_invite: Literal["true", "false"] | None = typer.Option(
|
|
303
|
-
None,
|
|
327
|
+
None,
|
|
328
|
+
"--email-notifications-album-invite",
|
|
329
|
+
help="""Whether to receive email notifications for album invites""",
|
|
304
330
|
),
|
|
305
331
|
email_notifications_album_update: Literal["true", "false"] | None = typer.Option(
|
|
306
|
-
None,
|
|
332
|
+
None,
|
|
333
|
+
"--email-notifications-album-update",
|
|
334
|
+
help="""Whether to receive email notifications for album updates""",
|
|
307
335
|
),
|
|
308
336
|
email_notifications_enabled: Literal["true", "false"] | None = typer.Option(
|
|
309
|
-
None,
|
|
337
|
+
None,
|
|
338
|
+
"--email-notifications-enabled",
|
|
339
|
+
help="""Whether email notifications are enabled""",
|
|
310
340
|
),
|
|
311
341
|
folders_enabled: Literal["true", "false"] | None = typer.Option(
|
|
312
|
-
None, "--folders-enabled", help=""""""
|
|
342
|
+
None, "--folders-enabled", help="""Whether folders are enabled"""
|
|
313
343
|
),
|
|
314
344
|
folders_sidebar_web: Literal["true", "false"] | None = typer.Option(
|
|
315
|
-
None, "--folders-sidebar-web", help=""""""
|
|
345
|
+
None, "--folders-sidebar-web", help="""Whether folders appear in web sidebar"""
|
|
316
346
|
),
|
|
317
347
|
memories_duration: int | None = typer.Option(
|
|
318
|
-
None, "--memories-duration", help="""""", min=1
|
|
348
|
+
None, "--memories-duration", help="""Memory duration in seconds""", min=1
|
|
319
349
|
),
|
|
320
350
|
memories_enabled: Literal["true", "false"] | None = typer.Option(
|
|
321
|
-
None, "--memories-enabled", help=""""""
|
|
351
|
+
None, "--memories-enabled", help="""Whether memories are enabled"""
|
|
322
352
|
),
|
|
323
353
|
people_enabled: Literal["true", "false"] | None = typer.Option(
|
|
324
|
-
None, "--people-enabled", help=""""""
|
|
354
|
+
None, "--people-enabled", help="""Whether people are enabled"""
|
|
325
355
|
),
|
|
326
356
|
people_sidebar_web: Literal["true", "false"] | None = typer.Option(
|
|
327
|
-
None, "--people-sidebar-web", help=""""""
|
|
357
|
+
None, "--people-sidebar-web", help="""Whether people appear in web sidebar"""
|
|
328
358
|
),
|
|
329
359
|
purchase_hide_buy_button_until: str | None = typer.Option(
|
|
330
|
-
None,
|
|
360
|
+
None,
|
|
361
|
+
"--purchase-hide-buy-button-until",
|
|
362
|
+
help="""Date until which to hide buy button""",
|
|
331
363
|
),
|
|
332
364
|
purchase_show_support_badge: Literal["true", "false"] | None = typer.Option(
|
|
333
|
-
None, "--purchase-show-support-badge", help=""""""
|
|
365
|
+
None, "--purchase-show-support-badge", help="""Whether to show support badge"""
|
|
334
366
|
),
|
|
335
367
|
ratings_enabled: Literal["true", "false"] | None = typer.Option(
|
|
336
|
-
None, "--ratings-enabled", help=""""""
|
|
368
|
+
None, "--ratings-enabled", help="""Whether ratings are enabled"""
|
|
337
369
|
),
|
|
338
370
|
shared_links_enabled: Literal["true", "false"] | None = typer.Option(
|
|
339
|
-
None, "--shared-links-enabled", help=""""""
|
|
371
|
+
None, "--shared-links-enabled", help="""Whether shared links are enabled"""
|
|
340
372
|
),
|
|
341
373
|
shared_links_sidebar_web: Literal["true", "false"] | None = typer.Option(
|
|
342
|
-
None,
|
|
374
|
+
None,
|
|
375
|
+
"--shared-links-sidebar-web",
|
|
376
|
+
help="""Whether shared links appear in web sidebar""",
|
|
343
377
|
),
|
|
344
378
|
tags_enabled: Literal["true", "false"] | None = typer.Option(
|
|
345
|
-
None, "--tags-enabled", help=""""""
|
|
379
|
+
None, "--tags-enabled", help="""Whether tags are enabled"""
|
|
346
380
|
),
|
|
347
381
|
tags_sidebar_web: Literal["true", "false"] | None = typer.Option(
|
|
348
|
-
None, "--tags-sidebar-web", help=""""""
|
|
382
|
+
None, "--tags-sidebar-web", help="""Whether tags appear in web sidebar"""
|
|
349
383
|
),
|
|
350
384
|
) -> None:
|
|
351
385
|
"""Update user preferences
|
|
@@ -20,14 +20,28 @@ app = typer.Typer(
|
|
|
20
20
|
@app.command("create-workflow", deprecated=False, rich_help_panel="API commands")
|
|
21
21
|
def create_workflow(
|
|
22
22
|
ctx: typer.Context,
|
|
23
|
-
actions: list[str] = typer.Option(
|
|
24
|
-
|
|
23
|
+
actions: list[str] = typer.Option(
|
|
24
|
+
...,
|
|
25
|
+
"--actions",
|
|
26
|
+
help="""Workflow actions
|
|
27
|
+
|
|
28
|
+
As a JSON string""",
|
|
29
|
+
),
|
|
30
|
+
description: str | None = typer.Option(
|
|
31
|
+
None, "--description", help="""Workflow description"""
|
|
32
|
+
),
|
|
25
33
|
enabled: Literal["true", "false"] | None = typer.Option(
|
|
26
|
-
None, "--enabled", help=""""""
|
|
34
|
+
None, "--enabled", help="""Workflow enabled"""
|
|
35
|
+
),
|
|
36
|
+
filters: list[str] = typer.Option(
|
|
37
|
+
...,
|
|
38
|
+
"--filters",
|
|
39
|
+
help="""Workflow filters
|
|
40
|
+
|
|
41
|
+
As a JSON string""",
|
|
27
42
|
),
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
trigger_type: str = typer.Option(..., "--trigger-type", help=""""""),
|
|
43
|
+
name: str = typer.Option(..., "--name", help="""Workflow name"""),
|
|
44
|
+
trigger_type: str = typer.Option(..., "--trigger-type", help="""Trigger type"""),
|
|
31
45
|
) -> None:
|
|
32
46
|
"""Create a workflow
|
|
33
47
|
|
|
@@ -103,16 +117,29 @@ def update_workflow(
|
|
|
103
117
|
ctx: typer.Context,
|
|
104
118
|
id: str = typer.Argument(..., help=""""""),
|
|
105
119
|
actions: list[str] | None = typer.Option(
|
|
106
|
-
None,
|
|
120
|
+
None,
|
|
121
|
+
"--actions",
|
|
122
|
+
help="""Workflow actions
|
|
123
|
+
|
|
124
|
+
As a JSON string""",
|
|
125
|
+
),
|
|
126
|
+
description: str | None = typer.Option(
|
|
127
|
+
None, "--description", help="""Workflow description"""
|
|
107
128
|
),
|
|
108
|
-
description: str | None = typer.Option(None, "--description", help=""""""),
|
|
109
129
|
enabled: Literal["true", "false"] | None = typer.Option(
|
|
110
|
-
None, "--enabled", help=""""""
|
|
130
|
+
None, "--enabled", help="""Workflow enabled"""
|
|
111
131
|
),
|
|
112
132
|
filters: list[str] | None = typer.Option(
|
|
113
|
-
None,
|
|
133
|
+
None,
|
|
134
|
+
"--filters",
|
|
135
|
+
help="""Workflow filters
|
|
136
|
+
|
|
137
|
+
As a JSON string""",
|
|
138
|
+
),
|
|
139
|
+
name: str | None = typer.Option(None, "--name", help="""Workflow name"""),
|
|
140
|
+
trigger_type: str | None = typer.Option(
|
|
141
|
+
None, "--trigger-type", help="""Trigger type"""
|
|
114
142
|
),
|
|
115
|
-
name: str | None = typer.Option(None, "--name", help=""""""),
|
|
116
143
|
) -> None:
|
|
117
144
|
"""Update a workflow
|
|
118
145
|
|
|
@@ -133,6 +160,8 @@ def update_workflow(
|
|
|
133
160
|
set_nested(json_data, ["filters"], value_filters)
|
|
134
161
|
if name is not None:
|
|
135
162
|
set_nested(json_data, ["name"], name)
|
|
163
|
+
if trigger_type is not None:
|
|
164
|
+
set_nested(json_data, ["trigger_type"], trigger_type)
|
|
136
165
|
workflow_update_dto = WorkflowUpdateDto.model_validate(json_data)
|
|
137
166
|
kwargs["workflow_update_dto"] = workflow_update_dto
|
|
138
167
|
client: "AsyncClient" = ctx.obj["client"]
|
immichpy/cli/main.py
CHANGED
|
@@ -63,6 +63,9 @@ from immichpy.cli.wrapper import users as users_wrapper
|
|
|
63
63
|
from immichpy.cli.commands import users_admin as users_admin_commands
|
|
64
64
|
from immichpy.cli.commands import views as views_commands
|
|
65
65
|
from immichpy.cli.commands import workflows as workflows_commands
|
|
66
|
+
from immichpy.cli.commands import (
|
|
67
|
+
database_backups_admin as database_backups_admin_commands,
|
|
68
|
+
)
|
|
66
69
|
|
|
67
70
|
# Global state
|
|
68
71
|
app = typer.Typer(
|
|
@@ -135,11 +138,16 @@ app.add_typer(
|
|
|
135
138
|
)
|
|
136
139
|
app.add_typer(views_commands.app, name="views", rich_help_panel="API commands")
|
|
137
140
|
app.add_typer(workflows_commands.app, name="workflows", rich_help_panel="API commands")
|
|
141
|
+
app.add_typer(
|
|
142
|
+
database_backups_admin_commands.app,
|
|
143
|
+
name="backups",
|
|
144
|
+
rich_help_panel="API commands",
|
|
145
|
+
)
|
|
138
146
|
|
|
139
147
|
|
|
140
148
|
def version_callback(value: bool) -> None: # pragma: no cover
|
|
141
149
|
if value:
|
|
142
|
-
print_(f"
|
|
150
|
+
print_(f"immichpy CLI {version('immichpy')}", type="text")
|
|
143
151
|
raise typer.Exit(0)
|
|
144
152
|
|
|
145
153
|
|
|
@@ -212,7 +220,7 @@ def callback(
|
|
|
212
220
|
)
|
|
213
221
|
if not config.base_url:
|
|
214
222
|
print_(
|
|
215
|
-
"No base URL provided. Run '
|
|
223
|
+
"No base URL provided. Run 'immichpy setup' to set up a profile or use '--base-url' to specify a base URL.",
|
|
216
224
|
type="error",
|
|
217
225
|
)
|
|
218
226
|
raise typer.Exit(code=1)
|
immichpy/cli/utils.py
CHANGED
|
@@ -59,7 +59,7 @@ def check_config() -> None:
|
|
|
59
59
|
"""
|
|
60
60
|
if not CONFIG_FILE.exists():
|
|
61
61
|
print_(
|
|
62
|
-
"Config file does not exist. Run [bold]
|
|
62
|
+
"Config file does not exist. Run [bold]immichpy config set[/bold] to create it.",
|
|
63
63
|
type="error",
|
|
64
64
|
)
|
|
65
65
|
raise typer.Exit(code=1)
|
|
@@ -82,7 +82,7 @@ def resolve_client_config(
|
|
|
82
82
|
|
|
83
83
|
if profile_explicit and profile not in profiles:
|
|
84
84
|
print_(
|
|
85
|
-
f"Profile '{profile}' not found. Run
|
|
85
|
+
f"Profile '{profile}' not found. Run immichpy config set --profile {profile}.",
|
|
86
86
|
type="error",
|
|
87
87
|
)
|
|
88
88
|
raise typer.Exit(code=1)
|
immichpy/cli/wrapper/setup.py
CHANGED
|
@@ -6,6 +6,7 @@ generated/api/api_keys_api.py
|
|
|
6
6
|
generated/api/assets_api.py
|
|
7
7
|
generated/api/authentication_admin_api.py
|
|
8
8
|
generated/api/authentication_api.py
|
|
9
|
+
generated/api/database_backups_admin_api.py
|
|
9
10
|
generated/api/deprecated_api.py
|
|
10
11
|
generated/api/download_api.py
|
|
11
12
|
generated/api/duplicates_api.py
|
|
@@ -69,6 +70,13 @@ generated/models/asset_bulk_upload_check_result.py
|
|
|
69
70
|
generated/models/asset_copy_dto.py
|
|
70
71
|
generated/models/asset_delta_sync_dto.py
|
|
71
72
|
generated/models/asset_delta_sync_response_dto.py
|
|
73
|
+
generated/models/asset_edit_action.py
|
|
74
|
+
generated/models/asset_edit_action_crop.py
|
|
75
|
+
generated/models/asset_edit_action_list_dto.py
|
|
76
|
+
generated/models/asset_edit_action_list_dto_edits_inner.py
|
|
77
|
+
generated/models/asset_edit_action_mirror.py
|
|
78
|
+
generated/models/asset_edit_action_rotate.py
|
|
79
|
+
generated/models/asset_edits_dto.py
|
|
72
80
|
generated/models/asset_face_create_dto.py
|
|
73
81
|
generated/models/asset_face_delete_dto.py
|
|
74
82
|
generated/models/asset_face_response_dto.py
|
|
@@ -83,7 +91,11 @@ generated/models/asset_jobs_dto.py
|
|
|
83
91
|
generated/models/asset_media_response_dto.py
|
|
84
92
|
generated/models/asset_media_size.py
|
|
85
93
|
generated/models/asset_media_status.py
|
|
86
|
-
generated/models/
|
|
94
|
+
generated/models/asset_metadata_bulk_delete_dto.py
|
|
95
|
+
generated/models/asset_metadata_bulk_delete_item_dto.py
|
|
96
|
+
generated/models/asset_metadata_bulk_response_dto.py
|
|
97
|
+
generated/models/asset_metadata_bulk_upsert_dto.py
|
|
98
|
+
generated/models/asset_metadata_bulk_upsert_item_dto.py
|
|
87
99
|
generated/models/asset_metadata_response_dto.py
|
|
88
100
|
generated/models/asset_metadata_upsert_dto.py
|
|
89
101
|
generated/models/asset_metadata_upsert_item_dto.py
|
|
@@ -112,7 +124,11 @@ generated/models/cq_mode.py
|
|
|
112
124
|
generated/models/create_album_dto.py
|
|
113
125
|
generated/models/create_library_dto.py
|
|
114
126
|
generated/models/create_profile_image_response_dto.py
|
|
127
|
+
generated/models/crop_parameters.py
|
|
115
128
|
generated/models/database_backup_config.py
|
|
129
|
+
generated/models/database_backup_delete_dto.py
|
|
130
|
+
generated/models/database_backup_dto.py
|
|
131
|
+
generated/models/database_backup_list_response_dto.py
|
|
116
132
|
generated/models/download_archive_info.py
|
|
117
133
|
generated/models/download_info_dto.py
|
|
118
134
|
generated/models/download_response.py
|
|
@@ -142,7 +158,10 @@ generated/models/logout_response_dto.py
|
|
|
142
158
|
generated/models/machine_learning_availability_checks_dto.py
|
|
143
159
|
generated/models/maintenance_action.py
|
|
144
160
|
generated/models/maintenance_auth_dto.py
|
|
161
|
+
generated/models/maintenance_detect_install_response_dto.py
|
|
162
|
+
generated/models/maintenance_detect_install_storage_folder_dto.py
|
|
145
163
|
generated/models/maintenance_login_dto.py
|
|
164
|
+
generated/models/maintenance_status_response_dto.py
|
|
146
165
|
generated/models/manual_job_name.py
|
|
147
166
|
generated/models/map_marker_response_dto.py
|
|
148
167
|
generated/models/map_reverse_geocode_response_dto.py
|
|
@@ -156,6 +175,8 @@ generated/models/memory_type.py
|
|
|
156
175
|
generated/models/memory_update_dto.py
|
|
157
176
|
generated/models/merge_person_dto.py
|
|
158
177
|
generated/models/metadata_search_dto.py
|
|
178
|
+
generated/models/mirror_axis.py
|
|
179
|
+
generated/models/mirror_parameters.py
|
|
159
180
|
generated/models/notification_create_dto.py
|
|
160
181
|
generated/models/notification_delete_all_dto.py
|
|
161
182
|
generated/models/notification_dto.py
|
|
@@ -191,9 +212,10 @@ generated/models/pin_code_reset_dto.py
|
|
|
191
212
|
generated/models/pin_code_setup_dto.py
|
|
192
213
|
generated/models/places_response_dto.py
|
|
193
214
|
generated/models/plugin_action_response_dto.py
|
|
194
|
-
generated/models/
|
|
215
|
+
generated/models/plugin_context_type.py
|
|
195
216
|
generated/models/plugin_filter_response_dto.py
|
|
196
217
|
generated/models/plugin_response_dto.py
|
|
218
|
+
generated/models/plugin_trigger_response_dto.py
|
|
197
219
|
generated/models/plugin_trigger_type.py
|
|
198
220
|
generated/models/purchase_response.py
|
|
199
221
|
generated/models/purchase_update.py
|
|
@@ -215,6 +237,7 @@ generated/models/ratings_update.py
|
|
|
215
237
|
generated/models/reaction_level.py
|
|
216
238
|
generated/models/reaction_type.py
|
|
217
239
|
generated/models/reverse_geocoding_state_response_dto.py
|
|
240
|
+
generated/models/rotate_parameters.py
|
|
218
241
|
generated/models/search_album_response_dto.py
|
|
219
242
|
generated/models/search_asset_response_dto.py
|
|
220
243
|
generated/models/search_explore_item.py
|
|
@@ -254,6 +277,7 @@ generated/models/stack_create_dto.py
|
|
|
254
277
|
generated/models/stack_response_dto.py
|
|
255
278
|
generated/models/stack_update_dto.py
|
|
256
279
|
generated/models/statistics_search_dto.py
|
|
280
|
+
generated/models/storage_folder.py
|
|
257
281
|
generated/models/sync_ack_delete_dto.py
|
|
258
282
|
generated/models/sync_ack_dto.py
|
|
259
283
|
generated/models/sync_ack_set_dto.py
|