{
  "openapi": "3.0.0",
  "paths": {
    "/activities": {
      "get": {
        "description": "Returns a list of activities for the selected asset or album. The activities are returned in sorted order, with the oldest activities appearing first.",
        "operationId": "getActivities",
        "parameters": [
          {
            "name": "albumId",
            "required": true,
            "in": "query",
            "description": "Album ID",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "name": "assetId",
            "required": false,
            "in": "query",
            "description": "Asset ID (if activity is for an asset)",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "name": "level",
            "required": false,
            "in": "query",
            "description": "Filter by activity level",
            "schema": {
              "$ref": "#/components/schemas/ReactionLevel"
            }
          },
          {
            "name": "type",
            "required": false,
            "in": "query",
            "description": "Filter by activity type",
            "schema": {
              "$ref": "#/components/schemas/ReactionType"
            }
          },
          {
            "name": "userId",
            "required": false,
            "in": "query",
            "description": "Filter by user ID",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/ActivityResponseDto"
                  },
                  "type": "array"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "List all activities",
        "tags": [
          "Activities"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "activity.read",
        "x-immich-state": "Stable"
      },
      "post": {
        "description": "Create a like or a comment for an album, or an asset in an album.",
        "operationId": "createActivity",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ActivityCreateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ActivityResponseDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Create an activity",
        "tags": [
          "Activities"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "activity.create",
        "x-immich-state": "Stable"
      }
    },
    "/activities/statistics": {
      "get": {
        "description": "Returns the number of likes and comments for a given album or asset in an album.",
        "operationId": "getActivityStatistics",
        "parameters": [
          {
            "name": "albumId",
            "required": true,
            "in": "query",
            "description": "Album ID",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "name": "assetId",
            "required": false,
            "in": "query",
            "description": "Asset ID (if activity is for an asset)",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ActivityStatisticsResponseDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Retrieve activity statistics",
        "tags": [
          "Activities"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "activity.statistics",
        "x-immich-state": "Stable"
      }
    },
    "/activities/{id}": {
      "delete": {
        "description": "Removes a like or comment from a given album or asset in an album.",
        "operationId": "deleteActivity",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Delete an activity",
        "tags": [
          "Activities"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "activity.delete",
        "x-immich-state": "Stable"
      }
    },
    "/admin/auth/unlink-all": {
      "post": {
        "description": "Unlinks all OAuth accounts associated with user accounts in the system.",
        "operationId": "unlinkAllOAuthAccountsAdmin",
        "parameters": [],
        "responses": {
          "204": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Unlink all OAuth accounts",
        "tags": [
          "Authentication (admin)"
        ],
        "x-immich-admin-only": true,
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "adminAuth.unlinkAll",
        "x-immich-state": "Stable"
      }
    },
    "/admin/database-backups": {
      "delete": {
        "description": "Delete a backup by its filename",
        "operationId": "deleteDatabaseBackup",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DatabaseBackupDeleteDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Delete database backup",
        "tags": [
          "Database Backups (admin)"
        ],
        "x-immich-admin-only": true,
        "x-immich-history": [
          {
            "version": "v2.5.0",
            "state": "Added"
          },
          {
            "version": "v2.5.0",
            "state": "Alpha"
          }
        ],
        "x-immich-permission": "backup.delete",
        "x-immich-state": "Alpha"
      },
      "get": {
        "description": "Get the list of the successful and failed backups",
        "operationId": "listDatabaseBackups",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DatabaseBackupListResponseDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "List database backups",
        "tags": [
          "Database Backups (admin)"
        ],
        "x-immich-admin-only": true,
        "x-immich-history": [
          {
            "version": "v2.5.0",
            "state": "Added"
          },
          {
            "version": "v2.5.0",
            "state": "Alpha"
          }
        ],
        "x-immich-permission": "maintenance",
        "x-immich-state": "Alpha"
      }
    },
    "/admin/database-backups/start-restore": {
      "post": {
        "description": "Put Immich into maintenance mode to restore a backup (Immich must not be configured)",
        "operationId": "startDatabaseRestoreFlow",
        "parameters": [],
        "responses": {
          "201": {
            "description": ""
          }
        },
        "summary": "Start database backup restore flow",
        "tags": [
          "Database Backups (admin)"
        ],
        "x-immich-history": [
          {
            "version": "v2.5.0",
            "state": "Added"
          },
          {
            "version": "v2.5.0",
            "state": "Alpha"
          }
        ],
        "x-immich-state": "Alpha"
      }
    },
    "/admin/database-backups/upload": {
      "post": {
        "description": "Uploads .sql/.sql.gz file to restore backup from",
        "operationId": "uploadDatabaseBackup",
        "parameters": [],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/DatabaseBackupUploadDto"
              }
            }
          },
          "description": "Backup Upload",
          "required": true
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Upload database backup",
        "tags": [
          "Database Backups (admin)"
        ],
        "x-immich-admin-only": true,
        "x-immich-history": [
          {
            "version": "v2.5.0",
            "state": "Added"
          },
          {
            "version": "v2.5.0",
            "state": "Alpha"
          }
        ],
        "x-immich-permission": "backup.upload",
        "x-immich-state": "Alpha"
      }
    },
    "/admin/database-backups/{filename}": {
      "get": {
        "description": "Downloads the database backup file",
        "operationId": "downloadDatabaseBackup",
        "parameters": [
          {
            "name": "filename",
            "required": true,
            "in": "path",
            "schema": {
              "format": "string",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/octet-stream": {
                "schema": {
                  "format": "binary",
                  "type": "string"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Download database backup",
        "tags": [
          "Database Backups (admin)"
        ],
        "x-immich-admin-only": true,
        "x-immich-history": [
          {
            "version": "v2.5.0",
            "state": "Added"
          },
          {
            "version": "v2.5.0",
            "state": "Alpha"
          }
        ],
        "x-immich-permission": "backup.download",
        "x-immich-state": "Alpha"
      }
    },
    "/admin/maintenance": {
      "post": {
        "description": "Put Immich into or take it out of maintenance mode",
        "operationId": "setMaintenanceMode",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SetMaintenanceModeDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Set maintenance mode",
        "tags": [
          "Maintenance (admin)"
        ],
        "x-immich-admin-only": true,
        "x-immich-history": [
          {
            "version": "v2.3.0",
            "state": "Added"
          },
          {
            "version": "v2.3.0",
            "state": "Alpha"
          }
        ],
        "x-immich-permission": "maintenance",
        "x-immich-state": "Alpha"
      }
    },
    "/admin/maintenance/detect-install": {
      "get": {
        "description": "Collect integrity checks and other heuristics about local data.",
        "operationId": "detectPriorInstall",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MaintenanceDetectInstallResponseDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Detect existing install",
        "tags": [
          "Maintenance (admin)"
        ],
        "x-immich-admin-only": true,
        "x-immich-history": [
          {
            "version": "v2.5.0",
            "state": "Added"
          },
          {
            "version": "v2.5.0",
            "state": "Alpha"
          }
        ],
        "x-immich-permission": "maintenance",
        "x-immich-state": "Alpha"
      }
    },
    "/admin/maintenance/login": {
      "post": {
        "description": "Login with maintenance token or cookie to receive current information and perform further actions.",
        "operationId": "maintenanceLogin",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MaintenanceLoginDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MaintenanceAuthDto"
                }
              }
            },
            "description": ""
          }
        },
        "summary": "Log into maintenance mode",
        "tags": [
          "Maintenance (admin)"
        ],
        "x-immich-history": [
          {
            "version": "v2.3.0",
            "state": "Added"
          },
          {
            "version": "v2.3.0",
            "state": "Alpha"
          }
        ],
        "x-immich-state": "Alpha"
      }
    },
    "/admin/maintenance/status": {
      "get": {
        "description": "Fetch information about the currently running maintenance action.",
        "operationId": "getMaintenanceStatus",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MaintenanceStatusResponseDto"
                }
              }
            },
            "description": ""
          }
        },
        "summary": "Get maintenance mode status",
        "tags": [
          "Maintenance (admin)"
        ],
        "x-immich-history": [
          {
            "version": "v2.5.0",
            "state": "Added"
          },
          {
            "version": "v2.5.0",
            "state": "Alpha"
          }
        ],
        "x-immich-state": "Alpha"
      }
    },
    "/admin/notifications": {
      "post": {
        "description": "Create a new notification for a specific user.",
        "operationId": "createNotification",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NotificationCreateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotificationDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Create a notification",
        "tags": [
          "Notifications (admin)"
        ],
        "x-immich-admin-only": true,
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-state": "Stable"
      }
    },
    "/admin/notifications/templates/{name}": {
      "post": {
        "description": "Retrieve a preview of the provided email template.",
        "operationId": "getNotificationTemplateAdmin",
        "parameters": [
          {
            "name": "name",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TemplateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TemplateResponseDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Render email template",
        "tags": [
          "Notifications (admin)"
        ],
        "x-immich-admin-only": true,
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-state": "Stable"
      }
    },
    "/admin/notifications/test-email": {
      "post": {
        "description": "Send a test email using the provided SMTP configuration.",
        "operationId": "sendTestEmailAdmin",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SystemConfigSmtpDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TestEmailResponseDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Send test email",
        "tags": [
          "Notifications (admin)"
        ],
        "x-immich-admin-only": true,
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-state": "Stable"
      }
    },
    "/admin/users": {
      "get": {
        "description": "Search for users.",
        "operationId": "searchUsersAdmin",
        "parameters": [
          {
            "name": "id",
            "required": false,
            "in": "query",
            "description": "User ID filter",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "name": "withDeleted",
            "required": false,
            "in": "query",
            "description": "Include deleted users",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/UserAdminResponseDto"
                  },
                  "type": "array"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Search users",
        "tags": [
          "Users (admin)"
        ],
        "x-immich-admin-only": true,
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "adminUser.read",
        "x-immich-state": "Stable"
      },
      "post": {
        "description": "Create a new user.",
        "operationId": "createUserAdmin",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UserAdminCreateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserAdminResponseDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Create a user",
        "tags": [
          "Users (admin)"
        ],
        "x-immich-admin-only": true,
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "adminUser.create",
        "x-immich-state": "Stable"
      }
    },
    "/admin/users/{id}": {
      "delete": {
        "description": "Delete a user.",
        "operationId": "deleteUserAdmin",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UserAdminDeleteDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserAdminResponseDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Delete a user",
        "tags": [
          "Users (admin)"
        ],
        "x-immich-admin-only": true,
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "adminUser.delete",
        "x-immich-state": "Stable"
      },
      "get": {
        "description": "Retrieve  a specific user by their ID.",
        "operationId": "getUserAdmin",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserAdminResponseDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Retrieve a user",
        "tags": [
          "Users (admin)"
        ],
        "x-immich-admin-only": true,
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "adminUser.read",
        "x-immich-state": "Stable"
      },
      "put": {
        "description": "Update an existing user.",
        "operationId": "updateUserAdmin",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UserAdminUpdateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserAdminResponseDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Update a user",
        "tags": [
          "Users (admin)"
        ],
        "x-immich-admin-only": true,
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "adminUser.update",
        "x-immich-state": "Stable"
      }
    },
    "/admin/users/{id}/preferences": {
      "get": {
        "description": "Retrieve the preferences of a specific user.",
        "operationId": "getUserPreferencesAdmin",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserPreferencesResponseDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Retrieve user preferences",
        "tags": [
          "Users (admin)"
        ],
        "x-immich-admin-only": true,
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "adminUser.read",
        "x-immich-state": "Stable"
      },
      "put": {
        "description": "Update the preferences of a specific user.",
        "operationId": "updateUserPreferencesAdmin",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UserPreferencesUpdateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserPreferencesResponseDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Update user preferences",
        "tags": [
          "Users (admin)"
        ],
        "x-immich-admin-only": true,
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "adminUser.update",
        "x-immich-state": "Stable"
      }
    },
    "/admin/users/{id}/restore": {
      "post": {
        "description": "Restore a previously deleted user.",
        "operationId": "restoreUserAdmin",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserAdminResponseDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Restore a deleted user",
        "tags": [
          "Users (admin)"
        ],
        "x-immich-admin-only": true,
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "adminUser.delete",
        "x-immich-state": "Stable"
      }
    },
    "/admin/users/{id}/sessions": {
      "get": {
        "description": "Retrieve all sessions for a specific user.",
        "operationId": "getUserSessionsAdmin",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/SessionResponseDto"
                  },
                  "type": "array"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Retrieve user sessions",
        "tags": [
          "Users (admin)"
        ],
        "x-immich-admin-only": true,
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "adminSession.read",
        "x-immich-state": "Stable"
      }
    },
    "/admin/users/{id}/statistics": {
      "get": {
        "description": "Retrieve asset statistics for a specific user.",
        "operationId": "getUserStatisticsAdmin",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "name": "isFavorite",
            "required": false,
            "in": "query",
            "description": "Filter by favorite status",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "isTrashed",
            "required": false,
            "in": "query",
            "description": "Filter by trash status",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "visibility",
            "required": false,
            "in": "query",
            "description": "Filter by visibility",
            "schema": {
              "$ref": "#/components/schemas/AssetVisibility"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AssetStatsResponseDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Retrieve user statistics",
        "tags": [
          "Users (admin)"
        ],
        "x-immich-admin-only": true,
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "adminUser.read",
        "x-immich-state": "Stable"
      }
    },
    "/albums": {
      "get": {
        "description": "Retrieve a list of albums available to the authenticated user.",
        "operationId": "getAllAlbums",
        "parameters": [
          {
            "name": "assetId",
            "required": false,
            "in": "query",
            "description": "Filter albums containing this asset ID (ignores shared parameter)",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "name": "shared",
            "required": false,
            "in": "query",
            "description": "Filter by shared status: true = only shared, false = not shared, undefined = all owned albums",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/AlbumResponseDto"
                  },
                  "type": "array"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "List all albums",
        "tags": [
          "Albums"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "album.read",
        "x-immich-state": "Stable"
      },
      "post": {
        "description": "Create a new album. The album can also be created with initial users and assets.",
        "operationId": "createAlbum",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateAlbumDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AlbumResponseDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Create an album",
        "tags": [
          "Albums"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "album.create",
        "x-immich-state": "Stable"
      }
    },
    "/albums/assets": {
      "put": {
        "description": "Send a list of asset IDs and album IDs to add each asset to each album.",
        "operationId": "addAssetsToAlbums",
        "parameters": [
          {
            "name": "key",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "slug",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AlbumsAddAssetsDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AlbumsAddAssetsResponseDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Add assets to albums",
        "tags": [
          "Albums"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "albumAsset.create",
        "x-immich-state": "Stable"
      }
    },
    "/albums/statistics": {
      "get": {
        "description": "Returns statistics about the albums available to the authenticated user.",
        "operationId": "getAlbumStatistics",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AlbumStatisticsResponseDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Retrieve album statistics",
        "tags": [
          "Albums"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "album.statistics",
        "x-immich-state": "Stable"
      }
    },
    "/albums/{id}": {
      "delete": {
        "description": "Delete a specific album by its ID. Note the album is initially trashed and then immediately scheduled for deletion, but relies on a background job to complete the process.",
        "operationId": "deleteAlbum",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Delete an album",
        "tags": [
          "Albums"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "album.delete",
        "x-immich-state": "Stable"
      },
      "get": {
        "description": "Retrieve information about a specific album by its ID.",
        "operationId": "getAlbumInfo",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "name": "key",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "slug",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "withoutAssets",
            "required": false,
            "in": "query",
            "description": "Exclude assets from response",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AlbumResponseDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Retrieve an album",
        "tags": [
          "Albums"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "album.read",
        "x-immich-state": "Stable"
      },
      "patch": {
        "description": "Update the information of a specific album by its ID. This endpoint can be used to update the album name, description, sort order, etc. However, it is not used to add or remove assets or users from the album.",
        "operationId": "updateAlbumInfo",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateAlbumDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AlbumResponseDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Update an album",
        "tags": [
          "Albums"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "album.update",
        "x-immich-state": "Stable"
      }
    },
    "/albums/{id}/assets": {
      "delete": {
        "description": "Remove multiple assets from a specific album by its ID.",
        "operationId": "removeAssetFromAlbum",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BulkIdsDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/BulkIdResponseDto"
                  },
                  "type": "array"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Remove assets from an album",
        "tags": [
          "Albums"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "albumAsset.delete",
        "x-immich-state": "Stable"
      },
      "put": {
        "description": "Add multiple assets to a specific album by its ID.",
        "operationId": "addAssetsToAlbum",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "name": "key",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "slug",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BulkIdsDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/BulkIdResponseDto"
                  },
                  "type": "array"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Add assets to an album",
        "tags": [
          "Albums"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "albumAsset.create",
        "x-immich-state": "Stable"
      }
    },
    "/albums/{id}/user/{userId}": {
      "delete": {
        "description": "Remove a user from an album. Use an ID of \"me\" to leave a shared album.",
        "operationId": "removeUserFromAlbum",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "name": "userId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Remove user from album",
        "tags": [
          "Albums"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "albumUser.delete",
        "x-immich-state": "Stable"
      },
      "put": {
        "description": "Change the role for a specific user in a specific album.",
        "operationId": "updateAlbumUser",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "name": "userId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateAlbumUserDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Update user role",
        "tags": [
          "Albums"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "albumUser.update",
        "x-immich-state": "Stable"
      }
    },
    "/albums/{id}/users": {
      "put": {
        "description": "Share an album with multiple users. Each user can be given a specific role in the album.",
        "operationId": "addUsersToAlbum",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AddUsersDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AlbumResponseDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Share album with users",
        "tags": [
          "Albums"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "albumUser.create",
        "x-immich-state": "Stable"
      }
    },
    "/api-keys": {
      "get": {
        "description": "Retrieve all API keys of the current user.",
        "operationId": "getApiKeys",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/APIKeyResponseDto"
                  },
                  "type": "array"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "List all API keys",
        "tags": [
          "API keys"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "apiKey.read",
        "x-immich-state": "Stable"
      },
      "post": {
        "description": "Creates a new API key. It will be limited to the permissions specified.",
        "operationId": "createApiKey",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/APIKeyCreateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIKeyCreateResponseDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Create an API key",
        "tags": [
          "API keys"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "apiKey.create",
        "x-immich-state": "Stable"
      }
    },
    "/api-keys/me": {
      "get": {
        "description": "Retrieve the API key that is used to access this endpoint.",
        "operationId": "getMyApiKey",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIKeyResponseDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Retrieve the current API key",
        "tags": [
          "API keys"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-state": "Stable"
      }
    },
    "/api-keys/{id}": {
      "delete": {
        "description": "Deletes an API key identified by its ID. The current user must own this API key.",
        "operationId": "deleteApiKey",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Delete an API key",
        "tags": [
          "API keys"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "apiKey.delete",
        "x-immich-state": "Stable"
      },
      "get": {
        "description": "Retrieve an API key by its ID. The current user must own this API key.",
        "operationId": "getApiKey",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIKeyResponseDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Retrieve an API key",
        "tags": [
          "API keys"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "apiKey.read",
        "x-immich-state": "Stable"
      },
      "put": {
        "description": "Updates the name and permissions of an API key by its ID. The current user must own this API key.",
        "operationId": "updateApiKey",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/APIKeyUpdateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIKeyResponseDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Update an API key",
        "tags": [
          "API keys"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "apiKey.update",
        "x-immich-state": "Stable"
      }
    },
    "/assets": {
      "delete": {
        "description": "Deletes multiple assets at the same time.",
        "operationId": "deleteAssets",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AssetBulkDeleteDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Delete assets",
        "tags": [
          "Assets"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "asset.delete",
        "x-immich-state": "Stable"
      },
      "post": {
        "description": "Uploads a new asset to the server.",
        "operationId": "uploadAsset",
        "parameters": [
          {
            "name": "key",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "slug",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "x-immich-checksum",
            "in": "header",
            "description": "sha1 checksum that can be used for duplicate detection before the file is uploaded",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/AssetMediaCreateDto"
              }
            }
          },
          "description": "Asset Upload Information",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AssetMediaResponseDto"
                }
              }
            },
            "description": "Asset is a duplicate"
          },
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AssetMediaResponseDto"
                }
              }
            },
            "description": "Asset uploaded successfully"
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Upload asset",
        "tags": [
          "Assets"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "asset.upload",
        "x-immich-state": "Stable"
      },
      "put": {
        "description": "Updates multiple assets at the same time.",
        "operationId": "updateAssets",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AssetBulkUpdateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Update assets",
        "tags": [
          "Assets"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "asset.update",
        "x-immich-state": "Stable"
      }
    },
    "/assets/bulk-upload-check": {
      "post": {
        "description": "Determine which assets have already been uploaded to the server based on their SHA1 checksums.",
        "operationId": "checkBulkUpload",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AssetBulkUploadCheckDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AssetBulkUploadCheckResponseDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Check bulk upload",
        "tags": [
          "Assets"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "asset.upload",
        "x-immich-state": "Stable"
      }
    },
    "/assets/copy": {
      "put": {
        "description": "Copy asset information like albums, tags, etc. from one asset to another.",
        "operationId": "copyAsset",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AssetCopyDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Copy asset",
        "tags": [
          "Assets"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "asset.copy",
        "x-immich-state": "Stable"
      }
    },
    "/assets/device/{deviceId}": {
      "get": {
        "deprecated": true,
        "description": "Get all asset of a device that are in the database, ID only.",
        "operationId": "getAllUserAssetsByDeviceId",
        "parameters": [
          {
            "name": "deviceId",
            "required": true,
            "in": "path",
            "description": "Device ID",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Retrieve assets by device ID",
        "tags": [
          "Assets",
          "Deprecated"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v2",
            "state": "Deprecated"
          }
        ],
        "x-immich-state": "Deprecated"
      }
    },
    "/assets/exist": {
      "post": {
        "description": "Checks if multiple assets exist on the server and returns all existing - used by background backup",
        "operationId": "checkExistingAssets",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CheckExistingAssetsDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CheckExistingAssetsResponseDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Check existing assets",
        "tags": [
          "Assets"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "asset.upload",
        "x-immich-state": "Stable"
      }
    },
    "/assets/jobs": {
      "post": {
        "description": "Run a specific job on a set of assets.",
        "operationId": "runAssetJobs",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AssetJobsDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Run an asset job",
        "tags": [
          "Assets"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "job.create",
        "x-immich-state": "Stable"
      }
    },
    "/assets/metadata": {
      "delete": {
        "description": "Delete metadata key-value pairs for multiple assets.",
        "operationId": "deleteBulkAssetMetadata",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AssetMetadataBulkDeleteDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Delete asset metadata",
        "tags": [
          "Assets"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v2.5.0",
            "state": "Beta"
          }
        ],
        "x-immich-permission": "asset.update",
        "x-immich-state": "Beta"
      },
      "put": {
        "description": "Upsert metadata key-value pairs for multiple assets.",
        "operationId": "updateBulkAssetMetadata",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AssetMetadataBulkUpsertDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/AssetMetadataBulkResponseDto"
                  },
                  "type": "array"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Upsert asset metadata",
        "tags": [
          "Assets"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v2.5.0",
            "state": "Beta"
          }
        ],
        "x-immich-permission": "asset.update",
        "x-immich-state": "Beta"
      }
    },
    "/assets/random": {
      "get": {
        "deprecated": true,
        "description": "Retrieve a specified number of random assets for the authenticated user.",
        "operationId": "getRandom",
        "parameters": [
          {
            "name": "count",
            "required": false,
            "in": "query",
            "description": "Number of random assets to return",
            "schema": {
              "minimum": 1,
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/AssetResponseDto"
                  },
                  "type": "array"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Get random assets",
        "tags": [
          "Assets",
          "Deprecated"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Deprecated",
            "replacementId": "searchAssets"
          }
        ],
        "x-immich-permission": "asset.read",
        "x-immich-state": "Deprecated"
      }
    },
    "/assets/statistics": {
      "get": {
        "description": "Retrieve various statistics about the assets owned by the authenticated user.",
        "operationId": "getAssetStatistics",
        "parameters": [
          {
            "name": "isFavorite",
            "required": false,
            "in": "query",
            "description": "Filter by favorite status",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "isTrashed",
            "required": false,
            "in": "query",
            "description": "Filter by trash status",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "visibility",
            "required": false,
            "in": "query",
            "description": "Filter by visibility",
            "schema": {
              "$ref": "#/components/schemas/AssetVisibility"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AssetStatsResponseDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Get asset statistics",
        "tags": [
          "Assets"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "asset.statistics",
        "x-immich-state": "Stable"
      }
    },
    "/assets/{id}": {
      "get": {
        "description": "Retrieve detailed information about a specific asset.",
        "operationId": "getAssetInfo",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "name": "key",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "slug",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AssetResponseDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Retrieve an asset",
        "tags": [
          "Assets"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "asset.read",
        "x-immich-state": "Stable"
      },
      "put": {
        "description": "Update information of a specific asset.",
        "operationId": "updateAsset",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateAssetDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AssetResponseDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Update an asset",
        "tags": [
          "Assets"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "asset.update",
        "x-immich-state": "Stable"
      }
    },
    "/assets/{id}/edits": {
      "delete": {
        "description": "Removes all edit actions (crop, rotate, mirror) associated with the specified asset.",
        "operationId": "removeAssetEdits",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Remove edits from an existing asset",
        "tags": [
          "Assets"
        ],
        "x-immich-history": [
          {
            "version": "v2.5.0",
            "state": "Added"
          },
          {
            "version": "v2.5.0",
            "state": "Beta"
          }
        ],
        "x-immich-permission": "asset.edit.delete",
        "x-immich-state": "Beta"
      },
      "get": {
        "description": "Retrieve a series of edit actions (crop, rotate, mirror) associated with the specified asset.",
        "operationId": "getAssetEdits",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AssetEditsDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Retrieve edits for an existing asset",
        "tags": [
          "Assets"
        ],
        "x-immich-history": [
          {
            "version": "v2.5.0",
            "state": "Added"
          },
          {
            "version": "v2.5.0",
            "state": "Beta"
          }
        ],
        "x-immich-permission": "asset.edit.get",
        "x-immich-state": "Beta"
      },
      "put": {
        "description": "Apply a series of edit actions (crop, rotate, mirror) to the specified asset.",
        "operationId": "editAsset",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AssetEditActionListDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AssetEditsDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Apply edits to an existing asset",
        "tags": [
          "Assets"
        ],
        "x-immich-history": [
          {
            "version": "v2.5.0",
            "state": "Added"
          },
          {
            "version": "v2.5.0",
            "state": "Beta"
          }
        ],
        "x-immich-permission": "asset.edit.create",
        "x-immich-state": "Beta"
      }
    },
    "/assets/{id}/metadata": {
      "get": {
        "description": "Retrieve all metadata key-value pairs associated with the specified asset.",
        "operationId": "getAssetMetadata",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/AssetMetadataResponseDto"
                  },
                  "type": "array"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Get asset metadata",
        "tags": [
          "Assets"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "asset.read",
        "x-immich-state": "Stable"
      },
      "put": {
        "description": "Update or add metadata key-value pairs for the specified asset.",
        "operationId": "updateAssetMetadata",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AssetMetadataUpsertDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/AssetMetadataResponseDto"
                  },
                  "type": "array"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Update asset metadata",
        "tags": [
          "Assets"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "asset.update",
        "x-immich-state": "Stable"
      }
    },
    "/assets/{id}/metadata/{key}": {
      "delete": {
        "description": "Delete a specific metadata key-value pair associated with the specified asset.",
        "operationId": "deleteAssetMetadata",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "description": "Asset ID",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "name": "key",
            "required": true,
            "in": "path",
            "description": "Metadata key",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Delete asset metadata by key",
        "tags": [
          "Assets"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "asset.update",
        "x-immich-state": "Stable"
      },
      "get": {
        "description": "Retrieve the value of a specific metadata key associated with the specified asset.",
        "operationId": "getAssetMetadataByKey",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "description": "Asset ID",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "name": "key",
            "required": true,
            "in": "path",
            "description": "Metadata key",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AssetMetadataResponseDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Retrieve asset metadata by key",
        "tags": [
          "Assets"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "asset.read",
        "x-immich-state": "Stable"
      }
    },
    "/assets/{id}/ocr": {
      "get": {
        "description": "Retrieve all OCR (Optical Character Recognition) data associated with the specified asset.",
        "operationId": "getAssetOcr",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/AssetOcrResponseDto"
                  },
                  "type": "array"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Retrieve asset OCR data",
        "tags": [
          "Assets"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "asset.read",
        "x-immich-state": "Stable"
      }
    },
    "/assets/{id}/original": {
      "get": {
        "description": "Downloads the original file of the specified asset.",
        "operationId": "downloadAsset",
        "parameters": [
          {
            "name": "edited",
            "required": false,
            "in": "query",
            "description": "Return edited asset if available",
            "schema": {
              "default": false,
              "type": "boolean"
            }
          },
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "name": "key",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "slug",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/octet-stream": {
                "schema": {
                  "format": "binary",
                  "type": "string"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Download original asset",
        "tags": [
          "Assets"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "asset.download",
        "x-immich-state": "Stable"
      },
      "put": {
        "deprecated": true,
        "description": "Replace the asset with new file, without changing its id.",
        "operationId": "replaceAsset",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "name": "key",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "slug",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/AssetMediaReplaceDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AssetMediaResponseDto"
                }
              }
            },
            "description": "Asset replaced successfully"
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Replace asset",
        "tags": [
          "Assets",
          "Deprecated"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Deprecated",
            "replacementId": "copyAsset"
          }
        ],
        "x-immich-permission": "asset.replace",
        "x-immich-state": "Deprecated"
      }
    },
    "/assets/{id}/thumbnail": {
      "get": {
        "description": "Retrieve the thumbnail image for the specified asset. Viewing the fullsize thumbnail might redirect to downloadAsset, which requires a different permission.",
        "operationId": "viewAsset",
        "parameters": [
          {
            "name": "edited",
            "required": false,
            "in": "query",
            "description": "Return edited asset if available",
            "schema": {
              "default": false,
              "type": "boolean"
            }
          },
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "name": "key",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "size",
            "required": false,
            "in": "query",
            "description": "Asset media size",
            "schema": {
              "$ref": "#/components/schemas/AssetMediaSize"
            }
          },
          {
            "name": "slug",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/octet-stream": {
                "schema": {
                  "format": "binary",
                  "type": "string"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "View asset thumbnail",
        "tags": [
          "Assets"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "asset.view",
        "x-immich-state": "Stable"
      }
    },
    "/assets/{id}/video/playback": {
      "get": {
        "description": "Streams the video file for the specified asset. This endpoint also supports byte range requests.",
        "operationId": "playAssetVideo",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "name": "key",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "slug",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/octet-stream": {
                "schema": {
                  "format": "binary",
                  "type": "string"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Play asset video",
        "tags": [
          "Assets"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "asset.view",
        "x-immich-state": "Stable"
      }
    },
    "/auth/admin-sign-up": {
      "post": {
        "description": "Create the first admin user in the system.",
        "operationId": "signUpAdmin",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SignUpDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserAdminResponseDto"
                }
              }
            },
            "description": ""
          }
        },
        "summary": "Register admin",
        "tags": [
          "Authentication"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-state": "Stable"
      }
    },
    "/auth/change-password": {
      "post": {
        "description": "Change the password of the current user.",
        "operationId": "changePassword",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ChangePasswordDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserAdminResponseDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Change password",
        "tags": [
          "Authentication"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "auth.changePassword",
        "x-immich-state": "Stable"
      }
    },
    "/auth/login": {
      "post": {
        "description": "Login with username and password and receive a session token.",
        "operationId": "login",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LoginCredentialDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LoginResponseDto"
                }
              }
            },
            "description": ""
          }
        },
        "summary": "Login",
        "tags": [
          "Authentication"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-state": "Stable"
      }
    },
    "/auth/logout": {
      "post": {
        "description": "Logout the current user and invalidate the session token.",
        "operationId": "logout",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LogoutResponseDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Logout",
        "tags": [
          "Authentication"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-state": "Stable"
      }
    },
    "/auth/pin-code": {
      "delete": {
        "description": "Reset the pin code for the current user by providing the account password",
        "operationId": "resetPinCode",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PinCodeResetDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Reset pin code",
        "tags": [
          "Authentication"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "pinCode.delete",
        "x-immich-state": "Stable"
      },
      "post": {
        "description": "Setup a new pin code for the current user.",
        "operationId": "setupPinCode",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PinCodeSetupDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Setup pin code",
        "tags": [
          "Authentication"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "pinCode.create",
        "x-immich-state": "Stable"
      },
      "put": {
        "description": "Change the pin code for the current user.",
        "operationId": "changePinCode",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PinCodeChangeDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Change pin code",
        "tags": [
          "Authentication"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "pinCode.update",
        "x-immich-state": "Stable"
      }
    },
    "/auth/session/lock": {
      "post": {
        "description": "Remove elevated access to locked assets from the current session.",
        "operationId": "lockAuthSession",
        "parameters": [],
        "responses": {
          "204": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Lock auth session",
        "tags": [
          "Authentication"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-state": "Stable"
      }
    },
    "/auth/session/unlock": {
      "post": {
        "description": "Temporarily grant the session elevated access to locked assets by providing the correct PIN code.",
        "operationId": "unlockAuthSession",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SessionUnlockDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Unlock auth session",
        "tags": [
          "Authentication"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-state": "Stable"
      }
    },
    "/auth/status": {
      "get": {
        "description": "Get information about the current session, including whether the user has a password, and if the session can access locked assets.",
        "operationId": "getAuthStatus",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthStatusResponseDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Retrieve auth status",
        "tags": [
          "Authentication"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-state": "Stable"
      }
    },
    "/auth/validateToken": {
      "post": {
        "description": "Validate the current authorization method is still valid.",
        "operationId": "validateAccessToken",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidateAccessTokenResponseDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Validate access token",
        "tags": [
          "Authentication"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-state": "Stable"
      }
    },
    "/download/archive": {
      "post": {
        "description": "Download a ZIP archive containing the specified assets. The assets must have been previously requested via the \"getDownloadInfo\" endpoint.",
        "operationId": "downloadArchive",
        "parameters": [
          {
            "name": "key",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "slug",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AssetIdsDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/octet-stream": {
                "schema": {
                  "format": "binary",
                  "type": "string"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Download asset archive",
        "tags": [
          "Download"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "asset.download",
        "x-immich-state": "Stable"
      }
    },
    "/download/info": {
      "post": {
        "description": "Retrieve information about how to request a download for the specified assets or album. The response includes groups of assets that can be downloaded together.",
        "operationId": "getDownloadInfo",
        "parameters": [
          {
            "name": "key",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "slug",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DownloadInfoDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DownloadResponseDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Retrieve download information",
        "tags": [
          "Download"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "asset.download",
        "x-immich-state": "Stable"
      }
    },
    "/duplicates": {
      "delete": {
        "description": "Delete multiple duplicate assets specified by their IDs.",
        "operationId": "deleteDuplicates",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BulkIdsDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Delete duplicates",
        "tags": [
          "Duplicates"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "duplicate.delete",
        "x-immich-state": "Stable"
      },
      "get": {
        "description": "Retrieve a list of duplicate assets available to the authenticated user.",
        "operationId": "getAssetDuplicates",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/DuplicateResponseDto"
                  },
                  "type": "array"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Retrieve duplicates",
        "tags": [
          "Duplicates"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "duplicate.read",
        "x-immich-state": "Stable"
      }
    },
    "/duplicates/{id}": {
      "delete": {
        "description": "Delete a single duplicate asset specified by its ID.",
        "operationId": "deleteDuplicate",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Delete a duplicate",
        "tags": [
          "Duplicates"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "duplicate.delete",
        "x-immich-state": "Stable"
      }
    },
    "/faces": {
      "get": {
        "description": "Retrieve all faces belonging to an asset.",
        "operationId": "getFaces",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "query",
            "description": "Face ID",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/AssetFaceResponseDto"
                  },
                  "type": "array"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Retrieve faces for asset",
        "tags": [
          "Faces"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "face.read",
        "x-immich-state": "Stable"
      },
      "post": {
        "description": "Create a new face that has not been discovered by facial recognition. The content of the bounding box is considered a face.",
        "operationId": "createFace",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AssetFaceCreateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Create a face",
        "tags": [
          "Faces"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "face.create",
        "x-immich-state": "Stable"
      }
    },
    "/faces/{id}": {
      "delete": {
        "description": "Delete a face identified by the id. Optionally can be force deleted.",
        "operationId": "deleteFace",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AssetFaceDeleteDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Delete a face",
        "tags": [
          "Faces"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "face.delete",
        "x-immich-state": "Stable"
      },
      "put": {
        "description": "Re-assign the face provided in the body to the person identified by the id in the path parameter.",
        "operationId": "reassignFacesById",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FaceDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PersonResponseDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Re-assign a face to another person",
        "tags": [
          "Faces"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "face.update",
        "x-immich-state": "Stable"
      }
    },
    "/jobs": {
      "get": {
        "deprecated": true,
        "description": "Retrieve the counts of the current queue, as well as the current status.",
        "operationId": "getQueuesLegacy",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QueuesResponseLegacyDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Retrieve queue counts and status",
        "tags": [
          "Jobs",
          "Deprecated"
        ],
        "x-immich-admin-only": true,
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          },
          {
            "version": "v2.4.0",
            "state": "Deprecated"
          }
        ],
        "x-immich-permission": "job.read",
        "x-immich-state": "Deprecated"
      },
      "post": {
        "description": "Run a specific job. Most jobs are queued automatically, but this endpoint allows for manual creation of a handful of jobs, including various cleanup tasks, as well as creating a new database backup.",
        "operationId": "createJob",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JobCreateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Create a manual job",
        "tags": [
          "Jobs"
        ],
        "x-immich-admin-only": true,
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "job.create",
        "x-immich-state": "Stable"
      }
    },
    "/jobs/{name}": {
      "put": {
        "deprecated": true,
        "description": "Queue all assets for a specific job type. Defaults to only queueing assets that have not yet been processed, but the force command can be used to re-process all assets.",
        "operationId": "runQueueCommandLegacy",
        "parameters": [
          {
            "name": "name",
            "required": true,
            "in": "path",
            "description": "Queue name",
            "schema": {
              "$ref": "#/components/schemas/QueueName"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/QueueCommandDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QueueResponseLegacyDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Run jobs",
        "tags": [
          "Jobs",
          "Deprecated"
        ],
        "x-immich-admin-only": true,
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          },
          {
            "version": "v2.4.0",
            "state": "Deprecated"
          }
        ],
        "x-immich-permission": "job.create",
        "x-immich-state": "Deprecated"
      }
    },
    "/libraries": {
      "get": {
        "description": "Retrieve a list of external libraries.",
        "operationId": "getAllLibraries",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/LibraryResponseDto"
                  },
                  "type": "array"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Retrieve libraries",
        "tags": [
          "Libraries"
        ],
        "x-immich-admin-only": true,
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "library.read",
        "x-immich-state": "Stable"
      },
      "post": {
        "description": "Create a new external library.",
        "operationId": "createLibrary",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateLibraryDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LibraryResponseDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Create a library",
        "tags": [
          "Libraries"
        ],
        "x-immich-admin-only": true,
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "library.create",
        "x-immich-state": "Stable"
      }
    },
    "/libraries/{id}": {
      "delete": {
        "description": "Delete an external library by its ID.",
        "operationId": "deleteLibrary",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Delete a library",
        "tags": [
          "Libraries"
        ],
        "x-immich-admin-only": true,
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "library.delete",
        "x-immich-state": "Stable"
      },
      "get": {
        "description": "Retrieve an external library by its ID.",
        "operationId": "getLibrary",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LibraryResponseDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Retrieve a library",
        "tags": [
          "Libraries"
        ],
        "x-immich-admin-only": true,
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "library.read",
        "x-immich-state": "Stable"
      },
      "put": {
        "description": "Update an existing external library.",
        "operationId": "updateLibrary",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateLibraryDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LibraryResponseDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Update a library",
        "tags": [
          "Libraries"
        ],
        "x-immich-admin-only": true,
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "library.update",
        "x-immich-state": "Stable"
      }
    },
    "/libraries/{id}/scan": {
      "post": {
        "description": "Queue a scan for the external library to find and import new assets.",
        "operationId": "scanLibrary",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Scan a library",
        "tags": [
          "Libraries"
        ],
        "x-immich-admin-only": true,
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "library.update",
        "x-immich-state": "Stable"
      }
    },
    "/libraries/{id}/statistics": {
      "get": {
        "description": "Retrieve statistics for a specific external library, including number of videos, images, and storage usage.",
        "operationId": "getLibraryStatistics",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LibraryStatsResponseDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Retrieve library statistics",
        "tags": [
          "Libraries"
        ],
        "x-immich-admin-only": true,
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "library.statistics",
        "x-immich-state": "Stable"
      }
    },
    "/libraries/{id}/validate": {
      "post": {
        "description": "Validate the settings of an external library.",
        "operationId": "validate",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ValidateLibraryDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidateLibraryResponseDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Validate library settings",
        "tags": [
          "Libraries"
        ],
        "x-immich-admin-only": true,
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-state": "Stable"
      }
    },
    "/map/markers": {
      "get": {
        "description": "Retrieve a list of latitude and longitude coordinates for every asset with location data.",
        "operationId": "getMapMarkers",
        "parameters": [
          {
            "name": "fileCreatedAfter",
            "required": false,
            "in": "query",
            "description": "Filter assets created after this date",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "name": "fileCreatedBefore",
            "required": false,
            "in": "query",
            "description": "Filter assets created before this date",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "name": "isArchived",
            "required": false,
            "in": "query",
            "description": "Filter by archived status",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "isFavorite",
            "required": false,
            "in": "query",
            "description": "Filter by favorite status",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "withPartners",
            "required": false,
            "in": "query",
            "description": "Include partner assets",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "withSharedAlbums",
            "required": false,
            "in": "query",
            "description": "Include shared album assets",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/MapMarkerResponseDto"
                  },
                  "type": "array"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Retrieve map markers",
        "tags": [
          "Map"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "map.read",
        "x-immich-state": "Stable"
      }
    },
    "/map/reverse-geocode": {
      "get": {
        "description": "Retrieve location information (e.g., city, country) for given latitude and longitude coordinates.",
        "operationId": "reverseGeocode",
        "parameters": [
          {
            "name": "lat",
            "required": true,
            "in": "query",
            "description": "Latitude (-90 to 90)",
            "schema": {
              "format": "double",
              "type": "number"
            }
          },
          {
            "name": "lon",
            "required": true,
            "in": "query",
            "description": "Longitude (-180 to 180)",
            "schema": {
              "format": "double",
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/MapReverseGeocodeResponseDto"
                  },
                  "type": "array"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Reverse geocode coordinates",
        "tags": [
          "Map"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "map.search",
        "x-immich-state": "Stable"
      }
    },
    "/memories": {
      "get": {
        "description": "Retrieve a list of memories. Memories are sorted descending by creation date by default, although they can also be sorted in ascending order, or randomly.",
        "operationId": "searchMemories",
        "parameters": [
          {
            "name": "for",
            "required": false,
            "in": "query",
            "description": "Filter by date",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "name": "isSaved",
            "required": false,
            "in": "query",
            "description": "Filter by saved status",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "isTrashed",
            "required": false,
            "in": "query",
            "description": "Include trashed memories",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "order",
            "required": false,
            "in": "query",
            "description": "Sort order",
            "schema": {
              "$ref": "#/components/schemas/MemorySearchOrder"
            }
          },
          {
            "name": "size",
            "required": false,
            "in": "query",
            "description": "Number of memories to return",
            "schema": {
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "name": "type",
            "required": false,
            "in": "query",
            "description": "Memory type",
            "schema": {
              "$ref": "#/components/schemas/MemoryType"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/MemoryResponseDto"
                  },
                  "type": "array"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Retrieve memories",
        "tags": [
          "Memories"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "memory.read",
        "x-immich-state": "Stable"
      },
      "post": {
        "description": "Create a new memory by providing a name, description, and a list of asset IDs to include in the memory.",
        "operationId": "createMemory",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MemoryCreateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MemoryResponseDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Create a memory",
        "tags": [
          "Memories"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "memory.create",
        "x-immich-state": "Stable"
      }
    },
    "/memories/statistics": {
      "get": {
        "description": "Retrieve statistics about memories, such as total count and other relevant metrics.",
        "operationId": "memoriesStatistics",
        "parameters": [
          {
            "name": "for",
            "required": false,
            "in": "query",
            "description": "Filter by date",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "name": "isSaved",
            "required": false,
            "in": "query",
            "description": "Filter by saved status",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "isTrashed",
            "required": false,
            "in": "query",
            "description": "Include trashed memories",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "order",
            "required": false,
            "in": "query",
            "description": "Sort order",
            "schema": {
              "$ref": "#/components/schemas/MemorySearchOrder"
            }
          },
          {
            "name": "size",
            "required": false,
            "in": "query",
            "description": "Number of memories to return",
            "schema": {
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "name": "type",
            "required": false,
            "in": "query",
            "description": "Memory type",
            "schema": {
              "$ref": "#/components/schemas/MemoryType"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MemoryStatisticsResponseDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Retrieve memories statistics",
        "tags": [
          "Memories"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "memory.statistics",
        "x-immich-state": "Stable"
      }
    },
    "/memories/{id}": {
      "delete": {
        "description": "Delete a specific memory by its ID.",
        "operationId": "deleteMemory",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Delete a memory",
        "tags": [
          "Memories"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "memory.delete",
        "x-immich-state": "Stable"
      },
      "get": {
        "description": "Retrieve a specific memory by its ID.",
        "operationId": "getMemory",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MemoryResponseDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Retrieve a memory",
        "tags": [
          "Memories"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "memory.read",
        "x-immich-state": "Stable"
      },
      "put": {
        "description": "Update an existing memory by its ID.",
        "operationId": "updateMemory",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MemoryUpdateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MemoryResponseDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Update a memory",
        "tags": [
          "Memories"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "memory.update",
        "x-immich-state": "Stable"
      }
    },
    "/memories/{id}/assets": {
      "delete": {
        "description": "Remove a list of asset IDs from a specific memory.",
        "operationId": "removeMemoryAssets",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BulkIdsDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/BulkIdResponseDto"
                  },
                  "type": "array"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Remove assets from a memory",
        "tags": [
          "Memories"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "memoryAsset.delete",
        "x-immich-state": "Stable"
      },
      "put": {
        "description": "Add a list of asset IDs to a specific memory.",
        "operationId": "addMemoryAssets",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BulkIdsDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/BulkIdResponseDto"
                  },
                  "type": "array"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Add assets to a memory",
        "tags": [
          "Memories"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "memoryAsset.create",
        "x-immich-state": "Stable"
      }
    },
    "/notifications": {
      "delete": {
        "description": "Delete a list of notifications at once.",
        "operationId": "deleteNotifications",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NotificationDeleteAllDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Delete notifications",
        "tags": [
          "Notifications"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "notification.delete",
        "x-immich-state": "Stable"
      },
      "get": {
        "description": "Retrieve a list of notifications.",
        "operationId": "getNotifications",
        "parameters": [
          {
            "name": "id",
            "required": false,
            "in": "query",
            "description": "Filter by notification ID",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "name": "level",
            "required": false,
            "in": "query",
            "description": "Filter by notification level",
            "schema": {
              "$ref": "#/components/schemas/NotificationLevel"
            }
          },
          {
            "name": "type",
            "required": false,
            "in": "query",
            "description": "Filter by notification type",
            "schema": {
              "$ref": "#/components/schemas/NotificationType"
            }
          },
          {
            "name": "unread",
            "required": false,
            "in": "query",
            "description": "Filter by unread status",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/NotificationDto"
                  },
                  "type": "array"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Retrieve notifications",
        "tags": [
          "Notifications"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "notification.read",
        "x-immich-state": "Stable"
      },
      "put": {
        "description": "Update a list of notifications. Allows to bulk-set the read status of notifications.",
        "operationId": "updateNotifications",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NotificationUpdateAllDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Update notifications",
        "tags": [
          "Notifications"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "notification.update",
        "x-immich-state": "Stable"
      }
    },
    "/notifications/{id}": {
      "delete": {
        "description": "Delete a specific notification.",
        "operationId": "deleteNotification",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Delete a notification",
        "tags": [
          "Notifications"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "notification.delete",
        "x-immich-state": "Stable"
      },
      "get": {
        "description": "Retrieve a specific notification identified by id.",
        "operationId": "getNotification",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotificationDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Get a notification",
        "tags": [
          "Notifications"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "notification.read",
        "x-immich-state": "Stable"
      },
      "put": {
        "description": "Update a specific notification to set its read status.",
        "operationId": "updateNotification",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NotificationUpdateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotificationDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Update a notification",
        "tags": [
          "Notifications"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "notification.update",
        "x-immich-state": "Stable"
      }
    },
    "/oauth/authorize": {
      "post": {
        "description": "Initiate the OAuth authorization process.",
        "operationId": "startOAuth",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OAuthConfigDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OAuthAuthorizeResponseDto"
                }
              }
            },
            "description": ""
          }
        },
        "summary": "Start OAuth",
        "tags": [
          "Authentication"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-state": "Stable"
      }
    },
    "/oauth/callback": {
      "post": {
        "description": "Complete the OAuth authorization process by exchanging the authorization code for a session token.",
        "operationId": "finishOAuth",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OAuthCallbackDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LoginResponseDto"
                }
              }
            },
            "description": ""
          }
        },
        "summary": "Finish OAuth",
        "tags": [
          "Authentication"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-state": "Stable"
      }
    },
    "/oauth/link": {
      "post": {
        "description": "Link an OAuth account to the authenticated user.",
        "operationId": "linkOAuthAccount",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OAuthCallbackDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserAdminResponseDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Link OAuth account",
        "tags": [
          "Authentication"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-state": "Stable"
      }
    },
    "/oauth/mobile-redirect": {
      "get": {
        "description": "Requests to this URL are automatically forwarded to the mobile app, and is used in some cases for OAuth redirecting.",
        "operationId": "redirectOAuthToMobile",
        "parameters": [],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "summary": "Redirect OAuth to mobile",
        "tags": [
          "Authentication"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-state": "Stable"
      }
    },
    "/oauth/unlink": {
      "post": {
        "description": "Unlink the OAuth account from the authenticated user.",
        "operationId": "unlinkOAuthAccount",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserAdminResponseDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Unlink OAuth account",
        "tags": [
          "Authentication"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-state": "Stable"
      }
    },
    "/partners": {
      "get": {
        "description": "Retrieve a list of partners with whom assets are shared.",
        "operationId": "getPartners",
        "parameters": [
          {
            "name": "direction",
            "required": true,
            "in": "query",
            "description": "Partner direction",
            "schema": {
              "$ref": "#/components/schemas/PartnerDirection"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/PartnerResponseDto"
                  },
                  "type": "array"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Retrieve partners",
        "tags": [
          "Partners"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "partner.read",
        "x-immich-state": "Stable"
      },
      "post": {
        "description": "Create a new partner to share assets with.",
        "operationId": "createPartner",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PartnerCreateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PartnerResponseDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Create a partner",
        "tags": [
          "Partners"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "partner.create",
        "x-immich-state": "Stable"
      }
    },
    "/partners/{id}": {
      "delete": {
        "description": "Stop sharing assets with a partner.",
        "operationId": "removePartner",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Remove a partner",
        "tags": [
          "Partners"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "partner.delete",
        "x-immich-state": "Stable"
      },
      "post": {
        "deprecated": true,
        "description": "Create a new partner to share assets with.",
        "operationId": "createPartnerDeprecated",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PartnerResponseDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Create a partner",
        "tags": [
          "Partners",
          "Deprecated"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Deprecated",
            "replacementId": "createPartner"
          }
        ],
        "x-immich-permission": "partner.create",
        "x-immich-state": "Deprecated"
      },
      "put": {
        "description": "Specify whether a partner's assets should appear in the user's timeline.",
        "operationId": "updatePartner",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PartnerUpdateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PartnerResponseDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Update a partner",
        "tags": [
          "Partners"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "partner.update",
        "x-immich-state": "Stable"
      }
    },
    "/people": {
      "delete": {
        "description": "Bulk delete a list of people at once.",
        "operationId": "deletePeople",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BulkIdsDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Delete people",
        "tags": [
          "People"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "person.delete",
        "x-immich-state": "Stable"
      },
      "get": {
        "description": "Retrieve a list of all people.",
        "operationId": "getAllPeople",
        "parameters": [
          {
            "name": "closestAssetId",
            "required": false,
            "in": "query",
            "description": "Closest asset ID for similarity search",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "name": "closestPersonId",
            "required": false,
            "in": "query",
            "description": "Closest person ID for similarity search",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "name": "page",
            "required": false,
            "in": "query",
            "description": "Page number for pagination",
            "schema": {
              "minimum": 1,
              "default": 1,
              "type": "number"
            }
          },
          {
            "name": "size",
            "required": false,
            "in": "query",
            "description": "Number of items per page",
            "schema": {
              "minimum": 1,
              "maximum": 1000,
              "default": 500,
              "type": "number"
            }
          },
          {
            "name": "withHidden",
            "required": false,
            "in": "query",
            "description": "Include hidden people",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PeopleResponseDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Get all people",
        "tags": [
          "People"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "person.read",
        "x-immich-state": "Stable"
      },
      "post": {
        "description": "Create a new person that can have multiple faces assigned to them.",
        "operationId": "createPerson",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PersonCreateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PersonResponseDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Create a person",
        "tags": [
          "People"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "person.create",
        "x-immich-state": "Stable"
      },
      "put": {
        "description": "Bulk update multiple people at once.",
        "operationId": "updatePeople",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PeopleUpdateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/BulkIdResponseDto"
                  },
                  "type": "array"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Update people",
        "tags": [
          "People"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "person.update",
        "x-immich-state": "Stable"
      }
    },
    "/people/{id}": {
      "delete": {
        "description": "Delete an individual person.",
        "operationId": "deletePerson",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Delete person",
        "tags": [
          "People"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "person.delete",
        "x-immich-state": "Stable"
      },
      "get": {
        "description": "Retrieve a person by id.",
        "operationId": "getPerson",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PersonResponseDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Get a person",
        "tags": [
          "People"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "person.read",
        "x-immich-state": "Stable"
      },
      "put": {
        "description": "Update an individual person.",
        "operationId": "updatePerson",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PersonUpdateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PersonResponseDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Update person",
        "tags": [
          "People"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "person.update",
        "x-immich-state": "Stable"
      }
    },
    "/people/{id}/merge": {
      "post": {
        "description": "Merge a list of people into the person specified in the path parameter.",
        "operationId": "mergePerson",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MergePersonDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/BulkIdResponseDto"
                  },
                  "type": "array"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Merge people",
        "tags": [
          "People"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "person.merge",
        "x-immich-state": "Stable"
      }
    },
    "/people/{id}/reassign": {
      "put": {
        "description": "Bulk reassign a list of faces to a different person.",
        "operationId": "reassignFaces",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AssetFaceUpdateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/PersonResponseDto"
                  },
                  "type": "array"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Reassign faces",
        "tags": [
          "People"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "person.reassign",
        "x-immich-state": "Stable"
      }
    },
    "/people/{id}/statistics": {
      "get": {
        "description": "Retrieve statistics about a specific person.",
        "operationId": "getPersonStatistics",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PersonStatisticsResponseDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Get person statistics",
        "tags": [
          "People"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "person.statistics",
        "x-immich-state": "Stable"
      }
    },
    "/people/{id}/thumbnail": {
      "get": {
        "description": "Retrieve the thumbnail file for a person.",
        "operationId": "getPersonThumbnail",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/octet-stream": {
                "schema": {
                  "format": "binary",
                  "type": "string"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Get person thumbnail",
        "tags": [
          "People"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "person.read",
        "x-immich-state": "Stable"
      }
    },
    "/plugins": {
      "get": {
        "description": "Retrieve a list of plugins available to the authenticated user.",
        "operationId": "getPlugins",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/PluginResponseDto"
                  },
                  "type": "array"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "List all plugins",
        "tags": [
          "Plugins"
        ],
        "x-immich-history": [
          {
            "version": "v2.3.0",
            "state": "Added"
          },
          {
            "version": "v2.3.0",
            "state": "Alpha"
          }
        ],
        "x-immich-permission": "plugin.read",
        "x-immich-state": "Alpha"
      }
    },
    "/plugins/triggers": {
      "get": {
        "description": "Retrieve a list of all available plugin triggers.",
        "operationId": "getPluginTriggers",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/PluginTriggerResponseDto"
                  },
                  "type": "array"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "List all plugin triggers",
        "tags": [
          "Plugins"
        ],
        "x-immich-history": [
          {
            "version": "v2.3.0",
            "state": "Added"
          },
          {
            "version": "v2.3.0",
            "state": "Alpha"
          }
        ],
        "x-immich-permission": "plugin.read",
        "x-immich-state": "Alpha"
      }
    },
    "/plugins/{id}": {
      "get": {
        "description": "Retrieve information about a specific plugin by its ID.",
        "operationId": "getPlugin",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PluginResponseDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Retrieve a plugin",
        "tags": [
          "Plugins"
        ],
        "x-immich-history": [
          {
            "version": "v2.3.0",
            "state": "Added"
          },
          {
            "version": "v2.3.0",
            "state": "Alpha"
          }
        ],
        "x-immich-permission": "plugin.read",
        "x-immich-state": "Alpha"
      }
    },
    "/queues": {
      "get": {
        "description": "Retrieves a list of queues.",
        "operationId": "getQueues",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/QueueResponseDto"
                  },
                  "type": "array"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "List all queues",
        "tags": [
          "Queues"
        ],
        "x-immich-admin-only": true,
        "x-immich-history": [
          {
            "version": "v2.4.0",
            "state": "Added"
          },
          {
            "version": "v2.4.0",
            "state": "Alpha"
          }
        ],
        "x-immich-permission": "queue.read",
        "x-immich-state": "Alpha"
      }
    },
    "/queues/{name}": {
      "get": {
        "description": "Retrieves a specific queue by its name.",
        "operationId": "getQueue",
        "parameters": [
          {
            "name": "name",
            "required": true,
            "in": "path",
            "description": "Queue name",
            "schema": {
              "$ref": "#/components/schemas/QueueName"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QueueResponseDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Retrieve a queue",
        "tags": [
          "Queues"
        ],
        "x-immich-admin-only": true,
        "x-immich-history": [
          {
            "version": "v2.4.0",
            "state": "Added"
          },
          {
            "version": "v2.4.0",
            "state": "Alpha"
          }
        ],
        "x-immich-permission": "queue.read",
        "x-immich-state": "Alpha"
      },
      "put": {
        "description": "Change the paused status of a specific queue.",
        "operationId": "updateQueue",
        "parameters": [
          {
            "name": "name",
            "required": true,
            "in": "path",
            "description": "Queue name",
            "schema": {
              "$ref": "#/components/schemas/QueueName"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/QueueUpdateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QueueResponseDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Update a queue",
        "tags": [
          "Queues"
        ],
        "x-immich-admin-only": true,
        "x-immich-history": [
          {
            "version": "v2.4.0",
            "state": "Added"
          },
          {
            "version": "v2.4.0",
            "state": "Alpha"
          }
        ],
        "x-immich-permission": "queue.update",
        "x-immich-state": "Alpha"
      }
    },
    "/queues/{name}/jobs": {
      "delete": {
        "description": "Removes all jobs from the specified queue.",
        "operationId": "emptyQueue",
        "parameters": [
          {
            "name": "name",
            "required": true,
            "in": "path",
            "description": "Queue name",
            "schema": {
              "$ref": "#/components/schemas/QueueName"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/QueueDeleteDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Empty a queue",
        "tags": [
          "Queues"
        ],
        "x-immich-admin-only": true,
        "x-immich-history": [
          {
            "version": "v2.4.0",
            "state": "Added"
          },
          {
            "version": "v2.4.0",
            "state": "Alpha"
          }
        ],
        "x-immich-permission": "queueJob.delete",
        "x-immich-state": "Alpha"
      },
      "get": {
        "description": "Retrieves a list of queue jobs from the specified queue.",
        "operationId": "getQueueJobs",
        "parameters": [
          {
            "name": "name",
            "required": true,
            "in": "path",
            "description": "Queue name",
            "schema": {
              "$ref": "#/components/schemas/QueueName"
            }
          },
          {
            "name": "status",
            "required": false,
            "in": "query",
            "description": "Filter jobs by status",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/QueueJobStatus"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/QueueJobResponseDto"
                  },
                  "type": "array"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Retrieve queue jobs",
        "tags": [
          "Queues"
        ],
        "x-immich-admin-only": true,
        "x-immich-history": [
          {
            "version": "v2.4.0",
            "state": "Added"
          },
          {
            "version": "v2.4.0",
            "state": "Alpha"
          }
        ],
        "x-immich-permission": "queueJob.read",
        "x-immich-state": "Alpha"
      }
    },
    "/search/cities": {
      "get": {
        "description": "Retrieve a list of assets with each asset belonging to a different city. This endpoint is used on the places pages to show a single thumbnail for each city the user has assets in.",
        "operationId": "getAssetsByCity",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/AssetResponseDto"
                  },
                  "type": "array"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Retrieve assets by city",
        "tags": [
          "Search"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "asset.read",
        "x-immich-state": "Stable"
      }
    },
    "/search/explore": {
      "get": {
        "description": "Retrieve data for the explore section, such as popular people and places.",
        "operationId": "getExploreData",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/SearchExploreResponseDto"
                  },
                  "type": "array"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Retrieve explore data",
        "tags": [
          "Search"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "asset.read",
        "x-immich-state": "Stable"
      }
    },
    "/search/large-assets": {
      "post": {
        "description": "Search for assets that are considered large based on specified criteria.",
        "operationId": "searchLargeAssets",
        "parameters": [
          {
            "name": "albumIds",
            "required": false,
            "in": "query",
            "description": "Filter by album IDs",
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "format": "uuid"
              }
            }
          },
          {
            "name": "city",
            "required": false,
            "in": "query",
            "description": "Filter by city name",
            "schema": {
              "nullable": true,
              "type": "string"
            }
          },
          {
            "name": "country",
            "required": false,
            "in": "query",
            "description": "Filter by country name",
            "schema": {
              "nullable": true,
              "type": "string"
            }
          },
          {
            "name": "createdAfter",
            "required": false,
            "in": "query",
            "description": "Filter by creation date (after)",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "name": "createdBefore",
            "required": false,
            "in": "query",
            "description": "Filter by creation date (before)",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "name": "deviceId",
            "required": false,
            "in": "query",
            "description": "Device ID to filter by",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "isEncoded",
            "required": false,
            "in": "query",
            "description": "Filter by encoded status",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "isFavorite",
            "required": false,
            "in": "query",
            "description": "Filter by favorite status",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "isMotion",
            "required": false,
            "in": "query",
            "description": "Filter by motion photo status",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "isNotInAlbum",
            "required": false,
            "in": "query",
            "description": "Filter assets not in any album",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "isOffline",
            "required": false,
            "in": "query",
            "description": "Filter by offline status",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "lensModel",
            "required": false,
            "in": "query",
            "description": "Filter by lens model",
            "schema": {
              "nullable": true,
              "type": "string"
            }
          },
          {
            "name": "libraryId",
            "required": false,
            "in": "query",
            "description": "Library ID to filter by",
            "schema": {
              "format": "uuid",
              "nullable": true,
              "type": "string"
            }
          },
          {
            "name": "make",
            "required": false,
            "in": "query",
            "description": "Filter by camera make",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "minFileSize",
            "required": false,
            "in": "query",
            "description": "Minimum file size in bytes",
            "schema": {
              "minimum": 0,
              "type": "integer"
            }
          },
          {
            "name": "model",
            "required": false,
            "in": "query",
            "description": "Filter by camera model",
            "schema": {
              "nullable": true,
              "type": "string"
            }
          },
          {
            "name": "ocr",
            "required": false,
            "in": "query",
            "description": "Filter by OCR text content",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "personIds",
            "required": false,
            "in": "query",
            "description": "Filter by person IDs",
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "format": "uuid"
              }
            }
          },
          {
            "name": "rating",
            "required": false,
            "in": "query",
            "description": "Filter by rating",
            "schema": {
              "minimum": -1,
              "maximum": 5,
              "type": "number"
            }
          },
          {
            "name": "size",
            "required": false,
            "in": "query",
            "description": "Number of results to return",
            "schema": {
              "minimum": 1,
              "maximum": 1000,
              "type": "number"
            }
          },
          {
            "name": "state",
            "required": false,
            "in": "query",
            "description": "Filter by state/province name",
            "schema": {
              "nullable": true,
              "type": "string"
            }
          },
          {
            "name": "tagIds",
            "required": false,
            "in": "query",
            "description": "Filter by tag IDs",
            "schema": {
              "nullable": true,
              "type": "array",
              "items": {
                "type": "string",
                "format": "uuid"
              }
            }
          },
          {
            "name": "takenAfter",
            "required": false,
            "in": "query",
            "description": "Filter by taken date (after)",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "name": "takenBefore",
            "required": false,
            "in": "query",
            "description": "Filter by taken date (before)",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "name": "trashedAfter",
            "required": false,
            "in": "query",
            "description": "Filter by trash date (after)",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "name": "trashedBefore",
            "required": false,
            "in": "query",
            "description": "Filter by trash date (before)",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "name": "type",
            "required": false,
            "in": "query",
            "description": "Asset type filter",
            "schema": {
              "$ref": "#/components/schemas/AssetTypeEnum"
            }
          },
          {
            "name": "updatedAfter",
            "required": false,
            "in": "query",
            "description": "Filter by update date (after)",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "name": "updatedBefore",
            "required": false,
            "in": "query",
            "description": "Filter by update date (before)",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "name": "visibility",
            "required": false,
            "in": "query",
            "description": "Filter by visibility",
            "schema": {
              "$ref": "#/components/schemas/AssetVisibility"
            }
          },
          {
            "name": "withDeleted",
            "required": false,
            "in": "query",
            "description": "Include deleted assets",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "withExif",
            "required": false,
            "in": "query",
            "description": "Include EXIF data in response",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/AssetResponseDto"
                  },
                  "type": "array"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Search large assets",
        "tags": [
          "Search"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "asset.read",
        "x-immich-state": "Stable"
      }
    },
    "/search/metadata": {
      "post": {
        "description": "Search for assets based on various metadata criteria.",
        "operationId": "searchAssets",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MetadataSearchDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchResponseDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Search assets by metadata",
        "tags": [
          "Search"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "asset.read",
        "x-immich-state": "Stable"
      }
    },
    "/search/person": {
      "get": {
        "description": "Search for people by name.",
        "operationId": "searchPerson",
        "parameters": [
          {
            "name": "name",
            "required": true,
            "in": "query",
            "description": "Person name to search for",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "withHidden",
            "required": false,
            "in": "query",
            "description": "Include hidden people",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/PersonResponseDto"
                  },
                  "type": "array"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Search people",
        "tags": [
          "Search"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "person.read",
        "x-immich-state": "Stable"
      }
    },
    "/search/places": {
      "get": {
        "description": "Search for places by name.",
        "operationId": "searchPlaces",
        "parameters": [
          {
            "name": "name",
            "required": true,
            "in": "query",
            "description": "Place name to search for",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/PlacesResponseDto"
                  },
                  "type": "array"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Search places",
        "tags": [
          "Search"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "asset.read",
        "x-immich-state": "Stable"
      }
    },
    "/search/random": {
      "post": {
        "description": "Retrieve a random selection of assets based on the provided criteria.",
        "operationId": "searchRandom",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RandomSearchDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/AssetResponseDto"
                  },
                  "type": "array"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Search random assets",
        "tags": [
          "Search"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "asset.read",
        "x-immich-state": "Stable"
      }
    },
    "/search/smart": {
      "post": {
        "description": "Perform a smart search for assets by using machine learning vectors to determine relevance.",
        "operationId": "searchSmart",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SmartSearchDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchResponseDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Smart asset search",
        "tags": [
          "Search"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "asset.read",
        "x-immich-state": "Stable"
      }
    },
    "/search/statistics": {
      "post": {
        "description": "Retrieve statistical data about assets based on search criteria, such as the total matching count.",
        "operationId": "searchAssetStatistics",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/StatisticsSearchDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchStatisticsResponseDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Search asset statistics",
        "tags": [
          "Search"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "asset.statistics",
        "x-immich-state": "Stable"
      }
    },
    "/search/suggestions": {
      "get": {
        "description": "Retrieve search suggestions based on partial input. This endpoint is used for typeahead search features.",
        "operationId": "getSearchSuggestions",
        "parameters": [
          {
            "name": "country",
            "required": false,
            "in": "query",
            "description": "Filter by country",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "includeNull",
            "required": false,
            "in": "query",
            "description": "Include null values in suggestions",
            "x-immich-history": [
              {
                "version": "v1.111.0",
                "state": "Added"
              },
              {
                "version": "v2",
                "state": "Stable"
              }
            ],
            "x-immich-state": "Stable",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "lensModel",
            "required": false,
            "in": "query",
            "description": "Filter by lens model",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "make",
            "required": false,
            "in": "query",
            "description": "Filter by camera make",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "model",
            "required": false,
            "in": "query",
            "description": "Filter by camera model",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "state",
            "required": false,
            "in": "query",
            "description": "Filter by state/province",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "type",
            "required": true,
            "in": "query",
            "description": "Suggestion type",
            "schema": {
              "$ref": "#/components/schemas/SearchSuggestionType"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Retrieve search suggestions",
        "tags": [
          "Search"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "asset.read",
        "x-immich-state": "Stable"
      }
    },
    "/server/about": {
      "get": {
        "description": "Retrieve a list of information about the server.",
        "operationId": "getAboutInfo",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServerAboutResponseDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Get server information",
        "tags": [
          "Server"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "server.about",
        "x-immich-state": "Stable"
      }
    },
    "/server/apk-links": {
      "get": {
        "description": "Retrieve links to the APKs for the current server version.",
        "operationId": "getApkLinks",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServerApkLinksDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Get APK links",
        "tags": [
          "Server"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "server.apkLinks",
        "x-immich-state": "Stable"
      }
    },
    "/server/config": {
      "get": {
        "description": "Retrieve the current server configuration.",
        "operationId": "getServerConfig",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServerConfigDto"
                }
              }
            },
            "description": ""
          }
        },
        "summary": "Get config",
        "tags": [
          "Server"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-state": "Stable"
      }
    },
    "/server/features": {
      "get": {
        "description": "Retrieve available features supported by this server.",
        "operationId": "getServerFeatures",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServerFeaturesDto"
                }
              }
            },
            "description": ""
          }
        },
        "summary": "Get features",
        "tags": [
          "Server"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-state": "Stable"
      }
    },
    "/server/license": {
      "delete": {
        "description": "Delete the currently set server product key.",
        "operationId": "deleteServerLicense",
        "parameters": [],
        "responses": {
          "204": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Delete server product key",
        "tags": [
          "Server"
        ],
        "x-immich-admin-only": true,
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "serverLicense.delete",
        "x-immich-state": "Stable"
      },
      "get": {
        "description": "Retrieve information about whether the server currently has a product key registered.",
        "operationId": "getServerLicense",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LicenseResponseDto"
                }
              }
            },
            "description": ""
          },
          "404": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Get product key",
        "tags": [
          "Server"
        ],
        "x-immich-admin-only": true,
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "serverLicense.read",
        "x-immich-state": "Stable"
      },
      "put": {
        "description": "Validate and set the server product key if successful.",
        "operationId": "setServerLicense",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LicenseKeyDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LicenseResponseDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Set server product key",
        "tags": [
          "Server"
        ],
        "x-immich-admin-only": true,
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "serverLicense.update",
        "x-immich-state": "Stable"
      }
    },
    "/server/media-types": {
      "get": {
        "description": "Retrieve all media types supported by the server.",
        "operationId": "getSupportedMediaTypes",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServerMediaTypesResponseDto"
                }
              }
            },
            "description": ""
          }
        },
        "summary": "Get supported media types",
        "tags": [
          "Server"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-state": "Stable"
      }
    },
    "/server/ping": {
      "get": {
        "description": "Pong",
        "operationId": "pingServer",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServerPingResponse"
                }
              }
            },
            "description": ""
          }
        },
        "summary": "Ping",
        "tags": [
          "Server"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-state": "Stable"
      }
    },
    "/server/statistics": {
      "get": {
        "description": "Retrieve statistics about the entire Immich instance such as asset counts.",
        "operationId": "getServerStatistics",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServerStatsResponseDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Get statistics",
        "tags": [
          "Server"
        ],
        "x-immich-admin-only": true,
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "server.statistics",
        "x-immich-state": "Stable"
      }
    },
    "/server/storage": {
      "get": {
        "description": "Retrieve the current storage utilization information of the server.",
        "operationId": "getStorage",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServerStorageResponseDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Get storage",
        "tags": [
          "Server"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "server.storage",
        "x-immich-state": "Stable"
      }
    },
    "/server/theme": {
      "get": {
        "description": "Retrieve the custom CSS, if existent.",
        "operationId": "getTheme",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServerThemeDto"
                }
              }
            },
            "description": ""
          }
        },
        "summary": "Get theme",
        "tags": [
          "Server"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-state": "Stable"
      }
    },
    "/server/version": {
      "get": {
        "description": "Retrieve the current server version in semantic versioning (semver) format.",
        "operationId": "getServerVersion",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServerVersionResponseDto"
                }
              }
            },
            "description": ""
          }
        },
        "summary": "Get server version",
        "tags": [
          "Server"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-state": "Stable"
      }
    },
    "/server/version-check": {
      "get": {
        "description": "Retrieve information about the last time the version check ran.",
        "operationId": "getVersionCheck",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VersionCheckStateResponseDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Get version check status",
        "tags": [
          "Server"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "server.versionCheck",
        "x-immich-state": "Stable"
      }
    },
    "/server/version-history": {
      "get": {
        "description": "Retrieve a list of past versions the server has been on.",
        "operationId": "getVersionHistory",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/ServerVersionHistoryResponseDto"
                  },
                  "type": "array"
                }
              }
            },
            "description": ""
          }
        },
        "summary": "Get version history",
        "tags": [
          "Server"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-state": "Stable"
      }
    },
    "/sessions": {
      "delete": {
        "description": "Delete all sessions for the user. This will not delete the current session.",
        "operationId": "deleteAllSessions",
        "parameters": [],
        "responses": {
          "204": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Delete all sessions",
        "tags": [
          "Sessions"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "session.delete",
        "x-immich-state": "Stable"
      },
      "get": {
        "description": "Retrieve a list of sessions for the user.",
        "operationId": "getSessions",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/SessionResponseDto"
                  },
                  "type": "array"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Retrieve sessions",
        "tags": [
          "Sessions"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "session.read",
        "x-immich-state": "Stable"
      },
      "post": {
        "description": "Create a session as a child to the current session. This endpoint is used for casting.",
        "operationId": "createSession",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SessionCreateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SessionCreateResponseDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Create a session",
        "tags": [
          "Sessions"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "session.create",
        "x-immich-state": "Stable"
      }
    },
    "/sessions/{id}": {
      "delete": {
        "description": "Delete a specific session by id.",
        "operationId": "deleteSession",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Delete a session",
        "tags": [
          "Sessions"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "session.delete",
        "x-immich-state": "Stable"
      },
      "put": {
        "description": "Update a specific session identified by id.",
        "operationId": "updateSession",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SessionUpdateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SessionResponseDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Update a session",
        "tags": [
          "Sessions"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "session.update",
        "x-immich-state": "Stable"
      }
    },
    "/sessions/{id}/lock": {
      "post": {
        "description": "Lock a specific session by id.",
        "operationId": "lockSession",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Lock a session",
        "tags": [
          "Sessions"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "session.lock",
        "x-immich-state": "Stable"
      }
    },
    "/shared-links": {
      "get": {
        "description": "Retrieve a list of all shared links.",
        "operationId": "getAllSharedLinks",
        "parameters": [
          {
            "name": "albumId",
            "required": false,
            "in": "query",
            "description": "Filter by album ID",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "name": "id",
            "required": false,
            "in": "query",
            "description": "Filter by shared link ID",
            "x-immich-history": [
              {
                "version": "v2.5.0",
                "state": "Added"
              }
            ],
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/SharedLinkResponseDto"
                  },
                  "type": "array"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Retrieve all shared links",
        "tags": [
          "Shared links"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "sharedLink.read",
        "x-immich-state": "Stable"
      },
      "post": {
        "description": "Create a new shared link.",
        "operationId": "createSharedLink",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SharedLinkCreateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SharedLinkResponseDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Create a shared link",
        "tags": [
          "Shared links"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "sharedLink.create",
        "x-immich-state": "Stable"
      }
    },
    "/shared-links/login": {
      "post": {
        "description": "Login to a password protected shared link",
        "operationId": "sharedLinkLogin",
        "parameters": [
          {
            "name": "key",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "slug",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SharedLinkLoginDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SharedLinkResponseDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Shared link login",
        "tags": [
          "Shared links"
        ],
        "x-immich-history": [
          {
            "version": "v2.6.0",
            "state": "Added"
          },
          {
            "version": "v2.6.0",
            "state": "Beta"
          }
        ],
        "x-immich-state": "Beta"
      }
    },
    "/shared-links/me": {
      "get": {
        "description": "Retrieve the current shared link associated with authentication method.",
        "operationId": "getMySharedLink",
        "parameters": [
          {
            "name": "key",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "password",
            "required": false,
            "in": "query",
            "description": "Link password",
            "schema": {
              "example": "password",
              "type": "string"
            }
          },
          {
            "name": "slug",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "token",
            "required": false,
            "in": "query",
            "description": "Access token",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SharedLinkResponseDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Retrieve current shared link",
        "tags": [
          "Shared links"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-state": "Stable"
      }
    },
    "/shared-links/{id}": {
      "delete": {
        "description": "Delete a specific shared link by its ID.",
        "operationId": "removeSharedLink",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Delete a shared link",
        "tags": [
          "Shared links"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "sharedLink.delete",
        "x-immich-state": "Stable"
      },
      "get": {
        "description": "Retrieve a specific shared link by its ID.",
        "operationId": "getSharedLinkById",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SharedLinkResponseDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Retrieve a shared link",
        "tags": [
          "Shared links"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "sharedLink.read",
        "x-immich-state": "Stable"
      },
      "patch": {
        "description": "Update an existing shared link by its ID.",
        "operationId": "updateSharedLink",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SharedLinkEditDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SharedLinkResponseDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Update a shared link",
        "tags": [
          "Shared links"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "sharedLink.update",
        "x-immich-state": "Stable"
      }
    },
    "/shared-links/{id}/assets": {
      "delete": {
        "description": "Remove assets from a specific shared link by its ID. This endpoint is only relevant for shared link of type individual.",
        "operationId": "removeSharedLinkAssets",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "name": "key",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "slug",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AssetIdsDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/AssetIdsResponseDto"
                  },
                  "type": "array"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Remove assets from a shared link",
        "tags": [
          "Shared links"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-state": "Stable"
      },
      "put": {
        "description": "Add assets to a specific shared link by its ID. This endpoint is only relevant for shared link of type individual.",
        "operationId": "addSharedLinkAssets",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "name": "key",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "slug",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AssetIdsDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/AssetIdsResponseDto"
                  },
                  "type": "array"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Add assets to a shared link",
        "tags": [
          "Shared links"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-state": "Stable"
      }
    },
    "/stacks": {
      "delete": {
        "description": "Delete multiple stacks by providing a list of stack IDs.",
        "operationId": "deleteStacks",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BulkIdsDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Delete stacks",
        "tags": [
          "Stacks"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "stack.delete",
        "x-immich-state": "Stable"
      },
      "get": {
        "description": "Retrieve a list of stacks.",
        "operationId": "searchStacks",
        "parameters": [
          {
            "name": "primaryAssetId",
            "required": false,
            "in": "query",
            "description": "Filter by primary asset ID",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/StackResponseDto"
                  },
                  "type": "array"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Retrieve stacks",
        "tags": [
          "Stacks"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "stack.read",
        "x-immich-state": "Stable"
      },
      "post": {
        "description": "Create a new stack by providing a name and a list of asset IDs to include in the stack. If any of the provided asset IDs are primary assets of an existing stack, the existing stack will be merged into the newly created stack.",
        "operationId": "createStack",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/StackCreateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StackResponseDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Create a stack",
        "tags": [
          "Stacks"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "stack.create",
        "x-immich-state": "Stable"
      }
    },
    "/stacks/{id}": {
      "delete": {
        "description": "Delete a specific stack by its ID.",
        "operationId": "deleteStack",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Delete a stack",
        "tags": [
          "Stacks"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "stack.delete",
        "x-immich-state": "Stable"
      },
      "get": {
        "description": "Retrieve a specific stack by its ID.",
        "operationId": "getStack",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StackResponseDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Retrieve a stack",
        "tags": [
          "Stacks"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "stack.read",
        "x-immich-state": "Stable"
      },
      "put": {
        "description": "Update an existing stack by its ID.",
        "operationId": "updateStack",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/StackUpdateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StackResponseDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Update a stack",
        "tags": [
          "Stacks"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "stack.update",
        "x-immich-state": "Stable"
      }
    },
    "/stacks/{id}/assets/{assetId}": {
      "delete": {
        "description": "Remove a specific asset from a stack by providing the stack ID and asset ID.",
        "operationId": "removeAssetFromStack",
        "parameters": [
          {
            "name": "assetId",
            "required": true,
            "in": "path",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Remove an asset from a stack",
        "tags": [
          "Stacks"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "stack.update",
        "x-immich-state": "Stable"
      }
    },
    "/sync/ack": {
      "delete": {
        "description": "Delete specific synchronization acknowledgments.",
        "operationId": "deleteSyncAck",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SyncAckDeleteDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Delete acknowledgements",
        "tags": [
          "Sync"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "syncCheckpoint.delete",
        "x-immich-state": "Stable"
      },
      "get": {
        "description": "Retrieve the synchronization acknowledgments for the current session.",
        "operationId": "getSyncAck",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/SyncAckDto"
                  },
                  "type": "array"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Retrieve acknowledgements",
        "tags": [
          "Sync"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "syncCheckpoint.read",
        "x-immich-state": "Stable"
      },
      "post": {
        "description": "Send a list of synchronization acknowledgements to confirm that the latest changes have been received.",
        "operationId": "sendSyncAck",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SyncAckSetDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Acknowledge changes",
        "tags": [
          "Sync"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "syncCheckpoint.update",
        "x-immich-state": "Stable"
      }
    },
    "/sync/delta-sync": {
      "post": {
        "deprecated": true,
        "description": "Retrieve changed assets since the last sync for the authenticated user.",
        "operationId": "getDeltaSync",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AssetDeltaSyncDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AssetDeltaSyncResponseDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Get delta sync for user",
        "tags": [
          "Sync",
          "Deprecated"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v2",
            "state": "Deprecated"
          }
        ],
        "x-immich-state": "Deprecated"
      }
    },
    "/sync/full-sync": {
      "post": {
        "deprecated": true,
        "description": "Retrieve all assets for a full synchronization for the authenticated user.",
        "operationId": "getFullSyncForUser",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AssetFullSyncDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/AssetResponseDto"
                  },
                  "type": "array"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Get full sync for user",
        "tags": [
          "Sync",
          "Deprecated"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v2",
            "state": "Deprecated"
          }
        ],
        "x-immich-state": "Deprecated"
      }
    },
    "/sync/stream": {
      "post": {
        "description": "Retrieve a JSON lines streamed response of changes for synchronization. This endpoint is used by the mobile app to efficiently stay up to date with changes.",
        "operationId": "getSyncStream",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SyncStreamDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Stream sync changes",
        "tags": [
          "Sync"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "sync.stream",
        "x-immich-state": "Stable"
      }
    },
    "/system-config": {
      "get": {
        "description": "Retrieve the current system configuration.",
        "operationId": "getConfig",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SystemConfigDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Get system configuration",
        "tags": [
          "System config"
        ],
        "x-immich-admin-only": true,
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "systemConfig.read",
        "x-immich-state": "Stable"
      },
      "put": {
        "description": "Update the system configuration with a new system configuration.",
        "operationId": "updateConfig",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SystemConfigDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SystemConfigDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Update system configuration",
        "tags": [
          "System config"
        ],
        "x-immich-admin-only": true,
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "systemConfig.update",
        "x-immich-state": "Stable"
      }
    },
    "/system-config/defaults": {
      "get": {
        "description": "Retrieve the default values for the system configuration.",
        "operationId": "getConfigDefaults",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SystemConfigDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Get system configuration defaults",
        "tags": [
          "System config"
        ],
        "x-immich-admin-only": true,
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "systemConfig.read",
        "x-immich-state": "Stable"
      }
    },
    "/system-config/storage-template-options": {
      "get": {
        "description": "Retrieve exemplary storage template options.",
        "operationId": "getStorageTemplateOptions",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SystemConfigTemplateStorageOptionDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Get storage template options",
        "tags": [
          "System config"
        ],
        "x-immich-admin-only": true,
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "systemConfig.read",
        "x-immich-state": "Stable"
      }
    },
    "/system-metadata/admin-onboarding": {
      "get": {
        "description": "Retrieve the current admin onboarding status.",
        "operationId": "getAdminOnboarding",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AdminOnboardingUpdateDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Retrieve admin onboarding",
        "tags": [
          "System metadata"
        ],
        "x-immich-admin-only": true,
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "systemMetadata.read",
        "x-immich-state": "Stable"
      },
      "post": {
        "description": "Update the admin onboarding status.",
        "operationId": "updateAdminOnboarding",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AdminOnboardingUpdateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Update admin onboarding",
        "tags": [
          "System metadata"
        ],
        "x-immich-admin-only": true,
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "systemMetadata.update",
        "x-immich-state": "Stable"
      }
    },
    "/system-metadata/reverse-geocoding-state": {
      "get": {
        "description": "Retrieve the current state of the reverse geocoding import.",
        "operationId": "getReverseGeocodingState",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReverseGeocodingStateResponseDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Retrieve reverse geocoding state",
        "tags": [
          "System metadata"
        ],
        "x-immich-admin-only": true,
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "systemMetadata.read",
        "x-immich-state": "Stable"
      }
    },
    "/system-metadata/version-check-state": {
      "get": {
        "description": "Retrieve the current state of the version check process.",
        "operationId": "getVersionCheckState",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VersionCheckStateResponseDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Retrieve version check state",
        "tags": [
          "System metadata"
        ],
        "x-immich-admin-only": true,
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "systemMetadata.read",
        "x-immich-state": "Stable"
      }
    },
    "/tags": {
      "get": {
        "description": "Retrieve a list of all tags.",
        "operationId": "getAllTags",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/TagResponseDto"
                  },
                  "type": "array"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Retrieve tags",
        "tags": [
          "Tags"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "tag.read",
        "x-immich-state": "Stable"
      },
      "post": {
        "description": "Create a new tag by providing a name and optional color.",
        "operationId": "createTag",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TagCreateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TagResponseDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Create a tag",
        "tags": [
          "Tags"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "tag.create",
        "x-immich-state": "Stable"
      },
      "put": {
        "description": "Create or update multiple tags in a single request.",
        "operationId": "upsertTags",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TagUpsertDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/TagResponseDto"
                  },
                  "type": "array"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Upsert tags",
        "tags": [
          "Tags"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "tag.create",
        "x-immich-state": "Stable"
      }
    },
    "/tags/assets": {
      "put": {
        "description": "Add multiple tags to multiple assets in a single request.",
        "operationId": "bulkTagAssets",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TagBulkAssetsDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TagBulkAssetsResponseDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Tag assets",
        "tags": [
          "Tags"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "tag.asset",
        "x-immich-state": "Stable"
      }
    },
    "/tags/{id}": {
      "delete": {
        "description": "Delete a specific tag by its ID.",
        "operationId": "deleteTag",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Delete a tag",
        "tags": [
          "Tags"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "tag.delete",
        "x-immich-state": "Stable"
      },
      "get": {
        "description": "Retrieve a specific tag by its ID.",
        "operationId": "getTagById",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TagResponseDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Retrieve a tag",
        "tags": [
          "Tags"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "tag.read",
        "x-immich-state": "Stable"
      },
      "put": {
        "description": "Update an existing tag identified by its ID.",
        "operationId": "updateTag",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TagUpdateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TagResponseDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Update a tag",
        "tags": [
          "Tags"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "tag.update",
        "x-immich-state": "Stable"
      }
    },
    "/tags/{id}/assets": {
      "delete": {
        "description": "Remove a tag from all the specified assets.",
        "operationId": "untagAssets",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BulkIdsDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/BulkIdResponseDto"
                  },
                  "type": "array"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Untag assets",
        "tags": [
          "Tags"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "tag.asset",
        "x-immich-state": "Stable"
      },
      "put": {
        "description": "Add a tag to all the specified assets.",
        "operationId": "tagAssets",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BulkIdsDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/BulkIdResponseDto"
                  },
                  "type": "array"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Tag assets",
        "tags": [
          "Tags"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "tag.asset",
        "x-immich-state": "Stable"
      }
    },
    "/timeline/bucket": {
      "get": {
        "description": "Retrieve a string of all asset ids in a given time bucket.",
        "operationId": "getTimeBucket",
        "parameters": [
          {
            "name": "albumId",
            "required": false,
            "in": "query",
            "description": "Filter assets belonging to a specific album",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "name": "isFavorite",
            "required": false,
            "in": "query",
            "description": "Filter by favorite status (true for favorites only, false for non-favorites only)",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "isTrashed",
            "required": false,
            "in": "query",
            "description": "Filter by trash status (true for trashed assets only, false for non-trashed only)",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "key",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "required": false,
            "in": "query",
            "description": "Sort order for assets within time buckets (ASC for oldest first, DESC for newest first)",
            "schema": {
              "$ref": "#/components/schemas/AssetOrder"
            }
          },
          {
            "name": "personId",
            "required": false,
            "in": "query",
            "description": "Filter assets containing a specific person (face recognition)",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "name": "slug",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "tagId",
            "required": false,
            "in": "query",
            "description": "Filter assets with a specific tag",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "name": "timeBucket",
            "required": true,
            "in": "query",
            "description": "Time bucket identifier in YYYY-MM-DD format (e.g., \"2024-01-01\" for January 2024)",
            "schema": {
              "example": "2024-01-01",
              "type": "string"
            }
          },
          {
            "name": "userId",
            "required": false,
            "in": "query",
            "description": "Filter assets by specific user ID",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "name": "visibility",
            "required": false,
            "in": "query",
            "description": "Filter by asset visibility status (ARCHIVE, TIMELINE, HIDDEN, LOCKED)",
            "schema": {
              "$ref": "#/components/schemas/AssetVisibility"
            }
          },
          {
            "name": "withCoordinates",
            "required": false,
            "in": "query",
            "description": "Include location data in the response",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "withPartners",
            "required": false,
            "in": "query",
            "description": "Include assets shared by partners",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "withStacked",
            "required": false,
            "in": "query",
            "description": "Include stacked assets in the response. When true, only primary assets from stacks are returned.",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TimeBucketAssetResponseDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Get time bucket",
        "tags": [
          "Timeline"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Internal"
          }
        ],
        "x-immich-permission": "asset.read",
        "x-immich-state": "Internal"
      }
    },
    "/timeline/buckets": {
      "get": {
        "description": "Retrieve a list of all minimal time buckets.",
        "operationId": "getTimeBuckets",
        "parameters": [
          {
            "name": "albumId",
            "required": false,
            "in": "query",
            "description": "Filter assets belonging to a specific album",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "name": "isFavorite",
            "required": false,
            "in": "query",
            "description": "Filter by favorite status (true for favorites only, false for non-favorites only)",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "isTrashed",
            "required": false,
            "in": "query",
            "description": "Filter by trash status (true for trashed assets only, false for non-trashed only)",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "key",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "required": false,
            "in": "query",
            "description": "Sort order for assets within time buckets (ASC for oldest first, DESC for newest first)",
            "schema": {
              "$ref": "#/components/schemas/AssetOrder"
            }
          },
          {
            "name": "personId",
            "required": false,
            "in": "query",
            "description": "Filter assets containing a specific person (face recognition)",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "name": "slug",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "tagId",
            "required": false,
            "in": "query",
            "description": "Filter assets with a specific tag",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "name": "userId",
            "required": false,
            "in": "query",
            "description": "Filter assets by specific user ID",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "name": "visibility",
            "required": false,
            "in": "query",
            "description": "Filter by asset visibility status (ARCHIVE, TIMELINE, HIDDEN, LOCKED)",
            "schema": {
              "$ref": "#/components/schemas/AssetVisibility"
            }
          },
          {
            "name": "withCoordinates",
            "required": false,
            "in": "query",
            "description": "Include location data in the response",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "withPartners",
            "required": false,
            "in": "query",
            "description": "Include assets shared by partners",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "withStacked",
            "required": false,
            "in": "query",
            "description": "Include stacked assets in the response. When true, only primary assets from stacks are returned.",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/TimeBucketsResponseDto"
                  },
                  "type": "array"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Get time buckets",
        "tags": [
          "Timeline"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Internal"
          }
        ],
        "x-immich-permission": "asset.read",
        "x-immich-state": "Internal"
      }
    },
    "/trash/empty": {
      "post": {
        "description": "Permanently delete all items in the trash.",
        "operationId": "emptyTrash",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TrashResponseDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Empty trash",
        "tags": [
          "Trash"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "asset.delete",
        "x-immich-state": "Stable"
      }
    },
    "/trash/restore": {
      "post": {
        "description": "Restore all items in the trash.",
        "operationId": "restoreTrash",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TrashResponseDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Restore trash",
        "tags": [
          "Trash"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "asset.delete",
        "x-immich-state": "Stable"
      }
    },
    "/trash/restore/assets": {
      "post": {
        "description": "Restore specific assets from the trash.",
        "operationId": "restoreAssets",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BulkIdsDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TrashResponseDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Restore assets",
        "tags": [
          "Trash"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "asset.delete",
        "x-immich-state": "Stable"
      }
    },
    "/users": {
      "get": {
        "description": "Retrieve a list of all users on the server.",
        "operationId": "searchUsers",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/UserResponseDto"
                  },
                  "type": "array"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Get all users",
        "tags": [
          "Users"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "user.read",
        "x-immich-state": "Stable"
      }
    },
    "/users/me": {
      "get": {
        "description": "Retrieve information about the user making the API request.",
        "operationId": "getMyUser",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserAdminResponseDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Get current user",
        "tags": [
          "Users"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "user.read",
        "x-immich-state": "Stable"
      },
      "put": {
        "description": "Update the current user making teh API request.",
        "operationId": "updateMyUser",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UserUpdateMeDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserAdminResponseDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Update current user",
        "tags": [
          "Users"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "user.update",
        "x-immich-state": "Stable"
      }
    },
    "/users/me/license": {
      "delete": {
        "description": "Delete the registered product key for the current user.",
        "operationId": "deleteUserLicense",
        "parameters": [],
        "responses": {
          "204": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Delete user product key",
        "tags": [
          "Users"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "userLicense.delete",
        "x-immich-state": "Stable"
      },
      "get": {
        "description": "Retrieve information about whether the current user has a registered product key.",
        "operationId": "getUserLicense",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LicenseResponseDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Retrieve user product key",
        "tags": [
          "Users"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "userLicense.read",
        "x-immich-state": "Stable"
      },
      "put": {
        "description": "Register a product key for the current user.",
        "operationId": "setUserLicense",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LicenseKeyDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LicenseResponseDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Set user product key",
        "tags": [
          "Users"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "userLicense.update",
        "x-immich-state": "Stable"
      }
    },
    "/users/me/onboarding": {
      "delete": {
        "description": "Delete the onboarding status of the current user.",
        "operationId": "deleteUserOnboarding",
        "parameters": [],
        "responses": {
          "204": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Delete user onboarding",
        "tags": [
          "Users"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "userOnboarding.delete",
        "x-immich-state": "Stable"
      },
      "get": {
        "description": "Retrieve the onboarding status of the current user.",
        "operationId": "getUserOnboarding",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OnboardingResponseDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Retrieve user onboarding",
        "tags": [
          "Users"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "userOnboarding.read",
        "x-immich-state": "Stable"
      },
      "put": {
        "description": "Update the onboarding status of the current user.",
        "operationId": "setUserOnboarding",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OnboardingDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OnboardingResponseDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Update user onboarding",
        "tags": [
          "Users"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "userOnboarding.update",
        "x-immich-state": "Stable"
      }
    },
    "/users/me/preferences": {
      "get": {
        "description": "Retrieve the preferences for the current user.",
        "operationId": "getMyPreferences",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserPreferencesResponseDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Get my preferences",
        "tags": [
          "Users"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "userPreference.read",
        "x-immich-state": "Stable"
      },
      "put": {
        "description": "Update the preferences of the current user.",
        "operationId": "updateMyPreferences",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UserPreferencesUpdateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserPreferencesResponseDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Update my preferences",
        "tags": [
          "Users"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "userPreference.update",
        "x-immich-state": "Stable"
      }
    },
    "/users/profile-image": {
      "delete": {
        "description": "Delete the profile image of the current user.",
        "operationId": "deleteProfileImage",
        "parameters": [],
        "responses": {
          "204": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Delete user profile image",
        "tags": [
          "Users"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "userProfileImage.delete",
        "x-immich-state": "Stable"
      },
      "post": {
        "description": "Upload and set a new profile image for the current user.",
        "operationId": "createProfileImage",
        "parameters": [],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/CreateProfileImageDto"
              }
            }
          },
          "description": "A new avatar for the user",
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateProfileImageResponseDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Create user profile image",
        "tags": [
          "Users"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "userProfileImage.update",
        "x-immich-state": "Stable"
      }
    },
    "/users/{id}": {
      "get": {
        "description": "Retrieve a specific user by their ID.",
        "operationId": "getUser",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserResponseDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Retrieve a user",
        "tags": [
          "Users"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "user.read",
        "x-immich-state": "Stable"
      }
    },
    "/users/{id}/profile-image": {
      "get": {
        "description": "Retrieve the profile image file for a user.",
        "operationId": "getProfileImage",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/octet-stream": {
                "schema": {
                  "format": "binary",
                  "type": "string"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Retrieve user profile image",
        "tags": [
          "Users"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "userProfileImage.read",
        "x-immich-state": "Stable"
      }
    },
    "/view/folder": {
      "get": {
        "description": "Retrieve assets that are children of a specific folder.",
        "operationId": "getAssetsByOriginalPath",
        "parameters": [
          {
            "name": "path",
            "required": true,
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/AssetResponseDto"
                  },
                  "type": "array"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Retrieve assets by original path",
        "tags": [
          "Views"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "folder.read",
        "x-immich-state": "Stable"
      }
    },
    "/view/folder/unique-paths": {
      "get": {
        "description": "Retrieve a list of unique folder paths from asset original paths.",
        "operationId": "getUniqueOriginalPaths",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Retrieve unique paths",
        "tags": [
          "Views"
        ],
        "x-immich-history": [
          {
            "version": "v1",
            "state": "Added"
          },
          {
            "version": "v1",
            "state": "Beta"
          },
          {
            "version": "v2",
            "state": "Stable"
          }
        ],
        "x-immich-permission": "folder.read",
        "x-immich-state": "Stable"
      }
    },
    "/workflows": {
      "get": {
        "description": "Retrieve a list of workflows available to the authenticated user.",
        "operationId": "getWorkflows",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/WorkflowResponseDto"
                  },
                  "type": "array"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "List all workflows",
        "tags": [
          "Workflows"
        ],
        "x-immich-history": [
          {
            "version": "v2.3.0",
            "state": "Added"
          },
          {
            "version": "v2.3.0",
            "state": "Alpha"
          }
        ],
        "x-immich-permission": "workflow.read",
        "x-immich-state": "Alpha"
      },
      "post": {
        "description": "Create a new workflow, the workflow can also be created with empty filters and actions.",
        "operationId": "createWorkflow",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WorkflowCreateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WorkflowResponseDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Create a workflow",
        "tags": [
          "Workflows"
        ],
        "x-immich-history": [
          {
            "version": "v2.3.0",
            "state": "Added"
          },
          {
            "version": "v2.3.0",
            "state": "Alpha"
          }
        ],
        "x-immich-permission": "workflow.create",
        "x-immich-state": "Alpha"
      }
    },
    "/workflows/{id}": {
      "delete": {
        "description": "Delete a workflow by its ID.",
        "operationId": "deleteWorkflow",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Delete a workflow",
        "tags": [
          "Workflows"
        ],
        "x-immich-history": [
          {
            "version": "v2.3.0",
            "state": "Added"
          },
          {
            "version": "v2.3.0",
            "state": "Alpha"
          }
        ],
        "x-immich-permission": "workflow.delete",
        "x-immich-state": "Alpha"
      },
      "get": {
        "description": "Retrieve information about a specific workflow by its ID.",
        "operationId": "getWorkflow",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WorkflowResponseDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Retrieve a workflow",
        "tags": [
          "Workflows"
        ],
        "x-immich-history": [
          {
            "version": "v2.3.0",
            "state": "Added"
          },
          {
            "version": "v2.3.0",
            "state": "Alpha"
          }
        ],
        "x-immich-permission": "workflow.read",
        "x-immich-state": "Alpha"
      },
      "put": {
        "description": "Update the information of a specific workflow by its ID. This endpoint can be used to update the workflow name, description, trigger type, filters and actions order, etc.",
        "operationId": "updateWorkflow",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WorkflowUpdateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WorkflowResponseDto"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "cookie": []
          },
          {
            "api_key": []
          }
        ],
        "summary": "Update a workflow",
        "tags": [
          "Workflows"
        ],
        "x-immich-history": [
          {
            "version": "v2.3.0",
            "state": "Added"
          },
          {
            "version": "v2.3.0",
            "state": "Alpha"
          }
        ],
        "x-immich-permission": "workflow.update",
        "x-immich-state": "Alpha"
      }
    }
  },
  "info": {
    "title": "Immich",
    "description": "Immich API",
    "version": "2.5.6",
    "contact": {}
  },
  "tags": [
    {
      "name": "Activities",
      "description": "An activity is a like or a comment made by a user on an asset or album."
    },
    {
      "name": "Albums",
      "description": "An album is a collection of assets that can be shared with other users or via shared links."
    },
    {
      "name": "API keys",
      "description": "An api key can be used to programmatically access the Immich API."
    },
    {
      "name": "Assets",
      "description": "An asset is an image or video that has been uploaded to Immich."
    },
    {
      "name": "Authentication",
      "description": "Endpoints related to user authentication, including OAuth."
    },
    {
      "name": "Authentication (admin)",
      "description": "Administrative endpoints related to authentication."
    },
    {
      "name": "Database Backups (admin)",
      "description": "Manage backups of the Immich database."
    },
    {
      "name": "Deprecated",
      "description": "Deprecated endpoints that are planned for removal in the next major release."
    },
    {
      "name": "Download",
      "description": "Endpoints for downloading assets or collections of assets."
    },
    {
      "name": "Duplicates",
      "description": "Endpoints for managing and identifying duplicate assets."
    },
    {
      "name": "Faces",
      "description": "A face is a detected human face within an asset, which can be associated with a person. Faces are normally detected via machine learning, but can also be created via manually."
    },
    {
      "name": "Jobs",
      "description": "Queues and background jobs are used for processing tasks asynchronously. Queues can be paused and resumed as needed."
    },
    {
      "name": "Libraries",
      "description": "An external library is made up of input file paths or expressions that are scanned for asset files. Discovered files are automatically imported. Assets much be unique within a library, but can be duplicated across libraries. Each user has a default upload library, and can have one or more external libraries."
    },
    {
      "name": "Maintenance (admin)",
      "description": "Maintenance mode allows you to put Immich in a read-only state to perform various operations."
    },
    {
      "name": "Map",
      "description": "Map endpoints include supplemental functionality related to geolocation, such as reverse geocoding and retrieving map markers for assets with geolocation data."
    },
    {
      "name": "Memories",
      "description": "A memory is a specialized collection of assets with dedicated viewing implementations in the web and mobile clients. A memory includes fields related to visibility and are automatically generated per user via a background job."
    },
    {
      "name": "Notifications",
      "description": "A notification is a specialized message sent to users to inform them of important events. Currently, these notifications are only shown in the Immich web application."
    },
    {
      "name": "Notifications (admin)",
      "description": "Notification administrative endpoints."
    },
    {
      "name": "Partners",
      "description": "A partner is a link with another user that allows sharing of assets between two users."
    },
    {
      "name": "People",
      "description": "A person is a collection of faces, which can be favorited and named. A person can also be merged into another person. People are automatically created via the face recognition job."
    },
    {
      "name": "Plugins",
      "description": "A plugin is an installed module that makes filters and actions available for the workflow feature."
    },
    {
      "name": "Queues",
      "description": "Queues and background jobs are used for processing tasks asynchronously. Queues can be paused and resumed as needed."
    },
    {
      "name": "Search",
      "description": "Endpoints related to searching assets via text, smart search, optical character recognition (OCR), and other filters like person, album, and other metadata. Search endpoints usually support pagination and sorting."
    },
    {
      "name": "Server",
      "description": "Information about the current server deployment, including version and build information, available features, supported media types, and more."
    },
    {
      "name": "Sessions",
      "description": "A session represents an authenticated login session for a user. Sessions also appear in the web application as \"Authorized devices\"."
    },
    {
      "name": "Shared links",
      "description": "A shared link is a public url that provides access to a specific album, asset, or collection of assets. A shared link can be protected with a password, include a specific slug, allow or disallow downloads, and optionally include an expiration date."
    },
    {
      "name": "Stacks",
      "description": "A stack is a group of related assets. One asset is the \"primary\" asset, and the rest are \"child\" assets. On the main timeline, stack parents are included by default, while child assets are hidden."
    },
    {
      "name": "Sync",
      "description": "A collection of endpoints for the new mobile synchronization implementation."
    },
    {
      "name": "System config",
      "description": "Endpoints to view, modify, and validate the system configuration settings."
    },
    {
      "name": "System metadata",
      "description": "Endpoints to view, modify, and validate the system metadata, which includes information about things like admin onboarding status."
    },
    {
      "name": "Tags",
      "description": "A tag is a user-defined label that can be applied to assets for organizational purposes. Tags can also be hierarchical, allowing for parent-child relationships between tags."
    },
    {
      "name": "Timeline",
      "description": "Specialized endpoints related to the timeline implementation used in the web application. External applications or tools should not use or rely on these endpoints, as they are subject to change without notice."
    },
    {
      "name": "Trash",
      "description": "Endpoints for managing the trash can, which includes assets that have been discarded. Items in the trash are automatically deleted after a configured amount of time."
    },
    {
      "name": "Users (admin)",
      "description": "Administrative endpoints for managing users, including creating, updating, deleting, and restoring users. Also includes endpoints for resetting passwords and PIN codes."
    },
    {
      "name": "Users",
      "description": "Endpoints for viewing and updating the current users, including product key information, profile picture data, onboarding progress, and more."
    },
    {
      "name": "Views",
      "description": "Endpoints for specialized views, such as the folder view."
    },
    {
      "name": "Workflows",
      "description": "A workflow is a set of actions that run whenever a triggering event occurs. Workflows also can include filters to further limit execution."
    }
  ],
  "servers": [
    {
      "url": "/api"
    }
  ],
  "components": {
    "securitySchemes": {
      "bearer": {
        "scheme": "Bearer",
        "bearerFormat": "JWT",
        "type": "http",
        "in": "header"
      },
      "cookie": {
        "type": "apiKey",
        "in": "cookie",
        "name": "immich_access_token"
      },
      "api_key": {
        "type": "apiKey",
        "in": "header",
        "name": "x-api-key"
      }
    },
    "schemas": {
      "APIKeyCreateDto": {
        "properties": {
          "name": {
            "description": "API key name",
            "type": "string"
          },
          "permissions": {
            "description": "List of permissions",
            "items": {
              "$ref": "#/components/schemas/Permission"
            },
            "minItems": 1,
            "type": "array"
          }
        },
        "required": [
          "permissions"
        ],
        "type": "object"
      },
      "APIKeyCreateResponseDto": {
        "properties": {
          "apiKey": {
            "$ref": "#/components/schemas/APIKeyResponseDto"
          },
          "secret": {
            "description": "API key secret (only shown once)",
            "type": "string"
          }
        },
        "required": [
          "apiKey",
          "secret"
        ],
        "type": "object"
      },
      "APIKeyResponseDto": {
        "properties": {
          "createdAt": {
            "description": "Creation date",
            "format": "date-time",
            "type": "string"
          },
          "id": {
            "description": "API key ID",
            "type": "string"
          },
          "name": {
            "description": "API key name",
            "type": "string"
          },
          "permissions": {
            "description": "List of permissions",
            "items": {
              "$ref": "#/components/schemas/Permission"
            },
            "type": "array"
          },
          "updatedAt": {
            "description": "Last update date",
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "createdAt",
          "id",
          "name",
          "permissions",
          "updatedAt"
        ],
        "type": "object"
      },
      "APIKeyUpdateDto": {
        "properties": {
          "name": {
            "description": "API key name",
            "type": "string"
          },
          "permissions": {
            "description": "List of permissions",
            "items": {
              "$ref": "#/components/schemas/Permission"
            },
            "minItems": 1,
            "type": "array"
          }
        },
        "type": "object"
      },
      "ActivityCreateDto": {
        "properties": {
          "albumId": {
            "description": "Album ID",
            "format": "uuid",
            "type": "string"
          },
          "assetId": {
            "description": "Asset ID (if activity is for an asset)",
            "format": "uuid",
            "type": "string"
          },
          "comment": {
            "description": "Comment text (required if type is comment)",
            "type": "string"
          },
          "type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ReactionType"
              }
            ],
            "description": "Activity type (like or comment)"
          }
        },
        "required": [
          "albumId",
          "type"
        ],
        "type": "object"
      },
      "ActivityResponseDto": {
        "properties": {
          "assetId": {
            "description": "Asset ID (if activity is for an asset)",
            "nullable": true,
            "type": "string"
          },
          "comment": {
            "description": "Comment text (for comment activities)",
            "nullable": true,
            "type": "string"
          },
          "createdAt": {
            "description": "Creation date",
            "format": "date-time",
            "type": "string"
          },
          "id": {
            "description": "Activity ID",
            "type": "string"
          },
          "type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ReactionType"
              }
            ],
            "description": "Activity type"
          },
          "user": {
            "$ref": "#/components/schemas/UserResponseDto"
          }
        },
        "required": [
          "assetId",
          "createdAt",
          "id",
          "type",
          "user"
        ],
        "type": "object"
      },
      "ActivityStatisticsResponseDto": {
        "properties": {
          "comments": {
            "description": "Number of comments",
            "type": "integer"
          },
          "likes": {
            "description": "Number of likes",
            "type": "integer"
          }
        },
        "required": [
          "comments",
          "likes"
        ],
        "type": "object"
      },
      "AddUsersDto": {
        "properties": {
          "albumUsers": {
            "description": "Album users to add",
            "items": {
              "$ref": "#/components/schemas/AlbumUserAddDto"
            },
            "minItems": 1,
            "type": "array"
          }
        },
        "required": [
          "albumUsers"
        ],
        "type": "object"
      },
      "AdminOnboardingUpdateDto": {
        "properties": {
          "isOnboarded": {
            "description": "Is admin onboarded",
            "type": "boolean"
          }
        },
        "required": [
          "isOnboarded"
        ],
        "type": "object"
      },
      "AlbumResponseDto": {
        "properties": {
          "albumName": {
            "description": "Album name",
            "type": "string"
          },
          "albumThumbnailAssetId": {
            "description": "Thumbnail asset ID",
            "nullable": true,
            "type": "string"
          },
          "albumUsers": {
            "items": {
              "$ref": "#/components/schemas/AlbumUserResponseDto"
            },
            "type": "array"
          },
          "assetCount": {
            "description": "Number of assets",
            "type": "integer"
          },
          "assets": {
            "items": {
              "$ref": "#/components/schemas/AssetResponseDto"
            },
            "type": "array"
          },
          "contributorCounts": {
            "items": {
              "$ref": "#/components/schemas/ContributorCountResponseDto"
            },
            "type": "array"
          },
          "createdAt": {
            "description": "Creation date",
            "format": "date-time",
            "type": "string"
          },
          "description": {
            "description": "Album description",
            "type": "string"
          },
          "endDate": {
            "description": "End date (latest asset)",
            "format": "date-time",
            "type": "string"
          },
          "hasSharedLink": {
            "description": "Has shared link",
            "type": "boolean"
          },
          "id": {
            "description": "Album ID",
            "type": "string"
          },
          "isActivityEnabled": {
            "description": "Activity feed enabled",
            "type": "boolean"
          },
          "lastModifiedAssetTimestamp": {
            "description": "Last modified asset timestamp",
            "format": "date-time",
            "type": "string"
          },
          "order": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AssetOrder"
              }
            ],
            "description": "Asset sort order"
          },
          "owner": {
            "$ref": "#/components/schemas/UserResponseDto"
          },
          "ownerId": {
            "description": "Owner user ID",
            "type": "string"
          },
          "shared": {
            "description": "Is shared album",
            "type": "boolean"
          },
          "startDate": {
            "description": "Start date (earliest asset)",
            "format": "date-time",
            "type": "string"
          },
          "updatedAt": {
            "description": "Last update date",
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "albumName",
          "albumThumbnailAssetId",
          "albumUsers",
          "assetCount",
          "assets",
          "createdAt",
          "description",
          "hasSharedLink",
          "id",
          "isActivityEnabled",
          "owner",
          "ownerId",
          "shared",
          "updatedAt"
        ],
        "type": "object"
      },
      "AlbumStatisticsResponseDto": {
        "properties": {
          "notShared": {
            "description": "Number of non-shared albums",
            "type": "integer"
          },
          "owned": {
            "description": "Number of owned albums",
            "type": "integer"
          },
          "shared": {
            "description": "Number of shared albums",
            "type": "integer"
          }
        },
        "required": [
          "notShared",
          "owned",
          "shared"
        ],
        "type": "object"
      },
      "AlbumUserAddDto": {
        "properties": {
          "role": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AlbumUserRole"
              }
            ],
            "default": "editor",
            "description": "Album user role"
          },
          "userId": {
            "description": "User ID",
            "format": "uuid",
            "type": "string"
          }
        },
        "required": [
          "userId"
        ],
        "type": "object"
      },
      "AlbumUserCreateDto": {
        "properties": {
          "role": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AlbumUserRole"
              }
            ],
            "description": "Album user role"
          },
          "userId": {
            "description": "User ID",
            "format": "uuid",
            "type": "string"
          }
        },
        "required": [
          "role",
          "userId"
        ],
        "type": "object"
      },
      "AlbumUserResponseDto": {
        "properties": {
          "role": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AlbumUserRole"
              }
            ],
            "description": "Album user role"
          },
          "user": {
            "$ref": "#/components/schemas/UserResponseDto"
          }
        },
        "required": [
          "role",
          "user"
        ],
        "type": "object"
      },
      "AlbumUserRole": {
        "description": "Album user role",
        "enum": [
          "editor",
          "viewer"
        ],
        "type": "string"
      },
      "AlbumsAddAssetsDto": {
        "properties": {
          "albumIds": {
            "description": "Album IDs",
            "items": {
              "format": "uuid",
              "type": "string"
            },
            "type": "array"
          },
          "assetIds": {
            "description": "Asset IDs",
            "items": {
              "format": "uuid",
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "albumIds",
          "assetIds"
        ],
        "type": "object"
      },
      "AlbumsAddAssetsResponseDto": {
        "properties": {
          "error": {
            "allOf": [
              {
                "$ref": "#/components/schemas/BulkIdErrorReason"
              }
            ],
            "description": "Error reason"
          },
          "success": {
            "description": "Operation success",
            "type": "boolean"
          }
        },
        "required": [
          "success"
        ],
        "type": "object"
      },
      "AlbumsResponse": {
        "properties": {
          "defaultAssetOrder": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AssetOrder"
              }
            ],
            "default": "desc",
            "description": "Default asset order for albums"
          }
        },
        "required": [
          "defaultAssetOrder"
        ],
        "type": "object"
      },
      "AlbumsUpdate": {
        "description": "Album preferences",
        "properties": {
          "defaultAssetOrder": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AssetOrder"
              }
            ],
            "description": "Default asset order for albums"
          }
        },
        "type": "object"
      },
      "AssetBulkDeleteDto": {
        "properties": {
          "force": {
            "description": "Force delete even if in use",
            "type": "boolean"
          },
          "ids": {
            "description": "IDs to process",
            "items": {
              "format": "uuid",
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "ids"
        ],
        "type": "object"
      },
      "AssetBulkUpdateDto": {
        "properties": {
          "dateTimeOriginal": {
            "description": "Original date and time",
            "type": "string"
          },
          "dateTimeRelative": {
            "description": "Relative time offset in seconds",
            "type": "number"
          },
          "description": {
            "description": "Asset description",
            "type": "string"
          },
          "duplicateId": {
            "description": "Duplicate ID",
            "nullable": true,
            "type": "string"
          },
          "ids": {
            "description": "Asset IDs to update",
            "items": {
              "format": "uuid",
              "type": "string"
            },
            "type": "array"
          },
          "isFavorite": {
            "description": "Mark as favorite",
            "type": "boolean"
          },
          "latitude": {
            "description": "Latitude coordinate",
            "type": "number"
          },
          "longitude": {
            "description": "Longitude coordinate",
            "type": "number"
          },
          "rating": {
            "description": "Rating",
            "maximum": 5,
            "minimum": -1,
            "type": "number"
          },
          "timeZone": {
            "description": "Time zone (IANA timezone)",
            "type": "string"
          },
          "visibility": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AssetVisibility"
              }
            ],
            "description": "Asset visibility"
          }
        },
        "required": [
          "ids"
        ],
        "type": "object"
      },
      "AssetBulkUploadCheckDto": {
        "properties": {
          "assets": {
            "description": "Assets to check",
            "items": {
              "$ref": "#/components/schemas/AssetBulkUploadCheckItem"
            },
            "type": "array"
          }
        },
        "required": [
          "assets"
        ],
        "type": "object"
      },
      "AssetBulkUploadCheckItem": {
        "properties": {
          "checksum": {
            "description": "Base64 or hex encoded SHA1 hash",
            "type": "string"
          },
          "id": {
            "description": "Asset ID",
            "type": "string"
          }
        },
        "required": [
          "checksum",
          "id"
        ],
        "type": "object"
      },
      "AssetBulkUploadCheckResponseDto": {
        "properties": {
          "results": {
            "description": "Upload check results",
            "items": {
              "$ref": "#/components/schemas/AssetBulkUploadCheckResult"
            },
            "type": "array"
          }
        },
        "required": [
          "results"
        ],
        "type": "object"
      },
      "AssetBulkUploadCheckResult": {
        "properties": {
          "action": {
            "description": "Upload action",
            "enum": [
              "accept",
              "reject"
            ],
            "type": "string"
          },
          "assetId": {
            "description": "Existing asset ID if duplicate",
            "type": "string"
          },
          "id": {
            "description": "Asset ID",
            "type": "string"
          },
          "isTrashed": {
            "description": "Whether existing asset is trashed",
            "type": "boolean"
          },
          "reason": {
            "description": "Rejection reason if rejected",
            "enum": [
              "duplicate",
              "unsupported-format"
            ],
            "type": "string"
          }
        },
        "required": [
          "action",
          "id"
        ],
        "type": "object"
      },
      "AssetCopyDto": {
        "properties": {
          "albums": {
            "default": true,
            "description": "Copy album associations",
            "type": "boolean"
          },
          "favorite": {
            "default": true,
            "description": "Copy favorite status",
            "type": "boolean"
          },
          "sharedLinks": {
            "default": true,
            "description": "Copy shared links",
            "type": "boolean"
          },
          "sidecar": {
            "default": true,
            "description": "Copy sidecar file",
            "type": "boolean"
          },
          "sourceId": {
            "description": "Source asset ID",
            "format": "uuid",
            "type": "string"
          },
          "stack": {
            "default": true,
            "description": "Copy stack association",
            "type": "boolean"
          },
          "targetId": {
            "description": "Target asset ID",
            "format": "uuid",
            "type": "string"
          }
        },
        "required": [
          "sourceId",
          "targetId"
        ],
        "type": "object"
      },
      "AssetDeltaSyncDto": {
        "properties": {
          "updatedAfter": {
            "description": "Sync assets updated after this date",
            "format": "date-time",
            "type": "string"
          },
          "userIds": {
            "description": "User IDs to sync",
            "items": {
              "format": "uuid",
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "updatedAfter",
          "userIds"
        ],
        "type": "object"
      },
      "AssetDeltaSyncResponseDto": {
        "properties": {
          "deleted": {
            "description": "Deleted asset IDs",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "needsFullSync": {
            "description": "Whether full sync is needed",
            "type": "boolean"
          },
          "upserted": {
            "description": "Upserted assets",
            "items": {
              "$ref": "#/components/schemas/AssetResponseDto"
            },
            "type": "array"
          }
        },
        "required": [
          "deleted",
          "needsFullSync",
          "upserted"
        ],
        "type": "object"
      },
      "AssetEditAction": {
        "description": "Type of edit action to perform",
        "enum": [
          "crop",
          "rotate",
          "mirror"
        ],
        "type": "string"
      },
      "AssetEditActionCrop": {
        "properties": {
          "action": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AssetEditAction"
              }
            ],
            "description": "Type of edit action to perform"
          },
          "parameters": {
            "$ref": "#/components/schemas/CropParameters"
          }
        },
        "required": [
          "action",
          "parameters"
        ],
        "type": "object"
      },
      "AssetEditActionListDto": {
        "properties": {
          "edits": {
            "description": "List of edit actions to apply (crop, rotate, or mirror)",
            "items": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/AssetEditActionCrop"
                },
                {
                  "$ref": "#/components/schemas/AssetEditActionRotate"
                },
                {
                  "$ref": "#/components/schemas/AssetEditActionMirror"
                }
              ]
            },
            "minItems": 1,
            "type": "array"
          }
        },
        "required": [
          "edits"
        ],
        "type": "object"
      },
      "AssetEditActionMirror": {
        "properties": {
          "action": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AssetEditAction"
              }
            ],
            "description": "Type of edit action to perform"
          },
          "parameters": {
            "$ref": "#/components/schemas/MirrorParameters"
          }
        },
        "required": [
          "action",
          "parameters"
        ],
        "type": "object"
      },
      "AssetEditActionRotate": {
        "properties": {
          "action": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AssetEditAction"
              }
            ],
            "description": "Type of edit action to perform"
          },
          "parameters": {
            "$ref": "#/components/schemas/RotateParameters"
          }
        },
        "required": [
          "action",
          "parameters"
        ],
        "type": "object"
      },
      "AssetEditsDto": {
        "properties": {
          "assetId": {
            "description": "Asset ID to apply edits to",
            "format": "uuid",
            "type": "string"
          },
          "edits": {
            "description": "List of edit actions to apply (crop, rotate, or mirror)",
            "items": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/AssetEditActionCrop"
                },
                {
                  "$ref": "#/components/schemas/AssetEditActionRotate"
                },
                {
                  "$ref": "#/components/schemas/AssetEditActionMirror"
                }
              ]
            },
            "minItems": 1,
            "type": "array"
          }
        },
        "required": [
          "assetId",
          "edits"
        ],
        "type": "object"
      },
      "AssetFaceCreateDto": {
        "properties": {
          "assetId": {
            "description": "Asset ID",
            "format": "uuid",
            "type": "string"
          },
          "height": {
            "description": "Face bounding box height",
            "type": "integer"
          },
          "imageHeight": {
            "description": "Image height in pixels",
            "type": "integer"
          },
          "imageWidth": {
            "description": "Image width in pixels",
            "type": "integer"
          },
          "personId": {
            "description": "Person ID",
            "format": "uuid",
            "type": "string"
          },
          "width": {
            "description": "Face bounding box width",
            "type": "integer"
          },
          "x": {
            "description": "Face bounding box X coordinate",
            "type": "integer"
          },
          "y": {
            "description": "Face bounding box Y coordinate",
            "type": "integer"
          }
        },
        "required": [
          "assetId",
          "height",
          "imageHeight",
          "imageWidth",
          "personId",
          "width",
          "x",
          "y"
        ],
        "type": "object"
      },
      "AssetFaceDeleteDto": {
        "properties": {
          "force": {
            "description": "Force delete even if person has other faces",
            "type": "boolean"
          }
        },
        "required": [
          "force"
        ],
        "type": "object"
      },
      "AssetFaceResponseDto": {
        "properties": {
          "boundingBoxX1": {
            "description": "Bounding box X1 coordinate",
            "type": "integer"
          },
          "boundingBoxX2": {
            "description": "Bounding box X2 coordinate",
            "type": "integer"
          },
          "boundingBoxY1": {
            "description": "Bounding box Y1 coordinate",
            "type": "integer"
          },
          "boundingBoxY2": {
            "description": "Bounding box Y2 coordinate",
            "type": "integer"
          },
          "id": {
            "description": "Face ID",
            "format": "uuid",
            "type": "string"
          },
          "imageHeight": {
            "description": "Image height in pixels",
            "type": "integer"
          },
          "imageWidth": {
            "description": "Image width in pixels",
            "type": "integer"
          },
          "person": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PersonResponseDto"
              }
            ],
            "description": "Person associated with face",
            "nullable": true
          },
          "sourceType": {
            "allOf": [
              {
                "$ref": "#/components/schemas/SourceType"
              }
            ],
            "description": "Face detection source type"
          }
        },
        "required": [
          "boundingBoxX1",
          "boundingBoxX2",
          "boundingBoxY1",
          "boundingBoxY2",
          "id",
          "imageHeight",
          "imageWidth",
          "person"
        ],
        "type": "object"
      },
      "AssetFaceUpdateDto": {
        "properties": {
          "data": {
            "description": "Face update items",
            "items": {
              "$ref": "#/components/schemas/AssetFaceUpdateItem"
            },
            "type": "array"
          }
        },
        "required": [
          "data"
        ],
        "type": "object"
      },
      "AssetFaceUpdateItem": {
        "properties": {
          "assetId": {
            "description": "Asset ID",
            "format": "uuid",
            "type": "string"
          },
          "personId": {
            "description": "Person ID",
            "format": "uuid",
            "type": "string"
          }
        },
        "required": [
          "assetId",
          "personId"
        ],
        "type": "object"
      },
      "AssetFaceWithoutPersonResponseDto": {
        "properties": {
          "boundingBoxX1": {
            "description": "Bounding box X1 coordinate",
            "type": "integer"
          },
          "boundingBoxX2": {
            "description": "Bounding box X2 coordinate",
            "type": "integer"
          },
          "boundingBoxY1": {
            "description": "Bounding box Y1 coordinate",
            "type": "integer"
          },
          "boundingBoxY2": {
            "description": "Bounding box Y2 coordinate",
            "type": "integer"
          },
          "id": {
            "description": "Face ID",
            "format": "uuid",
            "type": "string"
          },
          "imageHeight": {
            "description": "Image height in pixels",
            "type": "integer"
          },
          "imageWidth": {
            "description": "Image width in pixels",
            "type": "integer"
          },
          "sourceType": {
            "allOf": [
              {
                "$ref": "#/components/schemas/SourceType"
              }
            ],
            "description": "Face detection source type"
          }
        },
        "required": [
          "boundingBoxX1",
          "boundingBoxX2",
          "boundingBoxY1",
          "boundingBoxY2",
          "id",
          "imageHeight",
          "imageWidth"
        ],
        "type": "object"
      },
      "AssetFullSyncDto": {
        "properties": {
          "lastId": {
            "description": "Last asset ID (pagination)",
            "format": "uuid",
            "type": "string"
          },
          "limit": {
            "description": "Maximum number of assets to return",
            "minimum": 1,
            "type": "integer"
          },
          "updatedUntil": {
            "description": "Sync assets updated until this date",
            "format": "date-time",
            "type": "string"
          },
          "userId": {
            "description": "Filter by user ID",
            "format": "uuid",
            "type": "string"
          }
        },
        "required": [
          "limit",
          "updatedUntil"
        ],
        "type": "object"
      },
      "AssetIdsDto": {
        "properties": {
          "assetIds": {
            "description": "Asset IDs",
            "items": {
              "format": "uuid",
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "assetIds"
        ],
        "type": "object"
      },
      "AssetIdsResponseDto": {
        "properties": {
          "assetId": {
            "description": "Asset ID",
            "type": "string"
          },
          "error": {
            "description": "Error reason if failed",
            "enum": [
              "duplicate",
              "no_permission",
              "not_found"
            ],
            "type": "string"
          },
          "success": {
            "description": "Whether operation succeeded",
            "type": "boolean"
          }
        },
        "required": [
          "assetId",
          "success"
        ],
        "type": "object"
      },
      "AssetJobName": {
        "description": "Job name",
        "enum": [
          "refresh-faces",
          "refresh-metadata",
          "regenerate-thumbnail",
          "transcode-video"
        ],
        "type": "string"
      },
      "AssetJobsDto": {
        "properties": {
          "assetIds": {
            "description": "Asset IDs",
            "items": {
              "format": "uuid",
              "type": "string"
            },
            "type": "array"
          },
          "name": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AssetJobName"
              }
            ],
            "description": "Job name"
          }
        },
        "required": [
          "assetIds",
          "name"
        ],
        "type": "object"
      },
      "AssetMediaCreateDto": {
        "properties": {
          "assetData": {
            "description": "Asset file data",
            "format": "binary",
            "type": "string"
          },
          "deviceAssetId": {
            "description": "Device asset ID",
            "type": "string"
          },
          "deviceId": {
            "description": "Device ID",
            "type": "string"
          },
          "duration": {
            "description": "Duration (for videos)",
            "type": "string"
          },
          "fileCreatedAt": {
            "description": "File creation date",
            "format": "date-time",
            "type": "string"
          },
          "fileModifiedAt": {
            "description": "File modification date",
            "format": "date-time",
            "type": "string"
          },
          "filename": {
            "description": "Filename",
            "type": "string"
          },
          "isFavorite": {
            "description": "Mark as favorite",
            "type": "boolean"
          },
          "livePhotoVideoId": {
            "description": "Live photo video ID",
            "format": "uuid",
            "type": "string"
          },
          "metadata": {
            "description": "Asset metadata items",
            "items": {
              "$ref": "#/components/schemas/AssetMetadataUpsertItemDto"
            },
            "type": "array"
          },
          "sidecarData": {
            "description": "Sidecar file data",
            "format": "binary",
            "type": "string"
          },
          "visibility": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AssetVisibility"
              }
            ],
            "description": "Asset visibility"
          }
        },
        "required": [
          "assetData",
          "deviceAssetId",
          "deviceId",
          "fileCreatedAt",
          "fileModifiedAt"
        ],
        "type": "object"
      },
      "AssetMediaReplaceDto": {
        "properties": {
          "assetData": {
            "description": "Asset file data",
            "format": "binary",
            "type": "string"
          },
          "deviceAssetId": {
            "description": "Device asset ID",
            "type": "string"
          },
          "deviceId": {
            "description": "Device ID",
            "type": "string"
          },
          "duration": {
            "description": "Duration (for videos)",
            "type": "string"
          },
          "fileCreatedAt": {
            "description": "File creation date",
            "format": "date-time",
            "type": "string"
          },
          "fileModifiedAt": {
            "description": "File modification date",
            "format": "date-time",
            "type": "string"
          },
          "filename": {
            "description": "Filename",
            "type": "string"
          }
        },
        "required": [
          "assetData",
          "deviceAssetId",
          "deviceId",
          "fileCreatedAt",
          "fileModifiedAt"
        ],
        "type": "object"
      },
      "AssetMediaResponseDto": {
        "properties": {
          "id": {
            "description": "Asset media ID",
            "type": "string"
          },
          "status": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AssetMediaStatus"
              }
            ],
            "description": "Upload status"
          }
        },
        "required": [
          "id",
          "status"
        ],
        "type": "object"
      },
      "AssetMediaSize": {
        "enum": [
          "original",
          "fullsize",
          "preview",
          "thumbnail"
        ],
        "type": "string"
      },
      "AssetMediaStatus": {
        "description": "Upload status",
        "enum": [
          "created",
          "replaced",
          "duplicate"
        ],
        "type": "string"
      },
      "AssetMetadataBulkDeleteDto": {
        "properties": {
          "items": {
            "description": "Metadata items to delete",
            "items": {
              "$ref": "#/components/schemas/AssetMetadataBulkDeleteItemDto"
            },
            "type": "array"
          }
        },
        "required": [
          "items"
        ],
        "type": "object"
      },
      "AssetMetadataBulkDeleteItemDto": {
        "properties": {
          "assetId": {
            "description": "Asset ID",
            "format": "uuid",
            "type": "string"
          },
          "key": {
            "description": "Metadata key",
            "type": "string"
          }
        },
        "required": [
          "assetId",
          "key"
        ],
        "type": "object"
      },
      "AssetMetadataBulkResponseDto": {
        "properties": {
          "assetId": {
            "description": "Asset ID",
            "type": "string"
          },
          "key": {
            "description": "Metadata key",
            "type": "string"
          },
          "updatedAt": {
            "description": "Last update date",
            "format": "date-time",
            "type": "string"
          },
          "value": {
            "description": "Metadata value (object)",
            "type": "object"
          }
        },
        "required": [
          "assetId",
          "key",
          "updatedAt",
          "value"
        ],
        "type": "object"
      },
      "AssetMetadataBulkUpsertDto": {
        "properties": {
          "items": {
            "description": "Metadata items to upsert",
            "items": {
              "$ref": "#/components/schemas/AssetMetadataBulkUpsertItemDto"
            },
            "type": "array"
          }
        },
        "required": [
          "items"
        ],
        "type": "object"
      },
      "AssetMetadataBulkUpsertItemDto": {
        "properties": {
          "assetId": {
            "description": "Asset ID",
            "format": "uuid",
            "type": "string"
          },
          "key": {
            "description": "Metadata key",
            "type": "string"
          },
          "value": {
            "description": "Metadata value (object)",
            "type": "object"
          }
        },
        "required": [
          "assetId",
          "key",
          "value"
        ],
        "type": "object"
      },
      "AssetMetadataResponseDto": {
        "properties": {
          "key": {
            "description": "Metadata key",
            "type": "string"
          },
          "updatedAt": {
            "description": "Last update date",
            "format": "date-time",
            "type": "string"
          },
          "value": {
            "description": "Metadata value (object)",
            "type": "object"
          }
        },
        "required": [
          "key",
          "updatedAt",
          "value"
        ],
        "type": "object"
      },
      "AssetMetadataUpsertDto": {
        "properties": {
          "items": {
            "description": "Metadata items to upsert",
            "items": {
              "$ref": "#/components/schemas/AssetMetadataUpsertItemDto"
            },
            "type": "array"
          }
        },
        "required": [
          "items"
        ],
        "type": "object"
      },
      "AssetMetadataUpsertItemDto": {
        "properties": {
          "key": {
            "description": "Metadata key",
            "type": "string"
          },
          "value": {
            "description": "Metadata value (object)",
            "type": "object"
          }
        },
        "required": [
          "key",
          "value"
        ],
        "type": "object"
      },
      "AssetOcrResponseDto": {
        "properties": {
          "assetId": {
            "format": "uuid",
            "type": "string"
          },
          "boxScore": {
            "description": "Confidence score for text detection box",
            "format": "double",
            "type": "number"
          },
          "id": {
            "format": "uuid",
            "type": "string"
          },
          "text": {
            "description": "Recognized text",
            "type": "string"
          },
          "textScore": {
            "description": "Confidence score for text recognition",
            "format": "double",
            "type": "number"
          },
          "x1": {
            "description": "Normalized x coordinate of box corner 1 (0-1)",
            "format": "double",
            "type": "number"
          },
          "x2": {
            "description": "Normalized x coordinate of box corner 2 (0-1)",
            "format": "double",
            "type": "number"
          },
          "x3": {
            "description": "Normalized x coordinate of box corner 3 (0-1)",
            "format": "double",
            "type": "number"
          },
          "x4": {
            "description": "Normalized x coordinate of box corner 4 (0-1)",
            "format": "double",
            "type": "number"
          },
          "y1": {
            "description": "Normalized y coordinate of box corner 1 (0-1)",
            "format": "double",
            "type": "number"
          },
          "y2": {
            "description": "Normalized y coordinate of box corner 2 (0-1)",
            "format": "double",
            "type": "number"
          },
          "y3": {
            "description": "Normalized y coordinate of box corner 3 (0-1)",
            "format": "double",
            "type": "number"
          },
          "y4": {
            "description": "Normalized y coordinate of box corner 4 (0-1)",
            "format": "double",
            "type": "number"
          }
        },
        "required": [
          "assetId",
          "boxScore",
          "id",
          "text",
          "textScore",
          "x1",
          "x2",
          "x3",
          "x4",
          "y1",
          "y2",
          "y3",
          "y4"
        ],
        "type": "object"
      },
      "AssetOrder": {
        "description": "Asset sort order",
        "enum": [
          "asc",
          "desc"
        ],
        "type": "string"
      },
      "AssetResponseDto": {
        "properties": {
          "checksum": {
            "description": "Base64 encoded SHA1 hash",
            "type": "string"
          },
          "createdAt": {
            "description": "The UTC timestamp when the asset was originally uploaded to Immich.",
            "example": "2024-01-15T20:30:00.000Z",
            "format": "date-time",
            "type": "string"
          },
          "deviceAssetId": {
            "description": "Device asset ID",
            "type": "string"
          },
          "deviceId": {
            "description": "Device ID",
            "type": "string"
          },
          "duplicateId": {
            "description": "Duplicate group ID",
            "nullable": true,
            "type": "string"
          },
          "duration": {
            "description": "Video duration (for videos)",
            "type": "string"
          },
          "exifInfo": {
            "$ref": "#/components/schemas/ExifResponseDto"
          },
          "fileCreatedAt": {
            "description": "The actual UTC timestamp when the file was created/captured, preserving timezone information. This is the authoritative timestamp for chronological sorting within timeline groups. Combined with timezone data, this can be used to determine the exact moment the photo was taken.",
            "example": "2024-01-15T19:30:00.000Z",
            "format": "date-time",
            "type": "string"
          },
          "fileModifiedAt": {
            "description": "The UTC timestamp when the file was last modified on the filesystem. This reflects the last time the physical file was changed, which may be different from when the photo was originally taken.",
            "example": "2024-01-16T10:15:00.000Z",
            "format": "date-time",
            "type": "string"
          },
          "hasMetadata": {
            "description": "Whether asset has metadata",
            "type": "boolean"
          },
          "height": {
            "description": "Asset height",
            "nullable": true,
            "type": "number"
          },
          "id": {
            "description": "Asset ID",
            "type": "string"
          },
          "isArchived": {
            "description": "Is archived",
            "type": "boolean"
          },
          "isEdited": {
            "description": "Is edited",
            "type": "boolean",
            "x-immich-history": [
              {
                "version": "v2.5.0",
                "state": "Added"
              },
              {
                "version": "v2.5.0",
                "state": "Beta"
              }
            ],
            "x-immich-state": "Beta"
          },
          "isFavorite": {
            "description": "Is favorite",
            "type": "boolean"
          },
          "isOffline": {
            "description": "Is offline",
            "type": "boolean"
          },
          "isTrashed": {
            "description": "Is trashed",
            "type": "boolean"
          },
          "libraryId": {
            "deprecated": true,
            "description": "Library ID",
            "format": "uuid",
            "nullable": true,
            "type": "string",
            "x-immich-history": [
              {
                "version": "v1",
                "state": "Added"
              },
              {
                "version": "v1",
                "state": "Deprecated"
              }
            ],
            "x-immich-state": "Deprecated"
          },
          "livePhotoVideoId": {
            "description": "Live photo video ID",
            "nullable": true,
            "type": "string"
          },
          "localDateTime": {
            "description": "The local date and time when the photo/video was taken, derived from EXIF metadata. This represents the photographer's local time regardless of timezone, stored as a timezone-agnostic timestamp. Used for timeline grouping by \"local\" days and months.",
            "example": "2024-01-15T14:30:00.000Z",
            "format": "date-time",
            "type": "string"
          },
          "originalFileName": {
            "description": "Original file name",
            "type": "string"
          },
          "originalMimeType": {
            "description": "Original MIME type",
            "type": "string"
          },
          "originalPath": {
            "description": "Original file path",
            "type": "string"
          },
          "owner": {
            "$ref": "#/components/schemas/UserResponseDto"
          },
          "ownerId": {
            "description": "Owner user ID",
            "type": "string"
          },
          "people": {
            "items": {
              "$ref": "#/components/schemas/PersonWithFacesResponseDto"
            },
            "type": "array"
          },
          "resized": {
            "deprecated": true,
            "description": "Is resized",
            "type": "boolean",
            "x-immich-history": [
              {
                "version": "v1",
                "state": "Added"
              },
              {
                "version": "v1.113.0",
                "state": "Deprecated"
              }
            ],
            "x-immich-state": "Deprecated"
          },
          "stack": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AssetStackResponseDto"
              }
            ],
            "nullable": true
          },
          "tags": {
            "items": {
              "$ref": "#/components/schemas/TagResponseDto"
            },
            "type": "array"
          },
          "thumbhash": {
            "description": "Thumbhash for thumbnail generation",
            "nullable": true,
            "type": "string"
          },
          "type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AssetTypeEnum"
              }
            ],
            "description": "Asset type"
          },
          "unassignedFaces": {
            "items": {
              "$ref": "#/components/schemas/AssetFaceWithoutPersonResponseDto"
            },
            "type": "array"
          },
          "updatedAt": {
            "description": "The UTC timestamp when the asset record was last updated in the database. This is automatically maintained by the database and reflects when any field in the asset was last modified.",
            "example": "2024-01-16T12:45:30.000Z",
            "format": "date-time",
            "type": "string"
          },
          "visibility": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AssetVisibility"
              }
            ],
            "description": "Asset visibility"
          },
          "width": {
            "description": "Asset width",
            "nullable": true,
            "type": "number"
          }
        },
        "required": [
          "checksum",
          "createdAt",
          "deviceAssetId",
          "deviceId",
          "duration",
          "fileCreatedAt",
          "fileModifiedAt",
          "hasMetadata",
          "height",
          "id",
          "isArchived",
          "isEdited",
          "isFavorite",
          "isOffline",
          "isTrashed",
          "localDateTime",
          "originalFileName",
          "originalPath",
          "ownerId",
          "thumbhash",
          "type",
          "updatedAt",
          "visibility",
          "width"
        ],
        "type": "object"
      },
      "AssetStackResponseDto": {
        "properties": {
          "assetCount": {
            "description": "Number of assets in stack",
            "type": "integer"
          },
          "id": {
            "description": "Stack ID",
            "type": "string"
          },
          "primaryAssetId": {
            "description": "Primary asset ID",
            "type": "string"
          }
        },
        "required": [
          "assetCount",
          "id",
          "primaryAssetId"
        ],
        "type": "object"
      },
      "AssetStatsResponseDto": {
        "properties": {
          "images": {
            "description": "Number of images",
            "type": "integer"
          },
          "total": {
            "description": "Total number of assets",
            "type": "integer"
          },
          "videos": {
            "description": "Number of videos",
            "type": "integer"
          }
        },
        "required": [
          "images",
          "total",
          "videos"
        ],
        "type": "object"
      },
      "AssetTypeEnum": {
        "description": "Asset type",
        "enum": [
          "IMAGE",
          "VIDEO",
          "AUDIO",
          "OTHER"
        ],
        "type": "string"
      },
      "AssetVisibility": {
        "description": "Asset visibility",
        "enum": [
          "archive",
          "timeline",
          "hidden",
          "locked"
        ],
        "type": "string"
      },
      "AudioCodec": {
        "description": "Target audio codec",
        "enum": [
          "mp3",
          "aac",
          "libopus",
          "pcm_s16le"
        ],
        "type": "string"
      },
      "AuthStatusResponseDto": {
        "properties": {
          "expiresAt": {
            "description": "Session expiration date",
            "type": "string"
          },
          "isElevated": {
            "description": "Is elevated session",
            "type": "boolean"
          },
          "password": {
            "description": "Has password set",
            "type": "boolean"
          },
          "pinCode": {
            "description": "Has PIN code set",
            "type": "boolean"
          },
          "pinExpiresAt": {
            "description": "PIN expiration date",
            "type": "string"
          }
        },
        "required": [
          "isElevated",
          "password",
          "pinCode"
        ],
        "type": "object"
      },
      "AvatarUpdate": {
        "properties": {
          "color": {
            "allOf": [
              {
                "$ref": "#/components/schemas/UserAvatarColor"
              }
            ],
            "description": "Avatar color"
          }
        },
        "type": "object"
      },
      "BulkIdErrorReason": {
        "description": "Error reason",
        "enum": [
          "duplicate",
          "no_permission",
          "not_found",
          "unknown"
        ],
        "type": "string"
      },
      "BulkIdResponseDto": {
        "properties": {
          "error": {
            "description": "Error reason if failed",
            "enum": [
              "duplicate",
              "no_permission",
              "not_found",
              "unknown"
            ],
            "type": "string"
          },
          "id": {
            "description": "ID",
            "type": "string"
          },
          "success": {
            "description": "Whether operation succeeded",
            "type": "boolean"
          }
        },
        "required": [
          "id",
          "success"
        ],
        "type": "object"
      },
      "BulkIdsDto": {
        "properties": {
          "ids": {
            "description": "IDs to process",
            "items": {
              "format": "uuid",
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "ids"
        ],
        "type": "object"
      },
      "CLIPConfig": {
        "properties": {
          "enabled": {
            "description": "Whether the task is enabled",
            "type": "boolean"
          },
          "modelName": {
            "description": "Name of the model to use",
            "type": "string"
          }
        },
        "required": [
          "enabled",
          "modelName"
        ],
        "type": "object"
      },
      "CQMode": {
        "description": "CQ mode",
        "enum": [
          "auto",
          "cqp",
          "icq"
        ],
        "type": "string"
      },
      "CastResponse": {
        "properties": {
          "gCastEnabled": {
            "default": false,
            "description": "Whether Google Cast is enabled",
            "type": "boolean"
          }
        },
        "required": [
          "gCastEnabled"
        ],
        "type": "object"
      },
      "CastUpdate": {
        "properties": {
          "gCastEnabled": {
            "description": "Whether Google Cast is enabled",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "ChangePasswordDto": {
        "properties": {
          "invalidateSessions": {
            "default": false,
            "description": "Invalidate all other sessions",
            "type": "boolean"
          },
          "newPassword": {
            "description": "New password (min 8 characters)",
            "example": "password",
            "minLength": 8,
            "type": "string"
          },
          "password": {
            "description": "Current password",
            "example": "password",
            "type": "string"
          }
        },
        "required": [
          "newPassword",
          "password"
        ],
        "type": "object"
      },
      "CheckExistingAssetsDto": {
        "properties": {
          "deviceAssetIds": {
            "description": "Device asset IDs to check",
            "items": {
              "type": "string"
            },
            "minItems": 1,
            "type": "array"
          },
          "deviceId": {
            "description": "Device ID",
            "type": "string"
          }
        },
        "required": [
          "deviceAssetIds",
          "deviceId"
        ],
        "type": "object"
      },
      "CheckExistingAssetsResponseDto": {
        "properties": {
          "existingIds": {
            "description": "Existing asset IDs",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "existingIds"
        ],
        "type": "object"
      },
      "Colorspace": {
        "description": "Colorspace",
        "enum": [
          "srgb",
          "p3"
        ],
        "type": "string"
      },
      "ContributorCountResponseDto": {
        "properties": {
          "assetCount": {
            "description": "Number of assets contributed",
            "type": "integer"
          },
          "userId": {
            "description": "User ID",
            "type": "string"
          }
        },
        "required": [
          "assetCount",
          "userId"
        ],
        "type": "object"
      },
      "CreateAlbumDto": {
        "properties": {
          "albumName": {
            "description": "Album name",
            "type": "string"
          },
          "albumUsers": {
            "description": "Album users",
            "items": {
              "$ref": "#/components/schemas/AlbumUserCreateDto"
            },
            "type": "array"
          },
          "assetIds": {
            "description": "Initial asset IDs",
            "items": {
              "format": "uuid",
              "type": "string"
            },
            "type": "array"
          },
          "description": {
            "description": "Album description",
            "type": "string"
          }
        },
        "required": [
          "albumName"
        ],
        "type": "object"
      },
      "CreateLibraryDto": {
        "properties": {
          "exclusionPatterns": {
            "description": "Exclusion patterns (max 128)",
            "items": {
              "type": "string"
            },
            "maxItems": 128,
            "type": "array",
            "uniqueItems": true
          },
          "importPaths": {
            "description": "Import paths (max 128)",
            "items": {
              "type": "string"
            },
            "maxItems": 128,
            "type": "array",
            "uniqueItems": true
          },
          "name": {
            "description": "Library name",
            "type": "string"
          },
          "ownerId": {
            "description": "Owner user ID",
            "format": "uuid",
            "type": "string"
          }
        },
        "required": [
          "ownerId"
        ],
        "type": "object"
      },
      "CreateProfileImageDto": {
        "properties": {
          "file": {
            "description": "Profile image file",
            "format": "binary",
            "type": "string"
          }
        },
        "required": [
          "file"
        ],
        "type": "object"
      },
      "CreateProfileImageResponseDto": {
        "properties": {
          "profileChangedAt": {
            "description": "Profile image change date",
            "format": "date-time",
            "type": "string"
          },
          "profileImagePath": {
            "description": "Profile image file path",
            "type": "string"
          },
          "userId": {
            "description": "User ID",
            "type": "string"
          }
        },
        "required": [
          "profileChangedAt",
          "profileImagePath",
          "userId"
        ],
        "type": "object"
      },
      "CropParameters": {
        "properties": {
          "height": {
            "description": "Height of the crop",
            "minimum": 1,
            "type": "number"
          },
          "width": {
            "description": "Width of the crop",
            "minimum": 1,
            "type": "number"
          },
          "x": {
            "description": "Top-Left X coordinate of crop",
            "minimum": 0,
            "type": "number"
          },
          "y": {
            "description": "Top-Left Y coordinate of crop",
            "minimum": 0,
            "type": "number"
          }
        },
        "required": [
          "height",
          "width",
          "x",
          "y"
        ],
        "type": "object"
      },
      "DatabaseBackupConfig": {
        "properties": {
          "cronExpression": {
            "description": "Cron expression",
            "type": "string"
          },
          "enabled": {
            "description": "Enabled",
            "type": "boolean"
          },
          "keepLastAmount": {
            "description": "Keep last amount",
            "minimum": 1,
            "type": "number"
          }
        },
        "required": [
          "cronExpression",
          "enabled",
          "keepLastAmount"
        ],
        "type": "object"
      },
      "DatabaseBackupDeleteDto": {
        "properties": {
          "backups": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "backups"
        ],
        "type": "object"
      },
      "DatabaseBackupDto": {
        "properties": {
          "filename": {
            "type": "string"
          },
          "filesize": {
            "type": "number"
          }
        },
        "required": [
          "filename",
          "filesize"
        ],
        "type": "object"
      },
      "DatabaseBackupListResponseDto": {
        "properties": {
          "backups": {
            "items": {
              "$ref": "#/components/schemas/DatabaseBackupDto"
            },
            "type": "array"
          }
        },
        "required": [
          "backups"
        ],
        "type": "object"
      },
      "DatabaseBackupUploadDto": {
        "properties": {
          "file": {
            "format": "binary",
            "type": "string"
          }
        },
        "type": "object"
      },
      "DownloadArchiveInfo": {
        "properties": {
          "assetIds": {
            "description": "Asset IDs in this archive",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "size": {
            "description": "Archive size in bytes",
            "type": "integer"
          }
        },
        "required": [
          "assetIds",
          "size"
        ],
        "type": "object"
      },
      "DownloadInfoDto": {
        "properties": {
          "albumId": {
            "description": "Album ID to download",
            "format": "uuid",
            "type": "string"
          },
          "archiveSize": {
            "description": "Archive size limit in bytes",
            "minimum": 1,
            "type": "integer"
          },
          "assetIds": {
            "description": "Asset IDs to download",
            "items": {
              "format": "uuid",
              "type": "string"
            },
            "type": "array"
          },
          "userId": {
            "description": "User ID to download assets from",
            "format": "uuid",
            "type": "string"
          }
        },
        "type": "object"
      },
      "DownloadResponse": {
        "properties": {
          "archiveSize": {
            "description": "Maximum archive size in bytes",
            "type": "integer"
          },
          "includeEmbeddedVideos": {
            "default": false,
            "description": "Whether to include embedded videos in downloads",
            "type": "boolean"
          }
        },
        "required": [
          "archiveSize",
          "includeEmbeddedVideos"
        ],
        "type": "object"
      },
      "DownloadResponseDto": {
        "properties": {
          "archives": {
            "description": "Archive information",
            "items": {
              "$ref": "#/components/schemas/DownloadArchiveInfo"
            },
            "type": "array"
          },
          "totalSize": {
            "description": "Total size in bytes",
            "type": "integer"
          }
        },
        "required": [
          "archives",
          "totalSize"
        ],
        "type": "object"
      },
      "DownloadUpdate": {
        "properties": {
          "archiveSize": {
            "description": "Maximum archive size in bytes",
            "minimum": 1,
            "type": "integer"
          },
          "includeEmbeddedVideos": {
            "description": "Whether to include embedded videos in downloads",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "DuplicateDetectionConfig": {
        "properties": {
          "enabled": {
            "description": "Whether the task is enabled",
            "type": "boolean"
          },
          "maxDistance": {
            "description": "Maximum distance threshold for duplicate detection",
            "format": "double",
            "maximum": 0.1,
            "minimum": 0.001,
            "type": "number"
          }
        },
        "required": [
          "enabled",
          "maxDistance"
        ],
        "type": "object"
      },
      "DuplicateResponseDto": {
        "properties": {
          "assets": {
            "description": "Duplicate assets",
            "items": {
              "$ref": "#/components/schemas/AssetResponseDto"
            },
            "type": "array"
          },
          "duplicateId": {
            "description": "Duplicate group ID",
            "type": "string"
          }
        },
        "required": [
          "assets",
          "duplicateId"
        ],
        "type": "object"
      },
      "EmailNotificationsResponse": {
        "properties": {
          "albumInvite": {
            "description": "Whether to receive email notifications for album invites",
            "type": "boolean"
          },
          "albumUpdate": {
            "description": "Whether to receive email notifications for album updates",
            "type": "boolean"
          },
          "enabled": {
            "description": "Whether email notifications are enabled",
            "type": "boolean"
          }
        },
        "required": [
          "albumInvite",
          "albumUpdate",
          "enabled"
        ],
        "type": "object"
      },
      "EmailNotificationsUpdate": {
        "properties": {
          "albumInvite": {
            "description": "Whether to receive email notifications for album invites",
            "type": "boolean"
          },
          "albumUpdate": {
            "description": "Whether to receive email notifications for album updates",
            "type": "boolean"
          },
          "enabled": {
            "description": "Whether email notifications are enabled",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "ExifResponseDto": {
        "properties": {
          "city": {
            "default": null,
            "description": "City name",
            "nullable": true,
            "type": "string"
          },
          "country": {
            "default": null,
            "description": "Country name",
            "nullable": true,
            "type": "string"
          },
          "dateTimeOriginal": {
            "default": null,
            "description": "Original date/time",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "description": {
            "default": null,
            "description": "Image description",
            "nullable": true,
            "type": "string"
          },
          "exifImageHeight": {
            "default": null,
            "description": "Image height in pixels",
            "nullable": true,
            "type": "number"
          },
          "exifImageWidth": {
            "default": null,
            "description": "Image width in pixels",
            "nullable": true,
            "type": "number"
          },
          "exposureTime": {
            "default": null,
            "description": "Exposure time",
            "nullable": true,
            "type": "string"
          },
          "fNumber": {
            "default": null,
            "description": "F-number (aperture)",
            "nullable": true,
            "type": "number"
          },
          "fileSizeInByte": {
            "default": null,
            "description": "File size in bytes",
            "format": "int64",
            "nullable": true,
            "type": "integer"
          },
          "focalLength": {
            "default": null,
            "description": "Focal length in mm",
            "nullable": true,
            "type": "number"
          },
          "iso": {
            "default": null,
            "description": "ISO sensitivity",
            "nullable": true,
            "type": "number"
          },
          "latitude": {
            "default": null,
            "description": "GPS latitude",
            "nullable": true,
            "type": "number"
          },
          "lensModel": {
            "default": null,
            "description": "Lens model",
            "nullable": true,
            "type": "string"
          },
          "longitude": {
            "default": null,
            "description": "GPS longitude",
            "nullable": true,
            "type": "number"
          },
          "make": {
            "default": null,
            "description": "Camera make",
            "nullable": true,
            "type": "string"
          },
          "model": {
            "default": null,
            "description": "Camera model",
            "nullable": true,
            "type": "string"
          },
          "modifyDate": {
            "default": null,
            "description": "Modification date/time",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "orientation": {
            "default": null,
            "description": "Image orientation",
            "nullable": true,
            "type": "string"
          },
          "projectionType": {
            "default": null,
            "description": "Projection type",
            "nullable": true,
            "type": "string"
          },
          "rating": {
            "default": null,
            "description": "Rating",
            "nullable": true,
            "type": "number"
          },
          "state": {
            "default": null,
            "description": "State/province name",
            "nullable": true,
            "type": "string"
          },
          "timeZone": {
            "default": null,
            "description": "Time zone",
            "nullable": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "FaceDto": {
        "properties": {
          "id": {
            "description": "Face ID",
            "format": "uuid",
            "type": "string"
          }
        },
        "required": [
          "id"
        ],
        "type": "object"
      },
      "FacialRecognitionConfig": {
        "properties": {
          "enabled": {
            "description": "Whether the task is enabled",
            "type": "boolean"
          },
          "maxDistance": {
            "description": "Maximum distance threshold for face recognition",
            "format": "double",
            "maximum": 2,
            "minimum": 0.1,
            "type": "number"
          },
          "minFaces": {
            "description": "Minimum number of faces required for recognition",
            "minimum": 1,
            "type": "integer"
          },
          "minScore": {
            "description": "Minimum confidence score for face detection",
            "format": "double",
            "maximum": 1,
            "minimum": 0.1,
            "type": "number"
          },
          "modelName": {
            "description": "Name of the model to use",
            "type": "string"
          }
        },
        "required": [
          "enabled",
          "maxDistance",
          "minFaces",
          "minScore",
          "modelName"
        ],
        "type": "object"
      },
      "FoldersResponse": {
        "properties": {
          "enabled": {
            "default": false,
            "description": "Whether folders are enabled",
            "type": "boolean"
          },
          "sidebarWeb": {
            "default": false,
            "description": "Whether folders appear in web sidebar",
            "type": "boolean"
          }
        },
        "required": [
          "enabled",
          "sidebarWeb"
        ],
        "type": "object"
      },
      "FoldersUpdate": {
        "properties": {
          "enabled": {
            "description": "Whether folders are enabled",
            "type": "boolean"
          },
          "sidebarWeb": {
            "description": "Whether folders appear in web sidebar",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "ImageFormat": {
        "description": "Image format",
        "enum": [
          "jpeg",
          "webp"
        ],
        "type": "string"
      },
      "JobCreateDto": {
        "properties": {
          "name": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ManualJobName"
              }
            ],
            "description": "Job name"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "JobName": {
        "description": "Job name",
        "enum": [
          "AssetDelete",
          "AssetDeleteCheck",
          "AssetDetectFacesQueueAll",
          "AssetDetectFaces",
          "AssetDetectDuplicatesQueueAll",
          "AssetDetectDuplicates",
          "AssetEditThumbnailGeneration",
          "AssetEncodeVideoQueueAll",
          "AssetEncodeVideo",
          "AssetEmptyTrash",
          "AssetExtractMetadataQueueAll",
          "AssetExtractMetadata",
          "AssetFileMigration",
          "AssetGenerateThumbnailsQueueAll",
          "AssetGenerateThumbnails",
          "AuditLogCleanup",
          "AuditTableCleanup",
          "DatabaseBackup",
          "FacialRecognitionQueueAll",
          "FacialRecognition",
          "FileDelete",
          "FileMigrationQueueAll",
          "LibraryDeleteCheck",
          "LibraryDelete",
          "LibraryRemoveAsset",
          "LibraryScanAssetsQueueAll",
          "LibrarySyncAssets",
          "LibrarySyncFilesQueueAll",
          "LibrarySyncFiles",
          "LibraryScanQueueAll",
          "MemoryCleanup",
          "MemoryGenerate",
          "NotificationsCleanup",
          "NotifyUserSignup",
          "NotifyAlbumInvite",
          "NotifyAlbumUpdate",
          "UserDelete",
          "UserDeleteCheck",
          "UserSyncUsage",
          "PersonCleanup",
          "PersonFileMigration",
          "PersonGenerateThumbnail",
          "SessionCleanup",
          "SendMail",
          "SidecarQueueAll",
          "SidecarCheck",
          "SidecarWrite",
          "SmartSearchQueueAll",
          "SmartSearch",
          "StorageTemplateMigration",
          "StorageTemplateMigrationSingle",
          "TagCleanup",
          "VersionCheck",
          "OcrQueueAll",
          "Ocr",
          "WorkflowRun"
        ],
        "type": "string"
      },
      "JobSettingsDto": {
        "properties": {
          "concurrency": {
            "description": "Concurrency",
            "minimum": 1,
            "type": "integer"
          }
        },
        "required": [
          "concurrency"
        ],
        "type": "object"
      },
      "LibraryResponseDto": {
        "properties": {
          "assetCount": {
            "description": "Number of assets",
            "type": "integer"
          },
          "createdAt": {
            "description": "Creation date",
            "format": "date-time",
            "type": "string"
          },
          "exclusionPatterns": {
            "description": "Exclusion patterns",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "id": {
            "description": "Library ID",
            "type": "string"
          },
          "importPaths": {
            "description": "Import paths",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "name": {
            "description": "Library name",
            "type": "string"
          },
          "ownerId": {
            "description": "Owner user ID",
            "type": "string"
          },
          "refreshedAt": {
            "description": "Last refresh date",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "updatedAt": {
            "description": "Last update date",
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "assetCount",
          "createdAt",
          "exclusionPatterns",
          "id",
          "importPaths",
          "name",
          "ownerId",
          "refreshedAt",
          "updatedAt"
        ],
        "type": "object"
      },
      "LibraryStatsResponseDto": {
        "properties": {
          "photos": {
            "default": 0,
            "description": "Number of photos",
            "type": "integer"
          },
          "total": {
            "default": 0,
            "description": "Total number of assets",
            "type": "integer"
          },
          "usage": {
            "default": 0,
            "description": "Storage usage in bytes",
            "format": "int64",
            "type": "integer"
          },
          "videos": {
            "default": 0,
            "description": "Number of videos",
            "type": "integer"
          }
        },
        "required": [
          "photos",
          "total",
          "usage",
          "videos"
        ],
        "type": "object"
      },
      "LicenseKeyDto": {
        "properties": {
          "activationKey": {
            "description": "Activation key",
            "type": "string"
          },
          "licenseKey": {
            "description": "License key (format: IM(SV|CL)(-XXXX){8})",
            "pattern": "/IM(SV|CL)(-[\\dA-Za-z]{4}){8}/",
            "type": "string"
          }
        },
        "required": [
          "activationKey",
          "licenseKey"
        ],
        "type": "object"
      },
      "LicenseResponseDto": {
        "properties": {
          "activatedAt": {
            "description": "Activation date",
            "format": "date-time",
            "type": "string"
          },
          "activationKey": {
            "description": "Activation key",
            "type": "string"
          },
          "licenseKey": {
            "description": "License key (format: IM(SV|CL)(-XXXX){8})",
            "pattern": "/IM(SV|CL)(-[\\dA-Za-z]{4}){8}/",
            "type": "string"
          }
        },
        "required": [
          "activatedAt",
          "activationKey",
          "licenseKey"
        ],
        "type": "object"
      },
      "LogLevel": {
        "enum": [
          "verbose",
          "debug",
          "log",
          "warn",
          "error",
          "fatal"
        ],
        "type": "string"
      },
      "LoginCredentialDto": {
        "properties": {
          "email": {
            "description": "User email",
            "example": "testuser@email.com",
            "format": "email",
            "type": "string"
          },
          "password": {
            "description": "User password",
            "example": "password",
            "type": "string"
          }
        },
        "required": [
          "email",
          "password"
        ],
        "type": "object"
      },
      "LoginResponseDto": {
        "properties": {
          "accessToken": {
            "description": "Access token",
            "type": "string"
          },
          "isAdmin": {
            "description": "Is admin user",
            "type": "boolean"
          },
          "isOnboarded": {
            "description": "Is onboarded",
            "type": "boolean"
          },
          "name": {
            "description": "User name",
            "type": "string"
          },
          "profileImagePath": {
            "description": "Profile image path",
            "type": "string"
          },
          "shouldChangePassword": {
            "description": "Should change password",
            "type": "boolean"
          },
          "userEmail": {
            "description": "User email",
            "type": "string"
          },
          "userId": {
            "description": "User ID",
            "type": "string"
          }
        },
        "required": [
          "accessToken",
          "isAdmin",
          "isOnboarded",
          "name",
          "profileImagePath",
          "shouldChangePassword",
          "userEmail",
          "userId"
        ],
        "type": "object"
      },
      "LogoutResponseDto": {
        "properties": {
          "redirectUri": {
            "description": "Redirect URI",
            "type": "string"
          },
          "successful": {
            "description": "Logout successful",
            "type": "boolean"
          }
        },
        "required": [
          "redirectUri",
          "successful"
        ],
        "type": "object"
      },
      "MachineLearningAvailabilityChecksDto": {
        "properties": {
          "enabled": {
            "description": "Enabled",
            "type": "boolean"
          },
          "interval": {
            "type": "number"
          },
          "timeout": {
            "type": "number"
          }
        },
        "required": [
          "enabled",
          "interval",
          "timeout"
        ],
        "type": "object"
      },
      "MaintenanceAction": {
        "description": "Maintenance action",
        "enum": [
          "start",
          "end",
          "select_database_restore",
          "restore_database"
        ],
        "type": "string"
      },
      "MaintenanceAuthDto": {
        "properties": {
          "username": {
            "description": "Maintenance username",
            "type": "string"
          }
        },
        "required": [
          "username"
        ],
        "type": "object"
      },
      "MaintenanceDetectInstallResponseDto": {
        "properties": {
          "storage": {
            "items": {
              "$ref": "#/components/schemas/MaintenanceDetectInstallStorageFolderDto"
            },
            "type": "array"
          }
        },
        "required": [
          "storage"
        ],
        "type": "object"
      },
      "MaintenanceDetectInstallStorageFolderDto": {
        "properties": {
          "files": {
            "description": "Number of files in the folder",
            "type": "number"
          },
          "folder": {
            "allOf": [
              {
                "$ref": "#/components/schemas/StorageFolder"
              }
            ],
            "description": "Storage folder"
          },
          "readable": {
            "description": "Whether the folder is readable",
            "type": "boolean"
          },
          "writable": {
            "description": "Whether the folder is writable",
            "type": "boolean"
          }
        },
        "required": [
          "files",
          "folder",
          "readable",
          "writable"
        ],
        "type": "object"
      },
      "MaintenanceLoginDto": {
        "properties": {
          "token": {
            "description": "Maintenance token",
            "type": "string"
          }
        },
        "type": "object"
      },
      "MaintenanceStatusResponseDto": {
        "properties": {
          "action": {
            "allOf": [
              {
                "$ref": "#/components/schemas/MaintenanceAction"
              }
            ],
            "description": "Maintenance action"
          },
          "active": {
            "type": "boolean"
          },
          "error": {
            "type": "string"
          },
          "progress": {
            "type": "number"
          },
          "task": {
            "type": "string"
          }
        },
        "required": [
          "action",
          "active"
        ],
        "type": "object"
      },
      "ManualJobName": {
        "description": "Job name",
        "enum": [
          "person-cleanup",
          "tag-cleanup",
          "user-cleanup",
          "memory-cleanup",
          "memory-create",
          "backup-database"
        ],
        "type": "string"
      },
      "MapMarkerResponseDto": {
        "properties": {
          "city": {
            "description": "City name",
            "nullable": true,
            "type": "string"
          },
          "country": {
            "description": "Country name",
            "nullable": true,
            "type": "string"
          },
          "id": {
            "description": "Asset ID",
            "type": "string"
          },
          "lat": {
            "description": "Latitude",
            "format": "double",
            "type": "number"
          },
          "lon": {
            "description": "Longitude",
            "format": "double",
            "type": "number"
          },
          "state": {
            "description": "State/Province name",
            "nullable": true,
            "type": "string"
          }
        },
        "required": [
          "city",
          "country",
          "id",
          "lat",
          "lon",
          "state"
        ],
        "type": "object"
      },
      "MapReverseGeocodeResponseDto": {
        "properties": {
          "city": {
            "description": "City name",
            "nullable": true,
            "type": "string"
          },
          "country": {
            "description": "Country name",
            "nullable": true,
            "type": "string"
          },
          "state": {
            "description": "State/Province name",
            "nullable": true,
            "type": "string"
          }
        },
        "required": [
          "city",
          "country",
          "state"
        ],
        "type": "object"
      },
      "MemoriesResponse": {
        "properties": {
          "duration": {
            "default": 5,
            "description": "Memory duration in seconds",
            "type": "integer"
          },
          "enabled": {
            "default": true,
            "description": "Whether memories are enabled",
            "type": "boolean"
          }
        },
        "required": [
          "duration",
          "enabled"
        ],
        "type": "object"
      },
      "MemoriesUpdate": {
        "properties": {
          "duration": {
            "description": "Memory duration in seconds",
            "minimum": 1,
            "type": "integer"
          },
          "enabled": {
            "description": "Whether memories are enabled",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "MemoryCreateDto": {
        "properties": {
          "assetIds": {
            "description": "Asset IDs to associate with memory",
            "items": {
              "format": "uuid",
              "type": "string"
            },
            "type": "array"
          },
          "data": {
            "$ref": "#/components/schemas/OnThisDayDto"
          },
          "isSaved": {
            "description": "Is memory saved",
            "type": "boolean"
          },
          "memoryAt": {
            "description": "Memory date",
            "format": "date-time",
            "type": "string"
          },
          "seenAt": {
            "description": "Date when memory was seen",
            "format": "date-time",
            "type": "string"
          },
          "type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/MemoryType"
              }
            ],
            "description": "Memory type"
          }
        },
        "required": [
          "data",
          "memoryAt",
          "type"
        ],
        "type": "object"
      },
      "MemoryResponseDto": {
        "properties": {
          "assets": {
            "items": {
              "$ref": "#/components/schemas/AssetResponseDto"
            },
            "type": "array"
          },
          "createdAt": {
            "description": "Creation date",
            "format": "date-time",
            "type": "string"
          },
          "data": {
            "$ref": "#/components/schemas/OnThisDayDto"
          },
          "deletedAt": {
            "description": "Deletion date",
            "format": "date-time",
            "type": "string"
          },
          "hideAt": {
            "description": "Date when memory should be hidden",
            "format": "date-time",
            "type": "string"
          },
          "id": {
            "description": "Memory ID",
            "type": "string"
          },
          "isSaved": {
            "description": "Is memory saved",
            "type": "boolean"
          },
          "memoryAt": {
            "description": "Memory date",
            "format": "date-time",
            "type": "string"
          },
          "ownerId": {
            "description": "Owner user ID",
            "type": "string"
          },
          "seenAt": {
            "description": "Date when memory was seen",
            "format": "date-time",
            "type": "string"
          },
          "showAt": {
            "description": "Date when memory should be shown",
            "format": "date-time",
            "type": "string"
          },
          "type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/MemoryType"
              }
            ],
            "description": "Memory type"
          },
          "updatedAt": {
            "description": "Last update date",
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "assets",
          "createdAt",
          "data",
          "id",
          "isSaved",
          "memoryAt",
          "ownerId",
          "type",
          "updatedAt"
        ],
        "type": "object"
      },
      "MemorySearchOrder": {
        "enum": [
          "asc",
          "desc",
          "random"
        ],
        "type": "string"
      },
      "MemoryStatisticsResponseDto": {
        "properties": {
          "total": {
            "description": "Total number of memories",
            "type": "integer"
          }
        },
        "required": [
          "total"
        ],
        "type": "object"
      },
      "MemoryType": {
        "enum": [
          "on_this_day"
        ],
        "type": "string"
      },
      "MemoryUpdateDto": {
        "properties": {
          "isSaved": {
            "description": "Is memory saved",
            "type": "boolean"
          },
          "memoryAt": {
            "description": "Memory date",
            "format": "date-time",
            "type": "string"
          },
          "seenAt": {
            "description": "Date when memory was seen",
            "format": "date-time",
            "type": "string"
          }
        },
        "type": "object"
      },
      "MergePersonDto": {
        "properties": {
          "ids": {
            "description": "Person IDs to merge",
            "items": {
              "format": "uuid",
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "ids"
        ],
        "type": "object"
      },
      "MetadataSearchDto": {
        "properties": {
          "albumIds": {
            "description": "Filter by album IDs",
            "items": {
              "format": "uuid",
              "type": "string"
            },
            "type": "array"
          },
          "checksum": {
            "description": "Filter by file checksum",
            "type": "string"
          },
          "city": {
            "description": "Filter by city name",
            "nullable": true,
            "type": "string"
          },
          "country": {
            "description": "Filter by country name",
            "nullable": true,
            "type": "string"
          },
          "createdAfter": {
            "description": "Filter by creation date (after)",
            "format": "date-time",
            "type": "string"
          },
          "createdBefore": {
            "description": "Filter by creation date (before)",
            "format": "date-time",
            "type": "string"
          },
          "description": {
            "description": "Filter by description text",
            "type": "string"
          },
          "deviceAssetId": {
            "description": "Filter by device asset ID",
            "type": "string"
          },
          "deviceId": {
            "description": "Device ID to filter by",
            "type": "string"
          },
          "encodedVideoPath": {
            "description": "Filter by encoded video file path",
            "type": "string"
          },
          "id": {
            "description": "Filter by asset ID",
            "format": "uuid",
            "type": "string"
          },
          "isEncoded": {
            "description": "Filter by encoded status",
            "type": "boolean"
          },
          "isFavorite": {
            "description": "Filter by favorite status",
            "type": "boolean"
          },
          "isMotion": {
            "description": "Filter by motion photo status",
            "type": "boolean"
          },
          "isNotInAlbum": {
            "description": "Filter assets not in any album",
            "type": "boolean"
          },
          "isOffline": {
            "description": "Filter by offline status",
            "type": "boolean"
          },
          "lensModel": {
            "description": "Filter by lens model",
            "nullable": true,
            "type": "string"
          },
          "libraryId": {
            "description": "Library ID to filter by",
            "format": "uuid",
            "nullable": true,
            "type": "string"
          },
          "make": {
            "description": "Filter by camera make",
            "type": "string"
          },
          "model": {
            "description": "Filter by camera model",
            "nullable": true,
            "type": "string"
          },
          "ocr": {
            "description": "Filter by OCR text content",
            "type": "string"
          },
          "order": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AssetOrder"
              }
            ],
            "default": "desc",
            "description": "Sort order"
          },
          "originalFileName": {
            "description": "Filter by original file name",
            "type": "string"
          },
          "originalPath": {
            "description": "Filter by original file path",
            "type": "string"
          },
          "page": {
            "description": "Page number",
            "minimum": 1,
            "type": "number"
          },
          "personIds": {
            "description": "Filter by person IDs",
            "items": {
              "format": "uuid",
              "type": "string"
            },
            "type": "array"
          },
          "previewPath": {
            "description": "Filter by preview file path",
            "type": "string"
          },
          "rating": {
            "description": "Filter by rating",
            "maximum": 5,
            "minimum": -1,
            "type": "number"
          },
          "size": {
            "description": "Number of results to return",
            "maximum": 1000,
            "minimum": 1,
            "type": "number"
          },
          "state": {
            "description": "Filter by state/province name",
            "nullable": true,
            "type": "string"
          },
          "tagIds": {
            "description": "Filter by tag IDs",
            "items": {
              "format": "uuid",
              "type": "string"
            },
            "nullable": true,
            "type": "array"
          },
          "takenAfter": {
            "description": "Filter by taken date (after)",
            "format": "date-time",
            "type": "string"
          },
          "takenBefore": {
            "description": "Filter by taken date (before)",
            "format": "date-time",
            "type": "string"
          },
          "thumbnailPath": {
            "description": "Filter by thumbnail file path",
            "type": "string"
          },
          "trashedAfter": {
            "description": "Filter by trash date (after)",
            "format": "date-time",
            "type": "string"
          },
          "trashedBefore": {
            "description": "Filter by trash date (before)",
            "format": "date-time",
            "type": "string"
          },
          "type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AssetTypeEnum"
              }
            ],
            "description": "Asset type filter"
          },
          "updatedAfter": {
            "description": "Filter by update date (after)",
            "format": "date-time",
            "type": "string"
          },
          "updatedBefore": {
            "description": "Filter by update date (before)",
            "format": "date-time",
            "type": "string"
          },
          "visibility": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AssetVisibility"
              }
            ],
            "description": "Filter by visibility"
          },
          "withDeleted": {
            "description": "Include deleted assets",
            "type": "boolean"
          },
          "withExif": {
            "description": "Include EXIF data in response",
            "type": "boolean"
          },
          "withPeople": {
            "description": "Include assets with people",
            "type": "boolean"
          },
          "withStacked": {
            "description": "Include stacked assets",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "MirrorAxis": {
        "description": "Axis to mirror along",
        "enum": [
          "horizontal",
          "vertical"
        ],
        "type": "string"
      },
      "MirrorParameters": {
        "properties": {
          "axis": {
            "allOf": [
              {
                "$ref": "#/components/schemas/MirrorAxis"
              }
            ],
            "description": "Axis to mirror along"
          }
        },
        "required": [
          "axis"
        ],
        "type": "object"
      },
      "NotificationCreateDto": {
        "properties": {
          "data": {
            "description": "Additional notification data",
            "type": "object"
          },
          "description": {
            "description": "Notification description",
            "nullable": true,
            "type": "string"
          },
          "level": {
            "allOf": [
              {
                "$ref": "#/components/schemas/NotificationLevel"
              }
            ],
            "description": "Notification level"
          },
          "readAt": {
            "description": "Date when notification was read",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "title": {
            "description": "Notification title",
            "type": "string"
          },
          "type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/NotificationType"
              }
            ],
            "description": "Notification type"
          },
          "userId": {
            "description": "User ID to send notification to",
            "format": "uuid",
            "type": "string"
          }
        },
        "required": [
          "title",
          "userId"
        ],
        "type": "object"
      },
      "NotificationDeleteAllDto": {
        "properties": {
          "ids": {
            "description": "Notification IDs to delete",
            "items": {
              "format": "uuid",
              "type": "string"
            },
            "minItems": 1,
            "type": "array"
          }
        },
        "required": [
          "ids"
        ],
        "type": "object"
      },
      "NotificationDto": {
        "properties": {
          "createdAt": {
            "description": "Creation date",
            "format": "date-time",
            "type": "string"
          },
          "data": {
            "description": "Additional notification data",
            "type": "object"
          },
          "description": {
            "description": "Notification description",
            "type": "string"
          },
          "id": {
            "description": "Notification ID",
            "type": "string"
          },
          "level": {
            "allOf": [
              {
                "$ref": "#/components/schemas/NotificationLevel"
              }
            ],
            "description": "Notification level"
          },
          "readAt": {
            "description": "Date when notification was read",
            "format": "date-time",
            "type": "string"
          },
          "title": {
            "description": "Notification title",
            "type": "string"
          },
          "type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/NotificationType"
              }
            ],
            "description": "Notification type"
          }
        },
        "required": [
          "createdAt",
          "id",
          "level",
          "title",
          "type"
        ],
        "type": "object"
      },
      "NotificationLevel": {
        "enum": [
          "success",
          "error",
          "warning",
          "info"
        ],
        "type": "string"
      },
      "NotificationType": {
        "enum": [
          "JobFailed",
          "BackupFailed",
          "SystemMessage",
          "AlbumInvite",
          "AlbumUpdate",
          "Custom"
        ],
        "type": "string"
      },
      "NotificationUpdateAllDto": {
        "properties": {
          "ids": {
            "description": "Notification IDs to update",
            "items": {
              "format": "uuid",
              "type": "string"
            },
            "minItems": 1,
            "type": "array"
          },
          "readAt": {
            "description": "Date when notifications were read",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          }
        },
        "required": [
          "ids"
        ],
        "type": "object"
      },
      "NotificationUpdateDto": {
        "properties": {
          "readAt": {
            "description": "Date when notification was read",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "OAuthAuthorizeResponseDto": {
        "properties": {
          "url": {
            "description": "OAuth authorization URL",
            "type": "string"
          }
        },
        "required": [
          "url"
        ],
        "type": "object"
      },
      "OAuthCallbackDto": {
        "properties": {
          "codeVerifier": {
            "description": "OAuth code verifier (PKCE)",
            "type": "string"
          },
          "state": {
            "description": "OAuth state parameter",
            "type": "string"
          },
          "url": {
            "description": "OAuth callback URL",
            "type": "string"
          }
        },
        "required": [
          "url"
        ],
        "type": "object"
      },
      "OAuthConfigDto": {
        "properties": {
          "codeChallenge": {
            "description": "OAuth code challenge (PKCE)",
            "type": "string"
          },
          "redirectUri": {
            "description": "OAuth redirect URI",
            "type": "string"
          },
          "state": {
            "description": "OAuth state parameter",
            "type": "string"
          }
        },
        "required": [
          "redirectUri"
        ],
        "type": "object"
      },
      "OAuthTokenEndpointAuthMethod": {
        "description": "Token endpoint auth method",
        "enum": [
          "client_secret_post",
          "client_secret_basic"
        ],
        "type": "string"
      },
      "OcrConfig": {
        "properties": {
          "enabled": {
            "description": "Whether the task is enabled",
            "type": "boolean"
          },
          "maxResolution": {
            "description": "Maximum resolution for OCR processing",
            "minimum": 1,
            "type": "integer"
          },
          "minDetectionScore": {
            "description": "Minimum confidence score for text detection",
            "format": "double",
            "maximum": 1,
            "minimum": 0.1,
            "type": "number"
          },
          "minRecognitionScore": {
            "description": "Minimum confidence score for text recognition",
            "format": "double",
            "maximum": 1,
            "minimum": 0.1,
            "type": "number"
          },
          "modelName": {
            "description": "Name of the model to use",
            "type": "string"
          }
        },
        "required": [
          "enabled",
          "maxResolution",
          "minDetectionScore",
          "minRecognitionScore",
          "modelName"
        ],
        "type": "object"
      },
      "OnThisDayDto": {
        "properties": {
          "year": {
            "description": "Year for on this day memory",
            "minimum": 1,
            "type": "number"
          }
        },
        "required": [
          "year"
        ],
        "type": "object"
      },
      "OnboardingDto": {
        "properties": {
          "isOnboarded": {
            "description": "Is user onboarded",
            "type": "boolean"
          }
        },
        "required": [
          "isOnboarded"
        ],
        "type": "object"
      },
      "OnboardingResponseDto": {
        "properties": {
          "isOnboarded": {
            "description": "Is user onboarded",
            "type": "boolean"
          }
        },
        "required": [
          "isOnboarded"
        ],
        "type": "object"
      },
      "PartnerCreateDto": {
        "properties": {
          "sharedWithId": {
            "description": "User ID to share with",
            "format": "uuid",
            "type": "string"
          }
        },
        "required": [
          "sharedWithId"
        ],
        "type": "object"
      },
      "PartnerDirection": {
        "enum": [
          "shared-by",
          "shared-with"
        ],
        "type": "string"
      },
      "PartnerResponseDto": {
        "properties": {
          "avatarColor": {
            "allOf": [
              {
                "$ref": "#/components/schemas/UserAvatarColor"
              }
            ],
            "description": "Avatar color"
          },
          "email": {
            "description": "User email",
            "type": "string"
          },
          "id": {
            "description": "User ID",
            "type": "string"
          },
          "inTimeline": {
            "description": "Show in timeline",
            "type": "boolean"
          },
          "name": {
            "description": "User name",
            "type": "string"
          },
          "profileChangedAt": {
            "description": "Profile change date",
            "format": "date-time",
            "type": "string"
          },
          "profileImagePath": {
            "description": "Profile image path",
            "type": "string"
          }
        },
        "required": [
          "avatarColor",
          "email",
          "id",
          "name",
          "profileChangedAt",
          "profileImagePath"
        ],
        "type": "object"
      },
      "PartnerUpdateDto": {
        "properties": {
          "inTimeline": {
            "description": "Show partner assets in timeline",
            "type": "boolean"
          }
        },
        "required": [
          "inTimeline"
        ],
        "type": "object"
      },
      "PeopleResponse": {
        "properties": {
          "enabled": {
            "default": true,
            "description": "Whether people are enabled",
            "type": "boolean"
          },
          "sidebarWeb": {
            "default": false,
            "description": "Whether people appear in web sidebar",
            "type": "boolean"
          }
        },
        "required": [
          "enabled",
          "sidebarWeb"
        ],
        "type": "object"
      },
      "PeopleResponseDto": {
        "properties": {
          "hasNextPage": {
            "description": "Whether there are more pages",
            "type": "boolean",
            "x-immich-history": [
              {
                "version": "v1.110.0",
                "state": "Added"
              },
              {
                "version": "v2",
                "state": "Stable"
              }
            ],
            "x-immich-state": "Stable"
          },
          "hidden": {
            "description": "Number of hidden people",
            "type": "integer"
          },
          "people": {
            "description": "List of people",
            "items": {
              "$ref": "#/components/schemas/PersonResponseDto"
            },
            "type": "array"
          },
          "total": {
            "description": "Total number of people",
            "type": "integer"
          }
        },
        "required": [
          "hidden",
          "people",
          "total"
        ],
        "type": "object"
      },
      "PeopleUpdate": {
        "properties": {
          "enabled": {
            "description": "Whether people are enabled",
            "type": "boolean"
          },
          "sidebarWeb": {
            "description": "Whether people appear in web sidebar",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "PeopleUpdateDto": {
        "properties": {
          "people": {
            "description": "People to update",
            "items": {
              "$ref": "#/components/schemas/PeopleUpdateItem"
            },
            "type": "array"
          }
        },
        "required": [
          "people"
        ],
        "type": "object"
      },
      "PeopleUpdateItem": {
        "properties": {
          "birthDate": {
            "description": "Person date of birth",
            "format": "date",
            "nullable": true,
            "type": "string"
          },
          "color": {
            "description": "Person color (hex)",
            "nullable": true,
            "type": "string"
          },
          "featureFaceAssetId": {
            "description": "Asset ID used for feature face thumbnail",
            "format": "uuid",
            "type": "string"
          },
          "id": {
            "description": "Person ID",
            "type": "string"
          },
          "isFavorite": {
            "description": "Mark as favorite",
            "type": "boolean"
          },
          "isHidden": {
            "description": "Person visibility (hidden)",
            "type": "boolean"
          },
          "name": {
            "description": "Person name",
            "type": "string"
          }
        },
        "required": [
          "id"
        ],
        "type": "object"
      },
      "Permission": {
        "description": "List of permissions",
        "enum": [
          "all",
          "activity.create",
          "activity.read",
          "activity.update",
          "activity.delete",
          "activity.statistics",
          "apiKey.create",
          "apiKey.read",
          "apiKey.update",
          "apiKey.delete",
          "asset.read",
          "asset.update",
          "asset.delete",
          "asset.statistics",
          "asset.share",
          "asset.view",
          "asset.download",
          "asset.upload",
          "asset.replace",
          "asset.copy",
          "asset.derive",
          "asset.edit.get",
          "asset.edit.create",
          "asset.edit.delete",
          "album.create",
          "album.read",
          "album.update",
          "album.delete",
          "album.statistics",
          "album.share",
          "album.download",
          "albumAsset.create",
          "albumAsset.delete",
          "albumUser.create",
          "albumUser.update",
          "albumUser.delete",
          "auth.changePassword",
          "authDevice.delete",
          "archive.read",
          "backup.list",
          "backup.download",
          "backup.upload",
          "backup.delete",
          "duplicate.read",
          "duplicate.delete",
          "face.create",
          "face.read",
          "face.update",
          "face.delete",
          "folder.read",
          "job.create",
          "job.read",
          "library.create",
          "library.read",
          "library.update",
          "library.delete",
          "library.statistics",
          "timeline.read",
          "timeline.download",
          "maintenance",
          "map.read",
          "map.search",
          "memory.create",
          "memory.read",
          "memory.update",
          "memory.delete",
          "memory.statistics",
          "memoryAsset.create",
          "memoryAsset.delete",
          "notification.create",
          "notification.read",
          "notification.update",
          "notification.delete",
          "partner.create",
          "partner.read",
          "partner.update",
          "partner.delete",
          "person.create",
          "person.read",
          "person.update",
          "person.delete",
          "person.statistics",
          "person.merge",
          "person.reassign",
          "pinCode.create",
          "pinCode.update",
          "pinCode.delete",
          "plugin.create",
          "plugin.read",
          "plugin.update",
          "plugin.delete",
          "server.about",
          "server.apkLinks",
          "server.storage",
          "server.statistics",
          "server.versionCheck",
          "serverLicense.read",
          "serverLicense.update",
          "serverLicense.delete",
          "session.create",
          "session.read",
          "session.update",
          "session.delete",
          "session.lock",
          "sharedLink.create",
          "sharedLink.read",
          "sharedLink.update",
          "sharedLink.delete",
          "stack.create",
          "stack.read",
          "stack.update",
          "stack.delete",
          "sync.stream",
          "syncCheckpoint.read",
          "syncCheckpoint.update",
          "syncCheckpoint.delete",
          "systemConfig.read",
          "systemConfig.update",
          "systemMetadata.read",
          "systemMetadata.update",
          "tag.create",
          "tag.read",
          "tag.update",
          "tag.delete",
          "tag.asset",
          "user.read",
          "user.update",
          "userLicense.create",
          "userLicense.read",
          "userLicense.update",
          "userLicense.delete",
          "userOnboarding.read",
          "userOnboarding.update",
          "userOnboarding.delete",
          "userPreference.read",
          "userPreference.update",
          "userProfileImage.create",
          "userProfileImage.read",
          "userProfileImage.update",
          "userProfileImage.delete",
          "queue.read",
          "queue.update",
          "queueJob.create",
          "queueJob.read",
          "queueJob.update",
          "queueJob.delete",
          "workflow.create",
          "workflow.read",
          "workflow.update",
          "workflow.delete",
          "adminUser.create",
          "adminUser.read",
          "adminUser.update",
          "adminUser.delete",
          "adminSession.read",
          "adminAuth.unlinkAll"
        ],
        "type": "string"
      },
      "PersonCreateDto": {
        "properties": {
          "birthDate": {
            "description": "Person date of birth",
            "format": "date",
            "nullable": true,
            "type": "string"
          },
          "color": {
            "description": "Person color (hex)",
            "nullable": true,
            "type": "string"
          },
          "isFavorite": {
            "description": "Mark as favorite",
            "type": "boolean"
          },
          "isHidden": {
            "description": "Person visibility (hidden)",
            "type": "boolean"
          },
          "name": {
            "description": "Person name",
            "type": "string"
          }
        },
        "type": "object"
      },
      "PersonResponseDto": {
        "properties": {
          "birthDate": {
            "description": "Person date of birth",
            "format": "date",
            "nullable": true,
            "type": "string"
          },
          "color": {
            "description": "Person color (hex)",
            "type": "string",
            "x-immich-history": [
              {
                "version": "v1.126.0",
                "state": "Added"
              },
              {
                "version": "v2",
                "state": "Stable"
              }
            ],
            "x-immich-state": "Stable"
          },
          "id": {
            "description": "Person ID",
            "type": "string"
          },
          "isFavorite": {
            "description": "Is favorite",
            "type": "boolean",
            "x-immich-history": [
              {
                "version": "v1.126.0",
                "state": "Added"
              },
              {
                "version": "v2",
                "state": "Stable"
              }
            ],
            "x-immich-state": "Stable"
          },
          "isHidden": {
            "description": "Is hidden",
            "type": "boolean"
          },
          "name": {
            "description": "Person name",
            "type": "string"
          },
          "thumbnailPath": {
            "description": "Thumbnail path",
            "type": "string"
          },
          "updatedAt": {
            "description": "Last update date",
            "format": "date-time",
            "type": "string",
            "x-immich-history": [
              {
                "version": "v1.107.0",
                "state": "Added"
              },
              {
                "version": "v2",
                "state": "Stable"
              }
            ],
            "x-immich-state": "Stable"
          }
        },
        "required": [
          "birthDate",
          "id",
          "isHidden",
          "name",
          "thumbnailPath"
        ],
        "type": "object"
      },
      "PersonStatisticsResponseDto": {
        "properties": {
          "assets": {
            "description": "Number of assets",
            "type": "integer"
          }
        },
        "required": [
          "assets"
        ],
        "type": "object"
      },
      "PersonUpdateDto": {
        "properties": {
          "birthDate": {
            "description": "Person date of birth",
            "format": "date",
            "nullable": true,
            "type": "string"
          },
          "color": {
            "description": "Person color (hex)",
            "nullable": true,
            "type": "string"
          },
          "featureFaceAssetId": {
            "description": "Asset ID used for feature face thumbnail",
            "format": "uuid",
            "type": "string"
          },
          "isFavorite": {
            "description": "Mark as favorite",
            "type": "boolean"
          },
          "isHidden": {
            "description": "Person visibility (hidden)",
            "type": "boolean"
          },
          "name": {
            "description": "Person name",
            "type": "string"
          }
        },
        "type": "object"
      },
      "PersonWithFacesResponseDto": {
        "properties": {
          "birthDate": {
            "description": "Person date of birth",
            "format": "date",
            "nullable": true,
            "type": "string"
          },
          "color": {
            "description": "Person color (hex)",
            "type": "string",
            "x-immich-history": [
              {
                "version": "v1.126.0",
                "state": "Added"
              },
              {
                "version": "v2",
                "state": "Stable"
              }
            ],
            "x-immich-state": "Stable"
          },
          "faces": {
            "description": "Face detections",
            "items": {
              "$ref": "#/components/schemas/AssetFaceWithoutPersonResponseDto"
            },
            "type": "array"
          },
          "id": {
            "description": "Person ID",
            "type": "string"
          },
          "isFavorite": {
            "description": "Is favorite",
            "type": "boolean",
            "x-immich-history": [
              {
                "version": "v1.126.0",
                "state": "Added"
              },
              {
                "version": "v2",
                "state": "Stable"
              }
            ],
            "x-immich-state": "Stable"
          },
          "isHidden": {
            "description": "Is hidden",
            "type": "boolean"
          },
          "name": {
            "description": "Person name",
            "type": "string"
          },
          "thumbnailPath": {
            "description": "Thumbnail path",
            "type": "string"
          },
          "updatedAt": {
            "description": "Last update date",
            "format": "date-time",
            "type": "string",
            "x-immich-history": [
              {
                "version": "v1.107.0",
                "state": "Added"
              },
              {
                "version": "v2",
                "state": "Stable"
              }
            ],
            "x-immich-state": "Stable"
          }
        },
        "required": [
          "birthDate",
          "faces",
          "id",
          "isHidden",
          "name",
          "thumbnailPath"
        ],
        "type": "object"
      },
      "PinCodeChangeDto": {
        "properties": {
          "newPinCode": {
            "description": "New PIN code (4-6 digits)",
            "example": "123456",
            "type": "string"
          },
          "password": {
            "description": "User password (required if PIN code is not provided)",
            "type": "string"
          },
          "pinCode": {
            "description": "New PIN code (4-6 digits)",
            "example": "123456",
            "type": "string"
          }
        },
        "required": [
          "newPinCode"
        ],
        "type": "object"
      },
      "PinCodeResetDto": {
        "properties": {
          "password": {
            "description": "User password (required if PIN code is not provided)",
            "type": "string"
          },
          "pinCode": {
            "description": "New PIN code (4-6 digits)",
            "example": "123456",
            "type": "string"
          }
        },
        "type": "object"
      },
      "PinCodeSetupDto": {
        "properties": {
          "pinCode": {
            "description": "PIN code (4-6 digits)",
            "example": "123456",
            "type": "string"
          }
        },
        "required": [
          "pinCode"
        ],
        "type": "object"
      },
      "PlacesResponseDto": {
        "properties": {
          "admin1name": {
            "description": "Administrative level 1 name (state/province)",
            "type": "string"
          },
          "admin2name": {
            "description": "Administrative level 2 name (county/district)",
            "type": "string"
          },
          "latitude": {
            "description": "Latitude coordinate",
            "type": "number"
          },
          "longitude": {
            "description": "Longitude coordinate",
            "type": "number"
          },
          "name": {
            "description": "Place name",
            "type": "string"
          }
        },
        "required": [
          "latitude",
          "longitude",
          "name"
        ],
        "type": "object"
      },
      "PluginActionResponseDto": {
        "properties": {
          "description": {
            "description": "Action description",
            "type": "string"
          },
          "id": {
            "description": "Action ID",
            "type": "string"
          },
          "methodName": {
            "description": "Method name",
            "type": "string"
          },
          "pluginId": {
            "description": "Plugin ID",
            "type": "string"
          },
          "schema": {
            "description": "Action schema",
            "nullable": true,
            "type": "object"
          },
          "supportedContexts": {
            "description": "Supported contexts",
            "items": {
              "$ref": "#/components/schemas/PluginContextType"
            },
            "type": "array"
          },
          "title": {
            "description": "Action title",
            "type": "string"
          }
        },
        "required": [
          "description",
          "id",
          "methodName",
          "pluginId",
          "schema",
          "supportedContexts",
          "title"
        ],
        "type": "object"
      },
      "PluginContextType": {
        "description": "Context type",
        "enum": [
          "asset",
          "album",
          "person"
        ],
        "type": "string"
      },
      "PluginFilterResponseDto": {
        "properties": {
          "description": {
            "description": "Filter description",
            "type": "string"
          },
          "id": {
            "description": "Filter ID",
            "type": "string"
          },
          "methodName": {
            "description": "Method name",
            "type": "string"
          },
          "pluginId": {
            "description": "Plugin ID",
            "type": "string"
          },
          "schema": {
            "description": "Filter schema",
            "nullable": true,
            "type": "object"
          },
          "supportedContexts": {
            "description": "Supported contexts",
            "items": {
              "$ref": "#/components/schemas/PluginContextType"
            },
            "type": "array"
          },
          "title": {
            "description": "Filter title",
            "type": "string"
          }
        },
        "required": [
          "description",
          "id",
          "methodName",
          "pluginId",
          "schema",
          "supportedContexts",
          "title"
        ],
        "type": "object"
      },
      "PluginResponseDto": {
        "properties": {
          "actions": {
            "description": "Plugin actions",
            "items": {
              "$ref": "#/components/schemas/PluginActionResponseDto"
            },
            "type": "array"
          },
          "author": {
            "description": "Plugin author",
            "type": "string"
          },
          "createdAt": {
            "description": "Creation date",
            "type": "string"
          },
          "description": {
            "description": "Plugin description",
            "type": "string"
          },
          "filters": {
            "description": "Plugin filters",
            "items": {
              "$ref": "#/components/schemas/PluginFilterResponseDto"
            },
            "type": "array"
          },
          "id": {
            "description": "Plugin ID",
            "type": "string"
          },
          "name": {
            "description": "Plugin name",
            "type": "string"
          },
          "title": {
            "description": "Plugin title",
            "type": "string"
          },
          "updatedAt": {
            "description": "Last update date",
            "type": "string"
          },
          "version": {
            "description": "Plugin version",
            "type": "string"
          }
        },
        "required": [
          "actions",
          "author",
          "createdAt",
          "description",
          "filters",
          "id",
          "name",
          "title",
          "updatedAt",
          "version"
        ],
        "type": "object"
      },
      "PluginTriggerResponseDto": {
        "properties": {
          "contextType": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PluginContextType"
              }
            ],
            "description": "Context type"
          },
          "type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PluginTriggerType"
              }
            ],
            "description": "Trigger type"
          }
        },
        "required": [
          "contextType",
          "type"
        ],
        "type": "object"
      },
      "PluginTriggerType": {
        "description": "Trigger type",
        "enum": [
          "AssetCreate",
          "PersonRecognized"
        ],
        "type": "string"
      },
      "PurchaseResponse": {
        "properties": {
          "hideBuyButtonUntil": {
            "description": "Date until which to hide buy button",
            "type": "string"
          },
          "showSupportBadge": {
            "description": "Whether to show support badge",
            "type": "boolean"
          }
        },
        "required": [
          "hideBuyButtonUntil",
          "showSupportBadge"
        ],
        "type": "object"
      },
      "PurchaseUpdate": {
        "properties": {
          "hideBuyButtonUntil": {
            "description": "Date until which to hide buy button",
            "type": "string"
          },
          "showSupportBadge": {
            "description": "Whether to show support badge",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "QueueCommand": {
        "description": "Queue command to execute",
        "enum": [
          "start",
          "pause",
          "resume",
          "empty",
          "clear-failed"
        ],
        "type": "string"
      },
      "QueueCommandDto": {
        "properties": {
          "command": {
            "allOf": [
              {
                "$ref": "#/components/schemas/QueueCommand"
              }
            ],
            "description": "Queue command to execute"
          },
          "force": {
            "description": "Force the command execution (if applicable)",
            "type": "boolean"
          }
        },
        "required": [
          "command"
        ],
        "type": "object"
      },
      "QueueDeleteDto": {
        "properties": {
          "failed": {
            "description": "If true, will also remove failed jobs from the queue.",
            "type": "boolean",
            "x-immich-history": [
              {
                "version": "v2.4.0",
                "state": "Added"
              },
              {
                "version": "v2.4.0",
                "state": "Alpha"
              }
            ],
            "x-immich-state": "Alpha"
          }
        },
        "type": "object"
      },
      "QueueJobResponseDto": {
        "properties": {
          "data": {
            "description": "Job data payload",
            "type": "object"
          },
          "id": {
            "description": "Job ID",
            "type": "string"
          },
          "name": {
            "allOf": [
              {
                "$ref": "#/components/schemas/JobName"
              }
            ],
            "description": "Job name"
          },
          "timestamp": {
            "description": "Job creation timestamp",
            "type": "integer"
          }
        },
        "required": [
          "data",
          "name",
          "timestamp"
        ],
        "type": "object"
      },
      "QueueJobStatus": {
        "enum": [
          "active",
          "failed",
          "completed",
          "delayed",
          "waiting",
          "paused"
        ],
        "type": "string"
      },
      "QueueName": {
        "enum": [
          "thumbnailGeneration",
          "metadataExtraction",
          "videoConversion",
          "faceDetection",
          "facialRecognition",
          "smartSearch",
          "duplicateDetection",
          "backgroundTask",
          "storageTemplateMigration",
          "migration",
          "search",
          "sidecar",
          "library",
          "notifications",
          "backupDatabase",
          "ocr",
          "workflow",
          "editor"
        ],
        "type": "string"
      },
      "QueueResponseDto": {
        "properties": {
          "isPaused": {
            "description": "Whether the queue is paused",
            "type": "boolean"
          },
          "name": {
            "allOf": [
              {
                "$ref": "#/components/schemas/QueueName"
              }
            ],
            "description": "Queue name"
          },
          "statistics": {
            "$ref": "#/components/schemas/QueueStatisticsDto"
          }
        },
        "required": [
          "isPaused",
          "name",
          "statistics"
        ],
        "type": "object"
      },
      "QueueResponseLegacyDto": {
        "properties": {
          "jobCounts": {
            "$ref": "#/components/schemas/QueueStatisticsDto"
          },
          "queueStatus": {
            "$ref": "#/components/schemas/QueueStatusLegacyDto"
          }
        },
        "required": [
          "jobCounts",
          "queueStatus"
        ],
        "type": "object"
      },
      "QueueStatisticsDto": {
        "properties": {
          "active": {
            "description": "Number of active jobs",
            "type": "integer"
          },
          "completed": {
            "description": "Number of completed jobs",
            "type": "integer"
          },
          "delayed": {
            "description": "Number of delayed jobs",
            "type": "integer"
          },
          "failed": {
            "description": "Number of failed jobs",
            "type": "integer"
          },
          "paused": {
            "description": "Number of paused jobs",
            "type": "integer"
          },
          "waiting": {
            "description": "Number of waiting jobs",
            "type": "integer"
          }
        },
        "required": [
          "active",
          "completed",
          "delayed",
          "failed",
          "paused",
          "waiting"
        ],
        "type": "object"
      },
      "QueueStatusLegacyDto": {
        "properties": {
          "isActive": {
            "description": "Whether the queue is currently active (has running jobs)",
            "type": "boolean"
          },
          "isPaused": {
            "description": "Whether the queue is paused",
            "type": "boolean"
          }
        },
        "required": [
          "isActive",
          "isPaused"
        ],
        "type": "object"
      },
      "QueueUpdateDto": {
        "properties": {
          "isPaused": {
            "description": "Whether to pause the queue",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "QueuesResponseLegacyDto": {
        "properties": {
          "backgroundTask": {
            "$ref": "#/components/schemas/QueueResponseLegacyDto"
          },
          "backupDatabase": {
            "$ref": "#/components/schemas/QueueResponseLegacyDto"
          },
          "duplicateDetection": {
            "$ref": "#/components/schemas/QueueResponseLegacyDto"
          },
          "editor": {
            "$ref": "#/components/schemas/QueueResponseLegacyDto"
          },
          "faceDetection": {
            "$ref": "#/components/schemas/QueueResponseLegacyDto"
          },
          "facialRecognition": {
            "$ref": "#/components/schemas/QueueResponseLegacyDto"
          },
          "library": {
            "$ref": "#/components/schemas/QueueResponseLegacyDto"
          },
          "metadataExtraction": {
            "$ref": "#/components/schemas/QueueResponseLegacyDto"
          },
          "migration": {
            "$ref": "#/components/schemas/QueueResponseLegacyDto"
          },
          "notifications": {
            "$ref": "#/components/schemas/QueueResponseLegacyDto"
          },
          "ocr": {
            "$ref": "#/components/schemas/QueueResponseLegacyDto"
          },
          "search": {
            "$ref": "#/components/schemas/QueueResponseLegacyDto"
          },
          "sidecar": {
            "$ref": "#/components/schemas/QueueResponseLegacyDto"
          },
          "smartSearch": {
            "$ref": "#/components/schemas/QueueResponseLegacyDto"
          },
          "storageTemplateMigration": {
            "$ref": "#/components/schemas/QueueResponseLegacyDto"
          },
          "thumbnailGeneration": {
            "$ref": "#/components/schemas/QueueResponseLegacyDto"
          },
          "videoConversion": {
            "$ref": "#/components/schemas/QueueResponseLegacyDto"
          },
          "workflow": {
            "$ref": "#/components/schemas/QueueResponseLegacyDto"
          }
        },
        "required": [
          "backgroundTask",
          "backupDatabase",
          "duplicateDetection",
          "editor",
          "faceDetection",
          "facialRecognition",
          "library",
          "metadataExtraction",
          "migration",
          "notifications",
          "ocr",
          "search",
          "sidecar",
          "smartSearch",
          "storageTemplateMigration",
          "thumbnailGeneration",
          "videoConversion",
          "workflow"
        ],
        "type": "object"
      },
      "RandomSearchDto": {
        "properties": {
          "albumIds": {
            "description": "Filter by album IDs",
            "items": {
              "format": "uuid",
              "type": "string"
            },
            "type": "array"
          },
          "city": {
            "description": "Filter by city name",
            "nullable": true,
            "type": "string"
          },
          "country": {
            "description": "Filter by country name",
            "nullable": true,
            "type": "string"
          },
          "createdAfter": {
            "description": "Filter by creation date (after)",
            "format": "date-time",
            "type": "string"
          },
          "createdBefore": {
            "description": "Filter by creation date (before)",
            "format": "date-time",
            "type": "string"
          },
          "deviceId": {
            "description": "Device ID to filter by",
            "type": "string"
          },
          "isEncoded": {
            "description": "Filter by encoded status",
            "type": "boolean"
          },
          "isFavorite": {
            "description": "Filter by favorite status",
            "type": "boolean"
          },
          "isMotion": {
            "description": "Filter by motion photo status",
            "type": "boolean"
          },
          "isNotInAlbum": {
            "description": "Filter assets not in any album",
            "type": "boolean"
          },
          "isOffline": {
            "description": "Filter by offline status",
            "type": "boolean"
          },
          "lensModel": {
            "description": "Filter by lens model",
            "nullable": true,
            "type": "string"
          },
          "libraryId": {
            "description": "Library ID to filter by",
            "format": "uuid",
            "nullable": true,
            "type": "string"
          },
          "make": {
            "description": "Filter by camera make",
            "type": "string"
          },
          "model": {
            "description": "Filter by camera model",
            "nullable": true,
            "type": "string"
          },
          "ocr": {
            "description": "Filter by OCR text content",
            "type": "string"
          },
          "personIds": {
            "description": "Filter by person IDs",
            "items": {
              "format": "uuid",
              "type": "string"
            },
            "type": "array"
          },
          "rating": {
            "description": "Filter by rating",
            "maximum": 5,
            "minimum": -1,
            "type": "number"
          },
          "size": {
            "description": "Number of results to return",
            "maximum": 1000,
            "minimum": 1,
            "type": "number"
          },
          "state": {
            "description": "Filter by state/province name",
            "nullable": true,
            "type": "string"
          },
          "tagIds": {
            "description": "Filter by tag IDs",
            "items": {
              "format": "uuid",
              "type": "string"
            },
            "nullable": true,
            "type": "array"
          },
          "takenAfter": {
            "description": "Filter by taken date (after)",
            "format": "date-time",
            "type": "string"
          },
          "takenBefore": {
            "description": "Filter by taken date (before)",
            "format": "date-time",
            "type": "string"
          },
          "trashedAfter": {
            "description": "Filter by trash date (after)",
            "format": "date-time",
            "type": "string"
          },
          "trashedBefore": {
            "description": "Filter by trash date (before)",
            "format": "date-time",
            "type": "string"
          },
          "type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AssetTypeEnum"
              }
            ],
            "description": "Asset type filter"
          },
          "updatedAfter": {
            "description": "Filter by update date (after)",
            "format": "date-time",
            "type": "string"
          },
          "updatedBefore": {
            "description": "Filter by update date (before)",
            "format": "date-time",
            "type": "string"
          },
          "visibility": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AssetVisibility"
              }
            ],
            "description": "Filter by visibility"
          },
          "withDeleted": {
            "description": "Include deleted assets",
            "type": "boolean"
          },
          "withExif": {
            "description": "Include EXIF data in response",
            "type": "boolean"
          },
          "withPeople": {
            "description": "Include assets with people",
            "type": "boolean"
          },
          "withStacked": {
            "description": "Include stacked assets",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "RatingsResponse": {
        "properties": {
          "enabled": {
            "default": false,
            "description": "Whether ratings are enabled",
            "type": "boolean"
          }
        },
        "required": [
          "enabled"
        ],
        "type": "object"
      },
      "RatingsUpdate": {
        "properties": {
          "enabled": {
            "description": "Whether ratings are enabled",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "ReactionLevel": {
        "enum": [
          "album",
          "asset"
        ],
        "type": "string"
      },
      "ReactionType": {
        "enum": [
          "comment",
          "like"
        ],
        "type": "string"
      },
      "ReverseGeocodingStateResponseDto": {
        "properties": {
          "lastImportFileName": {
            "description": "Last import file name",
            "nullable": true,
            "type": "string"
          },
          "lastUpdate": {
            "description": "Last update timestamp",
            "nullable": true,
            "type": "string"
          }
        },
        "required": [
          "lastImportFileName",
          "lastUpdate"
        ],
        "type": "object"
      },
      "RotateParameters": {
        "properties": {
          "angle": {
            "description": "Rotation angle in degrees",
            "type": "number"
          }
        },
        "required": [
          "angle"
        ],
        "type": "object"
      },
      "SearchAlbumResponseDto": {
        "properties": {
          "count": {
            "description": "Number of albums in this page",
            "type": "integer"
          },
          "facets": {
            "items": {
              "$ref": "#/components/schemas/SearchFacetResponseDto"
            },
            "type": "array"
          },
          "items": {
            "items": {
              "$ref": "#/components/schemas/AlbumResponseDto"
            },
            "type": "array"
          },
          "total": {
            "description": "Total number of matching albums",
            "type": "integer"
          }
        },
        "required": [
          "count",
          "facets",
          "items",
          "total"
        ],
        "type": "object"
      },
      "SearchAssetResponseDto": {
        "properties": {
          "count": {
            "description": "Number of assets in this page",
            "type": "integer"
          },
          "facets": {
            "items": {
              "$ref": "#/components/schemas/SearchFacetResponseDto"
            },
            "type": "array"
          },
          "items": {
            "items": {
              "$ref": "#/components/schemas/AssetResponseDto"
            },
            "type": "array"
          },
          "nextPage": {
            "description": "Next page token",
            "nullable": true,
            "type": "string"
          },
          "total": {
            "description": "Total number of matching assets",
            "type": "integer"
          }
        },
        "required": [
          "count",
          "facets",
          "items",
          "nextPage",
          "total"
        ],
        "type": "object"
      },
      "SearchExploreItem": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/AssetResponseDto"
          },
          "value": {
            "description": "Explore value",
            "type": "string"
          }
        },
        "required": [
          "data",
          "value"
        ],
        "type": "object"
      },
      "SearchExploreResponseDto": {
        "properties": {
          "fieldName": {
            "description": "Explore field name",
            "type": "string"
          },
          "items": {
            "items": {
              "$ref": "#/components/schemas/SearchExploreItem"
            },
            "type": "array"
          }
        },
        "required": [
          "fieldName",
          "items"
        ],
        "type": "object"
      },
      "SearchFacetCountResponseDto": {
        "properties": {
          "count": {
            "description": "Number of assets with this facet value",
            "type": "integer"
          },
          "value": {
            "description": "Facet value",
            "type": "string"
          }
        },
        "required": [
          "count",
          "value"
        ],
        "type": "object"
      },
      "SearchFacetResponseDto": {
        "properties": {
          "counts": {
            "description": "Facet counts",
            "items": {
              "$ref": "#/components/schemas/SearchFacetCountResponseDto"
            },
            "type": "array"
          },
          "fieldName": {
            "description": "Facet field name",
            "type": "string"
          }
        },
        "required": [
          "counts",
          "fieldName"
        ],
        "type": "object"
      },
      "SearchResponseDto": {
        "properties": {
          "albums": {
            "$ref": "#/components/schemas/SearchAlbumResponseDto"
          },
          "assets": {
            "$ref": "#/components/schemas/SearchAssetResponseDto"
          }
        },
        "required": [
          "albums",
          "assets"
        ],
        "type": "object"
      },
      "SearchStatisticsResponseDto": {
        "properties": {
          "total": {
            "description": "Total number of matching assets",
            "type": "integer"
          }
        },
        "required": [
          "total"
        ],
        "type": "object"
      },
      "SearchSuggestionType": {
        "enum": [
          "country",
          "state",
          "city",
          "camera-make",
          "camera-model",
          "camera-lens-model"
        ],
        "type": "string"
      },
      "ServerAboutResponseDto": {
        "properties": {
          "build": {
            "description": "Build identifier",
            "type": "string"
          },
          "buildImage": {
            "description": "Build image name",
            "type": "string"
          },
          "buildImageUrl": {
            "description": "Build image URL",
            "type": "string"
          },
          "buildUrl": {
            "description": "Build URL",
            "type": "string"
          },
          "exiftool": {
            "description": "ExifTool version",
            "type": "string"
          },
          "ffmpeg": {
            "description": "FFmpeg version",
            "type": "string"
          },
          "imagemagick": {
            "description": "ImageMagick version",
            "type": "string"
          },
          "libvips": {
            "description": "libvips version",
            "type": "string"
          },
          "licensed": {
            "description": "Whether the server is licensed",
            "type": "boolean"
          },
          "nodejs": {
            "description": "Node.js version",
            "type": "string"
          },
          "repository": {
            "description": "Repository name",
            "type": "string"
          },
          "repositoryUrl": {
            "description": "Repository URL",
            "type": "string"
          },
          "sourceCommit": {
            "description": "Source commit hash",
            "type": "string"
          },
          "sourceRef": {
            "description": "Source reference (branch/tag)",
            "type": "string"
          },
          "sourceUrl": {
            "description": "Source URL",
            "type": "string"
          },
          "thirdPartyBugFeatureUrl": {
            "description": "Third-party bug/feature URL",
            "type": "string"
          },
          "thirdPartyDocumentationUrl": {
            "description": "Third-party documentation URL",
            "type": "string"
          },
          "thirdPartySourceUrl": {
            "description": "Third-party source URL",
            "type": "string"
          },
          "thirdPartySupportUrl": {
            "description": "Third-party support URL",
            "type": "string"
          },
          "version": {
            "description": "Server version",
            "type": "string"
          },
          "versionUrl": {
            "description": "URL to version information",
            "type": "string"
          }
        },
        "required": [
          "licensed",
          "version",
          "versionUrl"
        ],
        "type": "object"
      },
      "ServerApkLinksDto": {
        "properties": {
          "arm64v8a": {
            "description": "APK download link for ARM64 v8a architecture",
            "type": "string"
          },
          "armeabiv7a": {
            "description": "APK download link for ARM EABI v7a architecture",
            "type": "string"
          },
          "universal": {
            "description": "APK download link for universal architecture",
            "type": "string"
          },
          "x86_64": {
            "description": "APK download link for x86_64 architecture",
            "type": "string"
          }
        },
        "required": [
          "arm64v8a",
          "armeabiv7a",
          "universal",
          "x86_64"
        ],
        "type": "object"
      },
      "ServerConfigDto": {
        "properties": {
          "externalDomain": {
            "description": "External domain URL",
            "type": "string"
          },
          "isInitialized": {
            "description": "Whether the server has been initialized",
            "type": "boolean"
          },
          "isOnboarded": {
            "description": "Whether the admin has completed onboarding",
            "type": "boolean"
          },
          "loginPageMessage": {
            "description": "Login page message",
            "type": "string"
          },
          "maintenanceMode": {
            "description": "Whether maintenance mode is active",
            "type": "boolean"
          },
          "mapDarkStyleUrl": {
            "description": "Map dark style URL",
            "type": "string"
          },
          "mapLightStyleUrl": {
            "description": "Map light style URL",
            "type": "string"
          },
          "oauthButtonText": {
            "description": "OAuth button text",
            "type": "string"
          },
          "publicUsers": {
            "description": "Whether public user registration is enabled",
            "type": "boolean"
          },
          "trashDays": {
            "description": "Number of days before trashed assets are permanently deleted",
            "type": "integer"
          },
          "userDeleteDelay": {
            "description": "Delay in days before deleted users are permanently removed",
            "type": "integer"
          }
        },
        "required": [
          "externalDomain",
          "isInitialized",
          "isOnboarded",
          "loginPageMessage",
          "maintenanceMode",
          "mapDarkStyleUrl",
          "mapLightStyleUrl",
          "oauthButtonText",
          "publicUsers",
          "trashDays",
          "userDeleteDelay"
        ],
        "type": "object"
      },
      "ServerFeaturesDto": {
        "properties": {
          "configFile": {
            "description": "Whether config file is available",
            "type": "boolean"
          },
          "duplicateDetection": {
            "description": "Whether duplicate detection is enabled",
            "type": "boolean"
          },
          "email": {
            "description": "Whether email notifications are enabled",
            "type": "boolean"
          },
          "facialRecognition": {
            "description": "Whether facial recognition is enabled",
            "type": "boolean"
          },
          "importFaces": {
            "description": "Whether face import is enabled",
            "type": "boolean"
          },
          "map": {
            "description": "Whether map feature is enabled",
            "type": "boolean"
          },
          "oauth": {
            "description": "Whether OAuth is enabled",
            "type": "boolean"
          },
          "oauthAutoLaunch": {
            "description": "Whether OAuth auto-launch is enabled",
            "type": "boolean"
          },
          "ocr": {
            "description": "Whether OCR is enabled",
            "type": "boolean"
          },
          "passwordLogin": {
            "description": "Whether password login is enabled",
            "type": "boolean"
          },
          "reverseGeocoding": {
            "description": "Whether reverse geocoding is enabled",
            "type": "boolean"
          },
          "search": {
            "description": "Whether search is enabled",
            "type": "boolean"
          },
          "sidecar": {
            "description": "Whether sidecar files are supported",
            "type": "boolean"
          },
          "smartSearch": {
            "description": "Whether smart search is enabled",
            "type": "boolean"
          },
          "trash": {
            "description": "Whether trash feature is enabled",
            "type": "boolean"
          }
        },
        "required": [
          "configFile",
          "duplicateDetection",
          "email",
          "facialRecognition",
          "importFaces",
          "map",
          "oauth",
          "oauthAutoLaunch",
          "ocr",
          "passwordLogin",
          "reverseGeocoding",
          "search",
          "sidecar",
          "smartSearch",
          "trash"
        ],
        "type": "object"
      },
      "ServerMediaTypesResponseDto": {
        "properties": {
          "image": {
            "description": "Supported image MIME types",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "sidecar": {
            "description": "Supported sidecar MIME types",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "video": {
            "description": "Supported video MIME types",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "image",
          "sidecar",
          "video"
        ],
        "type": "object"
      },
      "ServerPingResponse": {
        "properties": {
          "res": {
            "example": "pong",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "res"
        ],
        "type": "object"
      },
      "ServerStatsResponseDto": {
        "properties": {
          "photos": {
            "default": 0,
            "description": "Total number of photos",
            "type": "integer"
          },
          "usage": {
            "default": 0,
            "description": "Total storage usage in bytes",
            "format": "int64",
            "type": "integer"
          },
          "usageByUser": {
            "default": [],
            "example": [
              {
                "photos": 1,
                "videos": 1,
                "diskUsageRaw": 2,
                "usagePhotos": 1,
                "usageVideos": 1
              }
            ],
            "items": {
              "$ref": "#/components/schemas/UsageByUserDto"
            },
            "title": "Array of usage for each user",
            "type": "array"
          },
          "usagePhotos": {
            "default": 0,
            "description": "Storage usage for photos in bytes",
            "format": "int64",
            "type": "integer"
          },
          "usageVideos": {
            "default": 0,
            "description": "Storage usage for videos in bytes",
            "format": "int64",
            "type": "integer"
          },
          "videos": {
            "default": 0,
            "description": "Total number of videos",
            "type": "integer"
          }
        },
        "required": [
          "photos",
          "usage",
          "usageByUser",
          "usagePhotos",
          "usageVideos",
          "videos"
        ],
        "type": "object"
      },
      "ServerStorageResponseDto": {
        "properties": {
          "diskAvailable": {
            "description": "Available disk space (human-readable format)",
            "type": "string"
          },
          "diskAvailableRaw": {
            "description": "Available disk space in bytes",
            "format": "int64",
            "type": "integer"
          },
          "diskSize": {
            "description": "Total disk size (human-readable format)",
            "type": "string"
          },
          "diskSizeRaw": {
            "description": "Total disk size in bytes",
            "format": "int64",
            "type": "integer"
          },
          "diskUsagePercentage": {
            "description": "Disk usage percentage (0-100)",
            "format": "double",
            "type": "number"
          },
          "diskUse": {
            "description": "Used disk space (human-readable format)",
            "type": "string"
          },
          "diskUseRaw": {
            "description": "Used disk space in bytes",
            "format": "int64",
            "type": "integer"
          }
        },
        "required": [
          "diskAvailable",
          "diskAvailableRaw",
          "diskSize",
          "diskSizeRaw",
          "diskUsagePercentage",
          "diskUse",
          "diskUseRaw"
        ],
        "type": "object"
      },
      "ServerThemeDto": {
        "properties": {
          "customCss": {
            "description": "Custom CSS for theming",
            "type": "string"
          }
        },
        "required": [
          "customCss"
        ],
        "type": "object"
      },
      "ServerVersionHistoryResponseDto": {
        "properties": {
          "createdAt": {
            "description": "When this version was first seen",
            "format": "date-time",
            "type": "string"
          },
          "id": {
            "description": "Version history entry ID",
            "type": "string"
          },
          "version": {
            "description": "Version string",
            "type": "string"
          }
        },
        "required": [
          "createdAt",
          "id",
          "version"
        ],
        "type": "object"
      },
      "ServerVersionResponseDto": {
        "properties": {
          "major": {
            "description": "Major version number",
            "type": "integer"
          },
          "minor": {
            "description": "Minor version number",
            "type": "integer"
          },
          "patch": {
            "description": "Patch version number",
            "type": "integer"
          }
        },
        "required": [
          "major",
          "minor",
          "patch"
        ],
        "type": "object"
      },
      "SessionCreateDto": {
        "properties": {
          "deviceOS": {
            "description": "Device OS",
            "type": "string"
          },
          "deviceType": {
            "description": "Device type",
            "type": "string"
          },
          "duration": {
            "description": "Session duration in seconds",
            "minimum": 1,
            "type": "number"
          }
        },
        "type": "object"
      },
      "SessionCreateResponseDto": {
        "properties": {
          "appVersion": {
            "description": "App version",
            "nullable": true,
            "type": "string"
          },
          "createdAt": {
            "description": "Creation date",
            "type": "string"
          },
          "current": {
            "description": "Is current session",
            "type": "boolean"
          },
          "deviceOS": {
            "description": "Device OS",
            "type": "string"
          },
          "deviceType": {
            "description": "Device type",
            "type": "string"
          },
          "expiresAt": {
            "description": "Expiration date",
            "type": "string"
          },
          "id": {
            "description": "Session ID",
            "type": "string"
          },
          "isPendingSyncReset": {
            "description": "Is pending sync reset",
            "type": "boolean"
          },
          "token": {
            "description": "Session token",
            "type": "string"
          },
          "updatedAt": {
            "description": "Last update date",
            "type": "string"
          }
        },
        "required": [
          "appVersion",
          "createdAt",
          "current",
          "deviceOS",
          "deviceType",
          "id",
          "isPendingSyncReset",
          "token",
          "updatedAt"
        ],
        "type": "object"
      },
      "SessionResponseDto": {
        "properties": {
          "appVersion": {
            "description": "App version",
            "nullable": true,
            "type": "string"
          },
          "createdAt": {
            "description": "Creation date",
            "type": "string"
          },
          "current": {
            "description": "Is current session",
            "type": "boolean"
          },
          "deviceOS": {
            "description": "Device OS",
            "type": "string"
          },
          "deviceType": {
            "description": "Device type",
            "type": "string"
          },
          "expiresAt": {
            "description": "Expiration date",
            "type": "string"
          },
          "id": {
            "description": "Session ID",
            "type": "string"
          },
          "isPendingSyncReset": {
            "description": "Is pending sync reset",
            "type": "boolean"
          },
          "updatedAt": {
            "description": "Last update date",
            "type": "string"
          }
        },
        "required": [
          "appVersion",
          "createdAt",
          "current",
          "deviceOS",
          "deviceType",
          "id",
          "isPendingSyncReset",
          "updatedAt"
        ],
        "type": "object"
      },
      "SessionUnlockDto": {
        "properties": {
          "password": {
            "description": "User password (required if PIN code is not provided)",
            "type": "string"
          },
          "pinCode": {
            "description": "New PIN code (4-6 digits)",
            "example": "123456",
            "type": "string"
          }
        },
        "type": "object"
      },
      "SessionUpdateDto": {
        "properties": {
          "isPendingSyncReset": {
            "description": "Reset pending sync state",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "SetMaintenanceModeDto": {
        "properties": {
          "action": {
            "allOf": [
              {
                "$ref": "#/components/schemas/MaintenanceAction"
              }
            ],
            "description": "Maintenance action"
          },
          "restoreBackupFilename": {
            "description": "Restore backup filename",
            "type": "string"
          }
        },
        "required": [
          "action"
        ],
        "type": "object"
      },
      "SharedLinkCreateDto": {
        "properties": {
          "albumId": {
            "description": "Album ID (for album sharing)",
            "format": "uuid",
            "type": "string"
          },
          "allowDownload": {
            "default": true,
            "description": "Allow downloads",
            "type": "boolean"
          },
          "allowUpload": {
            "description": "Allow uploads",
            "type": "boolean"
          },
          "assetIds": {
            "description": "Asset IDs (for individual assets)",
            "items": {
              "format": "uuid",
              "type": "string"
            },
            "type": "array"
          },
          "description": {
            "description": "Link description",
            "nullable": true,
            "type": "string"
          },
          "expiresAt": {
            "default": null,
            "description": "Expiration date",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "password": {
            "description": "Link password",
            "nullable": true,
            "type": "string"
          },
          "showMetadata": {
            "default": true,
            "description": "Show metadata",
            "type": "boolean"
          },
          "slug": {
            "description": "Custom URL slug",
            "nullable": true,
            "type": "string"
          },
          "type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/SharedLinkType"
              }
            ],
            "description": "Shared link type"
          }
        },
        "required": [
          "type"
        ],
        "type": "object"
      },
      "SharedLinkEditDto": {
        "properties": {
          "allowDownload": {
            "description": "Allow downloads",
            "type": "boolean"
          },
          "allowUpload": {
            "description": "Allow uploads",
            "type": "boolean"
          },
          "changeExpiryTime": {
            "description": "Whether to change the expiry time. Few clients cannot send null to set the expiryTime to never. Setting this flag and not sending expiryAt is considered as null instead. Clients that can send null values can ignore this.",
            "type": "boolean"
          },
          "description": {
            "description": "Link description",
            "nullable": true,
            "type": "string"
          },
          "expiresAt": {
            "description": "Expiration date",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "password": {
            "description": "Link password",
            "nullable": true,
            "type": "string"
          },
          "showMetadata": {
            "description": "Show metadata",
            "type": "boolean"
          },
          "slug": {
            "description": "Custom URL slug",
            "nullable": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "SharedLinkLoginDto": {
        "properties": {
          "password": {
            "description": "Shared link password",
            "example": "password",
            "type": "string"
          }
        },
        "required": [
          "password"
        ],
        "type": "object"
      },
      "SharedLinkResponseDto": {
        "properties": {
          "album": {
            "$ref": "#/components/schemas/AlbumResponseDto"
          },
          "allowDownload": {
            "description": "Allow downloads",
            "type": "boolean"
          },
          "allowUpload": {
            "description": "Allow uploads",
            "type": "boolean"
          },
          "assets": {
            "items": {
              "$ref": "#/components/schemas/AssetResponseDto"
            },
            "type": "array"
          },
          "createdAt": {
            "description": "Creation date",
            "format": "date-time",
            "type": "string"
          },
          "description": {
            "description": "Link description",
            "nullable": true,
            "type": "string"
          },
          "expiresAt": {
            "description": "Expiration date",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "id": {
            "description": "Shared link ID",
            "type": "string"
          },
          "key": {
            "description": "Encryption key (base64url)",
            "type": "string"
          },
          "password": {
            "description": "Has password",
            "nullable": true,
            "type": "string"
          },
          "showMetadata": {
            "description": "Show metadata",
            "type": "boolean"
          },
          "slug": {
            "description": "Custom URL slug",
            "nullable": true,
            "type": "string"
          },
          "token": {
            "deprecated": true,
            "description": "Access token",
            "nullable": true,
            "type": "string",
            "x-immich-history": [
              {
                "version": "v1",
                "state": "Added"
              },
              {
                "version": "v2",
                "state": "Stable"
              },
              {
                "version": "v2.6.0",
                "state": "Deprecated"
              }
            ],
            "x-immich-state": "Deprecated"
          },
          "type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/SharedLinkType"
              }
            ],
            "description": "Shared link type"
          },
          "userId": {
            "description": "Owner user ID",
            "type": "string"
          }
        },
        "required": [
          "allowDownload",
          "allowUpload",
          "assets",
          "createdAt",
          "description",
          "expiresAt",
          "id",
          "key",
          "password",
          "showMetadata",
          "slug",
          "type",
          "userId"
        ],
        "type": "object"
      },
      "SharedLinkType": {
        "description": "Shared link type",
        "enum": [
          "ALBUM",
          "INDIVIDUAL"
        ],
        "type": "string"
      },
      "SharedLinksResponse": {
        "properties": {
          "enabled": {
            "default": true,
            "description": "Whether shared links are enabled",
            "type": "boolean"
          },
          "sidebarWeb": {
            "default": false,
            "description": "Whether shared links appear in web sidebar",
            "type": "boolean"
          }
        },
        "required": [
          "enabled",
          "sidebarWeb"
        ],
        "type": "object"
      },
      "SharedLinksUpdate": {
        "properties": {
          "enabled": {
            "description": "Whether shared links are enabled",
            "type": "boolean"
          },
          "sidebarWeb": {
            "description": "Whether shared links appear in web sidebar",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "SignUpDto": {
        "properties": {
          "email": {
            "description": "User email",
            "example": "testuser@email.com",
            "format": "email",
            "type": "string"
          },
          "name": {
            "description": "User name",
            "example": "Admin",
            "type": "string"
          },
          "password": {
            "description": "User password",
            "example": "password",
            "type": "string"
          }
        },
        "required": [
          "email",
          "name",
          "password"
        ],
        "type": "object"
      },
      "SmartSearchDto": {
        "properties": {
          "albumIds": {
            "description": "Filter by album IDs",
            "items": {
              "format": "uuid",
              "type": "string"
            },
            "type": "array"
          },
          "city": {
            "description": "Filter by city name",
            "nullable": true,
            "type": "string"
          },
          "country": {
            "description": "Filter by country name",
            "nullable": true,
            "type": "string"
          },
          "createdAfter": {
            "description": "Filter by creation date (after)",
            "format": "date-time",
            "type": "string"
          },
          "createdBefore": {
            "description": "Filter by creation date (before)",
            "format": "date-time",
            "type": "string"
          },
          "deviceId": {
            "description": "Device ID to filter by",
            "type": "string"
          },
          "isEncoded": {
            "description": "Filter by encoded status",
            "type": "boolean"
          },
          "isFavorite": {
            "description": "Filter by favorite status",
            "type": "boolean"
          },
          "isMotion": {
            "description": "Filter by motion photo status",
            "type": "boolean"
          },
          "isNotInAlbum": {
            "description": "Filter assets not in any album",
            "type": "boolean"
          },
          "isOffline": {
            "description": "Filter by offline status",
            "type": "boolean"
          },
          "language": {
            "description": "Search language code",
            "type": "string"
          },
          "lensModel": {
            "description": "Filter by lens model",
            "nullable": true,
            "type": "string"
          },
          "libraryId": {
            "description": "Library ID to filter by",
            "format": "uuid",
            "nullable": true,
            "type": "string"
          },
          "make": {
            "description": "Filter by camera make",
            "type": "string"
          },
          "model": {
            "description": "Filter by camera model",
            "nullable": true,
            "type": "string"
          },
          "ocr": {
            "description": "Filter by OCR text content",
            "type": "string"
          },
          "page": {
            "description": "Page number",
            "minimum": 1,
            "type": "number"
          },
          "personIds": {
            "description": "Filter by person IDs",
            "items": {
              "format": "uuid",
              "type": "string"
            },
            "type": "array"
          },
          "query": {
            "description": "Natural language search query",
            "type": "string"
          },
          "queryAssetId": {
            "description": "Asset ID to use as search reference",
            "format": "uuid",
            "type": "string"
          },
          "rating": {
            "description": "Filter by rating",
            "maximum": 5,
            "minimum": -1,
            "type": "number"
          },
          "size": {
            "description": "Number of results to return",
            "maximum": 1000,
            "minimum": 1,
            "type": "number"
          },
          "state": {
            "description": "Filter by state/province name",
            "nullable": true,
            "type": "string"
          },
          "tagIds": {
            "description": "Filter by tag IDs",
            "items": {
              "format": "uuid",
              "type": "string"
            },
            "nullable": true,
            "type": "array"
          },
          "takenAfter": {
            "description": "Filter by taken date (after)",
            "format": "date-time",
            "type": "string"
          },
          "takenBefore": {
            "description": "Filter by taken date (before)",
            "format": "date-time",
            "type": "string"
          },
          "trashedAfter": {
            "description": "Filter by trash date (after)",
            "format": "date-time",
            "type": "string"
          },
          "trashedBefore": {
            "description": "Filter by trash date (before)",
            "format": "date-time",
            "type": "string"
          },
          "type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AssetTypeEnum"
              }
            ],
            "description": "Asset type filter"
          },
          "updatedAfter": {
            "description": "Filter by update date (after)",
            "format": "date-time",
            "type": "string"
          },
          "updatedBefore": {
            "description": "Filter by update date (before)",
            "format": "date-time",
            "type": "string"
          },
          "visibility": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AssetVisibility"
              }
            ],
            "description": "Filter by visibility"
          },
          "withDeleted": {
            "description": "Include deleted assets",
            "type": "boolean"
          },
          "withExif": {
            "description": "Include EXIF data in response",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "SourceType": {
        "description": "Face detection source type",
        "enum": [
          "machine-learning",
          "exif",
          "manual"
        ],
        "type": "string"
      },
      "StackCreateDto": {
        "properties": {
          "assetIds": {
            "description": "Asset IDs (first becomes primary, min 2)",
            "items": {
              "format": "uuid",
              "type": "string"
            },
            "minItems": 2,
            "type": "array"
          }
        },
        "required": [
          "assetIds"
        ],
        "type": "object"
      },
      "StackResponseDto": {
        "properties": {
          "assets": {
            "description": "Stack assets",
            "items": {
              "$ref": "#/components/schemas/AssetResponseDto"
            },
            "type": "array"
          },
          "id": {
            "description": "Stack ID",
            "type": "string"
          },
          "primaryAssetId": {
            "description": "Primary asset ID",
            "type": "string"
          }
        },
        "required": [
          "assets",
          "id",
          "primaryAssetId"
        ],
        "type": "object"
      },
      "StackUpdateDto": {
        "properties": {
          "primaryAssetId": {
            "description": "Primary asset ID",
            "format": "uuid",
            "type": "string"
          }
        },
        "type": "object"
      },
      "StatisticsSearchDto": {
        "properties": {
          "albumIds": {
            "description": "Filter by album IDs",
            "items": {
              "format": "uuid",
              "type": "string"
            },
            "type": "array"
          },
          "city": {
            "description": "Filter by city name",
            "nullable": true,
            "type": "string"
          },
          "country": {
            "description": "Filter by country name",
            "nullable": true,
            "type": "string"
          },
          "createdAfter": {
            "description": "Filter by creation date (after)",
            "format": "date-time",
            "type": "string"
          },
          "createdBefore": {
            "description": "Filter by creation date (before)",
            "format": "date-time",
            "type": "string"
          },
          "description": {
            "description": "Filter by description text",
            "type": "string"
          },
          "deviceId": {
            "description": "Device ID to filter by",
            "type": "string"
          },
          "isEncoded": {
            "description": "Filter by encoded status",
            "type": "boolean"
          },
          "isFavorite": {
            "description": "Filter by favorite status",
            "type": "boolean"
          },
          "isMotion": {
            "description": "Filter by motion photo status",
            "type": "boolean"
          },
          "isNotInAlbum": {
            "description": "Filter assets not in any album",
            "type": "boolean"
          },
          "isOffline": {
            "description": "Filter by offline status",
            "type": "boolean"
          },
          "lensModel": {
            "description": "Filter by lens model",
            "nullable": true,
            "type": "string"
          },
          "libraryId": {
            "description": "Library ID to filter by",
            "format": "uuid",
            "nullable": true,
            "type": "string"
          },
          "make": {
            "description": "Filter by camera make",
            "type": "string"
          },
          "model": {
            "description": "Filter by camera model",
            "nullable": true,
            "type": "string"
          },
          "ocr": {
            "description": "Filter by OCR text content",
            "type": "string"
          },
          "personIds": {
            "description": "Filter by person IDs",
            "items": {
              "format": "uuid",
              "type": "string"
            },
            "type": "array"
          },
          "rating": {
            "description": "Filter by rating",
            "maximum": 5,
            "minimum": -1,
            "type": "number"
          },
          "state": {
            "description": "Filter by state/province name",
            "nullable": true,
            "type": "string"
          },
          "tagIds": {
            "description": "Filter by tag IDs",
            "items": {
              "format": "uuid",
              "type": "string"
            },
            "nullable": true,
            "type": "array"
          },
          "takenAfter": {
            "description": "Filter by taken date (after)",
            "format": "date-time",
            "type": "string"
          },
          "takenBefore": {
            "description": "Filter by taken date (before)",
            "format": "date-time",
            "type": "string"
          },
          "trashedAfter": {
            "description": "Filter by trash date (after)",
            "format": "date-time",
            "type": "string"
          },
          "trashedBefore": {
            "description": "Filter by trash date (before)",
            "format": "date-time",
            "type": "string"
          },
          "type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AssetTypeEnum"
              }
            ],
            "description": "Asset type filter"
          },
          "updatedAfter": {
            "description": "Filter by update date (after)",
            "format": "date-time",
            "type": "string"
          },
          "updatedBefore": {
            "description": "Filter by update date (before)",
            "format": "date-time",
            "type": "string"
          },
          "visibility": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AssetVisibility"
              }
            ],
            "description": "Filter by visibility"
          }
        },
        "type": "object"
      },
      "StorageFolder": {
        "description": "Storage folder",
        "enum": [
          "encoded-video",
          "library",
          "upload",
          "profile",
          "thumbs",
          "backups"
        ],
        "type": "string"
      },
      "SyncAckDeleteDto": {
        "properties": {
          "types": {
            "description": "Sync entity types to delete acks for",
            "items": {
              "$ref": "#/components/schemas/SyncEntityType"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "SyncAckDto": {
        "properties": {
          "ack": {
            "description": "Acknowledgment ID",
            "type": "string"
          },
          "type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/SyncEntityType"
              }
            ],
            "description": "Sync entity type"
          }
        },
        "required": [
          "ack",
          "type"
        ],
        "type": "object"
      },
      "SyncAckSetDto": {
        "properties": {
          "acks": {
            "description": "Acknowledgment IDs (max 1000)",
            "items": {
              "type": "string"
            },
            "maxItems": 1000,
            "type": "array"
          }
        },
        "required": [
          "acks"
        ],
        "type": "object"
      },
      "SyncAckV1": {
        "properties": {},
        "type": "object"
      },
      "SyncAlbumDeleteV1": {
        "properties": {
          "albumId": {
            "description": "Album ID",
            "type": "string"
          }
        },
        "required": [
          "albumId"
        ],
        "type": "object"
      },
      "SyncAlbumToAssetDeleteV1": {
        "properties": {
          "albumId": {
            "description": "Album ID",
            "type": "string"
          },
          "assetId": {
            "description": "Asset ID",
            "type": "string"
          }
        },
        "required": [
          "albumId",
          "assetId"
        ],
        "type": "object"
      },
      "SyncAlbumToAssetV1": {
        "properties": {
          "albumId": {
            "description": "Album ID",
            "type": "string"
          },
          "assetId": {
            "description": "Asset ID",
            "type": "string"
          }
        },
        "required": [
          "albumId",
          "assetId"
        ],
        "type": "object"
      },
      "SyncAlbumUserDeleteV1": {
        "properties": {
          "albumId": {
            "description": "Album ID",
            "type": "string"
          },
          "userId": {
            "description": "User ID",
            "type": "string"
          }
        },
        "required": [
          "albumId",
          "userId"
        ],
        "type": "object"
      },
      "SyncAlbumUserV1": {
        "properties": {
          "albumId": {
            "description": "Album ID",
            "type": "string"
          },
          "role": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AlbumUserRole"
              }
            ],
            "description": "Album user role"
          },
          "userId": {
            "description": "User ID",
            "type": "string"
          }
        },
        "required": [
          "albumId",
          "role",
          "userId"
        ],
        "type": "object"
      },
      "SyncAlbumV1": {
        "properties": {
          "createdAt": {
            "description": "Created at",
            "format": "date-time",
            "type": "string"
          },
          "description": {
            "description": "Album description",
            "type": "string"
          },
          "id": {
            "description": "Album ID",
            "type": "string"
          },
          "isActivityEnabled": {
            "description": "Is activity enabled",
            "type": "boolean"
          },
          "name": {
            "description": "Album name",
            "type": "string"
          },
          "order": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AssetOrder"
              }
            ]
          },
          "ownerId": {
            "description": "Owner ID",
            "type": "string"
          },
          "thumbnailAssetId": {
            "description": "Thumbnail asset ID",
            "nullable": true,
            "type": "string"
          },
          "updatedAt": {
            "description": "Updated at",
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "createdAt",
          "description",
          "id",
          "isActivityEnabled",
          "name",
          "order",
          "ownerId",
          "thumbnailAssetId",
          "updatedAt"
        ],
        "type": "object"
      },
      "SyncAssetDeleteV1": {
        "properties": {
          "assetId": {
            "description": "Asset ID",
            "type": "string"
          }
        },
        "required": [
          "assetId"
        ],
        "type": "object"
      },
      "SyncAssetExifV1": {
        "properties": {
          "assetId": {
            "description": "Asset ID",
            "type": "string"
          },
          "city": {
            "description": "City",
            "nullable": true,
            "type": "string"
          },
          "country": {
            "description": "Country",
            "nullable": true,
            "type": "string"
          },
          "dateTimeOriginal": {
            "description": "Date time original",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "description": {
            "description": "Description",
            "nullable": true,
            "type": "string"
          },
          "exifImageHeight": {
            "description": "Exif image height",
            "nullable": true,
            "type": "integer"
          },
          "exifImageWidth": {
            "description": "Exif image width",
            "nullable": true,
            "type": "integer"
          },
          "exposureTime": {
            "description": "Exposure time",
            "nullable": true,
            "type": "string"
          },
          "fNumber": {
            "description": "F number",
            "format": "double",
            "nullable": true,
            "type": "number"
          },
          "fileSizeInByte": {
            "description": "File size in byte",
            "nullable": true,
            "type": "integer"
          },
          "focalLength": {
            "description": "Focal length",
            "format": "double",
            "nullable": true,
            "type": "number"
          },
          "fps": {
            "description": "FPS",
            "format": "double",
            "nullable": true,
            "type": "number"
          },
          "iso": {
            "description": "ISO",
            "nullable": true,
            "type": "integer"
          },
          "latitude": {
            "description": "Latitude",
            "format": "double",
            "nullable": true,
            "type": "number"
          },
          "lensModel": {
            "description": "Lens model",
            "nullable": true,
            "type": "string"
          },
          "longitude": {
            "description": "Longitude",
            "format": "double",
            "nullable": true,
            "type": "number"
          },
          "make": {
            "description": "Make",
            "nullable": true,
            "type": "string"
          },
          "model": {
            "description": "Model",
            "nullable": true,
            "type": "string"
          },
          "modifyDate": {
            "description": "Modify date",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "orientation": {
            "description": "Orientation",
            "nullable": true,
            "type": "string"
          },
          "profileDescription": {
            "description": "Profile description",
            "nullable": true,
            "type": "string"
          },
          "projectionType": {
            "description": "Projection type",
            "nullable": true,
            "type": "string"
          },
          "rating": {
            "description": "Rating",
            "nullable": true,
            "type": "integer"
          },
          "state": {
            "description": "State",
            "nullable": true,
            "type": "string"
          },
          "timeZone": {
            "description": "Time zone",
            "nullable": true,
            "type": "string"
          }
        },
        "required": [
          "assetId",
          "city",
          "country",
          "dateTimeOriginal",
          "description",
          "exifImageHeight",
          "exifImageWidth",
          "exposureTime",
          "fNumber",
          "fileSizeInByte",
          "focalLength",
          "fps",
          "iso",
          "latitude",
          "lensModel",
          "longitude",
          "make",
          "model",
          "modifyDate",
          "orientation",
          "profileDescription",
          "projectionType",
          "rating",
          "state",
          "timeZone"
        ],
        "type": "object"
      },
      "SyncAssetFaceDeleteV1": {
        "properties": {
          "assetFaceId": {
            "description": "Asset face ID",
            "type": "string"
          }
        },
        "required": [
          "assetFaceId"
        ],
        "type": "object"
      },
      "SyncAssetFaceV1": {
        "properties": {
          "assetId": {
            "description": "Asset ID",
            "type": "string"
          },
          "boundingBoxX1": {
            "type": "integer"
          },
          "boundingBoxX2": {
            "type": "integer"
          },
          "boundingBoxY1": {
            "type": "integer"
          },
          "boundingBoxY2": {
            "type": "integer"
          },
          "id": {
            "description": "Asset face ID",
            "type": "string"
          },
          "imageHeight": {
            "type": "integer"
          },
          "imageWidth": {
            "type": "integer"
          },
          "personId": {
            "description": "Person ID",
            "nullable": true,
            "type": "string"
          },
          "sourceType": {
            "description": "Source type",
            "type": "string"
          }
        },
        "required": [
          "assetId",
          "boundingBoxX1",
          "boundingBoxX2",
          "boundingBoxY1",
          "boundingBoxY2",
          "id",
          "imageHeight",
          "imageWidth",
          "personId",
          "sourceType"
        ],
        "type": "object"
      },
      "SyncAssetMetadataDeleteV1": {
        "properties": {
          "assetId": {
            "description": "Asset ID",
            "type": "string"
          },
          "key": {
            "description": "Key",
            "type": "string"
          }
        },
        "required": [
          "assetId",
          "key"
        ],
        "type": "object"
      },
      "SyncAssetMetadataV1": {
        "properties": {
          "assetId": {
            "description": "Asset ID",
            "type": "string"
          },
          "key": {
            "description": "Key",
            "type": "string"
          },
          "value": {
            "description": "Value",
            "type": "object"
          }
        },
        "required": [
          "assetId",
          "key",
          "value"
        ],
        "type": "object"
      },
      "SyncAssetV1": {
        "properties": {
          "checksum": {
            "description": "Checksum",
            "type": "string"
          },
          "deletedAt": {
            "description": "Deleted at",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "duration": {
            "description": "Duration",
            "nullable": true,
            "type": "string"
          },
          "fileCreatedAt": {
            "description": "File created at",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "fileModifiedAt": {
            "description": "File modified at",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "height": {
            "description": "Asset height",
            "nullable": true,
            "type": "integer"
          },
          "id": {
            "description": "Asset ID",
            "type": "string"
          },
          "isEdited": {
            "description": "Is edited",
            "type": "boolean"
          },
          "isFavorite": {
            "description": "Is favorite",
            "type": "boolean"
          },
          "libraryId": {
            "description": "Library ID",
            "nullable": true,
            "type": "string"
          },
          "livePhotoVideoId": {
            "description": "Live photo video ID",
            "nullable": true,
            "type": "string"
          },
          "localDateTime": {
            "description": "Local date time",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "originalFileName": {
            "description": "Original file name",
            "type": "string"
          },
          "ownerId": {
            "description": "Owner ID",
            "type": "string"
          },
          "stackId": {
            "description": "Stack ID",
            "nullable": true,
            "type": "string"
          },
          "thumbhash": {
            "description": "Thumbhash",
            "nullable": true,
            "type": "string"
          },
          "type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AssetTypeEnum"
              }
            ],
            "description": "Asset type"
          },
          "visibility": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AssetVisibility"
              }
            ],
            "description": "Asset visibility"
          },
          "width": {
            "description": "Asset width",
            "nullable": true,
            "type": "integer"
          }
        },
        "required": [
          "checksum",
          "deletedAt",
          "duration",
          "fileCreatedAt",
          "fileModifiedAt",
          "height",
          "id",
          "isEdited",
          "isFavorite",
          "libraryId",
          "livePhotoVideoId",
          "localDateTime",
          "originalFileName",
          "ownerId",
          "stackId",
          "thumbhash",
          "type",
          "visibility",
          "width"
        ],
        "type": "object"
      },
      "SyncAuthUserV1": {
        "properties": {
          "avatarColor": {
            "allOf": [
              {
                "$ref": "#/components/schemas/UserAvatarColor"
              }
            ],
            "description": "User avatar color",
            "nullable": true
          },
          "deletedAt": {
            "description": "User deleted at",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "email": {
            "description": "User email",
            "type": "string"
          },
          "hasProfileImage": {
            "description": "User has profile image",
            "type": "boolean"
          },
          "id": {
            "description": "User ID",
            "type": "string"
          },
          "isAdmin": {
            "description": "User is admin",
            "type": "boolean"
          },
          "name": {
            "description": "User name",
            "type": "string"
          },
          "oauthId": {
            "description": "User OAuth ID",
            "type": "string"
          },
          "pinCode": {
            "description": "User pin code",
            "nullable": true,
            "type": "string"
          },
          "profileChangedAt": {
            "description": "User profile changed at",
            "format": "date-time",
            "type": "string"
          },
          "quotaSizeInBytes": {
            "nullable": true,
            "type": "integer"
          },
          "quotaUsageInBytes": {
            "type": "integer"
          },
          "storageLabel": {
            "description": "User storage label",
            "nullable": true,
            "type": "string"
          }
        },
        "required": [
          "avatarColor",
          "deletedAt",
          "email",
          "hasProfileImage",
          "id",
          "isAdmin",
          "name",
          "oauthId",
          "pinCode",
          "profileChangedAt",
          "quotaSizeInBytes",
          "quotaUsageInBytes",
          "storageLabel"
        ],
        "type": "object"
      },
      "SyncCompleteV1": {
        "properties": {},
        "type": "object"
      },
      "SyncEntityType": {
        "description": "Sync entity type",
        "enum": [
          "AuthUserV1",
          "UserV1",
          "UserDeleteV1",
          "AssetV1",
          "AssetDeleteV1",
          "AssetExifV1",
          "AssetMetadataV1",
          "AssetMetadataDeleteV1",
          "PartnerV1",
          "PartnerDeleteV1",
          "PartnerAssetV1",
          "PartnerAssetBackfillV1",
          "PartnerAssetDeleteV1",
          "PartnerAssetExifV1",
          "PartnerAssetExifBackfillV1",
          "PartnerStackBackfillV1",
          "PartnerStackDeleteV1",
          "PartnerStackV1",
          "AlbumV1",
          "AlbumDeleteV1",
          "AlbumUserV1",
          "AlbumUserBackfillV1",
          "AlbumUserDeleteV1",
          "AlbumAssetCreateV1",
          "AlbumAssetUpdateV1",
          "AlbumAssetBackfillV1",
          "AlbumAssetExifCreateV1",
          "AlbumAssetExifUpdateV1",
          "AlbumAssetExifBackfillV1",
          "AlbumToAssetV1",
          "AlbumToAssetDeleteV1",
          "AlbumToAssetBackfillV1",
          "MemoryV1",
          "MemoryDeleteV1",
          "MemoryToAssetV1",
          "MemoryToAssetDeleteV1",
          "StackV1",
          "StackDeleteV1",
          "PersonV1",
          "PersonDeleteV1",
          "AssetFaceV1",
          "AssetFaceDeleteV1",
          "UserMetadataV1",
          "UserMetadataDeleteV1",
          "SyncAckV1",
          "SyncResetV1",
          "SyncCompleteV1"
        ],
        "type": "string"
      },
      "SyncMemoryAssetDeleteV1": {
        "properties": {
          "assetId": {
            "description": "Asset ID",
            "type": "string"
          },
          "memoryId": {
            "description": "Memory ID",
            "type": "string"
          }
        },
        "required": [
          "assetId",
          "memoryId"
        ],
        "type": "object"
      },
      "SyncMemoryAssetV1": {
        "properties": {
          "assetId": {
            "description": "Asset ID",
            "type": "string"
          },
          "memoryId": {
            "description": "Memory ID",
            "type": "string"
          }
        },
        "required": [
          "assetId",
          "memoryId"
        ],
        "type": "object"
      },
      "SyncMemoryDeleteV1": {
        "properties": {
          "memoryId": {
            "description": "Memory ID",
            "type": "string"
          }
        },
        "required": [
          "memoryId"
        ],
        "type": "object"
      },
      "SyncMemoryV1": {
        "properties": {
          "createdAt": {
            "description": "Created at",
            "format": "date-time",
            "type": "string"
          },
          "data": {
            "description": "Data",
            "type": "object"
          },
          "deletedAt": {
            "description": "Deleted at",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "hideAt": {
            "description": "Hide at",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "id": {
            "description": "Memory ID",
            "type": "string"
          },
          "isSaved": {
            "description": "Is saved",
            "type": "boolean"
          },
          "memoryAt": {
            "description": "Memory at",
            "format": "date-time",
            "type": "string"
          },
          "ownerId": {
            "description": "Owner ID",
            "type": "string"
          },
          "seenAt": {
            "description": "Seen at",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "showAt": {
            "description": "Show at",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/MemoryType"
              }
            ],
            "description": "Memory type"
          },
          "updatedAt": {
            "description": "Updated at",
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "createdAt",
          "data",
          "deletedAt",
          "hideAt",
          "id",
          "isSaved",
          "memoryAt",
          "ownerId",
          "seenAt",
          "showAt",
          "type",
          "updatedAt"
        ],
        "type": "object"
      },
      "SyncPartnerDeleteV1": {
        "properties": {
          "sharedById": {
            "description": "Shared by ID",
            "type": "string"
          },
          "sharedWithId": {
            "description": "Shared with ID",
            "type": "string"
          }
        },
        "required": [
          "sharedById",
          "sharedWithId"
        ],
        "type": "object"
      },
      "SyncPartnerV1": {
        "properties": {
          "inTimeline": {
            "description": "In timeline",
            "type": "boolean"
          },
          "sharedById": {
            "description": "Shared by ID",
            "type": "string"
          },
          "sharedWithId": {
            "description": "Shared with ID",
            "type": "string"
          }
        },
        "required": [
          "inTimeline",
          "sharedById",
          "sharedWithId"
        ],
        "type": "object"
      },
      "SyncPersonDeleteV1": {
        "properties": {
          "personId": {
            "description": "Person ID",
            "type": "string"
          }
        },
        "required": [
          "personId"
        ],
        "type": "object"
      },
      "SyncPersonV1": {
        "properties": {
          "birthDate": {
            "description": "Birth date",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "color": {
            "description": "Color",
            "nullable": true,
            "type": "string"
          },
          "createdAt": {
            "description": "Created at",
            "format": "date-time",
            "type": "string"
          },
          "faceAssetId": {
            "description": "Face asset ID",
            "nullable": true,
            "type": "string"
          },
          "id": {
            "description": "Person ID",
            "type": "string"
          },
          "isFavorite": {
            "description": "Is favorite",
            "type": "boolean"
          },
          "isHidden": {
            "description": "Is hidden",
            "type": "boolean"
          },
          "name": {
            "description": "Person name",
            "type": "string"
          },
          "ownerId": {
            "description": "Owner ID",
            "type": "string"
          },
          "updatedAt": {
            "description": "Updated at",
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "birthDate",
          "color",
          "createdAt",
          "faceAssetId",
          "id",
          "isFavorite",
          "isHidden",
          "name",
          "ownerId",
          "updatedAt"
        ],
        "type": "object"
      },
      "SyncRequestType": {
        "description": "Sync request types",
        "enum": [
          "AlbumsV1",
          "AlbumUsersV1",
          "AlbumToAssetsV1",
          "AlbumAssetsV1",
          "AlbumAssetExifsV1",
          "AssetsV1",
          "AssetExifsV1",
          "AssetMetadataV1",
          "AuthUsersV1",
          "MemoriesV1",
          "MemoryToAssetsV1",
          "PartnersV1",
          "PartnerAssetsV1",
          "PartnerAssetExifsV1",
          "PartnerStacksV1",
          "StacksV1",
          "UsersV1",
          "PeopleV1",
          "AssetFacesV1",
          "UserMetadataV1"
        ],
        "type": "string"
      },
      "SyncResetV1": {
        "properties": {},
        "type": "object"
      },
      "SyncStackDeleteV1": {
        "properties": {
          "stackId": {
            "description": "Stack ID",
            "type": "string"
          }
        },
        "required": [
          "stackId"
        ],
        "type": "object"
      },
      "SyncStackV1": {
        "properties": {
          "createdAt": {
            "description": "Created at",
            "format": "date-time",
            "type": "string"
          },
          "id": {
            "description": "Stack ID",
            "type": "string"
          },
          "ownerId": {
            "description": "Owner ID",
            "type": "string"
          },
          "primaryAssetId": {
            "description": "Primary asset ID",
            "type": "string"
          },
          "updatedAt": {
            "description": "Updated at",
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "createdAt",
          "id",
          "ownerId",
          "primaryAssetId",
          "updatedAt"
        ],
        "type": "object"
      },
      "SyncStreamDto": {
        "properties": {
          "reset": {
            "description": "Reset sync state",
            "type": "boolean"
          },
          "types": {
            "description": "Sync request types",
            "items": {
              "$ref": "#/components/schemas/SyncRequestType"
            },
            "type": "array"
          }
        },
        "required": [
          "types"
        ],
        "type": "object"
      },
      "SyncUserDeleteV1": {
        "properties": {
          "userId": {
            "description": "User ID",
            "type": "string"
          }
        },
        "required": [
          "userId"
        ],
        "type": "object"
      },
      "SyncUserMetadataDeleteV1": {
        "properties": {
          "key": {
            "allOf": [
              {
                "$ref": "#/components/schemas/UserMetadataKey"
              }
            ],
            "description": "User metadata key"
          },
          "userId": {
            "description": "User ID",
            "type": "string"
          }
        },
        "required": [
          "key",
          "userId"
        ],
        "type": "object"
      },
      "SyncUserMetadataV1": {
        "properties": {
          "key": {
            "allOf": [
              {
                "$ref": "#/components/schemas/UserMetadataKey"
              }
            ],
            "description": "User metadata key"
          },
          "userId": {
            "description": "User ID",
            "type": "string"
          },
          "value": {
            "description": "User metadata value",
            "type": "object"
          }
        },
        "required": [
          "key",
          "userId",
          "value"
        ],
        "type": "object"
      },
      "SyncUserV1": {
        "properties": {
          "avatarColor": {
            "allOf": [
              {
                "$ref": "#/components/schemas/UserAvatarColor"
              }
            ],
            "description": "User avatar color",
            "nullable": true
          },
          "deletedAt": {
            "description": "User deleted at",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "email": {
            "description": "User email",
            "type": "string"
          },
          "hasProfileImage": {
            "description": "User has profile image",
            "type": "boolean"
          },
          "id": {
            "description": "User ID",
            "type": "string"
          },
          "name": {
            "description": "User name",
            "type": "string"
          },
          "profileChangedAt": {
            "description": "User profile changed at",
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "avatarColor",
          "deletedAt",
          "email",
          "hasProfileImage",
          "id",
          "name",
          "profileChangedAt"
        ],
        "type": "object"
      },
      "SystemConfigBackupsDto": {
        "properties": {
          "database": {
            "$ref": "#/components/schemas/DatabaseBackupConfig"
          }
        },
        "required": [
          "database"
        ],
        "type": "object"
      },
      "SystemConfigDto": {
        "properties": {
          "backup": {
            "$ref": "#/components/schemas/SystemConfigBackupsDto"
          },
          "ffmpeg": {
            "$ref": "#/components/schemas/SystemConfigFFmpegDto"
          },
          "image": {
            "$ref": "#/components/schemas/SystemConfigImageDto"
          },
          "job": {
            "$ref": "#/components/schemas/SystemConfigJobDto"
          },
          "library": {
            "$ref": "#/components/schemas/SystemConfigLibraryDto"
          },
          "logging": {
            "$ref": "#/components/schemas/SystemConfigLoggingDto"
          },
          "machineLearning": {
            "$ref": "#/components/schemas/SystemConfigMachineLearningDto"
          },
          "map": {
            "$ref": "#/components/schemas/SystemConfigMapDto"
          },
          "metadata": {
            "$ref": "#/components/schemas/SystemConfigMetadataDto"
          },
          "newVersionCheck": {
            "$ref": "#/components/schemas/SystemConfigNewVersionCheckDto"
          },
          "nightlyTasks": {
            "$ref": "#/components/schemas/SystemConfigNightlyTasksDto"
          },
          "notifications": {
            "$ref": "#/components/schemas/SystemConfigNotificationsDto"
          },
          "oauth": {
            "$ref": "#/components/schemas/SystemConfigOAuthDto"
          },
          "passwordLogin": {
            "$ref": "#/components/schemas/SystemConfigPasswordLoginDto"
          },
          "reverseGeocoding": {
            "$ref": "#/components/schemas/SystemConfigReverseGeocodingDto"
          },
          "server": {
            "$ref": "#/components/schemas/SystemConfigServerDto"
          },
          "storageTemplate": {
            "$ref": "#/components/schemas/SystemConfigStorageTemplateDto"
          },
          "templates": {
            "$ref": "#/components/schemas/SystemConfigTemplatesDto"
          },
          "theme": {
            "$ref": "#/components/schemas/SystemConfigThemeDto"
          },
          "trash": {
            "$ref": "#/components/schemas/SystemConfigTrashDto"
          },
          "user": {
            "$ref": "#/components/schemas/SystemConfigUserDto"
          }
        },
        "required": [
          "backup",
          "ffmpeg",
          "image",
          "job",
          "library",
          "logging",
          "machineLearning",
          "map",
          "metadata",
          "newVersionCheck",
          "nightlyTasks",
          "notifications",
          "oauth",
          "passwordLogin",
          "reverseGeocoding",
          "server",
          "storageTemplate",
          "templates",
          "theme",
          "trash",
          "user"
        ],
        "type": "object"
      },
      "SystemConfigFFmpegDto": {
        "properties": {
          "accel": {
            "allOf": [
              {
                "$ref": "#/components/schemas/TranscodeHWAccel"
              }
            ],
            "description": "Transcode hardware acceleration"
          },
          "accelDecode": {
            "description": "Accelerated decode",
            "type": "boolean"
          },
          "acceptedAudioCodecs": {
            "description": "Accepted audio codecs",
            "items": {
              "$ref": "#/components/schemas/AudioCodec"
            },
            "type": "array"
          },
          "acceptedContainers": {
            "description": "Accepted containers",
            "items": {
              "$ref": "#/components/schemas/VideoContainer"
            },
            "type": "array"
          },
          "acceptedVideoCodecs": {
            "description": "Accepted video codecs",
            "items": {
              "$ref": "#/components/schemas/VideoCodec"
            },
            "type": "array"
          },
          "bframes": {
            "description": "B-frames",
            "maximum": 16,
            "minimum": -1,
            "type": "integer"
          },
          "cqMode": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CQMode"
              }
            ],
            "description": "CQ mode"
          },
          "crf": {
            "description": "CRF",
            "maximum": 51,
            "minimum": 0,
            "type": "integer"
          },
          "gopSize": {
            "description": "GOP size",
            "minimum": 0,
            "type": "integer"
          },
          "maxBitrate": {
            "description": "Max bitrate",
            "type": "string"
          },
          "preferredHwDevice": {
            "description": "Preferred hardware device",
            "type": "string"
          },
          "preset": {
            "description": "Preset",
            "type": "string"
          },
          "refs": {
            "description": "References",
            "maximum": 6,
            "minimum": 0,
            "type": "integer"
          },
          "targetAudioCodec": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AudioCodec"
              }
            ],
            "description": "Target audio codec"
          },
          "targetResolution": {
            "description": "Target resolution",
            "type": "string"
          },
          "targetVideoCodec": {
            "allOf": [
              {
                "$ref": "#/components/schemas/VideoCodec"
              }
            ],
            "description": "Target video codec"
          },
          "temporalAQ": {
            "description": "Temporal AQ",
            "type": "boolean"
          },
          "threads": {
            "description": "Threads",
            "minimum": 0,
            "type": "integer"
          },
          "tonemap": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ToneMapping"
              }
            ],
            "description": "Tone mapping"
          },
          "transcode": {
            "allOf": [
              {
                "$ref": "#/components/schemas/TranscodePolicy"
              }
            ],
            "description": "Transcode policy"
          },
          "twoPass": {
            "description": "Two pass",
            "type": "boolean"
          }
        },
        "required": [
          "accel",
          "accelDecode",
          "acceptedAudioCodecs",
          "acceptedContainers",
          "acceptedVideoCodecs",
          "bframes",
          "cqMode",
          "crf",
          "gopSize",
          "maxBitrate",
          "preferredHwDevice",
          "preset",
          "refs",
          "targetAudioCodec",
          "targetResolution",
          "targetVideoCodec",
          "temporalAQ",
          "threads",
          "tonemap",
          "transcode",
          "twoPass"
        ],
        "type": "object"
      },
      "SystemConfigFacesDto": {
        "properties": {
          "import": {
            "description": "Import",
            "type": "boolean"
          }
        },
        "required": [
          "import"
        ],
        "type": "object"
      },
      "SystemConfigGeneratedFullsizeImageDto": {
        "properties": {
          "enabled": {
            "description": "Enabled",
            "type": "boolean"
          },
          "format": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ImageFormat"
              }
            ],
            "description": "Image format"
          },
          "progressive": {
            "default": false,
            "description": "Progressive",
            "type": "boolean"
          },
          "quality": {
            "description": "Quality",
            "maximum": 100,
            "minimum": 1,
            "type": "integer"
          }
        },
        "required": [
          "enabled",
          "format",
          "quality"
        ],
        "type": "object"
      },
      "SystemConfigGeneratedImageDto": {
        "properties": {
          "format": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ImageFormat"
              }
            ],
            "description": "Image format"
          },
          "progressive": {
            "default": false,
            "type": "boolean"
          },
          "quality": {
            "description": "Quality",
            "maximum": 100,
            "minimum": 1,
            "type": "integer"
          },
          "size": {
            "description": "Size",
            "minimum": 1,
            "type": "integer"
          }
        },
        "required": [
          "format",
          "quality",
          "size"
        ],
        "type": "object"
      },
      "SystemConfigImageDto": {
        "properties": {
          "colorspace": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Colorspace"
              }
            ],
            "description": "Colorspace"
          },
          "extractEmbedded": {
            "description": "Extract embedded",
            "type": "boolean"
          },
          "fullsize": {
            "$ref": "#/components/schemas/SystemConfigGeneratedFullsizeImageDto"
          },
          "preview": {
            "$ref": "#/components/schemas/SystemConfigGeneratedImageDto"
          },
          "thumbnail": {
            "$ref": "#/components/schemas/SystemConfigGeneratedImageDto"
          }
        },
        "required": [
          "colorspace",
          "extractEmbedded",
          "fullsize",
          "preview",
          "thumbnail"
        ],
        "type": "object"
      },
      "SystemConfigJobDto": {
        "properties": {
          "backgroundTask": {
            "$ref": "#/components/schemas/JobSettingsDto"
          },
          "editor": {
            "$ref": "#/components/schemas/JobSettingsDto"
          },
          "faceDetection": {
            "$ref": "#/components/schemas/JobSettingsDto"
          },
          "library": {
            "$ref": "#/components/schemas/JobSettingsDto"
          },
          "metadataExtraction": {
            "$ref": "#/components/schemas/JobSettingsDto"
          },
          "migration": {
            "$ref": "#/components/schemas/JobSettingsDto"
          },
          "notifications": {
            "$ref": "#/components/schemas/JobSettingsDto"
          },
          "ocr": {
            "$ref": "#/components/schemas/JobSettingsDto"
          },
          "search": {
            "$ref": "#/components/schemas/JobSettingsDto"
          },
          "sidecar": {
            "$ref": "#/components/schemas/JobSettingsDto"
          },
          "smartSearch": {
            "$ref": "#/components/schemas/JobSettingsDto"
          },
          "thumbnailGeneration": {
            "$ref": "#/components/schemas/JobSettingsDto"
          },
          "videoConversion": {
            "$ref": "#/components/schemas/JobSettingsDto"
          },
          "workflow": {
            "$ref": "#/components/schemas/JobSettingsDto"
          }
        },
        "required": [
          "backgroundTask",
          "editor",
          "faceDetection",
          "library",
          "metadataExtraction",
          "migration",
          "notifications",
          "ocr",
          "search",
          "sidecar",
          "smartSearch",
          "thumbnailGeneration",
          "videoConversion",
          "workflow"
        ],
        "type": "object"
      },
      "SystemConfigLibraryDto": {
        "properties": {
          "scan": {
            "$ref": "#/components/schemas/SystemConfigLibraryScanDto"
          },
          "watch": {
            "$ref": "#/components/schemas/SystemConfigLibraryWatchDto"
          }
        },
        "required": [
          "scan",
          "watch"
        ],
        "type": "object"
      },
      "SystemConfigLibraryScanDto": {
        "properties": {
          "cronExpression": {
            "type": "string"
          },
          "enabled": {
            "description": "Enabled",
            "type": "boolean"
          }
        },
        "required": [
          "cronExpression",
          "enabled"
        ],
        "type": "object"
      },
      "SystemConfigLibraryWatchDto": {
        "properties": {
          "enabled": {
            "description": "Enabled",
            "type": "boolean"
          }
        },
        "required": [
          "enabled"
        ],
        "type": "object"
      },
      "SystemConfigLoggingDto": {
        "properties": {
          "enabled": {
            "description": "Enabled",
            "type": "boolean"
          },
          "level": {
            "allOf": [
              {
                "$ref": "#/components/schemas/LogLevel"
              }
            ]
          }
        },
        "required": [
          "enabled",
          "level"
        ],
        "type": "object"
      },
      "SystemConfigMachineLearningDto": {
        "properties": {
          "availabilityChecks": {
            "$ref": "#/components/schemas/MachineLearningAvailabilityChecksDto"
          },
          "clip": {
            "$ref": "#/components/schemas/CLIPConfig"
          },
          "duplicateDetection": {
            "$ref": "#/components/schemas/DuplicateDetectionConfig"
          },
          "enabled": {
            "description": "Enabled",
            "type": "boolean"
          },
          "facialRecognition": {
            "$ref": "#/components/schemas/FacialRecognitionConfig"
          },
          "ocr": {
            "$ref": "#/components/schemas/OcrConfig"
          },
          "urls": {
            "format": "uri",
            "items": {
              "format": "uri",
              "type": "string"
            },
            "minItems": 1,
            "type": "array"
          }
        },
        "required": [
          "availabilityChecks",
          "clip",
          "duplicateDetection",
          "enabled",
          "facialRecognition",
          "ocr",
          "urls"
        ],
        "type": "object"
      },
      "SystemConfigMapDto": {
        "properties": {
          "darkStyle": {
            "format": "uri",
            "type": "string"
          },
          "enabled": {
            "description": "Enabled",
            "type": "boolean"
          },
          "lightStyle": {
            "format": "uri",
            "type": "string"
          }
        },
        "required": [
          "darkStyle",
          "enabled",
          "lightStyle"
        ],
        "type": "object"
      },
      "SystemConfigMetadataDto": {
        "properties": {
          "faces": {
            "$ref": "#/components/schemas/SystemConfigFacesDto"
          }
        },
        "required": [
          "faces"
        ],
        "type": "object"
      },
      "SystemConfigNewVersionCheckDto": {
        "properties": {
          "enabled": {
            "description": "Enabled",
            "type": "boolean"
          }
        },
        "required": [
          "enabled"
        ],
        "type": "object"
      },
      "SystemConfigNightlyTasksDto": {
        "properties": {
          "clusterNewFaces": {
            "description": "Cluster new faces",
            "type": "boolean"
          },
          "databaseCleanup": {
            "description": "Database cleanup",
            "type": "boolean"
          },
          "generateMemories": {
            "description": "Generate memories",
            "type": "boolean"
          },
          "missingThumbnails": {
            "description": "Missing thumbnails",
            "type": "boolean"
          },
          "startTime": {
            "type": "string"
          },
          "syncQuotaUsage": {
            "description": "Sync quota usage",
            "type": "boolean"
          }
        },
        "required": [
          "clusterNewFaces",
          "databaseCleanup",
          "generateMemories",
          "missingThumbnails",
          "startTime",
          "syncQuotaUsage"
        ],
        "type": "object"
      },
      "SystemConfigNotificationsDto": {
        "properties": {
          "smtp": {
            "$ref": "#/components/schemas/SystemConfigSmtpDto"
          }
        },
        "required": [
          "smtp"
        ],
        "type": "object"
      },
      "SystemConfigOAuthDto": {
        "properties": {
          "autoLaunch": {
            "description": "Auto launch",
            "type": "boolean"
          },
          "autoRegister": {
            "description": "Auto register",
            "type": "boolean"
          },
          "buttonText": {
            "description": "Button text",
            "type": "string"
          },
          "clientId": {
            "description": "Client ID",
            "type": "string"
          },
          "clientSecret": {
            "description": "Client secret",
            "type": "string"
          },
          "defaultStorageQuota": {
            "description": "Default storage quota",
            "format": "int64",
            "minimum": 0,
            "nullable": true,
            "type": "integer"
          },
          "enabled": {
            "description": "Enabled",
            "type": "boolean"
          },
          "issuerUrl": {
            "description": "Issuer URL",
            "type": "string"
          },
          "mobileOverrideEnabled": {
            "description": "Mobile override enabled",
            "type": "boolean"
          },
          "mobileRedirectUri": {
            "description": "Mobile redirect URI",
            "format": "uri",
            "type": "string"
          },
          "profileSigningAlgorithm": {
            "description": "Profile signing algorithm",
            "type": "string"
          },
          "roleClaim": {
            "description": "Role claim",
            "type": "string"
          },
          "scope": {
            "description": "Scope",
            "type": "string"
          },
          "signingAlgorithm": {
            "type": "string"
          },
          "storageLabelClaim": {
            "description": "Storage label claim",
            "type": "string"
          },
          "storageQuotaClaim": {
            "description": "Storage quota claim",
            "type": "string"
          },
          "timeout": {
            "description": "Timeout",
            "minimum": 1,
            "type": "integer"
          },
          "tokenEndpointAuthMethod": {
            "allOf": [
              {
                "$ref": "#/components/schemas/OAuthTokenEndpointAuthMethod"
              }
            ],
            "description": "Token endpoint auth method"
          }
        },
        "required": [
          "autoLaunch",
          "autoRegister",
          "buttonText",
          "clientId",
          "clientSecret",
          "defaultStorageQuota",
          "enabled",
          "issuerUrl",
          "mobileOverrideEnabled",
          "mobileRedirectUri",
          "profileSigningAlgorithm",
          "roleClaim",
          "scope",
          "signingAlgorithm",
          "storageLabelClaim",
          "storageQuotaClaim",
          "timeout",
          "tokenEndpointAuthMethod"
        ],
        "type": "object"
      },
      "SystemConfigPasswordLoginDto": {
        "properties": {
          "enabled": {
            "description": "Enabled",
            "type": "boolean"
          }
        },
        "required": [
          "enabled"
        ],
        "type": "object"
      },
      "SystemConfigReverseGeocodingDto": {
        "properties": {
          "enabled": {
            "description": "Enabled",
            "type": "boolean"
          }
        },
        "required": [
          "enabled"
        ],
        "type": "object"
      },
      "SystemConfigServerDto": {
        "properties": {
          "externalDomain": {
            "description": "External domain",
            "format": "uri",
            "type": "string"
          },
          "loginPageMessage": {
            "description": "Login page message",
            "type": "string"
          },
          "publicUsers": {
            "description": "Public users",
            "type": "boolean"
          }
        },
        "required": [
          "externalDomain",
          "loginPageMessage",
          "publicUsers"
        ],
        "type": "object"
      },
      "SystemConfigSmtpDto": {
        "properties": {
          "enabled": {
            "description": "Whether SMTP email notifications are enabled",
            "type": "boolean"
          },
          "from": {
            "description": "Email address to send from",
            "type": "string"
          },
          "replyTo": {
            "description": "Email address for replies",
            "type": "string"
          },
          "transport": {
            "$ref": "#/components/schemas/SystemConfigSmtpTransportDto"
          }
        },
        "required": [
          "enabled",
          "from",
          "replyTo",
          "transport"
        ],
        "type": "object"
      },
      "SystemConfigSmtpTransportDto": {
        "properties": {
          "host": {
            "description": "SMTP server hostname",
            "type": "string"
          },
          "ignoreCert": {
            "description": "Whether to ignore SSL certificate errors",
            "type": "boolean"
          },
          "password": {
            "description": "SMTP password",
            "type": "string"
          },
          "port": {
            "description": "SMTP server port",
            "maximum": 65535,
            "minimum": 0,
            "type": "number"
          },
          "secure": {
            "description": "Whether to use secure connection (TLS/SSL)",
            "type": "boolean"
          },
          "username": {
            "description": "SMTP username",
            "type": "string"
          }
        },
        "required": [
          "host",
          "ignoreCert",
          "password",
          "port",
          "secure",
          "username"
        ],
        "type": "object"
      },
      "SystemConfigStorageTemplateDto": {
        "properties": {
          "enabled": {
            "description": "Enabled",
            "type": "boolean"
          },
          "hashVerificationEnabled": {
            "description": "Hash verification enabled",
            "type": "boolean"
          },
          "template": {
            "description": "Template",
            "type": "string"
          }
        },
        "required": [
          "enabled",
          "hashVerificationEnabled",
          "template"
        ],
        "type": "object"
      },
      "SystemConfigTemplateEmailsDto": {
        "properties": {
          "albumInviteTemplate": {
            "type": "string"
          },
          "albumUpdateTemplate": {
            "type": "string"
          },
          "welcomeTemplate": {
            "type": "string"
          }
        },
        "required": [
          "albumInviteTemplate",
          "albumUpdateTemplate",
          "welcomeTemplate"
        ],
        "type": "object"
      },
      "SystemConfigTemplateStorageOptionDto": {
        "properties": {
          "dayOptions": {
            "description": "Available day format options for storage template",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "hourOptions": {
            "description": "Available hour format options for storage template",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "minuteOptions": {
            "description": "Available minute format options for storage template",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "monthOptions": {
            "description": "Available month format options for storage template",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "presetOptions": {
            "description": "Available preset template options",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "secondOptions": {
            "description": "Available second format options for storage template",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "weekOptions": {
            "description": "Available week format options for storage template",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "yearOptions": {
            "description": "Available year format options for storage template",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "dayOptions",
          "hourOptions",
          "minuteOptions",
          "monthOptions",
          "presetOptions",
          "secondOptions",
          "weekOptions",
          "yearOptions"
        ],
        "type": "object"
      },
      "SystemConfigTemplatesDto": {
        "properties": {
          "email": {
            "$ref": "#/components/schemas/SystemConfigTemplateEmailsDto"
          }
        },
        "required": [
          "email"
        ],
        "type": "object"
      },
      "SystemConfigThemeDto": {
        "properties": {
          "customCss": {
            "description": "Custom CSS for theming",
            "type": "string"
          }
        },
        "required": [
          "customCss"
        ],
        "type": "object"
      },
      "SystemConfigTrashDto": {
        "properties": {
          "days": {
            "description": "Days",
            "minimum": 0,
            "type": "integer"
          },
          "enabled": {
            "description": "Enabled",
            "type": "boolean"
          }
        },
        "required": [
          "days",
          "enabled"
        ],
        "type": "object"
      },
      "SystemConfigUserDto": {
        "properties": {
          "deleteDelay": {
            "description": "Delete delay",
            "minimum": 1,
            "type": "integer"
          }
        },
        "required": [
          "deleteDelay"
        ],
        "type": "object"
      },
      "TagBulkAssetsDto": {
        "properties": {
          "assetIds": {
            "description": "Asset IDs",
            "items": {
              "format": "uuid",
              "type": "string"
            },
            "type": "array"
          },
          "tagIds": {
            "description": "Tag IDs",
            "items": {
              "format": "uuid",
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "assetIds",
          "tagIds"
        ],
        "type": "object"
      },
      "TagBulkAssetsResponseDto": {
        "properties": {
          "count": {
            "description": "Number of assets tagged",
            "type": "integer"
          }
        },
        "required": [
          "count"
        ],
        "type": "object"
      },
      "TagCreateDto": {
        "properties": {
          "color": {
            "description": "Tag color (hex)",
            "pattern": "^#?([0-9A-F]{3}|[0-9A-F]{4}|[0-9A-F]{6}|[0-9A-F]{8})$",
            "type": "string"
          },
          "name": {
            "description": "Tag name",
            "type": "string"
          },
          "parentId": {
            "description": "Parent tag ID",
            "format": "uuid",
            "nullable": true,
            "type": "string"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "TagResponseDto": {
        "properties": {
          "color": {
            "description": "Tag color (hex)",
            "type": "string"
          },
          "createdAt": {
            "description": "Creation date",
            "format": "date-time",
            "type": "string"
          },
          "id": {
            "description": "Tag ID",
            "type": "string"
          },
          "name": {
            "description": "Tag name",
            "type": "string"
          },
          "parentId": {
            "description": "Parent tag ID",
            "type": "string"
          },
          "updatedAt": {
            "description": "Last update date",
            "format": "date-time",
            "type": "string"
          },
          "value": {
            "description": "Tag value (full path)",
            "type": "string"
          }
        },
        "required": [
          "createdAt",
          "id",
          "name",
          "updatedAt",
          "value"
        ],
        "type": "object"
      },
      "TagUpdateDto": {
        "properties": {
          "color": {
            "description": "Tag color (hex)",
            "nullable": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "TagUpsertDto": {
        "properties": {
          "tags": {
            "description": "Tag names to upsert",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "tags"
        ],
        "type": "object"
      },
      "TagsResponse": {
        "properties": {
          "enabled": {
            "default": true,
            "description": "Whether tags are enabled",
            "type": "boolean"
          },
          "sidebarWeb": {
            "default": true,
            "description": "Whether tags appear in web sidebar",
            "type": "boolean"
          }
        },
        "required": [
          "enabled",
          "sidebarWeb"
        ],
        "type": "object"
      },
      "TagsUpdate": {
        "properties": {
          "enabled": {
            "description": "Whether tags are enabled",
            "type": "boolean"
          },
          "sidebarWeb": {
            "description": "Whether tags appear in web sidebar",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "TemplateDto": {
        "properties": {
          "template": {
            "description": "Template name",
            "type": "string"
          }
        },
        "required": [
          "template"
        ],
        "type": "object"
      },
      "TemplateResponseDto": {
        "properties": {
          "html": {
            "description": "Template HTML content",
            "type": "string"
          },
          "name": {
            "description": "Template name",
            "type": "string"
          }
        },
        "required": [
          "html",
          "name"
        ],
        "type": "object"
      },
      "TestEmailResponseDto": {
        "properties": {
          "messageId": {
            "description": "Email message ID",
            "type": "string"
          }
        },
        "required": [
          "messageId"
        ],
        "type": "object"
      },
      "TimeBucketAssetResponseDto": {
        "properties": {
          "city": {
            "description": "Array of city names extracted from EXIF GPS data",
            "items": {
              "nullable": true,
              "type": "string"
            },
            "type": "array"
          },
          "country": {
            "description": "Array of country names extracted from EXIF GPS data",
            "items": {
              "nullable": true,
              "type": "string"
            },
            "type": "array"
          },
          "duration": {
            "description": "Array of video durations in HH:MM:SS format (null for images)",
            "items": {
              "nullable": true,
              "type": "string"
            },
            "type": "array"
          },
          "fileCreatedAt": {
            "description": "Array of file creation timestamps in UTC",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "id": {
            "description": "Array of asset IDs in the time bucket",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "isFavorite": {
            "description": "Array indicating whether each asset is favorited",
            "items": {
              "type": "boolean"
            },
            "type": "array"
          },
          "isImage": {
            "description": "Array indicating whether each asset is an image (false for videos)",
            "items": {
              "type": "boolean"
            },
            "type": "array"
          },
          "isTrashed": {
            "description": "Array indicating whether each asset is in the trash",
            "items": {
              "type": "boolean"
            },
            "type": "array"
          },
          "latitude": {
            "description": "Array of latitude coordinates extracted from EXIF GPS data",
            "items": {
              "nullable": true,
              "type": "number"
            },
            "type": "array"
          },
          "livePhotoVideoId": {
            "description": "Array of live photo video asset IDs (null for non-live photos)",
            "items": {
              "nullable": true,
              "type": "string"
            },
            "type": "array"
          },
          "localOffsetHours": {
            "description": "Array of UTC offset hours at the time each photo was taken. Positive values are east of UTC, negative values are west of UTC. Values may be fractional (e.g., 5.5 for +05:30, -9.75 for -09:45). Applying this offset to 'fileCreatedAt' will give you the time the photo was taken from the photographer's perspective.",
            "items": {
              "type": "number"
            },
            "type": "array"
          },
          "longitude": {
            "description": "Array of longitude coordinates extracted from EXIF GPS data",
            "items": {
              "nullable": true,
              "type": "number"
            },
            "type": "array"
          },
          "ownerId": {
            "description": "Array of owner IDs for each asset",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "projectionType": {
            "description": "Array of projection types for 360° content (e.g., \"EQUIRECTANGULAR\", \"CUBEFACE\", \"CYLINDRICAL\")",
            "items": {
              "nullable": true,
              "type": "string"
            },
            "type": "array"
          },
          "ratio": {
            "description": "Array of aspect ratios (width/height) for each asset",
            "items": {
              "type": "number"
            },
            "type": "array"
          },
          "stack": {
            "description": "Array of stack information as [stackId, assetCount] tuples (null for non-stacked assets)",
            "items": {
              "items": {
                "type": "string"
              },
              "maxItems": 2,
              "minItems": 2,
              "nullable": true,
              "type": "array"
            },
            "type": "array"
          },
          "thumbhash": {
            "description": "Array of BlurHash strings for generating asset previews (base64 encoded)",
            "items": {
              "nullable": true,
              "type": "string"
            },
            "type": "array"
          },
          "visibility": {
            "description": "Array of visibility statuses for each asset (e.g., ARCHIVE, TIMELINE, HIDDEN, LOCKED)",
            "items": {
              "$ref": "#/components/schemas/AssetVisibility"
            },
            "type": "array"
          }
        },
        "required": [
          "city",
          "country",
          "duration",
          "fileCreatedAt",
          "id",
          "isFavorite",
          "isImage",
          "isTrashed",
          "livePhotoVideoId",
          "localOffsetHours",
          "ownerId",
          "projectionType",
          "ratio",
          "thumbhash",
          "visibility"
        ],
        "type": "object"
      },
      "TimeBucketsResponseDto": {
        "properties": {
          "count": {
            "description": "Number of assets in this time bucket",
            "example": 42,
            "type": "integer"
          },
          "timeBucket": {
            "description": "Time bucket identifier in YYYY-MM-DD format representing the start of the time period",
            "example": "2024-01-01",
            "type": "string"
          }
        },
        "required": [
          "count",
          "timeBucket"
        ],
        "type": "object"
      },
      "ToneMapping": {
        "description": "Tone mapping",
        "enum": [
          "hable",
          "mobius",
          "reinhard",
          "disabled"
        ],
        "type": "string"
      },
      "TranscodeHWAccel": {
        "description": "Transcode hardware acceleration",
        "enum": [
          "nvenc",
          "qsv",
          "vaapi",
          "rkmpp",
          "disabled"
        ],
        "type": "string"
      },
      "TranscodePolicy": {
        "description": "Transcode policy",
        "enum": [
          "all",
          "optimal",
          "bitrate",
          "required",
          "disabled"
        ],
        "type": "string"
      },
      "TrashResponseDto": {
        "properties": {
          "count": {
            "description": "Number of items in trash",
            "type": "integer"
          }
        },
        "required": [
          "count"
        ],
        "type": "object"
      },
      "UpdateAlbumDto": {
        "properties": {
          "albumName": {
            "description": "Album name",
            "type": "string"
          },
          "albumThumbnailAssetId": {
            "description": "Album thumbnail asset ID",
            "format": "uuid",
            "type": "string"
          },
          "description": {
            "description": "Album description",
            "type": "string"
          },
          "isActivityEnabled": {
            "description": "Enable activity feed",
            "type": "boolean"
          },
          "order": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AssetOrder"
              }
            ],
            "description": "Asset sort order"
          }
        },
        "type": "object"
      },
      "UpdateAlbumUserDto": {
        "properties": {
          "role": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AlbumUserRole"
              }
            ],
            "description": "Album user role"
          }
        },
        "required": [
          "role"
        ],
        "type": "object"
      },
      "UpdateAssetDto": {
        "properties": {
          "dateTimeOriginal": {
            "description": "Original date and time",
            "type": "string"
          },
          "description": {
            "description": "Asset description",
            "type": "string"
          },
          "isFavorite": {
            "description": "Mark as favorite",
            "type": "boolean"
          },
          "latitude": {
            "description": "Latitude coordinate",
            "type": "number"
          },
          "livePhotoVideoId": {
            "description": "Live photo video ID",
            "format": "uuid",
            "nullable": true,
            "type": "string"
          },
          "longitude": {
            "description": "Longitude coordinate",
            "type": "number"
          },
          "rating": {
            "description": "Rating",
            "maximum": 5,
            "minimum": -1,
            "type": "number"
          },
          "visibility": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AssetVisibility"
              }
            ],
            "description": "Asset visibility"
          }
        },
        "type": "object"
      },
      "UpdateLibraryDto": {
        "properties": {
          "exclusionPatterns": {
            "description": "Exclusion patterns (max 128)",
            "items": {
              "type": "string"
            },
            "maxItems": 128,
            "type": "array",
            "uniqueItems": true
          },
          "importPaths": {
            "description": "Import paths (max 128)",
            "items": {
              "type": "string"
            },
            "maxItems": 128,
            "type": "array",
            "uniqueItems": true
          },
          "name": {
            "description": "Library name",
            "type": "string"
          }
        },
        "type": "object"
      },
      "UsageByUserDto": {
        "properties": {
          "photos": {
            "description": "Number of photos",
            "type": "integer"
          },
          "quotaSizeInBytes": {
            "description": "User quota size in bytes (null if unlimited)",
            "format": "int64",
            "nullable": true,
            "type": "integer"
          },
          "usage": {
            "description": "Total storage usage in bytes",
            "format": "int64",
            "type": "integer"
          },
          "usagePhotos": {
            "description": "Storage usage for photos in bytes",
            "format": "int64",
            "type": "integer"
          },
          "usageVideos": {
            "description": "Storage usage for videos in bytes",
            "format": "int64",
            "type": "integer"
          },
          "userId": {
            "description": "User ID",
            "type": "string"
          },
          "userName": {
            "description": "User name",
            "type": "string"
          },
          "videos": {
            "description": "Number of videos",
            "type": "integer"
          }
        },
        "required": [
          "photos",
          "quotaSizeInBytes",
          "usage",
          "usagePhotos",
          "usageVideos",
          "userId",
          "userName",
          "videos"
        ],
        "type": "object"
      },
      "UserAdminCreateDto": {
        "properties": {
          "avatarColor": {
            "allOf": [
              {
                "$ref": "#/components/schemas/UserAvatarColor"
              }
            ],
            "description": "Avatar color",
            "nullable": true
          },
          "email": {
            "description": "User email",
            "format": "email",
            "type": "string"
          },
          "isAdmin": {
            "description": "Grant admin privileges",
            "type": "boolean"
          },
          "name": {
            "description": "User name",
            "type": "string"
          },
          "notify": {
            "description": "Send notification email",
            "type": "boolean"
          },
          "password": {
            "description": "User password",
            "type": "string"
          },
          "pinCode": {
            "description": "PIN code",
            "example": "123456",
            "nullable": true,
            "type": "string"
          },
          "quotaSizeInBytes": {
            "description": "Storage quota in bytes",
            "format": "int64",
            "minimum": 0,
            "nullable": true,
            "type": "integer"
          },
          "shouldChangePassword": {
            "description": "Require password change on next login",
            "type": "boolean"
          },
          "storageLabel": {
            "description": "Storage label",
            "nullable": true,
            "type": "string"
          }
        },
        "required": [
          "email",
          "name",
          "password"
        ],
        "type": "object"
      },
      "UserAdminDeleteDto": {
        "properties": {
          "force": {
            "description": "Force delete even if user has assets",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "UserAdminResponseDto": {
        "properties": {
          "avatarColor": {
            "allOf": [
              {
                "$ref": "#/components/schemas/UserAvatarColor"
              }
            ],
            "description": "Avatar color"
          },
          "createdAt": {
            "description": "Creation date",
            "format": "date-time",
            "type": "string"
          },
          "deletedAt": {
            "description": "Deletion date",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "email": {
            "description": "User email",
            "type": "string"
          },
          "id": {
            "description": "User ID",
            "type": "string"
          },
          "isAdmin": {
            "description": "Is admin user",
            "type": "boolean"
          },
          "license": {
            "allOf": [
              {
                "$ref": "#/components/schemas/UserLicense"
              }
            ],
            "description": "User license",
            "nullable": true
          },
          "name": {
            "description": "User name",
            "type": "string"
          },
          "oauthId": {
            "description": "OAuth ID",
            "type": "string"
          },
          "profileChangedAt": {
            "description": "Profile change date",
            "format": "date-time",
            "type": "string"
          },
          "profileImagePath": {
            "description": "Profile image path",
            "type": "string"
          },
          "quotaSizeInBytes": {
            "description": "Storage quota in bytes",
            "format": "int64",
            "nullable": true,
            "type": "integer"
          },
          "quotaUsageInBytes": {
            "description": "Storage usage in bytes",
            "format": "int64",
            "nullable": true,
            "type": "integer"
          },
          "shouldChangePassword": {
            "description": "Require password change on next login",
            "type": "boolean"
          },
          "status": {
            "allOf": [
              {
                "$ref": "#/components/schemas/UserStatus"
              }
            ],
            "description": "User status"
          },
          "storageLabel": {
            "description": "Storage label",
            "nullable": true,
            "type": "string"
          },
          "updatedAt": {
            "description": "Last update date",
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "avatarColor",
          "createdAt",
          "deletedAt",
          "email",
          "id",
          "isAdmin",
          "license",
          "name",
          "oauthId",
          "profileChangedAt",
          "profileImagePath",
          "quotaSizeInBytes",
          "quotaUsageInBytes",
          "shouldChangePassword",
          "status",
          "storageLabel",
          "updatedAt"
        ],
        "type": "object"
      },
      "UserAdminUpdateDto": {
        "properties": {
          "avatarColor": {
            "allOf": [
              {
                "$ref": "#/components/schemas/UserAvatarColor"
              }
            ],
            "description": "Avatar color",
            "nullable": true
          },
          "email": {
            "description": "User email",
            "format": "email",
            "type": "string"
          },
          "isAdmin": {
            "description": "Grant admin privileges",
            "type": "boolean"
          },
          "name": {
            "description": "User name",
            "type": "string"
          },
          "password": {
            "description": "User password",
            "type": "string"
          },
          "pinCode": {
            "description": "PIN code",
            "example": "123456",
            "nullable": true,
            "type": "string"
          },
          "quotaSizeInBytes": {
            "description": "Storage quota in bytes",
            "format": "int64",
            "minimum": 0,
            "nullable": true,
            "type": "integer"
          },
          "shouldChangePassword": {
            "description": "Require password change on next login",
            "type": "boolean"
          },
          "storageLabel": {
            "description": "Storage label",
            "nullable": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "UserAvatarColor": {
        "description": "Avatar color",
        "enum": [
          "primary",
          "pink",
          "red",
          "yellow",
          "blue",
          "green",
          "purple",
          "orange",
          "gray",
          "amber"
        ],
        "type": "string"
      },
      "UserLicense": {
        "properties": {
          "activatedAt": {
            "description": "Activation date",
            "format": "date-time",
            "type": "string"
          },
          "activationKey": {
            "description": "Activation key",
            "type": "string"
          },
          "licenseKey": {
            "description": "License key",
            "type": "string"
          }
        },
        "required": [
          "activatedAt",
          "activationKey",
          "licenseKey"
        ],
        "type": "object"
      },
      "UserMetadataKey": {
        "description": "User metadata key",
        "enum": [
          "preferences",
          "license",
          "onboarding"
        ],
        "type": "string"
      },
      "UserPreferencesResponseDto": {
        "properties": {
          "albums": {
            "$ref": "#/components/schemas/AlbumsResponse"
          },
          "cast": {
            "$ref": "#/components/schemas/CastResponse"
          },
          "download": {
            "$ref": "#/components/schemas/DownloadResponse"
          },
          "emailNotifications": {
            "$ref": "#/components/schemas/EmailNotificationsResponse"
          },
          "folders": {
            "$ref": "#/components/schemas/FoldersResponse"
          },
          "memories": {
            "$ref": "#/components/schemas/MemoriesResponse"
          },
          "people": {
            "$ref": "#/components/schemas/PeopleResponse"
          },
          "purchase": {
            "$ref": "#/components/schemas/PurchaseResponse"
          },
          "ratings": {
            "$ref": "#/components/schemas/RatingsResponse"
          },
          "sharedLinks": {
            "$ref": "#/components/schemas/SharedLinksResponse"
          },
          "tags": {
            "$ref": "#/components/schemas/TagsResponse"
          }
        },
        "required": [
          "albums",
          "cast",
          "download",
          "emailNotifications",
          "folders",
          "memories",
          "people",
          "purchase",
          "ratings",
          "sharedLinks",
          "tags"
        ],
        "type": "object"
      },
      "UserPreferencesUpdateDto": {
        "properties": {
          "albums": {
            "$ref": "#/components/schemas/AlbumsUpdate"
          },
          "avatar": {
            "$ref": "#/components/schemas/AvatarUpdate"
          },
          "cast": {
            "$ref": "#/components/schemas/CastUpdate"
          },
          "download": {
            "$ref": "#/components/schemas/DownloadUpdate"
          },
          "emailNotifications": {
            "$ref": "#/components/schemas/EmailNotificationsUpdate"
          },
          "folders": {
            "$ref": "#/components/schemas/FoldersUpdate"
          },
          "memories": {
            "$ref": "#/components/schemas/MemoriesUpdate"
          },
          "people": {
            "$ref": "#/components/schemas/PeopleUpdate"
          },
          "purchase": {
            "$ref": "#/components/schemas/PurchaseUpdate"
          },
          "ratings": {
            "$ref": "#/components/schemas/RatingsUpdate"
          },
          "sharedLinks": {
            "$ref": "#/components/schemas/SharedLinksUpdate"
          },
          "tags": {
            "$ref": "#/components/schemas/TagsUpdate"
          }
        },
        "type": "object"
      },
      "UserResponseDto": {
        "properties": {
          "avatarColor": {
            "allOf": [
              {
                "$ref": "#/components/schemas/UserAvatarColor"
              }
            ],
            "description": "Avatar color"
          },
          "email": {
            "description": "User email",
            "type": "string"
          },
          "id": {
            "description": "User ID",
            "type": "string"
          },
          "name": {
            "description": "User name",
            "type": "string"
          },
          "profileChangedAt": {
            "description": "Profile change date",
            "format": "date-time",
            "type": "string"
          },
          "profileImagePath": {
            "description": "Profile image path",
            "type": "string"
          }
        },
        "required": [
          "avatarColor",
          "email",
          "id",
          "name",
          "profileChangedAt",
          "profileImagePath"
        ],
        "type": "object"
      },
      "UserStatus": {
        "description": "User status",
        "enum": [
          "active",
          "removing",
          "deleted"
        ],
        "type": "string"
      },
      "UserUpdateMeDto": {
        "properties": {
          "avatarColor": {
            "allOf": [
              {
                "$ref": "#/components/schemas/UserAvatarColor"
              }
            ],
            "description": "Avatar color",
            "nullable": true
          },
          "email": {
            "description": "User email",
            "format": "email",
            "type": "string"
          },
          "name": {
            "description": "User name",
            "type": "string"
          },
          "password": {
            "description": "User password (deprecated, use change password endpoint)",
            "type": "string"
          }
        },
        "type": "object"
      },
      "ValidateAccessTokenResponseDto": {
        "properties": {
          "authStatus": {
            "description": "Authentication status",
            "type": "boolean"
          }
        },
        "required": [
          "authStatus"
        ],
        "type": "object"
      },
      "ValidateLibraryDto": {
        "properties": {
          "exclusionPatterns": {
            "description": "Exclusion patterns (max 128)",
            "items": {
              "type": "string"
            },
            "maxItems": 128,
            "type": "array",
            "uniqueItems": true
          },
          "importPaths": {
            "description": "Import paths to validate (max 128)",
            "items": {
              "type": "string"
            },
            "maxItems": 128,
            "type": "array",
            "uniqueItems": true
          }
        },
        "type": "object"
      },
      "ValidateLibraryImportPathResponseDto": {
        "properties": {
          "importPath": {
            "description": "Import path",
            "type": "string"
          },
          "isValid": {
            "default": false,
            "description": "Is valid",
            "type": "boolean"
          },
          "message": {
            "description": "Validation message",
            "type": "string"
          }
        },
        "required": [
          "importPath",
          "isValid"
        ],
        "type": "object"
      },
      "ValidateLibraryResponseDto": {
        "properties": {
          "importPaths": {
            "description": "Validation results for import paths",
            "items": {
              "$ref": "#/components/schemas/ValidateLibraryImportPathResponseDto"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "VersionCheckStateResponseDto": {
        "properties": {
          "checkedAt": {
            "description": "Last check timestamp",
            "nullable": true,
            "type": "string"
          },
          "releaseVersion": {
            "description": "Release version",
            "nullable": true,
            "type": "string"
          }
        },
        "required": [
          "checkedAt",
          "releaseVersion"
        ],
        "type": "object"
      },
      "VideoCodec": {
        "description": "Target video codec",
        "enum": [
          "h264",
          "hevc",
          "vp9",
          "av1"
        ],
        "type": "string"
      },
      "VideoContainer": {
        "description": "Accepted containers",
        "enum": [
          "mov",
          "mp4",
          "ogg",
          "webm"
        ],
        "type": "string"
      },
      "WorkflowActionItemDto": {
        "properties": {
          "actionConfig": {
            "description": "Action configuration",
            "type": "object"
          },
          "pluginActionId": {
            "description": "Plugin action ID",
            "format": "uuid",
            "type": "string"
          }
        },
        "required": [
          "pluginActionId"
        ],
        "type": "object"
      },
      "WorkflowActionResponseDto": {
        "properties": {
          "actionConfig": {
            "description": "Action configuration",
            "nullable": true,
            "type": "object"
          },
          "id": {
            "description": "Action ID",
            "type": "string"
          },
          "order": {
            "description": "Action order",
            "type": "number"
          },
          "pluginActionId": {
            "description": "Plugin action ID",
            "type": "string"
          },
          "workflowId": {
            "description": "Workflow ID",
            "type": "string"
          }
        },
        "required": [
          "actionConfig",
          "id",
          "order",
          "pluginActionId",
          "workflowId"
        ],
        "type": "object"
      },
      "WorkflowCreateDto": {
        "properties": {
          "actions": {
            "description": "Workflow actions",
            "items": {
              "$ref": "#/components/schemas/WorkflowActionItemDto"
            },
            "type": "array"
          },
          "description": {
            "description": "Workflow description",
            "type": "string"
          },
          "enabled": {
            "description": "Workflow enabled",
            "type": "boolean"
          },
          "filters": {
            "description": "Workflow filters",
            "items": {
              "$ref": "#/components/schemas/WorkflowFilterItemDto"
            },
            "type": "array"
          },
          "name": {
            "description": "Workflow name",
            "type": "string"
          },
          "triggerType": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PluginTriggerType"
              }
            ],
            "description": "Workflow trigger type"
          }
        },
        "required": [
          "actions",
          "filters",
          "name",
          "triggerType"
        ],
        "type": "object"
      },
      "WorkflowFilterItemDto": {
        "properties": {
          "filterConfig": {
            "description": "Filter configuration",
            "type": "object"
          },
          "pluginFilterId": {
            "description": "Plugin filter ID",
            "format": "uuid",
            "type": "string"
          }
        },
        "required": [
          "pluginFilterId"
        ],
        "type": "object"
      },
      "WorkflowFilterResponseDto": {
        "properties": {
          "filterConfig": {
            "description": "Filter configuration",
            "nullable": true,
            "type": "object"
          },
          "id": {
            "description": "Filter ID",
            "type": "string"
          },
          "order": {
            "description": "Filter order",
            "type": "number"
          },
          "pluginFilterId": {
            "description": "Plugin filter ID",
            "type": "string"
          },
          "workflowId": {
            "description": "Workflow ID",
            "type": "string"
          }
        },
        "required": [
          "filterConfig",
          "id",
          "order",
          "pluginFilterId",
          "workflowId"
        ],
        "type": "object"
      },
      "WorkflowResponseDto": {
        "properties": {
          "actions": {
            "description": "Workflow actions",
            "items": {
              "$ref": "#/components/schemas/WorkflowActionResponseDto"
            },
            "type": "array"
          },
          "createdAt": {
            "description": "Creation date",
            "type": "string"
          },
          "description": {
            "description": "Workflow description",
            "type": "string"
          },
          "enabled": {
            "description": "Workflow enabled",
            "type": "boolean"
          },
          "filters": {
            "description": "Workflow filters",
            "items": {
              "$ref": "#/components/schemas/WorkflowFilterResponseDto"
            },
            "type": "array"
          },
          "id": {
            "description": "Workflow ID",
            "type": "string"
          },
          "name": {
            "description": "Workflow name",
            "nullable": true,
            "type": "string"
          },
          "ownerId": {
            "description": "Owner user ID",
            "type": "string"
          },
          "triggerType": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PluginTriggerType"
              }
            ],
            "description": "Workflow trigger type"
          }
        },
        "required": [
          "actions",
          "createdAt",
          "description",
          "enabled",
          "filters",
          "id",
          "name",
          "ownerId",
          "triggerType"
        ],
        "type": "object"
      },
      "WorkflowUpdateDto": {
        "properties": {
          "actions": {
            "description": "Workflow actions",
            "items": {
              "$ref": "#/components/schemas/WorkflowActionItemDto"
            },
            "type": "array"
          },
          "description": {
            "description": "Workflow description",
            "type": "string"
          },
          "enabled": {
            "description": "Workflow enabled",
            "type": "boolean"
          },
          "filters": {
            "description": "Workflow filters",
            "items": {
              "$ref": "#/components/schemas/WorkflowFilterItemDto"
            },
            "type": "array"
          },
          "name": {
            "description": "Workflow name",
            "type": "string"
          },
          "triggerType": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PluginTriggerType"
              }
            ],
            "description": "Workflow trigger type"
          }
        },
        "type": "object"
      }
    }
  }
}