mirror of
https://github.com/immich-app/immich.git
synced 2026-09-30 13:23:21 +08:00
feat: asset file apis (#25900)
* feat: asset file endpoints * Update server/src/controllers/asset-file.controller.ts Co-authored-by: Daniel Dietzler <36593685+danieldietzler@users.noreply.github.com> * Update server/src/controllers/asset-file.controller.ts Co-authored-by: Daniel Dietzler <36593685+danieldietzler@users.noreply.github.com> --------- Co-authored-by: Daniel Dietzler <36593685+danieldietzler@users.noreply.github.com>
This commit is contained in:
co-authored by
Daniel Dietzler
parent
8ae98f2a04
commit
caea849fee
@@ -1005,6 +1005,23 @@ export type ApiKeyUpdateDto = {
|
||||
/** List of permissions */
|
||||
permissions?: Permission[];
|
||||
};
|
||||
export type AssetFileResponseDto = {
|
||||
/** Creation date */
|
||||
createdAt: string;
|
||||
/** Asset file ID */
|
||||
id: string;
|
||||
/** The file was generated from an edit */
|
||||
isEdited: boolean;
|
||||
/** The file is a progressively encoded JPEG */
|
||||
isProgressive: boolean;
|
||||
/** The file is transparent */
|
||||
isTransparent: boolean;
|
||||
/** File path */
|
||||
path: string;
|
||||
"type": AssetFileType;
|
||||
/** Update date */
|
||||
updatedAt: string;
|
||||
};
|
||||
export type AssetBulkDeleteDto = {
|
||||
/** Force delete even if in use */
|
||||
force?: boolean;
|
||||
@@ -4330,6 +4347,66 @@ export function rotateApiKey({ id }: {
|
||||
method: "POST"
|
||||
}));
|
||||
}
|
||||
/**
|
||||
* Search asset files
|
||||
*/
|
||||
export function searchAssetFiles({ assetId, isEdited, isProgressive, isTransparent, $type }: {
|
||||
assetId: string;
|
||||
isEdited?: boolean;
|
||||
isProgressive?: boolean;
|
||||
isTransparent?: boolean;
|
||||
$type?: AssetFileType;
|
||||
}, opts?: Oazapfts.RequestOpts) {
|
||||
return oazapfts.ok(oazapfts.fetchJson<{
|
||||
status: 200;
|
||||
data: AssetFileResponseDto[];
|
||||
}>(`/asset-files${QS.query(QS.explode({
|
||||
assetId,
|
||||
isEdited,
|
||||
isProgressive,
|
||||
isTransparent,
|
||||
"type": $type
|
||||
}))}`, {
|
||||
...opts
|
||||
}));
|
||||
}
|
||||
/**
|
||||
* Delete an asset file
|
||||
*/
|
||||
export function deleteAssetFile({ id }: {
|
||||
id: string;
|
||||
}, opts?: Oazapfts.RequestOpts) {
|
||||
return oazapfts.ok(oazapfts.fetchText(`/asset-files/${encodeURIComponent(id)}`, {
|
||||
...opts,
|
||||
method: "DELETE"
|
||||
}));
|
||||
}
|
||||
/**
|
||||
* Retrieve an asset file
|
||||
*/
|
||||
export function getAssetFile({ id }: {
|
||||
id: string;
|
||||
}, opts?: Oazapfts.RequestOpts) {
|
||||
return oazapfts.ok(oazapfts.fetchJson<{
|
||||
status: 200;
|
||||
data: AssetFileResponseDto;
|
||||
}>(`/asset-files/${encodeURIComponent(id)}`, {
|
||||
...opts
|
||||
}));
|
||||
}
|
||||
/**
|
||||
* Download an asset file
|
||||
*/
|
||||
export function downloadAssetFile({ id }: {
|
||||
id: string;
|
||||
}, opts?: Oazapfts.RequestOpts) {
|
||||
return oazapfts.ok(oazapfts.fetchBlob<{
|
||||
status: 200;
|
||||
data: Blob;
|
||||
}>(`/asset-files/${encodeURIComponent(id)}/download`, {
|
||||
...opts
|
||||
}));
|
||||
}
|
||||
/**
|
||||
* Delete assets
|
||||
*/
|
||||
@@ -7649,6 +7726,9 @@ export enum Permission {
|
||||
AssetUpload = "asset.upload",
|
||||
AssetCopy = "asset.copy",
|
||||
AssetDerive = "asset.derive",
|
||||
AssetFileRead = "assetFile.read",
|
||||
AssetFileDelete = "assetFile.delete",
|
||||
AssetFileDownload = "assetFile.download",
|
||||
AssetEditGet = "asset.edit.get",
|
||||
AssetEditCreate = "asset.edit.create",
|
||||
AssetEditDelete = "asset.edit.delete",
|
||||
@@ -7794,6 +7874,13 @@ export enum Permission {
|
||||
AdminSessionRead = "adminSession.read",
|
||||
AdminAuthUnlinkAll = "adminAuth.unlinkAll"
|
||||
}
|
||||
export enum AssetFileType {
|
||||
Fullsize = "fullsize",
|
||||
Preview = "preview",
|
||||
Thumbnail = "thumbnail",
|
||||
Sidecar = "sidecar",
|
||||
EncodedVideo = "encoded_video"
|
||||
}
|
||||
export enum AssetMediaStatus {
|
||||
Created = "created",
|
||||
Duplicate = "duplicate"
|
||||
|
||||
Reference in New Issue
Block a user