Sergey Katsubo 4a384bca86
fix(server): opus handling as accepted audio codec in transcode policy (#26736)
* Fix opus handling as accepted audio codec in transcode policy

Fix the issue when opus is among accepted audio codecs in transcode policy
(which is default) but it still triggers transcoding because the codec name
from ffprobe (opus) does not match `libopus` literal in Immich.

Make a distinction between a codec name and encoder:
- codec name: switch to `opus` as the audio codec name. This matches what ffprobe
returns for a media file with opus audio.
- encoder: continue using the `libopus` encoder in ffmpeg.

* Add unit tests for accepted audio codecs and for libopus encoder

* Add db migration for ffmpeg.targetAudioCodec opus

* backward compatibility

* tweak

* noisy logs

* full mapping

* make check happy

* mark deprecated

* update api

* indexOf

---------

Co-authored-by: mertalev <101130780+mertalev@users.noreply.github.com>
2026-03-07 13:08:42 -05:00
..

openapi

Immich API

This Dart package is automatically generated by the OpenAPI Generator project:

  • API version: 2.5.6
  • Generator version: 7.8.0
  • Build package: org.openapitools.codegen.languages.DartClientCodegen

Requirements

Dart 2.12 or later

Installation & Usage

Github

If this Dart package is published to Github, add the following dependency to your pubspec.yaml

dependencies:
  openapi:
    git: https://github.com/GIT_USER_ID/GIT_REPO_ID.git

Local

To use the package in your local drive, add the following dependency to your pubspec.yaml

dependencies:
  openapi:
    path: /path/to/openapi

Tests

TODO

Getting Started

Please follow the installation procedure and then run the following:

import 'package:openapi/api.dart';

// TODO Configure API key authorization: cookie
//defaultApiClient.getAuthentication<ApiKeyAuth>('cookie').apiKey = 'YOUR_API_KEY';
// uncomment below to setup prefix (e.g. Bearer) for API key, if needed
//defaultApiClient.getAuthentication<ApiKeyAuth>('cookie').apiKeyPrefix = 'Bearer';
// TODO Configure API key authorization: api_key
//defaultApiClient.getAuthentication<ApiKeyAuth>('api_key').apiKey = 'YOUR_API_KEY';
// uncomment below to setup prefix (e.g. Bearer) for API key, if needed
//defaultApiClient.getAuthentication<ApiKeyAuth>('api_key').apiKeyPrefix = 'Bearer';
// TODO Configure HTTP Bearer authorization: bearer
// Case 1. Use String Token
//defaultApiClient.getAuthentication<HttpBearerAuth>('bearer').setAccessToken('YOUR_ACCESS_TOKEN');
// Case 2. Use Function which generate token.
// String yourTokenGeneratorFunction() { ... }
//defaultApiClient.getAuthentication<HttpBearerAuth>('bearer').setAccessToken(yourTokenGeneratorFunction);

final api_instance = APIKeysApi();
final aPIKeyCreateDto = APIKeyCreateDto(); // APIKeyCreateDto | 

try {
    final result = api_instance.createApiKey(aPIKeyCreateDto);
    print(result);
} catch (e) {
    print('Exception when calling APIKeysApi->createApiKey: $e\n');
}

Documentation for API Endpoints

All URIs are relative to /api

Class Method HTTP request Description
APIKeysApi createApiKey POST /api-keys Create an API key
APIKeysApi deleteApiKey DELETE /api-keys/{id} Delete an API key
APIKeysApi getApiKey GET /api-keys/{id} Retrieve an API key
APIKeysApi getApiKeys GET /api-keys List all API keys
APIKeysApi getMyApiKey GET /api-keys/me Retrieve the current API key
APIKeysApi updateApiKey PUT /api-keys/{id} Update an API key
ActivitiesApi createActivity POST /activities Create an activity
ActivitiesApi deleteActivity DELETE /activities/{id} Delete an activity
ActivitiesApi getActivities GET /activities List all activities
ActivitiesApi getActivityStatistics GET /activities/statistics Retrieve activity statistics
AlbumsApi addAssetsToAlbum PUT /albums/{id}/assets Add assets to an album
AlbumsApi addAssetsToAlbums PUT /albums/assets Add assets to albums
AlbumsApi addUsersToAlbum PUT /albums/{id}/users Share album with users
AlbumsApi createAlbum POST /albums Create an album
AlbumsApi deleteAlbum DELETE /albums/{id} Delete an album
AlbumsApi getAlbumInfo GET /albums/{id} Retrieve an album
AlbumsApi getAlbumStatistics GET /albums/statistics Retrieve album statistics
AlbumsApi getAllAlbums GET /albums List all albums
AlbumsApi removeAssetFromAlbum DELETE /albums/{id}/assets Remove assets from an album
AlbumsApi removeUserFromAlbum DELETE /albums/{id}/user/{userId} Remove user from album
AlbumsApi updateAlbumInfo PATCH /albums/{id} Update an album
AlbumsApi updateAlbumUser PUT /albums/{id}/user/{userId} Update user role
AssetsApi checkBulkUpload POST /assets/bulk-upload-check Check bulk upload
AssetsApi checkExistingAssets POST /assets/exist Check existing assets
AssetsApi copyAsset PUT /assets/copy Copy asset
AssetsApi deleteAssetMetadata DELETE /assets/{id}/metadata/{key} Delete asset metadata by key
AssetsApi deleteAssets DELETE /assets Delete assets
AssetsApi deleteBulkAssetMetadata DELETE /assets/metadata Delete asset metadata
AssetsApi downloadAsset GET /assets/{id}/original Download original asset
AssetsApi editAsset PUT /assets/{id}/edits Apply edits to an existing asset
AssetsApi getAllUserAssetsByDeviceId GET /assets/device/{deviceId} Retrieve assets by device ID
AssetsApi getAssetEdits GET /assets/{id}/edits Retrieve edits for an existing asset
AssetsApi getAssetInfo GET /assets/{id} Retrieve an asset
AssetsApi getAssetMetadata GET /assets/{id}/metadata Get asset metadata
AssetsApi getAssetMetadataByKey GET /assets/{id}/metadata/{key} Retrieve asset metadata by key
AssetsApi getAssetOcr GET /assets/{id}/ocr Retrieve asset OCR data
AssetsApi getAssetStatistics GET /assets/statistics Get asset statistics
AssetsApi getRandom GET /assets/random Get random assets
AssetsApi playAssetVideo GET /assets/{id}/video/playback Play asset video
AssetsApi removeAssetEdits DELETE /assets/{id}/edits Remove edits from an existing asset
AssetsApi replaceAsset PUT /assets/{id}/original Replace asset
AssetsApi runAssetJobs POST /assets/jobs Run an asset job
AssetsApi updateAsset PUT /assets/{id} Update an asset
AssetsApi updateAssetMetadata PUT /assets/{id}/metadata Update asset metadata
AssetsApi updateAssets PUT /assets Update assets
AssetsApi updateBulkAssetMetadata PUT /assets/metadata Upsert asset metadata
AssetsApi uploadAsset POST /assets Upload asset
AssetsApi viewAsset GET /assets/{id}/thumbnail View asset thumbnail
AuthenticationApi changePassword POST /auth/change-password Change password
AuthenticationApi changePinCode PUT /auth/pin-code Change pin code
AuthenticationApi finishOAuth POST /oauth/callback Finish OAuth
AuthenticationApi getAuthStatus GET /auth/status Retrieve auth status
AuthenticationApi linkOAuthAccount POST /oauth/link Link OAuth account
AuthenticationApi lockAuthSession POST /auth/session/lock Lock auth session
AuthenticationApi login POST /auth/login Login
AuthenticationApi logout POST /auth/logout Logout
AuthenticationApi redirectOAuthToMobile GET /oauth/mobile-redirect Redirect OAuth to mobile
AuthenticationApi resetPinCode DELETE /auth/pin-code Reset pin code
AuthenticationApi setupPinCode POST /auth/pin-code Setup pin code
AuthenticationApi signUpAdmin POST /auth/admin-sign-up Register admin
AuthenticationApi startOAuth POST /oauth/authorize Start OAuth
AuthenticationApi unlinkOAuthAccount POST /oauth/unlink Unlink OAuth account
AuthenticationApi unlockAuthSession POST /auth/session/unlock Unlock auth session
AuthenticationApi validateAccessToken POST /auth/validateToken Validate access token
AuthenticationAdminApi unlinkAllOAuthAccountsAdmin POST /admin/auth/unlink-all Unlink all OAuth accounts
DatabaseBackupsAdminApi deleteDatabaseBackup DELETE /admin/database-backups Delete database backup
DatabaseBackupsAdminApi downloadDatabaseBackup GET /admin/database-backups/{filename} Download database backup
DatabaseBackupsAdminApi listDatabaseBackups GET /admin/database-backups List database backups
DatabaseBackupsAdminApi startDatabaseRestoreFlow POST /admin/database-backups/start-restore Start database backup restore flow
DatabaseBackupsAdminApi uploadDatabaseBackup POST /admin/database-backups/upload Upload database backup
DeprecatedApi createPartnerDeprecated POST /partners/{id} Create a partner
DeprecatedApi getAllUserAssetsByDeviceId GET /assets/device/{deviceId} Retrieve assets by device ID
DeprecatedApi getDeltaSync POST /sync/delta-sync Get delta sync for user
DeprecatedApi getFullSyncForUser POST /sync/full-sync Get full sync for user
DeprecatedApi getQueuesLegacy GET /jobs Retrieve queue counts and status
DeprecatedApi getRandom GET /assets/random Get random assets
DeprecatedApi replaceAsset PUT /assets/{id}/original Replace asset
DeprecatedApi runQueueCommandLegacy PUT /jobs/{name} Run jobs
DownloadApi downloadArchive POST /download/archive Download asset archive
DownloadApi getDownloadInfo POST /download/info Retrieve download information
DuplicatesApi deleteDuplicate DELETE /duplicates/{id} Delete a duplicate
DuplicatesApi deleteDuplicates DELETE /duplicates Delete duplicates
DuplicatesApi getAssetDuplicates GET /duplicates Retrieve duplicates
FacesApi createFace POST /faces Create a face
FacesApi deleteFace DELETE /faces/{id} Delete a face
FacesApi getFaces GET /faces Retrieve faces for asset
FacesApi reassignFacesById PUT /faces/{id} Re-assign a face to another person
JobsApi createJob POST /jobs Create a manual job
JobsApi getQueuesLegacy GET /jobs Retrieve queue counts and status
JobsApi runQueueCommandLegacy PUT /jobs/{name} Run jobs
LibrariesApi createLibrary POST /libraries Create a library
LibrariesApi deleteLibrary DELETE /libraries/{id} Delete a library
LibrariesApi getAllLibraries GET /libraries Retrieve libraries
LibrariesApi getLibrary GET /libraries/{id} Retrieve a library
LibrariesApi getLibraryStatistics GET /libraries/{id}/statistics Retrieve library statistics
LibrariesApi scanLibrary POST /libraries/{id}/scan Scan a library
LibrariesApi updateLibrary PUT /libraries/{id} Update a library
LibrariesApi validate POST /libraries/{id}/validate Validate library settings
MaintenanceAdminApi detectPriorInstall GET /admin/maintenance/detect-install Detect existing install
MaintenanceAdminApi getMaintenanceStatus GET /admin/maintenance/status Get maintenance mode status
MaintenanceAdminApi maintenanceLogin POST /admin/maintenance/login Log into maintenance mode
MaintenanceAdminApi setMaintenanceMode POST /admin/maintenance Set maintenance mode
MapApi getMapMarkers GET /map/markers Retrieve map markers
MapApi reverseGeocode GET /map/reverse-geocode Reverse geocode coordinates
MemoriesApi addMemoryAssets PUT /memories/{id}/assets Add assets to a memory
MemoriesApi createMemory POST /memories Create a memory
MemoriesApi deleteMemory DELETE /memories/{id} Delete a memory
MemoriesApi getMemory GET /memories/{id} Retrieve a memory
MemoriesApi memoriesStatistics GET /memories/statistics Retrieve memories statistics
MemoriesApi removeMemoryAssets DELETE /memories/{id}/assets Remove assets from a memory
MemoriesApi searchMemories GET /memories Retrieve memories
MemoriesApi updateMemory PUT /memories/{id} Update a memory
NotificationsApi deleteNotification DELETE /notifications/{id} Delete a notification
NotificationsApi deleteNotifications DELETE /notifications Delete notifications
NotificationsApi getNotification GET /notifications/{id} Get a notification
NotificationsApi getNotifications GET /notifications Retrieve notifications
NotificationsApi updateNotification PUT /notifications/{id} Update a notification
NotificationsApi updateNotifications PUT /notifications Update notifications
NotificationsAdminApi createNotification POST /admin/notifications Create a notification
NotificationsAdminApi getNotificationTemplateAdmin POST /admin/notifications/templates/{name} Render email template
NotificationsAdminApi sendTestEmailAdmin POST /admin/notifications/test-email Send test email
PartnersApi createPartner POST /partners Create a partner
PartnersApi createPartnerDeprecated POST /partners/{id} Create a partner
PartnersApi getPartners GET /partners Retrieve partners
PartnersApi removePartner DELETE /partners/{id} Remove a partner
PartnersApi updatePartner PUT /partners/{id} Update a partner
PeopleApi createPerson POST /people Create a person
PeopleApi deletePeople DELETE /people Delete people
PeopleApi deletePerson DELETE /people/{id} Delete person
PeopleApi getAllPeople GET /people Get all people
PeopleApi getPerson GET /people/{id} Get a person
PeopleApi getPersonStatistics GET /people/{id}/statistics Get person statistics
PeopleApi getPersonThumbnail GET /people/{id}/thumbnail Get person thumbnail
PeopleApi mergePerson POST /people/{id}/merge Merge people
PeopleApi reassignFaces PUT /people/{id}/reassign Reassign faces
PeopleApi updatePeople PUT /people Update people
PeopleApi updatePerson PUT /people/{id} Update person
PluginsApi getPlugin GET /plugins/{id} Retrieve a plugin
PluginsApi getPluginTriggers GET /plugins/triggers List all plugin triggers
PluginsApi getPlugins GET /plugins List all plugins
QueuesApi emptyQueue DELETE /queues/{name}/jobs Empty a queue
QueuesApi getQueue GET /queues/{name} Retrieve a queue
QueuesApi getQueueJobs GET /queues/{name}/jobs Retrieve queue jobs
QueuesApi getQueues GET /queues List all queues
QueuesApi updateQueue PUT /queues/{name} Update a queue
SearchApi getAssetsByCity GET /search/cities Retrieve assets by city
SearchApi getExploreData GET /search/explore Retrieve explore data
SearchApi getSearchSuggestions GET /search/suggestions Retrieve search suggestions
SearchApi searchAssetStatistics POST /search/statistics Search asset statistics
SearchApi searchAssets POST /search/metadata Search assets by metadata
SearchApi searchLargeAssets POST /search/large-assets Search large assets
SearchApi searchPerson GET /search/person Search people
SearchApi searchPlaces GET /search/places Search places
SearchApi searchRandom POST /search/random Search random assets
SearchApi searchSmart POST /search/smart Smart asset search
ServerApi deleteServerLicense DELETE /server/license Delete server product key
ServerApi getAboutInfo GET /server/about Get server information
ServerApi getApkLinks GET /server/apk-links Get APK links
ServerApi getServerConfig GET /server/config Get config
ServerApi getServerFeatures GET /server/features Get features
ServerApi getServerLicense GET /server/license Get product key
ServerApi getServerStatistics GET /server/statistics Get statistics
ServerApi getServerVersion GET /server/version Get server version
ServerApi getStorage GET /server/storage Get storage
ServerApi getSupportedMediaTypes GET /server/media-types Get supported media types
ServerApi getTheme GET /server/theme Get theme
ServerApi getVersionCheck GET /server/version-check Get version check status
ServerApi getVersionHistory GET /server/version-history Get version history
ServerApi pingServer GET /server/ping Ping
ServerApi setServerLicense PUT /server/license Set server product key
SessionsApi createSession POST /sessions Create a session
SessionsApi deleteAllSessions DELETE /sessions Delete all sessions
SessionsApi deleteSession DELETE /sessions/{id} Delete a session
SessionsApi getSessions GET /sessions Retrieve sessions
SessionsApi lockSession POST /sessions/{id}/lock Lock a session
SessionsApi updateSession PUT /sessions/{id} Update a session
SharedLinksApi addSharedLinkAssets PUT /shared-links/{id}/assets Add assets to a shared link
SharedLinksApi createSharedLink POST /shared-links Create a shared link
SharedLinksApi getAllSharedLinks GET /shared-links Retrieve all shared links
SharedLinksApi getMySharedLink GET /shared-links/me Retrieve current shared link
SharedLinksApi getSharedLinkById GET /shared-links/{id} Retrieve a shared link
SharedLinksApi removeSharedLink DELETE /shared-links/{id} Delete a shared link
SharedLinksApi removeSharedLinkAssets DELETE /shared-links/{id}/assets Remove assets from a shared link
SharedLinksApi sharedLinkLogin POST /shared-links/login Shared link login
SharedLinksApi updateSharedLink PATCH /shared-links/{id} Update a shared link
StacksApi createStack POST /stacks Create a stack
StacksApi deleteStack DELETE /stacks/{id} Delete a stack
StacksApi deleteStacks DELETE /stacks Delete stacks
StacksApi getStack GET /stacks/{id} Retrieve a stack
StacksApi removeAssetFromStack DELETE /stacks/{id}/assets/{assetId} Remove an asset from a stack
StacksApi searchStacks GET /stacks Retrieve stacks
StacksApi updateStack PUT /stacks/{id} Update a stack
SyncApi deleteSyncAck DELETE /sync/ack Delete acknowledgements
SyncApi getDeltaSync POST /sync/delta-sync Get delta sync for user
SyncApi getFullSyncForUser POST /sync/full-sync Get full sync for user
SyncApi getSyncAck GET /sync/ack Retrieve acknowledgements
SyncApi getSyncStream POST /sync/stream Stream sync changes
SyncApi sendSyncAck POST /sync/ack Acknowledge changes
SystemConfigApi getConfig GET /system-config Get system configuration
SystemConfigApi getConfigDefaults GET /system-config/defaults Get system configuration defaults
SystemConfigApi getStorageTemplateOptions GET /system-config/storage-template-options Get storage template options
SystemConfigApi updateConfig PUT /system-config Update system configuration
SystemMetadataApi getAdminOnboarding GET /system-metadata/admin-onboarding Retrieve admin onboarding
SystemMetadataApi getReverseGeocodingState GET /system-metadata/reverse-geocoding-state Retrieve reverse geocoding state
SystemMetadataApi getVersionCheckState GET /system-metadata/version-check-state Retrieve version check state
SystemMetadataApi updateAdminOnboarding POST /system-metadata/admin-onboarding Update admin onboarding
TagsApi bulkTagAssets PUT /tags/assets Tag assets
TagsApi createTag POST /tags Create a tag
TagsApi deleteTag DELETE /tags/{id} Delete a tag
TagsApi getAllTags GET /tags Retrieve tags
TagsApi getTagById GET /tags/{id} Retrieve a tag
TagsApi tagAssets PUT /tags/{id}/assets Tag assets
TagsApi untagAssets DELETE /tags/{id}/assets Untag assets
TagsApi updateTag PUT /tags/{id} Update a tag
TagsApi upsertTags PUT /tags Upsert tags
TimelineApi getTimeBucket GET /timeline/bucket Get time bucket
TimelineApi getTimeBuckets GET /timeline/buckets Get time buckets
TrashApi emptyTrash POST /trash/empty Empty trash
TrashApi restoreAssets POST /trash/restore/assets Restore assets
TrashApi restoreTrash POST /trash/restore Restore trash
UsersApi createProfileImage POST /users/profile-image Create user profile image
UsersApi deleteProfileImage DELETE /users/profile-image Delete user profile image
UsersApi deleteUserLicense DELETE /users/me/license Delete user product key
UsersApi deleteUserOnboarding DELETE /users/me/onboarding Delete user onboarding
UsersApi getMyPreferences GET /users/me/preferences Get my preferences
UsersApi getMyUser GET /users/me Get current user
UsersApi getProfileImage GET /users/{id}/profile-image Retrieve user profile image
UsersApi getUser GET /users/{id} Retrieve a user
UsersApi getUserLicense GET /users/me/license Retrieve user product key
UsersApi getUserOnboarding GET /users/me/onboarding Retrieve user onboarding
UsersApi searchUsers GET /users Get all users
UsersApi setUserLicense PUT /users/me/license Set user product key
UsersApi setUserOnboarding PUT /users/me/onboarding Update user onboarding
UsersApi updateMyPreferences PUT /users/me/preferences Update my preferences
UsersApi updateMyUser PUT /users/me Update current user
UsersAdminApi createUserAdmin POST /admin/users Create a user
UsersAdminApi deleteUserAdmin DELETE /admin/users/{id} Delete a user
UsersAdminApi getUserAdmin GET /admin/users/{id} Retrieve a user
UsersAdminApi getUserPreferencesAdmin GET /admin/users/{id}/preferences Retrieve user preferences
UsersAdminApi getUserSessionsAdmin GET /admin/users/{id}/sessions Retrieve user sessions
UsersAdminApi getUserStatisticsAdmin GET /admin/users/{id}/statistics Retrieve user statistics
UsersAdminApi restoreUserAdmin POST /admin/users/{id}/restore Restore a deleted user
UsersAdminApi searchUsersAdmin GET /admin/users Search users
UsersAdminApi updateUserAdmin PUT /admin/users/{id} Update a user
UsersAdminApi updateUserPreferencesAdmin PUT /admin/users/{id}/preferences Update user preferences
ViewsApi getAssetsByOriginalPath GET /view/folder Retrieve assets by original path
ViewsApi getUniqueOriginalPaths GET /view/folder/unique-paths Retrieve unique paths
WorkflowsApi createWorkflow POST /workflows Create a workflow
WorkflowsApi deleteWorkflow DELETE /workflows/{id} Delete a workflow
WorkflowsApi getWorkflow GET /workflows/{id} Retrieve a workflow
WorkflowsApi getWorkflows GET /workflows List all workflows
WorkflowsApi updateWorkflow PUT /workflows/{id} Update a workflow

Documentation For Models

Documentation For Authorization

Authentication schemes defined for the API:

bearer

  • Type: HTTP Bearer authentication
  • Type: API key
  • API key parameter name: immich_access_token
  • Location:

api_key

  • Type: API key
  • API key parameter name: x-api-key
  • Location: HTTP header

Author