Merge remote-tracking branch 'origin/main' into feat/integrity-checks-izzy

This commit is contained in:
izzy
2026-02-25 11:53:18 +00:00
379 changed files with 14057 additions and 12369 deletions
+157 -89
View File
@@ -3993,7 +3993,7 @@
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AssetEditsDto"
"$ref": "#/components/schemas/AssetEditsResponseDto"
}
}
},
@@ -4046,7 +4046,7 @@
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AssetEditActionListDto"
"$ref": "#/components/schemas/AssetEditsCreateDto"
}
}
},
@@ -4057,7 +4057,7 @@
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AssetEditsDto"
"$ref": "#/components/schemas/AssetEditsResponseDto"
}
}
},
@@ -16376,7 +16376,7 @@
],
"type": "string"
},
"AssetEditActionCrop": {
"AssetEditActionItemDto": {
"properties": {
"action": {
"allOf": [
@@ -16387,7 +16387,18 @@
"description": "Type of edit action to perform"
},
"parameters": {
"$ref": "#/components/schemas/CropParameters"
"anyOf": [
{
"$ref": "#/components/schemas/CropParameters"
},
{
"$ref": "#/components/schemas/RotateParameters"
},
{
"$ref": "#/components/schemas/MirrorParameters"
}
],
"description": "List of edit actions to apply (crop, rotate, or mirror)"
}
},
"required": [
@@ -16396,30 +16407,48 @@
],
"type": "object"
},
"AssetEditActionListDto": {
"AssetEditActionItemResponseDto": {
"properties": {
"action": {
"allOf": [
{
"$ref": "#/components/schemas/AssetEditAction"
}
],
"description": "Type of edit action to perform"
},
"id": {
"format": "uuid",
"type": "string"
},
"parameters": {
"anyOf": [
{
"$ref": "#/components/schemas/CropParameters"
},
{
"$ref": "#/components/schemas/RotateParameters"
},
{
"$ref": "#/components/schemas/MirrorParameters"
}
],
"description": "List of edit actions to apply (crop, rotate, or mirror)"
}
},
"required": [
"action",
"id",
"parameters"
],
"type": "object"
},
"AssetEditsCreateDto": {
"properties": {
"edits": {
"description": "List of edit actions to apply (crop, rotate, or mirror)",
"items": {
"anyOf": [
{
"$ref": "#/components/schemas/AssetEditActionCrop"
},
{
"$ref": "#/components/schemas/AssetEditActionRotate"
},
{
"$ref": "#/components/schemas/AssetEditActionMirror"
}
],
"discriminator": {
"mapping": {
"crop": "#/components/schemas/AssetEditActionCrop",
"mirror": "#/components/schemas/AssetEditActionMirror",
"rotate": "#/components/schemas/AssetEditActionRotate"
},
"propertyName": "action"
}
"$ref": "#/components/schemas/AssetEditActionItemDto"
},
"minItems": 1,
"type": "array"
@@ -16430,77 +16459,18 @@
],
"type": "object"
},
"AssetEditActionMirror": {
"properties": {
"action": {
"allOf": [
{
"$ref": "#/components/schemas/AssetEditAction"
}
],
"description": "Type of edit action to perform"
},
"parameters": {
"$ref": "#/components/schemas/MirrorParameters"
}
},
"required": [
"action",
"parameters"
],
"type": "object"
},
"AssetEditActionRotate": {
"properties": {
"action": {
"allOf": [
{
"$ref": "#/components/schemas/AssetEditAction"
}
],
"description": "Type of edit action to perform"
},
"parameters": {
"$ref": "#/components/schemas/RotateParameters"
}
},
"required": [
"action",
"parameters"
],
"type": "object"
},
"AssetEditsDto": {
"AssetEditsResponseDto": {
"properties": {
"assetId": {
"description": "Asset ID to apply edits to",
"description": "Asset ID these edits belong to",
"format": "uuid",
"type": "string"
},
"edits": {
"description": "List of edit actions to apply (crop, rotate, or mirror)",
"description": "List of edit actions applied to the asset",
"items": {
"anyOf": [
{
"$ref": "#/components/schemas/AssetEditActionCrop"
},
{
"$ref": "#/components/schemas/AssetEditActionRotate"
},
{
"$ref": "#/components/schemas/AssetEditActionMirror"
}
],
"discriminator": {
"mapping": {
"crop": "#/components/schemas/AssetEditActionCrop",
"mirror": "#/components/schemas/AssetEditActionMirror",
"rotate": "#/components/schemas/AssetEditActionRotate"
},
"propertyName": "action"
}
"$ref": "#/components/schemas/AssetEditActionItemResponseDto"
},
"minItems": 1,
"type": "array"
}
},
@@ -17394,7 +17364,7 @@
"type": "array"
},
"thumbhash": {
"description": "Thumbhash for thumbnail generation",
"description": "Thumbhash for thumbnail generation (base64) also used as the c query param for thumbnail cache busting.",
"nullable": true,
"type": "string"
},
@@ -19061,6 +19031,22 @@
"data": {
"$ref": "#/components/schemas/OnThisDayDto"
},
"hideAt": {
"description": "Date when memory should be hidden",
"format": "date-time",
"type": "string",
"x-immich-history": [
{
"version": "v2.6.0",
"state": "Added"
},
{
"version": "v2.6.0",
"state": "Stable"
}
],
"x-immich-state": "Stable"
},
"isSaved": {
"description": "Is memory saved",
"type": "boolean"
@@ -19075,6 +19061,22 @@
"format": "date-time",
"type": "string"
},
"showAt": {
"description": "Date when memory should be shown",
"format": "date-time",
"type": "string",
"x-immich-history": [
{
"version": "v2.6.0",
"state": "Added"
},
{
"version": "v2.6.0",
"state": "Stable"
}
],
"x-immich-state": "Stable"
},
"type": {
"allOf": [
{
@@ -23224,6 +23226,70 @@
],
"type": "object"
},
"SyncAssetFaceV2": {
"properties": {
"assetId": {
"description": "Asset ID",
"type": "string"
},
"boundingBoxX1": {
"type": "integer"
},
"boundingBoxX2": {
"type": "integer"
},
"boundingBoxY1": {
"type": "integer"
},
"boundingBoxY2": {
"type": "integer"
},
"deletedAt": {
"description": "Face deleted at",
"format": "date-time",
"nullable": true,
"type": "string"
},
"id": {
"description": "Asset face ID",
"type": "string"
},
"imageHeight": {
"type": "integer"
},
"imageWidth": {
"type": "integer"
},
"isVisible": {
"description": "Is the face visible in the asset",
"type": "boolean"
},
"personId": {
"description": "Person ID",
"nullable": true,
"type": "string"
},
"sourceType": {
"description": "Source type",
"type": "string"
}
},
"required": [
"assetId",
"boundingBoxX1",
"boundingBoxX2",
"boundingBoxY1",
"boundingBoxY2",
"deletedAt",
"id",
"imageHeight",
"imageWidth",
"isVisible",
"personId",
"sourceType"
],
"type": "object"
},
"SyncAssetMetadataDeleteV1": {
"properties": {
"assetId": {
@@ -23517,6 +23583,7 @@
"PersonV1",
"PersonDeleteV1",
"AssetFaceV1",
"AssetFaceV2",
"AssetFaceDeleteV1",
"UserMetadataV1",
"UserMetadataDeleteV1",
@@ -23790,6 +23857,7 @@
"UsersV1",
"PeopleV1",
"AssetFacesV1",
"AssetFacesV2",
"UserMetadataV1"
],
"type": "string"
+48 -24
View File
@@ -630,7 +630,7 @@ export type AssetResponseDto = {
resized?: boolean;
stack?: (AssetStackResponseDto) | null;
tags?: TagResponseDto[];
/** Thumbhash for thumbnail generation */
/** Thumbhash for thumbnail generation (base64) also used as the c query param for thumbnail cache busting. */
thumbhash: string | null;
/** Asset type */
"type": AssetTypeEnum;
@@ -973,38 +973,36 @@ export type CropParameters = {
/** Top-Left Y coordinate of crop */
y: number;
};
export type AssetEditActionCrop = {
/** Type of edit action to perform */
action: AssetEditAction;
parameters: CropParameters;
};
export type RotateParameters = {
/** Rotation angle in degrees */
angle: number;
};
export type AssetEditActionRotate = {
/** Type of edit action to perform */
action: AssetEditAction;
parameters: RotateParameters;
};
export type MirrorParameters = {
/** Axis to mirror along */
axis: MirrorAxis;
};
export type AssetEditActionMirror = {
export type AssetEditActionItemResponseDto = {
/** Type of edit action to perform */
action: AssetEditAction;
parameters: MirrorParameters;
id: string;
/** List of edit actions to apply (crop, rotate, or mirror) */
parameters: CropParameters | RotateParameters | MirrorParameters;
};
export type AssetEditsDto = {
/** Asset ID to apply edits to */
export type AssetEditsResponseDto = {
/** Asset ID these edits belong to */
assetId: string;
/** List of edit actions to apply (crop, rotate, or mirror) */
edits: (AssetEditActionCrop | AssetEditActionRotate | AssetEditActionMirror)[];
/** List of edit actions applied to the asset */
edits: AssetEditActionItemResponseDto[];
};
export type AssetEditActionListDto = {
export type AssetEditActionItemDto = {
/** Type of edit action to perform */
action: AssetEditAction;
/** List of edit actions to apply (crop, rotate, or mirror) */
edits: (AssetEditActionCrop | AssetEditActionRotate | AssetEditActionMirror)[];
parameters: CropParameters | RotateParameters | MirrorParameters;
};
export type AssetEditsCreateDto = {
/** List of edit actions to apply (crop, rotate, or mirror) */
edits: AssetEditActionItemDto[];
};
export type AssetMetadataResponseDto = {
/** Metadata key */
@@ -1421,12 +1419,16 @@ export type MemoryCreateDto = {
/** Asset IDs to associate with memory */
assetIds?: string[];
data: OnThisDayDto;
/** Date when memory should be hidden */
hideAt?: string;
/** Is memory saved */
isSaved?: boolean;
/** Memory date */
memoryAt: string;
/** Date when memory was seen */
seenAt?: string;
/** Date when memory should be shown */
showAt?: string;
/** Memory type */
"type": MemoryType;
};
@@ -3069,6 +3071,26 @@ export type SyncAssetFaceV1 = {
/** Source type */
sourceType: string;
};
export type SyncAssetFaceV2 = {
/** Asset ID */
assetId: string;
boundingBoxX1: number;
boundingBoxX2: number;
boundingBoxY1: number;
boundingBoxY2: number;
/** Face deleted at */
deletedAt: string | null;
/** Asset face ID */
id: string;
imageHeight: number;
imageWidth: number;
/** Is the face visible in the asset */
isVisible: boolean;
/** Person ID */
personId: string | null;
/** Source type */
sourceType: string;
};
export type SyncAssetMetadataDeleteV1 = {
/** Asset ID */
assetId: string;
@@ -4228,7 +4250,7 @@ export function getAssetEdits({ id }: {
}, opts?: Oazapfts.RequestOpts) {
return oazapfts.ok(oazapfts.fetchJson<{
status: 200;
data: AssetEditsDto;
data: AssetEditsResponseDto;
}>(`/assets/${encodeURIComponent(id)}/edits`, {
...opts
}));
@@ -4236,17 +4258,17 @@ export function getAssetEdits({ id }: {
/**
* Apply edits to an existing asset
*/
export function editAsset({ id, assetEditActionListDto }: {
export function editAsset({ id, assetEditsCreateDto }: {
id: string;
assetEditActionListDto: AssetEditActionListDto;
assetEditsCreateDto: AssetEditsCreateDto;
}, opts?: Oazapfts.RequestOpts) {
return oazapfts.ok(oazapfts.fetchJson<{
status: 200;
data: AssetEditsDto;
data: AssetEditsResponseDto;
}>(`/assets/${encodeURIComponent(id)}/edits`, oazapfts.json({
...opts,
method: "PUT",
body: assetEditActionListDto
body: assetEditsCreateDto
})));
}
/**
@@ -7367,6 +7389,7 @@ export enum SyncEntityType {
PersonV1 = "PersonV1",
PersonDeleteV1 = "PersonDeleteV1",
AssetFaceV1 = "AssetFaceV1",
AssetFaceV2 = "AssetFaceV2",
AssetFaceDeleteV1 = "AssetFaceDeleteV1",
UserMetadataV1 = "UserMetadataV1",
UserMetadataDeleteV1 = "UserMetadataDeleteV1",
@@ -7394,6 +7417,7 @@ export enum SyncRequestType {
UsersV1 = "UsersV1",
PeopleV1 = "PeopleV1",
AssetFacesV1 = "AssetFacesV1",
AssetFacesV2 = "AssetFacesV2",
UserMetadataV1 = "UserMetadataV1"
}
export enum TranscodeHWAccel {