immich/server/src/enum.ts

748 lines
18 KiB
TypeScript
Raw Normal View History

2024-09-27 10:28:42 -04:00
export enum AuthType {
2025-07-15 14:50:13 -04:00
Password = 'password',
OAuth = 'oauth',
2024-09-27 10:28:42 -04:00
}
2024-10-17 13:17:32 -04:00
export enum ImmichCookie {
2025-07-15 14:50:13 -04:00
AccessToken = 'immich_access_token',
AuthType = 'immich_auth_type',
IsAuthenticated = 'immich_is_authenticated',
SharedLinkToken = 'immich_shared_link_token',
OAuthState = 'immich_oauth_state',
OAuthCodeVerifier = 'immich_oauth_code_verifier',
2024-10-17 13:17:32 -04:00
}
export enum ImmichHeader {
2025-07-15 14:50:13 -04:00
ApiKey = 'x-api-key',
UserToken = 'x-immich-user-token',
SessionToken = 'x-immich-session-token',
SharedLinkKey = 'x-immich-share-key',
SharedLinkSlug = 'x-immich-share-slug',
2025-07-15 14:50:13 -04:00
Checksum = 'x-immich-checksum',
Cid = 'x-immich-cid',
2024-10-17 13:17:32 -04:00
}
export enum ImmichQuery {
2025-07-15 14:50:13 -04:00
SharedLinkKey = 'key',
SharedLinkSlug = 'slug',
2025-07-15 14:50:13 -04:00
ApiKey = 'apiKey',
SessionKey = 'sessionKey',
2024-10-17 13:17:32 -04:00
}
2024-08-15 06:57:01 -04:00
export enum AssetType {
2025-07-15 14:50:13 -04:00
Image = 'IMAGE',
Video = 'VIDEO',
Audio = 'AUDIO',
Other = 'OTHER',
2024-08-15 06:57:01 -04:00
}
export enum AssetFileType {
feat: original-sized previews for non-web-friendly images (#14446) * feat(server): extract full-size previews from RAW images * feat(web): load fullsize preview for RAW images when zoomed in * refactor: tweaks for code review * refactor: rename "converted" preview/assets to "fullsize" * feat(web/server): fullsize preview for non-web-friendly images * feat: tweaks for code review * feat(server): require ASSET_DOWNLOAD premission for fullsize previews * test: fix types and interfaces * chore: gen open-api * feat(server): keep only essential exif in fullsize preview * chore: regen openapi * test: revert unnecessary timeout * feat: move full-size preview config to standalone entry * feat(i18n): update en texts * fix: don't return fullsizePath when disabled * test: full-size previews * test(web): full-size previews * chore: make open-api * feat(server): redirect to preview/original URL when fullsize thumbnail not available * fix(server): delete fullsize preview image on thumbnail regen after fullsize preview turned off * refactor(server): AssetRepository.deleteFiles with Kysely * fix(server): type of MediaRepository.writeExif * minor simplification * minor styling changes and condensed wording * simplify * chore: reuild open-api * test(server): fix media.service tests * test(web): fix photo-viewer test * fix(server): use fullsize image when requested * fix file path extension * formatting * use fullsize when zooming back out or when "display original photos" is enabled * simplify condition --------- Co-authored-by: mertalev <101130780+mertalev@users.noreply.github.com>
2025-04-01 01:24:28 +08:00
/**
* An full/large-size image extracted/converted from RAW photos
*/
2025-07-15 14:50:13 -04:00
FullSize = 'fullsize',
Preview = 'preview',
Thumbnail = 'thumbnail',
}
2024-08-15 06:57:01 -04:00
export enum AlbumUserRole {
2025-07-15 14:50:13 -04:00
Editor = 'editor',
Viewer = 'viewer',
2024-08-15 06:57:01 -04:00
}
export enum AssetOrder {
2025-07-15 14:50:13 -04:00
Asc = 'asc',
Desc = 'desc',
2024-08-15 06:57:01 -04:00
}
export enum DatabaseAction {
2025-07-15 14:50:13 -04:00
Create = 'CREATE',
Update = 'UPDATE',
Delete = 'DELETE',
2024-08-15 06:57:01 -04:00
}
export enum EntityType {
2025-07-15 14:50:13 -04:00
Asset = 'ASSET',
Album = 'ALBUM',
2024-08-15 06:57:01 -04:00
}
export enum MemoryType {
/** pictures taken on this day X years ago */
2025-07-15 14:50:13 -04:00
OnThisDay = 'on_this_day',
2024-08-15 06:57:01 -04:00
}
export enum Permission {
2025-07-15 14:50:13 -04:00
All = 'all',
2025-07-15 14:50:13 -04:00
ActivityCreate = 'activity.create',
ActivityRead = 'activity.read',
ActivityUpdate = 'activity.update',
ActivityDelete = 'activity.delete',
ActivityStatistics = 'activity.statistics',
2025-07-15 14:50:13 -04:00
ApiKeyCreate = 'apiKey.create',
ApiKeyRead = 'apiKey.read',
ApiKeyUpdate = 'apiKey.update',
ApiKeyDelete = 'apiKey.delete',
2024-08-15 06:57:01 -04:00
// ASSET_CREATE = 'asset.create',
2025-07-15 14:50:13 -04:00
AssetRead = 'asset.read',
AssetUpdate = 'asset.update',
AssetDelete = 'asset.delete',
AssetStatistics = 'asset.statistics',
2025-07-15 14:50:13 -04:00
AssetShare = 'asset.share',
AssetView = 'asset.view',
AssetDownload = 'asset.download',
AssetUpload = 'asset.upload',
AssetReplace = 'asset.replace',
2025-07-15 14:50:13 -04:00
AlbumCreate = 'album.create',
AlbumRead = 'album.read',
AlbumUpdate = 'album.update',
AlbumDelete = 'album.delete',
AlbumStatistics = 'album.statistics',
AlbumShare = 'album.share',
AlbumDownload = 'album.download',
AlbumAssetCreate = 'albumAsset.create',
AlbumAssetDelete = 'albumAsset.delete',
AlbumUserCreate = 'albumUser.create',
AlbumUserUpdate = 'albumUser.update',
AlbumUserDelete = 'albumUser.delete',
AuthChangePassword = 'auth.changePassword',
2025-07-15 14:50:13 -04:00
AuthDeviceDelete = 'authDevice.delete',
ArchiveRead = 'archive.read',
DuplicateRead = 'duplicate.read',
DuplicateDelete = 'duplicate.delete',
2025-07-15 14:50:13 -04:00
FaceCreate = 'face.create',
FaceRead = 'face.read',
FaceUpdate = 'face.update',
FaceDelete = 'face.delete',
JobCreate = 'job.create',
JobRead = 'job.read',
2025-07-15 14:50:13 -04:00
LibraryCreate = 'library.create',
LibraryRead = 'library.read',
LibraryUpdate = 'library.update',
LibraryDelete = 'library.delete',
LibraryStatistics = 'library.statistics',
TimelineRead = 'timeline.read',
TimelineDownload = 'timeline.download',
MemoryCreate = 'memory.create',
MemoryRead = 'memory.read',
MemoryUpdate = 'memory.update',
MemoryDelete = 'memory.delete',
MemoryStatistics = 'memory.statistics',
MemoryAssetCreate = 'memoryAsset.create',
MemoryAssetDelete = 'memoryAsset.delete',
2025-07-15 14:50:13 -04:00
NotificationCreate = 'notification.create',
NotificationRead = 'notification.read',
NotificationUpdate = 'notification.update',
NotificationDelete = 'notification.delete',
PartnerCreate = 'partner.create',
PartnerRead = 'partner.read',
PartnerUpdate = 'partner.update',
PartnerDelete = 'partner.delete',
PersonCreate = 'person.create',
PersonRead = 'person.read',
PersonUpdate = 'person.update',
PersonDelete = 'person.delete',
PersonStatistics = 'person.statistics',
PersonMerge = 'person.merge',
PersonReassign = 'person.reassign',
PinCodeCreate = 'pinCode.create',
PinCodeUpdate = 'pinCode.update',
PinCodeDelete = 'pinCode.delete',
ServerAbout = 'server.about',
ServerApkLinks = 'server.apkLinks',
ServerStorage = 'server.storage',
ServerStatistics = 'server.statistics',
ServerVersionCheck = 'server.versionCheck',
ServerLicenseRead = 'serverLicense.read',
ServerLicenseUpdate = 'serverLicense.update',
ServerLicenseDelete = 'serverLicense.delete',
2025-07-15 14:50:13 -04:00
SessionCreate = 'session.create',
SessionRead = 'session.read',
SessionUpdate = 'session.update',
SessionDelete = 'session.delete',
SessionLock = 'session.lock',
SharedLinkCreate = 'sharedLink.create',
SharedLinkRead = 'sharedLink.read',
SharedLinkUpdate = 'sharedLink.update',
SharedLinkDelete = 'sharedLink.delete',
StackCreate = 'stack.create',
StackRead = 'stack.read',
StackUpdate = 'stack.update',
StackDelete = 'stack.delete',
SyncStream = 'sync.stream',
SyncCheckpointRead = 'syncCheckpoint.read',
SyncCheckpointUpdate = 'syncCheckpoint.update',
SyncCheckpointDelete = 'syncCheckpoint.delete',
2025-07-15 14:50:13 -04:00
SystemConfigRead = 'systemConfig.read',
SystemConfigUpdate = 'systemConfig.update',
SystemMetadataRead = 'systemMetadata.read',
SystemMetadataUpdate = 'systemMetadata.update',
TagCreate = 'tag.create',
TagRead = 'tag.read',
TagUpdate = 'tag.update',
TagDelete = 'tag.delete',
TagAsset = 'tag.asset',
UserRead = 'user.read',
UserUpdate = 'user.update',
UserLicenseCreate = 'userLicense.create',
UserLicenseRead = 'userLicense.read',
UserLicenseUpdate = 'userLicense.update',
UserLicenseDelete = 'userLicense.delete',
UserOnboardingRead = 'userOnboarding.read',
UserOnboardingUpdate = 'userOnboarding.update',
UserOnboardingDelete = 'userOnboarding.delete',
UserPreferenceRead = 'userPreference.read',
UserPreferenceUpdate = 'userPreference.update',
UserProfileImageCreate = 'userProfileImage.create',
UserProfileImageRead = 'userProfileImage.read',
UserProfileImageUpdate = 'userProfileImage.update',
UserProfileImageDelete = 'userProfileImage.delete',
AdminUserCreate = 'adminUser.create',
AdminUserRead = 'adminUser.read',
AdminUserUpdate = 'adminUser.update',
AdminUserDelete = 'adminUser.delete',
2025-08-08 15:42:38 -04:00
AdminAuthUnlinkAll = 'adminAuth.unlinkAll',
2024-08-15 06:57:01 -04:00
}
export enum SharedLinkType {
2025-07-15 14:50:13 -04:00
Album = 'ALBUM',
2024-08-15 06:57:01 -04:00
/**
* Individual asset
* or group of assets that are not in an album
*/
2025-07-15 14:50:13 -04:00
Individual = 'INDIVIDUAL',
2024-08-15 06:57:01 -04:00
}
2024-09-27 10:28:42 -04:00
export enum StorageFolder {
2025-07-15 14:50:13 -04:00
EncodedVideo = 'encoded-video',
Library = 'library',
Upload = 'upload',
Profile = 'profile',
Thumbnails = 'thumbs',
Backups = 'backups',
2024-09-27 10:28:42 -04:00
}
2024-08-15 06:57:01 -04:00
export enum SystemMetadataKey {
MediaLocation = 'MediaLocation',
2025-07-15 14:50:13 -04:00
ReverseGeocodingState = 'reverse-geocoding-state',
FacialRecognitionState = 'facial-recognition-state',
MemoriesState = 'memories-state',
AdminOnboarding = 'admin-onboarding',
SystemConfig = 'system-config',
SystemFlags = 'system-flags',
VersionCheckState = 'version-check-state',
License = 'license',
2024-08-15 06:57:01 -04:00
}
export enum UserMetadataKey {
2025-07-15 14:50:13 -04:00
Preferences = 'preferences',
License = 'license',
Onboarding = 'onboarding',
2024-08-15 06:57:01 -04:00
}
export enum UserAvatarColor {
2025-07-15 14:50:13 -04:00
Primary = 'primary',
Pink = 'pink',
Red = 'red',
Yellow = 'yellow',
Blue = 'blue',
Green = 'green',
Purple = 'purple',
Orange = 'orange',
Gray = 'gray',
Amber = 'amber',
2024-08-15 06:57:01 -04:00
}
export enum UserStatus {
2025-07-15 14:50:13 -04:00
Active = 'active',
Removing = 'removing',
Deleted = 'deleted',
2024-08-15 06:57:01 -04:00
}
feat(server): Import face regions from metadata (#6455) * feat: faces-from-metadata - Import face regions from metadata Implements immich-app#1692. - OpenAPI spec changes to accomodate metadata face import configs. New settings to enable the feature. - Updates admin UI compoments - ML faces detection/recognition & Exif/Metadata faces compatibility Signed-off-by: BugFest <bugfest.dev@pm.me> * chore(web): remove unused file confirm-enable-import-faces * chore(web): format metadata-settings * fix(server): faces-from-metadata tests and format * fix(server): code refinements, nullable face asset sourceType * fix(server): Add RegionInfo to ImmichTags interface * fix(server): deleteAllFaces sourceType param can be undefined * fix(server): exiftool-vendored 27.0.0 moves readArgs into ExifToolOptions * fix(server): rename isImportFacesFromMetadataEnabled to isFaceImportEnabled * fix(server): simplify sourceType conditional * fix(server): small fixes * fix(server): handling sourceType * fix(server): sourceType enum * fix(server): refactor metadata applyTaggedFaces * fix(server): create/update signature changes * fix(server): reduce computational cost of Person.getManyByName * fix(server): use faceList instead of faceSet * fix(server): Skip regions without Name defined * fix(mobile): Update open-api (face assets feature changes) * fix(server): Face-Person reconciliation with map/index * fix(server): tags.RegionInfo.AppliedToDimensions must be defined to process face-region * fix(server): fix shared-link.service.ts format * fix(mobile): Update open-api after branch update * simplify * fix(server): minor fixes * fix(server): person create/update methods type enforcement * fix(server): style fixes * fix(server): remove unused metadata code * fix(server): metadata faces unit tests * fix(server): top level config metadata category * fix(server): rename upsertFaces to replaceFaces * fix(server): remove sourceType when unnecessary * fix(server): sourceType as ENUM * fix(server): format fixes * fix(server): fix tests after sourceType ENUM change * fix(server): remove unnecessary JobItem cast * fix(server): fix asset enum imports * fix(open-api): add metadata config * fix(mobile): update open-api after metadata open-api spec changes * fix(web): update web/api metadata config * fix(server): remove duplicated sourceType def * fix(server): update generated sql queries * fix(e2e): tests for metadata face import feature * fix(web): Fix check:typescript * fix(e2e): update subproject ref * fix(server): revert format changes to pass format checks after ci * fix(mobile): update open-api * fix(server,movile,open-api,mobile): sourceType as DB data type * fix(e2e): upload face asset after enabling metadata face import * fix(web): simplify metadata admin settings and i18n keys * Update person.repository.ts Co-authored-by: Jason Rasmussen <jason@rasm.me> * fix(server): asset_faces.sourceType column not nullable * fix(server): simplified syntax * fix(e2e): use SDK for everything except the endpoint being tested * fix(e2e): fix test format * chore: clean up * chore: clean up * chore: update e2e/test-assets --------- Signed-off-by: BugFest <bugfest.dev@pm.me> Co-authored-by: mertalev <101130780+mertalev@users.noreply.github.com> Co-authored-by: Jason Rasmussen <jason@rasm.me>
2024-09-05 00:23:58 +02:00
export enum AssetStatus {
2025-07-15 14:50:13 -04:00
Active = 'active',
Trashed = 'trashed',
Deleted = 'deleted',
}
feat(server): Import face regions from metadata (#6455) * feat: faces-from-metadata - Import face regions from metadata Implements immich-app#1692. - OpenAPI spec changes to accomodate metadata face import configs. New settings to enable the feature. - Updates admin UI compoments - ML faces detection/recognition & Exif/Metadata faces compatibility Signed-off-by: BugFest <bugfest.dev@pm.me> * chore(web): remove unused file confirm-enable-import-faces * chore(web): format metadata-settings * fix(server): faces-from-metadata tests and format * fix(server): code refinements, nullable face asset sourceType * fix(server): Add RegionInfo to ImmichTags interface * fix(server): deleteAllFaces sourceType param can be undefined * fix(server): exiftool-vendored 27.0.0 moves readArgs into ExifToolOptions * fix(server): rename isImportFacesFromMetadataEnabled to isFaceImportEnabled * fix(server): simplify sourceType conditional * fix(server): small fixes * fix(server): handling sourceType * fix(server): sourceType enum * fix(server): refactor metadata applyTaggedFaces * fix(server): create/update signature changes * fix(server): reduce computational cost of Person.getManyByName * fix(server): use faceList instead of faceSet * fix(server): Skip regions without Name defined * fix(mobile): Update open-api (face assets feature changes) * fix(server): Face-Person reconciliation with map/index * fix(server): tags.RegionInfo.AppliedToDimensions must be defined to process face-region * fix(server): fix shared-link.service.ts format * fix(mobile): Update open-api after branch update * simplify * fix(server): minor fixes * fix(server): person create/update methods type enforcement * fix(server): style fixes * fix(server): remove unused metadata code * fix(server): metadata faces unit tests * fix(server): top level config metadata category * fix(server): rename upsertFaces to replaceFaces * fix(server): remove sourceType when unnecessary * fix(server): sourceType as ENUM * fix(server): format fixes * fix(server): fix tests after sourceType ENUM change * fix(server): remove unnecessary JobItem cast * fix(server): fix asset enum imports * fix(open-api): add metadata config * fix(mobile): update open-api after metadata open-api spec changes * fix(web): update web/api metadata config * fix(server): remove duplicated sourceType def * fix(server): update generated sql queries * fix(e2e): tests for metadata face import feature * fix(web): Fix check:typescript * fix(e2e): update subproject ref * fix(server): revert format changes to pass format checks after ci * fix(mobile): update open-api * fix(server,movile,open-api,mobile): sourceType as DB data type * fix(e2e): upload face asset after enabling metadata face import * fix(web): simplify metadata admin settings and i18n keys * Update person.repository.ts Co-authored-by: Jason Rasmussen <jason@rasm.me> * fix(server): asset_faces.sourceType column not nullable * fix(server): simplified syntax * fix(e2e): use SDK for everything except the endpoint being tested * fix(e2e): fix test format * chore: clean up * chore: clean up * chore: update e2e/test-assets --------- Signed-off-by: BugFest <bugfest.dev@pm.me> Co-authored-by: mertalev <101130780+mertalev@users.noreply.github.com> Co-authored-by: Jason Rasmussen <jason@rasm.me>
2024-09-05 00:23:58 +02:00
export enum SourceType {
2025-07-15 14:50:13 -04:00
MachineLearning = 'machine-learning',
Exif = 'exif',
Manual = 'manual',
feat(server): Import face regions from metadata (#6455) * feat: faces-from-metadata - Import face regions from metadata Implements immich-app#1692. - OpenAPI spec changes to accomodate metadata face import configs. New settings to enable the feature. - Updates admin UI compoments - ML faces detection/recognition & Exif/Metadata faces compatibility Signed-off-by: BugFest <bugfest.dev@pm.me> * chore(web): remove unused file confirm-enable-import-faces * chore(web): format metadata-settings * fix(server): faces-from-metadata tests and format * fix(server): code refinements, nullable face asset sourceType * fix(server): Add RegionInfo to ImmichTags interface * fix(server): deleteAllFaces sourceType param can be undefined * fix(server): exiftool-vendored 27.0.0 moves readArgs into ExifToolOptions * fix(server): rename isImportFacesFromMetadataEnabled to isFaceImportEnabled * fix(server): simplify sourceType conditional * fix(server): small fixes * fix(server): handling sourceType * fix(server): sourceType enum * fix(server): refactor metadata applyTaggedFaces * fix(server): create/update signature changes * fix(server): reduce computational cost of Person.getManyByName * fix(server): use faceList instead of faceSet * fix(server): Skip regions without Name defined * fix(mobile): Update open-api (face assets feature changes) * fix(server): Face-Person reconciliation with map/index * fix(server): tags.RegionInfo.AppliedToDimensions must be defined to process face-region * fix(server): fix shared-link.service.ts format * fix(mobile): Update open-api after branch update * simplify * fix(server): minor fixes * fix(server): person create/update methods type enforcement * fix(server): style fixes * fix(server): remove unused metadata code * fix(server): metadata faces unit tests * fix(server): top level config metadata category * fix(server): rename upsertFaces to replaceFaces * fix(server): remove sourceType when unnecessary * fix(server): sourceType as ENUM * fix(server): format fixes * fix(server): fix tests after sourceType ENUM change * fix(server): remove unnecessary JobItem cast * fix(server): fix asset enum imports * fix(open-api): add metadata config * fix(mobile): update open-api after metadata open-api spec changes * fix(web): update web/api metadata config * fix(server): remove duplicated sourceType def * fix(server): update generated sql queries * fix(e2e): tests for metadata face import feature * fix(web): Fix check:typescript * fix(e2e): update subproject ref * fix(server): revert format changes to pass format checks after ci * fix(mobile): update open-api * fix(server,movile,open-api,mobile): sourceType as DB data type * fix(e2e): upload face asset after enabling metadata face import * fix(web): simplify metadata admin settings and i18n keys * Update person.repository.ts Co-authored-by: Jason Rasmussen <jason@rasm.me> * fix(server): asset_faces.sourceType column not nullable * fix(server): simplified syntax * fix(e2e): use SDK for everything except the endpoint being tested * fix(e2e): fix test format * chore: clean up * chore: clean up * chore: update e2e/test-assets --------- Signed-off-by: BugFest <bugfest.dev@pm.me> Co-authored-by: mertalev <101130780+mertalev@users.noreply.github.com> Co-authored-by: Jason Rasmussen <jason@rasm.me>
2024-09-05 00:23:58 +02:00
}
2024-09-16 16:49:12 -04:00
export enum ManualJobName {
2025-07-15 14:50:13 -04:00
PersonCleanup = 'person-cleanup',
TagCleanup = 'tag-cleanup',
UserCleanup = 'user-cleanup',
MemoryCleanup = 'memory-cleanup',
MemoryCreate = 'memory-create',
BackupDatabase = 'backup-database',
2024-09-16 16:49:12 -04:00
}
2024-09-27 10:28:42 -04:00
export enum AssetPathType {
2025-07-15 14:50:13 -04:00
Original = 'original',
FullSize = 'fullsize',
Preview = 'preview',
Thumbnail = 'thumbnail',
EncodedVideo = 'encoded_video',
Sidecar = 'sidecar',
2024-09-27 10:28:42 -04:00
}
export enum PersonPathType {
2025-07-15 14:50:13 -04:00
Face = 'face',
2024-09-27 10:28:42 -04:00
}
export enum UserPathType {
2025-07-15 14:50:13 -04:00
Profile = 'profile',
2024-09-27 10:28:42 -04:00
}
export type PathType = AssetPathType | PersonPathType | UserPathType;
export enum TranscodePolicy {
2025-07-15 14:50:13 -04:00
All = 'all',
Optimal = 'optimal',
Bitrate = 'bitrate',
Required = 'required',
Disabled = 'disabled',
2024-09-27 10:28:42 -04:00
}
export enum TranscodeTarget {
2025-07-15 14:50:13 -04:00
None = 'NONE',
Audio = 'AUDIO',
Video = 'VIDEO',
All = 'ALL',
2024-09-27 10:28:42 -04:00
}
export enum VideoCodec {
H264 = 'h264',
2025-07-15 14:50:13 -04:00
Hevc = 'hevc',
Vp9 = 'vp9',
Av1 = 'av1',
2024-09-27 10:28:42 -04:00
}
export enum AudioCodec {
2025-07-15 14:50:13 -04:00
Mp3 = 'mp3',
Aac = 'aac',
LibOpus = 'libopus',
PcmS16le = 'pcm_s16le',
2024-09-27 10:28:42 -04:00
}
export enum VideoContainer {
2025-07-15 14:50:13 -04:00
Mov = 'mov',
Mp4 = 'mp4',
Ogg = 'ogg',
Webm = 'webm',
2024-09-27 10:28:42 -04:00
}
2025-07-15 14:50:13 -04:00
export enum TranscodeHardwareAcceleration {
Nvenc = 'nvenc',
Qsv = 'qsv',
Vaapi = 'vaapi',
Rkmpp = 'rkmpp',
Disabled = 'disabled',
2024-09-27 10:28:42 -04:00
}
export enum ToneMapping {
2025-07-15 14:50:13 -04:00
Hable = 'hable',
Mobius = 'mobius',
Reinhard = 'reinhard',
Disabled = 'disabled',
2024-09-27 10:28:42 -04:00
}
export enum CQMode {
2025-07-15 14:50:13 -04:00
Auto = 'auto',
Cqp = 'cqp',
Icq = 'icq',
2024-09-27 10:28:42 -04:00
}
export enum Colorspace {
2025-07-15 14:50:13 -04:00
Srgb = 'srgb',
2024-09-27 10:28:42 -04:00
P3 = 'p3',
}
export enum ImageFormat {
2025-07-15 14:50:13 -04:00
Jpeg = 'jpeg',
Webp = 'webp',
2024-09-27 10:28:42 -04:00
}
export enum RawExtractedFormat {
2025-07-15 14:50:13 -04:00
Jpeg = 'jpeg',
Jxl = 'jxl',
}
2024-09-27 10:28:42 -04:00
export enum LogLevel {
2025-07-15 14:50:13 -04:00
Verbose = 'verbose',
Debug = 'debug',
Log = 'log',
Warn = 'warn',
Error = 'error',
Fatal = 'fatal',
2024-09-27 10:28:42 -04:00
}
export enum ApiCustomExtension {
Permission = 'x-immich-permission',
AdminOnly = 'x-immich-admin-only',
}
2024-09-27 10:28:42 -04:00
export enum MetadataKey {
2025-07-15 14:50:13 -04:00
AuthRoute = 'auth_route',
AdminRoute = 'admin_route',
SharedRoute = 'shared_route',
ApiKeySecurity = 'api_key',
EventConfig = 'event_config',
JobConfig = 'job_config',
TelemetryEnabled = 'telemetry_enabled',
2024-09-27 10:28:42 -04:00
}
export enum RouteKey {
2025-07-15 14:50:13 -04:00
Asset = 'assets',
User = 'users',
2024-09-27 10:28:42 -04:00
}
export enum CacheControl {
2025-07-15 14:50:13 -04:00
PrivateWithCache = 'private_with_cache',
PrivateWithoutCache = 'private_without_cache',
None = 'none',
2024-09-27 10:28:42 -04:00
}
export enum ImmichEnvironment {
2025-07-15 14:50:13 -04:00
Development = 'development',
Testing = 'testing',
Production = 'production',
}
2024-10-03 15:28:36 -04:00
export enum ImmichWorker {
2025-07-15 14:50:13 -04:00
Api = 'api',
Microservices = 'microservices',
2024-10-03 15:28:36 -04:00
}
export enum ImmichTelemetry {
2025-07-15 14:50:13 -04:00
Host = 'host',
Api = 'api',
Io = 'io',
Repo = 'repo',
Job = 'job',
}
export enum ExifOrientation {
Horizontal = 1,
MirrorHorizontal = 2,
Rotate180 = 3,
MirrorVertical = 4,
MirrorHorizontalRotate270CW = 5,
Rotate90CW = 6,
MirrorHorizontalRotate90CW = 7,
Rotate270CW = 8,
}
2025-02-11 14:08:13 -05:00
export enum DatabaseExtension {
2025-07-15 14:50:13 -04:00
Cube = 'cube',
EarthDistance = 'earthdistance',
Vector = 'vector',
Vectors = 'vectors',
VectorChord = 'vchord',
2025-02-11 14:08:13 -05:00
}
2025-02-11 15:12:31 -05:00
export enum BootstrapEventPriority {
// Database service should be initialized before anything else, most other services need database access
DatabaseService = -200,
// Detect and configure the media location before jobs are queued which may use it
StorageService = -195,
// Other services may need to queue jobs on bootstrap.
JobService = -190,
2025-02-11 15:12:31 -05:00
// Initialise config after other bootstrap services, stop other services from using config on bootstrap
SystemConfig = 100,
}
2025-02-11 17:15:56 -05:00
export enum QueueName {
2025-07-15 14:50:13 -04:00
ThumbnailGeneration = 'thumbnailGeneration',
MetadataExtraction = 'metadataExtraction',
VideoConversion = 'videoConversion',
FaceDetection = 'faceDetection',
FacialRecognition = 'facialRecognition',
SmartSearch = 'smartSearch',
DuplicateDetection = 'duplicateDetection',
BackgroundTask = 'backgroundTask',
StorageTemplateMigration = 'storageTemplateMigration',
Migration = 'migration',
Search = 'search',
Sidecar = 'sidecar',
Library = 'library',
Notification = 'notifications',
BackupDatabase = 'backupDatabase',
2025-02-11 17:15:56 -05:00
}
export enum JobName {
2025-07-15 18:39:00 -04:00
AssetDelete = 'AssetDelete',
AssetDeleteCheck = 'AssetDeleteCheck',
AssetDetectFacesQueueAll = 'AssetDetectFacesQueueAll',
AssetDetectFaces = 'AssetDetectFaces',
AssetDetectDuplicatesQueueAll = 'AssetDetectDuplicatesQueueAll',
AssetDetectDuplicates = 'AssetDetectDuplicates',
AssetEncodeVideoQueueAll = 'AssetEncodeVideoQueueAll',
AssetEncodeVideo = 'AssetEncodeVideo',
AssetEmptyTrash = 'AssetEmptyTrash',
AssetExtractMetadataQueueAll = 'AssetExtractMetadataQueueAll',
AssetExtractMetadata = 'AssetExtractMetadata',
AssetFileMigration = 'AssetFileMigration',
AssetGenerateThumbnailsQueueAll = 'AssetGenerateThumbnailsQueueAll',
AssetGenerateThumbnails = 'AssetGenerateThumbnails',
2025-02-11 17:15:56 -05:00
2025-07-15 18:39:00 -04:00
AuditLogCleanup = 'AuditLogCleanup',
2025-02-11 17:15:56 -05:00
2025-07-15 18:39:00 -04:00
DatabaseBackup = 'DatabaseBackup',
2025-02-11 17:15:56 -05:00
2025-07-15 18:39:00 -04:00
FacialRecognitionQueueAll = 'FacialRecognitionQueueAll',
FacialRecognition = 'FacialRecognition',
2025-02-11 17:15:56 -05:00
2025-07-15 18:39:00 -04:00
FileDelete = 'FileDelete',
FileMigrationQueueAll = 'FileMigrationQueueAll',
2025-02-11 17:15:56 -05:00
2025-07-15 18:39:00 -04:00
LibraryDeleteCheck = 'LibraryDeleteCheck',
LibraryDelete = 'LibraryDelete',
LibraryRemoveAsset = 'LibraryRemoveAsset',
LibrarySyncAssetsQueueAll = 'LibraryScanAssetsQueueAll',
LibrarySyncAssets = 'LibrarySyncAssets',
LibrarySyncFilesQueueAll = 'LibrarySyncFilesQueueAll',
LibrarySyncFiles = 'LibrarySyncFiles',
LibraryScanQueueAll = 'LibraryScanQueueAll',
2025-02-11 17:15:56 -05:00
2025-07-15 18:39:00 -04:00
MemoryCleanup = 'MemoryCleanup',
MemoryGenerate = 'MemoryGenerate',
2025-02-11 17:15:56 -05:00
2025-07-15 18:39:00 -04:00
NotificationsCleanup = 'NotificationsCleanup',
2025-02-11 17:15:56 -05:00
2025-07-15 18:39:00 -04:00
NotifyUserSignup = 'NotifyUserSignup',
NotifyAlbumInvite = 'NotifyAlbumInvite',
NotifyAlbumUpdate = 'NotifyAlbumUpdate',
2025-02-11 17:15:56 -05:00
2025-07-15 18:39:00 -04:00
UserDelete = 'UserDelete',
UserDeleteCheck = 'UserDeleteCheck',
UserSyncUsage = 'UserSyncUsage',
PersonCleanup = 'PersonCleanup',
PersonFileMigration = 'PersonFileMigration',
PersonGenerateThumbnail = 'PersonGenerateThumbnail',
SessionCleanup = 'SessionCleanup',
SendMail = 'SendMail',
SidecarQueueAll = 'SidecarQueueAll',
SidecarDiscovery = 'SidecarDiscovery',
SidecarSync = 'SidecarSync',
SidecarWrite = 'SidecarWrite',
SmartSearchQueueAll = 'SmartSearchQueueAll',
SmartSearch = 'SmartSearch',
StorageTemplateMigration = 'StorageTemplateMigration',
StorageTemplateMigrationSingle = 'StorageTemplateMigrationSingle',
TagCleanup = 'TagCleanup',
VersionCheck = 'VersionCheck',
2025-02-11 17:15:56 -05:00
}
export enum JobCommand {
2025-07-15 14:50:13 -04:00
Start = 'start',
Pause = 'pause',
Resume = 'resume',
Empty = 'empty',
ClearFailed = 'clear-failed',
2025-02-11 17:15:56 -05:00
}
export enum JobStatus {
2025-07-15 14:50:13 -04:00
Success = 'success',
Failed = 'failed',
Skipped = 'skipped',
2025-02-11 17:15:56 -05:00
}
export enum QueueCleanType {
2025-07-15 14:50:13 -04:00
Failed = 'failed',
2025-02-11 17:15:56 -05:00
}
export enum VectorIndex {
2025-07-15 14:50:13 -04:00
Clip = 'clip_index',
Face = 'face_index',
2025-02-11 17:15:56 -05:00
}
export enum DatabaseLock {
GeodataImport = 100,
Migrations = 200,
SystemFileMounts = 300,
StorageTemplateMigration = 420,
VersionHistory = 500,
CLIPDimSize = 512,
Library = 1337,
2025-07-11 17:32:10 -04:00
NightlyJobs = 600,
MediaLocation = 700,
2025-02-11 17:15:56 -05:00
GetSystemConfig = 69,
BackupDatabase = 42,
MemoryCreation = 777,
2025-02-11 17:15:56 -05:00
}
export enum SyncRequestType {
AlbumsV1 = 'AlbumsV1',
AlbumUsersV1 = 'AlbumUsersV1',
AlbumToAssetsV1 = 'AlbumToAssetsV1',
AlbumAssetsV1 = 'AlbumAssetsV1',
AlbumAssetExifsV1 = 'AlbumAssetExifsV1',
2025-06-30 16:41:06 -04:00
AssetsV1 = 'AssetsV1',
AssetExifsV1 = 'AssetExifsV1',
2025-07-23 09:59:33 -04:00
AuthUsersV1 = 'AuthUsersV1',
2025-06-27 12:20:13 -04:00
MemoriesV1 = 'MemoriesV1',
MemoryToAssetsV1 = 'MemoryToAssetsV1',
2025-06-30 16:41:06 -04:00
PartnersV1 = 'PartnersV1',
PartnerAssetsV1 = 'PartnerAssetsV1',
PartnerAssetExifsV1 = 'PartnerAssetExifsV1',
PartnerStacksV1 = 'PartnerStacksV1',
2025-06-30 15:26:41 -04:00
StacksV1 = 'StacksV1',
2025-06-30 16:41:06 -04:00
UsersV1 = 'UsersV1',
PeopleV1 = 'PeopleV1',
AssetFacesV1 = 'AssetFacesV1',
UserMetadataV1 = 'UserMetadataV1',
}
export enum SyncEntityType {
2025-07-23 09:59:33 -04:00
AuthUserV1 = 'AuthUserV1',
UserV1 = 'UserV1',
UserDeleteV1 = 'UserDeleteV1',
AssetV1 = 'AssetV1',
AssetDeleteV1 = 'AssetDeleteV1',
AssetExifV1 = 'AssetExifV1',
2025-06-27 12:20:13 -04:00
PartnerV1 = 'PartnerV1',
PartnerDeleteV1 = 'PartnerDeleteV1',
PartnerAssetV1 = 'PartnerAssetV1',
PartnerAssetBackfillV1 = 'PartnerAssetBackfillV1',
PartnerAssetDeleteV1 = 'PartnerAssetDeleteV1',
PartnerAssetExifV1 = 'PartnerAssetExifV1',
PartnerAssetExifBackfillV1 = 'PartnerAssetExifBackfillV1',
2025-06-30 16:41:06 -04:00
PartnerStackBackfillV1 = 'PartnerStackBackfillV1',
PartnerStackDeleteV1 = 'PartnerStackDeleteV1',
PartnerStackV1 = 'PartnerStackV1',
AlbumV1 = 'AlbumV1',
AlbumDeleteV1 = 'AlbumDeleteV1',
2025-06-27 12:20:13 -04:00
AlbumUserV1 = 'AlbumUserV1',
2025-06-18 10:48:11 -04:00
AlbumUserBackfillV1 = 'AlbumUserBackfillV1',
AlbumUserDeleteV1 = 'AlbumUserDeleteV1',
2025-06-27 12:20:13 -04:00
AlbumAssetCreateV1 = 'AlbumAssetCreateV1',
AlbumAssetUpdateV1 = 'AlbumAssetUpdateV1',
AlbumAssetBackfillV1 = 'AlbumAssetBackfillV1',
AlbumAssetExifCreateV1 = 'AlbumAssetExifCreateV1',
AlbumAssetExifUpdateV1 = 'AlbumAssetExifUpdateV1',
AlbumAssetExifBackfillV1 = 'AlbumAssetExifBackfillV1',
2025-06-27 12:20:13 -04:00
AlbumToAssetV1 = 'AlbumToAssetV1',
AlbumToAssetDeleteV1 = 'AlbumToAssetDeleteV1',
AlbumToAssetBackfillV1 = 'AlbumToAssetBackfillV1',
2025-06-27 12:20:13 -04:00
MemoryV1 = 'MemoryV1',
MemoryDeleteV1 = 'MemoryDeleteV1',
MemoryToAssetV1 = 'MemoryToAssetV1',
MemoryToAssetDeleteV1 = 'MemoryToAssetDeleteV1',
2025-06-30 15:26:41 -04:00
StackV1 = 'StackV1',
StackDeleteV1 = 'StackDeleteV1',
PersonV1 = 'PersonV1',
PersonDeleteV1 = 'PersonDeleteV1',
AssetFaceV1 = 'AssetFaceV1',
AssetFaceDeleteV1 = 'AssetFaceDeleteV1',
UserMetadataV1 = 'UserMetadataV1',
UserMetadataDeleteV1 = 'UserMetadataDeleteV1',
SyncAckV1 = 'SyncAckV1',
2025-07-11 09:38:02 -04:00
SyncResetV1 = 'SyncResetV1',
}
export enum NotificationLevel {
Success = 'success',
Error = 'error',
Warning = 'warning',
Info = 'info',
}
export enum NotificationType {
JobFailed = 'JobFailed',
BackupFailed = 'BackupFailed',
SystemMessage = 'SystemMessage',
Custom = 'Custom',
}
export enum OAuthTokenEndpointAuthMethod {
2025-07-15 14:50:13 -04:00
ClientSecretPost = 'client_secret_post',
ClientSecretBasic = 'client_secret_basic',
}
export enum DatabaseSslMode {
Disable = 'disable',
Allow = 'allow',
Prefer = 'prefer',
Require = 'require',
VerifyFull = 'verify-full',
}
export enum AssetVisibility {
2025-07-15 14:50:13 -04:00
Archive = 'archive',
Timeline = 'timeline',
/**
* Video part of the LivePhotos and MotionPhotos
*/
2025-07-15 14:50:13 -04:00
Hidden = 'hidden',
Locked = 'locked',
}
2025-07-11 17:32:10 -04:00
export enum CronJob {
LibraryScan = 'LibraryScan',
NightlyJobs = 'NightlyJobs',
}