Merge remote-tracking branch 'origin/main' into feat/yucca-integration

This commit is contained in:
izzy
2026-04-20 10:55:40 +01:00
338 changed files with 4761 additions and 5589 deletions
+1 -1
View File
@@ -17,7 +17,7 @@ function dart {
patch --no-backup-if-mismatch -u api.mustache <api.mustache.patch
cd ../../
pnpm dlx @openapitools/openapi-generator-cli generate -g dart -i ./immich-openapi-specs.json -o ../mobile/openapi -t ./templates/mobile
pnpm dlx --allow-build="" @openapitools/openapi-generator-cli generate -g dart -i ./immich-openapi-specs.json -o ../mobile/openapi -t ./templates/mobile
# Post generate patches
patch --no-backup-if-mismatch -u ../mobile/openapi/lib/api_client.dart <./patch/api_client.dart.patch
+62 -52
View File
@@ -7359,6 +7359,38 @@
"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.",
@@ -10550,44 +10582,6 @@
"x-immich-state": "Stable"
}
},
"/server/theme": {
"get": {
"description": "Retrieve the custom CSS, if existent.",
"operationId": "getTheme",
"parameters": [],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ServerThemeDto"
}
}
},
"description": ""
}
},
"summary": "Get theme",
"tags": [
"Server"
],
"x-immich-history": [
{
"version": "v1",
"state": "Added"
},
{
"version": "v1",
"state": "Beta"
},
{
"version": "v2",
"state": "Stable"
}
],
"x-immich-state": "Stable"
}
},
"/server/version": {
"get": {
"description": "Retrieve the current server version in semantic versioning (semver) format.",
@@ -17618,7 +17612,8 @@
"type": "string"
},
"duration": {
"description": "Video duration (for videos)",
"description": "Video/gif duration in hh:mm:ss.SSS format (null for static images)",
"nullable": true,
"type": "string"
},
"exifInfo": {
@@ -20431,6 +20426,18 @@
],
"type": "object"
},
"OAuthBackchannelLogoutDto": {
"properties": {
"logout_token": {
"description": "OAuth logout token",
"type": "string"
}
},
"required": [
"logout_token"
],
"type": "object"
},
"OAuthCallbackDto": {
"properties": {
"codeVerifier": {
@@ -23170,18 +23177,6 @@
],
"type": "object"
},
"ServerThemeDto": {
"properties": {
"customCss": {
"description": "Custom CSS for theming",
"type": "string"
}
},
"required": [
"customCss"
],
"type": "object"
},
"ServerVersionHistoryResponseDto": {
"properties": {
"createdAt": {
@@ -26122,6 +26117,10 @@
},
"SystemConfigOAuthDto": {
"properties": {
"allowInsecureRequests": {
"description": "Allow insecure requests",
"type": "boolean"
},
"autoLaunch": {
"description": "Auto launch",
"type": "boolean"
@@ -26152,6 +26151,10 @@
"description": "Enabled",
"type": "boolean"
},
"endSessionEndpoint": {
"description": "End session endpoint",
"type": "string"
},
"issuerUrl": {
"description": "Issuer URL",
"type": "string"
@@ -26168,6 +26171,10 @@
"description": "Profile signing algorithm",
"type": "string"
},
"prompt": {
"description": "OAuth prompt parameter (e.g. select_account, login, consent)",
"type": "string"
},
"roleClaim": {
"description": "Role claim",
"type": "string"
@@ -26199,6 +26206,7 @@
}
},
"required": [
"allowInsecureRequests",
"autoLaunch",
"autoRegister",
"buttonText",
@@ -26206,10 +26214,12 @@
"clientSecret",
"defaultStorageQuota",
"enabled",
"endSessionEndpoint",
"issuerUrl",
"mobileOverrideEnabled",
"mobileRedirectUri",
"profileSigningAlgorithm",
"prompt",
"roleClaim",
"scope",
"signingAlgorithm",
@@ -26743,7 +26753,7 @@
"type": "array"
},
"duration": {
"description": "Array of video durations in HH:MM:SS format (null for images)",
"description": "Array of video/gif durations in hh:mm:ss.SSS format (null for static images)",
"items": {
"nullable": true,
"type": "string"
+25 -18
View File
@@ -856,8 +856,8 @@ export type AssetResponseDto = {
createdAt: string;
/** Duplicate group ID */
duplicateId?: string | null;
/** Video duration (for videos) */
duration: string;
/** Video/gif duration in hh:mm:ss.SSS format (null for static images) */
duration: string | null;
exifInfo?: ExifResponseDto;
/** The actual UTC timestamp when the file was created/captured, preserving timezone information. This is the authoritative timestamp for chronological sorting within timeline groups. Combined with timezone data, this can be used to determine the exact moment the photo was taken. */
fileCreatedAt: string;
@@ -1409,6 +1409,10 @@ export type OAuthAuthorizeResponseDto = {
/** OAuth authorization URL */
url: string;
};
export type OAuthBackchannelLogoutDto = {
/** OAuth logout token */
logout_token: string;
};
export type OAuthCallbackDto = {
/** OAuth code verifier (PKCE) */
codeVerifier?: string;
@@ -2123,10 +2127,6 @@ export type ServerStorageResponseDto = {
/** Used disk space in bytes */
diskUseRaw: number;
};
export type ServerThemeDto = {
/** Custom CSS for theming */
customCss: string;
};
export type ServerVersionResponseDto = {
/** Major version number */
major: number;
@@ -2502,6 +2502,8 @@ export type SystemConfigNotificationsDto = {
smtp: SystemConfigSmtpDto;
};
export type SystemConfigOAuthDto = {
/** Allow insecure requests */
allowInsecureRequests: boolean;
/** Auto launch */
autoLaunch: boolean;
/** Auto register */
@@ -2516,6 +2518,8 @@ export type SystemConfigOAuthDto = {
defaultStorageQuota: number | null;
/** Enabled */
enabled: boolean;
/** End session endpoint */
endSessionEndpoint: string;
/** Issuer URL */
issuerUrl: string;
/** Mobile override enabled */
@@ -2524,6 +2528,8 @@ export type SystemConfigOAuthDto = {
mobileRedirectUri: string;
/** Profile signing algorithm */
profileSigningAlgorithm: string;
/** OAuth prompt parameter (e.g. select_account, login, consent) */
prompt: string;
/** Role claim */
roleClaim: string;
/** Scope */
@@ -2669,7 +2675,7 @@ export type TimeBucketAssetResponseDto = {
city: (string | null)[];
/** Array of country names extracted from EXIF GPS data */
country: (string | null)[];
/** Array of video durations in HH:MM:SS format (null for images) */
/** Array of video/gif durations in hh:mm:ss.SSS format (null for static images) */
duration: (string | null)[];
/** Array of file creation timestamps in UTC */
fileCreatedAt: string[];
@@ -5111,6 +5117,18 @@ export function startOAuth({ oAuthConfigDto }: {
body: oAuthConfigDto
})));
}
/**
* Backchannel OAuth logout
*/
export function logoutOAuth({ oAuthBackchannelLogoutDto }: {
oAuthBackchannelLogoutDto: OAuthBackchannelLogoutDto;
}, opts?: Oazapfts.RequestOpts) {
return oazapfts.ok(oazapfts.fetchText("/oauth/backchannel-logout", oazapfts.form({
...opts,
method: "POST",
body: oAuthBackchannelLogoutDto
})));
}
/**
* Finish OAuth
*/
@@ -5841,17 +5859,6 @@ export function getStorage(opts?: Oazapfts.RequestOpts) {
...opts
}));
}
/**
* Get theme
*/
export function getTheme(opts?: Oazapfts.RequestOpts) {
return oazapfts.ok(oazapfts.fetchJson<{
status: 200;
data: ServerThemeDto;
}>("/server/theme", {
...opts
}));
}
/**
* Get server version
*/