diff --git a/mobile/openapi/.openapi-generator/FILES b/mobile/openapi/.openapi-generator/FILES index 222e6c111..ae72e70d5 100644 --- a/mobile/openapi/.openapi-generator/FILES +++ b/mobile/openapi/.openapi-generator/FILES @@ -68,6 +68,7 @@ doc/DownloadApi.md doc/DownloadArchiveInfo.md doc/DownloadInfoDto.md doc/DownloadResponseDto.md +doc/DuplicateApi.md doc/DuplicateDetectionConfig.md doc/EntityType.md doc/ExifResponseDto.md @@ -224,6 +225,7 @@ lib/api/asset_api.dart lib/api/audit_api.dart lib/api/authentication_api.dart lib/api/download_api.dart +lib/api/duplicate_api.dart lib/api/face_api.dart lib/api/file_report_api.dart lib/api/job_api.dart @@ -503,6 +505,7 @@ test/download_api_test.dart test/download_archive_info_test.dart test/download_info_dto_test.dart test/download_response_dto_test.dart +test/duplicate_api_test.dart test/duplicate_detection_config_test.dart test/entity_type_test.dart test/exif_response_dto_test.dart diff --git a/mobile/openapi/README.md b/mobile/openapi/README.md index b5a49aa26..3cce4635c 100644 Binary files a/mobile/openapi/README.md and b/mobile/openapi/README.md differ diff --git a/mobile/openapi/doc/DuplicateApi.md b/mobile/openapi/doc/DuplicateApi.md new file mode 100644 index 000000000..4dfbe55d3 Binary files /dev/null and b/mobile/openapi/doc/DuplicateApi.md differ diff --git a/mobile/openapi/lib/api.dart b/mobile/openapi/lib/api.dart index 917959d84..69be2f8a9 100644 Binary files a/mobile/openapi/lib/api.dart and b/mobile/openapi/lib/api.dart differ diff --git a/mobile/openapi/lib/api/duplicate_api.dart b/mobile/openapi/lib/api/duplicate_api.dart new file mode 100644 index 000000000..2833d091e Binary files /dev/null and b/mobile/openapi/lib/api/duplicate_api.dart differ diff --git a/mobile/openapi/test/duplicate_api_test.dart b/mobile/openapi/test/duplicate_api_test.dart new file mode 100644 index 000000000..8e22a5253 Binary files /dev/null and b/mobile/openapi/test/duplicate_api_test.dart differ diff --git a/open-api/immich-openapi-specs.json b/open-api/immich-openapi-specs.json index f59bc7a0a..7fbf5f830 100644 --- a/open-api/immich-openapi-specs.json +++ b/open-api/immich-openapi-specs.json @@ -2221,6 +2221,41 @@ ] } }, + "/duplicates": { + "get": { + "operationId": "getAssetDuplicates", + "parameters": [], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "items": { + "$ref": "#/components/schemas/AssetResponseDto" + }, + "type": "array" + } + } + }, + "description": "" + } + }, + "security": [ + { + "bearer": [] + }, + { + "cookie": [] + }, + { + "api_key": [] + } + ], + "tags": [ + "Duplicate" + ] + } + }, "/face": { "get": { "operationId": "getFaces", diff --git a/open-api/typescript-sdk/src/fetch-client.ts b/open-api/typescript-sdk/src/fetch-client.ts index 996f69de8..92396c360 100644 --- a/open-api/typescript-sdk/src/fetch-client.ts +++ b/open-api/typescript-sdk/src/fetch-client.ts @@ -1695,6 +1695,14 @@ export function getDownloadInfo({ key, downloadInfoDto }: { body: downloadInfoDto }))); } +export function getAssetDuplicates(opts?: Oazapfts.RequestOpts) { + return oazapfts.ok(oazapfts.fetchJson<{ + status: 200; + data: AssetResponseDto[]; + }>("/duplicates", { + ...opts + })); +} export function getFaces({ id }: { id: string; }, opts?: Oazapfts.RequestOpts) { diff --git a/server/src/controllers/index.ts b/server/src/controllers/index.ts index df1a44a15..feec616f2 100644 --- a/server/src/controllers/index.ts +++ b/server/src/controllers/index.ts @@ -7,6 +7,7 @@ import { AssetController } from 'src/controllers/asset.controller'; import { AuditController } from 'src/controllers/audit.controller'; import { AuthController } from 'src/controllers/auth.controller'; import { DownloadController } from 'src/controllers/download.controller'; +import { DuplicateController } from 'src/controllers/duplicate.controller'; import { FaceController } from 'src/controllers/face.controller'; import { ReportController } from 'src/controllers/file-report.controller'; import { JobController } from 'src/controllers/job.controller'; @@ -37,6 +38,7 @@ export const controllers = [ AuditController, AuthController, DownloadController, + DuplicateController, FaceController, JobController, LibraryController,