From 22c6901388e6ad950f7f9fda85e0552046e0b815 Mon Sep 17 00:00:00 2001 From: Sergey Tihon Date: Sat, 3 Jan 2026 10:39:09 +0100 Subject: [PATCH 1/3] feat: treat null as a object --- src/SwaggerProvider.DesignTime/v3/DefinitionCompiler.fs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/SwaggerProvider.DesignTime/v3/DefinitionCompiler.fs b/src/SwaggerProvider.DesignTime/v3/DefinitionCompiler.fs index 5bf359e..9ce2f92 100644 --- a/src/SwaggerProvider.DesignTime/v3/DefinitionCompiler.fs +++ b/src/SwaggerProvider.DesignTime/v3/DefinitionCompiler.fs @@ -446,6 +446,7 @@ type DefinitionCompiler(schema: OpenApiDocument, provideNullable) as this = | _ when resolvedType.IsNone || resolvedType = Some JsonSchemaType.Object + || resolvedType = Some JsonSchemaType.Null || resolvedType = Some(JsonSchemaType.Null ||| JsonSchemaType.Object) -> compileNewObject() From 2a8364fbfabf08234f5aa0ce6d85b6f38a79a7a5 Mon Sep 17 00:00:00 2001 From: Sergey Tihon Date: Sat, 3 Jan 2026 10:45:29 +0100 Subject: [PATCH 2/3] feat: add immich schema test case --- .../Schemas/v3/issue279.json | 69 +++++++++++++++++++ .../SwaggerProvider.ProviderTests.fsproj | 1 + .../v3/Swagger.I0279.Tests.fs | 10 +++ 3 files changed, 80 insertions(+) create mode 100644 tests/SwaggerProvider.ProviderTests/Schemas/v3/issue279.json create mode 100644 tests/SwaggerProvider.ProviderTests/v3/Swagger.I0279.Tests.fs diff --git a/tests/SwaggerProvider.ProviderTests/Schemas/v3/issue279.json b/tests/SwaggerProvider.ProviderTests/Schemas/v3/issue279.json new file mode 100644 index 0000000..75db026 --- /dev/null +++ b/tests/SwaggerProvider.ProviderTests/Schemas/v3/issue279.json @@ -0,0 +1,69 @@ +{ + "openapi": "3.0.0", + "info": { + "title": "Issue 279 - Null type test", + "version": "1.0.0" + }, + "paths": { + "/assets/{id}": { + "get": { + "operationId": "getAsset", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AssetResponseDto" + } + } + } + } + } + } + } + }, + "components": { + "schemas": { + "AssetResponseDto": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "stack": { + "allOf": [ + { + "$ref": "#/components/schemas/AssetStackResponseDto" + } + ], + "nullable": true + } + }, + "required": ["id"] + }, + "AssetStackResponseDto": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "assetCount": { + "type": "integer" + } + }, + "required": ["id", "assetCount"] + } + } + } +} diff --git a/tests/SwaggerProvider.ProviderTests/SwaggerProvider.ProviderTests.fsproj b/tests/SwaggerProvider.ProviderTests/SwaggerProvider.ProviderTests.fsproj index fe59d9e..d221006 100644 --- a/tests/SwaggerProvider.ProviderTests/SwaggerProvider.ProviderTests.fsproj +++ b/tests/SwaggerProvider.ProviderTests/SwaggerProvider.ProviderTests.fsproj @@ -25,6 +25,7 @@ + diff --git a/tests/SwaggerProvider.ProviderTests/v3/Swagger.I0279.Tests.fs b/tests/SwaggerProvider.ProviderTests/v3/Swagger.I0279.Tests.fs new file mode 100644 index 0000000..7d72226 --- /dev/null +++ b/tests/SwaggerProvider.ProviderTests/v3/Swagger.I0279.Tests.fs @@ -0,0 +1,10 @@ +module Swagger.I0279.Tests + +open SwaggerProvider + +[] +let Schema = __SOURCE_DIRECTORY__ + "/../Schemas/v3/issue279.json" + +type Immich = OpenApiClientProvider + +let inst = Immich.Client() From 62650b8033b3af01d9d62c8adb7ed7da56769c13 Mon Sep 17 00:00:00 2001 From: Sergey Tihon Date: Sat, 3 Jan 2026 11:02:16 +0100 Subject: [PATCH 3/3] feat: explicitly handle allOf with single reference --- .../v3/DefinitionCompiler.fs | 11 + .../Schemas/v3/issue279.json | 23466 +++++++++++++++- 2 files changed, 23440 insertions(+), 37 deletions(-) diff --git a/src/SwaggerProvider.DesignTime/v3/DefinitionCompiler.fs b/src/SwaggerProvider.DesignTime/v3/DefinitionCompiler.fs index 9ce2f92..573d05f 100644 --- a/src/SwaggerProvider.DesignTime/v3/DefinitionCompiler.fs +++ b/src/SwaggerProvider.DesignTime/v3/DefinitionCompiler.fs @@ -443,6 +443,17 @@ type DefinitionCompiler(schema: OpenApiDocument, provideNullable) as this = compileBySchema ns (ns.ReserveUniqueName tyName "Item") elSchema true ns.RegisterType false ProvidedTypeBuilder.MakeGenericType(typedefof>, [ typeof; elTy ]) + // Handle allOf with single reference (e.g., nullable reference to another type) + | _ when + not(isNull schemaObj.AllOf) + && schemaObj.AllOf.Count = 1 + && (schemaObj.Properties |> isNull || schemaObj.Properties.Count = 0) + -> + match schemaObj.AllOf.[0] with + | :? OpenApiSchemaReference as schemaRef when not(isNull schemaRef.Reference) -> + ns.ReleaseNameReservation tyName + compileByPath <| getFullPath schemaRef.Reference.Id + | _ -> compileNewObject() | _ when resolvedType.IsNone || resolvedType = Some JsonSchemaType.Object diff --git a/tests/SwaggerProvider.ProviderTests/Schemas/v3/issue279.json b/tests/SwaggerProvider.ProviderTests/Schemas/v3/issue279.json index 75db026..7e859ff 100644 --- a/tests/SwaggerProvider.ProviderTests/Schemas/v3/issue279.json +++ b/tests/SwaggerProvider.ProviderTests/Schemas/v3/issue279.json @@ -1,69 +1,23461 @@ { "openapi": "3.0.0", - "info": { - "title": "Issue 279 - Null type test", - "version": "1.0.0" - }, "paths": { - "/assets/{id}": { + "/activities": { "get": { - "operationId": "getAsset", + "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": "id", - "in": "path", + "name": "albumId", "required": true, + "in": "query", + "schema": { + "format": "uuid", + "type": "string" + } + }, + { + "name": "assetId", + "required": false, + "in": "query", + "schema": { + "format": "uuid", + "type": "string" + } + }, + { + "name": "level", + "required": false, + "in": "query", + "schema": { + "$ref": "#/components/schemas/ReactionLevel" + } + }, + { + "name": "type", + "required": false, + "in": "query", + "schema": { + "$ref": "#/components/schemas/ReactionType" + } + }, + { + "name": "userId", + "required": false, + "in": "query", "schema": { + "format": "uuid", "type": "string" } } ], "responses": { "200": { - "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AssetResponseDto" + "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" } - } - }, - "components": { - "schemas": { - "AssetResponseDto": { - "type": "object", - "properties": { - "id": { - "type": "string" + }, + "/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", + "schema": { + "format": "uuid", + "type": "string" + } }, - "stack": { - "allOf": [ - { - "$ref": "#/components/schemas/AssetStackResponseDto" + { + "name": "assetId", + "required": false, + "in": "query", + "schema": { + "format": "uuid", + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ActivityStatisticsResponseDto" + } } - ], - "nullable": true + }, + "description": "" } }, - "required": ["id"] - }, - "AssetStackResponseDto": { - "type": "object", - "properties": { - "id": { - "type": "string" + "security": [ + { + "bearer": [] }, - "assetCount": { - "type": "integer" + { + "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/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/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/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", + "schema": { + "format": "uuid", + "type": "string" + } + }, + { + "name": "withDeleted", + "required": false, + "in": "query", + "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", + "schema": { + "type": "boolean" + } + }, + { + "name": "isTrashed", + "required": false, + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "visibility", + "required": false, + "in": "query", + "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": "Only returns albums that contain the asset\nIgnores the shared parameter\nundefined: get all albums", + "schema": { + "format": "uuid", + "type": "string" + } + }, + { + "name": "shared", + "required": false, + "in": "query", + "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", + "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": { + "201": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AssetMediaResponseDto" + } + } + }, + "description": "" + } + }, + "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", + "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-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-state": "Stable" + } + }, + "/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", + "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", + "schema": { + "type": "boolean" + } + }, + { + "name": "isTrashed", + "required": false, + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "visibility", + "required": false, + "in": "query", + "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}/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", + "schema": { + "format": "uuid", + "type": "string" + } + }, + { + "name": "key", + "required": true, + "in": "path", + "schema": { + "$ref": "#/components/schemas/AssetMetadataKey" + } + } + ], + "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", + "schema": { + "format": "uuid", + "type": "string" + } + }, + { + "name": "key", + "required": true, + "in": "path", + "schema": { + "$ref": "#/components/schemas/AssetMetadataKey" + } + } + ], + "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": "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": "" + } + }, + "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.", + "operationId": "viewAsset", + "parameters": [ + { + "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", + "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" + ] + } + }, + "/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", + "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", + "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", + "schema": { + "format": "date-time", + "type": "string" + } + }, + { + "name": "fileCreatedBefore", + "required": false, + "in": "query", + "schema": { + "format": "date-time", + "type": "string" + } + }, + { + "name": "isArchived", + "required": false, + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "isFavorite", + "required": false, + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "withPartners", + "required": false, + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "withSharedAlbums", + "required": false, + "in": "query", + "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-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", + "schema": { + "format": "double", + "type": "number" + } + }, + { + "name": "lon", + "required": true, + "in": "query", + "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-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", + "schema": { + "format": "date-time", + "type": "string" + } + }, + { + "name": "isSaved", + "required": false, + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "isTrashed", + "required": false, + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "order", + "required": false, + "in": "query", + "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", + "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", + "schema": { + "format": "date-time", + "type": "string" + } + }, + { + "name": "isSaved", + "required": false, + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "isTrashed", + "required": false, + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "order", + "required": false, + "in": "query", + "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", + "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", + "schema": { + "format": "uuid", + "type": "string" + } + }, + { + "name": "level", + "required": false, + "in": "query", + "schema": { + "$ref": "#/components/schemas/NotificationLevel" + } + }, + { + "name": "type", + "required": false, + "in": "query", + "schema": { + "$ref": "#/components/schemas/NotificationType" + } + }, + { + "name": "unread", + "required": false, + "in": "query", + "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", + "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", + "schema": { + "format": "uuid", + "type": "string" + } + }, + { + "name": "closestPersonId", + "required": false, + "in": "query", + "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", + "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", + "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", + "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", + "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", + "schema": { + "$ref": "#/components/schemas/QueueName" + } + }, + { + "name": "status", + "required": false, + "in": "query", + "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", + "schema": { + "type": "array", + "items": { + "type": "string", + "format": "uuid" + } + } + }, + { + "name": "city", + "required": false, + "in": "query", + "schema": { + "nullable": true, + "type": "string" + } + }, + { + "name": "country", + "required": false, + "in": "query", + "schema": { + "nullable": true, + "type": "string" + } + }, + { + "name": "createdAfter", + "required": false, + "in": "query", + "schema": { + "format": "date-time", + "type": "string" + } + }, + { + "name": "createdBefore", + "required": false, + "in": "query", + "schema": { + "format": "date-time", + "type": "string" + } + }, + { + "name": "deviceId", + "required": false, + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "isEncoded", + "required": false, + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "isFavorite", + "required": false, + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "isMotion", + "required": false, + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "isNotInAlbum", + "required": false, + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "isOffline", + "required": false, + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "lensModel", + "required": false, + "in": "query", + "schema": { + "nullable": true, + "type": "string" + } + }, + { + "name": "libraryId", + "required": false, + "in": "query", + "schema": { + "format": "uuid", + "nullable": true, + "type": "string" + } + }, + { + "name": "make", + "required": false, + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "minFileSize", + "required": false, + "in": "query", + "schema": { + "minimum": 0, + "type": "integer" + } + }, + { + "name": "model", + "required": false, + "in": "query", + "schema": { + "nullable": true, + "type": "string" + } + }, + { + "name": "ocr", + "required": false, + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "personIds", + "required": false, + "in": "query", + "schema": { + "type": "array", + "items": { + "type": "string", + "format": "uuid" + } + } + }, + { + "name": "rating", + "required": false, + "in": "query", + "schema": { + "minimum": -1, + "maximum": 5, + "type": "number" + } + }, + { + "name": "size", + "required": false, + "in": "query", + "schema": { + "minimum": 1, + "maximum": 1000, + "type": "number" + } + }, + { + "name": "state", + "required": false, + "in": "query", + "schema": { + "nullable": true, + "type": "string" + } + }, + { + "name": "tagIds", + "required": false, + "in": "query", + "schema": { + "nullable": true, + "type": "array", + "items": { + "type": "string", + "format": "uuid" + } + } + }, + { + "name": "takenAfter", + "required": false, + "in": "query", + "schema": { + "format": "date-time", + "type": "string" + } + }, + { + "name": "takenBefore", + "required": false, + "in": "query", + "schema": { + "format": "date-time", + "type": "string" + } + }, + { + "name": "trashedAfter", + "required": false, + "in": "query", + "schema": { + "format": "date-time", + "type": "string" + } + }, + { + "name": "trashedBefore", + "required": false, + "in": "query", + "schema": { + "format": "date-time", + "type": "string" + } + }, + { + "name": "type", + "required": false, + "in": "query", + "schema": { + "$ref": "#/components/schemas/AssetTypeEnum" + } + }, + { + "name": "updatedAfter", + "required": false, + "in": "query", + "schema": { + "format": "date-time", + "type": "string" + } + }, + { + "name": "updatedBefore", + "required": false, + "in": "query", + "schema": { + "format": "date-time", + "type": "string" + } + }, + { + "name": "visibility", + "required": false, + "in": "query", + "schema": { + "$ref": "#/components/schemas/AssetVisibility" + } + }, + { + "name": "withDeleted", + "required": false, + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "withExif", + "required": false, + "in": "query", + "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", + "schema": { + "type": "string" + } + }, + { + "name": "withHidden", + "required": false, + "in": "query", + "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", + "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", + "schema": { + "type": "string" + } + }, + { + "name": "includeNull", + "required": false, + "in": "query", + "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", + "schema": { + "type": "string" + } + }, + { + "name": "make", + "required": false, + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "model", + "required": false, + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "state", + "required": false, + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "type", + "required": true, + "in": "query", + "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", + "schema": { + "format": "uuid", + "type": "string" + } + }, + { + "name": "id", + "required": false, + "in": "query", + "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/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", + "schema": { + "example": "password", + "type": "string" + } + }, + { + "name": "slug", + "required": false, + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "token", + "required": false, + "in": "query", + "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", + "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-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-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.4.1", + "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": "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": { + "type": "string" + }, + "permissions": { + "items": { + "$ref": "#/components/schemas/Permission" + }, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "permissions" + ], + "type": "object" + }, + "APIKeyCreateResponseDto": { + "properties": { + "apiKey": { + "$ref": "#/components/schemas/APIKeyResponseDto" + }, + "secret": { + "type": "string" + } + }, + "required": [ + "apiKey", + "secret" + ], + "type": "object" + }, + "APIKeyResponseDto": { + "properties": { + "createdAt": { + "format": "date-time", + "type": "string" + }, + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "permissions": { + "items": { + "$ref": "#/components/schemas/Permission" + }, + "type": "array" + }, + "updatedAt": { + "format": "date-time", + "type": "string" + } + }, + "required": [ + "createdAt", + "id", + "name", + "permissions", + "updatedAt" + ], + "type": "object" + }, + "APIKeyUpdateDto": { + "properties": { + "name": { + "type": "string" + }, + "permissions": { + "items": { + "$ref": "#/components/schemas/Permission" + }, + "minItems": 1, + "type": "array" + } + }, + "type": "object" + }, + "ActivityCreateDto": { + "properties": { + "albumId": { + "format": "uuid", + "type": "string" + }, + "assetId": { + "format": "uuid", + "type": "string" + }, + "comment": { + "type": "string" + }, + "type": { + "allOf": [ + { + "$ref": "#/components/schemas/ReactionType" + } + ] + } + }, + "required": [ + "albumId", + "type" + ], + "type": "object" + }, + "ActivityResponseDto": { + "properties": { + "assetId": { + "nullable": true, + "type": "string" + }, + "comment": { + "nullable": true, + "type": "string" + }, + "createdAt": { + "format": "date-time", + "type": "string" + }, + "id": { + "type": "string" + }, + "type": { + "allOf": [ + { + "$ref": "#/components/schemas/ReactionType" + } + ] + }, + "user": { + "$ref": "#/components/schemas/UserResponseDto" + } + }, + "required": [ + "assetId", + "createdAt", + "id", + "type", + "user" + ], + "type": "object" + }, + "ActivityStatisticsResponseDto": { + "properties": { + "comments": { + "type": "integer" + }, + "likes": { + "type": "integer" + } + }, + "required": [ + "comments", + "likes" + ], + "type": "object" + }, + "AddUsersDto": { + "properties": { + "albumUsers": { + "items": { + "$ref": "#/components/schemas/AlbumUserAddDto" + }, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "albumUsers" + ], + "type": "object" + }, + "AdminOnboardingUpdateDto": { + "properties": { + "isOnboarded": { + "type": "boolean" + } + }, + "required": [ + "isOnboarded" + ], + "type": "object" + }, + "AlbumResponseDto": { + "properties": { + "albumName": { + "type": "string" + }, + "albumThumbnailAssetId": { + "nullable": true, + "type": "string" + }, + "albumUsers": { + "items": { + "$ref": "#/components/schemas/AlbumUserResponseDto" + }, + "type": "array" + }, + "assetCount": { + "type": "integer" + }, + "assets": { + "items": { + "$ref": "#/components/schemas/AssetResponseDto" + }, + "type": "array" + }, + "contributorCounts": { + "items": { + "$ref": "#/components/schemas/ContributorCountResponseDto" + }, + "type": "array" + }, + "createdAt": { + "format": "date-time", + "type": "string" + }, + "description": { + "type": "string" + }, + "endDate": { + "format": "date-time", + "type": "string" + }, + "hasSharedLink": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "isActivityEnabled": { + "type": "boolean" + }, + "lastModifiedAssetTimestamp": { + "format": "date-time", + "type": "string" + }, + "order": { + "allOf": [ + { + "$ref": "#/components/schemas/AssetOrder" + } + ] + }, + "owner": { + "$ref": "#/components/schemas/UserResponseDto" + }, + "ownerId": { + "type": "string" + }, + "shared": { + "type": "boolean" + }, + "startDate": { + "format": "date-time", + "type": "string" + }, + "updatedAt": { + "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": { + "type": "integer" + }, + "owned": { + "type": "integer" + }, + "shared": { + "type": "integer" + } + }, + "required": [ + "notShared", + "owned", + "shared" + ], + "type": "object" + }, + "AlbumUserAddDto": { + "properties": { + "role": { + "allOf": [ + { + "$ref": "#/components/schemas/AlbumUserRole" + } + ], + "default": "editor" + }, + "userId": { + "format": "uuid", + "type": "string" + } + }, + "required": [ + "userId" + ], + "type": "object" + }, + "AlbumUserCreateDto": { + "properties": { + "role": { + "allOf": [ + { + "$ref": "#/components/schemas/AlbumUserRole" + } + ] + }, + "userId": { + "format": "uuid", + "type": "string" + } + }, + "required": [ + "role", + "userId" + ], + "type": "object" + }, + "AlbumUserResponseDto": { + "properties": { + "role": { + "allOf": [ + { + "$ref": "#/components/schemas/AlbumUserRole" + } + ] + }, + "user": { + "$ref": "#/components/schemas/UserResponseDto" + } + }, + "required": [ + "role", + "user" + ], + "type": "object" + }, + "AlbumUserRole": { + "enum": [ + "editor", + "viewer" + ], + "type": "string" + }, + "AlbumsAddAssetsDto": { + "properties": { + "albumIds": { + "items": { + "format": "uuid", + "type": "string" + }, + "type": "array" + }, + "assetIds": { + "items": { + "format": "uuid", + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "albumIds", + "assetIds" + ], + "type": "object" + }, + "AlbumsAddAssetsResponseDto": { + "properties": { + "error": { + "allOf": [ + { + "$ref": "#/components/schemas/BulkIdErrorReason" + } + ] + }, + "success": { + "type": "boolean" + } + }, + "required": [ + "success" + ], + "type": "object" + }, + "AlbumsResponse": { + "properties": { + "defaultAssetOrder": { + "allOf": [ + { + "$ref": "#/components/schemas/AssetOrder" + } + ], + "default": "desc" + } + }, + "required": [ + "defaultAssetOrder" + ], + "type": "object" + }, + "AlbumsUpdate": { + "properties": { + "defaultAssetOrder": { + "allOf": [ + { + "$ref": "#/components/schemas/AssetOrder" + } + ] + } + }, + "type": "object" + }, + "AssetBulkDeleteDto": { + "properties": { + "force": { + "type": "boolean" + }, + "ids": { + "items": { + "format": "uuid", + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "ids" + ], + "type": "object" + }, + "AssetBulkUpdateDto": { + "properties": { + "dateTimeOriginal": { + "type": "string" + }, + "dateTimeRelative": { + "type": "number" + }, + "description": { + "type": "string" + }, + "duplicateId": { + "nullable": true, + "type": "string" + }, + "ids": { + "items": { + "format": "uuid", + "type": "string" + }, + "type": "array" + }, + "isFavorite": { + "type": "boolean" + }, + "latitude": { + "type": "number" + }, + "longitude": { + "type": "number" + }, + "rating": { + "maximum": 5, + "minimum": -1, + "type": "number" + }, + "timeZone": { + "type": "string" + }, + "visibility": { + "allOf": [ + { + "$ref": "#/components/schemas/AssetVisibility" + } + ] + } + }, + "required": [ + "ids" + ], + "type": "object" + }, + "AssetBulkUploadCheckDto": { + "properties": { + "assets": { + "items": { + "$ref": "#/components/schemas/AssetBulkUploadCheckItem" + }, + "type": "array" + } + }, + "required": [ + "assets" + ], + "type": "object" + }, + "AssetBulkUploadCheckItem": { + "properties": { + "checksum": { + "description": "base64 or hex encoded sha1 hash", + "type": "string" + }, + "id": { + "type": "string" + } + }, + "required": [ + "checksum", + "id" + ], + "type": "object" + }, + "AssetBulkUploadCheckResponseDto": { + "properties": { + "results": { + "items": { + "$ref": "#/components/schemas/AssetBulkUploadCheckResult" + }, + "type": "array" + } + }, + "required": [ + "results" + ], + "type": "object" + }, + "AssetBulkUploadCheckResult": { + "properties": { + "action": { + "enum": [ + "accept", + "reject" + ], + "type": "string" + }, + "assetId": { + "type": "string" + }, + "id": { + "type": "string" + }, + "isTrashed": { + "type": "boolean" + }, + "reason": { + "enum": [ + "duplicate", + "unsupported-format" + ], + "type": "string" + } + }, + "required": [ + "action", + "id" + ], + "type": "object" + }, + "AssetCopyDto": { + "properties": { + "albums": { + "default": true, + "type": "boolean" + }, + "favorite": { + "default": true, + "type": "boolean" + }, + "sharedLinks": { + "default": true, + "type": "boolean" + }, + "sidecar": { + "default": true, + "type": "boolean" + }, + "sourceId": { + "format": "uuid", + "type": "string" + }, + "stack": { + "default": true, + "type": "boolean" + }, + "targetId": { + "format": "uuid", + "type": "string" + } + }, + "required": [ + "sourceId", + "targetId" + ], + "type": "object" + }, + "AssetDeltaSyncDto": { + "properties": { + "updatedAfter": { + "format": "date-time", + "type": "string" + }, + "userIds": { + "items": { + "format": "uuid", + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "updatedAfter", + "userIds" + ], + "type": "object" + }, + "AssetDeltaSyncResponseDto": { + "properties": { + "deleted": { + "items": { + "type": "string" + }, + "type": "array" + }, + "needsFullSync": { + "type": "boolean" + }, + "upserted": { + "items": { + "$ref": "#/components/schemas/AssetResponseDto" + }, + "type": "array" + } + }, + "required": [ + "deleted", + "needsFullSync", + "upserted" + ], + "type": "object" + }, + "AssetFaceCreateDto": { + "properties": { + "assetId": { + "format": "uuid", + "type": "string" + }, + "height": { + "type": "integer" + }, + "imageHeight": { + "type": "integer" + }, + "imageWidth": { + "type": "integer" + }, + "personId": { + "format": "uuid", + "type": "string" + }, + "width": { + "type": "integer" + }, + "x": { + "type": "integer" + }, + "y": { + "type": "integer" + } + }, + "required": [ + "assetId", + "height", + "imageHeight", + "imageWidth", + "personId", + "width", + "x", + "y" + ], + "type": "object" + }, + "AssetFaceDeleteDto": { + "properties": { + "force": { + "type": "boolean" + } + }, + "required": [ + "force" + ], + "type": "object" + }, + "AssetFaceResponseDto": { + "properties": { + "boundingBoxX1": { + "type": "integer" + }, + "boundingBoxX2": { + "type": "integer" + }, + "boundingBoxY1": { + "type": "integer" + }, + "boundingBoxY2": { + "type": "integer" + }, + "id": { + "format": "uuid", + "type": "string" + }, + "imageHeight": { + "type": "integer" + }, + "imageWidth": { + "type": "integer" + }, + "person": { + "allOf": [ + { + "$ref": "#/components/schemas/PersonResponseDto" + } + ], + "nullable": true + }, + "sourceType": { + "allOf": [ + { + "$ref": "#/components/schemas/SourceType" + } + ] + } + }, + "required": [ + "boundingBoxX1", + "boundingBoxX2", + "boundingBoxY1", + "boundingBoxY2", + "id", + "imageHeight", + "imageWidth", + "person" + ], + "type": "object" + }, + "AssetFaceUpdateDto": { + "properties": { + "data": { + "items": { + "$ref": "#/components/schemas/AssetFaceUpdateItem" + }, + "type": "array" + } + }, + "required": [ + "data" + ], + "type": "object" + }, + "AssetFaceUpdateItem": { + "properties": { + "assetId": { + "format": "uuid", + "type": "string" + }, + "personId": { + "format": "uuid", + "type": "string" + } + }, + "required": [ + "assetId", + "personId" + ], + "type": "object" + }, + "AssetFaceWithoutPersonResponseDto": { + "properties": { + "boundingBoxX1": { + "type": "integer" + }, + "boundingBoxX2": { + "type": "integer" + }, + "boundingBoxY1": { + "type": "integer" + }, + "boundingBoxY2": { + "type": "integer" + }, + "id": { + "format": "uuid", + "type": "string" + }, + "imageHeight": { + "type": "integer" + }, + "imageWidth": { + "type": "integer" + }, + "sourceType": { + "allOf": [ + { + "$ref": "#/components/schemas/SourceType" + } + ] + } + }, + "required": [ + "boundingBoxX1", + "boundingBoxX2", + "boundingBoxY1", + "boundingBoxY2", + "id", + "imageHeight", + "imageWidth" + ], + "type": "object" + }, + "AssetFullSyncDto": { + "properties": { + "lastId": { + "format": "uuid", + "type": "string" + }, + "limit": { + "minimum": 1, + "type": "integer" + }, + "updatedUntil": { + "format": "date-time", + "type": "string" + }, + "userId": { + "format": "uuid", + "type": "string" + } + }, + "required": [ + "limit", + "updatedUntil" + ], + "type": "object" + }, + "AssetIdsDto": { + "properties": { + "assetIds": { + "items": { + "format": "uuid", + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "assetIds" + ], + "type": "object" + }, + "AssetIdsResponseDto": { + "properties": { + "assetId": { + "type": "string" + }, + "error": { + "enum": [ + "duplicate", + "no_permission", + "not_found" + ], + "type": "string" + }, + "success": { + "type": "boolean" + } + }, + "required": [ + "assetId", + "success" + ], + "type": "object" + }, + "AssetJobName": { + "enum": [ + "refresh-faces", + "refresh-metadata", + "regenerate-thumbnail", + "transcode-video" + ], + "type": "string" + }, + "AssetJobsDto": { + "properties": { + "assetIds": { + "items": { + "format": "uuid", + "type": "string" + }, + "type": "array" + }, + "name": { + "allOf": [ + { + "$ref": "#/components/schemas/AssetJobName" + } + ] + } + }, + "required": [ + "assetIds", + "name" + ], + "type": "object" + }, + "AssetMediaCreateDto": { + "properties": { + "assetData": { + "format": "binary", + "type": "string" + }, + "deviceAssetId": { + "type": "string" + }, + "deviceId": { + "type": "string" + }, + "duration": { + "type": "string" + }, + "fileCreatedAt": { + "format": "date-time", + "type": "string" + }, + "fileModifiedAt": { + "format": "date-time", + "type": "string" + }, + "filename": { + "type": "string" + }, + "isFavorite": { + "type": "boolean" + }, + "livePhotoVideoId": { + "format": "uuid", + "type": "string" + }, + "metadata": { + "items": { + "$ref": "#/components/schemas/AssetMetadataUpsertItemDto" + }, + "type": "array" + }, + "sidecarData": { + "format": "binary", + "type": "string" + }, + "visibility": { + "allOf": [ + { + "$ref": "#/components/schemas/AssetVisibility" + } + ] + } + }, + "required": [ + "assetData", + "deviceAssetId", + "deviceId", + "fileCreatedAt", + "fileModifiedAt", + "metadata" + ], + "type": "object" + }, + "AssetMediaReplaceDto": { + "properties": { + "assetData": { + "format": "binary", + "type": "string" + }, + "deviceAssetId": { + "type": "string" + }, + "deviceId": { + "type": "string" + }, + "duration": { + "type": "string" + }, + "fileCreatedAt": { + "format": "date-time", + "type": "string" + }, + "fileModifiedAt": { + "format": "date-time", + "type": "string" + }, + "filename": { + "type": "string" + } + }, + "required": [ + "assetData", + "deviceAssetId", + "deviceId", + "fileCreatedAt", + "fileModifiedAt" + ], + "type": "object" + }, + "AssetMediaResponseDto": { + "properties": { + "id": { + "type": "string" + }, + "status": { + "allOf": [ + { + "$ref": "#/components/schemas/AssetMediaStatus" + } + ] + } + }, + "required": [ + "id", + "status" + ], + "type": "object" + }, + "AssetMediaSize": { + "enum": [ + "fullsize", + "preview", + "thumbnail" + ], + "type": "string" + }, + "AssetMediaStatus": { + "enum": [ + "created", + "replaced", + "duplicate" + ], + "type": "string" + }, + "AssetMetadataKey": { + "enum": [ + "mobile-app" + ], + "type": "string" + }, + "AssetMetadataResponseDto": { + "properties": { + "key": { + "allOf": [ + { + "$ref": "#/components/schemas/AssetMetadataKey" + } + ] + }, + "updatedAt": { + "format": "date-time", + "type": "string" + }, + "value": { + "type": "object" + } + }, + "required": [ + "key", + "updatedAt", + "value" + ], + "type": "object" + }, + "AssetMetadataUpsertDto": { + "properties": { + "items": { + "items": { + "$ref": "#/components/schemas/AssetMetadataUpsertItemDto" + }, + "type": "array" + } + }, + "required": [ + "items" + ], + "type": "object" + }, + "AssetMetadataUpsertItemDto": { + "properties": { + "key": { + "allOf": [ + { + "$ref": "#/components/schemas/AssetMetadataKey" + } + ] + }, + "value": { + "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": { + "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": { + "type": "string" + }, + "deviceId": { + "type": "string" + }, + "duplicateId": { + "nullable": true, + "type": "string" + }, + "duration": { + "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": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "isArchived": { + "type": "boolean" + }, + "isFavorite": { + "type": "boolean" + }, + "isOffline": { + "type": "boolean" + }, + "isTrashed": { + "type": "boolean" + }, + "libraryId": { + "deprecated": true, + "nullable": true, + "type": "string", + "x-immich-history": [ + { + "version": "v1", + "state": "Added" + }, + { + "version": "v1", + "state": "Deprecated" + } + ], + "x-immich-state": "Deprecated" + }, + "livePhotoVideoId": { + "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": { + "type": "string" + }, + "originalMimeType": { + "type": "string" + }, + "originalPath": { + "type": "string" + }, + "owner": { + "$ref": "#/components/schemas/UserResponseDto" + }, + "ownerId": { + "type": "string" + }, + "people": { + "items": { + "$ref": "#/components/schemas/PersonWithFacesResponseDto" + }, + "type": "array" + }, + "resized": { + "deprecated": true, + "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": { + "nullable": true, + "type": "string" + }, + "type": { + "allOf": [ + { + "$ref": "#/components/schemas/AssetTypeEnum" + } + ] + }, + "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" + } + ] + } + }, + "required": [ + "checksum", + "createdAt", + "deviceAssetId", + "deviceId", + "duration", + "fileCreatedAt", + "fileModifiedAt", + "hasMetadata", + "id", + "isArchived", + "isFavorite", + "isOffline", + "isTrashed", + "localDateTime", + "originalFileName", + "originalPath", + "ownerId", + "thumbhash", + "type", + "updatedAt", + "visibility" + ], + "type": "object" + }, + "AssetStackResponseDto": { + "properties": { + "assetCount": { + "type": "integer" + }, + "id": { + "type": "string" + }, + "primaryAssetId": { + "type": "string" + } + }, + "required": [ + "assetCount", + "id", + "primaryAssetId" + ], + "type": "object" + }, + "AssetStatsResponseDto": { + "properties": { + "images": { + "type": "integer" + }, + "total": { + "type": "integer" + }, + "videos": { + "type": "integer" + } + }, + "required": [ + "images", + "total", + "videos" + ], + "type": "object" + }, + "AssetTypeEnum": { + "enum": [ + "IMAGE", + "VIDEO", + "AUDIO", + "OTHER" + ], + "type": "string" + }, + "AssetVisibility": { + "enum": [ + "archive", + "timeline", + "hidden", + "locked" + ], + "type": "string" + }, + "AudioCodec": { + "enum": [ + "mp3", + "aac", + "libopus", + "pcm_s16le" + ], + "type": "string" + }, + "AuthStatusResponseDto": { + "properties": { + "expiresAt": { + "type": "string" + }, + "isElevated": { + "type": "boolean" + }, + "password": { + "type": "boolean" + }, + "pinCode": { + "type": "boolean" + }, + "pinExpiresAt": { + "type": "string" + } + }, + "required": [ + "isElevated", + "password", + "pinCode" + ], + "type": "object" + }, + "AvatarUpdate": { + "properties": { + "color": { + "allOf": [ + { + "$ref": "#/components/schemas/UserAvatarColor" + } + ] + } + }, + "type": "object" + }, + "BulkIdErrorReason": { + "enum": [ + "duplicate", + "no_permission", + "not_found", + "unknown" + ], + "type": "string" + }, + "BulkIdResponseDto": { + "properties": { + "error": { + "enum": [ + "duplicate", + "no_permission", + "not_found", + "unknown" + ], + "type": "string" + }, + "id": { + "type": "string" + }, + "success": { + "type": "boolean" + } + }, + "required": [ + "id", + "success" + ], + "type": "object" + }, + "BulkIdsDto": { + "properties": { + "ids": { + "items": { + "format": "uuid", + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "ids" + ], + "type": "object" + }, + "CLIPConfig": { + "properties": { + "enabled": { + "type": "boolean" + }, + "modelName": { + "type": "string" + } + }, + "required": [ + "enabled", + "modelName" + ], + "type": "object" + }, + "CQMode": { + "enum": [ + "auto", + "cqp", + "icq" + ], + "type": "string" + }, + "CastResponse": { + "properties": { + "gCastEnabled": { + "default": false, + "type": "boolean" + } + }, + "required": [ + "gCastEnabled" + ], + "type": "object" + }, + "CastUpdate": { + "properties": { + "gCastEnabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "ChangePasswordDto": { + "properties": { + "invalidateSessions": { + "default": false, + "type": "boolean" + }, + "newPassword": { + "example": "password", + "minLength": 8, + "type": "string" + }, + "password": { + "example": "password", + "type": "string" + } + }, + "required": [ + "newPassword", + "password" + ], + "type": "object" + }, + "CheckExistingAssetsDto": { + "properties": { + "deviceAssetIds": { + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "deviceId": { + "type": "string" + } + }, + "required": [ + "deviceAssetIds", + "deviceId" + ], + "type": "object" + }, + "CheckExistingAssetsResponseDto": { + "properties": { + "existingIds": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "existingIds" + ], + "type": "object" + }, + "Colorspace": { + "enum": [ + "srgb", + "p3" + ], + "type": "string" + }, + "ContributorCountResponseDto": { + "properties": { + "assetCount": { + "type": "integer" + }, + "userId": { + "type": "string" + } + }, + "required": [ + "assetCount", + "userId" + ], + "type": "object" + }, + "CreateAlbumDto": { + "properties": { + "albumName": { + "type": "string" + }, + "albumUsers": { + "items": { + "$ref": "#/components/schemas/AlbumUserCreateDto" + }, + "type": "array" + }, + "assetIds": { + "items": { + "format": "uuid", + "type": "string" + }, + "type": "array" + }, + "description": { + "type": "string" + } + }, + "required": [ + "albumName" + ], + "type": "object" + }, + "CreateLibraryDto": { + "properties": { + "exclusionPatterns": { + "items": { + "type": "string" + }, + "maxItems": 128, + "type": "array", + "uniqueItems": true + }, + "importPaths": { + "items": { + "type": "string" + }, + "maxItems": 128, + "type": "array", + "uniqueItems": true + }, + "name": { + "type": "string" + }, + "ownerId": { + "format": "uuid", + "type": "string" + } + }, + "required": [ + "ownerId" + ], + "type": "object" + }, + "CreateProfileImageDto": { + "properties": { + "file": { + "format": "binary", + "type": "string" + } + }, + "required": [ + "file" + ], + "type": "object" + }, + "CreateProfileImageResponseDto": { + "properties": { + "profileChangedAt": { + "format": "date-time", + "type": "string" + }, + "profileImagePath": { + "type": "string" + }, + "userId": { + "type": "string" + } + }, + "required": [ + "profileChangedAt", + "profileImagePath", + "userId" + ], + "type": "object" + }, + "DatabaseBackupConfig": { + "properties": { + "cronExpression": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "keepLastAmount": { + "minimum": 1, + "type": "number" + } + }, + "required": [ + "cronExpression", + "enabled", + "keepLastAmount" + ], + "type": "object" + }, + "DownloadArchiveInfo": { + "properties": { + "assetIds": { + "items": { + "type": "string" + }, + "type": "array" + }, + "size": { + "type": "integer" + } + }, + "required": [ + "assetIds", + "size" + ], + "type": "object" + }, + "DownloadInfoDto": { + "properties": { + "albumId": { + "format": "uuid", + "type": "string" + }, + "archiveSize": { + "minimum": 1, + "type": "integer" + }, + "assetIds": { + "items": { + "format": "uuid", + "type": "string" + }, + "type": "array" + }, + "userId": { + "format": "uuid", + "type": "string" + } + }, + "type": "object" + }, + "DownloadResponse": { + "properties": { + "archiveSize": { + "type": "integer" + }, + "includeEmbeddedVideos": { + "default": false, + "type": "boolean" + } + }, + "required": [ + "archiveSize", + "includeEmbeddedVideos" + ], + "type": "object" + }, + "DownloadResponseDto": { + "properties": { + "archives": { + "items": { + "$ref": "#/components/schemas/DownloadArchiveInfo" + }, + "type": "array" + }, + "totalSize": { + "type": "integer" + } + }, + "required": [ + "archives", + "totalSize" + ], + "type": "object" + }, + "DownloadUpdate": { + "properties": { + "archiveSize": { + "minimum": 1, + "type": "integer" + }, + "includeEmbeddedVideos": { + "type": "boolean" + } + }, + "type": "object" + }, + "DuplicateDetectionConfig": { + "properties": { + "enabled": { + "type": "boolean" + }, + "maxDistance": { + "format": "double", + "maximum": 0.1, + "minimum": 0.001, + "type": "number" + } + }, + "required": [ + "enabled", + "maxDistance" + ], + "type": "object" + }, + "DuplicateResponseDto": { + "properties": { + "assets": { + "items": { + "$ref": "#/components/schemas/AssetResponseDto" + }, + "type": "array" + }, + "duplicateId": { + "type": "string" + } + }, + "required": [ + "assets", + "duplicateId" + ], + "type": "object" + }, + "EmailNotificationsResponse": { + "properties": { + "albumInvite": { + "type": "boolean" + }, + "albumUpdate": { + "type": "boolean" + }, + "enabled": { + "type": "boolean" + } + }, + "required": [ + "albumInvite", + "albumUpdate", + "enabled" + ], + "type": "object" + }, + "EmailNotificationsUpdate": { + "properties": { + "albumInvite": { + "type": "boolean" + }, + "albumUpdate": { + "type": "boolean" + }, + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "ExifResponseDto": { + "properties": { + "city": { + "default": null, + "nullable": true, + "type": "string" + }, + "country": { + "default": null, + "nullable": true, + "type": "string" + }, + "dateTimeOriginal": { + "default": null, + "format": "date-time", + "nullable": true, + "type": "string" + }, + "description": { + "default": null, + "nullable": true, + "type": "string" + }, + "exifImageHeight": { + "default": null, + "nullable": true, + "type": "number" + }, + "exifImageWidth": { + "default": null, + "nullable": true, + "type": "number" + }, + "exposureTime": { + "default": null, + "nullable": true, + "type": "string" + }, + "fNumber": { + "default": null, + "nullable": true, + "type": "number" + }, + "fileSizeInByte": { + "default": null, + "format": "int64", + "nullable": true, + "type": "integer" + }, + "focalLength": { + "default": null, + "nullable": true, + "type": "number" + }, + "iso": { + "default": null, + "nullable": true, + "type": "number" + }, + "latitude": { + "default": null, + "nullable": true, + "type": "number" + }, + "lensModel": { + "default": null, + "nullable": true, + "type": "string" + }, + "longitude": { + "default": null, + "nullable": true, + "type": "number" + }, + "make": { + "default": null, + "nullable": true, + "type": "string" + }, + "model": { + "default": null, + "nullable": true, + "type": "string" + }, + "modifyDate": { + "default": null, + "format": "date-time", + "nullable": true, + "type": "string" + }, + "orientation": { + "default": null, + "nullable": true, + "type": "string" + }, + "projectionType": { + "default": null, + "nullable": true, + "type": "string" + }, + "rating": { + "default": null, + "nullable": true, + "type": "number" + }, + "state": { + "default": null, + "nullable": true, + "type": "string" + }, + "timeZone": { + "default": null, + "nullable": true, + "type": "string" + } + }, + "type": "object" + }, + "FaceDto": { + "properties": { + "id": { + "format": "uuid", + "type": "string" + } + }, + "required": [ + "id" + ], + "type": "object" + }, + "FacialRecognitionConfig": { + "properties": { + "enabled": { + "type": "boolean" + }, + "maxDistance": { + "format": "double", + "maximum": 2, + "minimum": 0.1, + "type": "number" + }, + "minFaces": { + "minimum": 1, + "type": "integer" + }, + "minScore": { + "format": "double", + "maximum": 1, + "minimum": 0.1, + "type": "number" + }, + "modelName": { + "type": "string" + } + }, + "required": [ + "enabled", + "maxDistance", + "minFaces", + "minScore", + "modelName" + ], + "type": "object" + }, + "FoldersResponse": { + "properties": { + "enabled": { + "default": false, + "type": "boolean" + }, + "sidebarWeb": { + "default": false, + "type": "boolean" + } + }, + "required": [ + "enabled", + "sidebarWeb" + ], + "type": "object" + }, + "FoldersUpdate": { + "properties": { + "enabled": { + "type": "boolean" + }, + "sidebarWeb": { + "type": "boolean" + } + }, + "type": "object" + }, + "ImageFormat": { + "enum": [ + "jpeg", + "webp" + ], + "type": "string" + }, + "JobCreateDto": { + "properties": { + "name": { + "allOf": [ + { + "$ref": "#/components/schemas/ManualJobName" + } + ] + } + }, + "required": [ + "name" + ], + "type": "object" + }, + "JobName": { + "enum": [ + "AssetDelete", + "AssetDeleteCheck", + "AssetDetectFacesQueueAll", + "AssetDetectFaces", + "AssetDetectDuplicatesQueueAll", + "AssetDetectDuplicates", + "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": { + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "concurrency" + ], + "type": "object" + }, + "LibraryResponseDto": { + "properties": { + "assetCount": { + "type": "integer" + }, + "createdAt": { + "format": "date-time", + "type": "string" + }, + "exclusionPatterns": { + "items": { + "type": "string" + }, + "type": "array" + }, + "id": { + "type": "string" + }, + "importPaths": { + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "type": "string" + }, + "ownerId": { + "type": "string" + }, + "refreshedAt": { + "format": "date-time", + "nullable": true, + "type": "string" + }, + "updatedAt": { + "format": "date-time", + "type": "string" + } + }, + "required": [ + "assetCount", + "createdAt", + "exclusionPatterns", + "id", + "importPaths", + "name", + "ownerId", + "refreshedAt", + "updatedAt" + ], + "type": "object" + }, + "LibraryStatsResponseDto": { + "properties": { + "photos": { + "default": 0, + "type": "integer" + }, + "total": { + "default": 0, + "type": "integer" + }, + "usage": { + "default": 0, + "format": "int64", + "type": "integer" + }, + "videos": { + "default": 0, + "type": "integer" + } + }, + "required": [ + "photos", + "total", + "usage", + "videos" + ], + "type": "object" + }, + "LicenseKeyDto": { + "properties": { + "activationKey": { + "type": "string" + }, + "licenseKey": { + "pattern": "/IM(SV|CL)(-[\\dA-Za-z]{4}){8}/", + "type": "string" + } + }, + "required": [ + "activationKey", + "licenseKey" + ], + "type": "object" + }, + "LicenseResponseDto": { + "properties": { + "activatedAt": { + "format": "date-time", + "type": "string" + }, + "activationKey": { + "type": "string" + }, + "licenseKey": { + "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": { + "example": "testuser@email.com", + "format": "email", + "type": "string" + }, + "password": { + "example": "password", + "type": "string" + } + }, + "required": [ + "email", + "password" + ], + "type": "object" + }, + "LoginResponseDto": { + "properties": { + "accessToken": { + "type": "string" + }, + "isAdmin": { + "type": "boolean" + }, + "isOnboarded": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "profileImagePath": { + "type": "string" + }, + "shouldChangePassword": { + "type": "boolean" + }, + "userEmail": { + "type": "string" + }, + "userId": { + "type": "string" + } + }, + "required": [ + "accessToken", + "isAdmin", + "isOnboarded", + "name", + "profileImagePath", + "shouldChangePassword", + "userEmail", + "userId" + ], + "type": "object" + }, + "LogoutResponseDto": { + "properties": { + "redirectUri": { + "type": "string" + }, + "successful": { + "type": "boolean" + } + }, + "required": [ + "redirectUri", + "successful" + ], + "type": "object" + }, + "MachineLearningAvailabilityChecksDto": { + "properties": { + "enabled": { + "type": "boolean" + }, + "interval": { + "type": "number" + }, + "timeout": { + "type": "number" + } + }, + "required": [ + "enabled", + "interval", + "timeout" + ], + "type": "object" + }, + "MaintenanceAction": { + "enum": [ + "start", + "end" + ], + "type": "string" + }, + "MaintenanceAuthDto": { + "properties": { + "username": { + "type": "string" + } + }, + "required": [ + "username" + ], + "type": "object" + }, + "MaintenanceLoginDto": { + "properties": { + "token": { + "type": "string" + } + }, + "type": "object" + }, + "ManualJobName": { + "enum": [ + "person-cleanup", + "tag-cleanup", + "user-cleanup", + "memory-cleanup", + "memory-create", + "backup-database" + ], + "type": "string" + }, + "MapMarkerResponseDto": { + "properties": { + "city": { + "nullable": true, + "type": "string" + }, + "country": { + "nullable": true, + "type": "string" + }, + "id": { + "type": "string" + }, + "lat": { + "format": "double", + "type": "number" + }, + "lon": { + "format": "double", + "type": "number" + }, + "state": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "city", + "country", + "id", + "lat", + "lon", + "state" + ], + "type": "object" + }, + "MapReverseGeocodeResponseDto": { + "properties": { + "city": { + "nullable": true, + "type": "string" + }, + "country": { + "nullable": true, + "type": "string" + }, + "state": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "city", + "country", + "state" + ], + "type": "object" + }, + "MemoriesResponse": { + "properties": { + "duration": { + "default": 5, + "type": "integer" + }, + "enabled": { + "default": true, + "type": "boolean" + } + }, + "required": [ + "duration", + "enabled" + ], + "type": "object" + }, + "MemoriesUpdate": { + "properties": { + "duration": { + "minimum": 1, + "type": "integer" + }, + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "MemoryCreateDto": { + "properties": { + "assetIds": { + "items": { + "format": "uuid", + "type": "string" + }, + "type": "array" + }, + "data": { + "$ref": "#/components/schemas/OnThisDayDto" + }, + "isSaved": { + "type": "boolean" + }, + "memoryAt": { + "format": "date-time", + "type": "string" + }, + "seenAt": { + "format": "date-time", + "type": "string" + }, + "type": { + "allOf": [ + { + "$ref": "#/components/schemas/MemoryType" + } + ] + } + }, + "required": [ + "data", + "memoryAt", + "type" + ], + "type": "object" + }, + "MemoryResponseDto": { + "properties": { + "assets": { + "items": { + "$ref": "#/components/schemas/AssetResponseDto" + }, + "type": "array" + }, + "createdAt": { + "format": "date-time", + "type": "string" + }, + "data": { + "$ref": "#/components/schemas/OnThisDayDto" + }, + "deletedAt": { + "format": "date-time", + "type": "string" + }, + "hideAt": { + "format": "date-time", + "type": "string" + }, + "id": { + "type": "string" + }, + "isSaved": { + "type": "boolean" + }, + "memoryAt": { + "format": "date-time", + "type": "string" + }, + "ownerId": { + "type": "string" + }, + "seenAt": { + "format": "date-time", + "type": "string" + }, + "showAt": { + "format": "date-time", + "type": "string" + }, + "type": { + "allOf": [ + { + "$ref": "#/components/schemas/MemoryType" + } + ] + }, + "updatedAt": { + "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": { + "type": "integer" + } + }, + "required": [ + "total" + ], + "type": "object" + }, + "MemoryType": { + "enum": [ + "on_this_day" + ], + "type": "string" + }, + "MemoryUpdateDto": { + "properties": { + "isSaved": { + "type": "boolean" + }, + "memoryAt": { + "format": "date-time", + "type": "string" + }, + "seenAt": { + "format": "date-time", + "type": "string" + } + }, + "type": "object" + }, + "MergePersonDto": { + "properties": { + "ids": { + "items": { + "format": "uuid", + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "ids" + ], + "type": "object" + }, + "MetadataSearchDto": { + "properties": { + "albumIds": { + "items": { + "format": "uuid", + "type": "string" + }, + "type": "array" + }, + "checksum": { + "type": "string" + }, + "city": { + "nullable": true, + "type": "string" + }, + "country": { + "nullable": true, + "type": "string" + }, + "createdAfter": { + "format": "date-time", + "type": "string" + }, + "createdBefore": { + "format": "date-time", + "type": "string" + }, + "description": { + "type": "string" + }, + "deviceAssetId": { + "type": "string" + }, + "deviceId": { + "type": "string" + }, + "encodedVideoPath": { + "type": "string" + }, + "id": { + "format": "uuid", + "type": "string" + }, + "isEncoded": { + "type": "boolean" + }, + "isFavorite": { + "type": "boolean" + }, + "isMotion": { + "type": "boolean" + }, + "isNotInAlbum": { + "type": "boolean" + }, + "isOffline": { + "type": "boolean" + }, + "lensModel": { + "nullable": true, + "type": "string" + }, + "libraryId": { + "format": "uuid", + "nullable": true, + "type": "string" + }, + "make": { + "type": "string" + }, + "model": { + "nullable": true, + "type": "string" + }, + "ocr": { + "type": "string" + }, + "order": { + "allOf": [ + { + "$ref": "#/components/schemas/AssetOrder" + } + ], + "default": "desc" + }, + "originalFileName": { + "type": "string" + }, + "originalPath": { + "type": "string" + }, + "page": { + "minimum": 1, + "type": "number" + }, + "personIds": { + "items": { + "format": "uuid", + "type": "string" + }, + "type": "array" + }, + "previewPath": { + "type": "string" + }, + "rating": { + "maximum": 5, + "minimum": -1, + "type": "number" + }, + "size": { + "maximum": 1000, + "minimum": 1, + "type": "number" + }, + "state": { + "nullable": true, + "type": "string" + }, + "tagIds": { + "items": { + "format": "uuid", + "type": "string" + }, + "nullable": true, + "type": "array" + }, + "takenAfter": { + "format": "date-time", + "type": "string" + }, + "takenBefore": { + "format": "date-time", + "type": "string" + }, + "thumbnailPath": { + "type": "string" + }, + "trashedAfter": { + "format": "date-time", + "type": "string" + }, + "trashedBefore": { + "format": "date-time", + "type": "string" + }, + "type": { + "allOf": [ + { + "$ref": "#/components/schemas/AssetTypeEnum" + } + ] + }, + "updatedAfter": { + "format": "date-time", + "type": "string" + }, + "updatedBefore": { + "format": "date-time", + "type": "string" + }, + "visibility": { + "allOf": [ + { + "$ref": "#/components/schemas/AssetVisibility" + } + ] + }, + "withDeleted": { + "type": "boolean" + }, + "withExif": { + "type": "boolean" + }, + "withPeople": { + "type": "boolean" + }, + "withStacked": { + "type": "boolean" + } + }, + "type": "object" + }, + "NotificationCreateDto": { + "properties": { + "data": { + "type": "object" + }, + "description": { + "nullable": true, + "type": "string" + }, + "level": { + "allOf": [ + { + "$ref": "#/components/schemas/NotificationLevel" + } + ] + }, + "readAt": { + "format": "date-time", + "nullable": true, + "type": "string" + }, + "title": { + "type": "string" + }, + "type": { + "allOf": [ + { + "$ref": "#/components/schemas/NotificationType" + } + ] + }, + "userId": { + "format": "uuid", + "type": "string" + } + }, + "required": [ + "title", + "userId" + ], + "type": "object" + }, + "NotificationDeleteAllDto": { + "properties": { + "ids": { + "items": { + "format": "uuid", + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "ids" + ], + "type": "object" + }, + "NotificationDto": { + "properties": { + "createdAt": { + "format": "date-time", + "type": "string" + }, + "data": { + "type": "object" + }, + "description": { + "type": "string" + }, + "id": { + "type": "string" + }, + "level": { + "allOf": [ + { + "$ref": "#/components/schemas/NotificationLevel" + } + ] + }, + "readAt": { + "format": "date-time", + "type": "string" + }, + "title": { + "type": "string" + }, + "type": { + "allOf": [ + { + "$ref": "#/components/schemas/NotificationType" + } + ] + } + }, + "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": { + "items": { + "format": "uuid", + "type": "string" + }, + "type": "array" + }, + "readAt": { + "format": "date-time", + "nullable": true, + "type": "string" + } + }, + "required": [ + "ids" + ], + "type": "object" + }, + "NotificationUpdateDto": { + "properties": { + "readAt": { + "format": "date-time", + "nullable": true, + "type": "string" + } + }, + "type": "object" + }, + "OAuthAuthorizeResponseDto": { + "properties": { + "url": { + "type": "string" + } + }, + "required": [ + "url" + ], + "type": "object" + }, + "OAuthCallbackDto": { + "properties": { + "codeVerifier": { + "type": "string" + }, + "state": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "required": [ + "url" + ], + "type": "object" + }, + "OAuthConfigDto": { + "properties": { + "codeChallenge": { + "type": "string" + }, + "redirectUri": { + "type": "string" + }, + "state": { + "type": "string" + } + }, + "required": [ + "redirectUri" + ], + "type": "object" + }, + "OAuthTokenEndpointAuthMethod": { + "enum": [ + "client_secret_post", + "client_secret_basic" + ], + "type": "string" + }, + "OcrConfig": { + "properties": { + "enabled": { + "type": "boolean" + }, + "maxResolution": { + "minimum": 1, + "type": "integer" + }, + "minDetectionScore": { + "format": "double", + "maximum": 1, + "minimum": 0.1, + "type": "number" + }, + "minRecognitionScore": { + "format": "double", + "maximum": 1, + "minimum": 0.1, + "type": "number" + }, + "modelName": { + "type": "string" + } + }, + "required": [ + "enabled", + "maxResolution", + "minDetectionScore", + "minRecognitionScore", + "modelName" + ], + "type": "object" + }, + "OnThisDayDto": { + "properties": { + "year": { + "minimum": 1, + "type": "number" + } + }, + "required": [ + "year" + ], + "type": "object" + }, + "OnboardingDto": { + "properties": { + "isOnboarded": { + "type": "boolean" + } + }, + "required": [ + "isOnboarded" + ], + "type": "object" + }, + "OnboardingResponseDto": { + "properties": { + "isOnboarded": { + "type": "boolean" + } + }, + "required": [ + "isOnboarded" + ], + "type": "object" + }, + "PartnerCreateDto": { + "properties": { + "sharedWithId": { + "format": "uuid", + "type": "string" + } + }, + "required": [ + "sharedWithId" + ], + "type": "object" + }, + "PartnerDirection": { + "enum": [ + "shared-by", + "shared-with" + ], + "type": "string" + }, + "PartnerResponseDto": { + "properties": { + "avatarColor": { + "allOf": [ + { + "$ref": "#/components/schemas/UserAvatarColor" + } + ] + }, + "email": { + "type": "string" + }, + "id": { + "type": "string" + }, + "inTimeline": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "profileChangedAt": { + "format": "date-time", + "type": "string" + }, + "profileImagePath": { + "type": "string" + } + }, + "required": [ + "avatarColor", + "email", + "id", + "name", + "profileChangedAt", + "profileImagePath" + ], + "type": "object" + }, + "PartnerUpdateDto": { + "properties": { + "inTimeline": { + "type": "boolean" + } + }, + "required": [ + "inTimeline" + ], + "type": "object" + }, + "PeopleResponse": { + "properties": { + "enabled": { + "default": true, + "type": "boolean" + }, + "sidebarWeb": { + "default": false, + "type": "boolean" + } + }, + "required": [ + "enabled", + "sidebarWeb" + ], + "type": "object" + }, + "PeopleResponseDto": { + "properties": { + "hasNextPage": { + "type": "boolean", + "x-immich-history": [ + { + "version": "v1.110.0", + "state": "Added" + }, + { + "version": "v2", + "state": "Stable" + } + ], + "x-immich-state": "Stable" + }, + "hidden": { + "type": "integer" + }, + "people": { + "items": { + "$ref": "#/components/schemas/PersonResponseDto" + }, + "type": "array" + }, + "total": { + "type": "integer" + } + }, + "required": [ + "hidden", + "people", + "total" + ], + "type": "object" + }, + "PeopleUpdate": { + "properties": { + "enabled": { + "type": "boolean" + }, + "sidebarWeb": { + "type": "boolean" + } + }, + "type": "object" + }, + "PeopleUpdateDto": { + "properties": { + "people": { + "items": { + "$ref": "#/components/schemas/PeopleUpdateItem" + }, + "type": "array" + } + }, + "required": [ + "people" + ], + "type": "object" + }, + "PeopleUpdateItem": { + "properties": { + "birthDate": { + "description": "Person date of birth.\nNote: the mobile app cannot currently set the birth date to null.", + "format": "date", + "nullable": true, + "type": "string" + }, + "color": { + "nullable": true, + "type": "string" + }, + "featureFaceAssetId": { + "description": "Asset is used to get the feature face thumbnail.", + "format": "uuid", + "type": "string" + }, + "id": { + "description": "Person id.", + "type": "string" + }, + "isFavorite": { + "type": "boolean" + }, + "isHidden": { + "description": "Person visibility", + "type": "boolean" + }, + "name": { + "description": "Person name.", + "type": "string" + } + }, + "required": [ + "id" + ], + "type": "object" + }, + "Permission": { + "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", + "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", + "duplicate.read", + "duplicate.delete", + "face.create", + "face.read", + "face.update", + "face.delete", + "job.create", + "job.read", + "library.create", + "library.read", + "library.update", + "library.delete", + "library.statistics", + "timeline.read", + "timeline.download", + "maintenance", + "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.\nNote: the mobile app cannot currently set the birth date to null.", + "format": "date", + "nullable": true, + "type": "string" + }, + "color": { + "nullable": true, + "type": "string" + }, + "isFavorite": { + "type": "boolean" + }, + "isHidden": { + "description": "Person visibility", + "type": "boolean" + }, + "name": { + "description": "Person name.", + "type": "string" + } + }, + "type": "object" + }, + "PersonResponseDto": { + "properties": { + "birthDate": { + "format": "date", + "nullable": true, + "type": "string" + }, + "color": { + "type": "string", + "x-immich-history": [ + { + "version": "v1.126.0", + "state": "Added" + }, + { + "version": "v2", + "state": "Stable" + } + ], + "x-immich-state": "Stable" + }, + "id": { + "type": "string" + }, + "isFavorite": { + "type": "boolean", + "x-immich-history": [ + { + "version": "v1.126.0", + "state": "Added" + }, + { + "version": "v2", + "state": "Stable" + } + ], + "x-immich-state": "Stable" + }, + "isHidden": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "thumbnailPath": { + "type": "string" + }, + "updatedAt": { + "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": { + "type": "integer" + } + }, + "required": [ + "assets" + ], + "type": "object" + }, + "PersonUpdateDto": { + "properties": { + "birthDate": { + "description": "Person date of birth.\nNote: the mobile app cannot currently set the birth date to null.", + "format": "date", + "nullable": true, + "type": "string" + }, + "color": { + "nullable": true, + "type": "string" + }, + "featureFaceAssetId": { + "description": "Asset is used to get the feature face thumbnail.", + "format": "uuid", + "type": "string" + }, + "isFavorite": { + "type": "boolean" + }, + "isHidden": { + "description": "Person visibility", + "type": "boolean" + }, + "name": { + "description": "Person name.", + "type": "string" + } + }, + "type": "object" + }, + "PersonWithFacesResponseDto": { + "properties": { + "birthDate": { + "format": "date", + "nullable": true, + "type": "string" + }, + "color": { + "type": "string", + "x-immich-history": [ + { + "version": "v1.126.0", + "state": "Added" + }, + { + "version": "v2", + "state": "Stable" + } + ], + "x-immich-state": "Stable" + }, + "faces": { + "items": { + "$ref": "#/components/schemas/AssetFaceWithoutPersonResponseDto" + }, + "type": "array" + }, + "id": { + "type": "string" + }, + "isFavorite": { + "type": "boolean", + "x-immich-history": [ + { + "version": "v1.126.0", + "state": "Added" + }, + { + "version": "v2", + "state": "Stable" + } + ], + "x-immich-state": "Stable" + }, + "isHidden": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "thumbnailPath": { + "type": "string" + }, + "updatedAt": { + "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": { + "example": "123456", + "type": "string" + }, + "password": { + "type": "string" + }, + "pinCode": { + "example": "123456", + "type": "string" + } + }, + "required": [ + "newPinCode" + ], + "type": "object" + }, + "PinCodeResetDto": { + "properties": { + "password": { + "type": "string" + }, + "pinCode": { + "example": "123456", + "type": "string" + } + }, + "type": "object" + }, + "PinCodeSetupDto": { + "properties": { + "pinCode": { + "example": "123456", + "type": "string" + } + }, + "required": [ + "pinCode" + ], + "type": "object" + }, + "PlacesResponseDto": { + "properties": { + "admin1name": { + "type": "string" + }, + "admin2name": { + "type": "string" + }, + "latitude": { + "type": "number" + }, + "longitude": { + "type": "number" + }, + "name": { + "type": "string" + } + }, + "required": [ + "latitude", + "longitude", + "name" + ], + "type": "object" + }, + "PluginActionResponseDto": { + "properties": { + "description": { + "type": "string" + }, + "id": { + "type": "string" + }, + "methodName": { + "type": "string" + }, + "pluginId": { + "type": "string" + }, + "schema": { + "nullable": true, + "type": "object" + }, + "supportedContexts": { + "items": { + "$ref": "#/components/schemas/PluginContextType" + }, + "type": "array" + }, + "title": { + "type": "string" + } + }, + "required": [ + "description", + "id", + "methodName", + "pluginId", + "schema", + "supportedContexts", + "title" + ], + "type": "object" + }, + "PluginContextType": { + "enum": [ + "asset", + "album", + "person" + ], + "type": "string" + }, + "PluginFilterResponseDto": { + "properties": { + "description": { + "type": "string" + }, + "id": { + "type": "string" + }, + "methodName": { + "type": "string" + }, + "pluginId": { + "type": "string" + }, + "schema": { + "nullable": true, + "type": "object" + }, + "supportedContexts": { + "items": { + "$ref": "#/components/schemas/PluginContextType" + }, + "type": "array" + }, + "title": { + "type": "string" + } + }, + "required": [ + "description", + "id", + "methodName", + "pluginId", + "schema", + "supportedContexts", + "title" + ], + "type": "object" + }, + "PluginResponseDto": { + "properties": { + "actions": { + "items": { + "$ref": "#/components/schemas/PluginActionResponseDto" + }, + "type": "array" + }, + "author": { + "type": "string" + }, + "createdAt": { + "type": "string" + }, + "description": { + "type": "string" + }, + "filters": { + "items": { + "$ref": "#/components/schemas/PluginFilterResponseDto" + }, + "type": "array" + }, + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "title": { + "type": "string" + }, + "updatedAt": { + "type": "string" + }, + "version": { + "type": "string" + } + }, + "required": [ + "actions", + "author", + "createdAt", + "description", + "filters", + "id", + "name", + "title", + "updatedAt", + "version" + ], + "type": "object" + }, + "PluginTriggerResponseDto": { + "properties": { + "contextType": { + "allOf": [ + { + "$ref": "#/components/schemas/PluginContextType" + } + ] + }, + "type": { + "allOf": [ + { + "$ref": "#/components/schemas/PluginTriggerType" + } + ] + } + }, + "required": [ + "contextType", + "type" + ], + "type": "object" + }, + "PluginTriggerType": { + "enum": [ + "AssetCreate", + "PersonRecognized" + ], + "type": "string" + }, + "PurchaseResponse": { + "properties": { + "hideBuyButtonUntil": { + "type": "string" + }, + "showSupportBadge": { + "type": "boolean" + } + }, + "required": [ + "hideBuyButtonUntil", + "showSupportBadge" + ], + "type": "object" + }, + "PurchaseUpdate": { + "properties": { + "hideBuyButtonUntil": { + "type": "string" + }, + "showSupportBadge": { + "type": "boolean" + } + }, + "type": "object" + }, + "QueueCommand": { + "enum": [ + "start", + "pause", + "resume", + "empty", + "clear-failed" + ], + "type": "string" + }, + "QueueCommandDto": { + "properties": { + "command": { + "allOf": [ + { + "$ref": "#/components/schemas/QueueCommand" + } + ] + }, + "force": { + "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": { + "type": "object" + }, + "id": { + "type": "string" + }, + "name": { + "allOf": [ + { + "$ref": "#/components/schemas/JobName" + } + ] + }, + "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" + ], + "type": "string" + }, + "QueueResponseDto": { + "properties": { + "isPaused": { + "type": "boolean" + }, + "name": { + "allOf": [ + { + "$ref": "#/components/schemas/QueueName" + } + ] + }, + "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": { + "type": "integer" + }, + "completed": { + "type": "integer" + }, + "delayed": { + "type": "integer" + }, + "failed": { + "type": "integer" + }, + "paused": { + "type": "integer" + }, + "waiting": { + "type": "integer" + } + }, + "required": [ + "active", + "completed", + "delayed", + "failed", + "paused", + "waiting" + ], + "type": "object" + }, + "QueueStatusLegacyDto": { + "properties": { + "isActive": { + "type": "boolean" + }, + "isPaused": { + "type": "boolean" + } + }, + "required": [ + "isActive", + "isPaused" + ], + "type": "object" + }, + "QueueUpdateDto": { + "properties": { + "isPaused": { + "type": "boolean" + } + }, + "type": "object" + }, + "QueuesResponseLegacyDto": { + "properties": { + "backgroundTask": { + "$ref": "#/components/schemas/QueueResponseLegacyDto" + }, + "backupDatabase": { + "$ref": "#/components/schemas/QueueResponseLegacyDto" + }, + "duplicateDetection": { + "$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", + "faceDetection", + "facialRecognition", + "library", + "metadataExtraction", + "migration", + "notifications", + "ocr", + "search", + "sidecar", + "smartSearch", + "storageTemplateMigration", + "thumbnailGeneration", + "videoConversion", + "workflow" + ], + "type": "object" + }, + "RandomSearchDto": { + "properties": { + "albumIds": { + "items": { + "format": "uuid", + "type": "string" + }, + "type": "array" + }, + "city": { + "nullable": true, + "type": "string" + }, + "country": { + "nullable": true, + "type": "string" + }, + "createdAfter": { + "format": "date-time", + "type": "string" + }, + "createdBefore": { + "format": "date-time", + "type": "string" + }, + "deviceId": { + "type": "string" + }, + "isEncoded": { + "type": "boolean" + }, + "isFavorite": { + "type": "boolean" + }, + "isMotion": { + "type": "boolean" + }, + "isNotInAlbum": { + "type": "boolean" + }, + "isOffline": { + "type": "boolean" + }, + "lensModel": { + "nullable": true, + "type": "string" + }, + "libraryId": { + "format": "uuid", + "nullable": true, + "type": "string" + }, + "make": { + "type": "string" + }, + "model": { + "nullable": true, + "type": "string" + }, + "ocr": { + "type": "string" + }, + "personIds": { + "items": { + "format": "uuid", + "type": "string" + }, + "type": "array" + }, + "rating": { + "maximum": 5, + "minimum": -1, + "type": "number" + }, + "size": { + "maximum": 1000, + "minimum": 1, + "type": "number" + }, + "state": { + "nullable": true, + "type": "string" + }, + "tagIds": { + "items": { + "format": "uuid", + "type": "string" + }, + "nullable": true, + "type": "array" + }, + "takenAfter": { + "format": "date-time", + "type": "string" + }, + "takenBefore": { + "format": "date-time", + "type": "string" + }, + "trashedAfter": { + "format": "date-time", + "type": "string" + }, + "trashedBefore": { + "format": "date-time", + "type": "string" + }, + "type": { + "allOf": [ + { + "$ref": "#/components/schemas/AssetTypeEnum" + } + ] + }, + "updatedAfter": { + "format": "date-time", + "type": "string" + }, + "updatedBefore": { + "format": "date-time", + "type": "string" + }, + "visibility": { + "allOf": [ + { + "$ref": "#/components/schemas/AssetVisibility" + } + ] + }, + "withDeleted": { + "type": "boolean" + }, + "withExif": { + "type": "boolean" + }, + "withPeople": { + "type": "boolean" + }, + "withStacked": { + "type": "boolean" + } + }, + "type": "object" + }, + "RatingsResponse": { + "properties": { + "enabled": { + "default": false, + "type": "boolean" + } + }, + "required": [ + "enabled" + ], + "type": "object" + }, + "RatingsUpdate": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "ReactionLevel": { + "enum": [ + "album", + "asset" + ], + "type": "string" + }, + "ReactionType": { + "enum": [ + "comment", + "like" + ], + "type": "string" + }, + "ReverseGeocodingStateResponseDto": { + "properties": { + "lastImportFileName": { + "nullable": true, + "type": "string" + }, + "lastUpdate": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "lastImportFileName", + "lastUpdate" + ], + "type": "object" + }, + "SearchAlbumResponseDto": { + "properties": { + "count": { + "type": "integer" + }, + "facets": { + "items": { + "$ref": "#/components/schemas/SearchFacetResponseDto" + }, + "type": "array" + }, + "items": { + "items": { + "$ref": "#/components/schemas/AlbumResponseDto" + }, + "type": "array" + }, + "total": { + "type": "integer" + } + }, + "required": [ + "count", + "facets", + "items", + "total" + ], + "type": "object" + }, + "SearchAssetResponseDto": { + "properties": { + "count": { + "type": "integer" + }, + "facets": { + "items": { + "$ref": "#/components/schemas/SearchFacetResponseDto" + }, + "type": "array" + }, + "items": { + "items": { + "$ref": "#/components/schemas/AssetResponseDto" + }, + "type": "array" + }, + "nextPage": { + "nullable": true, + "type": "string" + }, + "total": { + "type": "integer" + } + }, + "required": [ + "count", + "facets", + "items", + "nextPage", + "total" + ], + "type": "object" + }, + "SearchExploreItem": { + "properties": { + "data": { + "$ref": "#/components/schemas/AssetResponseDto" + }, + "value": { + "type": "string" + } + }, + "required": [ + "data", + "value" + ], + "type": "object" + }, + "SearchExploreResponseDto": { + "properties": { + "fieldName": { + "type": "string" + }, + "items": { + "items": { + "$ref": "#/components/schemas/SearchExploreItem" + }, + "type": "array" + } + }, + "required": [ + "fieldName", + "items" + ], + "type": "object" + }, + "SearchFacetCountResponseDto": { + "properties": { + "count": { + "type": "integer" + }, + "value": { + "type": "string" + } + }, + "required": [ + "count", + "value" + ], + "type": "object" + }, + "SearchFacetResponseDto": { + "properties": { + "counts": { + "items": { + "$ref": "#/components/schemas/SearchFacetCountResponseDto" + }, + "type": "array" + }, + "fieldName": { + "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": { + "type": "integer" + } + }, + "required": [ + "total" + ], + "type": "object" + }, + "SearchSuggestionType": { + "enum": [ + "country", + "state", + "city", + "camera-make", + "camera-model", + "camera-lens-model" + ], + "type": "string" + }, + "ServerAboutResponseDto": { + "properties": { + "build": { + "type": "string" + }, + "buildImage": { + "type": "string" + }, + "buildImageUrl": { + "type": "string" + }, + "buildUrl": { + "type": "string" + }, + "exiftool": { + "type": "string" + }, + "ffmpeg": { + "type": "string" + }, + "imagemagick": { + "type": "string" + }, + "libvips": { + "type": "string" + }, + "licensed": { + "type": "boolean" + }, + "nodejs": { + "type": "string" + }, + "repository": { + "type": "string" + }, + "repositoryUrl": { + "type": "string" + }, + "sourceCommit": { + "type": "string" + }, + "sourceRef": { + "type": "string" + }, + "sourceUrl": { + "type": "string" + }, + "thirdPartyBugFeatureUrl": { + "type": "string" + }, + "thirdPartyDocumentationUrl": { + "type": "string" + }, + "thirdPartySourceUrl": { + "type": "string" + }, + "thirdPartySupportUrl": { + "type": "string" + }, + "version": { + "type": "string" + }, + "versionUrl": { + "type": "string" + } + }, + "required": [ + "licensed", + "version", + "versionUrl" + ], + "type": "object" + }, + "ServerApkLinksDto": { + "properties": { + "arm64v8a": { + "type": "string" + }, + "armeabiv7a": { + "type": "string" + }, + "universal": { + "type": "string" + }, + "x86_64": { + "type": "string" + } + }, + "required": [ + "arm64v8a", + "armeabiv7a", + "universal", + "x86_64" + ], + "type": "object" + }, + "ServerConfigDto": { + "properties": { + "externalDomain": { + "type": "string" + }, + "isInitialized": { + "type": "boolean" + }, + "isOnboarded": { + "type": "boolean" + }, + "loginPageMessage": { + "type": "string" + }, + "maintenanceMode": { + "type": "boolean" + }, + "mapDarkStyleUrl": { + "type": "string" + }, + "mapLightStyleUrl": { + "type": "string" + }, + "oauthButtonText": { + "type": "string" + }, + "publicUsers": { + "type": "boolean" + }, + "trashDays": { + "type": "integer" + }, + "userDeleteDelay": { + "type": "integer" + } + }, + "required": [ + "externalDomain", + "isInitialized", + "isOnboarded", + "loginPageMessage", + "maintenanceMode", + "mapDarkStyleUrl", + "mapLightStyleUrl", + "oauthButtonText", + "publicUsers", + "trashDays", + "userDeleteDelay" + ], + "type": "object" + }, + "ServerFeaturesDto": { + "properties": { + "configFile": { + "type": "boolean" + }, + "duplicateDetection": { + "type": "boolean" + }, + "email": { + "type": "boolean" + }, + "facialRecognition": { + "type": "boolean" + }, + "importFaces": { + "type": "boolean" + }, + "map": { + "type": "boolean" + }, + "oauth": { + "type": "boolean" + }, + "oauthAutoLaunch": { + "type": "boolean" + }, + "ocr": { + "type": "boolean" + }, + "passwordLogin": { + "type": "boolean" + }, + "reverseGeocoding": { + "type": "boolean" + }, + "search": { + "type": "boolean" + }, + "sidecar": { + "type": "boolean" + }, + "smartSearch": { + "type": "boolean" + }, + "trash": { + "type": "boolean" + } + }, + "required": [ + "configFile", + "duplicateDetection", + "email", + "facialRecognition", + "importFaces", + "map", + "oauth", + "oauthAutoLaunch", + "ocr", + "passwordLogin", + "reverseGeocoding", + "search", + "sidecar", + "smartSearch", + "trash" + ], + "type": "object" + }, + "ServerMediaTypesResponseDto": { + "properties": { + "image": { + "items": { + "type": "string" + }, + "type": "array" + }, + "sidecar": { + "items": { + "type": "string" + }, + "type": "array" + }, + "video": { + "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, + "type": "integer" + }, + "usage": { + "default": 0, + "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, + "format": "int64", + "type": "integer" + }, + "usageVideos": { + "default": 0, + "format": "int64", + "type": "integer" + }, + "videos": { + "default": 0, + "type": "integer" + } + }, + "required": [ + "photos", + "usage", + "usageByUser", + "usagePhotos", + "usageVideos", + "videos" + ], + "type": "object" + }, + "ServerStorageResponseDto": { + "properties": { + "diskAvailable": { + "type": "string" + }, + "diskAvailableRaw": { + "format": "int64", + "type": "integer" + }, + "diskSize": { + "type": "string" + }, + "diskSizeRaw": { + "format": "int64", + "type": "integer" + }, + "diskUsagePercentage": { + "format": "double", + "type": "number" + }, + "diskUse": { + "type": "string" + }, + "diskUseRaw": { + "format": "int64", + "type": "integer" + } + }, + "required": [ + "diskAvailable", + "diskAvailableRaw", + "diskSize", + "diskSizeRaw", + "diskUsagePercentage", + "diskUse", + "diskUseRaw" + ], + "type": "object" + }, + "ServerThemeDto": { + "properties": { + "customCss": { + "type": "string" + } + }, + "required": [ + "customCss" + ], + "type": "object" + }, + "ServerVersionHistoryResponseDto": { + "properties": { + "createdAt": { + "format": "date-time", + "type": "string" + }, + "id": { + "type": "string" + }, + "version": { + "type": "string" + } + }, + "required": [ + "createdAt", + "id", + "version" + ], + "type": "object" + }, + "ServerVersionResponseDto": { + "properties": { + "major": { + "type": "integer" + }, + "minor": { + "type": "integer" + }, + "patch": { + "type": "integer" + } + }, + "required": [ + "major", + "minor", + "patch" + ], + "type": "object" + }, + "SessionCreateDto": { + "properties": { + "deviceOS": { + "type": "string" + }, + "deviceType": { + "type": "string" + }, + "duration": { + "description": "session duration, in seconds", + "minimum": 1, + "type": "number" + } + }, + "type": "object" + }, + "SessionCreateResponseDto": { + "properties": { + "appVersion": { + "nullable": true, + "type": "string" + }, + "createdAt": { + "type": "string" + }, + "current": { + "type": "boolean" + }, + "deviceOS": { + "type": "string" + }, + "deviceType": { + "type": "string" + }, + "expiresAt": { + "type": "string" + }, + "id": { + "type": "string" + }, + "isPendingSyncReset": { + "type": "boolean" + }, + "token": { + "type": "string" + }, + "updatedAt": { + "type": "string" + } + }, + "required": [ + "appVersion", + "createdAt", + "current", + "deviceOS", + "deviceType", + "id", + "isPendingSyncReset", + "token", + "updatedAt" + ], + "type": "object" + }, + "SessionResponseDto": { + "properties": { + "appVersion": { + "nullable": true, + "type": "string" + }, + "createdAt": { + "type": "string" + }, + "current": { + "type": "boolean" + }, + "deviceOS": { + "type": "string" + }, + "deviceType": { + "type": "string" + }, + "expiresAt": { + "type": "string" + }, + "id": { + "type": "string" + }, + "isPendingSyncReset": { + "type": "boolean" + }, + "updatedAt": { + "type": "string" + } + }, + "required": [ + "appVersion", + "createdAt", + "current", + "deviceOS", + "deviceType", + "id", + "isPendingSyncReset", + "updatedAt" + ], + "type": "object" + }, + "SessionUnlockDto": { + "properties": { + "password": { + "type": "string" + }, + "pinCode": { + "example": "123456", + "type": "string" + } + }, + "type": "object" + }, + "SessionUpdateDto": { + "properties": { + "isPendingSyncReset": { + "type": "boolean" + } + }, + "type": "object" + }, + "SetMaintenanceModeDto": { + "properties": { + "action": { + "allOf": [ + { + "$ref": "#/components/schemas/MaintenanceAction" + } + ] + } + }, + "required": [ + "action" + ], + "type": "object" + }, + "SharedLinkCreateDto": { + "properties": { + "albumId": { + "format": "uuid", + "type": "string" + }, + "allowDownload": { + "default": true, + "type": "boolean" + }, + "allowUpload": { + "type": "boolean" + }, + "assetIds": { + "items": { + "format": "uuid", + "type": "string" + }, + "type": "array" + }, + "description": { + "nullable": true, + "type": "string" + }, + "expiresAt": { + "default": null, + "format": "date-time", + "nullable": true, + "type": "string" + }, + "password": { + "nullable": true, + "type": "string" + }, + "showMetadata": { + "default": true, + "type": "boolean" + }, + "slug": { + "nullable": true, + "type": "string" + }, + "type": { + "allOf": [ + { + "$ref": "#/components/schemas/SharedLinkType" + } + ] + } + }, + "required": [ + "type" + ], + "type": "object" + }, + "SharedLinkEditDto": { + "properties": { + "allowDownload": { + "type": "boolean" + }, + "allowUpload": { + "type": "boolean" + }, + "changeExpiryTime": { + "description": "Few clients cannot send null to set the expiryTime to never.\nSetting this flag and not sending expiryAt is considered as null instead.\nClients that can send null values can ignore this.", + "type": "boolean" + }, + "description": { + "nullable": true, + "type": "string" + }, + "expiresAt": { + "format": "date-time", + "nullable": true, + "type": "string" + }, + "password": { + "nullable": true, + "type": "string" + }, + "showMetadata": { + "type": "boolean" + }, + "slug": { + "nullable": true, + "type": "string" + } + }, + "type": "object" + }, + "SharedLinkResponseDto": { + "properties": { + "album": { + "$ref": "#/components/schemas/AlbumResponseDto" + }, + "allowDownload": { + "type": "boolean" + }, + "allowUpload": { + "type": "boolean" + }, + "assets": { + "items": { + "$ref": "#/components/schemas/AssetResponseDto" + }, + "type": "array" + }, + "createdAt": { + "format": "date-time", + "type": "string" + }, + "description": { + "nullable": true, + "type": "string" + }, + "expiresAt": { + "format": "date-time", + "nullable": true, + "type": "string" + }, + "id": { + "type": "string" + }, + "key": { + "type": "string" + }, + "password": { + "nullable": true, + "type": "string" + }, + "showMetadata": { + "type": "boolean" + }, + "slug": { + "nullable": true, + "type": "string" + }, + "token": { + "nullable": true, + "type": "string" + }, + "type": { + "allOf": [ + { + "$ref": "#/components/schemas/SharedLinkType" + } + ] + }, + "userId": { + "type": "string" + } + }, + "required": [ + "allowDownload", + "allowUpload", + "assets", + "createdAt", + "description", + "expiresAt", + "id", + "key", + "password", + "showMetadata", + "slug", + "type", + "userId" + ], + "type": "object" + }, + "SharedLinkType": { + "enum": [ + "ALBUM", + "INDIVIDUAL" + ], + "type": "string" + }, + "SharedLinksResponse": { + "properties": { + "enabled": { + "default": true, + "type": "boolean" + }, + "sidebarWeb": { + "default": false, + "type": "boolean" + } + }, + "required": [ + "enabled", + "sidebarWeb" + ], + "type": "object" + }, + "SharedLinksUpdate": { + "properties": { + "enabled": { + "type": "boolean" + }, + "sidebarWeb": { + "type": "boolean" + } + }, + "type": "object" + }, + "SignUpDto": { + "properties": { + "email": { + "example": "testuser@email.com", + "format": "email", + "type": "string" + }, + "name": { + "example": "Admin", + "type": "string" + }, + "password": { + "example": "password", + "type": "string" + } + }, + "required": [ + "email", + "name", + "password" + ], + "type": "object" + }, + "SmartSearchDto": { + "properties": { + "albumIds": { + "items": { + "format": "uuid", + "type": "string" + }, + "type": "array" + }, + "city": { + "nullable": true, + "type": "string" + }, + "country": { + "nullable": true, + "type": "string" + }, + "createdAfter": { + "format": "date-time", + "type": "string" + }, + "createdBefore": { + "format": "date-time", + "type": "string" + }, + "deviceId": { + "type": "string" + }, + "isEncoded": { + "type": "boolean" + }, + "isFavorite": { + "type": "boolean" + }, + "isMotion": { + "type": "boolean" + }, + "isNotInAlbum": { + "type": "boolean" + }, + "isOffline": { + "type": "boolean" + }, + "language": { + "type": "string" + }, + "lensModel": { + "nullable": true, + "type": "string" + }, + "libraryId": { + "format": "uuid", + "nullable": true, + "type": "string" + }, + "make": { + "type": "string" + }, + "model": { + "nullable": true, + "type": "string" + }, + "ocr": { + "type": "string" + }, + "page": { + "minimum": 1, + "type": "number" + }, + "personIds": { + "items": { + "format": "uuid", + "type": "string" + }, + "type": "array" + }, + "query": { + "type": "string" + }, + "queryAssetId": { + "format": "uuid", + "type": "string" + }, + "rating": { + "maximum": 5, + "minimum": -1, + "type": "number" + }, + "size": { + "maximum": 1000, + "minimum": 1, + "type": "number" + }, + "state": { + "nullable": true, + "type": "string" + }, + "tagIds": { + "items": { + "format": "uuid", + "type": "string" + }, + "nullable": true, + "type": "array" + }, + "takenAfter": { + "format": "date-time", + "type": "string" + }, + "takenBefore": { + "format": "date-time", + "type": "string" + }, + "trashedAfter": { + "format": "date-time", + "type": "string" + }, + "trashedBefore": { + "format": "date-time", + "type": "string" + }, + "type": { + "allOf": [ + { + "$ref": "#/components/schemas/AssetTypeEnum" + } + ] + }, + "updatedAfter": { + "format": "date-time", + "type": "string" + }, + "updatedBefore": { + "format": "date-time", + "type": "string" + }, + "visibility": { + "allOf": [ + { + "$ref": "#/components/schemas/AssetVisibility" + } + ] + }, + "withDeleted": { + "type": "boolean" + }, + "withExif": { + "type": "boolean" + } + }, + "type": "object" + }, + "SourceType": { + "enum": [ + "machine-learning", + "exif", + "manual" + ], + "type": "string" + }, + "StackCreateDto": { + "properties": { + "assetIds": { + "description": "first asset becomes the primary", + "items": { + "format": "uuid", + "type": "string" + }, + "minItems": 2, + "type": "array" + } + }, + "required": [ + "assetIds" + ], + "type": "object" + }, + "StackResponseDto": { + "properties": { + "assets": { + "items": { + "$ref": "#/components/schemas/AssetResponseDto" + }, + "type": "array" + }, + "id": { + "type": "string" + }, + "primaryAssetId": { + "type": "string" + } + }, + "required": [ + "assets", + "id", + "primaryAssetId" + ], + "type": "object" + }, + "StackUpdateDto": { + "properties": { + "primaryAssetId": { + "format": "uuid", + "type": "string" + } + }, + "type": "object" + }, + "StatisticsSearchDto": { + "properties": { + "albumIds": { + "items": { + "format": "uuid", + "type": "string" + }, + "type": "array" + }, + "city": { + "nullable": true, + "type": "string" + }, + "country": { + "nullable": true, + "type": "string" + }, + "createdAfter": { + "format": "date-time", + "type": "string" + }, + "createdBefore": { + "format": "date-time", + "type": "string" + }, + "description": { + "type": "string" + }, + "deviceId": { + "type": "string" + }, + "isEncoded": { + "type": "boolean" + }, + "isFavorite": { + "type": "boolean" + }, + "isMotion": { + "type": "boolean" + }, + "isNotInAlbum": { + "type": "boolean" + }, + "isOffline": { + "type": "boolean" + }, + "lensModel": { + "nullable": true, + "type": "string" + }, + "libraryId": { + "format": "uuid", + "nullable": true, + "type": "string" + }, + "make": { + "type": "string" + }, + "model": { + "nullable": true, + "type": "string" + }, + "ocr": { + "type": "string" + }, + "personIds": { + "items": { + "format": "uuid", + "type": "string" + }, + "type": "array" + }, + "rating": { + "maximum": 5, + "minimum": -1, + "type": "number" + }, + "state": { + "nullable": true, + "type": "string" + }, + "tagIds": { + "items": { + "format": "uuid", + "type": "string" + }, + "nullable": true, + "type": "array" + }, + "takenAfter": { + "format": "date-time", + "type": "string" + }, + "takenBefore": { + "format": "date-time", + "type": "string" + }, + "trashedAfter": { + "format": "date-time", + "type": "string" + }, + "trashedBefore": { + "format": "date-time", + "type": "string" + }, + "type": { + "allOf": [ + { + "$ref": "#/components/schemas/AssetTypeEnum" + } + ] + }, + "updatedAfter": { + "format": "date-time", + "type": "string" + }, + "updatedBefore": { + "format": "date-time", + "type": "string" + }, + "visibility": { + "allOf": [ + { + "$ref": "#/components/schemas/AssetVisibility" + } + ] + } + }, + "type": "object" + }, + "SyncAckDeleteDto": { + "properties": { + "types": { + "items": { + "$ref": "#/components/schemas/SyncEntityType" + }, + "type": "array" + } + }, + "type": "object" + }, + "SyncAckDto": { + "properties": { + "ack": { + "type": "string" + }, + "type": { + "allOf": [ + { + "$ref": "#/components/schemas/SyncEntityType" + } + ] + } + }, + "required": [ + "ack", + "type" + ], + "type": "object" + }, + "SyncAckSetDto": { + "properties": { + "acks": { + "items": { + "type": "string" + }, + "maxItems": 1000, + "type": "array" + } + }, + "required": [ + "acks" + ], + "type": "object" + }, + "SyncAckV1": { + "properties": {}, + "type": "object" + }, + "SyncAlbumDeleteV1": { + "properties": { + "albumId": { + "type": "string" + } + }, + "required": [ + "albumId" + ], + "type": "object" + }, + "SyncAlbumToAssetDeleteV1": { + "properties": { + "albumId": { + "type": "string" + }, + "assetId": { + "type": "string" + } + }, + "required": [ + "albumId", + "assetId" + ], + "type": "object" + }, + "SyncAlbumToAssetV1": { + "properties": { + "albumId": { + "type": "string" + }, + "assetId": { + "type": "string" + } + }, + "required": [ + "albumId", + "assetId" + ], + "type": "object" + }, + "SyncAlbumUserDeleteV1": { + "properties": { + "albumId": { + "type": "string" + }, + "userId": { + "type": "string" + } + }, + "required": [ + "albumId", + "userId" + ], + "type": "object" + }, + "SyncAlbumUserV1": { + "properties": { + "albumId": { + "type": "string" + }, + "role": { + "allOf": [ + { + "$ref": "#/components/schemas/AlbumUserRole" + } + ] + }, + "userId": { + "type": "string" + } + }, + "required": [ + "albumId", + "role", + "userId" + ], + "type": "object" + }, + "SyncAlbumV1": { + "properties": { + "createdAt": { + "format": "date-time", + "type": "string" + }, + "description": { + "type": "string" + }, + "id": { + "type": "string" + }, + "isActivityEnabled": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "order": { + "allOf": [ + { + "$ref": "#/components/schemas/AssetOrder" + } + ] + }, + "ownerId": { + "type": "string" + }, + "thumbnailAssetId": { + "nullable": true, + "type": "string" + }, + "updatedAt": { + "format": "date-time", + "type": "string" + } + }, + "required": [ + "createdAt", + "description", + "id", + "isActivityEnabled", + "name", + "order", + "ownerId", + "thumbnailAssetId", + "updatedAt" + ], + "type": "object" + }, + "SyncAssetDeleteV1": { + "properties": { + "assetId": { + "type": "string" + } + }, + "required": [ + "assetId" + ], + "type": "object" + }, + "SyncAssetExifV1": { + "properties": { + "assetId": { + "type": "string" + }, + "city": { + "nullable": true, + "type": "string" + }, + "country": { + "nullable": true, + "type": "string" + }, + "dateTimeOriginal": { + "format": "date-time", + "nullable": true, + "type": "string" + }, + "description": { + "nullable": true, + "type": "string" + }, + "exifImageHeight": { + "nullable": true, + "type": "integer" + }, + "exifImageWidth": { + "nullable": true, + "type": "integer" + }, + "exposureTime": { + "nullable": true, + "type": "string" + }, + "fNumber": { + "format": "double", + "nullable": true, + "type": "number" + }, + "fileSizeInByte": { + "nullable": true, + "type": "integer" + }, + "focalLength": { + "format": "double", + "nullable": true, + "type": "number" + }, + "fps": { + "format": "double", + "nullable": true, + "type": "number" + }, + "iso": { + "nullable": true, + "type": "integer" + }, + "latitude": { + "format": "double", + "nullable": true, + "type": "number" + }, + "lensModel": { + "nullable": true, + "type": "string" + }, + "longitude": { + "format": "double", + "nullable": true, + "type": "number" + }, + "make": { + "nullable": true, + "type": "string" + }, + "model": { + "nullable": true, + "type": "string" + }, + "modifyDate": { + "format": "date-time", + "nullable": true, + "type": "string" + }, + "orientation": { + "nullable": true, + "type": "string" + }, + "profileDescription": { + "nullable": true, + "type": "string" + }, + "projectionType": { + "nullable": true, + "type": "string" + }, + "rating": { + "nullable": true, + "type": "integer" + }, + "state": { + "nullable": true, + "type": "string" + }, + "timeZone": { + "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": { + "type": "string" + } + }, + "required": [ + "assetFaceId" + ], + "type": "object" + }, + "SyncAssetFaceV1": { + "properties": { + "assetId": { + "type": "string" + }, + "boundingBoxX1": { + "type": "integer" + }, + "boundingBoxX2": { + "type": "integer" + }, + "boundingBoxY1": { + "type": "integer" + }, + "boundingBoxY2": { + "type": "integer" + }, + "id": { + "type": "string" + }, + "imageHeight": { + "type": "integer" + }, + "imageWidth": { + "type": "integer" + }, + "personId": { + "nullable": true, + "type": "string" + }, + "sourceType": { + "type": "string" + } + }, + "required": [ + "assetId", + "boundingBoxX1", + "boundingBoxX2", + "boundingBoxY1", + "boundingBoxY2", + "id", + "imageHeight", + "imageWidth", + "personId", + "sourceType" + ], + "type": "object" + }, + "SyncAssetMetadataDeleteV1": { + "properties": { + "assetId": { + "type": "string" + }, + "key": { + "allOf": [ + { + "$ref": "#/components/schemas/AssetMetadataKey" + } + ] + } + }, + "required": [ + "assetId", + "key" + ], + "type": "object" + }, + "SyncAssetMetadataV1": { + "properties": { + "assetId": { + "type": "string" + }, + "key": { + "allOf": [ + { + "$ref": "#/components/schemas/AssetMetadataKey" + } + ] + }, + "value": { + "type": "object" + } + }, + "required": [ + "assetId", + "key", + "value" + ], + "type": "object" + }, + "SyncAssetV1": { + "properties": { + "checksum": { + "type": "string" + }, + "deletedAt": { + "format": "date-time", + "nullable": true, + "type": "string" + }, + "duration": { + "nullable": true, + "type": "string" + }, + "fileCreatedAt": { + "format": "date-time", + "nullable": true, + "type": "string" + }, + "fileModifiedAt": { + "format": "date-time", + "nullable": true, + "type": "string" + }, + "id": { + "type": "string" + }, + "isFavorite": { + "type": "boolean" + }, + "libraryId": { + "nullable": true, + "type": "string" + }, + "livePhotoVideoId": { + "nullable": true, + "type": "string" + }, + "localDateTime": { + "format": "date-time", + "nullable": true, + "type": "string" + }, + "originalFileName": { + "type": "string" + }, + "ownerId": { + "type": "string" + }, + "stackId": { + "nullable": true, + "type": "string" + }, + "thumbhash": { + "nullable": true, + "type": "string" + }, + "type": { + "allOf": [ + { + "$ref": "#/components/schemas/AssetTypeEnum" + } + ] + }, + "visibility": { + "allOf": [ + { + "$ref": "#/components/schemas/AssetVisibility" + } + ] + } + }, + "required": [ + "checksum", + "deletedAt", + "duration", + "fileCreatedAt", + "fileModifiedAt", + "id", + "isFavorite", + "libraryId", + "livePhotoVideoId", + "localDateTime", + "originalFileName", + "ownerId", + "stackId", + "thumbhash", + "type", + "visibility" + ], + "type": "object" + }, + "SyncAuthUserV1": { + "properties": { + "avatarColor": { + "allOf": [ + { + "$ref": "#/components/schemas/UserAvatarColor" + } + ], + "nullable": true + }, + "deletedAt": { + "format": "date-time", + "nullable": true, + "type": "string" + }, + "email": { + "type": "string" + }, + "hasProfileImage": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "isAdmin": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "oauthId": { + "type": "string" + }, + "pinCode": { + "nullable": true, + "type": "string" + }, + "profileChangedAt": { + "format": "date-time", + "type": "string" + }, + "quotaSizeInBytes": { + "nullable": true, + "type": "integer" + }, + "quotaUsageInBytes": { + "type": "integer" + }, + "storageLabel": { + "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": { + "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": { + "type": "string" + }, + "memoryId": { + "type": "string" + } + }, + "required": [ + "assetId", + "memoryId" + ], + "type": "object" + }, + "SyncMemoryAssetV1": { + "properties": { + "assetId": { + "type": "string" + }, + "memoryId": { + "type": "string" + } + }, + "required": [ + "assetId", + "memoryId" + ], + "type": "object" + }, + "SyncMemoryDeleteV1": { + "properties": { + "memoryId": { + "type": "string" + } + }, + "required": [ + "memoryId" + ], + "type": "object" + }, + "SyncMemoryV1": { + "properties": { + "createdAt": { + "format": "date-time", + "type": "string" + }, + "data": { + "type": "object" + }, + "deletedAt": { + "format": "date-time", + "nullable": true, + "type": "string" + }, + "hideAt": { + "format": "date-time", + "nullable": true, + "type": "string" + }, + "id": { + "type": "string" + }, + "isSaved": { + "type": "boolean" + }, + "memoryAt": { + "format": "date-time", + "type": "string" + }, + "ownerId": { + "type": "string" + }, + "seenAt": { + "format": "date-time", + "nullable": true, + "type": "string" + }, + "showAt": { + "format": "date-time", + "nullable": true, + "type": "string" + }, + "type": { + "allOf": [ + { + "$ref": "#/components/schemas/MemoryType" + } + ] + }, + "updatedAt": { + "format": "date-time", + "type": "string" + } + }, + "required": [ + "createdAt", + "data", + "deletedAt", + "hideAt", + "id", + "isSaved", + "memoryAt", + "ownerId", + "seenAt", + "showAt", + "type", + "updatedAt" + ], + "type": "object" + }, + "SyncPartnerDeleteV1": { + "properties": { + "sharedById": { + "type": "string" + }, + "sharedWithId": { + "type": "string" + } + }, + "required": [ + "sharedById", + "sharedWithId" + ], + "type": "object" + }, + "SyncPartnerV1": { + "properties": { + "inTimeline": { + "type": "boolean" + }, + "sharedById": { + "type": "string" + }, + "sharedWithId": { + "type": "string" + } + }, + "required": [ + "inTimeline", + "sharedById", + "sharedWithId" + ], + "type": "object" + }, + "SyncPersonDeleteV1": { + "properties": { + "personId": { + "type": "string" + } + }, + "required": [ + "personId" + ], + "type": "object" + }, + "SyncPersonV1": { + "properties": { + "birthDate": { + "format": "date-time", + "nullable": true, + "type": "string" + }, + "color": { + "nullable": true, + "type": "string" + }, + "createdAt": { + "format": "date-time", + "type": "string" + }, + "faceAssetId": { + "nullable": true, + "type": "string" + }, + "id": { + "type": "string" + }, + "isFavorite": { + "type": "boolean" + }, + "isHidden": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "ownerId": { + "type": "string" + }, + "updatedAt": { + "format": "date-time", + "type": "string" + } + }, + "required": [ + "birthDate", + "color", + "createdAt", + "faceAssetId", + "id", + "isFavorite", + "isHidden", + "name", + "ownerId", + "updatedAt" + ], + "type": "object" + }, + "SyncRequestType": { + "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": { + "type": "string" + } + }, + "required": [ + "stackId" + ], + "type": "object" + }, + "SyncStackV1": { + "properties": { + "createdAt": { + "format": "date-time", + "type": "string" + }, + "id": { + "type": "string" + }, + "ownerId": { + "type": "string" + }, + "primaryAssetId": { + "type": "string" + }, + "updatedAt": { + "format": "date-time", + "type": "string" + } + }, + "required": [ + "createdAt", + "id", + "ownerId", + "primaryAssetId", + "updatedAt" + ], + "type": "object" + }, + "SyncStreamDto": { + "properties": { + "reset": { + "type": "boolean" + }, + "types": { + "items": { + "$ref": "#/components/schemas/SyncRequestType" + }, + "type": "array" + } + }, + "required": [ + "types" + ], + "type": "object" + }, + "SyncUserDeleteV1": { + "properties": { + "userId": { + "type": "string" + } + }, + "required": [ + "userId" + ], + "type": "object" + }, + "SyncUserMetadataDeleteV1": { + "properties": { + "key": { + "allOf": [ + { + "$ref": "#/components/schemas/UserMetadataKey" + } + ] + }, + "userId": { + "type": "string" + } + }, + "required": [ + "key", + "userId" + ], + "type": "object" + }, + "SyncUserMetadataV1": { + "properties": { + "key": { + "allOf": [ + { + "$ref": "#/components/schemas/UserMetadataKey" + } + ] + }, + "userId": { + "type": "string" + }, + "value": { + "type": "object" + } + }, + "required": [ + "key", + "userId", + "value" + ], + "type": "object" + }, + "SyncUserV1": { + "properties": { + "avatarColor": { + "allOf": [ + { + "$ref": "#/components/schemas/UserAvatarColor" + } + ], + "nullable": true + }, + "deletedAt": { + "format": "date-time", + "nullable": true, + "type": "string" + }, + "email": { + "type": "string" + }, + "hasProfileImage": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "profileChangedAt": { + "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" + } + ] + }, + "accelDecode": { + "type": "boolean" + }, + "acceptedAudioCodecs": { + "items": { + "$ref": "#/components/schemas/AudioCodec" + }, + "type": "array" + }, + "acceptedContainers": { + "items": { + "$ref": "#/components/schemas/VideoContainer" + }, + "type": "array" + }, + "acceptedVideoCodecs": { + "items": { + "$ref": "#/components/schemas/VideoCodec" + }, + "type": "array" + }, + "bframes": { + "maximum": 16, + "minimum": -1, + "type": "integer" + }, + "cqMode": { + "allOf": [ + { + "$ref": "#/components/schemas/CQMode" + } + ] + }, + "crf": { + "maximum": 51, + "minimum": 0, + "type": "integer" + }, + "gopSize": { + "minimum": 0, + "type": "integer" + }, + "maxBitrate": { + "type": "string" + }, + "preferredHwDevice": { + "type": "string" + }, + "preset": { + "type": "string" + }, + "refs": { + "maximum": 6, + "minimum": 0, + "type": "integer" + }, + "targetAudioCodec": { + "allOf": [ + { + "$ref": "#/components/schemas/AudioCodec" + } + ] + }, + "targetResolution": { + "type": "string" + }, + "targetVideoCodec": { + "allOf": [ + { + "$ref": "#/components/schemas/VideoCodec" + } + ] + }, + "temporalAQ": { + "type": "boolean" + }, + "threads": { + "minimum": 0, + "type": "integer" + }, + "tonemap": { + "allOf": [ + { + "$ref": "#/components/schemas/ToneMapping" + } + ] + }, + "transcode": { + "allOf": [ + { + "$ref": "#/components/schemas/TranscodePolicy" + } + ] + }, + "twoPass": { + "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": { + "type": "boolean" + } + }, + "required": [ + "import" + ], + "type": "object" + }, + "SystemConfigGeneratedFullsizeImageDto": { + "properties": { + "enabled": { + "type": "boolean" + }, + "format": { + "allOf": [ + { + "$ref": "#/components/schemas/ImageFormat" + } + ] + }, + "quality": { + "maximum": 100, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "enabled", + "format", + "quality" + ], + "type": "object" + }, + "SystemConfigGeneratedImageDto": { + "properties": { + "format": { + "allOf": [ + { + "$ref": "#/components/schemas/ImageFormat" + } + ] + }, + "quality": { + "maximum": 100, + "minimum": 1, + "type": "integer" + }, + "size": { + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "format", + "quality", + "size" + ], + "type": "object" + }, + "SystemConfigImageDto": { + "properties": { + "colorspace": { + "allOf": [ + { + "$ref": "#/components/schemas/Colorspace" + } + ] + }, + "extractEmbedded": { + "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" + }, + "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", + "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": { + "type": "boolean" + } + }, + "required": [ + "cronExpression", + "enabled" + ], + "type": "object" + }, + "SystemConfigLibraryWatchDto": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "required": [ + "enabled" + ], + "type": "object" + }, + "SystemConfigLoggingDto": { + "properties": { + "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": { + "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": { + "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": { + "type": "boolean" + } + }, + "required": [ + "enabled" + ], + "type": "object" + }, + "SystemConfigNightlyTasksDto": { + "properties": { + "clusterNewFaces": { + "type": "boolean" + }, + "databaseCleanup": { + "type": "boolean" + }, + "generateMemories": { + "type": "boolean" + }, + "missingThumbnails": { + "type": "boolean" + }, + "startTime": { + "type": "string" + }, + "syncQuotaUsage": { + "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": { + "type": "boolean" + }, + "autoRegister": { + "type": "boolean" + }, + "buttonText": { + "type": "string" + }, + "clientId": { + "type": "string" + }, + "clientSecret": { + "type": "string" + }, + "defaultStorageQuota": { + "format": "int64", + "minimum": 0, + "nullable": true, + "type": "integer" + }, + "enabled": { + "type": "boolean" + }, + "issuerUrl": { + "type": "string" + }, + "mobileOverrideEnabled": { + "type": "boolean" + }, + "mobileRedirectUri": { + "format": "uri", + "type": "string" + }, + "profileSigningAlgorithm": { + "type": "string" + }, + "roleClaim": { + "type": "string" + }, + "scope": { + "type": "string" + }, + "signingAlgorithm": { + "type": "string" + }, + "storageLabelClaim": { + "type": "string" + }, + "storageQuotaClaim": { + "type": "string" + }, + "timeout": { + "minimum": 1, + "type": "integer" + }, + "tokenEndpointAuthMethod": { + "allOf": [ + { + "$ref": "#/components/schemas/OAuthTokenEndpointAuthMethod" + } + ] + } + }, + "required": [ + "autoLaunch", + "autoRegister", + "buttonText", + "clientId", + "clientSecret", + "defaultStorageQuota", + "enabled", + "issuerUrl", + "mobileOverrideEnabled", + "mobileRedirectUri", + "profileSigningAlgorithm", + "roleClaim", + "scope", + "signingAlgorithm", + "storageLabelClaim", + "storageQuotaClaim", + "timeout", + "tokenEndpointAuthMethod" + ], + "type": "object" + }, + "SystemConfigPasswordLoginDto": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "required": [ + "enabled" + ], + "type": "object" + }, + "SystemConfigReverseGeocodingDto": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "required": [ + "enabled" + ], + "type": "object" + }, + "SystemConfigServerDto": { + "properties": { + "externalDomain": { + "format": "uri", + "type": "string" + }, + "loginPageMessage": { + "type": "string" + }, + "publicUsers": { + "type": "boolean" + } + }, + "required": [ + "externalDomain", + "loginPageMessage", + "publicUsers" + ], + "type": "object" + }, + "SystemConfigSmtpDto": { + "properties": { + "enabled": { + "type": "boolean" + }, + "from": { + "type": "string" + }, + "replyTo": { + "type": "string" + }, + "transport": { + "$ref": "#/components/schemas/SystemConfigSmtpTransportDto" + } + }, + "required": [ + "enabled", + "from", + "replyTo", + "transport" + ], + "type": "object" + }, + "SystemConfigSmtpTransportDto": { + "properties": { + "host": { + "type": "string" + }, + "ignoreCert": { + "type": "boolean" + }, + "password": { + "type": "string" + }, + "port": { + "maximum": 65535, + "minimum": 0, + "type": "number" + }, + "secure": { + "type": "boolean" + }, + "username": { + "type": "string" + } + }, + "required": [ + "host", + "ignoreCert", + "password", + "port", + "secure", + "username" + ], + "type": "object" + }, + "SystemConfigStorageTemplateDto": { + "properties": { + "enabled": { + "type": "boolean" + }, + "hashVerificationEnabled": { + "type": "boolean" + }, + "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": { + "items": { + "type": "string" + }, + "type": "array" + }, + "hourOptions": { + "items": { + "type": "string" + }, + "type": "array" + }, + "minuteOptions": { + "items": { + "type": "string" + }, + "type": "array" + }, + "monthOptions": { + "items": { + "type": "string" + }, + "type": "array" + }, + "presetOptions": { + "items": { + "type": "string" + }, + "type": "array" + }, + "secondOptions": { + "items": { + "type": "string" + }, + "type": "array" + }, + "weekOptions": { + "items": { + "type": "string" + }, + "type": "array" + }, + "yearOptions": { + "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": { + "type": "string" + } + }, + "required": [ + "customCss" + ], + "type": "object" + }, + "SystemConfigTrashDto": { + "properties": { + "days": { + "minimum": 0, + "type": "integer" + }, + "enabled": { + "type": "boolean" + } + }, + "required": [ + "days", + "enabled" + ], + "type": "object" + }, + "SystemConfigUserDto": { + "properties": { + "deleteDelay": { + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "deleteDelay" + ], + "type": "object" + }, + "TagBulkAssetsDto": { + "properties": { + "assetIds": { + "items": { + "format": "uuid", + "type": "string" + }, + "type": "array" + }, + "tagIds": { + "items": { + "format": "uuid", + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "assetIds", + "tagIds" + ], + "type": "object" + }, + "TagBulkAssetsResponseDto": { + "properties": { + "count": { + "type": "integer" + } + }, + "required": [ + "count" + ], + "type": "object" + }, + "TagCreateDto": { + "properties": { + "color": { + "pattern": "^#?([0-9A-F]{3}|[0-9A-F]{4}|[0-9A-F]{6}|[0-9A-F]{8})$", + "type": "string" + }, + "name": { + "type": "string" + }, + "parentId": { + "format": "uuid", + "nullable": true, + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object" + }, + "TagResponseDto": { + "properties": { + "color": { + "type": "string" + }, + "createdAt": { + "format": "date-time", + "type": "string" + }, + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "parentId": { + "type": "string" + }, + "updatedAt": { + "format": "date-time", + "type": "string" + }, + "value": { + "type": "string" + } + }, + "required": [ + "createdAt", + "id", + "name", + "updatedAt", + "value" + ], + "type": "object" + }, + "TagUpdateDto": { + "properties": { + "color": { + "nullable": true, + "type": "string" + } + }, + "type": "object" + }, + "TagUpsertDto": { + "properties": { + "tags": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "tags" + ], + "type": "object" + }, + "TagsResponse": { + "properties": { + "enabled": { + "default": true, + "type": "boolean" + }, + "sidebarWeb": { + "default": true, + "type": "boolean" + } + }, + "required": [ + "enabled", + "sidebarWeb" + ], + "type": "object" + }, + "TagsUpdate": { + "properties": { + "enabled": { + "type": "boolean" + }, + "sidebarWeb": { + "type": "boolean" + } + }, + "type": "object" + }, + "TemplateDto": { + "properties": { + "template": { + "type": "string" + } + }, + "required": [ + "template" + ], + "type": "object" + }, + "TemplateResponseDto": { + "properties": { + "html": { + "type": "string" + }, + "name": { + "type": "string" + } + }, + "required": [ + "html", + "name" + ], + "type": "object" + }, + "TestEmailResponseDto": { + "properties": { + "messageId": { + "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 (ISO 8601 format, without timezone)", + "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": { + "enum": [ + "hable", + "mobius", + "reinhard", + "disabled" + ], + "type": "string" + }, + "TranscodeHWAccel": { + "enum": [ + "nvenc", + "qsv", + "vaapi", + "rkmpp", + "disabled" + ], + "type": "string" + }, + "TranscodePolicy": { + "enum": [ + "all", + "optimal", + "bitrate", + "required", + "disabled" + ], + "type": "string" + }, + "TrashResponseDto": { + "properties": { + "count": { + "type": "integer" + } + }, + "required": [ + "count" + ], + "type": "object" + }, + "UpdateAlbumDto": { + "properties": { + "albumName": { + "type": "string" + }, + "albumThumbnailAssetId": { + "format": "uuid", + "type": "string" + }, + "description": { + "type": "string" + }, + "isActivityEnabled": { + "type": "boolean" + }, + "order": { + "allOf": [ + { + "$ref": "#/components/schemas/AssetOrder" + } + ] + } + }, + "type": "object" + }, + "UpdateAlbumUserDto": { + "properties": { + "role": { + "allOf": [ + { + "$ref": "#/components/schemas/AlbumUserRole" + } + ] + } + }, + "required": [ + "role" + ], + "type": "object" + }, + "UpdateAssetDto": { + "properties": { + "dateTimeOriginal": { + "type": "string" + }, + "description": { + "type": "string" + }, + "isFavorite": { + "type": "boolean" + }, + "latitude": { + "type": "number" + }, + "livePhotoVideoId": { + "format": "uuid", + "nullable": true, + "type": "string" + }, + "longitude": { + "type": "number" + }, + "rating": { + "maximum": 5, + "minimum": -1, + "type": "number" + }, + "visibility": { + "allOf": [ + { + "$ref": "#/components/schemas/AssetVisibility" + } + ] + } + }, + "type": "object" + }, + "UpdateLibraryDto": { + "properties": { + "exclusionPatterns": { + "items": { + "type": "string" + }, + "maxItems": 128, + "type": "array", + "uniqueItems": true + }, + "importPaths": { + "items": { + "type": "string" + }, + "maxItems": 128, + "type": "array", + "uniqueItems": true + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "UsageByUserDto": { + "properties": { + "photos": { + "type": "integer" + }, + "quotaSizeInBytes": { + "format": "int64", + "nullable": true, + "type": "integer" + }, + "usage": { + "format": "int64", + "type": "integer" + }, + "usagePhotos": { + "format": "int64", + "type": "integer" + }, + "usageVideos": { + "format": "int64", + "type": "integer" + }, + "userId": { + "type": "string" + }, + "userName": { + "type": "string" + }, + "videos": { + "type": "integer" + } + }, + "required": [ + "photos", + "quotaSizeInBytes", + "usage", + "usagePhotos", + "usageVideos", + "userId", + "userName", + "videos" + ], + "type": "object" + }, + "UserAdminCreateDto": { + "properties": { + "avatarColor": { + "allOf": [ + { + "$ref": "#/components/schemas/UserAvatarColor" + } + ], + "nullable": true + }, + "email": { + "format": "email", + "type": "string" + }, + "isAdmin": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "notify": { + "type": "boolean" + }, + "password": { + "type": "string" + }, + "quotaSizeInBytes": { + "format": "int64", + "minimum": 0, + "nullable": true, + "type": "integer" + }, + "shouldChangePassword": { + "type": "boolean" + }, + "storageLabel": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "email", + "name", + "password" + ], + "type": "object" + }, + "UserAdminDeleteDto": { + "properties": { + "force": { + "type": "boolean" + } + }, + "type": "object" + }, + "UserAdminResponseDto": { + "properties": { + "avatarColor": { + "allOf": [ + { + "$ref": "#/components/schemas/UserAvatarColor" + } + ] + }, + "createdAt": { + "format": "date-time", + "type": "string" + }, + "deletedAt": { + "format": "date-time", + "nullable": true, + "type": "string" + }, + "email": { + "type": "string" + }, + "id": { + "type": "string" + }, + "isAdmin": { + "type": "boolean" + }, + "license": { + "allOf": [ + { + "$ref": "#/components/schemas/UserLicense" + } + ], + "nullable": true + }, + "name": { + "type": "string" + }, + "oauthId": { + "type": "string" + }, + "profileChangedAt": { + "format": "date-time", + "type": "string" + }, + "profileImagePath": { + "type": "string" + }, + "quotaSizeInBytes": { + "format": "int64", + "nullable": true, + "type": "integer" + }, + "quotaUsageInBytes": { + "format": "int64", + "nullable": true, + "type": "integer" + }, + "shouldChangePassword": { + "type": "boolean" + }, + "status": { + "allOf": [ + { + "$ref": "#/components/schemas/UserStatus" + } + ] + }, + "storageLabel": { + "nullable": true, + "type": "string" + }, + "updatedAt": { + "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" + } + ], + "nullable": true + }, + "email": { + "format": "email", + "type": "string" + }, + "isAdmin": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "password": { + "type": "string" + }, + "pinCode": { + "example": "123456", + "nullable": true, + "type": "string" + }, + "quotaSizeInBytes": { + "format": "int64", + "minimum": 0, + "nullable": true, + "type": "integer" + }, + "shouldChangePassword": { + "type": "boolean" + }, + "storageLabel": { + "nullable": true, + "type": "string" + } + }, + "type": "object" + }, + "UserAvatarColor": { + "enum": [ + "primary", + "pink", + "red", + "yellow", + "blue", + "green", + "purple", + "orange", + "gray", + "amber" + ], + "type": "string" + }, + "UserLicense": { + "properties": { + "activatedAt": { + "format": "date-time", + "type": "string" + }, + "activationKey": { + "type": "string" + }, + "licenseKey": { + "type": "string" + } + }, + "required": [ + "activatedAt", + "activationKey", + "licenseKey" + ], + "type": "object" + }, + "UserMetadataKey": { + "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" + } + ] + }, + "email": { + "type": "string" + }, + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "profileChangedAt": { + "format": "date-time", + "type": "string" + }, + "profileImagePath": { + "type": "string" + } + }, + "required": [ + "avatarColor", + "email", + "id", + "name", + "profileChangedAt", + "profileImagePath" + ], + "type": "object" + }, + "UserStatus": { + "enum": [ + "active", + "removing", + "deleted" + ], + "type": "string" + }, + "UserUpdateMeDto": { + "properties": { + "avatarColor": { + "allOf": [ + { + "$ref": "#/components/schemas/UserAvatarColor" + } + ], + "nullable": true + }, + "email": { + "format": "email", + "type": "string" + }, + "name": { + "type": "string" + }, + "password": { + "type": "string" + } + }, + "type": "object" + }, + "ValidateAccessTokenResponseDto": { + "properties": { + "authStatus": { + "type": "boolean" + } + }, + "required": [ + "authStatus" + ], + "type": "object" + }, + "ValidateLibraryDto": { + "properties": { + "exclusionPatterns": { + "items": { + "type": "string" + }, + "maxItems": 128, + "type": "array", + "uniqueItems": true + }, + "importPaths": { + "items": { + "type": "string" + }, + "maxItems": 128, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "ValidateLibraryImportPathResponseDto": { + "properties": { + "importPath": { + "type": "string" + }, + "isValid": { + "default": false, + "type": "boolean" + }, + "message": { + "type": "string" + } + }, + "required": [ + "importPath", + "isValid" + ], + "type": "object" + }, + "ValidateLibraryResponseDto": { + "properties": { + "importPaths": { + "items": { + "$ref": "#/components/schemas/ValidateLibraryImportPathResponseDto" + }, + "type": "array" + } + }, + "type": "object" + }, + "VersionCheckStateResponseDto": { + "properties": { + "checkedAt": { + "nullable": true, + "type": "string" + }, + "releaseVersion": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "checkedAt", + "releaseVersion" + ], + "type": "object" + }, + "VideoCodec": { + "enum": [ + "h264", + "hevc", + "vp9", + "av1" + ], + "type": "string" + }, + "VideoContainer": { + "enum": [ + "mov", + "mp4", + "ogg", + "webm" + ], + "type": "string" + }, + "WorkflowActionItemDto": { + "properties": { + "actionConfig": { + "type": "object" + }, + "pluginActionId": { + "format": "uuid", + "type": "string" + } + }, + "required": [ + "pluginActionId" + ], + "type": "object" + }, + "WorkflowActionResponseDto": { + "properties": { + "actionConfig": { + "nullable": true, + "type": "object" + }, + "id": { + "type": "string" + }, + "order": { + "type": "number" + }, + "pluginActionId": { + "type": "string" + }, + "workflowId": { + "type": "string" + } + }, + "required": [ + "actionConfig", + "id", + "order", + "pluginActionId", + "workflowId" + ], + "type": "object" + }, + "WorkflowCreateDto": { + "properties": { + "actions": { + "items": { + "$ref": "#/components/schemas/WorkflowActionItemDto" + }, + "type": "array" + }, + "description": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "filters": { + "items": { + "$ref": "#/components/schemas/WorkflowFilterItemDto" + }, + "type": "array" + }, + "name": { + "type": "string" + }, + "triggerType": { + "allOf": [ + { + "$ref": "#/components/schemas/PluginTriggerType" + } + ] + } + }, + "required": [ + "actions", + "filters", + "name", + "triggerType" + ], + "type": "object" + }, + "WorkflowFilterItemDto": { + "properties": { + "filterConfig": { + "type": "object" + }, + "pluginFilterId": { + "format": "uuid", + "type": "string" + } + }, + "required": [ + "pluginFilterId" + ], + "type": "object" + }, + "WorkflowFilterResponseDto": { + "properties": { + "filterConfig": { + "nullable": true, + "type": "object" + }, + "id": { + "type": "string" + }, + "order": { + "type": "number" + }, + "pluginFilterId": { + "type": "string" + }, + "workflowId": { + "type": "string" + } + }, + "required": [ + "filterConfig", + "id", + "order", + "pluginFilterId", + "workflowId" + ], + "type": "object" + }, + "WorkflowResponseDto": { + "properties": { + "actions": { + "items": { + "$ref": "#/components/schemas/WorkflowActionResponseDto" + }, + "type": "array" + }, + "createdAt": { + "type": "string" + }, + "description": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "filters": { + "items": { + "$ref": "#/components/schemas/WorkflowFilterResponseDto" + }, + "type": "array" + }, + "id": { + "type": "string" + }, + "name": { + "nullable": true, + "type": "string" + }, + "ownerId": { + "type": "string" + }, + "triggerType": { + "allOf": [ + { + "$ref": "#/components/schemas/PluginTriggerType" + } + ] + } + }, + "required": [ + "actions", + "createdAt", + "description", + "enabled", + "filters", + "id", + "name", + "ownerId", + "triggerType" + ], + "type": "object" + }, + "WorkflowUpdateDto": { + "properties": { + "actions": { + "items": { + "$ref": "#/components/schemas/WorkflowActionItemDto" + }, + "type": "array" + }, + "description": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "filters": { + "items": { + "$ref": "#/components/schemas/WorkflowFilterItemDto" + }, + "type": "array" + }, + "name": { + "type": "string" + }, + "triggerType": { + "allOf": [ + { + "$ref": "#/components/schemas/PluginTriggerType" + } + ] } }, - "required": ["id", "assetCount"] + "type": "object" } } } -} +} \ No newline at end of file