diff --git a/mobile/openapi/README.md b/mobile/openapi/README.md index f377736bfe..a283133aa6 100644 --- a/mobile/openapi/README.md +++ b/mobile/openapi/README.md @@ -3,8 +3,8 @@ Immich API This Dart package is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project: -- API version: 2.6.3 -- Generator version: 7.8.0 +- API version: 3.0.1 +- Generator version: 7.22.0 - Build package: org.openapitools.codegen.languages.DartClientCodegen ## Requirements @@ -56,10 +56,10 @@ import 'package:openapi/api.dart'; //defaultApiClient.getAuthentication('bearer').setAccessToken(yourTokenGeneratorFunction); final api_instance = APIKeysApi(); -final aPIKeyCreateDto = APIKeyCreateDto(); // APIKeyCreateDto | +final apiKeyCreateDto = ApiKeyCreateDto(); // ApiKeyCreateDto | try { - final result = api_instance.createApiKey(aPIKeyCreateDto); + final result = api_instance.createApiKey(apiKeyCreateDto); print(result); } catch (e) { print('Exception when calling APIKeysApi->createApiKey: $e\n'); @@ -89,6 +89,7 @@ Class | Method | HTTP request | Description *AlbumsApi* | [**createAlbum**](doc//AlbumsApi.md#createalbum) | **POST** /albums | Create an album *AlbumsApi* | [**deleteAlbum**](doc//AlbumsApi.md#deletealbum) | **DELETE** /albums/{id} | Delete an album *AlbumsApi* | [**getAlbumInfo**](doc//AlbumsApi.md#getalbuminfo) | **GET** /albums/{id} | Retrieve an album +*AlbumsApi* | [**getAlbumMapMarkers**](doc//AlbumsApi.md#getalbummapmarkers) | **GET** /albums/{id}/map-markers | Retrieve album map markers *AlbumsApi* | [**getAlbumStatistics**](doc//AlbumsApi.md#getalbumstatistics) | **GET** /albums/statistics | Retrieve album statistics *AlbumsApi* | [**getAllAlbums**](doc//AlbumsApi.md#getallalbums) | **GET** /albums | List all albums *AlbumsApi* | [**removeAssetFromAlbum**](doc//AlbumsApi.md#removeassetfromalbum) | **DELETE** /albums/{id}/assets | Remove assets from an album @@ -96,24 +97,24 @@ Class | Method | HTTP request | Description *AlbumsApi* | [**updateAlbumInfo**](doc//AlbumsApi.md#updatealbuminfo) | **PATCH** /albums/{id} | Update an album *AlbumsApi* | [**updateAlbumUser**](doc//AlbumsApi.md#updatealbumuser) | **PUT** /albums/{id}/user/{userId} | Update user role *AssetsApi* | [**checkBulkUpload**](doc//AssetsApi.md#checkbulkupload) | **POST** /assets/bulk-upload-check | Check bulk upload -*AssetsApi* | [**checkExistingAssets**](doc//AssetsApi.md#checkexistingassets) | **POST** /assets/exist | Check existing assets *AssetsApi* | [**copyAsset**](doc//AssetsApi.md#copyasset) | **PUT** /assets/copy | Copy asset *AssetsApi* | [**deleteAssetMetadata**](doc//AssetsApi.md#deleteassetmetadata) | **DELETE** /assets/{id}/metadata/{key} | Delete asset metadata by key *AssetsApi* | [**deleteAssets**](doc//AssetsApi.md#deleteassets) | **DELETE** /assets | Delete assets *AssetsApi* | [**deleteBulkAssetMetadata**](doc//AssetsApi.md#deletebulkassetmetadata) | **DELETE** /assets/metadata | Delete asset metadata *AssetsApi* | [**downloadAsset**](doc//AssetsApi.md#downloadasset) | **GET** /assets/{id}/original | Download original asset *AssetsApi* | [**editAsset**](doc//AssetsApi.md#editasset) | **PUT** /assets/{id}/edits | Apply edits to an existing asset -*AssetsApi* | [**getAllUserAssetsByDeviceId**](doc//AssetsApi.md#getalluserassetsbydeviceid) | **GET** /assets/device/{deviceId} | Retrieve assets by device ID +*AssetsApi* | [**endSession**](doc//AssetsApi.md#endsession) | **DELETE** /assets/{id}/video/stream/{sessionId} | End HLS streaming session *AssetsApi* | [**getAssetEdits**](doc//AssetsApi.md#getassetedits) | **GET** /assets/{id}/edits | Retrieve edits for an existing asset *AssetsApi* | [**getAssetInfo**](doc//AssetsApi.md#getassetinfo) | **GET** /assets/{id} | Retrieve an asset *AssetsApi* | [**getAssetMetadata**](doc//AssetsApi.md#getassetmetadata) | **GET** /assets/{id}/metadata | Get asset metadata *AssetsApi* | [**getAssetMetadataByKey**](doc//AssetsApi.md#getassetmetadatabykey) | **GET** /assets/{id}/metadata/{key} | Retrieve asset metadata by key *AssetsApi* | [**getAssetOcr**](doc//AssetsApi.md#getassetocr) | **GET** /assets/{id}/ocr | Retrieve asset OCR data *AssetsApi* | [**getAssetStatistics**](doc//AssetsApi.md#getassetstatistics) | **GET** /assets/statistics | Get asset statistics -*AssetsApi* | [**getRandom**](doc//AssetsApi.md#getrandom) | **GET** /assets/random | Get random assets +*AssetsApi* | [**getMainPlaylist**](doc//AssetsApi.md#getmainplaylist) | **GET** /assets/{id}/video/stream/main.m3u8 | Get HLS main playlist +*AssetsApi* | [**getMediaPlaylist**](doc//AssetsApi.md#getmediaplaylist) | **GET** /assets/{id}/video/stream/{sessionId}/{variantIndex}/playlist.m3u8 | Get HLS media playlist +*AssetsApi* | [**getSegment**](doc//AssetsApi.md#getsegment) | **GET** /assets/{id}/video/stream/{sessionId}/{variantIndex}/{filename} | Get HLS segment or init file *AssetsApi* | [**playAssetVideo**](doc//AssetsApi.md#playassetvideo) | **GET** /assets/{id}/video/playback | Play asset video *AssetsApi* | [**removeAssetEdits**](doc//AssetsApi.md#removeassetedits) | **DELETE** /assets/{id}/edits | Remove edits from an existing asset -*AssetsApi* | [**replaceAsset**](doc//AssetsApi.md#replaceasset) | **PUT** /assets/{id}/original | Replace asset *AssetsApi* | [**runAssetJobs**](doc//AssetsApi.md#runassetjobs) | **POST** /assets/jobs | Run an asset job *AssetsApi* | [**updateAsset**](doc//AssetsApi.md#updateasset) | **PUT** /assets/{id} | Update an asset *AssetsApi* | [**updateAssetMetadata**](doc//AssetsApi.md#updateassetmetadata) | **PUT** /assets/{id}/metadata | Update asset metadata @@ -129,6 +130,7 @@ Class | Method | HTTP request | Description *AuthenticationApi* | [**lockAuthSession**](doc//AuthenticationApi.md#lockauthsession) | **POST** /auth/session/lock | Lock auth session *AuthenticationApi* | [**login**](doc//AuthenticationApi.md#login) | **POST** /auth/login | Login *AuthenticationApi* | [**logout**](doc//AuthenticationApi.md#logout) | **POST** /auth/logout | Logout +*AuthenticationApi* | [**logoutOAuth**](doc//AuthenticationApi.md#logoutoauth) | **POST** /oauth/backchannel-logout | Backchannel OAuth logout *AuthenticationApi* | [**redirectOAuthToMobile**](doc//AuthenticationApi.md#redirectoauthtomobile) | **GET** /oauth/mobile-redirect | Redirect OAuth to mobile *AuthenticationApi* | [**resetPinCode**](doc//AuthenticationApi.md#resetpincode) | **DELETE** /auth/pin-code | Reset pin code *AuthenticationApi* | [**setupPinCode**](doc//AuthenticationApi.md#setuppincode) | **POST** /auth/pin-code | Setup pin code @@ -144,16 +146,25 @@ Class | Method | HTTP request | Description *DatabaseBackupsAdminApi* | [**startDatabaseRestoreFlow**](doc//DatabaseBackupsAdminApi.md#startdatabaserestoreflow) | **POST** /admin/database-backups/start-restore | Start database backup restore flow *DatabaseBackupsAdminApi* | [**uploadDatabaseBackup**](doc//DatabaseBackupsAdminApi.md#uploaddatabasebackup) | **POST** /admin/database-backups/upload | Upload database backup *DeprecatedApi* | [**createPartnerDeprecated**](doc//DeprecatedApi.md#createpartnerdeprecated) | **POST** /partners/{id} | Create a partner -*DeprecatedApi* | [**getAllUserAssetsByDeviceId**](doc//DeprecatedApi.md#getalluserassetsbydeviceid) | **GET** /assets/device/{deviceId} | Retrieve assets by device ID -*DeprecatedApi* | [**getDeltaSync**](doc//DeprecatedApi.md#getdeltasync) | **POST** /sync/delta-sync | Get delta sync for user -*DeprecatedApi* | [**getFullSyncForUser**](doc//DeprecatedApi.md#getfullsyncforuser) | **POST** /sync/full-sync | Get full sync for user *DeprecatedApi* | [**getQueuesLegacy**](doc//DeprecatedApi.md#getqueueslegacy) | **GET** /jobs | Retrieve queue counts and status -*DeprecatedApi* | [**getRandom**](doc//DeprecatedApi.md#getrandom) | **GET** /assets/random | Get random assets -*DeprecatedApi* | [**replaceAsset**](doc//DeprecatedApi.md#replaceasset) | **PUT** /assets/{id}/original | Replace asset *DeprecatedApi* | [**runQueueCommandLegacy**](doc//DeprecatedApi.md#runqueuecommandlegacy) | **PUT** /jobs/{name} | Run jobs +*DeprecatedApi* | [**updateApiKey**](doc//DeprecatedApi.md#updateapikey) | **PUT** /api-keys/{id} | Update an API key +*DeprecatedApi* | [**updateAsset**](doc//DeprecatedApi.md#updateasset) | **PUT** /assets/{id} | Update an asset +*DeprecatedApi* | [**updateAssets**](doc//DeprecatedApi.md#updateassets) | **PUT** /assets | Update assets +*DeprecatedApi* | [**updateLibrary**](doc//DeprecatedApi.md#updatelibrary) | **PUT** /libraries/{id} | Update a library +*DeprecatedApi* | [**updateMemory**](doc//DeprecatedApi.md#updatememory) | **PUT** /memories/{id} | Update a memory +*DeprecatedApi* | [**updateMyPreferences**](doc//DeprecatedApi.md#updatemypreferences) | **PUT** /users/me/preferences | Update my preferences +*DeprecatedApi* | [**updateMyUser**](doc//DeprecatedApi.md#updatemyuser) | **PUT** /users/me | Update current user +*DeprecatedApi* | [**updatePerson**](doc//DeprecatedApi.md#updateperson) | **PUT** /people/{id} | Update person +*DeprecatedApi* | [**updateSession**](doc//DeprecatedApi.md#updatesession) | **PUT** /sessions/{id} | Update a session +*DeprecatedApi* | [**updateStack**](doc//DeprecatedApi.md#updatestack) | **PUT** /stacks/{id} | Update a stack +*DeprecatedApi* | [**updateTag**](doc//DeprecatedApi.md#updatetag) | **PUT** /tags/{id} | Update a tag +*DeprecatedApi* | [**updateUserAdmin**](doc//DeprecatedApi.md#updateuseradmin) | **PUT** /admin/users/{id} | Update a user +*DeprecatedApi* | [**updateUserPreferencesAdmin**](doc//DeprecatedApi.md#updateuserpreferencesadmin) | **PUT** /admin/users/{id}/preferences | Update user preferences +*DeprecatedApi* | [**updateWorkflow**](doc//DeprecatedApi.md#updateworkflow) | **PUT** /workflows/{id} | Update a workflow *DownloadApi* | [**downloadArchive**](doc//DownloadApi.md#downloadarchive) | **POST** /download/archive | Download asset archive *DownloadApi* | [**getDownloadInfo**](doc//DownloadApi.md#getdownloadinfo) | **POST** /download/info | Retrieve download information -*DuplicatesApi* | [**deleteDuplicate**](doc//DuplicatesApi.md#deleteduplicate) | **DELETE** /duplicates/{id} | Delete a duplicate +*DuplicatesApi* | [**deleteDuplicate**](doc//DuplicatesApi.md#deleteduplicate) | **DELETE** /duplicates/{id} | Dismiss a duplicate group *DuplicatesApi* | [**deleteDuplicates**](doc//DuplicatesApi.md#deleteduplicates) | **DELETE** /duplicates | Delete duplicates *DuplicatesApi* | [**getAssetDuplicates**](doc//DuplicatesApi.md#getassetduplicates) | **GET** /duplicates | Retrieve duplicates *DuplicatesApi* | [**resolveDuplicates**](doc//DuplicatesApi.md#resolveduplicates) | **POST** /duplicates/resolve | Resolve duplicate groups @@ -172,7 +183,12 @@ Class | Method | HTTP request | Description *LibrariesApi* | [**scanLibrary**](doc//LibrariesApi.md#scanlibrary) | **POST** /libraries/{id}/scan | Scan a library *LibrariesApi* | [**updateLibrary**](doc//LibrariesApi.md#updatelibrary) | **PUT** /libraries/{id} | Update a library *LibrariesApi* | [**validate**](doc//LibrariesApi.md#validate) | **POST** /libraries/{id}/validate | Validate library settings +*MaintenanceAdminApi* | [**deleteIntegrityReport**](doc//MaintenanceAdminApi.md#deleteintegrityreport) | **DELETE** /admin/integrity/report/{id} | Delete integrity report item *MaintenanceAdminApi* | [**detectPriorInstall**](doc//MaintenanceAdminApi.md#detectpriorinstall) | **GET** /admin/maintenance/detect-install | Detect existing install +*MaintenanceAdminApi* | [**getIntegrityReport**](doc//MaintenanceAdminApi.md#getintegrityreport) | **GET** /admin/integrity/report | Get integrity report by type +*MaintenanceAdminApi* | [**getIntegrityReportCsv**](doc//MaintenanceAdminApi.md#getintegrityreportcsv) | **GET** /admin/integrity/report/{type}/csv | Export integrity report by type as CSV +*MaintenanceAdminApi* | [**getIntegrityReportFile**](doc//MaintenanceAdminApi.md#getintegrityreportfile) | **GET** /admin/integrity/report/{id}/file | Download flagged file +*MaintenanceAdminApi* | [**getIntegrityReportSummary**](doc//MaintenanceAdminApi.md#getintegrityreportsummary) | **GET** /admin/integrity/summary | Get integrity report summary *MaintenanceAdminApi* | [**getMaintenanceStatus**](doc//MaintenanceAdminApi.md#getmaintenancestatus) | **GET** /admin/maintenance/status | Get maintenance mode status *MaintenanceAdminApi* | [**maintenanceLogin**](doc//MaintenanceAdminApi.md#maintenancelogin) | **POST** /admin/maintenance/login | Log into maintenance mode *MaintenanceAdminApi* | [**setMaintenanceMode**](doc//MaintenanceAdminApi.md#setmaintenancemode) | **POST** /admin/maintenance | Set maintenance mode @@ -212,8 +228,9 @@ Class | Method | HTTP request | Description *PeopleApi* | [**updatePeople**](doc//PeopleApi.md#updatepeople) | **PUT** /people | Update people *PeopleApi* | [**updatePerson**](doc//PeopleApi.md#updateperson) | **PUT** /people/{id} | Update person *PluginsApi* | [**getPlugin**](doc//PluginsApi.md#getplugin) | **GET** /plugins/{id} | Retrieve a plugin -*PluginsApi* | [**getPluginTriggers**](doc//PluginsApi.md#getplugintriggers) | **GET** /plugins/triggers | List all plugin triggers -*PluginsApi* | [**getPlugins**](doc//PluginsApi.md#getplugins) | **GET** /plugins | List all plugins +*PluginsApi* | [**searchPluginMethods**](doc//PluginsApi.md#searchpluginmethods) | **GET** /plugins/methods | Retrieve plugin methods +*PluginsApi* | [**searchPluginTemplates**](doc//PluginsApi.md#searchplugintemplates) | **GET** /plugins/templates | Retrieve workflow templates +*PluginsApi* | [**searchPlugins**](doc//PluginsApi.md#searchplugins) | **GET** /plugins | List all plugins *QueuesApi* | [**emptyQueue**](doc//QueuesApi.md#emptyqueue) | **DELETE** /queues/{name}/jobs | Empty a queue *QueuesApi* | [**getQueue**](doc//QueuesApi.md#getqueue) | **GET** /queues/{name} | Retrieve a queue *QueuesApi* | [**getQueueJobs**](doc//QueuesApi.md#getqueuejobs) | **GET** /queues/{name}/jobs | Retrieve queue jobs @@ -239,7 +256,6 @@ Class | Method | HTTP request | Description *ServerApi* | [**getServerVersion**](doc//ServerApi.md#getserverversion) | **GET** /server/version | Get server version *ServerApi* | [**getStorage**](doc//ServerApi.md#getstorage) | **GET** /server/storage | Get storage *ServerApi* | [**getSupportedMediaTypes**](doc//ServerApi.md#getsupportedmediatypes) | **GET** /server/media-types | Get supported media types -*ServerApi* | [**getTheme**](doc//ServerApi.md#gettheme) | **GET** /server/theme | Get theme *ServerApi* | [**getVersionCheck**](doc//ServerApi.md#getversioncheck) | **GET** /server/version-check | Get version check status *ServerApi* | [**getVersionHistory**](doc//ServerApi.md#getversionhistory) | **GET** /server/version-history | Get version history *ServerApi* | [**pingServer**](doc//ServerApi.md#pingserver) | **GET** /server/ping | Ping @@ -267,8 +283,6 @@ Class | Method | HTTP request | Description *StacksApi* | [**searchStacks**](doc//StacksApi.md#searchstacks) | **GET** /stacks | Retrieve stacks *StacksApi* | [**updateStack**](doc//StacksApi.md#updatestack) | **PUT** /stacks/{id} | Update a stack *SyncApi* | [**deleteSyncAck**](doc//SyncApi.md#deletesyncack) | **DELETE** /sync/ack | Delete acknowledgements -*SyncApi* | [**getDeltaSync**](doc//SyncApi.md#getdeltasync) | **POST** /sync/delta-sync | Get delta sync for user -*SyncApi* | [**getFullSyncForUser**](doc//SyncApi.md#getfullsyncforuser) | **POST** /sync/full-sync | Get full sync for user *SyncApi* | [**getSyncAck**](doc//SyncApi.md#getsyncack) | **GET** /sync/ack | Retrieve acknowledgements *SyncApi* | [**getSyncStream**](doc//SyncApi.md#getsyncstream) | **POST** /sync/stream | Stream sync changes *SyncApi* | [**sendSyncAck**](doc//SyncApi.md#sendsyncack) | **POST** /sync/ack | Acknowledge changes @@ -303,6 +317,7 @@ Class | Method | HTTP request | Description *UsersApi* | [**deleteProfileImage**](doc//UsersApi.md#deleteprofileimage) | **DELETE** /users/profile-image | Delete user profile image *UsersApi* | [**deleteUserLicense**](doc//UsersApi.md#deleteuserlicense) | **DELETE** /users/me/license | Delete user product key *UsersApi* | [**deleteUserOnboarding**](doc//UsersApi.md#deleteuseronboarding) | **DELETE** /users/me/onboarding | Delete user onboarding +*UsersApi* | [**getMyCalendarHeatmap**](doc//UsersApi.md#getmycalendarheatmap) | **GET** /users/me/calendar-heatmap | Retrieve calendar heatmap activity *UsersApi* | [**getMyPreferences**](doc//UsersApi.md#getmypreferences) | **GET** /users/me/preferences | Get my preferences *UsersApi* | [**getMyUser**](doc//UsersApi.md#getmyuser) | **GET** /users/me | Get current user *UsersApi* | [**getProfileImage**](doc//UsersApi.md#getprofileimage) | **GET** /users/{id}/profile-image | Retrieve user profile image @@ -317,6 +332,7 @@ Class | Method | HTTP request | Description *UsersAdminApi* | [**createUserAdmin**](doc//UsersAdminApi.md#createuseradmin) | **POST** /admin/users | Create a user *UsersAdminApi* | [**deleteUserAdmin**](doc//UsersAdminApi.md#deleteuseradmin) | **DELETE** /admin/users/{id} | Delete a user *UsersAdminApi* | [**getUserAdmin**](doc//UsersAdminApi.md#getuseradmin) | **GET** /admin/users/{id} | Retrieve a user +*UsersAdminApi* | [**getUserCalendarHeatmapAdmin**](doc//UsersAdminApi.md#getusercalendarheatmapadmin) | **GET** /admin/users/{id}/calendar-heatmap | Retrieve calendar heatmap activity *UsersAdminApi* | [**getUserPreferencesAdmin**](doc//UsersAdminApi.md#getuserpreferencesadmin) | **GET** /admin/users/{id}/preferences | Retrieve user preferences *UsersAdminApi* | [**getUserSessionsAdmin**](doc//UsersAdminApi.md#getusersessionsadmin) | **GET** /admin/users/{id}/sessions | Retrieve user sessions *UsersAdminApi* | [**getUserStatisticsAdmin**](doc//UsersAdminApi.md#getuserstatisticsadmin) | **GET** /admin/users/{id}/statistics | Retrieve user statistics @@ -329,16 +345,14 @@ Class | Method | HTTP request | Description *WorkflowsApi* | [**createWorkflow**](doc//WorkflowsApi.md#createworkflow) | **POST** /workflows | Create a workflow *WorkflowsApi* | [**deleteWorkflow**](doc//WorkflowsApi.md#deleteworkflow) | **DELETE** /workflows/{id} | Delete a workflow *WorkflowsApi* | [**getWorkflow**](doc//WorkflowsApi.md#getworkflow) | **GET** /workflows/{id} | Retrieve a workflow -*WorkflowsApi* | [**getWorkflows**](doc//WorkflowsApi.md#getworkflows) | **GET** /workflows | List all workflows +*WorkflowsApi* | [**getWorkflowForShare**](doc//WorkflowsApi.md#getworkflowforshare) | **GET** /workflows/{id}/share | Retrieve a workflow +*WorkflowsApi* | [**getWorkflowTriggers**](doc//WorkflowsApi.md#getworkflowtriggers) | **GET** /workflows/triggers | List all workflow triggers +*WorkflowsApi* | [**searchWorkflows**](doc//WorkflowsApi.md#searchworkflows) | **GET** /workflows | List all workflows *WorkflowsApi* | [**updateWorkflow**](doc//WorkflowsApi.md#updateworkflow) | **PUT** /workflows/{id} | Update a workflow ## Documentation For Models - - [APIKeyCreateDto](doc//APIKeyCreateDto.md) - - [APIKeyCreateResponseDto](doc//APIKeyCreateResponseDto.md) - - [APIKeyResponseDto](doc//APIKeyResponseDto.md) - - [APIKeyUpdateDto](doc//APIKeyUpdateDto.md) - [ActivityCreateDto](doc//ActivityCreateDto.md) - [ActivityResponseDto](doc//ActivityResponseDto.md) - [ActivityStatisticsResponseDto](doc//ActivityStatisticsResponseDto.md) @@ -354,6 +368,10 @@ Class | Method | HTTP request | Description - [AlbumsAddAssetsResponseDto](doc//AlbumsAddAssetsResponseDto.md) - [AlbumsResponse](doc//AlbumsResponse.md) - [AlbumsUpdate](doc//AlbumsUpdate.md) + - [ApiKeyCreateDto](doc//ApiKeyCreateDto.md) + - [ApiKeyCreateResponseDto](doc//ApiKeyCreateResponseDto.md) + - [ApiKeyResponseDto](doc//ApiKeyResponseDto.md) + - [ApiKeyUpdateDto](doc//ApiKeyUpdateDto.md) - [AssetBulkDeleteDto](doc//AssetBulkDeleteDto.md) - [AssetBulkUpdateDto](doc//AssetBulkUpdateDto.md) - [AssetBulkUploadCheckDto](doc//AssetBulkUploadCheckDto.md) @@ -361,8 +379,6 @@ Class | Method | HTTP request | Description - [AssetBulkUploadCheckResponseDto](doc//AssetBulkUploadCheckResponseDto.md) - [AssetBulkUploadCheckResult](doc//AssetBulkUploadCheckResult.md) - [AssetCopyDto](doc//AssetCopyDto.md) - - [AssetDeltaSyncDto](doc//AssetDeltaSyncDto.md) - - [AssetDeltaSyncResponseDto](doc//AssetDeltaSyncResponseDto.md) - [AssetEditAction](doc//AssetEditAction.md) - [AssetEditActionItemDto](doc//AssetEditActionItemDto.md) - [AssetEditActionItemDtoParameters](doc//AssetEditActionItemDtoParameters.md) @@ -374,8 +390,7 @@ Class | Method | HTTP request | Description - [AssetFaceResponseDto](doc//AssetFaceResponseDto.md) - [AssetFaceUpdateDto](doc//AssetFaceUpdateDto.md) - [AssetFaceUpdateItem](doc//AssetFaceUpdateItem.md) - - [AssetFaceWithoutPersonResponseDto](doc//AssetFaceWithoutPersonResponseDto.md) - - [AssetFullSyncDto](doc//AssetFullSyncDto.md) + - [AssetIdErrorReason](doc//AssetIdErrorReason.md) - [AssetIdsDto](doc//AssetIdsDto.md) - [AssetIdsResponseDto](doc//AssetIdsResponseDto.md) - [AssetJobName](doc//AssetJobName.md) @@ -393,10 +408,13 @@ Class | Method | HTTP request | Description - [AssetMetadataUpsertItemDto](doc//AssetMetadataUpsertItemDto.md) - [AssetOcrResponseDto](doc//AssetOcrResponseDto.md) - [AssetOrder](doc//AssetOrder.md) + - [AssetOrderBy](doc//AssetOrderBy.md) + - [AssetRejectReason](doc//AssetRejectReason.md) - [AssetResponseDto](doc//AssetResponseDto.md) - [AssetStackResponseDto](doc//AssetStackResponseDto.md) - [AssetStatsResponseDto](doc//AssetStatsResponseDto.md) - [AssetTypeEnum](doc//AssetTypeEnum.md) + - [AssetUploadAction](doc//AssetUploadAction.md) - [AssetVisibility](doc//AssetVisibility.md) - [AudioCodec](doc//AudioCodec.md) - [AuthStatusResponseDto](doc//AuthStatusResponseDto.md) @@ -406,11 +424,12 @@ Class | Method | HTTP request | Description - [BulkIdsDto](doc//BulkIdsDto.md) - [CLIPConfig](doc//CLIPConfig.md) - [CQMode](doc//CQMode.md) + - [CalendarHeatmapResponseDto](doc//CalendarHeatmapResponseDto.md) + - [CalendarHeatmapResponseDtoSeriesInner](doc//CalendarHeatmapResponseDtoSeriesInner.md) + - [CalendarHeatmapType](doc//CalendarHeatmapType.md) - [CastResponse](doc//CastResponse.md) - [CastUpdate](doc//CastUpdate.md) - [ChangePasswordDto](doc//ChangePasswordDto.md) - - [CheckExistingAssetsDto](doc//CheckExistingAssetsDto.md) - - [CheckExistingAssetsResponseDto](doc//CheckExistingAssetsResponseDto.md) - [Colorspace](doc//Colorspace.md) - [ContributorCountResponseDto](doc//ContributorCountResponseDto.md) - [CreateAlbumDto](doc//CreateAlbumDto.md) @@ -439,13 +458,16 @@ Class | Method | HTTP request | Description - [FoldersResponse](doc//FoldersResponse.md) - [FoldersUpdate](doc//FoldersUpdate.md) - [ImageFormat](doc//ImageFormat.md) + - [IntegrityReport](doc//IntegrityReport.md) + - [IntegrityReportResponseDto](doc//IntegrityReportResponseDto.md) + - [IntegrityReportResponseDtoItemsInner](doc//IntegrityReportResponseDtoItemsInner.md) + - [IntegrityReportSummaryResponseDto](doc//IntegrityReportSummaryResponseDto.md) - [JobCreateDto](doc//JobCreateDto.md) - [JobName](doc//JobName.md) - [JobSettingsDto](doc//JobSettingsDto.md) - [LibraryResponseDto](doc//LibraryResponseDto.md) - [LibraryStatsResponseDto](doc//LibraryStatsResponseDto.md) - [LicenseKeyDto](doc//LicenseKeyDto.md) - - [LicenseResponseDto](doc//LicenseResponseDto.md) - [LogLevel](doc//LogLevel.md) - [LoginCredentialDto](doc//LoginCredentialDto.md) - [LoginResponseDto](doc//LoginResponseDto.md) @@ -501,17 +523,14 @@ Class | Method | HTTP request | Description - [PersonResponseDto](doc//PersonResponseDto.md) - [PersonStatisticsResponseDto](doc//PersonStatisticsResponseDto.md) - [PersonUpdateDto](doc//PersonUpdateDto.md) - - [PersonWithFacesResponseDto](doc//PersonWithFacesResponseDto.md) - [PinCodeChangeDto](doc//PinCodeChangeDto.md) - [PinCodeResetDto](doc//PinCodeResetDto.md) - [PinCodeSetupDto](doc//PinCodeSetupDto.md) - [PlacesResponseDto](doc//PlacesResponseDto.md) - - [PluginActionResponseDto](doc//PluginActionResponseDto.md) - - [PluginContextType](doc//PluginContextType.md) - - [PluginFilterResponseDto](doc//PluginFilterResponseDto.md) + - [PluginMethodResponseDto](doc//PluginMethodResponseDto.md) - [PluginResponseDto](doc//PluginResponseDto.md) - - [PluginTriggerResponseDto](doc//PluginTriggerResponseDto.md) - - [PluginTriggerType](doc//PluginTriggerType.md) + - [PluginTemplateResponseDto](doc//PluginTemplateResponseDto.md) + - [PluginTemplateStepResponseDto](doc//PluginTemplateStepResponseDto.md) - [PurchaseResponse](doc//PurchaseResponse.md) - [PurchaseUpdate](doc//PurchaseUpdate.md) - [QueueCommand](doc//QueueCommand.md) @@ -531,6 +550,11 @@ Class | Method | HTTP request | Description - [RatingsUpdate](doc//RatingsUpdate.md) - [ReactionLevel](doc//ReactionLevel.md) - [ReactionType](doc//ReactionType.md) + - [RecentlyAddedResponse](doc//RecentlyAddedResponse.md) + - [RecentlyAddedUpdate](doc//RecentlyAddedUpdate.md) + - [ReleaseChannel](doc//ReleaseChannel.md) + - [ReleaseEventV1](doc//ReleaseEventV1.md) + - [ReleaseType](doc//ReleaseType.md) - [ReverseGeocodingStateResponseDto](doc//ReverseGeocodingStateResponseDto.md) - [RotateParameters](doc//RotateParameters.md) - [SearchAlbumResponseDto](doc//SearchAlbumResponseDto.md) @@ -550,7 +574,6 @@ Class | Method | HTTP request | Description - [ServerPingResponse](doc//ServerPingResponse.md) - [ServerStatsResponseDto](doc//ServerStatsResponseDto.md) - [ServerStorageResponseDto](doc//ServerStorageResponseDto.md) - - [ServerThemeDto](doc//ServerThemeDto.md) - [ServerVersionHistoryResponseDto](doc//ServerVersionHistoryResponseDto.md) - [ServerVersionResponseDto](doc//ServerVersionResponseDto.md) - [SessionCreateDto](doc//SessionCreateDto.md) @@ -583,6 +606,7 @@ Class | Method | HTTP request | Description - [SyncAlbumUserDeleteV1](doc//SyncAlbumUserDeleteV1.md) - [SyncAlbumUserV1](doc//SyncAlbumUserV1.md) - [SyncAlbumV1](doc//SyncAlbumV1.md) + - [SyncAlbumV2](doc//SyncAlbumV2.md) - [SyncAssetDeleteV1](doc//SyncAssetDeleteV1.md) - [SyncAssetEditDeleteV1](doc//SyncAssetEditDeleteV1.md) - [SyncAssetEditV1](doc//SyncAssetEditV1.md) @@ -592,7 +616,10 @@ Class | Method | HTTP request | Description - [SyncAssetFaceV2](doc//SyncAssetFaceV2.md) - [SyncAssetMetadataDeleteV1](doc//SyncAssetMetadataDeleteV1.md) - [SyncAssetMetadataV1](doc//SyncAssetMetadataV1.md) + - [SyncAssetOcrDeleteV1](doc//SyncAssetOcrDeleteV1.md) + - [SyncAssetOcrV1](doc//SyncAssetOcrV1.md) - [SyncAssetV1](doc//SyncAssetV1.md) + - [SyncAssetV2](doc//SyncAssetV2.md) - [SyncAuthUserV1](doc//SyncAuthUserV1.md) - [SyncEntityType](doc//SyncEntityType.md) - [SyncMemoryAssetDeleteV1](doc//SyncMemoryAssetDeleteV1.md) @@ -612,12 +639,17 @@ Class | Method | HTTP request | Description - [SyncUserMetadataV1](doc//SyncUserMetadataV1.md) - [SyncUserV1](doc//SyncUserV1.md) - [SystemConfigBackupsDto](doc//SystemConfigBackupsDto.md) + - [SystemConfigBackupsDtoUpload](doc//SystemConfigBackupsDtoUpload.md) - [SystemConfigDto](doc//SystemConfigDto.md) - [SystemConfigFFmpegDto](doc//SystemConfigFFmpegDto.md) + - [SystemConfigFFmpegRealtimeDto](doc//SystemConfigFFmpegRealtimeDto.md) - [SystemConfigFacesDto](doc//SystemConfigFacesDto.md) - [SystemConfigGeneratedFullsizeImageDto](doc//SystemConfigGeneratedFullsizeImageDto.md) - [SystemConfigGeneratedImageDto](doc//SystemConfigGeneratedImageDto.md) - [SystemConfigImageDto](doc//SystemConfigImageDto.md) + - [SystemConfigIntegrityChecks](doc//SystemConfigIntegrityChecks.md) + - [SystemConfigIntegrityChecksumJob](doc//SystemConfigIntegrityChecksumJob.md) + - [SystemConfigIntegrityJob](doc//SystemConfigIntegrityJob.md) - [SystemConfigJobDto](doc//SystemConfigJobDto.md) - [SystemConfigLibraryDto](doc//SystemConfigLibraryDto.md) - [SystemConfigLibraryScanDto](doc//SystemConfigLibraryScanDto.md) @@ -663,7 +695,6 @@ Class | Method | HTTP request | Description - [UpdateAlbumUserDto](doc//UpdateAlbumUserDto.md) - [UpdateAssetDto](doc//UpdateAssetDto.md) - [UpdateLibraryDto](doc//UpdateLibraryDto.md) - - [UploadBackupConfig](doc//UploadBackupConfig.md) - [UploadOkDto](doc//UploadOkDto.md) - [UsageByUserDto](doc//UsageByUserDto.md) - [UserAdminCreateDto](doc//UserAdminCreateDto.md) @@ -685,12 +716,14 @@ Class | Method | HTTP request | Description - [VersionCheckStateResponseDto](doc//VersionCheckStateResponseDto.md) - [VideoCodec](doc//VideoCodec.md) - [VideoContainer](doc//VideoContainer.md) - - [WorkflowActionItemDto](doc//WorkflowActionItemDto.md) - - [WorkflowActionResponseDto](doc//WorkflowActionResponseDto.md) - [WorkflowCreateDto](doc//WorkflowCreateDto.md) - - [WorkflowFilterItemDto](doc//WorkflowFilterItemDto.md) - - [WorkflowFilterResponseDto](doc//WorkflowFilterResponseDto.md) - [WorkflowResponseDto](doc//WorkflowResponseDto.md) + - [WorkflowShareResponseDto](doc//WorkflowShareResponseDto.md) + - [WorkflowShareStepDto](doc//WorkflowShareStepDto.md) + - [WorkflowStepDto](doc//WorkflowStepDto.md) + - [WorkflowTrigger](doc//WorkflowTrigger.md) + - [WorkflowTriggerResponseDto](doc//WorkflowTriggerResponseDto.md) + - [WorkflowType](doc//WorkflowType.md) - [WorkflowUpdateDto](doc//WorkflowUpdateDto.md) diff --git a/mobile/openapi/lib/api.dart b/mobile/openapi/lib/api.dart index 48830fdf15..4b16e98f01 100644 --- a/mobile/openapi/lib/api.dart +++ b/mobile/openapi/lib/api.dart @@ -29,6 +29,7 @@ part 'auth/api_key_auth.dart'; part 'auth/oauth.dart'; part 'auth/http_basic_auth.dart'; part 'auth/http_bearer_auth.dart'; +part 'optional.dart'; part 'api/api_keys_api.dart'; part 'api/activities_api.dart'; @@ -69,10 +70,6 @@ part 'api/users_admin_api.dart'; part 'api/views_api.dart'; part 'api/workflows_api.dart'; -part 'model/api_key_create_dto.dart'; -part 'model/api_key_create_response_dto.dart'; -part 'model/api_key_response_dto.dart'; -part 'model/api_key_update_dto.dart'; part 'model/activity_create_dto.dart'; part 'model/activity_response_dto.dart'; part 'model/activity_statistics_response_dto.dart'; @@ -88,6 +85,10 @@ part 'model/albums_add_assets_dto.dart'; part 'model/albums_add_assets_response_dto.dart'; part 'model/albums_response.dart'; part 'model/albums_update.dart'; +part 'model/api_key_create_dto.dart'; +part 'model/api_key_create_response_dto.dart'; +part 'model/api_key_response_dto.dart'; +part 'model/api_key_update_dto.dart'; part 'model/asset_bulk_delete_dto.dart'; part 'model/asset_bulk_update_dto.dart'; part 'model/asset_bulk_upload_check_dto.dart'; @@ -95,8 +96,6 @@ part 'model/asset_bulk_upload_check_item.dart'; part 'model/asset_bulk_upload_check_response_dto.dart'; part 'model/asset_bulk_upload_check_result.dart'; part 'model/asset_copy_dto.dart'; -part 'model/asset_delta_sync_dto.dart'; -part 'model/asset_delta_sync_response_dto.dart'; part 'model/asset_edit_action.dart'; part 'model/asset_edit_action_item_dto.dart'; part 'model/asset_edit_action_item_dto_parameters.dart'; @@ -108,8 +107,7 @@ part 'model/asset_face_delete_dto.dart'; part 'model/asset_face_response_dto.dart'; part 'model/asset_face_update_dto.dart'; part 'model/asset_face_update_item.dart'; -part 'model/asset_face_without_person_response_dto.dart'; -part 'model/asset_full_sync_dto.dart'; +part 'model/asset_id_error_reason.dart'; part 'model/asset_ids_dto.dart'; part 'model/asset_ids_response_dto.dart'; part 'model/asset_job_name.dart'; @@ -127,10 +125,13 @@ part 'model/asset_metadata_upsert_dto.dart'; part 'model/asset_metadata_upsert_item_dto.dart'; part 'model/asset_ocr_response_dto.dart'; part 'model/asset_order.dart'; +part 'model/asset_order_by.dart'; +part 'model/asset_reject_reason.dart'; part 'model/asset_response_dto.dart'; part 'model/asset_stack_response_dto.dart'; part 'model/asset_stats_response_dto.dart'; part 'model/asset_type_enum.dart'; +part 'model/asset_upload_action.dart'; part 'model/asset_visibility.dart'; part 'model/audio_codec.dart'; part 'model/auth_status_response_dto.dart'; @@ -140,11 +141,12 @@ part 'model/bulk_id_response_dto.dart'; part 'model/bulk_ids_dto.dart'; part 'model/clip_config.dart'; part 'model/cq_mode.dart'; +part 'model/calendar_heatmap_response_dto.dart'; +part 'model/calendar_heatmap_response_dto_series_inner.dart'; +part 'model/calendar_heatmap_type.dart'; part 'model/cast_response.dart'; part 'model/cast_update.dart'; part 'model/change_password_dto.dart'; -part 'model/check_existing_assets_dto.dart'; -part 'model/check_existing_assets_response_dto.dart'; part 'model/colorspace.dart'; part 'model/contributor_count_response_dto.dart'; part 'model/create_album_dto.dart'; @@ -173,13 +175,16 @@ part 'model/facial_recognition_config.dart'; part 'model/folders_response.dart'; part 'model/folders_update.dart'; part 'model/image_format.dart'; +part 'model/integrity_report.dart'; +part 'model/integrity_report_response_dto.dart'; +part 'model/integrity_report_response_dto_items_inner.dart'; +part 'model/integrity_report_summary_response_dto.dart'; part 'model/job_create_dto.dart'; part 'model/job_name.dart'; part 'model/job_settings_dto.dart'; part 'model/library_response_dto.dart'; part 'model/library_stats_response_dto.dart'; part 'model/license_key_dto.dart'; -part 'model/license_response_dto.dart'; part 'model/log_level.dart'; part 'model/login_credential_dto.dart'; part 'model/login_response_dto.dart'; @@ -235,17 +240,14 @@ part 'model/person_create_dto.dart'; part 'model/person_response_dto.dart'; part 'model/person_statistics_response_dto.dart'; part 'model/person_update_dto.dart'; -part 'model/person_with_faces_response_dto.dart'; part 'model/pin_code_change_dto.dart'; part 'model/pin_code_reset_dto.dart'; part 'model/pin_code_setup_dto.dart'; part 'model/places_response_dto.dart'; -part 'model/plugin_action_response_dto.dart'; -part 'model/plugin_context_type.dart'; -part 'model/plugin_filter_response_dto.dart'; +part 'model/plugin_method_response_dto.dart'; part 'model/plugin_response_dto.dart'; -part 'model/plugin_trigger_response_dto.dart'; -part 'model/plugin_trigger_type.dart'; +part 'model/plugin_template_response_dto.dart'; +part 'model/plugin_template_step_response_dto.dart'; part 'model/purchase_response.dart'; part 'model/purchase_update.dart'; part 'model/queue_command.dart'; @@ -265,6 +267,11 @@ part 'model/ratings_response.dart'; part 'model/ratings_update.dart'; part 'model/reaction_level.dart'; part 'model/reaction_type.dart'; +part 'model/recently_added_response.dart'; +part 'model/recently_added_update.dart'; +part 'model/release_channel.dart'; +part 'model/release_event_v1.dart'; +part 'model/release_type.dart'; part 'model/reverse_geocoding_state_response_dto.dart'; part 'model/rotate_parameters.dart'; part 'model/search_album_response_dto.dart'; @@ -284,7 +291,6 @@ part 'model/server_media_types_response_dto.dart'; part 'model/server_ping_response.dart'; part 'model/server_stats_response_dto.dart'; part 'model/server_storage_response_dto.dart'; -part 'model/server_theme_dto.dart'; part 'model/server_version_history_response_dto.dart'; part 'model/server_version_response_dto.dart'; part 'model/session_create_dto.dart'; @@ -317,6 +323,7 @@ part 'model/sync_album_to_asset_v1.dart'; part 'model/sync_album_user_delete_v1.dart'; part 'model/sync_album_user_v1.dart'; part 'model/sync_album_v1.dart'; +part 'model/sync_album_v2.dart'; part 'model/sync_asset_delete_v1.dart'; part 'model/sync_asset_edit_delete_v1.dart'; part 'model/sync_asset_edit_v1.dart'; @@ -326,7 +333,10 @@ part 'model/sync_asset_face_v1.dart'; part 'model/sync_asset_face_v2.dart'; part 'model/sync_asset_metadata_delete_v1.dart'; part 'model/sync_asset_metadata_v1.dart'; +part 'model/sync_asset_ocr_delete_v1.dart'; +part 'model/sync_asset_ocr_v1.dart'; part 'model/sync_asset_v1.dart'; +part 'model/sync_asset_v2.dart'; part 'model/sync_auth_user_v1.dart'; part 'model/sync_entity_type.dart'; part 'model/sync_memory_asset_delete_v1.dart'; @@ -346,12 +356,17 @@ part 'model/sync_user_metadata_delete_v1.dart'; part 'model/sync_user_metadata_v1.dart'; part 'model/sync_user_v1.dart'; part 'model/system_config_backups_dto.dart'; +part 'model/system_config_backups_dto_upload.dart'; part 'model/system_config_dto.dart'; part 'model/system_config_f_fmpeg_dto.dart'; +part 'model/system_config_f_fmpeg_realtime_dto.dart'; part 'model/system_config_faces_dto.dart'; part 'model/system_config_generated_fullsize_image_dto.dart'; part 'model/system_config_generated_image_dto.dart'; part 'model/system_config_image_dto.dart'; +part 'model/system_config_integrity_checks.dart'; +part 'model/system_config_integrity_checksum_job.dart'; +part 'model/system_config_integrity_job.dart'; part 'model/system_config_job_dto.dart'; part 'model/system_config_library_dto.dart'; part 'model/system_config_library_scan_dto.dart'; @@ -397,7 +412,6 @@ part 'model/update_album_dto.dart'; part 'model/update_album_user_dto.dart'; part 'model/update_asset_dto.dart'; part 'model/update_library_dto.dart'; -part 'model/upload_backup_config.dart'; part 'model/upload_ok_dto.dart'; part 'model/usage_by_user_dto.dart'; part 'model/user_admin_create_dto.dart'; @@ -419,12 +433,14 @@ part 'model/validate_library_response_dto.dart'; part 'model/version_check_state_response_dto.dart'; part 'model/video_codec.dart'; part 'model/video_container.dart'; -part 'model/workflow_action_item_dto.dart'; -part 'model/workflow_action_response_dto.dart'; part 'model/workflow_create_dto.dart'; -part 'model/workflow_filter_item_dto.dart'; -part 'model/workflow_filter_response_dto.dart'; part 'model/workflow_response_dto.dart'; +part 'model/workflow_share_response_dto.dart'; +part 'model/workflow_share_step_dto.dart'; +part 'model/workflow_step_dto.dart'; +part 'model/workflow_trigger.dart'; +part 'model/workflow_trigger_response_dto.dart'; +part 'model/workflow_type.dart'; part 'model/workflow_update_dto.dart'; diff --git a/mobile/openapi/lib/api/upload_api.dart b/mobile/openapi/lib/api/upload_api.dart index 23a4aa9b15..cc3efb6e2d 100644 --- a/mobile/openapi/lib/api/upload_api.dart +++ b/mobile/openapi/lib/api/upload_api.dart @@ -24,7 +24,7 @@ class UploadApi { /// * [String] key: /// /// * [String] slug: - Future cancelUploadWithHttpInfo(String id, { String? key, String? slug, }) async { + Future cancelUploadWithHttpInfo(String id, { String? key, String? slug, Future? abortTrigger, }) async { // ignore: prefer_const_declarations final apiPath = r'/upload/{id}' .replaceAll('{id}', id); @@ -54,6 +54,7 @@ class UploadApi { headerParams, formParams, contentTypes.isEmpty ? null : contentTypes.first, + abortTrigger: abortTrigger, ); } @@ -64,15 +65,15 @@ class UploadApi { /// * [String] key: /// /// * [String] slug: - Future cancelUpload(String id, { String? key, String? slug, }) async { - final response = await cancelUploadWithHttpInfo(id, key: key, slug: slug, ); + Future cancelUpload(String id, { String? key, String? slug, Future? abortTrigger, }) async { + final response = await cancelUploadWithHttpInfo(id, key: key, slug: slug, abortTrigger: abortTrigger,); if (response.statusCode >= HttpStatus.badRequest) { throw ApiException(response.statusCode, await _decodeBodyBytes(response)); } } /// Performs an HTTP 'OPTIONS /upload' operation and returns the [Response]. - Future getUploadOptionsWithHttpInfo() async { + Future getUploadOptionsWithHttpInfo({ Future? abortTrigger, }) async { // ignore: prefer_const_declarations final apiPath = r'/upload'; @@ -94,11 +95,12 @@ class UploadApi { headerParams, formParams, contentTypes.isEmpty ? null : contentTypes.first, + abortTrigger: abortTrigger, ); } - Future getUploadOptions() async { - final response = await getUploadOptionsWithHttpInfo(); + Future getUploadOptions({ Future? abortTrigger, }) async { + final response = await getUploadOptionsWithHttpInfo(abortTrigger: abortTrigger,); if (response.statusCode >= HttpStatus.badRequest) { throw ApiException(response.statusCode, await _decodeBodyBytes(response)); } @@ -115,7 +117,7 @@ class UploadApi { /// * [String] key: /// /// * [String] slug: - Future getUploadStatusWithHttpInfo(String id, String uploadDraftInteropVersion, { String? key, String? slug, }) async { + Future getUploadStatusWithHttpInfo(String id, String uploadDraftInteropVersion, { String? key, String? slug, Future? abortTrigger, }) async { // ignore: prefer_const_declarations final apiPath = r'/upload/{id}' .replaceAll('{id}', id); @@ -147,6 +149,7 @@ class UploadApi { headerParams, formParams, contentTypes.isEmpty ? null : contentTypes.first, + abortTrigger: abortTrigger, ); } @@ -160,8 +163,8 @@ class UploadApi { /// * [String] key: /// /// * [String] slug: - Future getUploadStatus(String id, String uploadDraftInteropVersion, { String? key, String? slug, }) async { - final response = await getUploadStatusWithHttpInfo(id, uploadDraftInteropVersion, key: key, slug: slug, ); + Future getUploadStatus(String id, String uploadDraftInteropVersion, { String? key, String? slug, Future? abortTrigger, }) async { + final response = await getUploadStatusWithHttpInfo(id, uploadDraftInteropVersion, key: key, slug: slug, abortTrigger: abortTrigger,); if (response.statusCode >= HttpStatus.badRequest) { throw ApiException(response.statusCode, await _decodeBodyBytes(response)); } @@ -187,7 +190,7 @@ class UploadApi { /// * [String] key: /// /// * [String] slug: - Future resumeUploadWithHttpInfo(String contentLength, String id, String uploadComplete, String uploadDraftInteropVersion, String uploadOffset, { String? key, String? slug, }) async { + Future resumeUploadWithHttpInfo(String contentLength, String id, String uploadComplete, String uploadDraftInteropVersion, String uploadOffset, { String? key, String? slug, Future? abortTrigger, }) async { // ignore: prefer_const_declarations final apiPath = r'/upload/{id}' .replaceAll('{id}', id); @@ -222,6 +225,7 @@ class UploadApi { headerParams, formParams, contentTypes.isEmpty ? null : contentTypes.first, + abortTrigger: abortTrigger, ); } @@ -244,8 +248,8 @@ class UploadApi { /// * [String] key: /// /// * [String] slug: - Future resumeUpload(String contentLength, String id, String uploadComplete, String uploadDraftInteropVersion, String uploadOffset, { String? key, String? slug, }) async { - final response = await resumeUploadWithHttpInfo(contentLength, id, uploadComplete, uploadDraftInteropVersion, uploadOffset, key: key, slug: slug, ); + Future resumeUpload(String contentLength, String id, String uploadComplete, String uploadDraftInteropVersion, String uploadOffset, { String? key, String? slug, Future? abortTrigger, }) async { + final response = await resumeUploadWithHttpInfo(contentLength, id, uploadComplete, uploadDraftInteropVersion, uploadOffset, key: key, slug: slug, abortTrigger: abortTrigger,); if (response.statusCode >= HttpStatus.badRequest) { throw ApiException(response.statusCode, await _decodeBodyBytes(response)); } @@ -280,7 +284,7 @@ class UploadApi { /// /// * [String] uploadDraftInteropVersion: /// Indicates the version of the RUFH protocol supported by the client. - Future startUploadWithHttpInfo(String contentLength, String reprDigest, String xImmichAssetData, { String? key, String? slug, String? uploadComplete, String? uploadDraftInteropVersion, }) async { + Future startUploadWithHttpInfo(String contentLength, String reprDigest, String xImmichAssetData, { String? key, String? slug, String? uploadComplete, String? uploadDraftInteropVersion, Future? abortTrigger, }) async { // ignore: prefer_const_declarations final apiPath = r'/upload'; @@ -319,6 +323,7 @@ class UploadApi { headerParams, formParams, contentTypes.isEmpty ? null : contentTypes.first, + abortTrigger: abortTrigger, ); } @@ -342,8 +347,8 @@ class UploadApi { /// /// * [String] uploadDraftInteropVersion: /// Indicates the version of the RUFH protocol supported by the client. - Future startUpload(String contentLength, String reprDigest, String xImmichAssetData, { String? key, String? slug, String? uploadComplete, String? uploadDraftInteropVersion, }) async { - final response = await startUploadWithHttpInfo(contentLength, reprDigest, xImmichAssetData, key: key, slug: slug, uploadComplete: uploadComplete, uploadDraftInteropVersion: uploadDraftInteropVersion, ); + Future startUpload(String contentLength, String reprDigest, String xImmichAssetData, { String? key, String? slug, String? uploadComplete, String? uploadDraftInteropVersion, Future? abortTrigger, }) async { + final response = await startUploadWithHttpInfo(contentLength, reprDigest, xImmichAssetData, key: key, slug: slug, uploadComplete: uploadComplete, uploadDraftInteropVersion: uploadDraftInteropVersion, abortTrigger: abortTrigger,); if (response.statusCode >= HttpStatus.badRequest) { throw ApiException(response.statusCode, await _decodeBodyBytes(response)); } diff --git a/mobile/openapi/lib/api_client.dart b/mobile/openapi/lib/api_client.dart index db2d7dd747..1a2009d5a0 100644 --- a/mobile/openapi/lib/api_client.dart +++ b/mobile/openapi/lib/api_client.dart @@ -13,7 +13,7 @@ part of openapi.api; class ApiClient { ApiClient({this.basePath = '/api', this.authentication,}); - final String basePath; + String basePath; final Authentication? authentication; var _client = Client(); @@ -44,8 +44,9 @@ class ApiClient { Object? body, Map headerParams, Map formParams, - String? contentType, - ) async { + String? contentType, { + Future? abortTrigger, + }) async { await authentication?.applyToParams(queryParams, headerParams); headerParams.addAll(_defaultHeaderMap); @@ -63,7 +64,7 @@ class ApiClient { body is MultipartFile && (contentType == null || !contentType.toLowerCase().startsWith('multipart/form-data')) ) { - final request = StreamedRequest(method, uri); + final request = AbortableStreamedRequest(method, uri, abortTrigger: abortTrigger); request.headers.addAll(headerParams); request.contentLength = body.length; body.finalize().listen( @@ -78,7 +79,7 @@ class ApiClient { } if (body is MultipartRequest) { - final request = MultipartRequest(method, uri); + final request = AbortableMultipartRequest(method, uri, abortTrigger: abortTrigger); request.fields.addAll(body.fields); request.files.addAll(body.files); request.headers.addAll(body.headers); @@ -92,14 +93,19 @@ class ApiClient { : await serializeAsync(body); final nullableHeaderParams = headerParams.isEmpty ? null : headerParams; - switch(method) { - case 'POST': return await _client.post(uri, headers: nullableHeaderParams, body: msgBody,); - case 'PUT': return await _client.put(uri, headers: nullableHeaderParams, body: msgBody,); - case 'DELETE': return await _client.delete(uri, headers: nullableHeaderParams, body: msgBody,); - case 'PATCH': return await _client.patch(uri, headers: nullableHeaderParams, body: msgBody,); - case 'HEAD': return await _client.head(uri, headers: nullableHeaderParams,); - case 'GET': return await _client.get(uri, headers: nullableHeaderParams,); + final request = AbortableRequest(method, uri, abortTrigger: abortTrigger); + if (nullableHeaderParams != null) { + request.headers.addAll(nullableHeaderParams); } + if (msgBody is String) { + request.body = msgBody; + } else if (msgBody is List) { + request.bodyBytes = msgBody; + } else if (msgBody is Map) { + request.bodyFields = msgBody; + } + final response = await _client.send(request); + return Response.fromStream(response); } on SocketException catch (error, trace) { throw ApiException.withInner( HttpStatus.badRequest, @@ -136,11 +142,6 @@ class ApiClient { trace, ); } - - throw ApiException( - HttpStatus.badRequest, - 'Invalid HTTP operation: $method $path', - ); } Future deserializeAsync(String value, String targetType, {bool growable = false,}) => @@ -182,14 +183,6 @@ class ApiClient { return valueString == 'true' || valueString == '1'; case 'DateTime': return value is DateTime ? value : DateTime.tryParse(value); - case 'APIKeyCreateDto': - return APIKeyCreateDto.fromJson(value); - case 'APIKeyCreateResponseDto': - return APIKeyCreateResponseDto.fromJson(value); - case 'APIKeyResponseDto': - return APIKeyResponseDto.fromJson(value); - case 'APIKeyUpdateDto': - return APIKeyUpdateDto.fromJson(value); case 'ActivityCreateDto': return ActivityCreateDto.fromJson(value); case 'ActivityResponseDto': @@ -220,6 +213,14 @@ class ApiClient { return AlbumsResponse.fromJson(value); case 'AlbumsUpdate': return AlbumsUpdate.fromJson(value); + case 'ApiKeyCreateDto': + return ApiKeyCreateDto.fromJson(value); + case 'ApiKeyCreateResponseDto': + return ApiKeyCreateResponseDto.fromJson(value); + case 'ApiKeyResponseDto': + return ApiKeyResponseDto.fromJson(value); + case 'ApiKeyUpdateDto': + return ApiKeyUpdateDto.fromJson(value); case 'AssetBulkDeleteDto': return AssetBulkDeleteDto.fromJson(value); case 'AssetBulkUpdateDto': @@ -234,10 +235,6 @@ class ApiClient { return AssetBulkUploadCheckResult.fromJson(value); case 'AssetCopyDto': return AssetCopyDto.fromJson(value); - case 'AssetDeltaSyncDto': - return AssetDeltaSyncDto.fromJson(value); - case 'AssetDeltaSyncResponseDto': - return AssetDeltaSyncResponseDto.fromJson(value); case 'AssetEditAction': return AssetEditActionTypeTransformer().decode(value); case 'AssetEditActionItemDto': @@ -260,10 +257,8 @@ class ApiClient { return AssetFaceUpdateDto.fromJson(value); case 'AssetFaceUpdateItem': return AssetFaceUpdateItem.fromJson(value); - case 'AssetFaceWithoutPersonResponseDto': - return AssetFaceWithoutPersonResponseDto.fromJson(value); - case 'AssetFullSyncDto': - return AssetFullSyncDto.fromJson(value); + case 'AssetIdErrorReason': + return AssetIdErrorReasonTypeTransformer().decode(value); case 'AssetIdsDto': return AssetIdsDto.fromJson(value); case 'AssetIdsResponseDto': @@ -298,6 +293,10 @@ class ApiClient { return AssetOcrResponseDto.fromJson(value); case 'AssetOrder': return AssetOrderTypeTransformer().decode(value); + case 'AssetOrderBy': + return AssetOrderByTypeTransformer().decode(value); + case 'AssetRejectReason': + return AssetRejectReasonTypeTransformer().decode(value); case 'AssetResponseDto': return AssetResponseDto.fromJson(value); case 'AssetStackResponseDto': @@ -306,6 +305,8 @@ class ApiClient { return AssetStatsResponseDto.fromJson(value); case 'AssetTypeEnum': return AssetTypeEnumTypeTransformer().decode(value); + case 'AssetUploadAction': + return AssetUploadActionTypeTransformer().decode(value); case 'AssetVisibility': return AssetVisibilityTypeTransformer().decode(value); case 'AudioCodec': @@ -324,16 +325,18 @@ class ApiClient { return CLIPConfig.fromJson(value); case 'CQMode': return CQModeTypeTransformer().decode(value); + case 'CalendarHeatmapResponseDto': + return CalendarHeatmapResponseDto.fromJson(value); + case 'CalendarHeatmapResponseDtoSeriesInner': + return CalendarHeatmapResponseDtoSeriesInner.fromJson(value); + case 'CalendarHeatmapType': + return CalendarHeatmapTypeTypeTransformer().decode(value); case 'CastResponse': return CastResponse.fromJson(value); case 'CastUpdate': return CastUpdate.fromJson(value); case 'ChangePasswordDto': return ChangePasswordDto.fromJson(value); - case 'CheckExistingAssetsDto': - return CheckExistingAssetsDto.fromJson(value); - case 'CheckExistingAssetsResponseDto': - return CheckExistingAssetsResponseDto.fromJson(value); case 'Colorspace': return ColorspaceTypeTransformer().decode(value); case 'ContributorCountResponseDto': @@ -390,6 +393,14 @@ class ApiClient { return FoldersUpdate.fromJson(value); case 'ImageFormat': return ImageFormatTypeTransformer().decode(value); + case 'IntegrityReport': + return IntegrityReportTypeTransformer().decode(value); + case 'IntegrityReportResponseDto': + return IntegrityReportResponseDto.fromJson(value); + case 'IntegrityReportResponseDtoItemsInner': + return IntegrityReportResponseDtoItemsInner.fromJson(value); + case 'IntegrityReportSummaryResponseDto': + return IntegrityReportSummaryResponseDto.fromJson(value); case 'JobCreateDto': return JobCreateDto.fromJson(value); case 'JobName': @@ -402,8 +413,6 @@ class ApiClient { return LibraryStatsResponseDto.fromJson(value); case 'LicenseKeyDto': return LicenseKeyDto.fromJson(value); - case 'LicenseResponseDto': - return LicenseResponseDto.fromJson(value); case 'LogLevel': return LogLevelTypeTransformer().decode(value); case 'LoginCredentialDto': @@ -514,8 +523,6 @@ class ApiClient { return PersonStatisticsResponseDto.fromJson(value); case 'PersonUpdateDto': return PersonUpdateDto.fromJson(value); - case 'PersonWithFacesResponseDto': - return PersonWithFacesResponseDto.fromJson(value); case 'PinCodeChangeDto': return PinCodeChangeDto.fromJson(value); case 'PinCodeResetDto': @@ -524,18 +531,14 @@ class ApiClient { return PinCodeSetupDto.fromJson(value); case 'PlacesResponseDto': return PlacesResponseDto.fromJson(value); - case 'PluginActionResponseDto': - return PluginActionResponseDto.fromJson(value); - case 'PluginContextType': - return PluginContextTypeTypeTransformer().decode(value); - case 'PluginFilterResponseDto': - return PluginFilterResponseDto.fromJson(value); + case 'PluginMethodResponseDto': + return PluginMethodResponseDto.fromJson(value); case 'PluginResponseDto': return PluginResponseDto.fromJson(value); - case 'PluginTriggerResponseDto': - return PluginTriggerResponseDto.fromJson(value); - case 'PluginTriggerType': - return PluginTriggerTypeTypeTransformer().decode(value); + case 'PluginTemplateResponseDto': + return PluginTemplateResponseDto.fromJson(value); + case 'PluginTemplateStepResponseDto': + return PluginTemplateStepResponseDto.fromJson(value); case 'PurchaseResponse': return PurchaseResponse.fromJson(value); case 'PurchaseUpdate': @@ -574,6 +577,16 @@ class ApiClient { return ReactionLevelTypeTransformer().decode(value); case 'ReactionType': return ReactionTypeTypeTransformer().decode(value); + case 'RecentlyAddedResponse': + return RecentlyAddedResponse.fromJson(value); + case 'RecentlyAddedUpdate': + return RecentlyAddedUpdate.fromJson(value); + case 'ReleaseChannel': + return ReleaseChannelTypeTransformer().decode(value); + case 'ReleaseEventV1': + return ReleaseEventV1.fromJson(value); + case 'ReleaseType': + return ReleaseTypeTypeTransformer().decode(value); case 'ReverseGeocodingStateResponseDto': return ReverseGeocodingStateResponseDto.fromJson(value); case 'RotateParameters': @@ -612,8 +625,6 @@ class ApiClient { return ServerStatsResponseDto.fromJson(value); case 'ServerStorageResponseDto': return ServerStorageResponseDto.fromJson(value); - case 'ServerThemeDto': - return ServerThemeDto.fromJson(value); case 'ServerVersionHistoryResponseDto': return ServerVersionHistoryResponseDto.fromJson(value); case 'ServerVersionResponseDto': @@ -678,6 +689,8 @@ class ApiClient { return SyncAlbumUserV1.fromJson(value); case 'SyncAlbumV1': return SyncAlbumV1.fromJson(value); + case 'SyncAlbumV2': + return SyncAlbumV2.fromJson(value); case 'SyncAssetDeleteV1': return SyncAssetDeleteV1.fromJson(value); case 'SyncAssetEditDeleteV1': @@ -696,8 +709,14 @@ class ApiClient { return SyncAssetMetadataDeleteV1.fromJson(value); case 'SyncAssetMetadataV1': return SyncAssetMetadataV1.fromJson(value); + case 'SyncAssetOcrDeleteV1': + return SyncAssetOcrDeleteV1.fromJson(value); + case 'SyncAssetOcrV1': + return SyncAssetOcrV1.fromJson(value); case 'SyncAssetV1': return SyncAssetV1.fromJson(value); + case 'SyncAssetV2': + return SyncAssetV2.fromJson(value); case 'SyncAuthUserV1': return SyncAuthUserV1.fromJson(value); case 'SyncEntityType': @@ -736,10 +755,14 @@ class ApiClient { return SyncUserV1.fromJson(value); case 'SystemConfigBackupsDto': return SystemConfigBackupsDto.fromJson(value); + case 'SystemConfigBackupsDtoUpload': + return SystemConfigBackupsDtoUpload.fromJson(value); case 'SystemConfigDto': return SystemConfigDto.fromJson(value); case 'SystemConfigFFmpegDto': return SystemConfigFFmpegDto.fromJson(value); + case 'SystemConfigFFmpegRealtimeDto': + return SystemConfigFFmpegRealtimeDto.fromJson(value); case 'SystemConfigFacesDto': return SystemConfigFacesDto.fromJson(value); case 'SystemConfigGeneratedFullsizeImageDto': @@ -748,6 +771,12 @@ class ApiClient { return SystemConfigGeneratedImageDto.fromJson(value); case 'SystemConfigImageDto': return SystemConfigImageDto.fromJson(value); + case 'SystemConfigIntegrityChecks': + return SystemConfigIntegrityChecks.fromJson(value); + case 'SystemConfigIntegrityChecksumJob': + return SystemConfigIntegrityChecksumJob.fromJson(value); + case 'SystemConfigIntegrityJob': + return SystemConfigIntegrityJob.fromJson(value); case 'SystemConfigJobDto': return SystemConfigJobDto.fromJson(value); case 'SystemConfigLibraryDto': @@ -838,8 +867,6 @@ class ApiClient { return UpdateAssetDto.fromJson(value); case 'UpdateLibraryDto': return UpdateLibraryDto.fromJson(value); - case 'UploadBackupConfig': - return UploadBackupConfig.fromJson(value); case 'UploadOkDto': return UploadOkDto.fromJson(value); case 'UsageByUserDto': @@ -882,18 +909,22 @@ class ApiClient { return VideoCodecTypeTransformer().decode(value); case 'VideoContainer': return VideoContainerTypeTransformer().decode(value); - case 'WorkflowActionItemDto': - return WorkflowActionItemDto.fromJson(value); - case 'WorkflowActionResponseDto': - return WorkflowActionResponseDto.fromJson(value); case 'WorkflowCreateDto': return WorkflowCreateDto.fromJson(value); - case 'WorkflowFilterItemDto': - return WorkflowFilterItemDto.fromJson(value); - case 'WorkflowFilterResponseDto': - return WorkflowFilterResponseDto.fromJson(value); case 'WorkflowResponseDto': return WorkflowResponseDto.fromJson(value); + case 'WorkflowShareResponseDto': + return WorkflowShareResponseDto.fromJson(value); + case 'WorkflowShareStepDto': + return WorkflowShareStepDto.fromJson(value); + case 'WorkflowStepDto': + return WorkflowStepDto.fromJson(value); + case 'WorkflowTrigger': + return WorkflowTriggerTypeTransformer().decode(value); + case 'WorkflowTriggerResponseDto': + return WorkflowTriggerResponseDto.fromJson(value); + case 'WorkflowType': + return WorkflowTypeTypeTransformer().decode(value); case 'WorkflowUpdateDto': return WorkflowUpdateDto.fromJson(value); default: diff --git a/mobile/openapi/lib/model/job_name.dart b/mobile/openapi/lib/model/job_name.dart index 0b57c707b7..59164d6c57 100644 --- a/mobile/openapi/lib/model/job_name.dart +++ b/mobile/openapi/lib/model/job_name.dart @@ -40,7 +40,6 @@ class JobName { static const assetGenerateThumbnails = JobName._(r'AssetGenerateThumbnails'); static const partialAssetCleanup = JobName._(r'PartialAssetCleanup'); static const partialAssetCleanupQueueAll = JobName._(r'PartialAssetCleanupQueueAll'); - static const auditLogCleanup = JobName._(r'AuditLogCleanup'); static const auditTableCleanup = JobName._(r'AuditTableCleanup'); static const databaseBackup = JobName._(r'DatabaseBackup'); static const facialRecognitionQueueAll = JobName._(r'FacialRecognitionQueueAll'); @@ -55,6 +54,7 @@ class JobName { static const librarySyncFilesQueueAll = JobName._(r'LibrarySyncFilesQueueAll'); static const librarySyncFiles = JobName._(r'LibrarySyncFiles'); static const libraryScanQueueAll = JobName._(r'LibraryScanQueueAll'); + static const hlsSessionCleanup = JobName._(r'HlsSessionCleanup'); static const memoryCleanup = JobName._(r'MemoryCleanup'); static const memoryGenerate = JobName._(r'MemoryGenerate'); static const notificationsCleanup = JobName._(r'NotificationsCleanup'); @@ -80,7 +80,17 @@ class JobName { static const versionCheck = JobName._(r'VersionCheck'); static const ocrQueueAll = JobName._(r'OcrQueueAll'); static const ocr = JobName._(r'Ocr'); - static const workflowRun = JobName._(r'WorkflowRun'); + static const workflowAssetTrigger = JobName._(r'WorkflowAssetTrigger'); + static const integrityUntrackedFilesQueueAll = JobName._(r'IntegrityUntrackedFilesQueueAll'); + static const integrityUntrackedFiles = JobName._(r'IntegrityUntrackedFiles'); + static const integrityUntrackedRefresh = JobName._(r'IntegrityUntrackedRefresh'); + static const integrityMissingFilesQueueAll = JobName._(r'IntegrityMissingFilesQueueAll'); + static const integrityMissingFiles = JobName._(r'IntegrityMissingFiles'); + static const integrityMissingFilesRefresh = JobName._(r'IntegrityMissingFilesRefresh'); + static const integrityChecksumFiles = JobName._(r'IntegrityChecksumFiles'); + static const integrityChecksumFilesRefresh = JobName._(r'IntegrityChecksumFilesRefresh'); + static const integrityDeleteReportType = JobName._(r'IntegrityDeleteReportType'); + static const integrityDeleteReports = JobName._(r'IntegrityDeleteReports'); /// List of all possible values in this [enum][JobName]. static const values = [ @@ -101,7 +111,6 @@ class JobName { assetGenerateThumbnails, partialAssetCleanup, partialAssetCleanupQueueAll, - auditLogCleanup, auditTableCleanup, databaseBackup, facialRecognitionQueueAll, @@ -116,6 +125,7 @@ class JobName { librarySyncFilesQueueAll, librarySyncFiles, libraryScanQueueAll, + hlsSessionCleanup, memoryCleanup, memoryGenerate, notificationsCleanup, @@ -141,7 +151,17 @@ class JobName { versionCheck, ocrQueueAll, ocr, - workflowRun, + workflowAssetTrigger, + integrityUntrackedFilesQueueAll, + integrityUntrackedFiles, + integrityUntrackedRefresh, + integrityMissingFilesQueueAll, + integrityMissingFiles, + integrityMissingFilesRefresh, + integrityChecksumFiles, + integrityChecksumFilesRefresh, + integrityDeleteReportType, + integrityDeleteReports, ]; static JobName? fromJson(dynamic value) => JobNameTypeTransformer().decode(value); @@ -197,7 +217,6 @@ class JobNameTypeTransformer { case r'AssetGenerateThumbnails': return JobName.assetGenerateThumbnails; case r'PartialAssetCleanup': return JobName.partialAssetCleanup; case r'PartialAssetCleanupQueueAll': return JobName.partialAssetCleanupQueueAll; - case r'AuditLogCleanup': return JobName.auditLogCleanup; case r'AuditTableCleanup': return JobName.auditTableCleanup; case r'DatabaseBackup': return JobName.databaseBackup; case r'FacialRecognitionQueueAll': return JobName.facialRecognitionQueueAll; @@ -212,6 +231,7 @@ class JobNameTypeTransformer { case r'LibrarySyncFilesQueueAll': return JobName.librarySyncFilesQueueAll; case r'LibrarySyncFiles': return JobName.librarySyncFiles; case r'LibraryScanQueueAll': return JobName.libraryScanQueueAll; + case r'HlsSessionCleanup': return JobName.hlsSessionCleanup; case r'MemoryCleanup': return JobName.memoryCleanup; case r'MemoryGenerate': return JobName.memoryGenerate; case r'NotificationsCleanup': return JobName.notificationsCleanup; @@ -237,7 +257,17 @@ class JobNameTypeTransformer { case r'VersionCheck': return JobName.versionCheck; case r'OcrQueueAll': return JobName.ocrQueueAll; case r'Ocr': return JobName.ocr; - case r'WorkflowRun': return JobName.workflowRun; + case r'WorkflowAssetTrigger': return JobName.workflowAssetTrigger; + case r'IntegrityUntrackedFilesQueueAll': return JobName.integrityUntrackedFilesQueueAll; + case r'IntegrityUntrackedFiles': return JobName.integrityUntrackedFiles; + case r'IntegrityUntrackedRefresh': return JobName.integrityUntrackedRefresh; + case r'IntegrityMissingFilesQueueAll': return JobName.integrityMissingFilesQueueAll; + case r'IntegrityMissingFiles': return JobName.integrityMissingFiles; + case r'IntegrityMissingFilesRefresh': return JobName.integrityMissingFilesRefresh; + case r'IntegrityChecksumFiles': return JobName.integrityChecksumFiles; + case r'IntegrityChecksumFilesRefresh': return JobName.integrityChecksumFilesRefresh; + case r'IntegrityDeleteReportType': return JobName.integrityDeleteReportType; + case r'IntegrityDeleteReports': return JobName.integrityDeleteReports; default: if (!allowNull) { throw ArgumentError('Unknown enum value to decode: $data'); diff --git a/mobile/openapi/lib/model/system_config_backups_dto.dart b/mobile/openapi/lib/model/system_config_backups_dto.dart index f937f1a0e9..18d9b934e4 100644 --- a/mobile/openapi/lib/model/system_config_backups_dto.dart +++ b/mobile/openapi/lib/model/system_config_backups_dto.dart @@ -19,7 +19,7 @@ class SystemConfigBackupsDto { DatabaseBackupConfig database; - UploadBackupConfig upload; + SystemConfigBackupsDtoUpload upload; @override bool operator ==(Object other) => identical(this, other) || other is SystemConfigBackupsDto && @@ -52,7 +52,7 @@ class SystemConfigBackupsDto { return SystemConfigBackupsDto( database: DatabaseBackupConfig.fromJson(json[r'database'])!, - upload: UploadBackupConfig.fromJson(json[r'upload'])!, + upload: SystemConfigBackupsDtoUpload.fromJson(json[r'upload'])!, ); } return null; diff --git a/mobile/openapi/lib/model/upload_backup_config.dart b/mobile/openapi/lib/model/system_config_backups_dto_upload.dart similarity index 54% rename from mobile/openapi/lib/model/upload_backup_config.dart rename to mobile/openapi/lib/model/system_config_backups_dto_upload.dart index 454616634e..f60e9498cf 100644 --- a/mobile/openapi/lib/model/upload_backup_config.dart +++ b/mobile/openapi/lib/model/system_config_backups_dto_upload.dart @@ -10,17 +10,18 @@ part of openapi.api; -class UploadBackupConfig { - /// Returns a new [UploadBackupConfig] instance. - UploadBackupConfig({ +class SystemConfigBackupsDtoUpload { + /// Returns a new [SystemConfigBackupsDtoUpload] instance. + SystemConfigBackupsDtoUpload({ required this.maxAgeHours, }); /// Minimum value: 1 - num maxAgeHours; + /// Maximum value: 9007199254740991 + int maxAgeHours; @override - bool operator ==(Object other) => identical(this, other) || other is UploadBackupConfig && + bool operator ==(Object other) => identical(this, other) || other is SystemConfigBackupsDtoUpload && other.maxAgeHours == maxAgeHours; @override @@ -29,7 +30,7 @@ class UploadBackupConfig { (maxAgeHours.hashCode); @override - String toString() => 'UploadBackupConfig[maxAgeHours=$maxAgeHours]'; + String toString() => 'SystemConfigBackupsDtoUpload[maxAgeHours=$maxAgeHours]'; Map toJson() { final json = {}; @@ -37,26 +38,26 @@ class UploadBackupConfig { return json; } - /// Returns a new [UploadBackupConfig] instance and imports its values from + /// Returns a new [SystemConfigBackupsDtoUpload] instance and imports its values from /// [value] if it's a [Map], null otherwise. // ignore: prefer_constructors_over_static_methods - static UploadBackupConfig? fromJson(dynamic value) { - upgradeDto(value, "UploadBackupConfig"); + static SystemConfigBackupsDtoUpload? fromJson(dynamic value) { + upgradeDto(value, "SystemConfigBackupsDtoUpload"); if (value is Map) { final json = value.cast(); - return UploadBackupConfig( - maxAgeHours: num.parse('${json[r'maxAgeHours']}'), + return SystemConfigBackupsDtoUpload( + maxAgeHours: mapValueOfType(json, r'maxAgeHours')!, ); } return null; } - static List listFromJson(dynamic json, {bool growable = false,}) { - final result = []; + static List listFromJson(dynamic json, {bool growable = false,}) { + final result = []; if (json is List && json.isNotEmpty) { for (final row in json) { - final value = UploadBackupConfig.fromJson(row); + final value = SystemConfigBackupsDtoUpload.fromJson(row); if (value != null) { result.add(value); } @@ -65,12 +66,12 @@ class UploadBackupConfig { return result.toList(growable: growable); } - static Map mapFromJson(dynamic json) { - final map = {}; + static Map mapFromJson(dynamic json) { + final map = {}; if (json is Map && json.isNotEmpty) { json = json.cast(); // ignore: parameter_assignments for (final entry in json.entries) { - final value = UploadBackupConfig.fromJson(entry.value); + final value = SystemConfigBackupsDtoUpload.fromJson(entry.value); if (value != null) { map[entry.key] = value; } @@ -79,14 +80,14 @@ class UploadBackupConfig { return map; } - // maps a json object with a list of UploadBackupConfig-objects as value to a dart map - static Map> mapListFromJson(dynamic json, {bool growable = false,}) { - final map = >{}; + // maps a json object with a list of SystemConfigBackupsDtoUpload-objects as value to a dart map + static Map> mapListFromJson(dynamic json, {bool growable = false,}) { + final map = >{}; if (json is Map && json.isNotEmpty) { // ignore: parameter_assignments json = json.cast(); for (final entry in json.entries) { - map[entry.key] = UploadBackupConfig.listFromJson(entry.value, growable: growable,); + map[entry.key] = SystemConfigBackupsDtoUpload.listFromJson(entry.value, growable: growable,); } } return map; diff --git a/mobile/openapi/lib/model/system_config_nightly_tasks_dto.dart b/mobile/openapi/lib/model/system_config_nightly_tasks_dto.dart index 0cfb62d6ca..cb963a0c3c 100644 --- a/mobile/openapi/lib/model/system_config_nightly_tasks_dto.dart +++ b/mobile/openapi/lib/model/system_config_nightly_tasks_dto.dart @@ -34,8 +34,10 @@ class SystemConfigNightlyTasksDto { /// Missing thumbnails bool missingThumbnails; + /// Remove stale uploads bool removeStaleUploads; + /// Start time (HH:MM) String startTime; /// Sync quota usage diff --git a/open-api/immich-openapi-specs.json b/open-api/immich-openapi-specs.json index 3c0094f3ae..3248833582 100644 --- a/open-api/immich-openapi-specs.json +++ b/open-api/immich-openapi-specs.json @@ -1,5 +1,16707 @@ { + "openapi": "3.0.0", + "paths": { + "/activities": { + "get": { + "description": "Returns a list of activities for the selected asset or album. The activities are returned in sorted order, with the oldest activities appearing first.", + "operationId": "getActivities", + "parameters": [ + { + "name": "albumId", + "required": true, + "in": "query", + "description": "Album ID", + "schema": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "type": "string" + } + }, + { + "name": "assetId", + "required": false, + "in": "query", + "description": "Asset ID (if activity is for an asset)", + "schema": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "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", + "description": "Filter by user ID", + "schema": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "items": { + "$ref": "#/components/schemas/ActivityResponseDto" + }, + "type": "array" + } + } + }, + "description": "" + } + }, + "security": [ + { + "bearer": [] + }, + { + "cookie": [] + }, + { + "api_key": [] + } + ], + "summary": "List all activities", + "tags": [ + "Activities" + ], + "x-immich-history": [ + { + "version": "v1", + "state": "Added" + }, + { + "version": "v1", + "state": "Beta" + }, + { + "version": "v2", + "state": "Stable" + } + ], + "x-immich-permission": "activity.read", + "x-immich-state": "Stable" + }, + "post": { + "description": "Create a like or a comment for an album, or an asset in an album.", + "operationId": "createActivity", + "parameters": [], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ActivityCreateDto" + } + } + }, + "required": true + }, + "responses": { + "201": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ActivityResponseDto" + } + } + }, + "description": "" + } + }, + "security": [ + { + "bearer": [] + }, + { + "cookie": [] + }, + { + "api_key": [] + } + ], + "summary": "Create an activity", + "tags": [ + "Activities" + ], + "x-immich-history": [ + { + "version": "v1", + "state": "Added" + }, + { + "version": "v1", + "state": "Beta" + }, + { + "version": "v2", + "state": "Stable" + } + ], + "x-immich-permission": "activity.create", + "x-immich-state": "Stable" + } + }, + "/activities/statistics": { + "get": { + "description": "Returns the number of likes and comments for a given album or asset in an album.", + "operationId": "getActivityStatistics", + "parameters": [ + { + "name": "albumId", + "required": true, + "in": "query", + "description": "Album ID", + "schema": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "type": "string" + } + }, + { + "name": "assetId", + "required": false, + "in": "query", + "description": "Asset ID (if activity is for an asset)", + "schema": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ActivityStatisticsResponseDto" + } + } + }, + "description": "" + } + }, + "security": [ + { + "bearer": [] + }, + { + "cookie": [] + }, + { + "api_key": [] + } + ], + "summary": "Retrieve activity statistics", + "tags": [ + "Activities" + ], + "x-immich-history": [ + { + "version": "v1", + "state": "Added" + }, + { + "version": "v1", + "state": "Beta" + }, + { + "version": "v2", + "state": "Stable" + } + ], + "x-immich-permission": "activity.statistics", + "x-immich-state": "Stable" + } + }, + "/activities/{id}": { + "delete": { + "description": "Removes a like or comment from a given album or asset in an album.", + "operationId": "deleteActivity", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "schema": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "type": "string" + } + } + ], + "responses": { + "204": { + "description": "" + } + }, + "security": [ + { + "bearer": [] + }, + { + "cookie": [] + }, + { + "api_key": [] + } + ], + "summary": "Delete an activity", + "tags": [ + "Activities" + ], + "x-immich-history": [ + { + "version": "v1", + "state": "Added" + }, + { + "version": "v1", + "state": "Beta" + }, + { + "version": "v2", + "state": "Stable" + } + ], + "x-immich-permission": "activity.delete", + "x-immich-state": "Stable" + } + }, + "/admin/auth/unlink-all": { + "post": { + "description": "Unlinks all OAuth accounts associated with user accounts in the system.", + "operationId": "unlinkAllOAuthAccountsAdmin", + "parameters": [], + "responses": { + "204": { + "description": "" + } + }, + "security": [ + { + "bearer": [] + }, + { + "cookie": [] + }, + { + "api_key": [] + } + ], + "summary": "Unlink all OAuth accounts", + "tags": [ + "Authentication (admin)" + ], + "x-immich-admin-only": true, + "x-immich-history": [ + { + "version": "v1", + "state": "Added" + }, + { + "version": "v1", + "state": "Beta" + }, + { + "version": "v2", + "state": "Stable" + } + ], + "x-immich-permission": "adminAuth.unlinkAll", + "x-immich-state": "Stable" + } + }, + "/admin/database-backups": { + "delete": { + "description": "Delete a backup by its filename", + "operationId": "deleteDatabaseBackup", + "parameters": [], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DatabaseBackupDeleteDto" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "" + } + }, + "security": [ + { + "bearer": [] + }, + { + "cookie": [] + }, + { + "api_key": [] + } + ], + "summary": "Delete database backup", + "tags": [ + "Database Backups (admin)" + ], + "x-immich-admin-only": true, + "x-immich-history": [ + { + "version": "v2.5.0", + "state": "Added" + }, + { + "version": "v2.5.0", + "state": "Alpha" + } + ], + "x-immich-permission": "backup.delete", + "x-immich-state": "Alpha" + }, + "get": { + "description": "Get the list of the successful and failed backups", + "operationId": "listDatabaseBackups", + "parameters": [], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DatabaseBackupListResponseDto" + } + } + }, + "description": "" + } + }, + "security": [ + { + "bearer": [] + }, + { + "cookie": [] + }, + { + "api_key": [] + } + ], + "summary": "List database backups", + "tags": [ + "Database Backups (admin)" + ], + "x-immich-admin-only": true, + "x-immich-history": [ + { + "version": "v2.5.0", + "state": "Added" + }, + { + "version": "v2.5.0", + "state": "Alpha" + } + ], + "x-immich-permission": "maintenance", + "x-immich-state": "Alpha" + } + }, + "/admin/database-backups/start-restore": { + "post": { + "description": "Put Immich into maintenance mode to restore a backup (Immich must not be configured)", + "operationId": "startDatabaseRestoreFlow", + "parameters": [], + "responses": { + "201": { + "description": "" + } + }, + "summary": "Start database backup restore flow", + "tags": [ + "Database Backups (admin)" + ], + "x-immich-history": [ + { + "version": "v2.5.0", + "state": "Added" + }, + { + "version": "v2.5.0", + "state": "Alpha" + } + ], + "x-immich-state": "Alpha" + } + }, + "/admin/database-backups/upload": { + "post": { + "description": "Uploads .sql/.sql.gz file to restore backup from", + "operationId": "uploadDatabaseBackup", + "parameters": [], + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "$ref": "#/components/schemas/DatabaseBackupUploadDto" + } + } + }, + "description": "Backup Upload", + "required": true + }, + "responses": { + "201": { + "description": "" + } + }, + "security": [ + { + "bearer": [] + }, + { + "cookie": [] + }, + { + "api_key": [] + } + ], + "summary": "Upload database backup", + "tags": [ + "Database Backups (admin)" + ], + "x-immich-admin-only": true, + "x-immich-history": [ + { + "version": "v2.5.0", + "state": "Added" + }, + { + "version": "v2.5.0", + "state": "Alpha" + } + ], + "x-immich-permission": "backup.upload", + "x-immich-state": "Alpha" + } + }, + "/admin/database-backups/{filename}": { + "get": { + "description": "Downloads the database backup file", + "operationId": "downloadDatabaseBackup", + "parameters": [ + { + "name": "filename", + "required": true, + "in": "path", + "schema": { + "pattern": "^[a-zA-Z0-9_\\-.]+$", + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/octet-stream": { + "schema": { + "format": "binary", + "type": "string" + } + } + }, + "description": "" + } + }, + "security": [ + { + "bearer": [] + }, + { + "cookie": [] + }, + { + "api_key": [] + } + ], + "summary": "Download database backup", + "tags": [ + "Database Backups (admin)" + ], + "x-immich-admin-only": true, + "x-immich-history": [ + { + "version": "v2.5.0", + "state": "Added" + }, + { + "version": "v2.5.0", + "state": "Alpha" + } + ], + "x-immich-permission": "backup.download", + "x-immich-state": "Alpha" + } + }, + "/admin/integrity/report": { + "get": { + "description": "Get all flagged items by integrity report type", + "operationId": "getIntegrityReport", + "parameters": [ + { + "name": "cursor", + "required": false, + "in": "query", + "description": "Cursor for pagination", + "schema": { + "type": "string" + } + }, + { + "name": "limit", + "required": false, + "in": "query", + "description": "Number of items per page", + "schema": { + "maximum": 9007199254740991, + "exclusiveMinimum": true, + "default": 500, + "type": "integer", + "minimum": 0 + } + }, + { + "name": "type", + "required": true, + "in": "query", + "schema": { + "$ref": "#/components/schemas/IntegrityReport" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/IntegrityReportResponseDto" + } + } + }, + "description": "" + } + }, + "security": [ + { + "bearer": [] + }, + { + "cookie": [] + }, + { + "api_key": [] + } + ], + "summary": "Get integrity report by type", + "tags": [ + "Maintenance (admin)" + ], + "x-immich-admin-only": true, + "x-immich-history": [ + { + "version": "v3.0.0", + "state": "Added" + }, + { + "version": "v3.0.0", + "state": "Alpha" + } + ], + "x-immich-permission": "maintenance", + "x-immich-state": "Alpha" + } + }, + "/admin/integrity/report/{id}": { + "delete": { + "description": "Delete a given report item and perform corresponding deletion (e.g. trash asset, delete file)", + "operationId": "deleteIntegrityReport", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "schema": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-7[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "" + } + }, + "security": [ + { + "bearer": [] + }, + { + "cookie": [] + }, + { + "api_key": [] + } + ], + "summary": "Delete integrity report item", + "tags": [ + "Maintenance (admin)" + ], + "x-immich-admin-only": true, + "x-immich-history": [ + { + "version": "v3.0.0", + "state": "Added" + }, + { + "version": "v3.0.0", + "state": "Alpha" + } + ], + "x-immich-permission": "maintenance", + "x-immich-state": "Alpha" + } + }, + "/admin/integrity/report/{id}/file": { + "get": { + "description": "Download the untracked/broken file if one exists", + "operationId": "getIntegrityReportFile", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "schema": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-7[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/octet-stream": { + "schema": { + "format": "binary", + "type": "string" + } + } + }, + "description": "" + } + }, + "security": [ + { + "bearer": [] + }, + { + "cookie": [] + }, + { + "api_key": [] + } + ], + "summary": "Download flagged file", + "tags": [ + "Maintenance (admin)" + ], + "x-immich-admin-only": true, + "x-immich-history": [ + { + "version": "v3.0.0", + "state": "Added" + }, + { + "version": "v3.0.0", + "state": "Alpha" + } + ], + "x-immich-permission": "maintenance", + "x-immich-state": "Alpha" + } + }, + "/admin/integrity/report/{type}/csv": { + "get": { + "description": "Get all integrity report entries for a given type as a CSV", + "operationId": "getIntegrityReportCsv", + "parameters": [ + { + "name": "type", + "required": true, + "in": "path", + "schema": { + "$ref": "#/components/schemas/IntegrityReport" + } + } + ], + "responses": { + "200": { + "content": { + "application/octet-stream": { + "schema": { + "format": "binary", + "type": "string" + } + } + }, + "description": "" + } + }, + "security": [ + { + "bearer": [] + }, + { + "cookie": [] + }, + { + "api_key": [] + } + ], + "summary": "Export integrity report by type as CSV", + "tags": [ + "Maintenance (admin)" + ], + "x-immich-admin-only": true, + "x-immich-history": [ + { + "version": "v3.0.0", + "state": "Added" + }, + { + "version": "v3.0.0", + "state": "Alpha" + } + ], + "x-immich-permission": "maintenance", + "x-immich-state": "Alpha" + } + }, + "/admin/integrity/summary": { + "get": { + "description": "Get a count of the items flagged in each integrity report", + "operationId": "getIntegrityReportSummary", + "parameters": [], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/IntegrityReportSummaryResponseDto" + } + } + }, + "description": "" + } + }, + "security": [ + { + "bearer": [] + }, + { + "cookie": [] + }, + { + "api_key": [] + } + ], + "summary": "Get integrity report summary", + "tags": [ + "Maintenance (admin)" + ], + "x-immich-admin-only": true, + "x-immich-history": [ + { + "version": "v3.0.0", + "state": "Added" + }, + { + "version": "v3.0.0", + "state": "Alpha" + } + ], + "x-immich-permission": "maintenance", + "x-immich-state": "Alpha" + } + }, + "/admin/maintenance": { + "post": { + "description": "Put Immich into or take it out of maintenance mode", + "operationId": "setMaintenanceMode", + "parameters": [], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SetMaintenanceModeDto" + } + } + }, + "required": true + }, + "responses": { + "201": { + "description": "" + } + }, + "security": [ + { + "bearer": [] + }, + { + "cookie": [] + }, + { + "api_key": [] + } + ], + "summary": "Set maintenance mode", + "tags": [ + "Maintenance (admin)" + ], + "x-immich-admin-only": true, + "x-immich-history": [ + { + "version": "v2.3.0", + "state": "Added" + }, + { + "version": "v2.3.0", + "state": "Alpha" + } + ], + "x-immich-permission": "maintenance", + "x-immich-state": "Alpha" + } + }, + "/admin/maintenance/detect-install": { + "get": { + "description": "Collect integrity checks and other heuristics about local data.", + "operationId": "detectPriorInstall", + "parameters": [], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MaintenanceDetectInstallResponseDto" + } + } + }, + "description": "" + } + }, + "security": [ + { + "bearer": [] + }, + { + "cookie": [] + }, + { + "api_key": [] + } + ], + "summary": "Detect existing install", + "tags": [ + "Maintenance (admin)" + ], + "x-immich-admin-only": true, + "x-immich-history": [ + { + "version": "v2.5.0", + "state": "Added" + }, + { + "version": "v2.5.0", + "state": "Alpha" + } + ], + "x-immich-permission": "maintenance", + "x-immich-state": "Alpha" + } + }, + "/admin/maintenance/login": { + "post": { + "description": "Login with maintenance token or cookie to receive current information and perform further actions.", + "operationId": "maintenanceLogin", + "parameters": [], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MaintenanceLoginDto" + } + } + }, + "required": true + }, + "responses": { + "201": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MaintenanceAuthDto" + } + } + }, + "description": "" + } + }, + "summary": "Log into maintenance mode", + "tags": [ + "Maintenance (admin)" + ], + "x-immich-history": [ + { + "version": "v2.3.0", + "state": "Added" + }, + { + "version": "v2.3.0", + "state": "Alpha" + } + ], + "x-immich-state": "Alpha" + } + }, + "/admin/maintenance/status": { + "get": { + "description": "Fetch information about the currently running maintenance action.", + "operationId": "getMaintenanceStatus", + "parameters": [], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MaintenanceStatusResponseDto" + } + } + }, + "description": "" + } + }, + "summary": "Get maintenance mode status", + "tags": [ + "Maintenance (admin)" + ], + "x-immich-history": [ + { + "version": "v2.5.0", + "state": "Added" + }, + { + "version": "v2.5.0", + "state": "Alpha" + } + ], + "x-immich-state": "Alpha" + } + }, + "/admin/notifications": { + "post": { + "description": "Create a new notification for a specific user.", + "operationId": "createNotification", + "parameters": [], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotificationCreateDto" + } + } + }, + "required": true + }, + "responses": { + "201": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotificationDto" + } + } + }, + "description": "" + } + }, + "security": [ + { + "bearer": [] + }, + { + "cookie": [] + }, + { + "api_key": [] + } + ], + "summary": "Create a notification", + "tags": [ + "Notifications (admin)" + ], + "x-immich-admin-only": true, + "x-immich-history": [ + { + "version": "v1", + "state": "Added" + }, + { + "version": "v1", + "state": "Beta" + }, + { + "version": "v2", + "state": "Stable" + } + ], + "x-immich-state": "Stable" + } + }, + "/admin/notifications/templates/{name}": { + "post": { + "description": "Retrieve a preview of the provided email template.", + "operationId": "getNotificationTemplateAdmin", + "parameters": [ + { + "name": "name", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TemplateDto" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TemplateResponseDto" + } + } + }, + "description": "" + } + }, + "security": [ + { + "bearer": [] + }, + { + "cookie": [] + }, + { + "api_key": [] + } + ], + "summary": "Render email template", + "tags": [ + "Notifications (admin)" + ], + "x-immich-admin-only": true, + "x-immich-history": [ + { + "version": "v1", + "state": "Added" + }, + { + "version": "v1", + "state": "Beta" + }, + { + "version": "v2", + "state": "Stable" + } + ], + "x-immich-state": "Stable" + } + }, + "/admin/notifications/test-email": { + "post": { + "description": "Send a test email using the provided SMTP configuration.", + "operationId": "sendTestEmailAdmin", + "parameters": [], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SystemConfigSmtpDto" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TestEmailResponseDto" + } + } + }, + "description": "" + } + }, + "security": [ + { + "bearer": [] + }, + { + "cookie": [] + }, + { + "api_key": [] + } + ], + "summary": "Send test email", + "tags": [ + "Notifications (admin)" + ], + "x-immich-admin-only": true, + "x-immich-history": [ + { + "version": "v1", + "state": "Added" + }, + { + "version": "v1", + "state": "Beta" + }, + { + "version": "v2", + "state": "Stable" + } + ], + "x-immich-state": "Stable" + } + }, + "/admin/users": { + "get": { + "description": "Search for users.", + "operationId": "searchUsersAdmin", + "parameters": [ + { + "name": "id", + "required": false, + "in": "query", + "description": "User ID filter", + "schema": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "type": "string" + } + }, + { + "name": "withDeleted", + "required": false, + "in": "query", + "description": "Include deleted users", + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "items": { + "$ref": "#/components/schemas/UserAdminResponseDto" + }, + "type": "array" + } + } + }, + "description": "" + } + }, + "security": [ + { + "bearer": [] + }, + { + "cookie": [] + }, + { + "api_key": [] + } + ], + "summary": "Search users", + "tags": [ + "Users (admin)" + ], + "x-immich-admin-only": true, + "x-immich-history": [ + { + "version": "v1", + "state": "Added" + }, + { + "version": "v1", + "state": "Beta" + }, + { + "version": "v2", + "state": "Stable" + } + ], + "x-immich-permission": "adminUser.read", + "x-immich-state": "Stable" + }, + "post": { + "description": "Create a new user.", + "operationId": "createUserAdmin", + "parameters": [], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserAdminCreateDto" + } + } + }, + "required": true + }, + "responses": { + "201": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserAdminResponseDto" + } + } + }, + "description": "" + } + }, + "security": [ + { + "bearer": [] + }, + { + "cookie": [] + }, + { + "api_key": [] + } + ], + "summary": "Create a user", + "tags": [ + "Users (admin)" + ], + "x-immich-admin-only": true, + "x-immich-history": [ + { + "version": "v1", + "state": "Added" + }, + { + "version": "v1", + "state": "Beta" + }, + { + "version": "v2", + "state": "Stable" + } + ], + "x-immich-permission": "adminUser.create", + "x-immich-state": "Stable" + } + }, + "/admin/users/{id}": { + "delete": { + "description": "Delete a user.", + "operationId": "deleteUserAdmin", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "schema": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "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", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "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": { + "deprecated": true, + "description": "Update an existing user.", + "operationId": "updateUserAdmin", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "schema": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "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)", + "Deprecated" + ], + "x-immich-admin-only": true, + "x-immich-history": [ + { + "version": "v1", + "state": "Added" + }, + { + "version": "v1", + "state": "Beta" + }, + { + "version": "v2", + "state": "Stable" + }, + { + "version": "v3", + "state": "Deprecated", + "replacementId": "updateUserAdmin" + } + ], + "x-immich-permission": "adminUser.update", + "x-immich-state": "Deprecated" + } + }, + "/admin/users/{id}/calendar-heatmap": { + "get": { + "description": "Retrieve activity counts for a specified period, in a calendar heatmap format.", + "operationId": "getUserCalendarHeatmapAdmin", + "parameters": [ + { + "name": "from", + "required": false, + "in": "query", + "description": "Start date in UTC", + "schema": { + "format": "date", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$", + "example": "2024-01-01", + "type": "string" + } + }, + { + "name": "id", + "required": true, + "in": "path", + "schema": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "type": "string" + } + }, + { + "name": "to", + "required": false, + "in": "query", + "description": "End date in UTC", + "schema": { + "format": "date", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$", + "example": "2024-01-01", + "type": "string" + } + }, + { + "name": "type", + "required": false, + "in": "query", + "schema": { + "default": "Upload", + "$ref": "#/components/schemas/CalendarHeatmapType" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CalendarHeatmapResponseDto" + } + } + }, + "description": "" + } + }, + "security": [ + { + "bearer": [] + }, + { + "cookie": [] + }, + { + "api_key": [] + } + ], + "summary": "Retrieve calendar heatmap activity", + "tags": [ + "Users (admin)" + ], + "x-immich-history": [ + { + "version": "v3", + "state": "Added" + }, + { + "version": "v3", + "state": "Stable" + } + ], + "x-immich-permission": "user.read", + "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", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "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": { + "deprecated": true, + "description": "Update the preferences of a specific user.", + "operationId": "updateUserPreferencesAdmin", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "schema": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "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)", + "Deprecated" + ], + "x-immich-admin-only": true, + "x-immich-history": [ + { + "version": "v1", + "state": "Added" + }, + { + "version": "v1", + "state": "Beta" + }, + { + "version": "v2", + "state": "Stable" + }, + { + "version": "v3", + "state": "Deprecated", + "replacementId": "updateUserPreferencesAdmin" + } + ], + "x-immich-permission": "adminUser.update", + "x-immich-state": "Deprecated" + } + }, + "/admin/users/{id}/restore": { + "post": { + "description": "Restore a previously deleted user.", + "operationId": "restoreUserAdmin", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "schema": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "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", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "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", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "type": "string" + } + }, + { + "name": "isFavorite", + "required": false, + "in": "query", + "description": "Filter by favorite status", + "schema": { + "type": "boolean" + } + }, + { + "name": "isTrashed", + "required": false, + "in": "query", + "description": "Filter by trash status", + "schema": { + "type": "boolean" + } + }, + { + "name": "visibility", + "required": false, + "in": "query", + "schema": { + "$ref": "#/components/schemas/AssetVisibility" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AssetStatsResponseDto" + } + } + }, + "description": "" + } + }, + "security": [ + { + "bearer": [] + }, + { + "cookie": [] + }, + { + "api_key": [] + } + ], + "summary": "Retrieve user statistics", + "tags": [ + "Users (admin)" + ], + "x-immich-admin-only": true, + "x-immich-history": [ + { + "version": "v1", + "state": "Added" + }, + { + "version": "v1", + "state": "Beta" + }, + { + "version": "v2", + "state": "Stable" + } + ], + "x-immich-permission": "adminUser.read", + "x-immich-state": "Stable" + } + }, + "/albums": { + "get": { + "description": "Retrieve a list of albums available to the authenticated user.", + "operationId": "getAllAlbums", + "parameters": [ + { + "name": "assetId", + "required": false, + "in": "query", + "description": "Filter albums containing this asset ID (ignores other parameters)", + "schema": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "type": "string" + } + }, + { + "name": "id", + "required": false, + "in": "query", + "description": "Album ID", + "schema": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "type": "string" + } + }, + { + "name": "isOwned", + "required": false, + "in": "query", + "description": "Filter by ownership: true = only owned, false = only shared-with-me, undefined = no filter", + "schema": { + "type": "boolean" + } + }, + { + "name": "isShared", + "required": false, + "in": "query", + "description": "Filter by shared status: true = only shared, false = not shared, undefined = no filter", + "schema": { + "type": "boolean" + } + }, + { + "name": "name", + "required": false, + "in": "query", + "description": "Album name (exact match)", + "schema": { + "type": "string" + } + } + ], + "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": [], + "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", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "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", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "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/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", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "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", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "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", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "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}/map-markers": { + "get": { + "description": "Retrieve map marker information for a specific album by its ID.", + "operationId": "getAlbumMapMarkers", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "schema": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "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": { + "items": { + "$ref": "#/components/schemas/MapMarkerResponseDto" + }, + "type": "array" + } + } + }, + "description": "" + } + }, + "security": [ + { + "bearer": [] + }, + { + "cookie": [] + }, + { + "api_key": [] + } + ], + "summary": "Retrieve album map markers", + "tags": [ + "Albums" + ], + "x-immich-history": [ + { + "version": "v3", + "state": "Added" + } + ], + "x-immich-permission": "album.read" + } + }, + "/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", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "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", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "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", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "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", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "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", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "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": { + "deprecated": true, + "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", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "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", + "Deprecated" + ], + "x-immich-history": [ + { + "version": "v1", + "state": "Added" + }, + { + "version": "v1", + "state": "Beta" + }, + { + "version": "v2", + "state": "Stable" + }, + { + "version": "v3", + "state": "Deprecated", + "replacementId": "updateApiKey" + } + ], + "x-immich-permission": "apiKey.update", + "x-immich-state": "Deprecated" + } + }, + "/assets": { + "delete": { + "description": "Deletes multiple assets at the same time.", + "operationId": "deleteAssets", + "parameters": [], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AssetBulkDeleteDto" + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "" + } + }, + "security": [ + { + "bearer": [] + }, + { + "cookie": [] + }, + { + "api_key": [] + } + ], + "summary": "Delete assets", + "tags": [ + "Assets" + ], + "x-immich-history": [ + { + "version": "v1", + "state": "Added" + }, + { + "version": "v1", + "state": "Beta" + }, + { + "version": "v2", + "state": "Stable" + } + ], + "x-immich-permission": "asset.delete", + "x-immich-state": "Stable" + }, + "post": { + "description": "Uploads a new asset to the server.", + "operationId": "uploadAsset", + "parameters": [ + { + "name": "key", + "required": false, + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "slug", + "required": false, + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "x-immich-checksum", + "in": "header", + "description": "sha1 checksum that can be used for duplicate detection before the file is uploaded", + "required": false, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "$ref": "#/components/schemas/AssetMediaCreateDto" + } + } + }, + "description": "Asset Upload Information", + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AssetMediaResponseDto" + } + } + }, + "description": "Asset is a duplicate" + }, + "201": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AssetMediaResponseDto" + } + } + }, + "description": "Asset uploaded successfully" + } + }, + "security": [ + { + "bearer": [] + }, + { + "cookie": [] + }, + { + "api_key": [] + } + ], + "summary": "Upload asset", + "tags": [ + "Assets" + ], + "x-immich-history": [ + { + "version": "v1", + "state": "Added" + }, + { + "version": "v1", + "state": "Beta" + }, + { + "version": "v2", + "state": "Stable" + } + ], + "x-immich-permission": "asset.upload", + "x-immich-state": "Stable" + }, + "put": { + "deprecated": true, + "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", + "Deprecated" + ], + "x-immich-history": [ + { + "version": "v1", + "state": "Added" + }, + { + "version": "v1", + "state": "Beta" + }, + { + "version": "v2", + "state": "Stable" + }, + { + "version": "v3", + "state": "Deprecated", + "replacementId": "updateAssets" + } + ], + "x-immich-permission": "asset.update", + "x-immich-state": "Deprecated" + } + }, + "/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/jobs": { + "post": { + "description": "Run a specific job on a set of assets.", + "operationId": "runAssetJobs", + "parameters": [], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AssetJobsDto" + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "" + } + }, + "security": [ + { + "bearer": [] + }, + { + "cookie": [] + }, + { + "api_key": [] + } + ], + "summary": "Run an asset job", + "tags": [ + "Assets" + ], + "x-immich-history": [ + { + "version": "v1", + "state": "Added" + }, + { + "version": "v1", + "state": "Beta" + }, + { + "version": "v2", + "state": "Stable" + } + ], + "x-immich-permission": "job.create", + "x-immich-state": "Stable" + } + }, + "/assets/metadata": { + "delete": { + "description": "Delete metadata key-value pairs for multiple assets.", + "operationId": "deleteBulkAssetMetadata", + "parameters": [], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AssetMetadataBulkDeleteDto" + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "" + } + }, + "security": [ + { + "bearer": [] + }, + { + "cookie": [] + }, + { + "api_key": [] + } + ], + "summary": "Delete asset metadata", + "tags": [ + "Assets" + ], + "x-immich-history": [ + { + "version": "v1", + "state": "Added" + }, + { + "version": "v2.5.0", + "state": "Beta" + } + ], + "x-immich-permission": "asset.update", + "x-immich-state": "Beta" + }, + "put": { + "description": "Upsert metadata key-value pairs for multiple assets.", + "operationId": "updateBulkAssetMetadata", + "parameters": [], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AssetMetadataBulkUpsertDto" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "items": { + "$ref": "#/components/schemas/AssetMetadataBulkResponseDto" + }, + "type": "array" + } + } + }, + "description": "" + } + }, + "security": [ + { + "bearer": [] + }, + { + "cookie": [] + }, + { + "api_key": [] + } + ], + "summary": "Upsert asset metadata", + "tags": [ + "Assets" + ], + "x-immich-history": [ + { + "version": "v1", + "state": "Added" + }, + { + "version": "v2.5.0", + "state": "Beta" + } + ], + "x-immich-permission": "asset.update", + "x-immich-state": "Beta" + } + }, + "/assets/statistics": { + "get": { + "description": "Retrieve various statistics about the assets owned by the authenticated user.", + "operationId": "getAssetStatistics", + "parameters": [ + { + "name": "isFavorite", + "required": false, + "in": "query", + "description": "Filter by favorite status", + "schema": { + "type": "boolean" + } + }, + { + "name": "isTrashed", + "required": false, + "in": "query", + "description": "Filter by trash status", + "schema": { + "type": "boolean" + } + }, + { + "name": "visibility", + "required": false, + "in": "query", + "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", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "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": { + "deprecated": true, + "description": "Update information of a specific asset.", + "operationId": "updateAsset", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "schema": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "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", + "Deprecated" + ], + "x-immich-history": [ + { + "version": "v1", + "state": "Added" + }, + { + "version": "v1", + "state": "Beta" + }, + { + "version": "v2", + "state": "Stable" + }, + { + "version": "v3", + "state": "Deprecated", + "replacementId": "updateAsset" + } + ], + "x-immich-permission": "asset.update", + "x-immich-state": "Deprecated" + } + }, + "/assets/{id}/edits": { + "delete": { + "description": "Removes all edit actions (crop, rotate, mirror) associated with the specified asset.", + "operationId": "removeAssetEdits", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "schema": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "type": "string" + } + } + ], + "responses": { + "204": { + "description": "" + } + }, + "security": [ + { + "bearer": [] + }, + { + "cookie": [] + }, + { + "api_key": [] + } + ], + "summary": "Remove edits from an existing asset", + "tags": [ + "Assets" + ], + "x-immich-history": [ + { + "version": "v2.5.0", + "state": "Added" + }, + { + "version": "v2.5.0", + "state": "Beta" + } + ], + "x-immich-permission": "asset.edit.delete", + "x-immich-state": "Beta" + }, + "get": { + "description": "Retrieve a series of edit actions (crop, rotate, mirror) associated with the specified asset.", + "operationId": "getAssetEdits", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "schema": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AssetEditsResponseDto" + } + } + }, + "description": "" + } + }, + "security": [ + { + "bearer": [] + }, + { + "cookie": [] + }, + { + "api_key": [] + } + ], + "summary": "Retrieve edits for an existing asset", + "tags": [ + "Assets" + ], + "x-immich-history": [ + { + "version": "v2.5.0", + "state": "Added" + }, + { + "version": "v2.5.0", + "state": "Beta" + } + ], + "x-immich-permission": "asset.edit.get", + "x-immich-state": "Beta" + }, + "put": { + "description": "Apply a series of edit actions (crop, rotate, mirror) to the specified asset.", + "operationId": "editAsset", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "schema": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AssetEditsCreateDto" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AssetEditsResponseDto" + } + } + }, + "description": "" + } + }, + "security": [ + { + "bearer": [] + }, + { + "cookie": [] + }, + { + "api_key": [] + } + ], + "summary": "Apply edits to an existing asset", + "tags": [ + "Assets" + ], + "x-immich-history": [ + { + "version": "v2.5.0", + "state": "Added" + }, + { + "version": "v2.5.0", + "state": "Beta" + } + ], + "x-immich-permission": "asset.edit.create", + "x-immich-state": "Beta" + } + }, + "/assets/{id}/metadata": { + "get": { + "description": "Retrieve all metadata key-value pairs associated with the specified asset.", + "operationId": "getAssetMetadata", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "schema": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "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", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AssetMetadataUpsertDto" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "items": { + "$ref": "#/components/schemas/AssetMetadataResponseDto" + }, + "type": "array" + } + } + }, + "description": "" + } + }, + "security": [ + { + "bearer": [] + }, + { + "cookie": [] + }, + { + "api_key": [] + } + ], + "summary": "Update asset metadata", + "tags": [ + "Assets" + ], + "x-immich-history": [ + { + "version": "v1", + "state": "Added" + }, + { + "version": "v1", + "state": "Beta" + }, + { + "version": "v2", + "state": "Stable" + } + ], + "x-immich-permission": "asset.update", + "x-immich-state": "Stable" + } + }, + "/assets/{id}/metadata/{key}": { + "delete": { + "description": "Delete a specific metadata key-value pair associated with the specified asset.", + "operationId": "deleteAssetMetadata", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "description": "Asset ID", + "schema": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "type": "string" + } + }, + { + "name": "key", + "required": true, + "in": "path", + "description": "Metadata key", + "schema": { + "type": "string" + } + } + ], + "responses": { + "204": { + "description": "" + } + }, + "security": [ + { + "bearer": [] + }, + { + "cookie": [] + }, + { + "api_key": [] + } + ], + "summary": "Delete asset metadata by key", + "tags": [ + "Assets" + ], + "x-immich-history": [ + { + "version": "v1", + "state": "Added" + }, + { + "version": "v1", + "state": "Beta" + }, + { + "version": "v2", + "state": "Stable" + } + ], + "x-immich-permission": "asset.update", + "x-immich-state": "Stable" + }, + "get": { + "description": "Retrieve the value of a specific metadata key associated with the specified asset.", + "operationId": "getAssetMetadataByKey", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "description": "Asset ID", + "schema": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "type": "string" + } + }, + { + "name": "key", + "required": true, + "in": "path", + "description": "Metadata key", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AssetMetadataResponseDto" + } + } + }, + "description": "" + } + }, + "security": [ + { + "bearer": [] + }, + { + "cookie": [] + }, + { + "api_key": [] + } + ], + "summary": "Retrieve asset metadata by key", + "tags": [ + "Assets" + ], + "x-immich-history": [ + { + "version": "v1", + "state": "Added" + }, + { + "version": "v1", + "state": "Beta" + }, + { + "version": "v2", + "state": "Stable" + } + ], + "x-immich-permission": "asset.read", + "x-immich-state": "Stable" + } + }, + "/assets/{id}/ocr": { + "get": { + "description": "Retrieve all OCR (Optical Character Recognition) data associated with the specified asset.", + "operationId": "getAssetOcr", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "schema": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "items": { + "$ref": "#/components/schemas/AssetOcrResponseDto" + }, + "type": "array" + } + } + }, + "description": "" + } + }, + "security": [ + { + "bearer": [] + }, + { + "cookie": [] + }, + { + "api_key": [] + } + ], + "summary": "Retrieve asset OCR data", + "tags": [ + "Assets" + ], + "x-immich-history": [ + { + "version": "v1", + "state": "Added" + }, + { + "version": "v1", + "state": "Beta" + }, + { + "version": "v2", + "state": "Stable" + } + ], + "x-immich-permission": "asset.read", + "x-immich-state": "Stable" + } + }, + "/assets/{id}/original": { + "get": { + "description": "Downloads the original file of the specified asset.", + "operationId": "downloadAsset", + "parameters": [ + { + "name": "edited", + "required": false, + "in": "query", + "description": "Return edited asset if available", + "schema": { + "default": false, + "type": "boolean" + } + }, + { + "name": "id", + "required": true, + "in": "path", + "schema": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "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" + } + }, + "/assets/{id}/thumbnail": { + "get": { + "description": "Retrieve the thumbnail image for the specified asset. Viewing the fullsize thumbnail might redirect to downloadAsset, which requires a different permission.", + "operationId": "viewAsset", + "parameters": [ + { + "name": "edited", + "required": false, + "in": "query", + "description": "Return edited asset if available", + "schema": { + "default": false, + "type": "boolean" + } + }, + { + "name": "id", + "required": true, + "in": "path", + "schema": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "type": "string" + } + }, + { + "name": "key", + "required": false, + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "size", + "required": false, + "in": "query", + "x-immich-history": [ + { + "version": "v3", + "state": "Updated", + "description": "Specifying 'original' is deprecated. Use the original endpoint directly instead" + } + ], + "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", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "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" + } + }, + "/assets/{id}/video/stream/main.m3u8": { + "get": { + "description": "Returns an HLS main playlist with all available variants for the asset.", + "operationId": "getMainPlaylist", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "schema": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "type": "string" + } + }, + { + "name": "key", + "required": false, + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "slug", + "required": false, + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/vnd.apple.mpegurl": { + "schema": { + "type": "string" + } + } + }, + "description": "" + } + }, + "security": [ + { + "bearer": [] + }, + { + "cookie": [] + }, + { + "api_key": [] + } + ], + "summary": "Get HLS main playlist", + "tags": [ + "Assets" + ], + "x-immich-history": [ + { + "version": "v3", + "state": "Added" + }, + { + "version": "v3", + "state": "Alpha" + } + ], + "x-immich-permission": "asset.view", + "x-immich-state": "Alpha" + } + }, + "/assets/{id}/video/stream/{sessionId}": { + "delete": { + "description": "Releases server resources for the streaming session.", + "operationId": "endSession", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "schema": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "type": "string" + } + }, + { + "name": "key", + "required": false, + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "sessionId", + "required": true, + "in": "path", + "schema": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "type": "string" + } + }, + { + "name": "slug", + "required": false, + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "204": { + "description": "" + } + }, + "security": [ + { + "bearer": [] + }, + { + "cookie": [] + }, + { + "api_key": [] + } + ], + "summary": "End HLS streaming session", + "tags": [ + "Assets" + ], + "x-immich-history": [ + { + "version": "v3", + "state": "Added" + }, + { + "version": "v3", + "state": "Alpha" + } + ], + "x-immich-permission": "asset.view", + "x-immich-state": "Alpha" + } + }, + "/assets/{id}/video/stream/{sessionId}/{variantIndex}/playlist.m3u8": { + "get": { + "description": "Returns an HLS media playlist for one variant of the streaming session.", + "operationId": "getMediaPlaylist", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "schema": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "type": "string" + } + }, + { + "name": "key", + "required": false, + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "sessionId", + "required": true, + "in": "path", + "schema": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "type": "string" + } + }, + { + "name": "slug", + "required": false, + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "variantIndex", + "required": true, + "in": "path", + "schema": { + "minimum": 0, + "maximum": 9007199254740991, + "type": "integer" + } + }, + { + "name": "x-immich-hls-pos", + "required": false, + "in": "header", + "schema": { + "minimum": 0, + "type": "number" + } + } + ], + "responses": { + "200": { + "content": { + "application/vnd.apple.mpegurl": { + "schema": { + "type": "string" + } + } + }, + "description": "" + } + }, + "security": [ + { + "bearer": [] + }, + { + "cookie": [] + }, + { + "api_key": [] + } + ], + "summary": "Get HLS media playlist", + "tags": [ + "Assets" + ], + "x-immich-history": [ + { + "version": "v3", + "state": "Added" + }, + { + "version": "v3", + "state": "Alpha" + } + ], + "x-immich-permission": "asset.view", + "x-immich-state": "Alpha" + } + }, + "/assets/{id}/video/stream/{sessionId}/{variantIndex}/{filename}": { + "get": { + "description": "Streams an HLS init segment (init.mp4) or media segment (seg_N.m4s).", + "operationId": "getSegment", + "parameters": [ + { + "name": "filename", + "required": true, + "in": "path", + "schema": { + "pattern": "^(init\\.mp4|seg_\\d+\\.m4s)$", + "type": "string" + } + }, + { + "name": "id", + "required": true, + "in": "path", + "schema": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "type": "string" + } + }, + { + "name": "key", + "required": false, + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "sessionId", + "required": true, + "in": "path", + "schema": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "type": "string" + } + }, + { + "name": "slug", + "required": false, + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "variantIndex", + "required": true, + "in": "path", + "schema": { + "minimum": 0, + "maximum": 9007199254740991, + "type": "integer" + } + }, + { + "name": "x-immich-hls-msn", + "required": false, + "in": "header", + "schema": { + "minimum": 0, + "maximum": 9007199254740991, + "type": "integer" + } + } + ], + "responses": { + "200": { + "content": { + "application/octet-stream": { + "schema": { + "format": "binary", + "type": "string" + } + } + }, + "description": "" + } + }, + "security": [ + { + "bearer": [] + }, + { + "cookie": [] + }, + { + "api_key": [] + } + ], + "summary": "Get HLS segment or init file", + "tags": [ + "Assets" + ], + "x-immich-history": [ + { + "version": "v3", + "state": "Added" + }, + { + "version": "v3", + "state": "Alpha" + } + ], + "x-immich-permission": "asset.view", + "x-immich-state": "Alpha" + } + }, + "/auth/admin-sign-up": { + "post": { + "description": "Create the first admin user in the system.", + "operationId": "signUpAdmin", + "parameters": [], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SignUpDto" + } + } + }, + "required": true + }, + "responses": { + "201": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserAdminResponseDto" + } + } + }, + "description": "" + } + }, + "summary": "Register admin", + "tags": [ + "Authentication" + ], + "x-immich-history": [ + { + "version": "v1", + "state": "Added" + }, + { + "version": "v1", + "state": "Beta" + }, + { + "version": "v2", + "state": "Stable" + } + ], + "x-immich-state": "Stable" + } + }, + "/auth/change-password": { + "post": { + "description": "Change the password of the current user.", + "operationId": "changePassword", + "parameters": [], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ChangePasswordDto" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserAdminResponseDto" + } + } + }, + "description": "" + } + }, + "security": [ + { + "bearer": [] + }, + { + "cookie": [] + }, + { + "api_key": [] + } + ], + "summary": "Change password", + "tags": [ + "Authentication" + ], + "x-immich-history": [ + { + "version": "v1", + "state": "Added" + }, + { + "version": "v1", + "state": "Beta" + }, + { + "version": "v2", + "state": "Stable" + } + ], + "x-immich-permission": "auth.changePassword", + "x-immich-state": "Stable" + } + }, + "/auth/login": { + "post": { + "description": "Login with username and password and receive a session token.", + "operationId": "login", + "parameters": [], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/LoginCredentialDto" + } + } + }, + "required": true + }, + "responses": { + "201": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/LoginResponseDto" + } + } + }, + "description": "" + } + }, + "summary": "Login", + "tags": [ + "Authentication" + ], + "x-immich-history": [ + { + "version": "v1", + "state": "Added" + }, + { + "version": "v1", + "state": "Beta" + }, + { + "version": "v2", + "state": "Stable" + } + ], + "x-immich-state": "Stable" + } + }, + "/auth/logout": { + "post": { + "description": "Logout the current user and invalidate the session token.", + "operationId": "logout", + "parameters": [], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/LogoutResponseDto" + } + } + }, + "description": "" + } + }, + "security": [ + { + "bearer": [] + }, + { + "cookie": [] + }, + { + "api_key": [] + } + ], + "summary": "Logout", + "tags": [ + "Authentication" + ], + "x-immich-history": [ + { + "version": "v1", + "state": "Added" + }, + { + "version": "v1", + "state": "Beta" + }, + { + "version": "v2", + "state": "Stable" + } + ], + "x-immich-state": "Stable" + } + }, + "/auth/pin-code": { + "delete": { + "description": "Reset the pin code for the current user by providing the account password", + "operationId": "resetPinCode", + "parameters": [], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PinCodeResetDto" + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "" + } + }, + "security": [ + { + "bearer": [] + }, + { + "cookie": [] + }, + { + "api_key": [] + } + ], + "summary": "Reset pin code", + "tags": [ + "Authentication" + ], + "x-immich-history": [ + { + "version": "v1", + "state": "Added" + }, + { + "version": "v1", + "state": "Beta" + }, + { + "version": "v2", + "state": "Stable" + } + ], + "x-immich-permission": "pinCode.delete", + "x-immich-state": "Stable" + }, + "post": { + "description": "Setup a new pin code for the current user.", + "operationId": "setupPinCode", + "parameters": [], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PinCodeSetupDto" + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "" + } + }, + "security": [ + { + "bearer": [] + }, + { + "cookie": [] + }, + { + "api_key": [] + } + ], + "summary": "Setup pin code", + "tags": [ + "Authentication" + ], + "x-immich-history": [ + { + "version": "v1", + "state": "Added" + }, + { + "version": "v1", + "state": "Beta" + }, + { + "version": "v2", + "state": "Stable" + } + ], + "x-immich-permission": "pinCode.create", + "x-immich-state": "Stable" + }, + "put": { + "description": "Change the pin code for the current user.", + "operationId": "changePinCode", + "parameters": [], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PinCodeChangeDto" + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "" + } + }, + "security": [ + { + "bearer": [] + }, + { + "cookie": [] + }, + { + "api_key": [] + } + ], + "summary": "Change pin code", + "tags": [ + "Authentication" + ], + "x-immich-history": [ + { + "version": "v1", + "state": "Added" + }, + { + "version": "v1", + "state": "Beta" + }, + { + "version": "v2", + "state": "Stable" + } + ], + "x-immich-permission": "pinCode.update", + "x-immich-state": "Stable" + } + }, + "/auth/session/lock": { + "post": { + "description": "Remove elevated access to locked assets from the current session.", + "operationId": "lockAuthSession", + "parameters": [], + "responses": { + "204": { + "description": "" + } + }, + "security": [ + { + "bearer": [] + }, + { + "cookie": [] + }, + { + "api_key": [] + } + ], + "summary": "Lock auth session", + "tags": [ + "Authentication" + ], + "x-immich-history": [ + { + "version": "v1", + "state": "Added" + }, + { + "version": "v1", + "state": "Beta" + }, + { + "version": "v2", + "state": "Stable" + } + ], + "x-immich-state": "Stable" + } + }, + "/auth/session/unlock": { + "post": { + "description": "Temporarily grant the session elevated access to locked assets by providing the correct PIN code.", + "operationId": "unlockAuthSession", + "parameters": [], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SessionUnlockDto" + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "" + } + }, + "security": [ + { + "bearer": [] + }, + { + "cookie": [] + }, + { + "api_key": [] + } + ], + "summary": "Unlock auth session", + "tags": [ + "Authentication" + ], + "x-immich-history": [ + { + "version": "v1", + "state": "Added" + }, + { + "version": "v1", + "state": "Beta" + }, + { + "version": "v2", + "state": "Stable" + } + ], + "x-immich-state": "Stable" + } + }, + "/auth/status": { + "get": { + "description": "Get information about the current session, including whether the user has a password, and if the session can access locked assets.", + "operationId": "getAuthStatus", + "parameters": [], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AuthStatusResponseDto" + } + } + }, + "description": "" + } + }, + "security": [ + { + "bearer": [] + }, + { + "cookie": [] + }, + { + "api_key": [] + } + ], + "summary": "Retrieve auth status", + "tags": [ + "Authentication" + ], + "x-immich-history": [ + { + "version": "v1", + "state": "Added" + }, + { + "version": "v1", + "state": "Beta" + }, + { + "version": "v2", + "state": "Stable" + } + ], + "x-immich-state": "Stable" + } + }, + "/auth/validateToken": { + "post": { + "description": "Validate the current authorization method is still valid.", + "operationId": "validateAccessToken", + "parameters": [], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ValidateAccessTokenResponseDto" + } + } + }, + "description": "" + } + }, + "security": [ + { + "bearer": [] + }, + { + "cookie": [] + }, + { + "api_key": [] + } + ], + "summary": "Validate access token", + "tags": [ + "Authentication" + ], + "x-immich-history": [ + { + "version": "v1", + "state": "Added" + }, + { + "version": "v1", + "state": "Beta" + }, + { + "version": "v2", + "state": "Stable" + } + ], + "x-immich-state": "Stable" + } + }, + "/download/archive": { + "post": { + "description": "Download a ZIP archive containing the specified assets. The assets must have been previously requested via the \"getDownloadInfo\" endpoint.", + "operationId": "downloadArchive", + "parameters": [ + { + "name": "key", + "required": false, + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "slug", + "required": false, + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DownloadArchiveDto" + } + } + }, + "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/resolve": { + "post": { + "description": "Resolve duplicate groups by synchronizing metadata across assets and deleting/trashing duplicates.", + "operationId": "resolveDuplicates", + "parameters": [], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DuplicateResolveDto" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "items": { + "$ref": "#/components/schemas/BulkIdResponseDto" + }, + "type": "array" + } + } + }, + "description": "" + } + }, + "security": [ + { + "bearer": [] + }, + { + "cookie": [] + }, + { + "api_key": [] + } + ], + "summary": "Resolve duplicate groups", + "tags": [ + "Duplicates" + ], + "x-immich-history": [ + { + "version": "v3.0.0", + "state": "Added" + }, + { + "version": "v3.0.0", + "state": "Alpha" + } + ], + "x-immich-permission": "duplicate.delete", + "x-immich-state": "Alpha" + } + }, + "/duplicates/{id}": { + "delete": { + "description": "Dismiss a duplicate group by its ID, unlinking all assets in the group without deleting them.", + "operationId": "deleteDuplicate", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "schema": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "type": "string" + } + } + ], + "responses": { + "204": { + "description": "" + } + }, + "security": [ + { + "bearer": [] + }, + { + "cookie": [] + }, + { + "api_key": [] + } + ], + "summary": "Dismiss a duplicate group", + "tags": [ + "Duplicates" + ], + "x-immich-history": [ + { + "version": "v1", + "state": "Added" + }, + { + "version": "v1", + "state": "Beta" + }, + { + "version": "v2", + "state": "Stable" + } + ], + "x-immich-permission": "duplicate.delete", + "x-immich-state": "Stable" + } + }, + "/faces": { + "get": { + "description": "Retrieve all faces belonging to an asset.", + "operationId": "getFaces", + "parameters": [ + { + "name": "id", + "required": true, + "in": "query", + "description": "Face ID", + "schema": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "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", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "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", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "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", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "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", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "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": { + "deprecated": true, + "description": "Update an existing external library.", + "operationId": "updateLibrary", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "schema": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "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", + "Deprecated" + ], + "x-immich-admin-only": true, + "x-immich-history": [ + { + "version": "v1", + "state": "Added" + }, + { + "version": "v1", + "state": "Beta" + }, + { + "version": "v2", + "state": "Stable" + }, + { + "version": "v3", + "state": "Deprecated", + "replacementId": "updateLibrary" + } + ], + "x-immich-permission": "library.update", + "x-immich-state": "Deprecated" + } + }, + "/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", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "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", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "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", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ValidateLibraryDto" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ValidateLibraryResponseDto" + } + } + }, + "description": "" + } + }, + "security": [ + { + "bearer": [] + }, + { + "cookie": [] + }, + { + "api_key": [] + } + ], + "summary": "Validate library settings", + "tags": [ + "Libraries" + ], + "x-immich-admin-only": true, + "x-immich-history": [ + { + "version": "v1", + "state": "Added" + }, + { + "version": "v1", + "state": "Beta" + }, + { + "version": "v2", + "state": "Stable" + } + ], + "x-immich-state": "Stable" + } + }, + "/map/markers": { + "get": { + "description": "Retrieve a list of latitude and longitude coordinates for every asset with location data.", + "operationId": "getMapMarkers", + "parameters": [ + { + "name": "fileCreatedAfter", + "required": false, + "in": "query", + "description": "Filter assets created after this date", + "schema": { + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$", + "example": "2024-01-01T00:00:00.000Z", + "type": "string" + } + }, + { + "name": "fileCreatedBefore", + "required": false, + "in": "query", + "description": "Filter assets created before this date", + "schema": { + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$", + "example": "2024-01-01T00:00:00.000Z", + "type": "string" + } + }, + { + "name": "isArchived", + "required": false, + "in": "query", + "description": "Filter by archived status", + "schema": { + "type": "boolean" + } + }, + { + "name": "isFavorite", + "required": false, + "in": "query", + "description": "Filter by favorite status", + "schema": { + "type": "boolean" + } + }, + { + "name": "withPartners", + "required": false, + "in": "query", + "description": "Include partner assets", + "schema": { + "type": "boolean" + } + }, + { + "name": "withSharedAlbums", + "required": false, + "in": "query", + "description": "Include shared album assets", + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "items": { + "$ref": "#/components/schemas/MapMarkerResponseDto" + }, + "type": "array" + } + } + }, + "description": "" + } + }, + "security": [ + { + "bearer": [] + }, + { + "cookie": [] + }, + { + "api_key": [] + } + ], + "summary": "Retrieve map markers", + "tags": [ + "Map" + ], + "x-immich-history": [ + { + "version": "v1", + "state": "Added" + }, + { + "version": "v1", + "state": "Beta" + }, + { + "version": "v2", + "state": "Stable" + } + ], + "x-immich-permission": "map.read", + "x-immich-state": "Stable" + } + }, + "/map/reverse-geocode": { + "get": { + "description": "Retrieve location information (e.g., city, country) for given latitude and longitude coordinates.", + "operationId": "reverseGeocode", + "parameters": [ + { + "name": "lat", + "required": true, + "in": "query", + "description": "Latitude (-90 to 90)", + "schema": { + "format": "double", + "type": "number" + } + }, + { + "name": "lon", + "required": true, + "in": "query", + "description": "Longitude (-180 to 180)", + "schema": { + "format": "double", + "type": "number" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "items": { + "$ref": "#/components/schemas/MapReverseGeocodeResponseDto" + }, + "type": "array" + } + } + }, + "description": "" + } + }, + "security": [ + { + "bearer": [] + }, + { + "cookie": [] + }, + { + "api_key": [] + } + ], + "summary": "Reverse geocode coordinates", + "tags": [ + "Map" + ], + "x-immich-history": [ + { + "version": "v1", + "state": "Added" + }, + { + "version": "v1", + "state": "Beta" + }, + { + "version": "v2", + "state": "Stable" + } + ], + "x-immich-permission": "map.search", + "x-immich-state": "Stable" + } + }, + "/memories": { + "get": { + "description": "Retrieve a list of memories. Memories are sorted descending by creation date by default, although they can also be sorted in ascending order, or randomly.", + "operationId": "searchMemories", + "parameters": [ + { + "name": "for", + "required": false, + "in": "query", + "description": "Filter by date", + "schema": { + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$", + "example": "2024-01-01T00:00:00.000Z", + "type": "string" + } + }, + { + "name": "isSaved", + "required": false, + "in": "query", + "description": "Filter by saved status", + "schema": { + "type": "boolean" + } + }, + { + "name": "isTrashed", + "required": false, + "in": "query", + "description": "Include trashed memories", + "schema": { + "type": "boolean" + } + }, + { + "name": "order", + "required": false, + "in": "query", + "schema": { + "$ref": "#/components/schemas/MemorySearchOrder" + } + }, + { + "name": "size", + "required": false, + "in": "query", + "description": "Number of memories to return", + "schema": { + "minimum": 1, + "maximum": 9007199254740991, + "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", + "description": "Filter by date", + "schema": { + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$", + "example": "2024-01-01T00:00:00.000Z", + "type": "string" + } + }, + { + "name": "isSaved", + "required": false, + "in": "query", + "description": "Filter by saved status", + "schema": { + "type": "boolean" + } + }, + { + "name": "isTrashed", + "required": false, + "in": "query", + "description": "Include trashed memories", + "schema": { + "type": "boolean" + } + }, + { + "name": "order", + "required": false, + "in": "query", + "schema": { + "$ref": "#/components/schemas/MemorySearchOrder" + } + }, + { + "name": "size", + "required": false, + "in": "query", + "description": "Number of memories to return", + "schema": { + "minimum": 1, + "maximum": 9007199254740991, + "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", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "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", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "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": { + "deprecated": true, + "description": "Update an existing memory by its ID.", + "operationId": "updateMemory", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "schema": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "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", + "Deprecated" + ], + "x-immich-history": [ + { + "version": "v1", + "state": "Added" + }, + { + "version": "v1", + "state": "Beta" + }, + { + "version": "v2", + "state": "Stable" + }, + { + "version": "v3", + "state": "Deprecated", + "replacementId": "updateMemory" + } + ], + "x-immich-permission": "memory.update", + "x-immich-state": "Deprecated" + } + }, + "/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", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "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", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BulkIdsDto" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "items": { + "$ref": "#/components/schemas/BulkIdResponseDto" + }, + "type": "array" + } + } + }, + "description": "" + } + }, + "security": [ + { + "bearer": [] + }, + { + "cookie": [] + }, + { + "api_key": [] + } + ], + "summary": "Add assets to a memory", + "tags": [ + "Memories" + ], + "x-immich-history": [ + { + "version": "v1", + "state": "Added" + }, + { + "version": "v1", + "state": "Beta" + }, + { + "version": "v2", + "state": "Stable" + } + ], + "x-immich-permission": "memoryAsset.create", + "x-immich-state": "Stable" + } + }, + "/notifications": { + "delete": { + "description": "Delete a list of notifications at once.", + "operationId": "deleteNotifications", + "parameters": [], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotificationDeleteAllDto" + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "" + } + }, + "security": [ + { + "bearer": [] + }, + { + "cookie": [] + }, + { + "api_key": [] + } + ], + "summary": "Delete notifications", + "tags": [ + "Notifications" + ], + "x-immich-history": [ + { + "version": "v1", + "state": "Added" + }, + { + "version": "v1", + "state": "Beta" + }, + { + "version": "v2", + "state": "Stable" + } + ], + "x-immich-permission": "notification.delete", + "x-immich-state": "Stable" + }, + "get": { + "description": "Retrieve a list of notifications.", + "operationId": "getNotifications", + "parameters": [ + { + "name": "id", + "required": false, + "in": "query", + "description": "Filter by notification ID", + "schema": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "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", + "description": "Filter by unread status", + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "items": { + "$ref": "#/components/schemas/NotificationDto" + }, + "type": "array" + } + } + }, + "description": "" + } + }, + "security": [ + { + "bearer": [] + }, + { + "cookie": [] + }, + { + "api_key": [] + } + ], + "summary": "Retrieve notifications", + "tags": [ + "Notifications" + ], + "x-immich-history": [ + { + "version": "v1", + "state": "Added" + }, + { + "version": "v1", + "state": "Beta" + }, + { + "version": "v2", + "state": "Stable" + } + ], + "x-immich-permission": "notification.read", + "x-immich-state": "Stable" + }, + "put": { + "description": "Update a list of notifications. Allows to bulk-set the read status of notifications.", + "operationId": "updateNotifications", + "parameters": [], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotificationUpdateAllDto" + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "" + } + }, + "security": [ + { + "bearer": [] + }, + { + "cookie": [] + }, + { + "api_key": [] + } + ], + "summary": "Update notifications", + "tags": [ + "Notifications" + ], + "x-immich-history": [ + { + "version": "v1", + "state": "Added" + }, + { + "version": "v1", + "state": "Beta" + }, + { + "version": "v2", + "state": "Stable" + } + ], + "x-immich-permission": "notification.update", + "x-immich-state": "Stable" + } + }, + "/notifications/{id}": { + "delete": { + "description": "Delete a specific notification.", + "operationId": "deleteNotification", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "schema": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "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", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "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", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "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/backchannel-logout": { + "post": { + "description": "Logout the OAuth account and invalidate the session specified by the sid claim or all sessions if the sid claim is not present.", + "operationId": "logoutOAuth", + "parameters": [], + "requestBody": { + "content": { + "application/x-www-form-urlencoded": { + "schema": { + "$ref": "#/components/schemas/OAuthBackchannelLogoutDto" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "" + } + }, + "summary": "Backchannel OAuth logout", + "tags": [ + "Authentication" + ], + "x-immich-history": [ + { + "version": "v2", + "state": "Added" + } + ] + } + }, + "/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", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "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", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "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", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PartnerUpdateDto" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PartnerResponseDto" + } + } + }, + "description": "" + } + }, + "security": [ + { + "bearer": [] + }, + { + "cookie": [] + }, + { + "api_key": [] + } + ], + "summary": "Update a partner", + "tags": [ + "Partners" + ], + "x-immich-history": [ + { + "version": "v1", + "state": "Added" + }, + { + "version": "v1", + "state": "Beta" + }, + { + "version": "v2", + "state": "Stable" + } + ], + "x-immich-permission": "partner.update", + "x-immich-state": "Stable" + } + }, + "/people": { + "delete": { + "description": "Bulk delete a list of people at once.", + "operationId": "deletePeople", + "parameters": [], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BulkIdsDto" + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "" + } + }, + "security": [ + { + "bearer": [] + }, + { + "cookie": [] + }, + { + "api_key": [] + } + ], + "summary": "Delete people", + "tags": [ + "People" + ], + "x-immich-history": [ + { + "version": "v1", + "state": "Added" + }, + { + "version": "v1", + "state": "Beta" + }, + { + "version": "v2", + "state": "Stable" + } + ], + "x-immich-permission": "person.delete", + "x-immich-state": "Stable" + }, + "get": { + "description": "Retrieve a list of all people.", + "operationId": "getAllPeople", + "parameters": [ + { + "name": "closestAssetId", + "required": false, + "in": "query", + "description": "Closest asset ID for similarity search", + "schema": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "type": "string" + } + }, + { + "name": "closestPersonId", + "required": false, + "in": "query", + "description": "Closest person ID for similarity search", + "schema": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "type": "string" + } + }, + { + "name": "page", + "required": false, + "in": "query", + "description": "Page number for pagination", + "schema": { + "minimum": 1, + "maximum": 9007199254740991, + "default": 1, + "type": "integer" + } + }, + { + "name": "size", + "required": false, + "in": "query", + "description": "Number of items per page", + "schema": { + "minimum": 1, + "maximum": 1000, + "default": 500, + "type": "integer" + } + }, + { + "name": "withHidden", + "required": false, + "in": "query", + "description": "Include hidden people", + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PeopleResponseDto" + } + } + }, + "description": "" + } + }, + "security": [ + { + "bearer": [] + }, + { + "cookie": [] + }, + { + "api_key": [] + } + ], + "summary": "Get all people", + "tags": [ + "People" + ], + "x-immich-history": [ + { + "version": "v1", + "state": "Added" + }, + { + "version": "v1", + "state": "Beta" + }, + { + "version": "v2", + "state": "Stable" + } + ], + "x-immich-permission": "person.read", + "x-immich-state": "Stable" + }, + "post": { + "description": "Create a new person that can have multiple faces assigned to them.", + "operationId": "createPerson", + "parameters": [], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PersonCreateDto" + } + } + }, + "required": true + }, + "responses": { + "201": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PersonResponseDto" + } + } + }, + "description": "" + } + }, + "security": [ + { + "bearer": [] + }, + { + "cookie": [] + }, + { + "api_key": [] + } + ], + "summary": "Create a person", + "tags": [ + "People" + ], + "x-immich-history": [ + { + "version": "v1", + "state": "Added" + }, + { + "version": "v1", + "state": "Beta" + }, + { + "version": "v2", + "state": "Stable" + } + ], + "x-immich-permission": "person.create", + "x-immich-state": "Stable" + }, + "put": { + "description": "Bulk update multiple people at once.", + "operationId": "updatePeople", + "parameters": [], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PeopleUpdateDto" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "items": { + "$ref": "#/components/schemas/BulkIdResponseDto" + }, + "type": "array" + } + } + }, + "description": "" + } + }, + "security": [ + { + "bearer": [] + }, + { + "cookie": [] + }, + { + "api_key": [] + } + ], + "summary": "Update people", + "tags": [ + "People" + ], + "x-immich-history": [ + { + "version": "v1", + "state": "Added" + }, + { + "version": "v1", + "state": "Beta" + }, + { + "version": "v2", + "state": "Stable" + } + ], + "x-immich-permission": "person.update", + "x-immich-state": "Stable" + } + }, + "/people/{id}": { + "delete": { + "description": "Delete an individual person.", + "operationId": "deletePerson", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "schema": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "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", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "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": { + "deprecated": true, + "description": "Update an individual person.", + "operationId": "updatePerson", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "schema": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "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", + "Deprecated" + ], + "x-immich-history": [ + { + "version": "v1", + "state": "Added" + }, + { + "version": "v1", + "state": "Beta" + }, + { + "version": "v2", + "state": "Stable" + }, + { + "version": "v3", + "state": "Deprecated", + "replacementId": "updatePerson" + } + ], + "x-immich-permission": "person.update", + "x-immich-state": "Deprecated" + } + }, + "/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", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "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", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "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", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "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", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "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": "searchPlugins", + "parameters": [ + { + "name": "description", + "required": false, + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "enabled", + "required": false, + "in": "query", + "description": "Whether the plugin is enabled", + "schema": { + "type": "boolean" + } + }, + { + "name": "id", + "required": false, + "in": "query", + "description": "Plugin ID", + "schema": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "type": "string" + } + }, + { + "name": "name", + "required": false, + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "title", + "required": false, + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "version", + "required": false, + "in": "query", + "schema": { + "type": "string" + } + } + ], + "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": "v3.0.0", + "state": "Added" + } + ], + "x-immich-permission": "plugin.read" + } + }, + "/plugins/methods": { + "get": { + "description": "Retrieve a list of plugin methods", + "operationId": "searchPluginMethods", + "parameters": [ + { + "name": "description", + "required": false, + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "enabled", + "required": false, + "in": "query", + "description": "Whether the plugin method is enabled", + "schema": { + "type": "boolean" + } + }, + { + "name": "id", + "required": false, + "in": "query", + "description": "Plugin method ID", + "schema": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "type": "string" + } + }, + { + "name": "name", + "required": false, + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "pluginName", + "required": false, + "in": "query", + "description": "Plugin name", + "schema": { + "type": "string" + } + }, + { + "name": "pluginVersion", + "required": false, + "in": "query", + "description": "Plugin version", + "schema": { + "type": "string" + } + }, + { + "name": "title", + "required": false, + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "trigger", + "required": false, + "in": "query", + "description": "Workflow trigger", + "schema": { + "$ref": "#/components/schemas/WorkflowTrigger" + } + }, + { + "name": "type", + "required": false, + "in": "query", + "description": "Workflow types", + "schema": { + "$ref": "#/components/schemas/WorkflowType" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "items": { + "$ref": "#/components/schemas/PluginMethodResponseDto" + }, + "type": "array" + } + } + }, + "description": "" + } + }, + "security": [ + { + "bearer": [] + }, + { + "cookie": [] + }, + { + "api_key": [] + } + ], + "summary": "Retrieve plugin methods", + "tags": [ + "Plugins" + ], + "x-immich-history": [ + { + "version": "v3.0.0", + "state": "Added" + } + ], + "x-immich-permission": "plugin.read" + } + }, + "/plugins/templates": { + "get": { + "description": "Retrieve workflow templates provided by installed plugins", + "operationId": "searchPluginTemplates", + "parameters": [], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "items": { + "$ref": "#/components/schemas/PluginTemplateResponseDto" + }, + "type": "array" + } + } + }, + "description": "" + } + }, + "security": [ + { + "bearer": [] + }, + { + "cookie": [] + }, + { + "api_key": [] + } + ], + "summary": "Retrieve workflow templates", + "tags": [ + "Plugins" + ], + "x-immich-history": [ + { + "version": "v3.0.0", + "state": "Added" + } + ], + "x-immich-permission": "plugin.read" + } + }, + "/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", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "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": "v3.0.0", + "state": "Added" + } + ], + "x-immich-permission": "plugin.read" + } + }, + "/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", + "description": "Filter jobs by status", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/QueueJobStatus" + } + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "items": { + "$ref": "#/components/schemas/QueueJobResponseDto" + }, + "type": "array" + } + } + }, + "description": "" + } + }, + "security": [ + { + "bearer": [] + }, + { + "cookie": [] + }, + { + "api_key": [] + } + ], + "summary": "Retrieve queue jobs", + "tags": [ + "Queues" + ], + "x-immich-admin-only": true, + "x-immich-history": [ + { + "version": "v2.4.0", + "state": "Added" + }, + { + "version": "v2.4.0", + "state": "Alpha" + } + ], + "x-immich-permission": "queueJob.read", + "x-immich-state": "Alpha" + } + }, + "/search/cities": { + "get": { + "description": "Retrieve a list of assets with each asset belonging to a different city. This endpoint is used on the places pages to show a single thumbnail for each city the user has assets in.", + "operationId": "getAssetsByCity", + "parameters": [], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "items": { + "$ref": "#/components/schemas/AssetResponseDto" + }, + "type": "array" + } + } + }, + "description": "" + } + }, + "security": [ + { + "bearer": [] + }, + { + "cookie": [] + }, + { + "api_key": [] + } + ], + "summary": "Retrieve assets by city", + "tags": [ + "Search" + ], + "x-immich-history": [ + { + "version": "v1", + "state": "Added" + }, + { + "version": "v1", + "state": "Beta" + }, + { + "version": "v2", + "state": "Stable" + } + ], + "x-immich-permission": "asset.read", + "x-immich-state": "Stable" + } + }, + "/search/explore": { + "get": { + "description": "Retrieve data for the explore section, such as popular people and places.", + "operationId": "getExploreData", + "parameters": [], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "items": { + "$ref": "#/components/schemas/SearchExploreResponseDto" + }, + "type": "array" + } + } + }, + "description": "" + } + }, + "security": [ + { + "bearer": [] + }, + { + "cookie": [] + }, + { + "api_key": [] + } + ], + "summary": "Retrieve explore data", + "tags": [ + "Search" + ], + "x-immich-history": [ + { + "version": "v1", + "state": "Added" + }, + { + "version": "v1", + "state": "Beta" + }, + { + "version": "v2", + "state": "Stable" + } + ], + "x-immich-permission": "asset.read", + "x-immich-state": "Stable" + } + }, + "/search/large-assets": { + "post": { + "description": "Search for assets that are considered large based on specified criteria.", + "operationId": "searchLargeAssets", + "parameters": [ + { + "name": "albumIds", + "required": false, + "in": "query", + "description": "Filter by album IDs", + "schema": { + "type": "array", + "items": { + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$" + } + } + }, + { + "name": "city", + "required": false, + "in": "query", + "description": "Filter by city name", + "schema": { + "type": "string", + "nullable": true + } + }, + { + "name": "country", + "required": false, + "in": "query", + "description": "Filter by country name", + "schema": { + "type": "string", + "nullable": true + } + }, + { + "name": "createdAfter", + "required": false, + "in": "query", + "description": "Filter by creation date (after)", + "schema": { + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$", + "example": "2024-01-01T00:00:00.000Z", + "type": "string" + } + }, + { + "name": "createdBefore", + "required": false, + "in": "query", + "description": "Filter by creation date (before)", + "schema": { + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$", + "example": "2024-01-01T00:00:00.000Z", + "type": "string" + } + }, + { + "name": "isEncoded", + "required": false, + "in": "query", + "description": "Filter by encoded status", + "schema": { + "type": "boolean" + } + }, + { + "name": "isFavorite", + "required": false, + "in": "query", + "description": "Filter by favorite status", + "schema": { + "type": "boolean" + } + }, + { + "name": "isMotion", + "required": false, + "in": "query", + "description": "Filter by motion photo status", + "schema": { + "type": "boolean" + } + }, + { + "name": "isNotInAlbum", + "required": false, + "in": "query", + "description": "Filter assets not in any album", + "schema": { + "type": "boolean" + } + }, + { + "name": "isOffline", + "required": false, + "in": "query", + "description": "Filter by offline status", + "schema": { + "type": "boolean" + } + }, + { + "name": "lensModel", + "required": false, + "in": "query", + "description": "Filter by lens model", + "schema": { + "type": "string", + "nullable": true + } + }, + { + "name": "libraryId", + "required": false, + "in": "query", + "description": "Library ID to filter by", + "schema": { + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "nullable": true + } + }, + { + "name": "make", + "required": false, + "in": "query", + "description": "Filter by camera make", + "schema": { + "type": "string", + "nullable": true + } + }, + { + "name": "minFileSize", + "required": false, + "in": "query", + "description": "Minimum file size in bytes", + "schema": { + "minimum": 0, + "maximum": 9007199254740991, + "type": "integer" + } + }, + { + "name": "model", + "required": false, + "in": "query", + "description": "Filter by camera model", + "schema": { + "type": "string", + "nullable": true + } + }, + { + "name": "ocr", + "required": false, + "in": "query", + "description": "Filter by OCR text content", + "schema": { + "type": "string" + } + }, + { + "name": "personIds", + "required": false, + "in": "query", + "description": "Filter by person IDs", + "schema": { + "type": "array", + "items": { + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$" + } + } + }, + { + "name": "rating", + "required": false, + "in": "query", + "description": "Filter by rating [1-5], or null for unrated", + "x-immich-history": [ + { + "version": "v1", + "state": "Added" + }, + { + "version": "v2", + "state": "Stable" + }, + { + "version": "v2.6.0", + "state": "Updated", + "description": "Using -1 as a rating is deprecated and will be removed in the next major version." + }, + { + "version": "v3", + "state": "Updated", + "description": "Using -1 as a rating is no longer valid." + } + ], + "x-immich-state": "Stable", + "schema": { + "type": "integer", + "minimum": 1, + "maximum": 5, + "nullable": true + } + }, + { + "name": "size", + "required": false, + "in": "query", + "description": "Number of results to return", + "schema": { + "minimum": 1, + "maximum": 1000, + "type": "integer" + } + }, + { + "name": "state", + "required": false, + "in": "query", + "description": "Filter by state/province name", + "schema": { + "type": "string", + "nullable": true + } + }, + { + "name": "tagIds", + "required": false, + "in": "query", + "description": "Filter by tag IDs", + "schema": { + "type": "array", + "items": { + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$" + }, + "nullable": true + } + }, + { + "name": "takenAfter", + "required": false, + "in": "query", + "description": "Filter by taken date (after)", + "schema": { + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$", + "example": "2024-01-01T00:00:00.000Z", + "type": "string" + } + }, + { + "name": "takenBefore", + "required": false, + "in": "query", + "description": "Filter by taken date (before)", + "schema": { + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$", + "example": "2024-01-01T00:00:00.000Z", + "type": "string" + } + }, + { + "name": "trashedAfter", + "required": false, + "in": "query", + "description": "Filter by trash date (after)", + "schema": { + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$", + "example": "2024-01-01T00:00:00.000Z", + "type": "string" + } + }, + { + "name": "trashedBefore", + "required": false, + "in": "query", + "description": "Filter by trash date (before)", + "schema": { + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$", + "example": "2024-01-01T00:00:00.000Z", + "type": "string" + } + }, + { + "name": "type", + "required": false, + "in": "query", + "schema": { + "$ref": "#/components/schemas/AssetTypeEnum" + } + }, + { + "name": "updatedAfter", + "required": false, + "in": "query", + "description": "Filter by update date (after)", + "schema": { + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$", + "example": "2024-01-01T00:00:00.000Z", + "type": "string" + } + }, + { + "name": "updatedBefore", + "required": false, + "in": "query", + "description": "Filter by update date (before)", + "schema": { + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$", + "example": "2024-01-01T00:00:00.000Z", + "type": "string" + } + }, + { + "name": "visibility", + "required": false, + "in": "query", + "schema": { + "$ref": "#/components/schemas/AssetVisibility" + } + }, + { + "name": "withDeleted", + "required": false, + "in": "query", + "description": "Include deleted assets", + "schema": { + "type": "boolean" + } + }, + { + "name": "withExif", + "required": false, + "in": "query", + "description": "Include EXIF data in response", + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "items": { + "$ref": "#/components/schemas/AssetResponseDto" + }, + "type": "array" + } + } + }, + "description": "" + } + }, + "security": [ + { + "bearer": [] + }, + { + "cookie": [] + }, + { + "api_key": [] + } + ], + "summary": "Search large assets", + "tags": [ + "Search" + ], + "x-immich-history": [ + { + "version": "v1", + "state": "Added" + }, + { + "version": "v1", + "state": "Beta" + }, + { + "version": "v2", + "state": "Stable" + } + ], + "x-immich-permission": "asset.read", + "x-immich-state": "Stable" + } + }, + "/search/metadata": { + "post": { + "description": "Search for assets based on various metadata criteria.", + "operationId": "searchAssets", + "parameters": [], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MetadataSearchDto" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SearchResponseDto" + } + } + }, + "description": "" + } + }, + "security": [ + { + "bearer": [] + }, + { + "cookie": [] + }, + { + "api_key": [] + } + ], + "summary": "Search assets by metadata", + "tags": [ + "Search" + ], + "x-immich-history": [ + { + "version": "v1", + "state": "Added" + }, + { + "version": "v1", + "state": "Beta" + }, + { + "version": "v2", + "state": "Stable" + } + ], + "x-immich-permission": "asset.read", + "x-immich-state": "Stable" + } + }, + "/search/person": { + "get": { + "description": "Search for people by name.", + "operationId": "searchPerson", + "parameters": [ + { + "name": "name", + "required": true, + "in": "query", + "description": "Person name to search for", + "schema": { + "type": "string" + } + }, + { + "name": "withHidden", + "required": false, + "in": "query", + "description": "Include hidden people", + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "items": { + "$ref": "#/components/schemas/PersonResponseDto" + }, + "type": "array" + } + } + }, + "description": "" + } + }, + "security": [ + { + "bearer": [] + }, + { + "cookie": [] + }, + { + "api_key": [] + } + ], + "summary": "Search people", + "tags": [ + "Search" + ], + "x-immich-history": [ + { + "version": "v1", + "state": "Added" + }, + { + "version": "v1", + "state": "Beta" + }, + { + "version": "v2", + "state": "Stable" + } + ], + "x-immich-permission": "person.read", + "x-immich-state": "Stable" + } + }, + "/search/places": { + "get": { + "description": "Search for places by name.", + "operationId": "searchPlaces", + "parameters": [ + { + "name": "name", + "required": true, + "in": "query", + "description": "Place name to search for", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "items": { + "$ref": "#/components/schemas/PlacesResponseDto" + }, + "type": "array" + } + } + }, + "description": "" + } + }, + "security": [ + { + "bearer": [] + }, + { + "cookie": [] + }, + { + "api_key": [] + } + ], + "summary": "Search places", + "tags": [ + "Search" + ], + "x-immich-history": [ + { + "version": "v1", + "state": "Added" + }, + { + "version": "v1", + "state": "Beta" + }, + { + "version": "v2", + "state": "Stable" + } + ], + "x-immich-permission": "asset.read", + "x-immich-state": "Stable" + } + }, + "/search/random": { + "post": { + "description": "Retrieve a random selection of assets based on the provided criteria.", + "operationId": "searchRandom", + "parameters": [], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RandomSearchDto" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "items": { + "$ref": "#/components/schemas/AssetResponseDto" + }, + "type": "array" + } + } + }, + "description": "" + } + }, + "security": [ + { + "bearer": [] + }, + { + "cookie": [] + }, + { + "api_key": [] + } + ], + "summary": "Search random assets", + "tags": [ + "Search" + ], + "x-immich-history": [ + { + "version": "v1", + "state": "Added" + }, + { + "version": "v1", + "state": "Beta" + }, + { + "version": "v2", + "state": "Stable" + } + ], + "x-immich-permission": "asset.read", + "x-immich-state": "Stable" + } + }, + "/search/smart": { + "post": { + "description": "Perform a smart search for assets by using machine learning vectors to determine relevance.", + "operationId": "searchSmart", + "parameters": [], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SmartSearchDto" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SearchResponseDto" + } + } + }, + "description": "" + } + }, + "security": [ + { + "bearer": [] + }, + { + "cookie": [] + }, + { + "api_key": [] + } + ], + "summary": "Smart asset search", + "tags": [ + "Search" + ], + "x-immich-history": [ + { + "version": "v1", + "state": "Added" + }, + { + "version": "v1", + "state": "Beta" + }, + { + "version": "v2", + "state": "Stable" + } + ], + "x-immich-permission": "asset.read", + "x-immich-state": "Stable" + } + }, + "/search/statistics": { + "post": { + "description": "Retrieve statistical data about assets based on search criteria, such as the total matching count.", + "operationId": "searchAssetStatistics", + "parameters": [], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StatisticsSearchDto" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SearchStatisticsResponseDto" + } + } + }, + "description": "" + } + }, + "security": [ + { + "bearer": [] + }, + { + "cookie": [] + }, + { + "api_key": [] + } + ], + "summary": "Search asset statistics", + "tags": [ + "Search" + ], + "x-immich-history": [ + { + "version": "v1", + "state": "Added" + }, + { + "version": "v1", + "state": "Beta" + }, + { + "version": "v2", + "state": "Stable" + } + ], + "x-immich-permission": "asset.statistics", + "x-immich-state": "Stable" + } + }, + "/search/suggestions": { + "get": { + "description": "Retrieve search suggestions based on partial input. This endpoint is used for typeahead search features.", + "operationId": "getSearchSuggestions", + "parameters": [ + { + "name": "country", + "required": false, + "in": "query", + "description": "Filter by country", + "schema": { + "type": "string" + } + }, + { + "name": "includeNull", + "required": false, + "in": "query", + "description": "Include null values in suggestions", + "x-immich-history": [ + { + "version": "v1.111.0", + "state": "Added" + }, + { + "version": "v2", + "state": "Stable" + } + ], + "x-immich-state": "Stable", + "schema": { + "type": "boolean" + } + }, + { + "name": "lensModel", + "required": false, + "in": "query", + "description": "Filter by lens model", + "schema": { + "type": "string" + } + }, + { + "name": "make", + "required": false, + "in": "query", + "description": "Filter by camera make", + "schema": { + "type": "string" + } + }, + { + "name": "model", + "required": false, + "in": "query", + "description": "Filter by camera model", + "schema": { + "type": "string" + } + }, + { + "name": "state", + "required": false, + "in": "query", + "description": "Filter by state/province", + "schema": { + "type": "string" + } + }, + { + "name": "type", + "required": true, + "in": "query", + "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/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", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "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": { + "deprecated": true, + "description": "Update a specific session identified by id.", + "operationId": "updateSession", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "schema": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "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", + "Deprecated" + ], + "x-immich-history": [ + { + "version": "v1", + "state": "Added" + }, + { + "version": "v1", + "state": "Beta" + }, + { + "version": "v2", + "state": "Stable" + }, + { + "version": "v3", + "state": "Deprecated", + "replacementId": "updateSession" + } + ], + "x-immich-permission": "session.update", + "x-immich-state": "Deprecated" + } + }, + "/sessions/{id}/lock": { + "post": { + "description": "Lock a specific session by id.", + "operationId": "lockSession", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "schema": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "type": "string" + } + } + ], + "responses": { + "204": { + "description": "" + } + }, + "security": [ + { + "bearer": [] + }, + { + "cookie": [] + }, + { + "api_key": [] + } + ], + "summary": "Lock a session", + "tags": [ + "Sessions" + ], + "x-immich-history": [ + { + "version": "v1", + "state": "Added" + }, + { + "version": "v1", + "state": "Beta" + }, + { + "version": "v2", + "state": "Stable" + } + ], + "x-immich-permission": "session.lock", + "x-immich-state": "Stable" + } + }, + "/shared-links": { + "get": { + "description": "Retrieve a list of all shared links.", + "operationId": "getAllSharedLinks", + "parameters": [ + { + "name": "albumId", + "required": false, + "in": "query", + "description": "Filter by album ID", + "schema": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "type": "string" + } + }, + { + "name": "id", + "required": false, + "in": "query", + "description": "Filter by shared link ID", + "x-immich-history": [ + { + "version": "v2.5.0", + "state": "Added" + } + ], + "schema": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "items": { + "$ref": "#/components/schemas/SharedLinkResponseDto" + }, + "type": "array" + } + } + }, + "description": "" + } + }, + "security": [ + { + "bearer": [] + }, + { + "cookie": [] + }, + { + "api_key": [] + } + ], + "summary": "Retrieve all shared links", + "tags": [ + "Shared links" + ], + "x-immich-history": [ + { + "version": "v1", + "state": "Added" + }, + { + "version": "v1", + "state": "Beta" + }, + { + "version": "v2", + "state": "Stable" + } + ], + "x-immich-permission": "sharedLink.read", + "x-immich-state": "Stable" + }, + "post": { + "description": "Create a new shared link.", + "operationId": "createSharedLink", + "parameters": [], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SharedLinkCreateDto" + } + } + }, + "required": true + }, + "responses": { + "201": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SharedLinkResponseDto" + } + } + }, + "description": "" + } + }, + "security": [ + { + "bearer": [] + }, + { + "cookie": [] + }, + { + "api_key": [] + } + ], + "summary": "Create a shared link", + "tags": [ + "Shared links" + ], + "x-immich-history": [ + { + "version": "v1", + "state": "Added" + }, + { + "version": "v1", + "state": "Beta" + }, + { + "version": "v2", + "state": "Stable" + } + ], + "x-immich-permission": "sharedLink.create", + "x-immich-state": "Stable" + } + }, + "/shared-links/login": { + "post": { + "description": "Login to a password protected shared link", + "operationId": "sharedLinkLogin", + "parameters": [ + { + "name": "key", + "required": false, + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "slug", + "required": false, + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SharedLinkLoginDto" + } + } + }, + "required": true + }, + "responses": { + "201": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SharedLinkResponseDto" + } + } + }, + "description": "" + } + }, + "security": [ + { + "bearer": [] + }, + { + "cookie": [] + }, + { + "api_key": [] + } + ], + "summary": "Shared link login", + "tags": [ + "Shared links" + ], + "x-immich-history": [ + { + "version": "v2.6.0", + "state": "Added" + }, + { + "version": "v2.6.0", + "state": "Beta" + } + ], + "x-immich-state": "Beta" + } + }, + "/shared-links/me": { + "get": { + "description": "Retrieve the current shared link associated with authentication method.", + "operationId": "getMySharedLink", + "parameters": [ + { + "name": "key", + "required": false, + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "slug", + "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", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "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", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "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", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "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", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "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-permission": "sharedLink.update", + "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", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "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-permission": "sharedLink.update", + "x-immich-state": "Stable" + } + }, + "/stacks": { + "delete": { + "description": "Delete multiple stacks by providing a list of stack IDs.", + "operationId": "deleteStacks", + "parameters": [], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BulkIdsDto" + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "" + } + }, + "security": [ + { + "bearer": [] + }, + { + "cookie": [] + }, + { + "api_key": [] + } + ], + "summary": "Delete stacks", + "tags": [ + "Stacks" + ], + "x-immich-history": [ + { + "version": "v1", + "state": "Added" + }, + { + "version": "v1", + "state": "Beta" + }, + { + "version": "v2", + "state": "Stable" + } + ], + "x-immich-permission": "stack.delete", + "x-immich-state": "Stable" + }, + "get": { + "description": "Retrieve a list of stacks.", + "operationId": "searchStacks", + "parameters": [ + { + "name": "primaryAssetId", + "required": false, + "in": "query", + "description": "Filter by primary asset ID", + "schema": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "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", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "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", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "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": { + "deprecated": true, + "description": "Update an existing stack by its ID.", + "operationId": "updateStack", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "schema": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "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", + "Deprecated" + ], + "x-immich-history": [ + { + "version": "v1", + "state": "Added" + }, + { + "version": "v1", + "state": "Beta" + }, + { + "version": "v2", + "state": "Stable" + }, + { + "version": "v3", + "state": "Deprecated", + "replacementId": "updateStack" + } + ], + "x-immich-permission": "stack.update", + "x-immich-state": "Deprecated" + } + }, + "/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", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "type": "string" + } + }, + { + "name": "id", + "required": true, + "in": "path", + "schema": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "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/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", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "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", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "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": { + "deprecated": true, + "description": "Update an existing tag identified by its ID.", + "operationId": "updateTag", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "schema": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "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", + "Deprecated" + ], + "x-immich-history": [ + { + "version": "v1", + "state": "Added" + }, + { + "version": "v1", + "state": "Beta" + }, + { + "version": "v2", + "state": "Stable" + }, + { + "version": "v3", + "state": "Deprecated", + "replacementId": "updateTag" + } + ], + "x-immich-permission": "tag.update", + "x-immich-state": "Deprecated" + } + }, + "/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", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "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", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "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", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "type": "string" + } + }, + { + "name": "bbox", + "required": false, + "in": "query", + "description": "Bounding box coordinates as west,south,east,north (WGS84)", + "schema": { + "example": "11.075683,49.416711,11.117589,49.454875", + "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": "orderBy", + "required": false, + "in": "query", + "description": "Date to group and order assets by (takenAt for date taken, createdAt for date added to Immich)", + "schema": { + "$ref": "#/components/schemas/AssetOrderBy" + } + }, + { + "name": "personId", + "required": false, + "in": "query", + "description": "Filter assets containing a specific person (face recognition)", + "schema": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "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", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "type": "string" + } + }, + { + "name": "timeBucket", + "required": true, + "in": "query", + "description": "Time bucket identifier in YYYY-MM-DD format", + "schema": { + "example": "2024-01-01", + "type": "string" + } + }, + { + "name": "userId", + "required": false, + "in": "query", + "description": "Filter assets by specific user ID", + "schema": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "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", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "type": "string" + } + }, + { + "name": "bbox", + "required": false, + "in": "query", + "description": "Bounding box coordinates as west,south,east,north (WGS84)", + "schema": { + "example": "11.075683,49.416711,11.117589,49.454875", + "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": "orderBy", + "required": false, + "in": "query", + "description": "Date to group and order assets by (takenAt for date taken, createdAt for date added to Immich)", + "schema": { + "$ref": "#/components/schemas/AssetOrderBy" + } + }, + { + "name": "personId", + "required": false, + "in": "query", + "description": "Filter assets containing a specific person (face recognition)", + "schema": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "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", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "type": "string" + } + }, + { + "name": "userId", + "required": false, + "in": "query", + "description": "Filter assets by specific user ID", + "schema": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "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" + } + }, + "/upload": { + "options": { + "operationId": "getUploadOptions", + "parameters": [], + "responses": { + "204": { + "description": "" + } + }, + "tags": [ + "Upload" + ] + }, + "post": { + "operationId": "startUpload", + "parameters": [ + { + "name": "content-length", + "in": "header", + "description": "Non-negative size of the request body in bytes.", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "key", + "required": false, + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "repr-digest", + "in": "header", + "description": "RFC 9651 structured dictionary containing an `sha` (bytesequence) checksum used to detect duplicate files and validate data integrity.", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "slug", + "required": false, + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "upload-complete", + "in": "header", + "description": "Structured boolean indicating whether this request completes the file. Use Upload-Incomplete instead for version <= 3.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "upload-draft-interop-version", + "in": "header", + "description": "Indicates the version of the RUFH protocol supported by the client.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "x-immich-asset-data", + "in": "header", + "description": "RFC 9651 structured dictionary containing asset metadata with the following keys:\n- device-asset-id (string, required): Unique device asset identifier\n- device-id (string, required): Device identifier\n- file-created-at (string/date, required): ISO 8601 date string or Unix timestamp\n- file-modified-at (string/date, required): ISO 8601 date string or Unix timestamp\n- filename (string, required): Original filename\n- is-favorite (boolean, optional): Favorite status\n- live-photo-video-id (string, optional): Live photo ID for assets from iOS devices\n- icloud-id (string, optional): iCloud identifier for assets from iOS devices", + "required": true, + "schema": { + "type": "string", + "example": "device-asset-id=\"abc123\", device-id=\"phone1\", filename=\"photo.jpg\", file-created-at=\"2024-01-01T00:00:00Z\", file-modified-at=\"2024-01-01T00:00:00Z\"" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UploadOkDto" + } + } + }, + "description": "" + } + }, + "security": [ + { + "bearer": [] + }, + { + "cookie": [] + }, + { + "api_key": [] + } + ], + "tags": [ + "Upload" + ], + "x-immich-permission": "asset.upload" + } + }, + "/upload/{id}": { + "delete": { + "operationId": "cancelUpload", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "schema": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "type": "string" + } + }, + { + "name": "key", + "required": false, + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "slug", + "required": false, + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "" + } + }, + "security": [ + { + "bearer": [] + }, + { + "cookie": [] + }, + { + "api_key": [] + } + ], + "tags": [ + "Upload" + ], + "x-immich-permission": "asset.upload" + }, + "head": { + "operationId": "getUploadStatus", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "schema": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "type": "string" + } + }, + { + "name": "key", + "required": false, + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "slug", + "required": false, + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "upload-draft-interop-version", + "in": "header", + "description": "Indicates the version of the RUFH protocol supported by the client.", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "" + } + }, + "security": [ + { + "bearer": [] + }, + { + "cookie": [] + }, + { + "api_key": [] + } + ], + "tags": [ + "Upload" + ], + "x-immich-permission": "asset.upload" + }, + "patch": { + "operationId": "resumeUpload", + "parameters": [ + { + "name": "content-length", + "in": "header", + "description": "Non-negative size of the request body in bytes.", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "id", + "required": true, + "in": "path", + "schema": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "type": "string" + } + }, + { + "name": "key", + "required": false, + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "slug", + "required": false, + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "upload-complete", + "in": "header", + "description": "Structured boolean indicating whether this request completes the file. Use Upload-Incomplete instead for version <= 3.", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "upload-draft-interop-version", + "in": "header", + "description": "Indicates the version of the RUFH protocol supported by the client.", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "upload-offset", + "in": "header", + "description": "Non-negative byte offset indicating the starting position of the data in the request body within the entire file.", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UploadOkDto" + } + } + }, + "description": "" + } + }, + "security": [ + { + "bearer": [] + }, + { + "cookie": [] + }, + { + "api_key": [] + } + ], + "tags": [ + "Upload" + ], + "x-immich-permission": "asset.upload" + } + }, + "/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": { + "deprecated": true, + "description": "Update the current user making the 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", + "Deprecated" + ], + "x-immich-history": [ + { + "version": "v1", + "state": "Added" + }, + { + "version": "v1", + "state": "Beta" + }, + { + "version": "v2", + "state": "Stable" + }, + { + "version": "v3", + "state": "Deprecated", + "replacementId": "updateMyUser" + } + ], + "x-immich-permission": "user.update", + "x-immich-state": "Deprecated" + } + }, + "/users/me/calendar-heatmap": { + "get": { + "description": "Retrieve activity counts for a specified period, in a calendar heatmap format.", + "operationId": "getMyCalendarHeatmap", + "parameters": [ + { + "name": "from", + "required": false, + "in": "query", + "description": "Start date in UTC", + "schema": { + "format": "date", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$", + "example": "2024-01-01", + "type": "string" + } + }, + { + "name": "to", + "required": false, + "in": "query", + "description": "End date in UTC", + "schema": { + "format": "date", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$", + "example": "2024-01-01", + "type": "string" + } + }, + { + "name": "type", + "required": false, + "in": "query", + "schema": { + "default": "Upload", + "$ref": "#/components/schemas/CalendarHeatmapType" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CalendarHeatmapResponseDto" + } + } + }, + "description": "" + } + }, + "security": [ + { + "bearer": [] + }, + { + "cookie": [] + }, + { + "api_key": [] + } + ], + "summary": "Retrieve calendar heatmap activity", + "tags": [ + "Users" + ], + "x-immich-history": [ + { + "version": "v3", + "state": "Added" + }, + { + "version": "v3", + "state": "Stable" + } + ], + "x-immich-permission": "user.read", + "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": { + "deprecated": true, + "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", + "Deprecated" + ], + "x-immich-history": [ + { + "version": "v1", + "state": "Added" + }, + { + "version": "v1", + "state": "Beta" + }, + { + "version": "v2", + "state": "Stable" + }, + { + "version": "v3", + "state": "Deprecated", + "replacementId": "updateMyPreferences" + } + ], + "x-immich-permission": "userPreference.update", + "x-immich-state": "Deprecated" + } + }, + "/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", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "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", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/octet-stream": { + "schema": { + "format": "binary", + "type": "string" + } + } + }, + "description": "" + } + }, + "security": [ + { + "bearer": [] + }, + { + "cookie": [] + }, + { + "api_key": [] + } + ], + "summary": "Retrieve user profile image", + "tags": [ + "Users" + ], + "x-immich-history": [ + { + "version": "v1", + "state": "Added" + }, + { + "version": "v1", + "state": "Beta" + }, + { + "version": "v2", + "state": "Stable" + } + ], + "x-immich-permission": "userProfileImage.read", + "x-immich-state": "Stable" + } + }, + "/view/folder": { + "get": { + "description": "Retrieve assets that are children of a specific folder.", + "operationId": "getAssetsByOriginalPath", + "parameters": [ + { + "name": "path", + "required": true, + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "items": { + "$ref": "#/components/schemas/AssetResponseDto" + }, + "type": "array" + } + } + }, + "description": "" + } + }, + "security": [ + { + "bearer": [] + }, + { + "cookie": [] + }, + { + "api_key": [] + } + ], + "summary": "Retrieve assets by original path", + "tags": [ + "Views" + ], + "x-immich-history": [ + { + "version": "v1", + "state": "Added" + }, + { + "version": "v1", + "state": "Beta" + }, + { + "version": "v2", + "state": "Stable" + } + ], + "x-immich-permission": "folder.read", + "x-immich-state": "Stable" + } + }, + "/view/folder/unique-paths": { + "get": { + "description": "Retrieve a list of unique folder paths from asset original paths.", + "operationId": "getUniqueOriginalPaths", + "parameters": [], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "items": { + "type": "string" + }, + "type": "array" + } + } + }, + "description": "" + } + }, + "security": [ + { + "bearer": [] + }, + { + "cookie": [] + }, + { + "api_key": [] + } + ], + "summary": "Retrieve unique paths", + "tags": [ + "Views" + ], + "x-immich-history": [ + { + "version": "v1", + "state": "Added" + }, + { + "version": "v1", + "state": "Beta" + }, + { + "version": "v2", + "state": "Stable" + } + ], + "x-immich-permission": "folder.read", + "x-immich-state": "Stable" + } + }, + "/workflows": { + "get": { + "description": "Retrieve a list of workflows available to the authenticated user.", + "operationId": "searchWorkflows", + "parameters": [ + { + "name": "description", + "required": false, + "in": "query", + "description": "Workflow description", + "schema": { + "type": "string" + } + }, + { + "name": "enabled", + "required": false, + "in": "query", + "description": "Workflow enabled", + "schema": { + "type": "boolean" + } + }, + { + "name": "id", + "required": false, + "in": "query", + "description": "Workflow ID", + "schema": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "type": "string" + } + }, + { + "name": "name", + "required": false, + "in": "query", + "description": "Workflow name", + "schema": { + "type": "string" + } + }, + { + "name": "trigger", + "required": false, + "in": "query", + "description": "Workflow trigger type", + "schema": { + "$ref": "#/components/schemas/WorkflowTrigger" + } + } + ], + "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": "v3.0.0", + "state": "Added" + } + ], + "x-immich-permission": "workflow.read" + }, + "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": "v3.0.0", + "state": "Added" + } + ], + "x-immich-permission": "workflow.create" + } + }, + "/workflows/triggers": { + "get": { + "description": "Retrieve a list of all available workflow triggers.", + "operationId": "getWorkflowTriggers", + "parameters": [], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "items": { + "$ref": "#/components/schemas/WorkflowTriggerResponseDto" + }, + "type": "array" + } + } + }, + "description": "" + } + }, + "security": [ + { + "bearer": [] + }, + { + "cookie": [] + }, + { + "api_key": [] + } + ], + "summary": "List all workflow triggers", + "tags": [ + "Workflows" + ], + "x-immich-history": [ + { + "version": "v3.0.0", + "state": "Added" + } + ] + } + }, + "/workflows/{id}": { + "delete": { + "description": "Delete a workflow by its ID.", + "operationId": "deleteWorkflow", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "schema": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "type": "string" + } + } + ], + "responses": { + "204": { + "description": "" + } + }, + "security": [ + { + "bearer": [] + }, + { + "cookie": [] + }, + { + "api_key": [] + } + ], + "summary": "Delete a workflow", + "tags": [ + "Workflows" + ], + "x-immich-history": [ + { + "version": "v3.0.0", + "state": "Added" + } + ], + "x-immich-permission": "workflow.delete" + }, + "get": { + "description": "Retrieve information about a specific workflow by its ID.", + "operationId": "getWorkflow", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "schema": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "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": "v3.0.0", + "state": "Added" + } + ], + "x-immich-permission": "workflow.read" + }, + "put": { + "deprecated": true, + "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", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "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", + "Deprecated" + ], + "x-immich-history": [ + { + "version": "v3.0.0", + "state": "Added" + }, + { + "version": "v3", + "state": "Deprecated", + "replacementId": "updateWorkflow" + } + ], + "x-immich-permission": "workflow.update", + "x-immich-state": "Deprecated" + } + }, + "/workflows/{id}/share": { + "get": { + "description": "Retrieve a workflow details without ids, default values, etc.", + "operationId": "getWorkflowForShare", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "schema": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WorkflowShareResponseDto" + } + } + }, + "description": "" + } + }, + "security": [ + { + "bearer": [] + }, + { + "cookie": [] + }, + { + "api_key": [] + } + ], + "summary": "Retrieve a workflow", + "tags": [ + "Workflows" + ], + "x-immich-history": [ + { + "version": "v3.0.0", + "state": "Added" + } + ], + "x-immich-permission": "workflow.read" + } + } + }, + "info": { + "title": "Immich", + "description": "Immich API", + "version": "3.0.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": "Database Backups (admin)", + "description": "Manage backups of the Immich database." + }, + { + "name": "Deprecated", + "description": "Deprecated endpoints that are planned for removal in the next major release." + }, + { + "name": "Download", + "description": "Endpoints for downloading assets or collections of assets." + }, + { + "name": "Duplicates", + "description": "Endpoints for managing and identifying duplicate assets." + }, + { + "name": "Faces", + "description": "A face is a detected human face within an asset, which can be associated with a person. Faces are normally detected via machine learning, but can also be created manually." + }, + { + "name": "Integrity (admin)", + "description": "Endpoints for viewing and managing integrity reports." + }, + { + "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": { "ActivityCreateDto": { "description": "Activity create", @@ -24,7 +16726,10 @@ "$ref": "#/components/schemas/ReactionType" } }, - "required": ["albumId", "type"], + "required": [ + "albumId", + "type" + ], "type": "object" }, "ActivityResponseDto": { @@ -61,7 +16766,13 @@ "$ref": "#/components/schemas/UserResponseDto" } }, - "required": ["assetId", "createdAt", "id", "type", "user"], + "required": [ + "assetId", + "createdAt", + "id", + "type", + "user" + ], "type": "object" }, "ActivityStatisticsResponseDto": { @@ -79,7 +16790,10 @@ "type": "integer" } }, - "required": ["comments", "likes"], + "required": [ + "comments", + "likes" + ], "type": "object" }, "AddUsersDto": { @@ -93,7 +16807,9 @@ "type": "array" } }, - "required": ["albumUsers"], + "required": [ + "albumUsers" + ], "type": "object" }, "AdminOnboardingUpdateDto": { @@ -103,7 +16819,9 @@ "type": "boolean" } }, - "required": ["isOnboarded"], + "required": [ + "isOnboarded" + ], "type": "object" }, "AlbumResponseDto": { @@ -226,7 +16944,11 @@ "type": "integer" } }, - "required": ["notShared", "owned", "shared"], + "required": [ + "notShared", + "owned", + "shared" + ], "type": "object" }, "AlbumUserAddDto": { @@ -243,7 +16965,9 @@ "type": "string" } }, - "required": ["userId"], + "required": [ + "userId" + ], "type": "object" }, "AlbumUserCreateDto": { @@ -258,7 +16982,10 @@ "type": "string" } }, - "required": ["role", "userId"], + "required": [ + "role", + "userId" + ], "type": "object" }, "AlbumUserResponseDto": { @@ -270,12 +16997,19 @@ "$ref": "#/components/schemas/UserResponseDto" } }, - "required": ["role", "user"], + "required": [ + "role", + "user" + ], "type": "object" }, "AlbumUserRole": { "description": "Album user role", - "enum": ["editor", "owner", "viewer"], + "enum": [ + "editor", + "owner", + "viewer" + ], "type": "string" }, "AlbumsAddAssetsDto": { @@ -299,7 +17033,10 @@ "type": "array" } }, - "required": ["albumIds", "assetIds"], + "required": [ + "albumIds", + "assetIds" + ], "type": "object" }, "AlbumsAddAssetsResponseDto": { @@ -312,7 +17049,9 @@ "type": "boolean" } }, - "required": ["success"], + "required": [ + "success" + ], "type": "object" }, "AlbumsResponse": { @@ -321,7 +17060,9 @@ "$ref": "#/components/schemas/AssetOrder" } }, - "required": ["defaultAssetOrder"], + "required": [ + "defaultAssetOrder" + ], "type": "object" }, "AlbumsUpdate": { @@ -348,7 +17089,9 @@ "type": "array" } }, - "required": ["permissions"], + "required": [ + "permissions" + ], "type": "object" }, "ApiKeyCreateResponseDto": { @@ -361,7 +17104,10 @@ "type": "string" } }, - "required": ["apiKey", "secret"], + "required": [ + "apiKey", + "secret" + ], "type": "object" }, "ApiKeyResponseDto": { @@ -398,7 +17144,13 @@ "type": "string" } }, - "required": ["createdAt", "id", "name", "permissions", "updatedAt"], + "required": [ + "createdAt", + "id", + "name", + "permissions", + "updatedAt" + ], "type": "object" }, "ApiKeyUpdateDto": { @@ -434,7 +17186,9 @@ "type": "array" } }, - "required": ["ids"], + "required": [ + "ids" + ], "type": "object" }, "AssetBulkUpdateDto": { @@ -491,17 +17245,17 @@ "type": "integer", "x-immich-history": [ { - "state": "Added", - "version": "v1" + "version": "v1", + "state": "Added" }, { - "state": "Stable", - "version": "v2" + "version": "v2", + "state": "Stable" }, { - "description": "Using 0 as a rating is no longer valid.", + "version": "v3", "state": "Updated", - "version": "v3" + "description": "Using 0 as a rating is no longer valid." } ], "x-immich-state": "Stable" @@ -514,7 +17268,9 @@ "$ref": "#/components/schemas/AssetVisibility" } }, - "required": ["ids"], + "required": [ + "ids" + ], "type": "object" }, "AssetBulkUploadCheckDto": { @@ -527,7 +17283,9 @@ "type": "array" } }, - "required": ["assets"], + "required": [ + "assets" + ], "type": "object" }, "AssetBulkUploadCheckItem": { @@ -541,7 +17299,10 @@ "type": "string" } }, - "required": ["checksum", "id"], + "required": [ + "checksum", + "id" + ], "type": "object" }, "AssetBulkUploadCheckResponseDto": { @@ -554,7 +17315,9 @@ "type": "array" } }, - "required": ["results"], + "required": [ + "results" + ], "type": "object" }, "AssetBulkUploadCheckResult": { @@ -580,7 +17343,10 @@ "$ref": "#/components/schemas/AssetRejectReason" } }, - "required": ["action", "id"], + "required": [ + "action", + "id" + ], "type": "object" }, "AssetCopyDto": { @@ -623,12 +17389,19 @@ "type": "string" } }, - "required": ["sourceId", "targetId"], + "required": [ + "sourceId", + "targetId" + ], "type": "object" }, "AssetEditAction": { "description": "Type of edit action to perform", - "enum": ["crop", "rotate", "mirror"], + "enum": [ + "crop", + "rotate", + "mirror" + ], "type": "string" }, "AssetEditActionItemDto": { @@ -651,7 +17424,10 @@ "description": "List of edit actions to apply (crop, rotate, or mirror)" } }, - "required": ["action", "parameters"], + "required": [ + "action", + "parameters" + ], "type": "object" }, "AssetEditActionItemResponseDto": { @@ -680,7 +17456,11 @@ "description": "List of edit actions to apply (crop, rotate, or mirror)" } }, - "required": ["action", "id", "parameters"], + "required": [ + "action", + "id", + "parameters" + ], "type": "object" }, "AssetEditsCreateDto": { @@ -694,7 +17474,9 @@ "type": "array" } }, - "required": ["edits"], + "required": [ + "edits" + ], "type": "object" }, "AssetEditsResponseDto": { @@ -713,7 +17495,10 @@ "type": "array" } }, - "required": ["assetId", "edits"], + "required": [ + "assetId", + "edits" + ], "type": "object" }, "AssetFaceCreateDto": { @@ -786,7 +17571,9 @@ "type": "boolean" } }, - "required": ["force"], + "required": [ + "force" + ], "type": "object" }, "AssetFaceResponseDto": { @@ -868,7 +17655,9 @@ "type": "array" } }, - "required": ["data"], + "required": [ + "data" + ], "type": "object" }, "AssetFaceUpdateItem": { @@ -886,12 +17675,19 @@ "type": "string" } }, - "required": ["assetId", "personId"], + "required": [ + "assetId", + "personId" + ], "type": "object" }, "AssetIdErrorReason": { "description": "Error reason if failed", - "enum": ["duplicate", "no_permission", "not_found"], + "enum": [ + "duplicate", + "no_permission", + "not_found" + ], "type": "string" }, "AssetIdsDto": { @@ -906,7 +17702,9 @@ "type": "array" } }, - "required": ["assetIds"], + "required": [ + "assetIds" + ], "type": "object" }, "AssetIdsResponseDto": { @@ -925,7 +17723,10 @@ "type": "boolean" } }, - "required": ["assetId", "success"], + "required": [ + "assetId", + "success" + ], "type": "object" }, "AssetJobName": { @@ -953,7 +17754,10 @@ "$ref": "#/components/schemas/AssetJobName" } }, - "required": ["assetIds", "name"], + "required": [ + "assetIds", + "name" + ], "type": "object" }, "AssetMediaCreateDto": { @@ -1013,7 +17817,11 @@ "$ref": "#/components/schemas/AssetVisibility" } }, - "required": ["assetData", "fileCreatedAt", "fileModifiedAt"], + "required": [ + "assetData", + "fileCreatedAt", + "fileModifiedAt" + ], "type": "object" }, "AssetMediaResponseDto": { @@ -1028,17 +17836,28 @@ "$ref": "#/components/schemas/AssetMediaStatus" } }, - "required": ["id", "status"], + "required": [ + "id", + "status" + ], "type": "object" }, "AssetMediaSize": { "description": "Asset media size", - "enum": ["original", "fullsize", "preview", "thumbnail"], + "enum": [ + "original", + "fullsize", + "preview", + "thumbnail" + ], "type": "string" }, "AssetMediaStatus": { "description": "Upload status", - "enum": ["created", "duplicate"], + "enum": [ + "created", + "duplicate" + ], "type": "string" }, "AssetMetadataBulkDeleteDto": { @@ -1051,7 +17870,9 @@ "type": "array" } }, - "required": ["items"], + "required": [ + "items" + ], "type": "object" }, "AssetMetadataBulkDeleteItemDto": { @@ -1067,7 +17888,10 @@ "type": "string" } }, - "required": ["assetId", "key"], + "required": [ + "assetId", + "key" + ], "type": "object" }, "AssetMetadataBulkResponseDto": { @@ -1095,7 +17919,12 @@ "type": "object" } }, - "required": ["assetId", "key", "updatedAt", "value"], + "required": [ + "assetId", + "key", + "updatedAt", + "value" + ], "type": "object" }, "AssetMetadataBulkUpsertDto": { @@ -1108,7 +17937,9 @@ "type": "array" } }, - "required": ["items"], + "required": [ + "items" + ], "type": "object" }, "AssetMetadataBulkUpsertItemDto": { @@ -1129,7 +17960,11 @@ "type": "object" } }, - "required": ["assetId", "key", "value"], + "required": [ + "assetId", + "key", + "value" + ], "type": "object" }, "AssetMetadataResponseDto": { @@ -1151,7 +17986,11 @@ "type": "object" } }, - "required": ["key", "updatedAt", "value"], + "required": [ + "key", + "updatedAt", + "value" + ], "type": "object" }, "AssetMetadataUpsertDto": { @@ -1164,7 +18003,9 @@ "type": "array" } }, - "required": ["items"], + "required": [ + "items" + ], "type": "object" }, "AssetMetadataUpsertItemDto": { @@ -1179,7 +18020,10 @@ "type": "object" } }, - "required": ["key", "value"], + "required": [ + "key", + "value" + ], "type": "object" }, "AssetOcrResponseDto": { @@ -1268,17 +18112,26 @@ }, "AssetOrder": { "description": "Asset sort order", - "enum": ["asc", "desc"], + "enum": [ + "asc", + "desc" + ], "type": "string" }, "AssetOrderBy": { "description": "Asset sorting property", - "enum": ["takenAt", "createdAt"], + "enum": [ + "takenAt", + "createdAt" + ], "type": "string" }, "AssetRejectReason": { "description": "Rejection reason if rejected", - "enum": ["duplicate", "unsupported-format"], + "enum": [ + "duplicate", + "unsupported-format" + ], "type": "string" }, "AssetResponseDto": { @@ -1345,12 +18198,12 @@ "type": "boolean", "x-immich-history": [ { - "state": "Added", - "version": "v2.5.0" + "version": "v2.5.0", + "state": "Added" }, { - "state": "Beta", - "version": "v2.5.0" + "version": "v2.5.0", + "state": "Beta" } ], "x-immich-state": "Beta" @@ -1375,12 +18228,12 @@ "type": "string", "x-immich-history": [ { - "state": "Added", - "version": "v1" + "version": "v1", + "state": "Added" }, { - "state": "Deprecated", - "version": "v1" + "version": "v1", + "state": "Deprecated" } ], "x-immich-state": "Deprecated" @@ -1427,12 +18280,12 @@ "type": "boolean", "x-immich-history": [ { - "state": "Added", - "version": "v1" + "version": "v1", + "state": "Added" }, { - "state": "Deprecated", - "version": "v1.113.0" + "version": "v1.113.0", + "state": "Deprecated" } ], "x-immich-state": "Deprecated" @@ -1522,7 +18375,11 @@ "type": "string" } }, - "required": ["assetCount", "id", "primaryAssetId"], + "required": [ + "assetCount", + "id", + "primaryAssetId" + ], "type": "object" }, "AssetStatsResponseDto": { @@ -1546,27 +18403,49 @@ "type": "integer" } }, - "required": ["images", "total", "videos"], + "required": [ + "images", + "total", + "videos" + ], "type": "object" }, "AssetTypeEnum": { "description": "Asset type", - "enum": ["IMAGE", "VIDEO", "AUDIO", "OTHER"], + "enum": [ + "IMAGE", + "VIDEO", + "AUDIO", + "OTHER" + ], "type": "string" }, "AssetUploadAction": { "description": "Upload action", - "enum": ["accept", "reject"], + "enum": [ + "accept", + "reject" + ], "type": "string" }, "AssetVisibility": { "description": "Asset visibility", - "enum": ["archive", "timeline", "hidden", "locked"], + "enum": [ + "archive", + "timeline", + "hidden", + "locked" + ], "type": "string" }, "AudioCodec": { "description": "Target audio codec", - "enum": ["mp3", "aac", "opus", "pcm_s16le"], + "enum": [ + "mp3", + "aac", + "opus", + "pcm_s16le" + ], "type": "string" }, "AuthStatusResponseDto": { @@ -1592,7 +18471,11 @@ "type": "string" } }, - "required": ["isElevated", "password", "pinCode"], + "required": [ + "isElevated", + "password", + "pinCode" + ], "type": "object" }, "AvatarUpdate": { @@ -1633,7 +18516,10 @@ "type": "boolean" } }, - "required": ["id", "success"], + "required": [ + "id", + "success" + ], "type": "object" }, "BulkIdsDto": { @@ -1648,7 +18534,9 @@ "type": "array" } }, - "required": ["ids"], + "required": [ + "ids" + ], "type": "object" }, "CLIPConfig": { @@ -1662,12 +18550,19 @@ "type": "string" } }, - "required": ["enabled", "modelName"], + "required": [ + "enabled", + "modelName" + ], "type": "object" }, "CQMode": { "description": "CQ mode", - "enum": ["auto", "cqp", "icq"], + "enum": [ + "auto", + "cqp", + "icq" + ], "type": "string" }, "CalendarHeatmapResponseDto": { @@ -1692,7 +18587,10 @@ "type": "string" } }, - "required": ["date", "count"], + "required": [ + "date", + "count" + ], "type": "object" }, "type": "array" @@ -1709,12 +18607,20 @@ "type": "integer" } }, - "required": ["from", "series", "to", "totalCount"], + "required": [ + "from", + "series", + "to", + "totalCount" + ], "type": "object" }, "CalendarHeatmapType": { "description": "Type of calendar heatmap", - "enum": ["Upload", "Taken"], + "enum": [ + "Upload", + "Taken" + ], "type": "string" }, "CastResponse": { @@ -1724,7 +18630,9 @@ "type": "boolean" } }, - "required": ["gCastEnabled"], + "required": [ + "gCastEnabled" + ], "type": "object" }, "CastUpdate": { @@ -1755,12 +18663,18 @@ "type": "string" } }, - "required": ["newPassword", "password"], + "required": [ + "newPassword", + "password" + ], "type": "object" }, "Colorspace": { "description": "Colorspace", - "enum": ["srgb", "p3"], + "enum": [ + "srgb", + "p3" + ], "type": "string" }, "ContributorCountResponseDto": { @@ -1778,7 +18692,10 @@ "type": "string" } }, - "required": ["assetCount", "userId"], + "required": [ + "assetCount", + "userId" + ], "type": "object" }, "CreateAlbumDto": { @@ -1808,7 +18725,9 @@ "type": "string" } }, - "required": ["albumName"], + "required": [ + "albumName" + ], "type": "object" }, "CreateLibraryDto": { @@ -1841,7 +18760,9 @@ "type": "string" } }, - "required": ["ownerId"], + "required": [ + "ownerId" + ], "type": "object" }, "CreateProfileImageDto": { @@ -1852,7 +18773,9 @@ "type": "string" } }, - "required": ["file"], + "required": [ + "file" + ], "type": "object" }, "CreateProfileImageResponseDto": { @@ -1875,7 +18798,11 @@ "type": "string" } }, - "required": ["profileChangedAt", "profileImagePath", "userId"], + "required": [ + "profileChangedAt", + "profileImagePath", + "userId" + ], "type": "object" }, "CropParameters": { @@ -1905,7 +18832,12 @@ "type": "integer" } }, - "required": ["height", "width", "x", "y"], + "required": [ + "height", + "width", + "x", + "y" + ], "type": "object" }, "DatabaseBackupConfig": { @@ -1925,7 +18857,11 @@ "type": "integer" } }, - "required": ["cronExpression", "enabled", "keepLastAmount"], + "required": [ + "cronExpression", + "enabled", + "keepLastAmount" + ], "type": "object" }, "DatabaseBackupDeleteDto": { @@ -1938,7 +18874,9 @@ "type": "array" } }, - "required": ["backups"], + "required": [ + "backups" + ], "type": "object" }, "DatabaseBackupDto": { @@ -1958,7 +18896,11 @@ "type": "string" } }, - "required": ["filename", "filesize", "timezone"], + "required": [ + "filename", + "filesize", + "timezone" + ], "type": "object" }, "DatabaseBackupListResponseDto": { @@ -1971,7 +18913,9 @@ "type": "array" } }, - "required": ["backups"], + "required": [ + "backups" + ], "type": "object" }, "DatabaseBackupUploadDto": { @@ -2000,7 +18944,9 @@ "type": "boolean" } }, - "required": ["assetIds"], + "required": [ + "assetIds" + ], "type": "object" }, "DownloadArchiveInfo": { @@ -2021,7 +18967,10 @@ "type": "integer" } }, - "required": ["assetIds", "size"], + "required": [ + "assetIds", + "size" + ], "type": "object" }, "DownloadInfoDto": { @@ -2069,7 +19018,10 @@ "type": "boolean" } }, - "required": ["archiveSize", "includeEmbeddedVideos"], + "required": [ + "archiveSize", + "includeEmbeddedVideos" + ], "type": "object" }, "DownloadResponseDto": { @@ -2088,7 +19040,10 @@ "type": "integer" } }, - "required": ["archives", "totalSize"], + "required": [ + "archives", + "totalSize" + ], "type": "object" }, "DownloadUpdate": { @@ -2120,7 +19075,10 @@ "type": "number" } }, - "required": ["enabled", "maxDistance"], + "required": [ + "enabled", + "maxDistance" + ], "type": "object" }, "DuplicateResolveDto": { @@ -2134,7 +19092,9 @@ "type": "array" } }, - "required": ["groups"], + "required": [ + "groups" + ], "type": "object" }, "DuplicateResolveGroupDto": { @@ -2163,7 +19123,11 @@ "type": "array" } }, - "required": ["duplicateId", "keepAssetIds", "trashAssetIds"], + "required": [ + "duplicateId", + "keepAssetIds", + "trashAssetIds" + ], "type": "object" }, "DuplicateResponseDto": { @@ -2191,7 +19155,11 @@ "type": "array" } }, - "required": ["assets", "duplicateId", "suggestedKeepAssetIds"], + "required": [ + "assets", + "duplicateId", + "suggestedKeepAssetIds" + ], "type": "object" }, "EmailNotificationsResponse": { @@ -2209,7 +19177,11 @@ "type": "boolean" } }, - "required": ["albumInvite", "albumUpdate", "enabled"], + "required": [ + "albumInvite", + "albumUpdate", + "enabled" + ], "type": "object" }, "EmailNotificationsUpdate": { @@ -2388,7 +19360,9 @@ "type": "string" } }, - "required": ["id"], + "required": [ + "id" + ], "type": "object" }, "FacialRecognitionConfig": { @@ -2442,7 +19416,10 @@ "type": "boolean" } }, - "required": ["enabled", "sidebarWeb"], + "required": [ + "enabled", + "sidebarWeb" + ], "type": "object" }, "FoldersUpdate": { @@ -2460,12 +19437,19 @@ }, "ImageFormat": { "description": "Image format", - "enum": ["jpeg", "webp"], + "enum": [ + "jpeg", + "webp" + ], "type": "string" }, "IntegrityReport": { "description": "Integrity report type", - "enum": ["untracked_file", "missing_file", "checksum_mismatch"], + "enum": [ + "untracked_file", + "missing_file", + "checksum_mismatch" + ], "type": "string" }, "IntegrityReportResponseDto": { @@ -2487,7 +19471,11 @@ "$ref": "#/components/schemas/IntegrityReport" } }, - "required": ["id", "type", "path"], + "required": [ + "id", + "type", + "path" + ], "type": "object" }, "type": "array" @@ -2496,7 +19484,9 @@ "type": "string" } }, - "required": ["items"], + "required": [ + "items" + ], "type": "object" }, "IntegrityReportSummaryResponseDto": { @@ -2517,7 +19507,11 @@ "type": "integer" } }, - "required": ["checksum_mismatch", "missing_file", "untracked_file"], + "required": [ + "checksum_mismatch", + "missing_file", + "untracked_file" + ], "type": "object" }, "JobCreateDto": { @@ -2526,7 +19520,9 @@ "$ref": "#/components/schemas/ManualJobName" } }, - "required": ["name"], + "required": [ + "name" + ], "type": "object" }, "JobName": { @@ -2612,7 +19608,9 @@ "type": "integer" } }, - "required": ["concurrency"], + "required": [ + "concurrency" + ], "type": "object" }, "LibraryResponseDto": { @@ -2716,7 +19714,12 @@ "type": "integer" } }, - "required": ["photos", "total", "usage", "videos"], + "required": [ + "photos", + "total", + "usage", + "videos" + ], "type": "object" }, "LicenseKeyDto": { @@ -2731,7 +19734,10 @@ "type": "string" } }, - "required": ["activationKey", "licenseKey"], + "required": [ + "activationKey", + "licenseKey" + ], "type": "object" }, "LicenseResponseDto": { @@ -2739,7 +19745,14 @@ }, "LogLevel": { "description": "Log level", - "enum": ["verbose", "debug", "log", "warn", "error", "fatal"], + "enum": [ + "verbose", + "debug", + "log", + "warn", + "error", + "fatal" + ], "type": "string" }, "LoginCredentialDto": { @@ -2757,7 +19770,10 @@ "type": "string" } }, - "required": ["email", "password"], + "required": [ + "email", + "password" + ], "type": "object" }, "LoginResponseDto": { @@ -2822,7 +19838,10 @@ "type": "boolean" } }, - "required": ["redirectUri", "successful"], + "required": [ + "redirectUri", + "successful" + ], "type": "object" }, "MachineLearningAvailabilityChecksDto": { @@ -2842,12 +19861,21 @@ "type": "integer" } }, - "required": ["enabled", "interval", "timeout"], + "required": [ + "enabled", + "interval", + "timeout" + ], "type": "object" }, "MaintenanceAction": { "description": "Maintenance action", - "enum": ["start", "end", "select_database_restore", "restore_database"], + "enum": [ + "start", + "end", + "select_database_restore", + "restore_database" + ], "type": "string" }, "MaintenanceAuthDto": { @@ -2857,7 +19885,9 @@ "type": "string" } }, - "required": ["username"], + "required": [ + "username" + ], "type": "object" }, "MaintenanceDetectInstallResponseDto": { @@ -2869,7 +19899,9 @@ "type": "array" } }, - "required": ["storage"], + "required": [ + "storage" + ], "type": "object" }, "MaintenanceDetectInstallStorageFolderDto": { @@ -2892,7 +19924,12 @@ "type": "boolean" } }, - "required": ["files", "folder", "readable", "writable"], + "required": [ + "files", + "folder", + "readable", + "writable" + ], "type": "object" }, "MaintenanceLoginDto": { @@ -2924,7 +19961,10 @@ "type": "string" } }, - "required": ["action", "active"], + "required": [ + "action", + "active" + ], "type": "object" }, "ManualJobName": { @@ -2982,7 +20022,14 @@ "type": "string" } }, - "required": ["city", "country", "id", "lat", "lon", "state"], + "required": [ + "city", + "country", + "id", + "lat", + "lon", + "state" + ], "type": "object" }, "MapReverseGeocodeResponseDto": { @@ -3003,7 +20050,11 @@ "type": "string" } }, - "required": ["city", "country", "state"], + "required": [ + "city", + "country", + "state" + ], "type": "object" }, "MemoriesResponse": { @@ -3019,7 +20070,10 @@ "type": "boolean" } }, - "required": ["duration", "enabled"], + "required": [ + "duration", + "enabled" + ], "type": "object" }, "MemoriesUpdate": { @@ -3059,12 +20113,12 @@ "type": "string", "x-immich-history": [ { - "state": "Added", - "version": "v2.6.0" + "version": "v2.6.0", + "state": "Added" }, { - "state": "Stable", - "version": "v2.6.0" + "version": "v2.6.0", + "state": "Stable" } ], "x-immich-state": "Stable" @@ -3095,12 +20149,12 @@ "type": "string", "x-immich-history": [ { - "state": "Added", - "version": "v2.6.0" + "version": "v2.6.0", + "state": "Added" }, { - "state": "Stable", - "version": "v2.6.0" + "version": "v2.6.0", + "state": "Stable" } ], "x-immich-state": "Stable" @@ -3109,7 +20163,11 @@ "$ref": "#/components/schemas/MemoryType" } }, - "required": ["data", "memoryAt", "type"], + "required": [ + "data", + "memoryAt", + "type" + ], "type": "object" }, "MemoryResponseDto": { @@ -3207,7 +20265,11 @@ }, "MemorySearchOrder": { "description": "Sort order", - "enum": ["asc", "desc", "random"], + "enum": [ + "asc", + "desc", + "random" + ], "type": "string" }, "MemoryStatisticsResponseDto": { @@ -3219,12 +20281,16 @@ "type": "integer" } }, - "required": ["total"], + "required": [ + "total" + ], "type": "object" }, "MemoryType": { "description": "Memory type", - "enum": ["on_this_day"], + "enum": [ + "on_this_day" + ], "type": "string" }, "MemoryUpdateDto": { @@ -3262,7 +20328,9 @@ "type": "array" } }, - "required": ["ids"], + "required": [ + "ids" + ], "type": "object" }, "MetadataSearchDto": { @@ -3404,22 +20472,22 @@ "type": "integer", "x-immich-history": [ { - "state": "Added", - "version": "v1" + "version": "v1", + "state": "Added" }, { - "state": "Stable", - "version": "v2" + "version": "v2", + "state": "Stable" }, { - "description": "Using -1 as a rating is deprecated and will be removed in the next major version.", + "version": "v2.6.0", "state": "Updated", - "version": "v2.6.0" + "description": "Using -1 as a rating is deprecated and will be removed in the next major version." }, { - "description": "Using -1 as a rating is no longer valid.", + "version": "v3", "state": "Updated", - "version": "v3" + "description": "Using -1 as a rating is no longer valid." } ], "x-immich-state": "Stable" @@ -3518,7 +20586,10 @@ }, "MirrorAxis": { "description": "Axis to mirror along", - "enum": ["horizontal", "vertical"], + "enum": [ + "horizontal", + "vertical" + ], "type": "string" }, "MirrorParameters": { @@ -3527,7 +20598,9 @@ "$ref": "#/components/schemas/MirrorAxis" } }, - "required": ["axis"], + "required": [ + "axis" + ], "type": "object" }, "NotificationCreateDto": { @@ -3567,7 +20640,10 @@ "type": "string" } }, - "required": ["title", "userId"], + "required": [ + "title", + "userId" + ], "type": "object" }, "NotificationDeleteAllDto": { @@ -3583,7 +20659,9 @@ "type": "array" } }, - "required": ["ids"], + "required": [ + "ids" + ], "type": "object" }, "NotificationDto": { @@ -3628,12 +20706,23 @@ "$ref": "#/components/schemas/NotificationType" } }, - "required": ["createdAt", "id", "level", "title", "type"], + "required": [ + "createdAt", + "id", + "level", + "title", + "type" + ], "type": "object" }, "NotificationLevel": { "description": "Notification level", - "enum": ["success", "error", "warning", "info"], + "enum": [ + "success", + "error", + "warning", + "info" + ], "type": "string" }, "NotificationType": { @@ -3669,7 +20758,9 @@ "type": "string" } }, - "required": ["ids"], + "required": [ + "ids" + ], "type": "object" }, "NotificationUpdateDto": { @@ -3692,7 +20783,9 @@ "type": "string" } }, - "required": ["url"], + "required": [ + "url" + ], "type": "object" }, "OAuthBackchannelLogoutDto": { @@ -3702,7 +20795,9 @@ "type": "string" } }, - "required": ["logout_token"], + "required": [ + "logout_token" + ], "type": "object" }, "OAuthCallbackDto": { @@ -3721,7 +20816,9 @@ "type": "string" } }, - "required": ["url"], + "required": [ + "url" + ], "type": "object" }, "OAuthConfigDto": { @@ -3739,12 +20836,17 @@ "type": "string" } }, - "required": ["redirectUri"], + "required": [ + "redirectUri" + ], "type": "object" }, "OAuthTokenEndpointAuthMethod": { "description": "OAuth token endpoint auth method", - "enum": ["client_secret_post", "client_secret_basic"], + "enum": [ + "client_secret_post", + "client_secret_basic" + ], "type": "string" }, "OcrConfig": { @@ -3796,7 +20898,9 @@ "type": "integer" } }, - "required": ["year"], + "required": [ + "year" + ], "type": "object" }, "OnboardingDto": { @@ -3806,7 +20910,9 @@ "type": "boolean" } }, - "required": ["isOnboarded"], + "required": [ + "isOnboarded" + ], "type": "object" }, "OnboardingResponseDto": { @@ -3816,7 +20922,9 @@ "type": "boolean" } }, - "required": ["isOnboarded"], + "required": [ + "isOnboarded" + ], "type": "object" }, "PartnerCreateDto": { @@ -3828,12 +20936,17 @@ "type": "string" } }, - "required": ["sharedWithId"], + "required": [ + "sharedWithId" + ], "type": "object" }, "PartnerDirection": { "description": "Partner direction", - "enum": ["shared-by", "shared-with"], + "enum": [ + "shared-by", + "shared-with" + ], "type": "string" }, "PartnerResponseDto": { @@ -3889,7 +21002,9 @@ "type": "boolean" } }, - "required": ["inTimeline"], + "required": [ + "inTimeline" + ], "type": "object" }, "PeopleResponse": { @@ -3909,7 +21024,10 @@ "type": "boolean" } }, - "required": ["enabled", "sidebarWeb"], + "required": [ + "enabled", + "sidebarWeb" + ], "type": "object" }, "PeopleResponseDto": { @@ -3920,12 +21038,12 @@ "type": "boolean", "x-immich-history": [ { - "state": "Added", - "version": "v1.110.0" + "version": "v1.110.0", + "state": "Added" }, { - "state": "Stable", - "version": "v2" + "version": "v2", + "state": "Stable" } ], "x-immich-state": "Stable" @@ -3949,7 +21067,11 @@ "type": "integer" } }, - "required": ["hidden", "people", "total"], + "required": [ + "hidden", + "people", + "total" + ], "type": "object" }, "PeopleUpdate": { @@ -3981,7 +21103,9 @@ "type": "array" } }, - "required": ["people"], + "required": [ + "people" + ], "type": "object" }, "PeopleUpdateItem": { @@ -4023,7 +21147,9 @@ "type": "string" } }, - "required": ["id"], + "required": [ + "id" + ], "type": "object" }, "Permission": { @@ -4229,12 +21355,12 @@ "type": "string", "x-immich-history": [ { - "state": "Added", - "version": "v1.126.0" + "version": "v1.126.0", + "state": "Added" }, { - "state": "Stable", - "version": "v2" + "version": "v2", + "state": "Stable" } ], "x-immich-state": "Stable" @@ -4250,12 +21376,12 @@ "type": "boolean", "x-immich-history": [ { - "state": "Added", - "version": "v1.126.0" + "version": "v1.126.0", + "state": "Added" }, { - "state": "Stable", - "version": "v2" + "version": "v2", + "state": "Stable" } ], "x-immich-state": "Stable" @@ -4278,18 +21404,24 @@ "type": "string", "x-immich-history": [ { - "state": "Added", - "version": "v1.107.0" + "version": "v1.107.0", + "state": "Added" }, { - "state": "Stable", - "version": "v2" + "version": "v2", + "state": "Stable" } ], "x-immich-state": "Stable" } }, - "required": ["birthDate", "id", "isHidden", "name", "thumbnailPath"], + "required": [ + "birthDate", + "id", + "isHidden", + "name", + "thumbnailPath" + ], "type": "object" }, "PersonStatisticsResponseDto": { @@ -4301,7 +21433,9 @@ "type": "integer" } }, - "required": ["assets"], + "required": [ + "assets" + ], "type": "object" }, "PersonUpdateDto": { @@ -4358,7 +21492,9 @@ "type": "string" } }, - "required": ["newPinCode"], + "required": [ + "newPinCode" + ], "type": "object" }, "PinCodeResetDto": { @@ -4386,7 +21522,9 @@ "type": "string" } }, - "required": ["pinCode"], + "required": [ + "pinCode" + ], "type": "object" }, "PlacesResponseDto": { @@ -4412,7 +21550,11 @@ "type": "string" } }, - "required": ["latitude", "longitude", "name"], + "required": [ + "latitude", + "longitude", + "name" + ], "type": "object" }, "PluginMethodResponseDto": { @@ -4583,7 +21725,10 @@ "type": "string" } }, - "required": ["config", "method"], + "required": [ + "config", + "method" + ], "type": "object" }, "PurchaseResponse": { @@ -4597,7 +21742,10 @@ "type": "boolean" } }, - "required": ["hideBuyButtonUntil", "showSupportBadge"], + "required": [ + "hideBuyButtonUntil", + "showSupportBadge" + ], "type": "object" }, "PurchaseUpdate": { @@ -4615,7 +21763,13 @@ }, "QueueCommand": { "description": "Queue command to execute", - "enum": ["start", "pause", "resume", "empty", "clear-failed"], + "enum": [ + "start", + "pause", + "resume", + "empty", + "clear-failed" + ], "type": "string" }, "QueueCommandDto": { @@ -4628,7 +21782,9 @@ "type": "boolean" } }, - "required": ["command"], + "required": [ + "command" + ], "type": "object" }, "QueueDeleteDto": { @@ -4638,12 +21794,12 @@ "type": "boolean", "x-immich-history": [ { - "state": "Added", - "version": "v2.4.0" + "version": "v2.4.0", + "state": "Added" }, { - "state": "Alpha", - "version": "v2.4.0" + "version": "v2.4.0", + "state": "Alpha" } ], "x-immich-state": "Alpha" @@ -4672,7 +21828,11 @@ "type": "integer" } }, - "required": ["data", "name", "timestamp"], + "required": [ + "data", + "name", + "timestamp" + ], "type": "object" }, "QueueJobStatus": { @@ -4725,7 +21885,11 @@ "$ref": "#/components/schemas/QueueStatisticsDto" } }, - "required": ["isPaused", "name", "statistics"], + "required": [ + "isPaused", + "name", + "statistics" + ], "type": "object" }, "QueueResponseLegacyDto": { @@ -4737,7 +21901,10 @@ "$ref": "#/components/schemas/QueueStatusLegacyDto" } }, - "required": ["jobCounts", "queueStatus"], + "required": [ + "jobCounts", + "queueStatus" + ], "type": "object" }, "QueueStatisticsDto": { @@ -4800,7 +21967,10 @@ "type": "boolean" } }, - "required": ["isActive", "isPaused"], + "required": [ + "isActive", + "isPaused" + ], "type": "object" }, "QueueUpdateDto": { @@ -4993,22 +22163,22 @@ "type": "integer", "x-immich-history": [ { - "state": "Added", - "version": "v1" + "version": "v1", + "state": "Added" }, { - "state": "Stable", - "version": "v2" + "version": "v2", + "state": "Stable" }, { - "description": "Using -1 as a rating is deprecated and will be removed in the next major version.", + "version": "v2.6.0", "state": "Updated", - "version": "v2.6.0" + "description": "Using -1 as a rating is deprecated and will be removed in the next major version." }, { - "description": "Using -1 as a rating is no longer valid.", + "version": "v3", "state": "Updated", - "version": "v3" + "description": "Using -1 as a rating is no longer valid." } ], "x-immich-state": "Stable" @@ -5108,7 +22278,9 @@ "type": "boolean" } }, - "required": ["enabled"], + "required": [ + "enabled" + ], "type": "object" }, "RatingsUpdate": { @@ -5122,12 +22294,18 @@ }, "ReactionLevel": { "description": "Reaction level", - "enum": ["album", "asset"], + "enum": [ + "album", + "asset" + ], "type": "string" }, "ReactionType": { "description": "Reaction type", - "enum": ["comment", "like"], + "enum": [ + "comment", + "like" + ], "type": "string" }, "RecentlyAddedResponse": { @@ -5137,7 +22315,9 @@ "type": "boolean" } }, - "required": ["sidebarWeb"], + "required": [ + "sidebarWeb" + ], "type": "object" }, "RecentlyAddedUpdate": { @@ -5151,7 +22331,10 @@ }, "ReleaseChannel": { "description": "Release channel", - "enum": ["stable", "releaseCandidate"], + "enum": [ + "stable", + "releaseCandidate" + ], "type": "string" }, "ReleaseEventV1": { @@ -5210,7 +22393,10 @@ "type": "string" } }, - "required": ["lastImportFileName", "lastUpdate"], + "required": [ + "lastImportFileName", + "lastUpdate" + ], "type": "object" }, "RotateParameters": { @@ -5220,7 +22406,9 @@ "type": "number" } }, - "required": ["angle"], + "required": [ + "angle" + ], "type": "object" }, "SearchAlbumResponseDto": { @@ -5250,7 +22438,12 @@ "type": "integer" } }, - "required": ["count", "facets", "items", "total"], + "required": [ + "count", + "facets", + "items", + "total" + ], "type": "object" }, "SearchAssetResponseDto": { @@ -5285,14 +22478,20 @@ "type": "integer", "x-immich-history": [ { - "state": "Deprecated", - "version": "v3.0.0" + "version": "v3.0.0", + "state": "Deprecated" } ], "x-immich-state": "Deprecated" } }, - "required": ["count", "facets", "items", "nextPage", "total"], + "required": [ + "count", + "facets", + "items", + "nextPage", + "total" + ], "type": "object" }, "SearchExploreItem": { @@ -5305,7 +22504,10 @@ "type": "string" } }, - "required": ["data", "value"], + "required": [ + "data", + "value" + ], "type": "object" }, "SearchExploreResponseDto": { @@ -5321,7 +22523,10 @@ "type": "array" } }, - "required": ["fieldName", "items"], + "required": [ + "fieldName", + "items" + ], "type": "object" }, "SearchFacetCountResponseDto": { @@ -5337,7 +22542,10 @@ "type": "string" } }, - "required": ["count", "value"], + "required": [ + "count", + "value" + ], "type": "object" }, "SearchFacetResponseDto": { @@ -5353,7 +22561,10 @@ "type": "string" } }, - "required": ["counts", "fieldName"], + "required": [ + "counts", + "fieldName" + ], "type": "object" }, "SearchResponseDto": { @@ -5365,7 +22576,10 @@ "$ref": "#/components/schemas/SearchAssetResponseDto" } }, - "required": ["albums", "assets"], + "required": [ + "albums", + "assets" + ], "type": "object" }, "SearchStatisticsResponseDto": { @@ -5377,7 +22591,9 @@ "type": "integer" } }, - "required": ["total"], + "required": [ + "total" + ], "type": "object" }, "SearchSuggestionType": { @@ -5479,7 +22695,11 @@ "type": "string" } }, - "required": ["licensed", "version", "versionUrl"], + "required": [ + "licensed", + "version", + "versionUrl" + ], "type": "object" }, "ServerApkLinksDto": { @@ -5501,7 +22721,12 @@ "type": "string" } }, - "required": ["arm64v8a", "armeabiv7a", "universal", "x86_64"], + "required": [ + "arm64v8a", + "armeabiv7a", + "universal", + "x86_64" + ], "type": "object" }, "ServerConfigDto": { @@ -5688,7 +22913,11 @@ "type": "array" } }, - "required": ["image", "sidecar", "video"], + "required": [ + "image", + "sidecar", + "video" + ], "type": "object" }, "ServerPingResponse": { @@ -5698,7 +22927,9 @@ "type": "string" } }, - "required": ["res"], + "required": [ + "res" + ], "type": "object" }, "ServerStatsResponseDto": { @@ -5820,7 +23051,11 @@ "type": "string" } }, - "required": ["createdAt", "id", "version"], + "required": [ + "createdAt", + "id", + "version" + ], "type": "object" }, "ServerVersionResponseDto": { @@ -5851,13 +23086,18 @@ "type": "integer", "x-immich-history": [ { - "state": "Added", - "version": "v3.0.0" + "version": "v3.0.0", + "state": "Added" } ] } }, - "required": ["major", "minor", "patch", "prerelease"], + "required": [ + "major", + "minor", + "patch", + "prerelease" + ], "type": "object" }, "SessionCreateDto": { @@ -6027,7 +23267,9 @@ "type": "string" } }, - "required": ["action"], + "required": [ + "action" + ], "type": "object" }, "SharedLinkCreateDto": { @@ -6089,7 +23331,9 @@ "$ref": "#/components/schemas/SharedLinkType" } }, - "required": ["type"], + "required": [ + "type" + ], "type": "object" }, "SharedLinkEditDto": { @@ -6140,7 +23384,9 @@ "type": "string" } }, - "required": ["password"], + "required": [ + "password" + ], "type": "object" }, "SharedLinkResponseDto": { @@ -6236,7 +23482,10 @@ }, "SharedLinkType": { "description": "Shared link type", - "enum": ["ALBUM", "INDIVIDUAL"], + "enum": [ + "ALBUM", + "INDIVIDUAL" + ], "type": "string" }, "SharedLinksResponse": { @@ -6250,7 +23499,10 @@ "type": "boolean" } }, - "required": ["enabled", "sidebarWeb"], + "required": [ + "enabled", + "sidebarWeb" + ], "type": "object" }, "SharedLinksUpdate": { @@ -6286,7 +23538,11 @@ "type": "string" } }, - "required": ["email", "name", "password"], + "required": [ + "email", + "name", + "password" + ], "type": "object" }, "SmartSearchDto": { @@ -6407,22 +23663,22 @@ "type": "integer", "x-immich-history": [ { - "state": "Added", - "version": "v1" + "version": "v1", + "state": "Added" }, { - "state": "Stable", - "version": "v2" + "version": "v2", + "state": "Stable" }, { - "description": "Using -1 as a rating is deprecated and will be removed in the next major version.", + "version": "v2.6.0", "state": "Updated", - "version": "v2.6.0" + "description": "Using -1 as a rating is deprecated and will be removed in the next major version." }, { - "description": "Using -1 as a rating is no longer valid.", + "version": "v3", "state": "Updated", - "version": "v3" + "description": "Using -1 as a rating is no longer valid." } ], "x-immich-state": "Stable" @@ -6509,7 +23765,11 @@ }, "SourceType": { "description": "Face detection source type", - "enum": ["machine-learning", "exif", "manual"], + "enum": [ + "machine-learning", + "exif", + "manual" + ], "type": "string" }, "StackCreateDto": { @@ -6525,7 +23785,9 @@ "type": "array" } }, - "required": ["assetIds"], + "required": [ + "assetIds" + ], "type": "object" }, "StackResponseDto": { @@ -6550,7 +23812,11 @@ "type": "string" } }, - "required": ["assets", "id", "primaryAssetId"], + "required": [ + "assets", + "id", + "primaryAssetId" + ], "type": "object" }, "StackUpdateDto": { @@ -6666,22 +23932,22 @@ "type": "integer", "x-immich-history": [ { - "state": "Added", - "version": "v1" + "version": "v1", + "state": "Added" }, { - "state": "Stable", - "version": "v2" + "version": "v2", + "state": "Stable" }, { - "description": "Using -1 as a rating is deprecated and will be removed in the next major version.", + "version": "v2.6.0", "state": "Updated", - "version": "v2.6.0" + "description": "Using -1 as a rating is deprecated and will be removed in the next major version." }, { - "description": "Using -1 as a rating is no longer valid.", + "version": "v3", "state": "Updated", - "version": "v3" + "description": "Using -1 as a rating is no longer valid." } ], "x-immich-state": "Stable" @@ -6786,7 +24052,10 @@ "$ref": "#/components/schemas/SyncEntityType" } }, - "required": ["ack", "type"], + "required": [ + "ack", + "type" + ], "type": "object" }, "SyncAckSetDto": { @@ -6800,7 +24069,9 @@ "type": "array" } }, - "required": ["acks"], + "required": [ + "acks" + ], "type": "object" }, "SyncAckV1": { @@ -6816,7 +24087,9 @@ "type": "string" } }, - "required": ["albumId"], + "required": [ + "albumId" + ], "type": "object" }, "SyncAlbumToAssetDeleteV1": { @@ -6834,7 +24107,10 @@ "type": "string" } }, - "required": ["albumId", "assetId"], + "required": [ + "albumId", + "assetId" + ], "type": "object" }, "SyncAlbumToAssetV1": { @@ -6852,7 +24128,10 @@ "type": "string" } }, - "required": ["albumId", "assetId"], + "required": [ + "albumId", + "assetId" + ], "type": "object" }, "SyncAlbumUserDeleteV1": { @@ -6870,7 +24149,10 @@ "type": "string" } }, - "required": ["albumId", "userId"], + "required": [ + "albumId", + "userId" + ], "type": "object" }, "SyncAlbumUserV1": { @@ -6891,7 +24173,11 @@ "type": "string" } }, - "required": ["albumId", "role", "userId"], + "required": [ + "albumId", + "role", + "userId" + ], "type": "object" }, "SyncAlbumV1": { @@ -7020,7 +24306,9 @@ "type": "string" } }, - "required": ["assetId"], + "required": [ + "assetId" + ], "type": "object" }, "SyncAssetEditDeleteV1": { @@ -7032,7 +24320,9 @@ "type": "string" } }, - "required": ["editId"], + "required": [ + "editId" + ], "type": "object" }, "SyncAssetEditV1": { @@ -7064,7 +24354,13 @@ "type": "integer" } }, - "required": ["action", "assetId", "id", "parameters", "sequence"], + "required": [ + "action", + "assetId", + "id", + "parameters", + "sequence" + ], "type": "object" }, "SyncAssetExifV1": { @@ -7255,7 +24551,9 @@ "type": "string" } }, - "required": ["assetFaceId"], + "required": [ + "assetFaceId" + ], "type": "object" }, "SyncAssetFaceV1": { @@ -7433,7 +24731,10 @@ "type": "string" } }, - "required": ["assetId", "key"], + "required": [ + "assetId", + "key" + ], "type": "object" }, "SyncAssetMetadataV1": { @@ -7454,7 +24755,11 @@ "type": "object" } }, - "required": ["assetId", "key", "value"], + "required": [ + "assetId", + "key", + "value" + ], "type": "object" }, "SyncAssetOcrDeleteV1": { @@ -7475,7 +24780,11 @@ "type": "string" } }, - "required": ["assetId", "deletedAt", "id"], + "required": [ + "assetId", + "deletedAt", + "id" + ], "type": "object" }, "SyncAssetOcrV1": { @@ -8026,7 +25335,10 @@ "type": "string" } }, - "required": ["assetId", "memoryId"], + "required": [ + "assetId", + "memoryId" + ], "type": "object" }, "SyncMemoryAssetV1": { @@ -8044,7 +25356,10 @@ "type": "string" } }, - "required": ["assetId", "memoryId"], + "required": [ + "assetId", + "memoryId" + ], "type": "object" }, "SyncMemoryDeleteV1": { @@ -8056,7 +25371,9 @@ "type": "string" } }, - "required": ["memoryId"], + "required": [ + "memoryId" + ], "type": "object" }, "SyncMemoryV1": { @@ -8170,7 +25487,10 @@ "type": "string" } }, - "required": ["sharedById", "sharedWithId"], + "required": [ + "sharedById", + "sharedWithId" + ], "type": "object" }, "SyncPartnerV1": { @@ -8192,7 +25512,11 @@ "type": "string" } }, - "required": ["inTimeline", "sharedById", "sharedWithId"], + "required": [ + "inTimeline", + "sharedById", + "sharedWithId" + ], "type": "object" }, "SyncPersonDeleteV1": { @@ -8204,7 +25528,9 @@ "type": "string" } }, - "required": ["personId"], + "required": [ + "personId" + ], "type": "object" }, "SyncPersonV1": { @@ -8326,7 +25652,9 @@ "type": "string" } }, - "required": ["stackId"], + "required": [ + "stackId" + ], "type": "object" }, "SyncStackV1": { @@ -8387,7 +25715,9 @@ "type": "array" } }, - "required": ["types"], + "required": [ + "types" + ], "type": "object" }, "SyncUserDeleteV1": { @@ -8399,7 +25729,9 @@ "type": "string" } }, - "required": ["userId"], + "required": [ + "userId" + ], "type": "object" }, "SyncUserMetadataDeleteV1": { @@ -8414,7 +25746,10 @@ "type": "string" } }, - "required": ["key", "userId"], + "required": [ + "key", + "userId" + ], "type": "object" }, "SyncUserMetadataV1": { @@ -8434,7 +25769,11 @@ "type": "object" } }, - "required": ["key", "userId", "value"], + "required": [ + "key", + "userId", + "value" + ], "type": "object" }, "SyncUserV1": { @@ -8497,10 +25836,23 @@ "$ref": "#/components/schemas/DatabaseBackupConfig" }, "upload": { - "$ref": "#/components/schemas/UploadBackupConfig" + "properties": { + "maxAgeHours": { + "maximum": 9007199254740991, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "maxAgeHours" + ], + "type": "object" } }, - "required": ["database", "upload"], + "required": [ + "database", + "upload" + ], "type": "object" }, "SystemConfigDto": { @@ -8735,7 +26087,9 @@ "type": "boolean" } }, - "required": ["enabled"], + "required": [ + "enabled" + ], "type": "object" }, "SystemConfigFacesDto": { @@ -8745,7 +26099,9 @@ "type": "boolean" } }, - "required": ["import"], + "required": [ + "import" + ], "type": "object" }, "SystemConfigGeneratedFullsizeImageDto": { @@ -8768,7 +26124,11 @@ "type": "integer" } }, - "required": ["enabled", "format", "quality"], + "required": [ + "enabled", + "format", + "quality" + ], "type": "object" }, "SystemConfigGeneratedImageDto": { @@ -8793,7 +26153,11 @@ "type": "integer" } }, - "required": ["format", "quality", "size"], + "required": [ + "format", + "quality", + "size" + ], "type": "object" }, "SystemConfigImageDto": { @@ -8837,7 +26201,11 @@ "$ref": "#/components/schemas/SystemConfigIntegrityJob" } }, - "required": ["checksumFiles", "missingFiles", "untrackedFiles"], + "required": [ + "checksumFiles", + "missingFiles", + "untrackedFiles" + ], "type": "object" }, "SystemConfigIntegrityChecksumJob": { @@ -8884,7 +26252,10 @@ "type": "boolean" } }, - "required": ["cronExpression", "enabled"], + "required": [ + "cronExpression", + "enabled" + ], "type": "object" }, "SystemConfigJobDto": { @@ -8963,7 +26334,10 @@ "$ref": "#/components/schemas/SystemConfigLibraryWatchDto" } }, - "required": ["scan", "watch"], + "required": [ + "scan", + "watch" + ], "type": "object" }, "SystemConfigLibraryScanDto": { @@ -8977,7 +26351,10 @@ "type": "boolean" } }, - "required": ["cronExpression", "enabled"], + "required": [ + "cronExpression", + "enabled" + ], "type": "object" }, "SystemConfigLibraryWatchDto": { @@ -8987,7 +26364,9 @@ "type": "boolean" } }, - "required": ["enabled"], + "required": [ + "enabled" + ], "type": "object" }, "SystemConfigLoggingDto": { @@ -9000,7 +26379,10 @@ "$ref": "#/components/schemas/LogLevel" } }, - "required": ["enabled", "level"], + "required": [ + "enabled", + "level" + ], "type": "object" }, "SystemConfigMachineLearningDto": { @@ -9061,7 +26443,11 @@ "type": "string" } }, - "required": ["darkStyle", "enabled", "lightStyle"], + "required": [ + "darkStyle", + "enabled", + "lightStyle" + ], "type": "object" }, "SystemConfigMetadataDto": { @@ -9070,7 +26456,9 @@ "$ref": "#/components/schemas/SystemConfigFacesDto" } }, - "required": ["faces"], + "required": [ + "faces" + ], "type": "object" }, "SystemConfigNewVersionCheckDto": { @@ -9083,7 +26471,10 @@ "type": "boolean" } }, - "required": ["channel", "enabled"], + "required": [ + "channel", + "enabled" + ], "type": "object" }, "SystemConfigNightlyTasksDto": { @@ -9105,6 +26496,7 @@ "type": "boolean" }, "removeStaleUploads": { + "description": "Remove stale uploads", "type": "boolean" }, "startTime": { @@ -9134,7 +26526,9 @@ "$ref": "#/components/schemas/SystemConfigSmtpDto" } }, - "required": ["smtp"], + "required": [ + "smtp" + ], "type": "object" }, "SystemConfigOAuthDto": { @@ -9260,7 +26654,9 @@ "type": "boolean" } }, - "required": ["enabled"], + "required": [ + "enabled" + ], "type": "object" }, "SystemConfigReverseGeocodingDto": { @@ -9270,7 +26666,9 @@ "type": "boolean" } }, - "required": ["enabled"], + "required": [ + "enabled" + ], "type": "object" }, "SystemConfigServerDto": { @@ -9288,7 +26686,11 @@ "type": "boolean" } }, - "required": ["externalDomain", "loginPageMessage", "publicUsers"], + "required": [ + "externalDomain", + "loginPageMessage", + "publicUsers" + ], "type": "object" }, "SystemConfigSmtpDto": { @@ -9309,7 +26711,12 @@ "$ref": "#/components/schemas/SystemConfigSmtpTransportDto" } }, - "required": ["enabled", "from", "replyTo", "transport"], + "required": [ + "enabled", + "from", + "replyTo", + "transport" + ], "type": "object" }, "SystemConfigSmtpTransportDto": { @@ -9366,7 +26773,11 @@ "type": "string" } }, - "required": ["enabled", "hashVerificationEnabled", "template"], + "required": [ + "enabled", + "hashVerificationEnabled", + "template" + ], "type": "object" }, "SystemConfigTemplateEmailsDto": { @@ -9468,7 +26879,9 @@ "$ref": "#/components/schemas/SystemConfigTemplateEmailsDto" } }, - "required": ["email"], + "required": [ + "email" + ], "type": "object" }, "SystemConfigThemeDto": { @@ -9478,7 +26891,9 @@ "type": "string" } }, - "required": ["customCss"], + "required": [ + "customCss" + ], "type": "object" }, "SystemConfigTrashDto": { @@ -9494,7 +26909,10 @@ "type": "boolean" } }, - "required": ["days", "enabled"], + "required": [ + "days", + "enabled" + ], "type": "object" }, "SystemConfigUserDto": { @@ -9506,7 +26924,9 @@ "type": "integer" } }, - "required": ["deleteDelay"], + "required": [ + "deleteDelay" + ], "type": "object" }, "TagBulkAssetsDto": { @@ -9530,7 +26950,10 @@ "type": "array" } }, - "required": ["assetIds", "tagIds"], + "required": [ + "assetIds", + "tagIds" + ], "type": "object" }, "TagBulkAssetsResponseDto": { @@ -9542,7 +26965,9 @@ "type": "integer" } }, - "required": ["count"], + "required": [ + "count" + ], "type": "object" }, "TagCreateDto": { @@ -9565,7 +26990,9 @@ "type": "string" } }, - "required": ["name"], + "required": [ + "name" + ], "type": "object" }, "TagResponseDto": { @@ -9603,7 +27030,13 @@ "type": "string" } }, - "required": ["createdAt", "id", "name", "updatedAt", "value"], + "required": [ + "createdAt", + "id", + "name", + "updatedAt", + "value" + ], "type": "object" }, "TagUpdateDto": { @@ -9627,7 +27060,9 @@ "type": "array" } }, - "required": ["tags"], + "required": [ + "tags" + ], "type": "object" }, "TagsResponse": { @@ -9641,7 +27076,10 @@ "type": "boolean" } }, - "required": ["enabled", "sidebarWeb"], + "required": [ + "enabled", + "sidebarWeb" + ], "type": "object" }, "TagsUpdate": { @@ -9664,7 +27102,9 @@ "type": "string" } }, - "required": ["template"], + "required": [ + "template" + ], "type": "object" }, "TemplateResponseDto": { @@ -9678,7 +27118,10 @@ "type": "string" } }, - "required": ["html", "name"], + "required": [ + "html", + "name" + ], "type": "object" }, "TestEmailResponseDto": { @@ -9688,7 +27131,9 @@ "type": "string" } }, - "required": ["messageId"], + "required": [ + "messageId" + ], "type": "object" }, "TimeBucketAssetResponseDto": { @@ -9876,22 +27321,42 @@ "type": "string" } }, - "required": ["count", "timeBucket"], + "required": [ + "count", + "timeBucket" + ], "type": "object" }, "ToneMapping": { "description": "Tone mapping", - "enum": ["hable", "mobius", "reinhard", "disabled"], + "enum": [ + "hable", + "mobius", + "reinhard", + "disabled" + ], "type": "string" }, "TranscodeHWAccel": { "description": "Transcode hardware acceleration", - "enum": ["nvenc", "qsv", "vaapi", "rkmpp", "disabled"], + "enum": [ + "nvenc", + "qsv", + "vaapi", + "rkmpp", + "disabled" + ], "type": "string" }, "TranscodePolicy": { "description": "Transcode policy", - "enum": ["all", "optimal", "bitrate", "required", "disabled"], + "enum": [ + "all", + "optimal", + "bitrate", + "required", + "disabled" + ], "type": "string" }, "TrashResponseDto": { @@ -9903,7 +27368,9 @@ "type": "integer" } }, - "required": ["count"], + "required": [ + "count" + ], "type": "object" }, "UpdateAlbumDto": { @@ -9938,7 +27405,9 @@ "$ref": "#/components/schemas/AlbumUserRole" } }, - "required": ["role"], + "required": [ + "role" + ], "type": "object" }, "UpdateAssetDto": { @@ -9982,17 +27451,17 @@ "type": "integer", "x-immich-history": [ { - "state": "Added", - "version": "v1" + "version": "v1", + "state": "Added" }, { - "state": "Stable", - "version": "v2" + "version": "v2", + "state": "Stable" }, { - "description": "Using 0 as a rating is no longer valid.", + "version": "v3", "state": "Updated", - "version": "v3" + "description": "Using 0 as a rating is no longer valid." } ], "x-immich-state": "Stable" @@ -10029,23 +27498,15 @@ }, "type": "object" }, - "UploadBackupConfig": { - "properties": { - "maxAgeHours": { - "minimum": 1, - "type": "number" - } - }, - "required": ["maxAgeHours"], - "type": "object" - }, "UploadOkDto": { "properties": { "id": { "type": "string" } }, - "required": ["id"], + "required": [ + "id" + ], "type": "object" }, "UsageByUserDto": { @@ -10166,7 +27627,11 @@ "type": "string" } }, - "required": ["email", "name", "password"], + "required": [ + "email", + "name", + "password" + ], "type": "object" }, "UserAdminDeleteDto": { @@ -10383,12 +27848,20 @@ "type": "string" } }, - "required": ["activatedAt", "activationKey", "licenseKey"], + "required": [ + "activatedAt", + "activationKey", + "licenseKey" + ], "type": "object" }, "UserMetadataKey": { "description": "User metadata key", - "enum": ["preferences", "license", "onboarding"], + "enum": [ + "preferences", + "license", + "onboarding" + ], "type": "string" }, "UserPreferencesResponseDto": { @@ -10533,7 +28006,11 @@ }, "UserStatus": { "description": "User status", - "enum": ["active", "removing", "deleted"], + "enum": [ + "active", + "removing", + "deleted" + ], "type": "string" }, "UserUpdateMeDto": { @@ -10571,7 +28048,9 @@ "type": "boolean" } }, - "required": ["authStatus"], + "required": [ + "authStatus" + ], "type": "object" }, "ValidateLibraryDto": { @@ -10610,7 +28089,10 @@ "type": "string" } }, - "required": ["importPath", "isValid"], + "required": [ + "importPath", + "isValid" + ], "type": "object" }, "ValidateLibraryResponseDto": { @@ -10638,17 +28120,30 @@ "type": "string" } }, - "required": ["checkedAt", "releaseVersion"], + "required": [ + "checkedAt", + "releaseVersion" + ], "type": "object" }, "VideoCodec": { "description": "Target video codec", - "enum": ["h264", "hevc", "vp9", "av1"], + "enum": [ + "h264", + "hevc", + "vp9", + "av1" + ], "type": "string" }, "VideoContainer": { "description": "Accepted video containers", - "enum": ["mov", "mp4", "ogg", "webm"], + "enum": [ + "mov", + "mp4", + "ogg", + "webm" + ], "type": "string" }, "WorkflowCreateDto": { @@ -10678,7 +28173,9 @@ "description": "Workflow trigger type" } }, - "required": ["trigger"], + "required": [ + "trigger" + ], "type": "object" }, "WorkflowResponseDto": { @@ -10759,7 +28256,12 @@ "description": "Workflow trigger type" } }, - "required": ["description", "name", "steps", "trigger"], + "required": [ + "description", + "name", + "steps", + "trigger" + ], "type": "object" }, "WorkflowShareStepDto": { @@ -10779,7 +28281,10 @@ "type": "string" } }, - "required": ["config", "method"], + "required": [ + "config", + "method" + ], "type": "object" }, "WorkflowStepDto": { @@ -10799,12 +28304,18 @@ "type": "string" } }, - "required": ["config", "method"], + "required": [ + "config", + "method" + ], "type": "object" }, "WorkflowTrigger": { "description": "Plugin trigger type", - "enum": ["AssetCreate", "AssetMetadataExtraction"], + "enum": [ + "AssetCreate", + "AssetMetadataExtraction" + ], "type": "string" }, "WorkflowTriggerResponseDto": { @@ -10821,12 +28332,17 @@ "type": "array" } }, - "required": ["trigger", "types"], + "required": [ + "trigger", + "types" + ], "type": "object" }, "WorkflowType": { "description": "Workflow type", - "enum": ["AssetV1"], + "enum": [ + "AssetV1" + ], "type": "string" }, "WorkflowUpdateDto": { @@ -10858,16172 +28374,6 @@ }, "type": "object" } - }, - "securitySchemes": { - "api_key": { - "in": "header", - "name": "x-api-key", - "type": "apiKey" - }, - "bearer": { - "bearerFormat": "JWT", - "in": "header", - "scheme": "Bearer", - "type": "http" - }, - "cookie": { - "in": "cookie", - "name": "immich_access_token", - "type": "apiKey" - } } - }, - "info": { - "contact": {}, - "description": "Immich API", - "title": "Immich", - "version": "3.0.1" - }, - "openapi": "3.0.0", - "paths": { - "/activities": { - "get": { - "description": "Returns a list of activities for the selected asset or album. The activities are returned in sorted order, with the oldest activities appearing first.", - "operationId": "getActivities", - "parameters": [ - { - "description": "Album ID", - "in": "query", - "name": "albumId", - "required": true, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "type": "string" - } - }, - { - "description": "Asset ID (if activity is for an asset)", - "in": "query", - "name": "assetId", - "required": false, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "type": "string" - } - }, - { - "in": "query", - "name": "level", - "required": false, - "schema": { - "$ref": "#/components/schemas/ReactionLevel" - } - }, - { - "in": "query", - "name": "type", - "required": false, - "schema": { - "$ref": "#/components/schemas/ReactionType" - } - }, - { - "description": "Filter by user ID", - "in": "query", - "name": "userId", - "required": false, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "type": "string" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "items": { - "$ref": "#/components/schemas/ActivityResponseDto" - }, - "type": "array" - } - } - }, - "description": "" - } - }, - "security": [ - { - "bearer": [] - }, - { - "cookie": [] - }, - { - "api_key": [] - } - ], - "summary": "List all activities", - "tags": ["Activities"], - "x-immich-history": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "x-immich-permission": "activity.create", - "x-immich-state": "Stable" - } - }, - "/activities/statistics": { - "get": { - "description": "Returns the number of likes and comments for a given album or asset in an album.", - "operationId": "getActivityStatistics", - "parameters": [ - { - "description": "Album ID", - "in": "query", - "name": "albumId", - "required": true, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "type": "string" - } - }, - { - "description": "Asset ID (if activity is for an asset)", - "in": "query", - "name": "assetId", - "required": false, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "type": "string" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ActivityStatisticsResponseDto" - } - } - }, - "description": "" - } - }, - "security": [ - { - "bearer": [] - }, - { - "cookie": [] - }, - { - "api_key": [] - } - ], - "summary": "Retrieve activity statistics", - "tags": ["Activities"], - "x-immich-history": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "type": "string" - } - } - ], - "responses": { - "204": { - "description": "" - } - }, - "security": [ - { - "bearer": [] - }, - { - "cookie": [] - }, - { - "api_key": [] - } - ], - "summary": "Delete an activity", - "tags": ["Activities"], - "x-immich-history": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "x-immich-permission": "adminAuth.unlinkAll", - "x-immich-state": "Stable" - } - }, - "/admin/database-backups": { - "delete": { - "description": "Delete a backup by its filename", - "operationId": "deleteDatabaseBackup", - "parameters": [], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DatabaseBackupDeleteDto" - } - } - }, - "required": true - }, - "responses": { - "200": { - "description": "" - } - }, - "security": [ - { - "bearer": [] - }, - { - "cookie": [] - }, - { - "api_key": [] - } - ], - "summary": "Delete database backup", - "tags": ["Database Backups (admin)"], - "x-immich-admin-only": true, - "x-immich-history": [ - { - "state": "Added", - "version": "v2.5.0" - }, - { - "state": "Alpha", - "version": "v2.5.0" - } - ], - "x-immich-permission": "backup.delete", - "x-immich-state": "Alpha" - }, - "get": { - "description": "Get the list of the successful and failed backups", - "operationId": "listDatabaseBackups", - "parameters": [], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DatabaseBackupListResponseDto" - } - } - }, - "description": "" - } - }, - "security": [ - { - "bearer": [] - }, - { - "cookie": [] - }, - { - "api_key": [] - } - ], - "summary": "List database backups", - "tags": ["Database Backups (admin)"], - "x-immich-admin-only": true, - "x-immich-history": [ - { - "state": "Added", - "version": "v2.5.0" - }, - { - "state": "Alpha", - "version": "v2.5.0" - } - ], - "x-immich-permission": "maintenance", - "x-immich-state": "Alpha" - } - }, - "/admin/database-backups/start-restore": { - "post": { - "description": "Put Immich into maintenance mode to restore a backup (Immich must not be configured)", - "operationId": "startDatabaseRestoreFlow", - "parameters": [], - "responses": { - "201": { - "description": "" - } - }, - "summary": "Start database backup restore flow", - "tags": ["Database Backups (admin)"], - "x-immich-history": [ - { - "state": "Added", - "version": "v2.5.0" - }, - { - "state": "Alpha", - "version": "v2.5.0" - } - ], - "x-immich-state": "Alpha" - } - }, - "/admin/database-backups/upload": { - "post": { - "description": "Uploads .sql/.sql.gz file to restore backup from", - "operationId": "uploadDatabaseBackup", - "parameters": [], - "requestBody": { - "content": { - "multipart/form-data": { - "schema": { - "$ref": "#/components/schemas/DatabaseBackupUploadDto" - } - } - }, - "description": "Backup Upload", - "required": true - }, - "responses": { - "201": { - "description": "" - } - }, - "security": [ - { - "bearer": [] - }, - { - "cookie": [] - }, - { - "api_key": [] - } - ], - "summary": "Upload database backup", - "tags": ["Database Backups (admin)"], - "x-immich-admin-only": true, - "x-immich-history": [ - { - "state": "Added", - "version": "v2.5.0" - }, - { - "state": "Alpha", - "version": "v2.5.0" - } - ], - "x-immich-permission": "backup.upload", - "x-immich-state": "Alpha" - } - }, - "/admin/database-backups/{filename}": { - "get": { - "description": "Downloads the database backup file", - "operationId": "downloadDatabaseBackup", - "parameters": [ - { - "in": "path", - "name": "filename", - "required": true, - "schema": { - "pattern": "^[a-zA-Z0-9_\\-.]+$", - "type": "string" - } - } - ], - "responses": { - "200": { - "content": { - "application/octet-stream": { - "schema": { - "format": "binary", - "type": "string" - } - } - }, - "description": "" - } - }, - "security": [ - { - "bearer": [] - }, - { - "cookie": [] - }, - { - "api_key": [] - } - ], - "summary": "Download database backup", - "tags": ["Database Backups (admin)"], - "x-immich-admin-only": true, - "x-immich-history": [ - { - "state": "Added", - "version": "v2.5.0" - }, - { - "state": "Alpha", - "version": "v2.5.0" - } - ], - "x-immich-permission": "backup.download", - "x-immich-state": "Alpha" - } - }, - "/admin/integrity/report": { - "get": { - "description": "Get all flagged items by integrity report type", - "operationId": "getIntegrityReport", - "parameters": [ - { - "description": "Cursor for pagination", - "in": "query", - "name": "cursor", - "required": false, - "schema": { - "type": "string" - } - }, - { - "description": "Number of items per page", - "in": "query", - "name": "limit", - "required": false, - "schema": { - "default": 500, - "exclusiveMinimum": true, - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - } - }, - { - "in": "query", - "name": "type", - "required": true, - "schema": { - "$ref": "#/components/schemas/IntegrityReport" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/IntegrityReportResponseDto" - } - } - }, - "description": "" - } - }, - "security": [ - { - "bearer": [] - }, - { - "cookie": [] - }, - { - "api_key": [] - } - ], - "summary": "Get integrity report by type", - "tags": ["Maintenance (admin)"], - "x-immich-admin-only": true, - "x-immich-history": [ - { - "state": "Added", - "version": "v3.0.0" - }, - { - "state": "Alpha", - "version": "v3.0.0" - } - ], - "x-immich-permission": "maintenance", - "x-immich-state": "Alpha" - } - }, - "/admin/integrity/report/{id}": { - "delete": { - "description": "Delete a given report item and perform corresponding deletion (e.g. trash asset, delete file)", - "operationId": "deleteIntegrityReport", - "parameters": [ - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-7[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "" - } - }, - "security": [ - { - "bearer": [] - }, - { - "cookie": [] - }, - { - "api_key": [] - } - ], - "summary": "Delete integrity report item", - "tags": ["Maintenance (admin)"], - "x-immich-admin-only": true, - "x-immich-history": [ - { - "state": "Added", - "version": "v3.0.0" - }, - { - "state": "Alpha", - "version": "v3.0.0" - } - ], - "x-immich-permission": "maintenance", - "x-immich-state": "Alpha" - } - }, - "/admin/integrity/report/{id}/file": { - "get": { - "description": "Download the untracked/broken file if one exists", - "operationId": "getIntegrityReportFile", - "parameters": [ - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-7[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "type": "string" - } - } - ], - "responses": { - "200": { - "content": { - "application/octet-stream": { - "schema": { - "format": "binary", - "type": "string" - } - } - }, - "description": "" - } - }, - "security": [ - { - "bearer": [] - }, - { - "cookie": [] - }, - { - "api_key": [] - } - ], - "summary": "Download flagged file", - "tags": ["Maintenance (admin)"], - "x-immich-admin-only": true, - "x-immich-history": [ - { - "state": "Added", - "version": "v3.0.0" - }, - { - "state": "Alpha", - "version": "v3.0.0" - } - ], - "x-immich-permission": "maintenance", - "x-immich-state": "Alpha" - } - }, - "/admin/integrity/report/{type}/csv": { - "get": { - "description": "Get all integrity report entries for a given type as a CSV", - "operationId": "getIntegrityReportCsv", - "parameters": [ - { - "in": "path", - "name": "type", - "required": true, - "schema": { - "$ref": "#/components/schemas/IntegrityReport" - } - } - ], - "responses": { - "200": { - "content": { - "application/octet-stream": { - "schema": { - "format": "binary", - "type": "string" - } - } - }, - "description": "" - } - }, - "security": [ - { - "bearer": [] - }, - { - "cookie": [] - }, - { - "api_key": [] - } - ], - "summary": "Export integrity report by type as CSV", - "tags": ["Maintenance (admin)"], - "x-immich-admin-only": true, - "x-immich-history": [ - { - "state": "Added", - "version": "v3.0.0" - }, - { - "state": "Alpha", - "version": "v3.0.0" - } - ], - "x-immich-permission": "maintenance", - "x-immich-state": "Alpha" - } - }, - "/admin/integrity/summary": { - "get": { - "description": "Get a count of the items flagged in each integrity report", - "operationId": "getIntegrityReportSummary", - "parameters": [], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/IntegrityReportSummaryResponseDto" - } - } - }, - "description": "" - } - }, - "security": [ - { - "bearer": [] - }, - { - "cookie": [] - }, - { - "api_key": [] - } - ], - "summary": "Get integrity report summary", - "tags": ["Maintenance (admin)"], - "x-immich-admin-only": true, - "x-immich-history": [ - { - "state": "Added", - "version": "v3.0.0" - }, - { - "state": "Alpha", - "version": "v3.0.0" - } - ], - "x-immich-permission": "maintenance", - "x-immich-state": "Alpha" - } - }, - "/admin/maintenance": { - "post": { - "description": "Put Immich into or take it out of maintenance mode", - "operationId": "setMaintenanceMode", - "parameters": [], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SetMaintenanceModeDto" - } - } - }, - "required": true - }, - "responses": { - "201": { - "description": "" - } - }, - "security": [ - { - "bearer": [] - }, - { - "cookie": [] - }, - { - "api_key": [] - } - ], - "summary": "Set maintenance mode", - "tags": ["Maintenance (admin)"], - "x-immich-admin-only": true, - "x-immich-history": [ - { - "state": "Added", - "version": "v2.3.0" - }, - { - "state": "Alpha", - "version": "v2.3.0" - } - ], - "x-immich-permission": "maintenance", - "x-immich-state": "Alpha" - } - }, - "/admin/maintenance/detect-install": { - "get": { - "description": "Collect integrity checks and other heuristics about local data.", - "operationId": "detectPriorInstall", - "parameters": [], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/MaintenanceDetectInstallResponseDto" - } - } - }, - "description": "" - } - }, - "security": [ - { - "bearer": [] - }, - { - "cookie": [] - }, - { - "api_key": [] - } - ], - "summary": "Detect existing install", - "tags": ["Maintenance (admin)"], - "x-immich-admin-only": true, - "x-immich-history": [ - { - "state": "Added", - "version": "v2.5.0" - }, - { - "state": "Alpha", - "version": "v2.5.0" - } - ], - "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": [ - { - "state": "Added", - "version": "v2.3.0" - }, - { - "state": "Alpha", - "version": "v2.3.0" - } - ], - "x-immich-state": "Alpha" - } - }, - "/admin/maintenance/status": { - "get": { - "description": "Fetch information about the currently running maintenance action.", - "operationId": "getMaintenanceStatus", - "parameters": [], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/MaintenanceStatusResponseDto" - } - } - }, - "description": "" - } - }, - "summary": "Get maintenance mode status", - "tags": ["Maintenance (admin)"], - "x-immich-history": [ - { - "state": "Added", - "version": "v2.5.0" - }, - { - "state": "Alpha", - "version": "v2.5.0" - } - ], - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "x-immich-state": "Stable" - } - }, - "/admin/notifications/templates/{name}": { - "post": { - "description": "Retrieve a preview of the provided email template.", - "operationId": "getNotificationTemplateAdmin", - "parameters": [ - { - "in": "path", - "name": "name", - "required": true, - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "x-immich-state": "Stable" - } - }, - "/admin/users": { - "get": { - "description": "Search for users.", - "operationId": "searchUsersAdmin", - "parameters": [ - { - "description": "User ID filter", - "in": "query", - "name": "id", - "required": false, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "type": "string" - } - }, - { - "description": "Include deleted users", - "in": "query", - "name": "withDeleted", - "required": false, - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "x-immich-permission": "adminUser.create", - "x-immich-state": "Stable" - } - }, - "/admin/users/{id}": { - "delete": { - "description": "Delete a user.", - "operationId": "deleteUserAdmin", - "parameters": [ - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "x-immich-permission": "adminUser.delete", - "x-immich-state": "Stable" - }, - "get": { - "description": "Retrieve a specific user by their ID.", - "operationId": "getUserAdmin", - "parameters": [ - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "x-immich-permission": "adminUser.read", - "x-immich-state": "Stable" - }, - "put": { - "deprecated": true, - "description": "Update an existing user.", - "operationId": "updateUserAdmin", - "parameters": [ - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "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)", "Deprecated"], - "x-immich-admin-only": true, - "x-immich-history": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - }, - { - "replacementId": "updateUserAdmin", - "state": "Deprecated", - "version": "v3" - } - ], - "x-immich-permission": "adminUser.update", - "x-immich-state": "Deprecated" - } - }, - "/admin/users/{id}/calendar-heatmap": { - "get": { - "description": "Retrieve activity counts for a specified period, in a calendar heatmap format.", - "operationId": "getUserCalendarHeatmapAdmin", - "parameters": [ - { - "description": "Start date in UTC", - "in": "query", - "name": "from", - "required": false, - "schema": { - "example": "2024-01-01", - "format": "date", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$", - "type": "string" - } - }, - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "type": "string" - } - }, - { - "description": "End date in UTC", - "in": "query", - "name": "to", - "required": false, - "schema": { - "example": "2024-01-01", - "format": "date", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$", - "type": "string" - } - }, - { - "in": "query", - "name": "type", - "required": false, - "schema": { - "$ref": "#/components/schemas/CalendarHeatmapType", - "default": "Upload" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CalendarHeatmapResponseDto" - } - } - }, - "description": "" - } - }, - "security": [ - { - "bearer": [] - }, - { - "cookie": [] - }, - { - "api_key": [] - } - ], - "summary": "Retrieve calendar heatmap activity", - "tags": ["Users (admin)"], - "x-immich-history": [ - { - "state": "Added", - "version": "v3" - }, - { - "state": "Stable", - "version": "v3" - } - ], - "x-immich-permission": "user.read", - "x-immich-state": "Stable" - } - }, - "/admin/users/{id}/preferences": { - "get": { - "description": "Retrieve the preferences of a specific user.", - "operationId": "getUserPreferencesAdmin", - "parameters": [ - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "x-immich-permission": "adminUser.read", - "x-immich-state": "Stable" - }, - "put": { - "deprecated": true, - "description": "Update the preferences of a specific user.", - "operationId": "updateUserPreferencesAdmin", - "parameters": [ - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "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)", "Deprecated"], - "x-immich-admin-only": true, - "x-immich-history": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - }, - { - "replacementId": "updateUserPreferencesAdmin", - "state": "Deprecated", - "version": "v3" - } - ], - "x-immich-permission": "adminUser.update", - "x-immich-state": "Deprecated" - } - }, - "/admin/users/{id}/restore": { - "post": { - "description": "Restore a previously deleted user.", - "operationId": "restoreUserAdmin", - "parameters": [ - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "type": "string" - } - }, - { - "description": "Filter by favorite status", - "in": "query", - "name": "isFavorite", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "description": "Filter by trash status", - "in": "query", - "name": "isTrashed", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "in": "query", - "name": "visibility", - "required": false, - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "description": "Filter albums containing this asset ID (ignores other parameters)", - "in": "query", - "name": "assetId", - "required": false, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "type": "string" - } - }, - { - "description": "Album ID", - "in": "query", - "name": "id", - "required": false, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "type": "string" - } - }, - { - "description": "Filter by ownership: true = only owned, false = only shared-with-me, undefined = no filter", - "in": "query", - "name": "isOwned", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "description": "Filter by shared status: true = only shared, false = not shared, undefined = no filter", - "in": "query", - "name": "isShared", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "description": "Album name (exact match)", - "in": "query", - "name": "name", - "required": false, - "schema": { - "type": "string" - } - } - ], - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [], - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "type": "string" - } - } - ], - "responses": { - "204": { - "description": "" - } - }, - "security": [ - { - "bearer": [] - }, - { - "cookie": [] - }, - { - "api_key": [] - } - ], - "summary": "Delete an album", - "tags": ["Albums"], - "x-immich-history": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "x-immich-permission": "album.delete", - "x-immich-state": "Stable" - }, - "get": { - "description": "Retrieve information about a specific album by its ID.", - "operationId": "getAlbumInfo", - "parameters": [ - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "type": "string" - } - }, - { - "in": "query", - "name": "key", - "required": false, - "schema": { - "type": "string" - } - }, - { - "in": "query", - "name": "slug", - "required": false, - "schema": { - "type": "string" - } - } - ], - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "x-immich-permission": "albumAsset.delete", - "x-immich-state": "Stable" - }, - "put": { - "description": "Add multiple assets to a specific album by its ID.", - "operationId": "addAssetsToAlbum", - "parameters": [ - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "x-immich-permission": "albumAsset.create", - "x-immich-state": "Stable" - } - }, - "/albums/{id}/map-markers": { - "get": { - "description": "Retrieve map marker information for a specific album by its ID.", - "operationId": "getAlbumMapMarkers", - "parameters": [ - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "type": "string" - } - }, - { - "in": "query", - "name": "key", - "required": false, - "schema": { - "type": "string" - } - }, - { - "in": "query", - "name": "slug", - "required": false, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "items": { - "$ref": "#/components/schemas/MapMarkerResponseDto" - }, - "type": "array" - } - } - }, - "description": "" - } - }, - "security": [ - { - "bearer": [] - }, - { - "cookie": [] - }, - { - "api_key": [] - } - ], - "summary": "Retrieve album map markers", - "tags": ["Albums"], - "x-immich-history": [ - { - "state": "Added", - "version": "v3" - } - ], - "x-immich-permission": "album.read" - } - }, - "/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": [ - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "type": "string" - } - }, - { - "in": "path", - "name": "userId", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "204": { - "description": "" - } - }, - "security": [ - { - "bearer": [] - }, - { - "cookie": [] - }, - { - "api_key": [] - } - ], - "summary": "Remove user from album", - "tags": ["Albums"], - "x-immich-history": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "type": "string" - } - }, - { - "in": "path", - "name": "userId", - "required": true, - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "type": "string" - } - } - ], - "responses": { - "204": { - "description": "" - } - }, - "security": [ - { - "bearer": [] - }, - { - "cookie": [] - }, - { - "api_key": [] - } - ], - "summary": "Delete an API key", - "tags": ["API keys"], - "x-immich-history": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "x-immich-permission": "apiKey.read", - "x-immich-state": "Stable" - }, - "put": { - "deprecated": true, - "description": "Updates the name and permissions of an API key by its ID. The current user must own this API key.", - "operationId": "updateApiKey", - "parameters": [ - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "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", "Deprecated"], - "x-immich-history": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - }, - { - "replacementId": "updateApiKey", - "state": "Deprecated", - "version": "v3" - } - ], - "x-immich-permission": "apiKey.update", - "x-immich-state": "Deprecated" - } - }, - "/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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "x-immich-permission": "asset.delete", - "x-immich-state": "Stable" - }, - "post": { - "description": "Uploads a new asset to the server.", - "operationId": "uploadAsset", - "parameters": [ - { - "in": "query", - "name": "key", - "required": false, - "schema": { - "type": "string" - } - }, - { - "in": "query", - "name": "slug", - "required": false, - "schema": { - "type": "string" - } - }, - { - "description": "sha1 checksum that can be used for duplicate detection before the file is uploaded", - "in": "header", - "name": "x-immich-checksum", - "required": false, - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "content": { - "multipart/form-data": { - "schema": { - "$ref": "#/components/schemas/AssetMediaCreateDto" - } - } - }, - "description": "Asset Upload Information", - "required": true - }, - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AssetMediaResponseDto" - } - } - }, - "description": "Asset is a duplicate" - }, - "201": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AssetMediaResponseDto" - } - } - }, - "description": "Asset uploaded successfully" - } - }, - "security": [ - { - "bearer": [] - }, - { - "cookie": [] - }, - { - "api_key": [] - } - ], - "summary": "Upload asset", - "tags": ["Assets"], - "x-immich-history": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "x-immich-permission": "asset.upload", - "x-immich-state": "Stable" - }, - "put": { - "deprecated": true, - "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", "Deprecated"], - "x-immich-history": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - }, - { - "replacementId": "updateAssets", - "state": "Deprecated", - "version": "v3" - } - ], - "x-immich-permission": "asset.update", - "x-immich-state": "Deprecated" - } - }, - "/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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "x-immich-permission": "asset.copy", - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "x-immich-permission": "job.create", - "x-immich-state": "Stable" - } - }, - "/assets/metadata": { - "delete": { - "description": "Delete metadata key-value pairs for multiple assets.", - "operationId": "deleteBulkAssetMetadata", - "parameters": [], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AssetMetadataBulkDeleteDto" - } - } - }, - "required": true - }, - "responses": { - "204": { - "description": "" - } - }, - "security": [ - { - "bearer": [] - }, - { - "cookie": [] - }, - { - "api_key": [] - } - ], - "summary": "Delete asset metadata", - "tags": ["Assets"], - "x-immich-history": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v2.5.0" - } - ], - "x-immich-permission": "asset.update", - "x-immich-state": "Beta" - }, - "put": { - "description": "Upsert metadata key-value pairs for multiple assets.", - "operationId": "updateBulkAssetMetadata", - "parameters": [], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AssetMetadataBulkUpsertDto" - } - } - }, - "required": true - }, - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "items": { - "$ref": "#/components/schemas/AssetMetadataBulkResponseDto" - }, - "type": "array" - } - } - }, - "description": "" - } - }, - "security": [ - { - "bearer": [] - }, - { - "cookie": [] - }, - { - "api_key": [] - } - ], - "summary": "Upsert asset metadata", - "tags": ["Assets"], - "x-immich-history": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v2.5.0" - } - ], - "x-immich-permission": "asset.update", - "x-immich-state": "Beta" - } - }, - "/assets/statistics": { - "get": { - "description": "Retrieve various statistics about the assets owned by the authenticated user.", - "operationId": "getAssetStatistics", - "parameters": [ - { - "description": "Filter by favorite status", - "in": "query", - "name": "isFavorite", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "description": "Filter by trash status", - "in": "query", - "name": "isTrashed", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "in": "query", - "name": "visibility", - "required": false, - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "x-immich-permission": "asset.statistics", - "x-immich-state": "Stable" - } - }, - "/assets/{id}": { - "get": { - "description": "Retrieve detailed information about a specific asset.", - "operationId": "getAssetInfo", - "parameters": [ - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "type": "string" - } - }, - { - "in": "query", - "name": "key", - "required": false, - "schema": { - "type": "string" - } - }, - { - "in": "query", - "name": "slug", - "required": false, - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "x-immich-permission": "asset.read", - "x-immich-state": "Stable" - }, - "put": { - "deprecated": true, - "description": "Update information of a specific asset.", - "operationId": "updateAsset", - "parameters": [ - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "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", "Deprecated"], - "x-immich-history": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - }, - { - "replacementId": "updateAsset", - "state": "Deprecated", - "version": "v3" - } - ], - "x-immich-permission": "asset.update", - "x-immich-state": "Deprecated" - } - }, - "/assets/{id}/edits": { - "delete": { - "description": "Removes all edit actions (crop, rotate, mirror) associated with the specified asset.", - "operationId": "removeAssetEdits", - "parameters": [ - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "type": "string" - } - } - ], - "responses": { - "204": { - "description": "" - } - }, - "security": [ - { - "bearer": [] - }, - { - "cookie": [] - }, - { - "api_key": [] - } - ], - "summary": "Remove edits from an existing asset", - "tags": ["Assets"], - "x-immich-history": [ - { - "state": "Added", - "version": "v2.5.0" - }, - { - "state": "Beta", - "version": "v2.5.0" - } - ], - "x-immich-permission": "asset.edit.delete", - "x-immich-state": "Beta" - }, - "get": { - "description": "Retrieve a series of edit actions (crop, rotate, mirror) associated with the specified asset.", - "operationId": "getAssetEdits", - "parameters": [ - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "type": "string" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AssetEditsResponseDto" - } - } - }, - "description": "" - } - }, - "security": [ - { - "bearer": [] - }, - { - "cookie": [] - }, - { - "api_key": [] - } - ], - "summary": "Retrieve edits for an existing asset", - "tags": ["Assets"], - "x-immich-history": [ - { - "state": "Added", - "version": "v2.5.0" - }, - { - "state": "Beta", - "version": "v2.5.0" - } - ], - "x-immich-permission": "asset.edit.get", - "x-immich-state": "Beta" - }, - "put": { - "description": "Apply a series of edit actions (crop, rotate, mirror) to the specified asset.", - "operationId": "editAsset", - "parameters": [ - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "type": "string" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AssetEditsCreateDto" - } - } - }, - "required": true - }, - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AssetEditsResponseDto" - } - } - }, - "description": "" - } - }, - "security": [ - { - "bearer": [] - }, - { - "cookie": [] - }, - { - "api_key": [] - } - ], - "summary": "Apply edits to an existing asset", - "tags": ["Assets"], - "x-immich-history": [ - { - "state": "Added", - "version": "v2.5.0" - }, - { - "state": "Beta", - "version": "v2.5.0" - } - ], - "x-immich-permission": "asset.edit.create", - "x-immich-state": "Beta" - } - }, - "/assets/{id}/metadata": { - "get": { - "description": "Retrieve all metadata key-value pairs associated with the specified asset.", - "operationId": "getAssetMetadata", - "parameters": [ - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "description": "Asset ID", - "in": "path", - "name": "id", - "required": true, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "type": "string" - } - }, - { - "description": "Metadata key", - "in": "path", - "name": "key", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "204": { - "description": "" - } - }, - "security": [ - { - "bearer": [] - }, - { - "cookie": [] - }, - { - "api_key": [] - } - ], - "summary": "Delete asset metadata by key", - "tags": ["Assets"], - "x-immich-history": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "description": "Asset ID", - "in": "path", - "name": "id", - "required": true, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "type": "string" - } - }, - { - "description": "Metadata key", - "in": "path", - "name": "key", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AssetMetadataResponseDto" - } - } - }, - "description": "" - } - }, - "security": [ - { - "bearer": [] - }, - { - "cookie": [] - }, - { - "api_key": [] - } - ], - "summary": "Retrieve asset metadata by key", - "tags": ["Assets"], - "x-immich-history": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "description": "Return edited asset if available", - "in": "query", - "name": "edited", - "required": false, - "schema": { - "default": false, - "type": "boolean" - } - }, - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "type": "string" - } - }, - { - "in": "query", - "name": "key", - "required": false, - "schema": { - "type": "string" - } - }, - { - "in": "query", - "name": "slug", - "required": false, - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "x-immich-permission": "asset.download", - "x-immich-state": "Stable" - } - }, - "/assets/{id}/thumbnail": { - "get": { - "description": "Retrieve the thumbnail image for the specified asset. Viewing the fullsize thumbnail might redirect to downloadAsset, which requires a different permission.", - "operationId": "viewAsset", - "parameters": [ - { - "description": "Return edited asset if available", - "in": "query", - "name": "edited", - "required": false, - "schema": { - "default": false, - "type": "boolean" - } - }, - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "type": "string" - } - }, - { - "in": "query", - "name": "key", - "required": false, - "schema": { - "type": "string" - } - }, - { - "in": "query", - "name": "size", - "required": false, - "schema": { - "$ref": "#/components/schemas/AssetMediaSize" - }, - "x-immich-history": [ - { - "description": "Specifying 'original' is deprecated. Use the original endpoint directly instead", - "state": "Updated", - "version": "v3" - } - ] - }, - { - "in": "query", - "name": "slug", - "required": false, - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "type": "string" - } - }, - { - "in": "query", - "name": "key", - "required": false, - "schema": { - "type": "string" - } - }, - { - "in": "query", - "name": "slug", - "required": false, - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "x-immich-permission": "asset.view", - "x-immich-state": "Stable" - } - }, - "/assets/{id}/video/stream/main.m3u8": { - "get": { - "description": "Returns an HLS main playlist with all available variants for the asset.", - "operationId": "getMainPlaylist", - "parameters": [ - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "type": "string" - } - }, - { - "in": "query", - "name": "key", - "required": false, - "schema": { - "type": "string" - } - }, - { - "in": "query", - "name": "slug", - "required": false, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "content": { - "application/vnd.apple.mpegurl": { - "schema": { - "type": "string" - } - } - }, - "description": "" - } - }, - "security": [ - { - "bearer": [] - }, - { - "cookie": [] - }, - { - "api_key": [] - } - ], - "summary": "Get HLS main playlist", - "tags": ["Assets"], - "x-immich-history": [ - { - "state": "Added", - "version": "v3" - }, - { - "state": "Alpha", - "version": "v3" - } - ], - "x-immich-permission": "asset.view", - "x-immich-state": "Alpha" - } - }, - "/assets/{id}/video/stream/{sessionId}": { - "delete": { - "description": "Releases server resources for the streaming session.", - "operationId": "endSession", - "parameters": [ - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "type": "string" - } - }, - { - "in": "query", - "name": "key", - "required": false, - "schema": { - "type": "string" - } - }, - { - "in": "path", - "name": "sessionId", - "required": true, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "type": "string" - } - }, - { - "in": "query", - "name": "slug", - "required": false, - "schema": { - "type": "string" - } - } - ], - "responses": { - "204": { - "description": "" - } - }, - "security": [ - { - "bearer": [] - }, - { - "cookie": [] - }, - { - "api_key": [] - } - ], - "summary": "End HLS streaming session", - "tags": ["Assets"], - "x-immich-history": [ - { - "state": "Added", - "version": "v3" - }, - { - "state": "Alpha", - "version": "v3" - } - ], - "x-immich-permission": "asset.view", - "x-immich-state": "Alpha" - } - }, - "/assets/{id}/video/stream/{sessionId}/{variantIndex}/playlist.m3u8": { - "get": { - "description": "Returns an HLS media playlist for one variant of the streaming session.", - "operationId": "getMediaPlaylist", - "parameters": [ - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "type": "string" - } - }, - { - "in": "query", - "name": "key", - "required": false, - "schema": { - "type": "string" - } - }, - { - "in": "path", - "name": "sessionId", - "required": true, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "type": "string" - } - }, - { - "in": "query", - "name": "slug", - "required": false, - "schema": { - "type": "string" - } - }, - { - "in": "path", - "name": "variantIndex", - "required": true, - "schema": { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - } - }, - { - "in": "header", - "name": "x-immich-hls-pos", - "required": false, - "schema": { - "minimum": 0, - "type": "number" - } - } - ], - "responses": { - "200": { - "content": { - "application/vnd.apple.mpegurl": { - "schema": { - "type": "string" - } - } - }, - "description": "" - } - }, - "security": [ - { - "bearer": [] - }, - { - "cookie": [] - }, - { - "api_key": [] - } - ], - "summary": "Get HLS media playlist", - "tags": ["Assets"], - "x-immich-history": [ - { - "state": "Added", - "version": "v3" - }, - { - "state": "Alpha", - "version": "v3" - } - ], - "x-immich-permission": "asset.view", - "x-immich-state": "Alpha" - } - }, - "/assets/{id}/video/stream/{sessionId}/{variantIndex}/{filename}": { - "get": { - "description": "Streams an HLS init segment (init.mp4) or media segment (seg_N.m4s).", - "operationId": "getSegment", - "parameters": [ - { - "in": "path", - "name": "filename", - "required": true, - "schema": { - "pattern": "^(init\\.mp4|seg_\\d+\\.m4s)$", - "type": "string" - } - }, - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "type": "string" - } - }, - { - "in": "query", - "name": "key", - "required": false, - "schema": { - "type": "string" - } - }, - { - "in": "path", - "name": "sessionId", - "required": true, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "type": "string" - } - }, - { - "in": "query", - "name": "slug", - "required": false, - "schema": { - "type": "string" - } - }, - { - "in": "path", - "name": "variantIndex", - "required": true, - "schema": { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - } - }, - { - "in": "header", - "name": "x-immich-hls-msn", - "required": false, - "schema": { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - } - } - ], - "responses": { - "200": { - "content": { - "application/octet-stream": { - "schema": { - "format": "binary", - "type": "string" - } - } - }, - "description": "" - } - }, - "security": [ - { - "bearer": [] - }, - { - "cookie": [] - }, - { - "api_key": [] - } - ], - "summary": "Get HLS segment or init file", - "tags": ["Assets"], - "x-immich-history": [ - { - "state": "Added", - "version": "v3" - }, - { - "state": "Alpha", - "version": "v3" - } - ], - "x-immich-permission": "asset.view", - "x-immich-state": "Alpha" - } - }, - "/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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "x-immich-state": "Stable" - } - }, - "/auth/status": { - "get": { - "description": "Get information about the current session, including whether the user has a password, and if the session can access locked assets.", - "operationId": "getAuthStatus", - "parameters": [], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AuthStatusResponseDto" - } - } - }, - "description": "" - } - }, - "security": [ - { - "bearer": [] - }, - { - "cookie": [] - }, - { - "api_key": [] - } - ], - "summary": "Retrieve auth status", - "tags": ["Authentication"], - "x-immich-history": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "x-immich-state": "Stable" - } - }, - "/auth/validateToken": { - "post": { - "description": "Validate the current authorization method is still valid.", - "operationId": "validateAccessToken", - "parameters": [], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ValidateAccessTokenResponseDto" - } - } - }, - "description": "" - } - }, - "security": [ - { - "bearer": [] - }, - { - "cookie": [] - }, - { - "api_key": [] - } - ], - "summary": "Validate access token", - "tags": ["Authentication"], - "x-immich-history": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "in": "query", - "name": "key", - "required": false, - "schema": { - "type": "string" - } - }, - { - "in": "query", - "name": "slug", - "required": false, - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DownloadArchiveDto" - } - } - }, - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "in": "query", - "name": "key", - "required": false, - "schema": { - "type": "string" - } - }, - { - "in": "query", - "name": "slug", - "required": false, - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "x-immich-permission": "duplicate.read", - "x-immich-state": "Stable" - } - }, - "/duplicates/resolve": { - "post": { - "description": "Resolve duplicate groups by synchronizing metadata across assets and deleting/trashing duplicates.", - "operationId": "resolveDuplicates", - "parameters": [], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DuplicateResolveDto" - } - } - }, - "required": true - }, - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "items": { - "$ref": "#/components/schemas/BulkIdResponseDto" - }, - "type": "array" - } - } - }, - "description": "" - } - }, - "security": [ - { - "bearer": [] - }, - { - "cookie": [] - }, - { - "api_key": [] - } - ], - "summary": "Resolve duplicate groups", - "tags": ["Duplicates"], - "x-immich-history": [ - { - "state": "Added", - "version": "v3.0.0" - }, - { - "state": "Alpha", - "version": "v3.0.0" - } - ], - "x-immich-permission": "duplicate.delete", - "x-immich-state": "Alpha" - } - }, - "/duplicates/{id}": { - "delete": { - "description": "Dismiss a duplicate group by its ID, unlinking all assets in the group without deleting them.", - "operationId": "deleteDuplicate", - "parameters": [ - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "type": "string" - } - } - ], - "responses": { - "204": { - "description": "" - } - }, - "security": [ - { - "bearer": [] - }, - { - "cookie": [] - }, - { - "api_key": [] - } - ], - "summary": "Dismiss a duplicate group", - "tags": ["Duplicates"], - "x-immich-history": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "x-immich-permission": "duplicate.delete", - "x-immich-state": "Stable" - } - }, - "/faces": { - "get": { - "description": "Retrieve all faces belonging to an asset.", - "operationId": "getFaces", - "parameters": [ - { - "description": "Face ID", - "in": "query", - "name": "id", - "required": true, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - }, - { - "state": "Deprecated", - "version": "v2.4.0" - } - ], - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "in": "path", - "name": "name", - "required": true, - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - }, - { - "state": "Deprecated", - "version": "v2.4.0" - } - ], - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "x-immich-permission": "library.create", - "x-immich-state": "Stable" - } - }, - "/libraries/{id}": { - "delete": { - "description": "Delete an external library by its ID.", - "operationId": "deleteLibrary", - "parameters": [ - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "type": "string" - } - } - ], - "responses": { - "204": { - "description": "" - } - }, - "security": [ - { - "bearer": [] - }, - { - "cookie": [] - }, - { - "api_key": [] - } - ], - "summary": "Delete a library", - "tags": ["Libraries"], - "x-immich-admin-only": true, - "x-immich-history": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "x-immich-permission": "library.delete", - "x-immich-state": "Stable" - }, - "get": { - "description": "Retrieve an external library by its ID.", - "operationId": "getLibrary", - "parameters": [ - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "x-immich-permission": "library.read", - "x-immich-state": "Stable" - }, - "put": { - "deprecated": true, - "description": "Update an existing external library.", - "operationId": "updateLibrary", - "parameters": [ - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "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", "Deprecated"], - "x-immich-admin-only": true, - "x-immich-history": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - }, - { - "replacementId": "updateLibrary", - "state": "Deprecated", - "version": "v3" - } - ], - "x-immich-permission": "library.update", - "x-immich-state": "Deprecated" - } - }, - "/libraries/{id}/scan": { - "post": { - "description": "Queue a scan for the external library to find and import new assets.", - "operationId": "scanLibrary", - "parameters": [ - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "type": "string" - } - } - ], - "responses": { - "204": { - "description": "" - } - }, - "security": [ - { - "bearer": [] - }, - { - "cookie": [] - }, - { - "api_key": [] - } - ], - "summary": "Scan a library", - "tags": ["Libraries"], - "x-immich-admin-only": true, - "x-immich-history": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "x-immich-permission": "library.statistics", - "x-immich-state": "Stable" - } - }, - "/libraries/{id}/validate": { - "post": { - "description": "Validate the settings of an external library.", - "operationId": "validate", - "parameters": [ - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "description": "Filter assets created after this date", - "in": "query", - "name": "fileCreatedAfter", - "required": false, - "schema": { - "example": "2024-01-01T00:00:00.000Z", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$", - "type": "string" - } - }, - { - "description": "Filter assets created before this date", - "in": "query", - "name": "fileCreatedBefore", - "required": false, - "schema": { - "example": "2024-01-01T00:00:00.000Z", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$", - "type": "string" - } - }, - { - "description": "Filter by archived status", - "in": "query", - "name": "isArchived", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "description": "Filter by favorite status", - "in": "query", - "name": "isFavorite", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "description": "Include partner assets", - "in": "query", - "name": "withPartners", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "description": "Include shared album assets", - "in": "query", - "name": "withSharedAlbums", - "required": false, - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "x-immich-permission": "map.read", - "x-immich-state": "Stable" - } - }, - "/map/reverse-geocode": { - "get": { - "description": "Retrieve location information (e.g., city, country) for given latitude and longitude coordinates.", - "operationId": "reverseGeocode", - "parameters": [ - { - "description": "Latitude (-90 to 90)", - "in": "query", - "name": "lat", - "required": true, - "schema": { - "format": "double", - "type": "number" - } - }, - { - "description": "Longitude (-180 to 180)", - "in": "query", - "name": "lon", - "required": true, - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "x-immich-permission": "map.search", - "x-immich-state": "Stable" - } - }, - "/memories": { - "get": { - "description": "Retrieve a list of memories. Memories are sorted descending by creation date by default, although they can also be sorted in ascending order, or randomly.", - "operationId": "searchMemories", - "parameters": [ - { - "description": "Filter by date", - "in": "query", - "name": "for", - "required": false, - "schema": { - "example": "2024-01-01T00:00:00.000Z", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$", - "type": "string" - } - }, - { - "description": "Filter by saved status", - "in": "query", - "name": "isSaved", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "description": "Include trashed memories", - "in": "query", - "name": "isTrashed", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "in": "query", - "name": "order", - "required": false, - "schema": { - "$ref": "#/components/schemas/MemorySearchOrder" - } - }, - { - "description": "Number of memories to return", - "in": "query", - "name": "size", - "required": false, - "schema": { - "maximum": 9007199254740991, - "minimum": 1, - "type": "integer" - } - }, - { - "in": "query", - "name": "type", - "required": false, - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "description": "Filter by date", - "in": "query", - "name": "for", - "required": false, - "schema": { - "example": "2024-01-01T00:00:00.000Z", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$", - "type": "string" - } - }, - { - "description": "Filter by saved status", - "in": "query", - "name": "isSaved", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "description": "Include trashed memories", - "in": "query", - "name": "isTrashed", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "in": "query", - "name": "order", - "required": false, - "schema": { - "$ref": "#/components/schemas/MemorySearchOrder" - } - }, - { - "description": "Number of memories to return", - "in": "query", - "name": "size", - "required": false, - "schema": { - "maximum": 9007199254740991, - "minimum": 1, - "type": "integer" - } - }, - { - "in": "query", - "name": "type", - "required": false, - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "x-immich-permission": "memory.statistics", - "x-immich-state": "Stable" - } - }, - "/memories/{id}": { - "delete": { - "description": "Delete a specific memory by its ID.", - "operationId": "deleteMemory", - "parameters": [ - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "type": "string" - } - } - ], - "responses": { - "204": { - "description": "" - } - }, - "security": [ - { - "bearer": [] - }, - { - "cookie": [] - }, - { - "api_key": [] - } - ], - "summary": "Delete a memory", - "tags": ["Memories"], - "x-immich-history": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "x-immich-permission": "memory.delete", - "x-immich-state": "Stable" - }, - "get": { - "description": "Retrieve a specific memory by its ID.", - "operationId": "getMemory", - "parameters": [ - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "x-immich-permission": "memory.read", - "x-immich-state": "Stable" - }, - "put": { - "deprecated": true, - "description": "Update an existing memory by its ID.", - "operationId": "updateMemory", - "parameters": [ - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "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", "Deprecated"], - "x-immich-history": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - }, - { - "replacementId": "updateMemory", - "state": "Deprecated", - "version": "v3" - } - ], - "x-immich-permission": "memory.update", - "x-immich-state": "Deprecated" - } - }, - "/memories/{id}/assets": { - "delete": { - "description": "Remove a list of asset IDs from a specific memory.", - "operationId": "removeMemoryAssets", - "parameters": [ - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "x-immich-permission": "memoryAsset.delete", - "x-immich-state": "Stable" - }, - "put": { - "description": "Add a list of asset IDs to a specific memory.", - "operationId": "addMemoryAssets", - "parameters": [ - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "x-immich-permission": "notification.delete", - "x-immich-state": "Stable" - }, - "get": { - "description": "Retrieve a list of notifications.", - "operationId": "getNotifications", - "parameters": [ - { - "description": "Filter by notification ID", - "in": "query", - "name": "id", - "required": false, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "type": "string" - } - }, - { - "in": "query", - "name": "level", - "required": false, - "schema": { - "$ref": "#/components/schemas/NotificationLevel" - } - }, - { - "in": "query", - "name": "type", - "required": false, - "schema": { - "$ref": "#/components/schemas/NotificationType" - } - }, - { - "description": "Filter by unread status", - "in": "query", - "name": "unread", - "required": false, - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "x-immich-permission": "notification.update", - "x-immich-state": "Stable" - } - }, - "/notifications/{id}": { - "delete": { - "description": "Delete a specific notification.", - "operationId": "deleteNotification", - "parameters": [ - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "type": "string" - } - } - ], - "responses": { - "204": { - "description": "" - } - }, - "security": [ - { - "bearer": [] - }, - { - "cookie": [] - }, - { - "api_key": [] - } - ], - "summary": "Delete a notification", - "tags": ["Notifications"], - "x-immich-history": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "x-immich-permission": "notification.delete", - "x-immich-state": "Stable" - }, - "get": { - "description": "Retrieve a specific notification identified by id.", - "operationId": "getNotification", - "parameters": [ - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "x-immich-permission": "notification.read", - "x-immich-state": "Stable" - }, - "put": { - "description": "Update a specific notification to set its read status.", - "operationId": "updateNotification", - "parameters": [ - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "x-immich-state": "Stable" - } - }, - "/oauth/backchannel-logout": { - "post": { - "description": "Logout the OAuth account and invalidate the session specified by the sid claim or all sessions if the sid claim is not present.", - "operationId": "logoutOAuth", - "parameters": [], - "requestBody": { - "content": { - "application/x-www-form-urlencoded": { - "schema": { - "$ref": "#/components/schemas/OAuthBackchannelLogoutDto" - } - } - }, - "required": true - }, - "responses": { - "200": { - "description": "" - } - }, - "summary": "Backchannel OAuth logout", - "tags": ["Authentication"], - "x-immich-history": [ - { - "state": "Added", - "version": "v2" - } - ] - } - }, - "/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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "x-immich-state": "Stable" - } - }, - "/partners": { - "get": { - "description": "Retrieve a list of partners with whom assets are shared.", - "operationId": "getPartners", - "parameters": [ - { - "in": "query", - "name": "direction", - "required": true, - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "x-immich-permission": "partner.create", - "x-immich-state": "Stable" - } - }, - "/partners/{id}": { - "delete": { - "description": "Stop sharing assets with a partner.", - "operationId": "removePartner", - "parameters": [ - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "type": "string" - } - } - ], - "responses": { - "204": { - "description": "" - } - }, - "security": [ - { - "bearer": [] - }, - { - "cookie": [] - }, - { - "api_key": [] - } - ], - "summary": "Remove a partner", - "tags": ["Partners"], - "x-immich-history": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "x-immich-permission": "partner.delete", - "x-immich-state": "Stable" - }, - "post": { - "deprecated": true, - "description": "Create a new partner to share assets with.", - "operationId": "createPartnerDeprecated", - "parameters": [ - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "replacementId": "createPartner", - "state": "Deprecated", - "version": "v1" - } - ], - "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": [ - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "x-immich-permission": "person.delete", - "x-immich-state": "Stable" - }, - "get": { - "description": "Retrieve a list of all people.", - "operationId": "getAllPeople", - "parameters": [ - { - "description": "Closest asset ID for similarity search", - "in": "query", - "name": "closestAssetId", - "required": false, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "type": "string" - } - }, - { - "description": "Closest person ID for similarity search", - "in": "query", - "name": "closestPersonId", - "required": false, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "type": "string" - } - }, - { - "description": "Page number for pagination", - "in": "query", - "name": "page", - "required": false, - "schema": { - "default": 1, - "maximum": 9007199254740991, - "minimum": 1, - "type": "integer" - } - }, - { - "description": "Number of items per page", - "in": "query", - "name": "size", - "required": false, - "schema": { - "default": 500, - "maximum": 1000, - "minimum": 1, - "type": "integer" - } - }, - { - "description": "Include hidden people", - "in": "query", - "name": "withHidden", - "required": false, - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "x-immich-permission": "person.update", - "x-immich-state": "Stable" - } - }, - "/people/{id}": { - "delete": { - "description": "Delete an individual person.", - "operationId": "deletePerson", - "parameters": [ - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "type": "string" - } - } - ], - "responses": { - "204": { - "description": "" - } - }, - "security": [ - { - "bearer": [] - }, - { - "cookie": [] - }, - { - "api_key": [] - } - ], - "summary": "Delete person", - "tags": ["People"], - "x-immich-history": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "x-immich-permission": "person.delete", - "x-immich-state": "Stable" - }, - "get": { - "description": "Retrieve a person by id.", - "operationId": "getPerson", - "parameters": [ - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "x-immich-permission": "person.read", - "x-immich-state": "Stable" - }, - "put": { - "deprecated": true, - "description": "Update an individual person.", - "operationId": "updatePerson", - "parameters": [ - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "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", "Deprecated"], - "x-immich-history": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - }, - { - "replacementId": "updatePerson", - "state": "Deprecated", - "version": "v3" - } - ], - "x-immich-permission": "person.update", - "x-immich-state": "Deprecated" - } - }, - "/people/{id}/merge": { - "post": { - "description": "Merge a list of people into the person specified in the path parameter.", - "operationId": "mergePerson", - "parameters": [ - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "x-immich-permission": "person.reassign", - "x-immich-state": "Stable" - } - }, - "/people/{id}/statistics": { - "get": { - "description": "Retrieve statistics about a specific person.", - "operationId": "getPersonStatistics", - "parameters": [ - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "x-immich-permission": "person.statistics", - "x-immich-state": "Stable" - } - }, - "/people/{id}/thumbnail": { - "get": { - "description": "Retrieve the thumbnail file for a person.", - "operationId": "getPersonThumbnail", - "parameters": [ - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "x-immich-permission": "person.read", - "x-immich-state": "Stable" - } - }, - "/plugins": { - "get": { - "description": "Retrieve a list of plugins available to the authenticated user.", - "operationId": "searchPlugins", - "parameters": [ - { - "in": "query", - "name": "description", - "required": false, - "schema": { - "type": "string" - } - }, - { - "description": "Whether the plugin is enabled", - "in": "query", - "name": "enabled", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "description": "Plugin ID", - "in": "query", - "name": "id", - "required": false, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "type": "string" - } - }, - { - "in": "query", - "name": "name", - "required": false, - "schema": { - "type": "string" - } - }, - { - "in": "query", - "name": "title", - "required": false, - "schema": { - "type": "string" - } - }, - { - "in": "query", - "name": "version", - "required": false, - "schema": { - "type": "string" - } - } - ], - "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": [ - { - "state": "Added", - "version": "v3.0.0" - } - ], - "x-immich-permission": "plugin.read" - } - }, - "/plugins/methods": { - "get": { - "description": "Retrieve a list of plugin methods", - "operationId": "searchPluginMethods", - "parameters": [ - { - "in": "query", - "name": "description", - "required": false, - "schema": { - "type": "string" - } - }, - { - "description": "Whether the plugin method is enabled", - "in": "query", - "name": "enabled", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "description": "Plugin method ID", - "in": "query", - "name": "id", - "required": false, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "type": "string" - } - }, - { - "in": "query", - "name": "name", - "required": false, - "schema": { - "type": "string" - } - }, - { - "description": "Plugin name", - "in": "query", - "name": "pluginName", - "required": false, - "schema": { - "type": "string" - } - }, - { - "description": "Plugin version", - "in": "query", - "name": "pluginVersion", - "required": false, - "schema": { - "type": "string" - } - }, - { - "in": "query", - "name": "title", - "required": false, - "schema": { - "type": "string" - } - }, - { - "description": "Workflow trigger", - "in": "query", - "name": "trigger", - "required": false, - "schema": { - "$ref": "#/components/schemas/WorkflowTrigger" - } - }, - { - "description": "Workflow types", - "in": "query", - "name": "type", - "required": false, - "schema": { - "$ref": "#/components/schemas/WorkflowType" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "items": { - "$ref": "#/components/schemas/PluginMethodResponseDto" - }, - "type": "array" - } - } - }, - "description": "" - } - }, - "security": [ - { - "bearer": [] - }, - { - "cookie": [] - }, - { - "api_key": [] - } - ], - "summary": "Retrieve plugin methods", - "tags": ["Plugins"], - "x-immich-history": [ - { - "state": "Added", - "version": "v3.0.0" - } - ], - "x-immich-permission": "plugin.read" - } - }, - "/plugins/templates": { - "get": { - "description": "Retrieve workflow templates provided by installed plugins", - "operationId": "searchPluginTemplates", - "parameters": [], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "items": { - "$ref": "#/components/schemas/PluginTemplateResponseDto" - }, - "type": "array" - } - } - }, - "description": "" - } - }, - "security": [ - { - "bearer": [] - }, - { - "cookie": [] - }, - { - "api_key": [] - } - ], - "summary": "Retrieve workflow templates", - "tags": ["Plugins"], - "x-immich-history": [ - { - "state": "Added", - "version": "v3.0.0" - } - ], - "x-immich-permission": "plugin.read" - } - }, - "/plugins/{id}": { - "get": { - "description": "Retrieve information about a specific plugin by its ID.", - "operationId": "getPlugin", - "parameters": [ - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "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": [ - { - "state": "Added", - "version": "v3.0.0" - } - ], - "x-immich-permission": "plugin.read" - } - }, - "/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": [ - { - "state": "Added", - "version": "v2.4.0" - }, - { - "state": "Alpha", - "version": "v2.4.0" - } - ], - "x-immich-permission": "queue.read", - "x-immich-state": "Alpha" - } - }, - "/queues/{name}": { - "get": { - "description": "Retrieves a specific queue by its name.", - "operationId": "getQueue", - "parameters": [ - { - "in": "path", - "name": "name", - "required": true, - "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": [ - { - "state": "Added", - "version": "v2.4.0" - }, - { - "state": "Alpha", - "version": "v2.4.0" - } - ], - "x-immich-permission": "queue.read", - "x-immich-state": "Alpha" - }, - "put": { - "description": "Change the paused status of a specific queue.", - "operationId": "updateQueue", - "parameters": [ - { - "in": "path", - "name": "name", - "required": true, - "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": [ - { - "state": "Added", - "version": "v2.4.0" - }, - { - "state": "Alpha", - "version": "v2.4.0" - } - ], - "x-immich-permission": "queue.update", - "x-immich-state": "Alpha" - } - }, - "/queues/{name}/jobs": { - "delete": { - "description": "Removes all jobs from the specified queue.", - "operationId": "emptyQueue", - "parameters": [ - { - "in": "path", - "name": "name", - "required": true, - "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": [ - { - "state": "Added", - "version": "v2.4.0" - }, - { - "state": "Alpha", - "version": "v2.4.0" - } - ], - "x-immich-permission": "queueJob.delete", - "x-immich-state": "Alpha" - }, - "get": { - "description": "Retrieves a list of queue jobs from the specified queue.", - "operationId": "getQueueJobs", - "parameters": [ - { - "in": "path", - "name": "name", - "required": true, - "schema": { - "$ref": "#/components/schemas/QueueName" - } - }, - { - "description": "Filter jobs by status", - "in": "query", - "name": "status", - "required": false, - "schema": { - "items": { - "$ref": "#/components/schemas/QueueJobStatus" - }, - "type": "array" - } - } - ], - "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": [ - { - "state": "Added", - "version": "v2.4.0" - }, - { - "state": "Alpha", - "version": "v2.4.0" - } - ], - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "description": "Filter by album IDs", - "in": "query", - "name": "albumIds", - "required": false, - "schema": { - "items": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "type": "string" - }, - "type": "array" - } - }, - { - "description": "Filter by city name", - "in": "query", - "name": "city", - "required": false, - "schema": { - "nullable": true, - "type": "string" - } - }, - { - "description": "Filter by country name", - "in": "query", - "name": "country", - "required": false, - "schema": { - "nullable": true, - "type": "string" - } - }, - { - "description": "Filter by creation date (after)", - "in": "query", - "name": "createdAfter", - "required": false, - "schema": { - "example": "2024-01-01T00:00:00.000Z", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$", - "type": "string" - } - }, - { - "description": "Filter by creation date (before)", - "in": "query", - "name": "createdBefore", - "required": false, - "schema": { - "example": "2024-01-01T00:00:00.000Z", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$", - "type": "string" - } - }, - { - "description": "Filter by encoded status", - "in": "query", - "name": "isEncoded", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "description": "Filter by favorite status", - "in": "query", - "name": "isFavorite", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "description": "Filter by motion photo status", - "in": "query", - "name": "isMotion", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "description": "Filter assets not in any album", - "in": "query", - "name": "isNotInAlbum", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "description": "Filter by offline status", - "in": "query", - "name": "isOffline", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "description": "Filter by lens model", - "in": "query", - "name": "lensModel", - "required": false, - "schema": { - "nullable": true, - "type": "string" - } - }, - { - "description": "Library ID to filter by", - "in": "query", - "name": "libraryId", - "required": false, - "schema": { - "format": "uuid", - "nullable": true, - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "type": "string" - } - }, - { - "description": "Filter by camera make", - "in": "query", - "name": "make", - "required": false, - "schema": { - "nullable": true, - "type": "string" - } - }, - { - "description": "Minimum file size in bytes", - "in": "query", - "name": "minFileSize", - "required": false, - "schema": { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - } - }, - { - "description": "Filter by camera model", - "in": "query", - "name": "model", - "required": false, - "schema": { - "nullable": true, - "type": "string" - } - }, - { - "description": "Filter by OCR text content", - "in": "query", - "name": "ocr", - "required": false, - "schema": { - "type": "string" - } - }, - { - "description": "Filter by person IDs", - "in": "query", - "name": "personIds", - "required": false, - "schema": { - "items": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "type": "string" - }, - "type": "array" - } - }, - { - "description": "Filter by rating [1-5], or null for unrated", - "in": "query", - "name": "rating", - "required": false, - "schema": { - "maximum": 5, - "minimum": 1, - "nullable": true, - "type": "integer" - }, - "x-immich-history": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - }, - { - "description": "Using -1 as a rating is deprecated and will be removed in the next major version.", - "state": "Updated", - "version": "v2.6.0" - }, - { - "description": "Using -1 as a rating is no longer valid.", - "state": "Updated", - "version": "v3" - } - ], - "x-immich-state": "Stable" - }, - { - "description": "Number of results to return", - "in": "query", - "name": "size", - "required": false, - "schema": { - "maximum": 1000, - "minimum": 1, - "type": "integer" - } - }, - { - "description": "Filter by state/province name", - "in": "query", - "name": "state", - "required": false, - "schema": { - "nullable": true, - "type": "string" - } - }, - { - "description": "Filter by tag IDs", - "in": "query", - "name": "tagIds", - "required": false, - "schema": { - "items": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "type": "string" - }, - "nullable": true, - "type": "array" - } - }, - { - "description": "Filter by taken date (after)", - "in": "query", - "name": "takenAfter", - "required": false, - "schema": { - "example": "2024-01-01T00:00:00.000Z", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$", - "type": "string" - } - }, - { - "description": "Filter by taken date (before)", - "in": "query", - "name": "takenBefore", - "required": false, - "schema": { - "example": "2024-01-01T00:00:00.000Z", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$", - "type": "string" - } - }, - { - "description": "Filter by trash date (after)", - "in": "query", - "name": "trashedAfter", - "required": false, - "schema": { - "example": "2024-01-01T00:00:00.000Z", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$", - "type": "string" - } - }, - { - "description": "Filter by trash date (before)", - "in": "query", - "name": "trashedBefore", - "required": false, - "schema": { - "example": "2024-01-01T00:00:00.000Z", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$", - "type": "string" - } - }, - { - "in": "query", - "name": "type", - "required": false, - "schema": { - "$ref": "#/components/schemas/AssetTypeEnum" - } - }, - { - "description": "Filter by update date (after)", - "in": "query", - "name": "updatedAfter", - "required": false, - "schema": { - "example": "2024-01-01T00:00:00.000Z", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$", - "type": "string" - } - }, - { - "description": "Filter by update date (before)", - "in": "query", - "name": "updatedBefore", - "required": false, - "schema": { - "example": "2024-01-01T00:00:00.000Z", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$", - "type": "string" - } - }, - { - "in": "query", - "name": "visibility", - "required": false, - "schema": { - "$ref": "#/components/schemas/AssetVisibility" - } - }, - { - "description": "Include deleted assets", - "in": "query", - "name": "withDeleted", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "description": "Include EXIF data in response", - "in": "query", - "name": "withExif", - "required": false, - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "x-immich-permission": "asset.read", - "x-immich-state": "Stable" - } - }, - "/search/person": { - "get": { - "description": "Search for people by name.", - "operationId": "searchPerson", - "parameters": [ - { - "description": "Person name to search for", - "in": "query", - "name": "name", - "required": true, - "schema": { - "type": "string" - } - }, - { - "description": "Include hidden people", - "in": "query", - "name": "withHidden", - "required": false, - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "x-immich-permission": "person.read", - "x-immich-state": "Stable" - } - }, - "/search/places": { - "get": { - "description": "Search for places by name.", - "operationId": "searchPlaces", - "parameters": [ - { - "description": "Place name to search for", - "in": "query", - "name": "name", - "required": true, - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "description": "Filter by country", - "in": "query", - "name": "country", - "required": false, - "schema": { - "type": "string" - } - }, - { - "description": "Include null values in suggestions", - "in": "query", - "name": "includeNull", - "required": false, - "schema": { - "type": "boolean" - }, - "x-immich-history": [ - { - "state": "Added", - "version": "v1.111.0" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "x-immich-state": "Stable" - }, - { - "description": "Filter by lens model", - "in": "query", - "name": "lensModel", - "required": false, - "schema": { - "type": "string" - } - }, - { - "description": "Filter by camera make", - "in": "query", - "name": "make", - "required": false, - "schema": { - "type": "string" - } - }, - { - "description": "Filter by camera model", - "in": "query", - "name": "model", - "required": false, - "schema": { - "type": "string" - } - }, - { - "description": "Filter by state/province", - "in": "query", - "name": "state", - "required": false, - "schema": { - "type": "string" - } - }, - { - "in": "query", - "name": "type", - "required": true, - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "x-immich-permission": "server.storage", - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "x-immich-permission": "session.create", - "x-immich-state": "Stable" - } - }, - "/sessions/{id}": { - "delete": { - "description": "Delete a specific session by id.", - "operationId": "deleteSession", - "parameters": [ - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "type": "string" - } - } - ], - "responses": { - "204": { - "description": "" - } - }, - "security": [ - { - "bearer": [] - }, - { - "cookie": [] - }, - { - "api_key": [] - } - ], - "summary": "Delete a session", - "tags": ["Sessions"], - "x-immich-history": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "x-immich-permission": "session.delete", - "x-immich-state": "Stable" - }, - "put": { - "deprecated": true, - "description": "Update a specific session identified by id.", - "operationId": "updateSession", - "parameters": [ - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "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", "Deprecated"], - "x-immich-history": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - }, - { - "replacementId": "updateSession", - "state": "Deprecated", - "version": "v3" - } - ], - "x-immich-permission": "session.update", - "x-immich-state": "Deprecated" - } - }, - "/sessions/{id}/lock": { - "post": { - "description": "Lock a specific session by id.", - "operationId": "lockSession", - "parameters": [ - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "type": "string" - } - } - ], - "responses": { - "204": { - "description": "" - } - }, - "security": [ - { - "bearer": [] - }, - { - "cookie": [] - }, - { - "api_key": [] - } - ], - "summary": "Lock a session", - "tags": ["Sessions"], - "x-immich-history": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "x-immich-permission": "session.lock", - "x-immich-state": "Stable" - } - }, - "/shared-links": { - "get": { - "description": "Retrieve a list of all shared links.", - "operationId": "getAllSharedLinks", - "parameters": [ - { - "description": "Filter by album ID", - "in": "query", - "name": "albumId", - "required": false, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "type": "string" - } - }, - { - "description": "Filter by shared link ID", - "in": "query", - "name": "id", - "required": false, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "type": "string" - }, - "x-immich-history": [ - { - "state": "Added", - "version": "v2.5.0" - } - ] - } - ], - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "x-immich-permission": "sharedLink.create", - "x-immich-state": "Stable" - } - }, - "/shared-links/login": { - "post": { - "description": "Login to a password protected shared link", - "operationId": "sharedLinkLogin", - "parameters": [ - { - "in": "query", - "name": "key", - "required": false, - "schema": { - "type": "string" - } - }, - { - "in": "query", - "name": "slug", - "required": false, - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SharedLinkLoginDto" - } - } - }, - "required": true - }, - "responses": { - "201": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SharedLinkResponseDto" - } - } - }, - "description": "" - } - }, - "security": [ - { - "bearer": [] - }, - { - "cookie": [] - }, - { - "api_key": [] - } - ], - "summary": "Shared link login", - "tags": ["Shared links"], - "x-immich-history": [ - { - "state": "Added", - "version": "v2.6.0" - }, - { - "state": "Beta", - "version": "v2.6.0" - } - ], - "x-immich-state": "Beta" - } - }, - "/shared-links/me": { - "get": { - "description": "Retrieve the current shared link associated with authentication method.", - "operationId": "getMySharedLink", - "parameters": [ - { - "in": "query", - "name": "key", - "required": false, - "schema": { - "type": "string" - } - }, - { - "in": "query", - "name": "slug", - "required": false, - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "x-immich-state": "Stable" - } - }, - "/shared-links/{id}": { - "delete": { - "description": "Delete a specific shared link by its ID.", - "operationId": "removeSharedLink", - "parameters": [ - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "type": "string" - } - } - ], - "responses": { - "204": { - "description": "" - } - }, - "security": [ - { - "bearer": [] - }, - { - "cookie": [] - }, - { - "api_key": [] - } - ], - "summary": "Delete a shared link", - "tags": ["Shared links"], - "x-immich-history": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "x-immich-permission": "sharedLink.delete", - "x-immich-state": "Stable" - }, - "get": { - "description": "Retrieve a specific shared link by its ID.", - "operationId": "getSharedLinkById", - "parameters": [ - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "x-immich-permission": "sharedLink.read", - "x-immich-state": "Stable" - }, - "patch": { - "description": "Update an existing shared link by its ID.", - "operationId": "updateSharedLink", - "parameters": [ - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "x-immich-permission": "sharedLink.update", - "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": [ - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "x-immich-permission": "sharedLink.update", - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "x-immich-permission": "stack.delete", - "x-immich-state": "Stable" - }, - "get": { - "description": "Retrieve a list of stacks.", - "operationId": "searchStacks", - "parameters": [ - { - "description": "Filter by primary asset ID", - "in": "query", - "name": "primaryAssetId", - "required": false, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "x-immich-permission": "stack.create", - "x-immich-state": "Stable" - } - }, - "/stacks/{id}": { - "delete": { - "description": "Delete a specific stack by its ID.", - "operationId": "deleteStack", - "parameters": [ - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "type": "string" - } - } - ], - "responses": { - "204": { - "description": "" - } - }, - "security": [ - { - "bearer": [] - }, - { - "cookie": [] - }, - { - "api_key": [] - } - ], - "summary": "Delete a stack", - "tags": ["Stacks"], - "x-immich-history": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "x-immich-permission": "stack.delete", - "x-immich-state": "Stable" - }, - "get": { - "description": "Retrieve a specific stack by its ID.", - "operationId": "getStack", - "parameters": [ - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "x-immich-permission": "stack.read", - "x-immich-state": "Stable" - }, - "put": { - "deprecated": true, - "description": "Update an existing stack by its ID.", - "operationId": "updateStack", - "parameters": [ - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "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", "Deprecated"], - "x-immich-history": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - }, - { - "replacementId": "updateStack", - "state": "Deprecated", - "version": "v3" - } - ], - "x-immich-permission": "stack.update", - "x-immich-state": "Deprecated" - } - }, - "/stacks/{id}/assets/{assetId}": { - "delete": { - "description": "Remove a specific asset from a stack by providing the stack ID and asset ID.", - "operationId": "removeAssetFromStack", - "parameters": [ - { - "in": "path", - "name": "assetId", - "required": true, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "type": "string" - } - }, - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "type": "string" - } - } - ], - "responses": { - "204": { - "description": "" - } - }, - "security": [ - { - "bearer": [] - }, - { - "cookie": [] - }, - { - "api_key": [] - } - ], - "summary": "Remove an asset from a stack", - "tags": ["Stacks"], - "x-immich-history": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "x-immich-permission": "syncCheckpoint.update", - "x-immich-state": "Stable" - } - }, - "/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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "x-immich-permission": "tag.asset", - "x-immich-state": "Stable" - } - }, - "/tags/{id}": { - "delete": { - "description": "Delete a specific tag by its ID.", - "operationId": "deleteTag", - "parameters": [ - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "type": "string" - } - } - ], - "responses": { - "204": { - "description": "" - } - }, - "security": [ - { - "bearer": [] - }, - { - "cookie": [] - }, - { - "api_key": [] - } - ], - "summary": "Delete a tag", - "tags": ["Tags"], - "x-immich-history": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "x-immich-permission": "tag.delete", - "x-immich-state": "Stable" - }, - "get": { - "description": "Retrieve a specific tag by its ID.", - "operationId": "getTagById", - "parameters": [ - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "x-immich-permission": "tag.read", - "x-immich-state": "Stable" - }, - "put": { - "deprecated": true, - "description": "Update an existing tag identified by its ID.", - "operationId": "updateTag", - "parameters": [ - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "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", "Deprecated"], - "x-immich-history": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - }, - { - "replacementId": "updateTag", - "state": "Deprecated", - "version": "v3" - } - ], - "x-immich-permission": "tag.update", - "x-immich-state": "Deprecated" - } - }, - "/tags/{id}/assets": { - "delete": { - "description": "Remove a tag from all the specified assets.", - "operationId": "untagAssets", - "parameters": [ - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "x-immich-permission": "tag.asset", - "x-immich-state": "Stable" - }, - "put": { - "description": "Add a tag to all the specified assets.", - "operationId": "tagAssets", - "parameters": [ - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "description": "Filter assets belonging to a specific album", - "in": "query", - "name": "albumId", - "required": false, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "type": "string" - } - }, - { - "description": "Bounding box coordinates as west,south,east,north (WGS84)", - "in": "query", - "name": "bbox", - "required": false, - "schema": { - "example": "11.075683,49.416711,11.117589,49.454875", - "type": "string" - } - }, - { - "description": "Filter by favorite status (true for favorites only, false for non-favorites only)", - "in": "query", - "name": "isFavorite", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "description": "Filter by trash status (true for trashed assets only, false for non-trashed only)", - "in": "query", - "name": "isTrashed", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "in": "query", - "name": "key", - "required": false, - "schema": { - "type": "string" - } - }, - { - "description": "Sort order for assets within time buckets (ASC for oldest first, DESC for newest first)", - "in": "query", - "name": "order", - "required": false, - "schema": { - "$ref": "#/components/schemas/AssetOrder" - } - }, - { - "description": "Date to group and order assets by (takenAt for date taken, createdAt for date added to Immich)", - "in": "query", - "name": "orderBy", - "required": false, - "schema": { - "$ref": "#/components/schemas/AssetOrderBy" - } - }, - { - "description": "Filter assets containing a specific person (face recognition)", - "in": "query", - "name": "personId", - "required": false, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "type": "string" - } - }, - { - "in": "query", - "name": "slug", - "required": false, - "schema": { - "type": "string" - } - }, - { - "description": "Filter assets with a specific tag", - "in": "query", - "name": "tagId", - "required": false, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "type": "string" - } - }, - { - "description": "Time bucket identifier in YYYY-MM-DD format", - "in": "query", - "name": "timeBucket", - "required": true, - "schema": { - "example": "2024-01-01", - "type": "string" - } - }, - { - "description": "Filter assets by specific user ID", - "in": "query", - "name": "userId", - "required": false, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "type": "string" - } - }, - { - "description": "Filter by asset visibility status (ARCHIVE, TIMELINE, HIDDEN, LOCKED)", - "in": "query", - "name": "visibility", - "required": false, - "schema": { - "$ref": "#/components/schemas/AssetVisibility" - } - }, - { - "description": "Include location data in the response", - "in": "query", - "name": "withCoordinates", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "description": "Include assets shared by partners", - "in": "query", - "name": "withPartners", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "description": "Include stacked assets in the response. When true, only primary assets from stacks are returned.", - "in": "query", - "name": "withStacked", - "required": false, - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Internal", - "version": "v1" - } - ], - "x-immich-permission": "asset.read", - "x-immich-state": "Internal" - } - }, - "/timeline/buckets": { - "get": { - "description": "Retrieve a list of all minimal time buckets.", - "operationId": "getTimeBuckets", - "parameters": [ - { - "description": "Filter assets belonging to a specific album", - "in": "query", - "name": "albumId", - "required": false, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "type": "string" - } - }, - { - "description": "Bounding box coordinates as west,south,east,north (WGS84)", - "in": "query", - "name": "bbox", - "required": false, - "schema": { - "example": "11.075683,49.416711,11.117589,49.454875", - "type": "string" - } - }, - { - "description": "Filter by favorite status (true for favorites only, false for non-favorites only)", - "in": "query", - "name": "isFavorite", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "description": "Filter by trash status (true for trashed assets only, false for non-trashed only)", - "in": "query", - "name": "isTrashed", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "in": "query", - "name": "key", - "required": false, - "schema": { - "type": "string" - } - }, - { - "description": "Sort order for assets within time buckets (ASC for oldest first, DESC for newest first)", - "in": "query", - "name": "order", - "required": false, - "schema": { - "$ref": "#/components/schemas/AssetOrder" - } - }, - { - "description": "Date to group and order assets by (takenAt for date taken, createdAt for date added to Immich)", - "in": "query", - "name": "orderBy", - "required": false, - "schema": { - "$ref": "#/components/schemas/AssetOrderBy" - } - }, - { - "description": "Filter assets containing a specific person (face recognition)", - "in": "query", - "name": "personId", - "required": false, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "type": "string" - } - }, - { - "in": "query", - "name": "slug", - "required": false, - "schema": { - "type": "string" - } - }, - { - "description": "Filter assets with a specific tag", - "in": "query", - "name": "tagId", - "required": false, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "type": "string" - } - }, - { - "description": "Filter assets by specific user ID", - "in": "query", - "name": "userId", - "required": false, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "type": "string" - } - }, - { - "description": "Filter by asset visibility status (ARCHIVE, TIMELINE, HIDDEN, LOCKED)", - "in": "query", - "name": "visibility", - "required": false, - "schema": { - "$ref": "#/components/schemas/AssetVisibility" - } - }, - { - "description": "Include location data in the response", - "in": "query", - "name": "withCoordinates", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "description": "Include assets shared by partners", - "in": "query", - "name": "withPartners", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "description": "Include stacked assets in the response. When true, only primary assets from stacks are returned.", - "in": "query", - "name": "withStacked", - "required": false, - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Internal", - "version": "v1" - } - ], - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "x-immich-permission": "asset.delete", - "x-immich-state": "Stable" - } - }, - "/upload": { - "options": { - "operationId": "getUploadOptions", - "parameters": [], - "responses": { - "204": { - "description": "" - } - }, - "tags": ["Upload"] - }, - "post": { - "operationId": "startUpload", - "parameters": [ - { - "description": "Non-negative size of the request body in bytes.", - "in": "header", - "name": "content-length", - "required": true, - "schema": { - "type": "string" - } - }, - { - "in": "query", - "name": "key", - "required": false, - "schema": { - "type": "string" - } - }, - { - "description": "RFC 9651 structured dictionary containing an `sha` (bytesequence) checksum used to detect duplicate files and validate data integrity.", - "in": "header", - "name": "repr-digest", - "required": true, - "schema": { - "type": "string" - } - }, - { - "in": "query", - "name": "slug", - "required": false, - "schema": { - "type": "string" - } - }, - { - "description": "Structured boolean indicating whether this request completes the file. Use Upload-Incomplete instead for version <= 3.", - "in": "header", - "name": "upload-complete", - "required": false, - "schema": { - "type": "string" - } - }, - { - "description": "Indicates the version of the RUFH protocol supported by the client.", - "in": "header", - "name": "upload-draft-interop-version", - "required": false, - "schema": { - "type": "string" - } - }, - { - "description": "RFC 9651 structured dictionary containing asset metadata with the following keys:\n- device-asset-id (string, required): Unique device asset identifier\n- device-id (string, required): Device identifier\n- file-created-at (string/date, required): ISO 8601 date string or Unix timestamp\n- file-modified-at (string/date, required): ISO 8601 date string or Unix timestamp\n- filename (string, required): Original filename\n- is-favorite (boolean, optional): Favorite status\n- live-photo-video-id (string, optional): Live photo ID for assets from iOS devices\n- icloud-id (string, optional): iCloud identifier for assets from iOS devices", - "in": "header", - "name": "x-immich-asset-data", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UploadOkDto" - } - } - }, - "description": "" - }, - "201": { - "description": "" - } - }, - "security": [ - { - "bearer": [] - }, - { - "cookie": [] - }, - { - "api_key": [] - } - ], - "tags": ["Upload"], - "x-immich-permission": "asset.upload" - } - }, - "/upload/{id}": { - "delete": { - "operationId": "cancelUpload", - "parameters": [ - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "format": "uuid", - "type": "string" - } - }, - { - "in": "query", - "name": "key", - "required": false, - "schema": { - "type": "string" - } - }, - { - "in": "query", - "name": "slug", - "required": false, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "" - } - }, - "security": [ - { - "bearer": [] - }, - { - "cookie": [] - }, - { - "api_key": [] - } - ], - "tags": ["Upload"], - "x-immich-permission": "asset.upload" - }, - "head": { - "operationId": "getUploadStatus", - "parameters": [ - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "format": "uuid", - "type": "string" - } - }, - { - "in": "query", - "name": "key", - "required": false, - "schema": { - "type": "string" - } - }, - { - "in": "query", - "name": "slug", - "required": false, - "schema": { - "type": "string" - } - }, - { - "description": "Indicates the version of the RUFH protocol supported by the client.", - "in": "header", - "name": "upload-draft-interop-version", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "" - } - }, - "security": [ - { - "bearer": [] - }, - { - "cookie": [] - }, - { - "api_key": [] - } - ], - "tags": ["Upload"], - "x-immich-permission": "asset.upload" - }, - "patch": { - "operationId": "resumeUpload", - "parameters": [ - { - "description": "Non-negative size of the request body in bytes.", - "in": "header", - "name": "content-length", - "required": true, - "schema": { - "type": "string" - } - }, - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "format": "uuid", - "type": "string" - } - }, - { - "in": "query", - "name": "key", - "required": false, - "schema": { - "type": "string" - } - }, - { - "in": "query", - "name": "slug", - "required": false, - "schema": { - "type": "string" - } - }, - { - "description": "Structured boolean indicating whether this request completes the file. Use Upload-Incomplete instead for version <= 3.", - "in": "header", - "name": "upload-complete", - "required": true, - "schema": { - "type": "string" - } - }, - { - "description": "Indicates the version of the RUFH protocol supported by the client.", - "in": "header", - "name": "upload-draft-interop-version", - "required": true, - "schema": { - "type": "string" - } - }, - { - "description": "Non-negative byte offset indicating the starting position of the data in the request body within the entire file.", - "in": "header", - "name": "upload-offset", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UploadOkDto" - } - } - }, - "description": "" - } - }, - "security": [ - { - "bearer": [] - }, - { - "cookie": [] - }, - { - "api_key": [] - } - ], - "tags": ["Upload"], - "x-immich-permission": "asset.upload" - } - }, - "/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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "x-immich-permission": "user.read", - "x-immich-state": "Stable" - }, - "put": { - "deprecated": true, - "description": "Update the current user making the 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", "Deprecated"], - "x-immich-history": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - }, - { - "replacementId": "updateMyUser", - "state": "Deprecated", - "version": "v3" - } - ], - "x-immich-permission": "user.update", - "x-immich-state": "Deprecated" - } - }, - "/users/me/calendar-heatmap": { - "get": { - "description": "Retrieve activity counts for a specified period, in a calendar heatmap format.", - "operationId": "getMyCalendarHeatmap", - "parameters": [ - { - "description": "Start date in UTC", - "in": "query", - "name": "from", - "required": false, - "schema": { - "example": "2024-01-01", - "format": "date", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$", - "type": "string" - } - }, - { - "description": "End date in UTC", - "in": "query", - "name": "to", - "required": false, - "schema": { - "example": "2024-01-01", - "format": "date", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$", - "type": "string" - } - }, - { - "in": "query", - "name": "type", - "required": false, - "schema": { - "$ref": "#/components/schemas/CalendarHeatmapType", - "default": "Upload" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CalendarHeatmapResponseDto" - } - } - }, - "description": "" - } - }, - "security": [ - { - "bearer": [] - }, - { - "cookie": [] - }, - { - "api_key": [] - } - ], - "summary": "Retrieve calendar heatmap activity", - "tags": ["Users"], - "x-immich-history": [ - { - "state": "Added", - "version": "v3" - }, - { - "state": "Stable", - "version": "v3" - } - ], - "x-immich-permission": "user.read", - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "x-immich-permission": "userPreference.read", - "x-immich-state": "Stable" - }, - "put": { - "deprecated": true, - "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", "Deprecated"], - "x-immich-history": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - }, - { - "replacementId": "updateMyPreferences", - "state": "Deprecated", - "version": "v3" - } - ], - "x-immich-permission": "userPreference.update", - "x-immich-state": "Deprecated" - } - }, - "/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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "x-immich-permission": "userProfileImage.update", - "x-immich-state": "Stable" - } - }, - "/users/{id}": { - "get": { - "description": "Retrieve a specific user by their ID.", - "operationId": "getUser", - "parameters": [ - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "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": [ - { - "in": "query", - "name": "path", - "required": true, - "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": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "x-immich-permission": "folder.read", - "x-immich-state": "Stable" - } - }, - "/view/folder/unique-paths": { - "get": { - "description": "Retrieve a list of unique folder paths from asset original paths.", - "operationId": "getUniqueOriginalPaths", - "parameters": [], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "items": { - "type": "string" - }, - "type": "array" - } - } - }, - "description": "" - } - }, - "security": [ - { - "bearer": [] - }, - { - "cookie": [] - }, - { - "api_key": [] - } - ], - "summary": "Retrieve unique paths", - "tags": ["Views"], - "x-immich-history": [ - { - "state": "Added", - "version": "v1" - }, - { - "state": "Beta", - "version": "v1" - }, - { - "state": "Stable", - "version": "v2" - } - ], - "x-immich-permission": "folder.read", - "x-immich-state": "Stable" - } - }, - "/workflows": { - "get": { - "description": "Retrieve a list of workflows available to the authenticated user.", - "operationId": "searchWorkflows", - "parameters": [ - { - "description": "Workflow description", - "in": "query", - "name": "description", - "required": false, - "schema": { - "type": "string" - } - }, - { - "description": "Workflow enabled", - "in": "query", - "name": "enabled", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "description": "Workflow ID", - "in": "query", - "name": "id", - "required": false, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "type": "string" - } - }, - { - "description": "Workflow name", - "in": "query", - "name": "name", - "required": false, - "schema": { - "type": "string" - } - }, - { - "description": "Workflow trigger type", - "in": "query", - "name": "trigger", - "required": false, - "schema": { - "$ref": "#/components/schemas/WorkflowTrigger" - } - } - ], - "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": [ - { - "state": "Added", - "version": "v3.0.0" - } - ], - "x-immich-permission": "workflow.read" - }, - "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": [ - { - "state": "Added", - "version": "v3.0.0" - } - ], - "x-immich-permission": "workflow.create" - } - }, - "/workflows/triggers": { - "get": { - "description": "Retrieve a list of all available workflow triggers.", - "operationId": "getWorkflowTriggers", - "parameters": [], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "items": { - "$ref": "#/components/schemas/WorkflowTriggerResponseDto" - }, - "type": "array" - } - } - }, - "description": "" - } - }, - "security": [ - { - "bearer": [] - }, - { - "cookie": [] - }, - { - "api_key": [] - } - ], - "summary": "List all workflow triggers", - "tags": ["Workflows"], - "x-immich-history": [ - { - "state": "Added", - "version": "v3.0.0" - } - ] - } - }, - "/workflows/{id}": { - "delete": { - "description": "Delete a workflow by its ID.", - "operationId": "deleteWorkflow", - "parameters": [ - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "type": "string" - } - } - ], - "responses": { - "204": { - "description": "" - } - }, - "security": [ - { - "bearer": [] - }, - { - "cookie": [] - }, - { - "api_key": [] - } - ], - "summary": "Delete a workflow", - "tags": ["Workflows"], - "x-immich-history": [ - { - "state": "Added", - "version": "v3.0.0" - } - ], - "x-immich-permission": "workflow.delete" - }, - "get": { - "description": "Retrieve information about a specific workflow by its ID.", - "operationId": "getWorkflow", - "parameters": [ - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "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": [ - { - "state": "Added", - "version": "v3.0.0" - } - ], - "x-immich-permission": "workflow.read" - }, - "put": { - "deprecated": true, - "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": [ - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "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", "Deprecated"], - "x-immich-history": [ - { - "state": "Added", - "version": "v3.0.0" - }, - { - "replacementId": "updateWorkflow", - "state": "Deprecated", - "version": "v3" - } - ], - "x-immich-permission": "workflow.update", - "x-immich-state": "Deprecated" - } - }, - "/workflows/{id}/share": { - "get": { - "description": "Retrieve a workflow details without ids, default values, etc.", - "operationId": "getWorkflowForShare", - "parameters": [ - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$", - "type": "string" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/WorkflowShareResponseDto" - } - } - }, - "description": "" - } - }, - "security": [ - { - "bearer": [] - }, - { - "cookie": [] - }, - { - "api_key": [] - } - ], - "summary": "Retrieve a workflow", - "tags": ["Workflows"], - "x-immich-history": [ - { - "state": "Added", - "version": "v3.0.0" - } - ], - "x-immich-permission": "workflow.read" - } - } - }, - "servers": [ - { - "url": "/api" - } - ], - "tags": [ - { - "description": "An activity is a like or a comment made by a user on an asset or album.", - "name": "Activities" - }, - { - "description": "An album is a collection of assets that can be shared with other users or via shared links.", - "name": "Albums" - }, - { - "description": "An api key can be used to programmatically access the Immich API.", - "name": "API keys" - }, - { - "description": "An asset is an image or video that has been uploaded to Immich.", - "name": "Assets" - }, - { - "description": "Endpoints related to user authentication, including OAuth.", - "name": "Authentication" - }, - { - "description": "Administrative endpoints related to authentication.", - "name": "Authentication (admin)" - }, - { - "description": "Manage backups of the Immich database.", - "name": "Database Backups (admin)" - }, - { - "description": "Deprecated endpoints that are planned for removal in the next major release.", - "name": "Deprecated" - }, - { - "description": "Endpoints for downloading assets or collections of assets.", - "name": "Download" - }, - { - "description": "Endpoints for managing and identifying duplicate assets.", - "name": "Duplicates" - }, - { - "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 manually.", - "name": "Faces" - }, - { - "description": "Endpoints for viewing and managing integrity reports.", - "name": "Integrity (admin)" - }, - { - "description": "Queues and background jobs are used for processing tasks asynchronously. Queues can be paused and resumed as needed.", - "name": "Jobs" - }, - { - "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": "Libraries" - }, - { - "description": "Maintenance mode allows you to put Immich in a read-only state to perform various operations.", - "name": "Maintenance (admin)" - }, - { - "description": "Map endpoints include supplemental functionality related to geolocation, such as reverse geocoding and retrieving map markers for assets with geolocation data.", - "name": "Map" - }, - { - "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": "Memories" - }, - { - "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" - }, - { - "description": "Notification administrative endpoints.", - "name": "Notifications (admin)" - }, - { - "description": "A partner is a link with another user that allows sharing of assets between two users.", - "name": "Partners" - }, - { - "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": "People" - }, - { - "description": "A plugin is an installed module that makes filters and actions available for the workflow feature.", - "name": "Plugins" - }, - { - "description": "Queues and background jobs are used for processing tasks asynchronously. Queues can be paused and resumed as needed.", - "name": "Queues" - }, - { - "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": "Search" - }, - { - "description": "Information about the current server deployment, including version and build information, available features, supported media types, and more.", - "name": "Server" - }, - { - "description": "A session represents an authenticated login session for a user. Sessions also appear in the web application as \"Authorized devices\".", - "name": "Sessions" - }, - { - "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": "Shared links" - }, - { - "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": "Stacks" - }, - { - "description": "A collection of endpoints for the new mobile synchronization implementation.", - "name": "Sync" - }, - { - "description": "Endpoints to view, modify, and validate the system configuration settings.", - "name": "System config" - }, - { - "description": "Endpoints to view, modify, and validate the system metadata, which includes information about things like admin onboarding status.", - "name": "System metadata" - }, - { - "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": "Tags" - }, - { - "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": "Timeline" - }, - { - "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": "Trash" - }, - { - "description": "Administrative endpoints for managing users, including creating, updating, deleting, and restoring users. Also includes endpoints for resetting passwords and PIN codes.", - "name": "Users (admin)" - }, - { - "description": "Endpoints for viewing and updating the current users, including product key information, profile picture data, onboarding progress, and more.", - "name": "Users" - }, - { - "description": "Endpoints for specialized views, such as the folder view.", - "name": "Views" - }, - { - "description": "A workflow is a set of actions that run whenever a triggering event occurs. Workflows also can include filters to further limit execution.", - "name": "Workflows" - } - ] -} + } +} \ No newline at end of file diff --git a/packages/sdk/src/fetch-client.ts b/packages/sdk/src/fetch-client.ts index 8d7221d96c..e276827af8 100644 --- a/packages/sdk/src/fetch-client.ts +++ b/packages/sdk/src/fetch-client.ts @@ -2296,12 +2296,11 @@ export type DatabaseBackupConfig = { /** Keep last amount */ keepLastAmount: number; }; -export type UploadBackupConfig = { - maxAgeHours: number; -}; export type SystemConfigBackupsDto = { database: DatabaseBackupConfig; - upload: UploadBackupConfig; + upload: { + maxAgeHours: number; + }; }; export type SystemConfigFFmpegRealtimeDto = { /** Enable real-time HLS transcoding (alpha) */ @@ -2515,6 +2514,7 @@ export type SystemConfigNightlyTasksDto = { generateMemories: boolean; /** Missing thumbnails */ missingThumbnails: boolean; + /** Remove stale uploads */ removeStaleUploads: boolean; /** Start time (HH:MM) */ startTime: string; @@ -6763,8 +6763,6 @@ export function startUpload({ contentLength, key, reprDigest, slug, uploadComple return oazapfts.ok(oazapfts.fetchJson<{ status: 200; data: UploadOkDto; - } | { - status: 201; }>(`/upload${QS.query(QS.explode({ key, slug