From 4376104e3a4d8b28cc3c7b65d805b38ab47a4892 Mon Sep 17 00:00:00 2001 From: Daniel Dietzler <36593685+danieldietzler@users.noreply.github.com> Date: Thu, 30 May 2024 00:26:57 +0200 Subject: [PATCH] refactor(server): rename api tags to follow plural nomenclature of endpoints (#9872) * rename api tags to follow plural nomenclature of endpoints * chore: open api * fix mobile --- .../providers/authentication.provider.dart | 6 +- mobile/lib/providers/user.provider.dart | 4 +- .../lib/routing/tab_navigation_observer.dart | 4 +- mobile/lib/services/activity.service.dart | 8 +- mobile/lib/services/album.service.dart | 22 +- mobile/lib/services/api.service.dart | 28 +-- mobile/lib/services/asset.service.dart | 8 +- .../services/asset_description.service.dart | 4 +- mobile/lib/services/asset_stack.service.dart | 6 +- mobile/lib/services/backup.service.dart | 4 +- .../services/backup_verification.service.dart | 2 +- mobile/lib/services/memory.service.dart | 2 +- mobile/lib/services/partner.service.dart | 8 +- mobile/lib/services/person.service.dart | 6 +- mobile/lib/services/shared_link.service.dart | 8 +- mobile/lib/services/user.service.dart | 4 +- mobile/openapi/README.md | Bin 28416 -> 28732 bytes mobile/openapi/lib/api.dart | Bin 10078 -> 10128 bytes ...{activity_api.dart => activities_api.dart} | Bin 7618 -> 7622 bytes .../api/{album_api.dart => albums_api.dart} | Bin 18752 -> 18754 bytes .../{api_key_api.dart => api_keys_api.dart} | Bin 7886 -> 7888 bytes .../api/{asset_api.dart => assets_api.dart} | Bin 33226 -> 33228 bytes ...duplicate_api.dart => duplicates_api.dart} | Bin 1924 -> 1926 bytes .../lib/api/{face_api.dart => faces_api.dart} | Bin 3768 -> 3770 bytes ..._report_api.dart => file_reports_api.dart} | Bin 4727 -> 4729 bytes .../lib/api/{job_api.dart => jobs_api.dart} | Bin 3551 -> 3553 bytes .../{library_api.dart => libraries_api.dart} | Bin 13761 -> 13765 bytes .../{memory_api.dart => memories_api.dart} | Bin 11601 -> 11605 bytes .../{partner_api.dart => partners_api.dart} | Bin 6516 -> 6518 bytes .../api/{person_api.dart => people_api.dart} | Bin 17337 -> 17337 bytes ...ed_link_api.dart => shared_links_api.dart} | Bin 14312 -> 14314 bytes .../lib/api/{tag_api.dart => tags_api.dart} | Bin 13048 -> 13050 bytes mobile/openapi/lib/api/user_api.dart | Bin 27808 -> 0 bytes mobile/openapi/lib/api/users_admin_api.dart | Bin 0 -> 14282 bytes mobile/openapi/lib/api/users_api.dart | Bin 0 -> 13957 bytes open-api/immich-openapi-specs.json | 214 +++++++++--------- server/src/controllers/activity.controller.ts | 2 +- server/src/controllers/album.controller.ts | 2 +- server/src/controllers/api-key.controller.ts | 2 +- .../src/controllers/asset-media.controller.ts | 2 +- server/src/controllers/asset-v1.controller.ts | 2 +- server/src/controllers/asset.controller.ts | 2 +- .../src/controllers/duplicate.controller.ts | 2 +- server/src/controllers/face.controller.ts | 2 +- .../src/controllers/file-report.controller.ts | 2 +- server/src/controllers/job.controller.ts | 2 +- server/src/controllers/library.controller.ts | 2 +- server/src/controllers/memory.controller.ts | 2 +- server/src/controllers/partner.controller.ts | 2 +- server/src/controllers/person.controller.ts | 2 +- .../src/controllers/shared-link.controller.ts | 2 +- server/src/controllers/tag.controller.ts | 2 +- .../src/controllers/user-admin.controller.ts | 2 +- server/src/controllers/user.controller.ts | 2 +- 54 files changed, 187 insertions(+), 187 deletions(-) rename mobile/openapi/lib/api/{activity_api.dart => activities_api.dart} (98%) rename mobile/openapi/lib/api/{album_api.dart => albums_api.dart} (99%) rename mobile/openapi/lib/api/{api_key_api.dart => api_keys_api.dart} (98%) rename mobile/openapi/lib/api/{asset_api.dart => assets_api.dart} (99%) rename mobile/openapi/lib/api/{duplicate_api.dart => duplicates_api.dart} (94%) rename mobile/openapi/lib/api/{face_api.dart => faces_api.dart} (97%) rename mobile/openapi/lib/api/{file_report_api.dart => file_reports_api.dart} (97%) rename mobile/openapi/lib/api/{job_api.dart => jobs_api.dart} (97%) rename mobile/openapi/lib/api/{library_api.dart => libraries_api.dart} (99%) rename mobile/openapi/lib/api/{memory_api.dart => memories_api.dart} (99%) rename mobile/openapi/lib/api/{partner_api.dart => partners_api.dart} (98%) rename mobile/openapi/lib/api/{person_api.dart => people_api.dart} (99%) rename mobile/openapi/lib/api/{shared_link_api.dart => shared_links_api.dart} (99%) rename mobile/openapi/lib/api/{tag_api.dart => tags_api.dart} (99%) delete mode 100644 mobile/openapi/lib/api/user_api.dart create mode 100644 mobile/openapi/lib/api/users_admin_api.dart create mode 100644 mobile/openapi/lib/api/users_api.dart diff --git a/mobile/lib/providers/authentication.provider.dart b/mobile/lib/providers/authentication.provider.dart index b5fb25bf20..3d98cb0e20 100644 --- a/mobile/lib/providers/authentication.provider.dart +++ b/mobile/lib/providers/authentication.provider.dart @@ -138,7 +138,7 @@ class AuthenticationNotifier extends StateNotifier { Future changePassword(String newPassword) async { try { - await _apiService.userApi.updateMyUser( + await _apiService.usersApi.updateMyUser( UserUpdateMeDto( password: newPassword, ), @@ -179,8 +179,8 @@ class AuthenticationNotifier extends StateNotifier { UserAdminResponseDto? userResponseDto; UserPreferencesResponseDto? userPreferences; try { - userResponseDto = await _apiService.userApi.getMyUser(); - userPreferences = await _apiService.userApi.getMyPreferences(); + userResponseDto = await _apiService.usersApi.getMyUser(); + userPreferences = await _apiService.usersApi.getMyPreferences(); } on ApiException catch (error, stackTrace) { _log.severe( "Error getting user information from the server [API EXCEPTION]", diff --git a/mobile/lib/providers/user.provider.dart b/mobile/lib/providers/user.provider.dart index 2767615526..971cfd5103 100644 --- a/mobile/lib/providers/user.provider.dart +++ b/mobile/lib/providers/user.provider.dart @@ -20,8 +20,8 @@ class CurrentUserProvider extends StateNotifier { refresh() async { try { - final user = await _apiService.userApi.getMyUser(); - final userPreferences = await _apiService.userApi.getMyPreferences(); + final user = await _apiService.usersApi.getMyUser(); + final userPreferences = await _apiService.usersApi.getMyPreferences(); if (user != null) { Store.put( StoreKey.currentUser, diff --git a/mobile/lib/routing/tab_navigation_observer.dart b/mobile/lib/routing/tab_navigation_observer.dart index 6c0f36050b..e16fecb323 100644 --- a/mobile/lib/routing/tab_navigation_observer.dart +++ b/mobile/lib/routing/tab_navigation_observer.dart @@ -57,9 +57,9 @@ class TabNavigationObserver extends AutoRouterObserver { // Update user info try { final userResponseDto = - await ref.read(apiServiceProvider).userApi.getMyUser(); + await ref.read(apiServiceProvider).usersApi.getMyUser(); final userPreferences = - await ref.read(apiServiceProvider).userApi.getMyPreferences(); + await ref.read(apiServiceProvider).usersApi.getMyPreferences(); if (userResponseDto == null) { return; diff --git a/mobile/lib/services/activity.service.dart b/mobile/lib/services/activity.service.dart index b8e5dc23c6..58af26e204 100644 --- a/mobile/lib/services/activity.service.dart +++ b/mobile/lib/services/activity.service.dart @@ -19,7 +19,7 @@ class ActivityService with ErrorLoggerMixin { }) async { return logError( () async { - final list = await _apiService.activityApi + final list = await _apiService.activitiesApi .getActivities(albumId, assetId: assetId); return list != null ? list.map(Activity.fromDto).toList() : []; }, @@ -31,7 +31,7 @@ class ActivityService with ErrorLoggerMixin { Future getStatistics(String albumId, {String? assetId}) async { return logError( () async { - final dto = await _apiService.activityApi + final dto = await _apiService.activitiesApi .getActivityStatistics(albumId, assetId: assetId); return dto?.comments ?? 0; }, @@ -43,7 +43,7 @@ class ActivityService with ErrorLoggerMixin { Future removeActivity(String id) async { return logError( () async { - await _apiService.activityApi.deleteActivity(id); + await _apiService.activitiesApi.deleteActivity(id); return true; }, defaultValue: false, @@ -59,7 +59,7 @@ class ActivityService with ErrorLoggerMixin { }) async { return guardError( () async { - final dto = await _apiService.activityApi.createActivity( + final dto = await _apiService.activitiesApi.createActivity( ActivityCreateDto( albumId: albumId, type: type == ActivityType.comment diff --git a/mobile/lib/services/album.service.dart b/mobile/lib/services/album.service.dart index c6d70c269a..c2494680c7 100644 --- a/mobile/lib/services/album.service.dart +++ b/mobile/lib/services/album.service.dart @@ -151,7 +151,7 @@ class AlbumService { bool changes = false; try { await _userService.refreshUsers(); - final List? serverAlbums = await _apiService.albumApi + final List? serverAlbums = await _apiService.albumsApi .getAllAlbums(shared: isShared ? true : null); if (serverAlbums == null) { return false; @@ -161,7 +161,7 @@ class AlbumService { isShared: isShared, loadDetails: (dto) async => dto.assetCount == dto.assets.length ? dto - : (await _apiService.albumApi.getAlbumInfo(dto.id)) ?? dto, + : (await _apiService.albumsApi.getAlbumInfo(dto.id)) ?? dto, ); } finally { _remoteCompleter.complete(changes); @@ -176,7 +176,7 @@ class AlbumService { Iterable sharedUsers = const [], ]) async { try { - AlbumResponseDto? remote = await _apiService.albumApi.createAlbum( + AlbumResponseDto? remote = await _apiService.albumsApi.createAlbum( CreateAlbumDto( albumName: albumName, assetIds: assets.map((asset) => asset.remoteId!).toList(), @@ -231,7 +231,7 @@ class AlbumService { Album album, ) async { try { - var response = await _apiService.albumApi.addAssetsToAlbum( + var response = await _apiService.albumsApi.addAssetsToAlbum( album.remoteId!, BulkIdsDto(ids: assets.map((asset) => asset.remoteId!).toList()), ); @@ -290,7 +290,7 @@ class AlbumService { .map((userId) => AlbumUserAddDto(userId: userId)) .toList(); - final result = await _apiService.albumApi.addUsersToAlbum( + final result = await _apiService.albumsApi.addUsersToAlbum( album.remoteId!, AddUsersDto(albumUsers: albumUsers), ); @@ -312,7 +312,7 @@ class AlbumService { Future setActivityEnabled(Album album, bool enabled) async { try { - final result = await _apiService.albumApi.updateAlbumInfo( + final result = await _apiService.albumsApi.updateAlbumInfo( album.remoteId!, UpdateAlbumDto(isActivityEnabled: enabled), ); @@ -331,7 +331,7 @@ class AlbumService { try { final userId = Store.get(StoreKey.currentUser).isarId; if (album.owner.value?.isarId == userId) { - await _apiService.albumApi.deleteAlbum(album.remoteId!); + await _apiService.albumsApi.deleteAlbum(album.remoteId!); } if (album.shared) { final foreignAssets = @@ -362,7 +362,7 @@ class AlbumService { Future leaveAlbum(Album album) async { try { - await _apiService.albumApi.removeUserFromAlbum(album.remoteId!, "me"); + await _apiService.albumsApi.removeUserFromAlbum(album.remoteId!, "me"); return true; } catch (e) { debugPrint("Error leaveAlbum ${e.toString()}"); @@ -375,7 +375,7 @@ class AlbumService { Iterable assets, ) async { try { - final response = await _apiService.albumApi.removeAssetFromAlbum( + final response = await _apiService.albumsApi.removeAssetFromAlbum( album.remoteId!, BulkIdsDto( ids: assets.map((asset) => asset.remoteId!).toList(), @@ -401,7 +401,7 @@ class AlbumService { User user, ) async { try { - await _apiService.albumApi.removeUserFromAlbum( + await _apiService.albumsApi.removeUserFromAlbum( album.remoteId!, user.id, ); @@ -426,7 +426,7 @@ class AlbumService { String newAlbumTitle, ) async { try { - await _apiService.albumApi.updateAlbumInfo( + await _apiService.albumsApi.updateAlbumInfo( album.remoteId!, UpdateAlbumDto( albumName: newAlbumTitle, diff --git a/mobile/lib/services/api.service.dart b/mobile/lib/services/api.service.dart index 0421f515ec..5381580e39 100644 --- a/mobile/lib/services/api.service.dart +++ b/mobile/lib/services/api.service.dart @@ -12,21 +12,21 @@ import 'package:http/http.dart'; class ApiService { late ApiClient _apiClient; - late UserApi userApi; + late UsersApi usersApi; late AuthenticationApi authenticationApi; late OAuthApi oAuthApi; - late AlbumApi albumApi; - late AssetApi assetApi; + late AlbumsApi albumsApi; + late AssetsApi assetsApi; late SearchApi searchApi; late ServerInfoApi serverInfoApi; late MapApi mapApi; - late PartnerApi partnerApi; - late PersonApi personApi; + late PartnersApi partnersApi; + late PeopleApi peopleApi; late AuditApi auditApi; - late SharedLinkApi sharedLinkApi; + late SharedLinksApi sharedLinksApi; late SyncApi syncApi; late SystemConfigApi systemConfigApi; - late ActivityApi activityApi; + late ActivitiesApi activitiesApi; late DownloadApi downloadApi; late TrashApi trashApi; @@ -44,21 +44,21 @@ class ApiService { if (_accessToken != null) { setAccessToken(_accessToken!); } - userApi = UserApi(_apiClient); + usersApi = UsersApi(_apiClient); authenticationApi = AuthenticationApi(_apiClient); oAuthApi = OAuthApi(_apiClient); - albumApi = AlbumApi(_apiClient); - assetApi = AssetApi(_apiClient); + albumsApi = AlbumsApi(_apiClient); + assetsApi = AssetsApi(_apiClient); serverInfoApi = ServerInfoApi(_apiClient); searchApi = SearchApi(_apiClient); mapApi = MapApi(_apiClient); - partnerApi = PartnerApi(_apiClient); - personApi = PersonApi(_apiClient); + partnersApi = PartnersApi(_apiClient); + peopleApi = PeopleApi(_apiClient); auditApi = AuditApi(_apiClient); - sharedLinkApi = SharedLinkApi(_apiClient); + sharedLinksApi = SharedLinksApi(_apiClient); syncApi = SyncApi(_apiClient); systemConfigApi = SystemConfigApi(_apiClient); - activityApi = ActivityApi(_apiClient); + activitiesApi = ActivitiesApi(_apiClient); downloadApi = DownloadApi(_apiClient); trashApi = TrashApi(_apiClient); } diff --git a/mobile/lib/services/asset.service.dart b/mobile/lib/services/asset.service.dart index aa156a9586..13090fe822 100644 --- a/mobile/lib/services/asset.service.dart +++ b/mobile/lib/services/asset.service.dart @@ -82,7 +82,7 @@ class AssetService { ) async { try { final AssetResponseDto? dto = - await _apiService.assetApi.getAssetInfo(remoteId); + await _apiService.assetsApi.getAssetInfo(remoteId); return dto?.people; } catch (error, stack) { @@ -138,7 +138,7 @@ class AssetService { payload.add(asset.remoteId!); } - await _apiService.assetApi.deleteAssets( + await _apiService.assetsApi.deleteAssets( AssetBulkDeleteDto( ids: payload, force: force, @@ -158,7 +158,7 @@ class AssetService { // fileSize is always filled on the server but not set on client if (a.exifInfo?.fileSize == null) { if (a.isRemote) { - final dto = await _apiService.assetApi.getAssetInfo(a.remoteId!); + final dto = await _apiService.assetsApi.getAssetInfo(a.remoteId!); if (dto != null && dto.exifInfo != null) { final newExif = Asset.remote(dto).exifInfo!.copyWith(id: a.id); if (newExif != a.exifInfo) { @@ -180,7 +180,7 @@ class AssetService { List assets, UpdateAssetDto updateAssetDto, ) async { - return await _apiService.assetApi.updateAssets( + return await _apiService.assetsApi.updateAssets( AssetBulkUpdateDto( ids: assets.map((e) => e.remoteId!).toList(), dateTimeOriginal: updateAssetDto.dateTimeOriginal, diff --git a/mobile/lib/services/asset_description.service.dart b/mobile/lib/services/asset_description.service.dart index 5c2568fb3b..3b9bc5d567 100644 --- a/mobile/lib/services/asset_description.service.dart +++ b/mobile/lib/services/asset_description.service.dart @@ -17,7 +17,7 @@ class AssetDescriptionService { String remoteAssetId, int localExifId, ) async { - final result = await _api.assetApi.updateAsset( + final result = await _api.assetsApi.updateAsset( remoteAssetId, UpdateAssetDto(description: description), ); @@ -36,7 +36,7 @@ class AssetDescriptionService { Future readLatest(String assetRemoteId, int localExifId) async { final latestAssetFromServer = - await _api.assetApi.getAssetInfo(assetRemoteId); + await _api.assetsApi.getAssetInfo(assetRemoteId); final localExifInfo = await _db.exifInfos.get(localExifId); if (latestAssetFromServer != null && localExifInfo != null) { diff --git a/mobile/lib/services/asset_stack.service.dart b/mobile/lib/services/asset_stack.service.dart index 43a902e13b..9eff495f37 100644 --- a/mobile/lib/services/asset_stack.service.dart +++ b/mobile/lib/services/asset_stack.service.dart @@ -27,7 +27,7 @@ class AssetStackService { .map((e) => e.remoteId!) .toList(); - await _api.assetApi.updateAssets( + await _api.assetsApi.updateAssets( AssetBulkUpdateDto(ids: toAdd, stackParentId: parentAsset.remoteId), ); } @@ -37,7 +37,7 @@ class AssetStackService { .where((e) => e.isRemote) .map((e) => e.remoteId!) .toList(); - await _api.assetApi.updateAssets( + await _api.assetsApi.updateAssets( AssetBulkUpdateDto(ids: toRemove, removeParent: true), ); } @@ -53,7 +53,7 @@ class AssetStackService { } try { - await _api.assetApi.updateStackParent( + await _api.assetsApi.updateStackParent( UpdateStackParentDto( oldParentId: oldParent.remoteId!, newParentId: newParent.remoteId!, diff --git a/mobile/lib/services/backup.service.dart b/mobile/lib/services/backup.service.dart index 8f958fff8c..24acba09b8 100644 --- a/mobile/lib/services/backup.service.dart +++ b/mobile/lib/services/backup.service.dart @@ -44,7 +44,7 @@ class BackupService { final String deviceId = Store.get(StoreKey.deviceId); try { - return await _apiService.assetApi.getAllUserAssetsByDeviceId(deviceId); + return await _apiService.assetsApi.getAllUserAssetsByDeviceId(deviceId); } catch (e) { debugPrint('Error [getDeviceBackupAsset] ${e.toString()}'); return null; @@ -178,7 +178,7 @@ class BackupService { try { final String deviceId = Store.get(StoreKey.deviceId); final CheckExistingAssetsResponseDto? duplicates = - await _apiService.assetApi.checkExistingAssets( + await _apiService.assetsApi.checkExistingAssets( CheckExistingAssetsDto( deviceAssetIds: candidates.map((e) => e.id).toList(), deviceId: deviceId, diff --git a/mobile/lib/services/backup_verification.service.dart b/mobile/lib/services/backup_verification.service.dart index 6a371d3a31..a73881310d 100644 --- a/mobile/lib/services/backup_verification.service.dart +++ b/mobile/lib/services/backup_verification.service.dart @@ -136,7 +136,7 @@ class BackupVerificationService { ExifInfo? exif = remote.exifInfo; if (exif != null && exif.lat != null) return false; if (exif == null || exif.fileSize == null) { - final dto = await apiService.assetApi.getAssetInfo(remote.remoteId!); + final dto = await apiService.assetsApi.getAssetInfo(remote.remoteId!); if (dto != null && dto.exifInfo != null) { exif = ExifInfo.fromDto(dto.exifInfo!); } diff --git a/mobile/lib/services/memory.service.dart b/mobile/lib/services/memory.service.dart index b426214c03..613b6ed91e 100644 --- a/mobile/lib/services/memory.service.dart +++ b/mobile/lib/services/memory.service.dart @@ -28,7 +28,7 @@ class MemoryService { Future?> getMemoryLane() async { try { final now = DateTime.now(); - final data = await _apiService.assetApi.getMemoryLane( + final data = await _apiService.assetsApi.getMemoryLane( now.day, now.month, ); diff --git a/mobile/lib/services/partner.service.dart b/mobile/lib/services/partner.service.dart index b66fdd72ed..84f37ce7e1 100644 --- a/mobile/lib/services/partner.service.dart +++ b/mobile/lib/services/partner.service.dart @@ -35,7 +35,7 @@ class PartnerService { Future?> getPartners(PartnerDirection direction) async { try { final userDtos = - await _apiService.partnerApi.getPartners(direction._value); + await _apiService.partnersApi.getPartners(direction._value); if (userDtos != null) { return userDtos.map((u) => User.fromPartnerDto(u)).toList(); } @@ -47,7 +47,7 @@ class PartnerService { Future removePartner(User partner) async { try { - await _apiService.partnerApi.removePartner(partner.id); + await _apiService.partnersApi.removePartner(partner.id); partner.isPartnerSharedBy = false; await _db.writeTxn(() => _db.users.put(partner)); } catch (e) { @@ -59,7 +59,7 @@ class PartnerService { Future addPartner(User partner) async { try { - final dto = await _apiService.partnerApi.createPartner(partner.id); + final dto = await _apiService.partnersApi.createPartner(partner.id); if (dto != null) { partner.isPartnerSharedBy = true; await _db.writeTxn(() => _db.users.put(partner)); @@ -73,7 +73,7 @@ class PartnerService { Future updatePartner(User partner, {required bool inTimeline}) async { try { - final dto = await _apiService.partnerApi + final dto = await _apiService.partnersApi .updatePartner(partner.id, UpdatePartnerDto(inTimeline: inTimeline)); if (dto != null) { partner.inTimeline = dto.inTimeline ?? partner.inTimeline; diff --git a/mobile/lib/services/person.service.dart b/mobile/lib/services/person.service.dart index ce3df867cd..f35ae1a225 100644 --- a/mobile/lib/services/person.service.dart +++ b/mobile/lib/services/person.service.dart @@ -22,7 +22,7 @@ class PersonService { Future> getAllPeople() async { try { - final peopleResponseDto = await _apiService.personApi.getAllPeople(); + final peopleResponseDto = await _apiService.peopleApi.getAllPeople(); return peopleResponseDto?.people ?? []; } catch (error, stack) { _log.severe("Error while fetching curated people", error, stack); @@ -32,7 +32,7 @@ class PersonService { Future?> getPersonAssets(String id) async { try { - final assets = await _apiService.personApi.getPersonAssets(id); + final assets = await _apiService.peopleApi.getPersonAssets(id); if (assets == null) return null; return await _db.assets.getAllByRemoteId(assets.map((e) => e.id)); } catch (error, stack) { @@ -43,7 +43,7 @@ class PersonService { Future updateName(String id, String name) async { try { - return await _apiService.personApi.updatePerson( + return await _apiService.peopleApi.updatePerson( id, PersonUpdateDto( name: name, diff --git a/mobile/lib/services/shared_link.service.dart b/mobile/lib/services/shared_link.service.dart index 2a8e633aa9..a2b5ed9062 100644 --- a/mobile/lib/services/shared_link.service.dart +++ b/mobile/lib/services/shared_link.service.dart @@ -17,7 +17,7 @@ class SharedLinkService { Future>> getAllSharedLinks() async { try { - final list = await _apiService.sharedLinkApi.getAllSharedLinks(); + final list = await _apiService.sharedLinksApi.getAllSharedLinks(); return list != null ? AsyncData(list.map(SharedLink.fromDto).toList()) : const AsyncData([]); @@ -29,7 +29,7 @@ class SharedLinkService { Future deleteSharedLink(String id) async { try { - return await _apiService.sharedLinkApi.removeSharedLink(id); + return await _apiService.sharedLinksApi.removeSharedLink(id); } catch (e) { _log.severe("Failed to delete shared link id - $id", e); } @@ -75,7 +75,7 @@ class SharedLinkService { if (dto != null) { final responseDto = - await _apiService.sharedLinkApi.createSharedLink(dto); + await _apiService.sharedLinksApi.createSharedLink(dto); if (responseDto != null) { return SharedLink.fromDto(responseDto); } @@ -97,7 +97,7 @@ class SharedLinkService { DateTime? expiresAt, }) async { try { - final responseDto = await _apiService.sharedLinkApi.updateSharedLink( + final responseDto = await _apiService.sharedLinksApi.updateSharedLink( id, SharedLinkEditDto( showMetadata: showMeta, diff --git a/mobile/lib/services/user.service.dart b/mobile/lib/services/user.service.dart index 4e88bab12c..0d8d47b104 100644 --- a/mobile/lib/services/user.service.dart +++ b/mobile/lib/services/user.service.dart @@ -39,7 +39,7 @@ class UserService { Future?> _getAllUsers() async { try { - final dto = await _apiService.userApi.searchUsers(); + final dto = await _apiService.usersApi.searchUsers(); return dto?.map(User.fromSimpleUserDto).toList(); } catch (e) { _log.warning("Failed get all users", e); @@ -57,7 +57,7 @@ class UserService { Future uploadProfileImage(XFile image) async { try { - return await _apiService.userApi.createProfileImage( + return await _apiService.usersApi.createProfileImage( MultipartFile.fromBytes( 'file', await image.readAsBytes(), diff --git a/mobile/openapi/README.md b/mobile/openapi/README.md index 4a5fdfadd86f70f4766a89b30019e62f8bab8ffb..3010822ee509973908c4d1d822cea0299709aa6c 100644 GIT binary patch delta 1730 zcmY+EduUsA6vxS0ZPPUG+|DIwUbnk9xoMK7$<5j%ZF2LPY<8`qASw!_y_UGN-FiFs zR3-|7GRC+a`*V!S6fsN;GU-GRCca@%VH3wFivFP+C}p6qi0Ax%xn29u=X}q(zsLEV zdw#z&cXgkw>pqHf=oB^5aSPbqc^i1Ab2m_@PXa|f>gV(s;01jEcug+?@99~fxhoFL zci|YhYq+f{E9#}LAhBP!{2d1BhYfiWuNin^mkoP}{oW8G_MzcPSf$h*1lGFqzz@55 z;9B=6&}zi}lEwk`a@?-IVzh$ymT?d8b0hBlE749j-etit8V@4gx*q?x15Bc!=n84$S|C1IPU4 zNCA&9j5@%WK#eju=LmyyE-*3R4F>nP&q%;%5B#CVL{GB~oH1tf!lBL2UAI^PpW5dUC+ z`o{uk9-4Sty~gCZg~bz_1tTst`j3GmnX6|7Vw3D%Vo$R)mlc+Nzs-`h8%;L614KJJ}PzzLv662`q24= zS`!R3cuHt3bzNxXx-LZMCu^8S8maKb4mj2igV-<4!2`hk3GAlh3A`+yCa_}|00Q(@ucWfeWD#yUEHbe6LF=JB9^Z%P6Bl)Sg#RHz1zOE>8BUvsU>-G zYId_EpcVD+G`6@a;{~QO_>vvU_<-+ZF#bsfU%OkGA)q;n@mLn`+lyHo|7uobx3tO8 z`K75@Nm1mbM>mV?v6jWR#W(_U8vP>-Hh`4F3;S{o9|c1mbuy1eIPh@L^Rd0soUcKz9MlbH0e#Hi}rzTnY29mT*kHgzx6fQv7j6nwhK4 ztMwdbp%PjqIyb{YanyL(uKtyCX=6_0IZa;5=QO#mz-n@?Fs#Wdh3NM6Fw4tjr}|H! vUmMd`r$u(;hr_@=v~M6y*_NG;uxlUI7DS|n)2d(DuKT!2DhuC7*qN1s4Cqx zkBh1R;diGdb;TLUJyJU~Ma)eEnd>2bD`TW0j zF@#%fPtzgdN9el<-=>3v8}wenl$#}d&^8*V4!@Jw7f5u^G>$!j{Q-|6vw^T8=l;!n5(p`on*o<1G#^pq9-dWXfzK*( znGYzk!50+?3!EYcg}fq5f?F?tv~y=iYcq8m4>)j5FewFFf>#k=u(NC}*xBAi4vkoJHAYqaV;@QJce3w z9G8=!)-TDk-FQAj<6=g@I*B(jQ3zQ##0~0Gbh(Gr$LmnrX?mr zRPv-{=A_0Kr55BDffY$Y6ioJKVPl3GHaUky4$fZ4q6|^NR*;%skdr$30ZR=~-~o&H ff6s4&DD&h*7BP;*y z3pa>n&dN^$(d;>yNkxf8AOlPo!NyEp$D$09VJk>2D$dUXF(wiSf`R#tpiR{Kbw1nF`fh3JQ)nNu{~Po2?kxJOHAU38(-7 delta 28 jcmX>!iSfWB#tpiRyp9E#3e{W+3XVBRrMa7J7}-1ki?Rs9 diff --git a/mobile/openapi/lib/api/api_key_api.dart b/mobile/openapi/lib/api/api_keys_api.dart similarity index 98% rename from mobile/openapi/lib/api/api_key_api.dart rename to mobile/openapi/lib/api/api_keys_api.dart index 03c6605706ef45e6a0fa40659ab68a7bcb777770..2e7757f20a15a6eee92296c6be25a0547b276a1c 100644 GIT binary patch delta 29 kcmX?Sd%<>t9-~09V?m}uHJ5^dV}Pf3YGv_e8^%ep0GJ2~j{pDw delta 27 icmca$d(L))9wVP)L8d}Amx6+0fTwqAfb delta 30 lcmZqUZ{goy$SCMokf~73rJ&$aT9A{OoLG{&*@e-G4FHKO2=)K~ diff --git a/mobile/openapi/lib/api/face_api.dart b/mobile/openapi/lib/api/faces_api.dart similarity index 97% rename from mobile/openapi/lib/api/face_api.dart rename to mobile/openapi/lib/api/faces_api.dart index cf37c3019707ed7153dff761e2805aa5259e7749..addda0a7a30013b58398ea9c4f1f8586cd83cbff 100644 GIT binary patch delta 27 icmdlXyGwS14kKT&V?m}uHJ5^dTVir*@n#Fg23`PrR0w4N delta 25 gcmdlbyF+$^4kM3aL8d}Amx6*@Vsh$cE5-(10B2(de*gdg diff --git a/mobile/openapi/lib/api/file_report_api.dart b/mobile/openapi/lib/api/file_reports_api.dart similarity index 97% rename from mobile/openapi/lib/api/file_report_api.dart rename to mobile/openapi/lib/api/file_reports_api.dart index a52f02d43bcded7a479c23de44ec7ad8459ea095..5eab91576e3d2ba51c03a98dadc9bc6f61b27f81 100644 GIT binary patch delta 33 ocmeya@>6Al5u-@4V?m}uHJ5^dTV_sbP-;PbQAzP;7e-@20L-EbO#lD@ delta 31 mcmeyV@?B+v5u=b}L8d}Amx6*@W=?8QYC(Qc$!0f3V?hA2HVS6| diff --git a/mobile/openapi/lib/api/job_api.dart b/mobile/openapi/lib/api/jobs_api.dart similarity index 97% rename from mobile/openapi/lib/api/job_api.dart rename to mobile/openapi/lib/api/jobs_api.dart index d7be8237d7eb1e1efcab649bd4547d0cdd5a0bce..5f9501d126f8e5c0e38f9e3d86c62745ac53f1fe 100644 GIT binary patch delta 26 hcmcaF{ZM*?HY0DbV?m}uHJ5^dSAJ6QW;4c>JOFxW2!8+o delta 24 fcmaDTeP4QmHY2xVL8d}Amx6*~&n diff --git a/mobile/openapi/lib/api/partner_api.dart b/mobile/openapi/lib/api/partners_api.dart similarity index 98% rename from mobile/openapi/lib/api/partner_api.dart rename to mobile/openapi/lib/api/partners_api.dart index 66ec2b089b814b2069d679951c3824173beab57f..3794e7907999efd3b2970ec86b217afa98f744da 100644 GIT binary patch delta 30 lcmexj^v!64KBHi`6`3PAt> delta 28 jcmexn^u=g{J|n+lL8d}Amx4k-Vo^z6YSCr~Ml%Tjl;R0n diff --git a/mobile/openapi/lib/api/person_api.dart b/mobile/openapi/lib/api/people_api.dart similarity index 99% rename from mobile/openapi/lib/api/person_api.dart rename to mobile/openapi/lib/api/people_api.dart index a05aa03e1fe6a7c1c4398d61028df63e1bd9ec15..0086f26fa4c34545975080416db31fe43a29cfce 100644 GIT binary patch delta 33 mcmdnl&bYIkaf244P<}y9s$)T>LN%9yLO?2rx7miV)(HT`S_?A( delta 33 mcmdnl&bYIkaf244P*HJyo?}6#LN%9yLO?2rx7miV)(HT|QVUlA diff --git a/mobile/openapi/lib/api/shared_link_api.dart b/mobile/openapi/lib/api/shared_links_api.dart similarity index 99% rename from mobile/openapi/lib/api/shared_link_api.dart rename to mobile/openapi/lib/api/shared_links_api.dart index 80a5034dff37995137ec8f9bdbca55d1f72b4a17..12e0224999375d52ced2c48a542537c300530b49 100644 GIT binary patch delta 33 ocmaEn|0;ij5u-@4V?m}uHJ5@ya7JQLYKl*0UUuJY2XB4UJ^r7P>_Hkpm^-L1`B=&U9cswdBLKa(!WJxHln(=?{ z0wBQ!2};zhN6x`R5|IEFw{Q1bECHn7Kj`<#>CN@!i=PJX2JcU=2WRB`;?1B-&MwKj z%WLxX^6cXLzh6K$k@Md^P5G;Dd*6J2ARdEvYi z7SF7eg+au!VHigbkd04hH2nVS;b=nB?BD>Z<0KxFIAIY@f*$<&;o#t46w)jsHyKM$ zlYo3WAjR*_ExdRg22kw@fz0aX-61(DpU5lp`{ac9Y)oe%*9D;hLdHQvL!#f6C1h$J zhWU!6FvQc0(1`qeeSJl|tIH49qz_}AX8k0M#o)gPru2b%qWvl5K^#GDpQMb>(kLT* z!pQA=mL)J=?5+pZO2K-FkJOv|{lCcVTWDt>#^fAi-$5foMmog|9g6JdGZ4*Q7DA87 zC}othE7hC}(VAZZKKYsRfhr}PdKxf%!OH{VA**Be{+D?^*mv+1-Zam zZ(2-HUx<6*Q%*f-k}P^3$03=}>^xwhFN%$!vkW(3n!sBXy7}+C z&-oLY?;=A{QSpqYx_DR4Xz>QmTQA54(}d5-i5xeu5JsxBZmOK@xa`KZ)bn*sDGP-? z6+ImJYxd##C5$qXcQVkYl@$J{&b;%>-pU^NQQOv=_iwa4=g^iW==aft9%Y!Ks zMIO_DgK2sI6!s$SEvBQs4jx7|MDhcebD5-`Cth=F&6Cq5-a_1Zk~zr2Jjx`i?F-k)&V=x?^if31M$h5V!i8fr7E zDWRh(M^){pN+Sv(IcF$a(gwtIHh43*9&EVqtF7C7SgtQvx4A_cEc`6%Icep=bIZW< zZCIp<_1HROpyt^t))ITOD9NGoF%JA=@Gh&c>6lPyFvIn7h9%y|6~Y2vu~13m3iUq) z{?pc6MuogP68IIj5LSqQEwN67aE&%JXL43d$5OwmNNBJGT9z>{svXb_2oDrwSqh%j zUhTlgR0As&ijZE)l8}zrX&81qIpSSt9H2+0*JDW%jf>(w*bUVk`+svo_to+&35V=n zNi^mW$wTq)q#jn_(>TU7*DUTFfXI1X?tz5U_XSz5X=N z-z=sKK3j+oKZ`~zYtNN6#(H4T4N?F%+g-PC9 zzg0jTVFdvmEO`}4?VQQ!47tMMgle8X@|z&bLL)-z>3>H_R@>r5Q74C zHOF7N{Z065HuN}^V+=`y- z7Io~GmIssMj>vurXE)&-_WvNbl-F$c&UViyMaLbNtivS&P5ZZ3XG51qLlLPYEI+D1 zU6ntoMPFti9T?RNK|0w%%~^xX#b&+?`K^GlDopFv+E(R?j{ zLIlaLWgz+Hp9S{}0Bg$&Z-ji<>TboXCrlX;Nr$-`31^E&)Pn8~%D`h$qVoWkQP6vF z^O3w^r8s@G>V*T+R3o>(y}@4MEs2X@?&P%<>O_-oy|@RdpyVGz4?n@x7jbxkg>=c& zmh3<7^Yh=}DQwjvToICwwYV?Cye9`8

+^h@)#m^seK<-8&wV0FUUYyt70CbvH*( z_mXoqK)KfWs%KRpE1BGB19sDNX|uIZiSRTY;fF49+mt@%8*xmq{L?&F!~9~ht7YFE z<6Yfsd=_kpQ4qc<3c%eYa6=l?=b~*X%T7nnq=@F@W=%E9y zgtoQ#dF;9Mws$Mf&GU!mjH@mrKPKatt-A z2$rOVUGpdwHX21z(D-&>Y%pQ>LMnT?1QV9QB#M^#xT*6ZJw&c2mEz zD|wZjgbvDbh9Z{R4ay6uO2I-+&AKXjzcypl26k7w5prHLd*P^U|EX>F8lp9#P!+X# zZYCoZIuUJpSW86~QlqZLP)gVuQQl6awb7l;ba$)n+uf>iIaamh#*XD}{nr}p%>i0- zYTa2ij8j;IVreJz6v>rrVyJ9|M^RqghMh+=7tX_u`PJ58$FiRj%i3mmRkf<9QK4m3 y-bGbOO{-EcN?%#KmeMg2URU#inNcR)0>{sepWE{@LJ(2|w3M}HSiYcrI`|uGuhks@ diff --git a/mobile/openapi/lib/api/users_admin_api.dart b/mobile/openapi/lib/api/users_admin_api.dart new file mode 100644 index 0000000000000000000000000000000000000000..a074645e08885753fdc91c69c30136cf1de4af91 GIT binary patch literal 14282 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 literal 0 HcmV?d00001 diff --git a/open-api/immich-openapi-specs.json b/open-api/immich-openapi-specs.json index 7c84e13ee5..1ee7ad8b08 100644 --- a/open-api/immich-openapi-specs.json +++ b/open-api/immich-openapi-specs.json @@ -76,7 +76,7 @@ } ], "tags": [ - "Activity" + "Activities" ] }, "post": { @@ -116,7 +116,7 @@ } ], "tags": [ - "Activity" + "Activities" ] } }, @@ -167,7 +167,7 @@ } ], "tags": [ - "Activity" + "Activities" ] } }, @@ -202,7 +202,7 @@ } ], "tags": [ - "Activity" + "Activities" ] } }, @@ -246,7 +246,7 @@ } ], "tags": [ - "User" + "Users (admin)" ] }, "post": { @@ -286,7 +286,7 @@ } ], "tags": [ - "User" + "Users (admin)" ] } }, @@ -338,7 +338,7 @@ } ], "tags": [ - "User" + "Users (admin)" ] }, "get": { @@ -378,7 +378,7 @@ } ], "tags": [ - "User" + "Users (admin)" ] }, "put": { @@ -428,7 +428,7 @@ } ], "tags": [ - "User" + "Users (admin)" ] } }, @@ -470,7 +470,7 @@ } ], "tags": [ - "User" + "Users (admin)" ] }, "put": { @@ -520,7 +520,7 @@ } ], "tags": [ - "User" + "Users (admin)" ] } }, @@ -562,7 +562,7 @@ } ], "tags": [ - "User" + "Users (admin)" ] } }, @@ -616,7 +616,7 @@ } ], "tags": [ - "Album" + "Albums" ] }, "post": { @@ -656,7 +656,7 @@ } ], "tags": [ - "Album" + "Albums" ] } }, @@ -688,7 +688,7 @@ } ], "tags": [ - "Album" + "Albums" ] } }, @@ -723,7 +723,7 @@ } ], "tags": [ - "Album" + "Albums" ] }, "get": { @@ -779,7 +779,7 @@ } ], "tags": [ - "Album" + "Albums" ] }, "patch": { @@ -829,7 +829,7 @@ } ], "tags": [ - "Album" + "Albums" ] } }, @@ -884,7 +884,7 @@ } ], "tags": [ - "Album" + "Albums" ] }, "put": { @@ -945,7 +945,7 @@ } ], "tags": [ - "Album" + "Albums" ] } }, @@ -988,7 +988,7 @@ } ], "tags": [ - "Album" + "Albums" ] }, "put": { @@ -1039,7 +1039,7 @@ } ], "tags": [ - "Album" + "Albums" ] } }, @@ -1091,7 +1091,7 @@ } ], "tags": [ - "Album" + "Albums" ] } }, @@ -1126,7 +1126,7 @@ } ], "tags": [ - "API Key" + "API Keys" ] }, "post": { @@ -1166,7 +1166,7 @@ } ], "tags": [ - "API Key" + "API Keys" ] } }, @@ -1201,7 +1201,7 @@ } ], "tags": [ - "API Key" + "API Keys" ] }, "get": { @@ -1241,7 +1241,7 @@ } ], "tags": [ - "API Key" + "API Keys" ] }, "put": { @@ -1291,7 +1291,7 @@ } ], "tags": [ - "API Key" + "API Keys" ] } }, @@ -1326,7 +1326,7 @@ } ], "tags": [ - "Asset" + "Assets" ] }, "put": { @@ -1359,7 +1359,7 @@ } ], "tags": [ - "Asset" + "Assets" ] } }, @@ -1402,7 +1402,7 @@ } ], "tags": [ - "Asset" + "Assets" ] } }, @@ -1447,7 +1447,7 @@ } ], "tags": [ - "Asset" + "Assets" ] } }, @@ -1490,7 +1490,7 @@ } ], "tags": [ - "Asset" + "Assets" ] } }, @@ -1559,7 +1559,7 @@ } ], "tags": [ - "Asset" + "Assets" ] } }, @@ -1594,7 +1594,7 @@ } ], "tags": [ - "Asset" + "Assets" ] } }, @@ -1650,7 +1650,7 @@ } ], "tags": [ - "Asset" + "Assets" ] } }, @@ -1695,7 +1695,7 @@ } ], "tags": [ - "Asset" + "Assets" ] } }, @@ -1730,7 +1730,7 @@ } ], "tags": [ - "Asset" + "Assets" ] } }, @@ -1787,7 +1787,7 @@ } ], "tags": [ - "Asset" + "Assets" ] } }, @@ -1846,7 +1846,7 @@ } ], "tags": [ - "Asset" + "Assets" ] } }, @@ -1907,7 +1907,7 @@ } ], "tags": [ - "Asset" + "Assets" ] } }, @@ -1957,7 +1957,7 @@ } ], "tags": [ - "Asset" + "Assets" ] }, "put": { @@ -2007,7 +2007,7 @@ } ], "tags": [ - "Asset" + "Assets" ] } }, @@ -2068,7 +2068,7 @@ } ], "tags": [ - "Asset" + "Assets" ], "x-immich-lifecycle": { "addedAt": "v1.106.0" @@ -2487,7 +2487,7 @@ } ], "tags": [ - "Duplicate" + "Duplicates" ] } }, @@ -2532,7 +2532,7 @@ } ], "tags": [ - "Face" + "Faces" ] } }, @@ -2584,7 +2584,7 @@ } ], "tags": [ - "Face" + "Faces" ] } }, @@ -2616,7 +2616,7 @@ } ], "tags": [ - "Job" + "Jobs" ] } }, @@ -2667,7 +2667,7 @@ } ], "tags": [ - "Job" + "Jobs" ] } }, @@ -2702,7 +2702,7 @@ } ], "tags": [ - "Library" + "Libraries" ] }, "post": { @@ -2742,7 +2742,7 @@ } ], "tags": [ - "Library" + "Libraries" ] } }, @@ -2777,7 +2777,7 @@ } ], "tags": [ - "Library" + "Libraries" ] }, "get": { @@ -2817,7 +2817,7 @@ } ], "tags": [ - "Library" + "Libraries" ] }, "put": { @@ -2867,7 +2867,7 @@ } ], "tags": [ - "Library" + "Libraries" ] } }, @@ -2902,7 +2902,7 @@ } ], "tags": [ - "Library" + "Libraries" ] } }, @@ -2947,7 +2947,7 @@ } ], "tags": [ - "Library" + "Libraries" ] } }, @@ -2989,7 +2989,7 @@ } ], "tags": [ - "Library" + "Libraries" ] } }, @@ -3041,7 +3041,7 @@ } ], "tags": [ - "Library" + "Libraries" ] } }, @@ -3211,7 +3211,7 @@ } ], "tags": [ - "Memory" + "Memories" ] }, "post": { @@ -3251,7 +3251,7 @@ } ], "tags": [ - "Memory" + "Memories" ] } }, @@ -3286,7 +3286,7 @@ } ], "tags": [ - "Memory" + "Memories" ] }, "get": { @@ -3326,7 +3326,7 @@ } ], "tags": [ - "Memory" + "Memories" ] }, "put": { @@ -3376,7 +3376,7 @@ } ], "tags": [ - "Memory" + "Memories" ] } }, @@ -3431,7 +3431,7 @@ } ], "tags": [ - "Memory" + "Memories" ] }, "put": { @@ -3484,7 +3484,7 @@ } ], "tags": [ - "Memory" + "Memories" ] } }, @@ -3682,7 +3682,7 @@ } ], "tags": [ - "Partner" + "Partners" ] } }, @@ -3717,7 +3717,7 @@ } ], "tags": [ - "Partner" + "Partners" ] }, "post": { @@ -3757,7 +3757,7 @@ } ], "tags": [ - "Partner" + "Partners" ] }, "put": { @@ -3807,7 +3807,7 @@ } ], "tags": [ - "Partner" + "Partners" ] } }, @@ -3848,7 +3848,7 @@ } ], "tags": [ - "Person" + "People" ] }, "post": { @@ -3888,7 +3888,7 @@ } ], "tags": [ - "Person" + "People" ] }, "put": { @@ -3931,7 +3931,7 @@ } ], "tags": [ - "Person" + "People" ] } }, @@ -3973,7 +3973,7 @@ } ], "tags": [ - "Person" + "People" ] }, "put": { @@ -4023,7 +4023,7 @@ } ], "tags": [ - "Person" + "People" ] } }, @@ -4068,7 +4068,7 @@ } ], "tags": [ - "Person" + "People" ] } }, @@ -4123,7 +4123,7 @@ } ], "tags": [ - "Person" + "People" ] } }, @@ -4178,7 +4178,7 @@ } ], "tags": [ - "Person" + "People" ] } }, @@ -4220,7 +4220,7 @@ } ], "tags": [ - "Person" + "People" ] } }, @@ -4263,7 +4263,7 @@ } ], "tags": [ - "Person" + "People" ] } }, @@ -4295,7 +4295,7 @@ } ], "tags": [ - "File Report" + "File Reports" ] } }, @@ -4340,7 +4340,7 @@ } ], "tags": [ - "File Report" + "File Reports" ] } }, @@ -4375,7 +4375,7 @@ } ], "tags": [ - "File Report" + "File Reports" ] } }, @@ -5019,7 +5019,7 @@ } ], "tags": [ - "Shared Link" + "Shared Links" ] }, "post": { @@ -5059,7 +5059,7 @@ } ], "tags": [ - "Shared Link" + "Shared Links" ] } }, @@ -5117,7 +5117,7 @@ } ], "tags": [ - "Shared Link" + "Shared Links" ] } }, @@ -5152,7 +5152,7 @@ } ], "tags": [ - "Shared Link" + "Shared Links" ] }, "get": { @@ -5192,7 +5192,7 @@ } ], "tags": [ - "Shared Link" + "Shared Links" ] }, "patch": { @@ -5242,7 +5242,7 @@ } ], "tags": [ - "Shared Link" + "Shared Links" ] } }, @@ -5305,7 +5305,7 @@ } ], "tags": [ - "Shared Link" + "Shared Links" ] }, "put": { @@ -5366,7 +5366,7 @@ } ], "tags": [ - "Shared Link" + "Shared Links" ] } }, @@ -5721,7 +5721,7 @@ } ], "tags": [ - "Tag" + "Tags" ] }, "post": { @@ -5761,7 +5761,7 @@ } ], "tags": [ - "Tag" + "Tags" ] } }, @@ -5796,7 +5796,7 @@ } ], "tags": [ - "Tag" + "Tags" ] }, "get": { @@ -5836,7 +5836,7 @@ } ], "tags": [ - "Tag" + "Tags" ] }, "patch": { @@ -5886,7 +5886,7 @@ } ], "tags": [ - "Tag" + "Tags" ] } }, @@ -5941,7 +5941,7 @@ } ], "tags": [ - "Tag" + "Tags" ] }, "get": { @@ -5984,7 +5984,7 @@ } ], "tags": [ - "Tag" + "Tags" ] }, "put": { @@ -6037,7 +6037,7 @@ } ], "tags": [ - "Tag" + "Tags" ] } }, @@ -6419,7 +6419,7 @@ } ], "tags": [ - "User" + "Users" ] } }, @@ -6451,7 +6451,7 @@ } ], "tags": [ - "User" + "Users" ] }, "put": { @@ -6491,7 +6491,7 @@ } ], "tags": [ - "User" + "Users" ] } }, @@ -6523,7 +6523,7 @@ } ], "tags": [ - "User" + "Users" ] }, "put": { @@ -6563,7 +6563,7 @@ } ], "tags": [ - "User" + "Users" ] } }, @@ -6588,7 +6588,7 @@ } ], "tags": [ - "User" + "Users" ] }, "post": { @@ -6629,7 +6629,7 @@ } ], "tags": [ - "User" + "Users" ] } }, @@ -6671,7 +6671,7 @@ } ], "tags": [ - "User" + "Users" ] } }, @@ -6714,7 +6714,7 @@ } ], "tags": [ - "User" + "Users" ] } } diff --git a/server/src/controllers/activity.controller.ts b/server/src/controllers/activity.controller.ts index de59437a89..76b58a56ce 100644 --- a/server/src/controllers/activity.controller.ts +++ b/server/src/controllers/activity.controller.ts @@ -13,7 +13,7 @@ import { Auth, Authenticated } from 'src/middleware/auth.guard'; import { ActivityService } from 'src/services/activity.service'; import { UUIDParamDto } from 'src/validation'; -@ApiTags('Activity') +@ApiTags('Activities') @Controller('activities') export class ActivityController { constructor(private service: ActivityService) {} diff --git a/server/src/controllers/album.controller.ts b/server/src/controllers/album.controller.ts index ea42ed4d79..1455aeec4b 100644 --- a/server/src/controllers/album.controller.ts +++ b/server/src/controllers/album.controller.ts @@ -16,7 +16,7 @@ import { Auth, Authenticated } from 'src/middleware/auth.guard'; import { AlbumService } from 'src/services/album.service'; import { ParseMeUUIDPipe, UUIDParamDto } from 'src/validation'; -@ApiTags('Album') +@ApiTags('Albums') @Controller('albums') export class AlbumController { constructor(private service: AlbumService) {} diff --git a/server/src/controllers/api-key.controller.ts b/server/src/controllers/api-key.controller.ts index 4225bdc1bc..54144e78d5 100644 --- a/server/src/controllers/api-key.controller.ts +++ b/server/src/controllers/api-key.controller.ts @@ -6,7 +6,7 @@ import { Auth, Authenticated } from 'src/middleware/auth.guard'; import { APIKeyService } from 'src/services/api-key.service'; import { UUIDParamDto } from 'src/validation'; -@ApiTags('API Key') +@ApiTags('API Keys') @Controller('api-keys') export class APIKeyController { constructor(private service: APIKeyService) {} diff --git a/server/src/controllers/asset-media.controller.ts b/server/src/controllers/asset-media.controller.ts index 064a6d22ab..d70afc9dab 100644 --- a/server/src/controllers/asset-media.controller.ts +++ b/server/src/controllers/asset-media.controller.ts @@ -34,7 +34,7 @@ import { FileUploadInterceptor, Route, UploadFiles, getFiles } from 'src/middlew import { AssetMediaService } from 'src/services/asset-media.service'; import { FileNotEmptyValidator, UUIDParamDto } from 'src/validation'; -@ApiTags('Asset') +@ApiTags('Assets') @Controller(Route.ASSET) export class AssetMediaController { constructor( diff --git a/server/src/controllers/asset-v1.controller.ts b/server/src/controllers/asset-v1.controller.ts index 380aaca390..d1e71a6175 100644 --- a/server/src/controllers/asset-v1.controller.ts +++ b/server/src/controllers/asset-v1.controller.ts @@ -26,7 +26,7 @@ import { AssetServiceV1 } from 'src/services/asset-v1.service'; import { sendFile } from 'src/utils/file'; import { FileNotEmptyValidator, UUIDParamDto } from 'src/validation'; -@ApiTags('Asset') +@ApiTags('Assets') @Controller(Route.ASSET) export class AssetControllerV1 { constructor( diff --git a/server/src/controllers/asset.controller.ts b/server/src/controllers/asset.controller.ts index e7176a37c0..8c70bed166 100644 --- a/server/src/controllers/asset.controller.ts +++ b/server/src/controllers/asset.controller.ts @@ -19,7 +19,7 @@ import { Route } from 'src/middleware/file-upload.interceptor'; import { AssetService } from 'src/services/asset.service'; import { UUIDParamDto } from 'src/validation'; -@ApiTags('Asset') +@ApiTags('Assets') @Controller(Route.ASSET) export class AssetController { constructor(private service: AssetService) {} diff --git a/server/src/controllers/duplicate.controller.ts b/server/src/controllers/duplicate.controller.ts index 57a200ac39..f62d29d077 100644 --- a/server/src/controllers/duplicate.controller.ts +++ b/server/src/controllers/duplicate.controller.ts @@ -5,7 +5,7 @@ import { DuplicateResponseDto } from 'src/dtos/duplicate.dto'; import { Auth, Authenticated } from 'src/middleware/auth.guard'; import { DuplicateService } from 'src/services/duplicate.service'; -@ApiTags('Duplicate') +@ApiTags('Duplicates') @Controller('duplicates') export class DuplicateController { constructor(private service: DuplicateService) {} diff --git a/server/src/controllers/face.controller.ts b/server/src/controllers/face.controller.ts index cb4bc080c8..e3330e9563 100644 --- a/server/src/controllers/face.controller.ts +++ b/server/src/controllers/face.controller.ts @@ -6,7 +6,7 @@ import { Auth, Authenticated } from 'src/middleware/auth.guard'; import { PersonService } from 'src/services/person.service'; import { UUIDParamDto } from 'src/validation'; -@ApiTags('Face') +@ApiTags('Faces') @Controller('faces') export class FaceController { constructor(private service: PersonService) {} diff --git a/server/src/controllers/file-report.controller.ts b/server/src/controllers/file-report.controller.ts index 523debfb4c..a51a94a50e 100644 --- a/server/src/controllers/file-report.controller.ts +++ b/server/src/controllers/file-report.controller.ts @@ -4,7 +4,7 @@ import { FileChecksumDto, FileChecksumResponseDto, FileReportDto, FileReportFixD import { Authenticated } from 'src/middleware/auth.guard'; import { AuditService } from 'src/services/audit.service'; -@ApiTags('File Report') +@ApiTags('File Reports') @Controller('reports') export class ReportController { constructor(private service: AuditService) {} diff --git a/server/src/controllers/job.controller.ts b/server/src/controllers/job.controller.ts index 2d23263221..2aa5920fab 100644 --- a/server/src/controllers/job.controller.ts +++ b/server/src/controllers/job.controller.ts @@ -4,7 +4,7 @@ import { AllJobStatusResponseDto, JobCommandDto, JobIdParamDto, JobStatusDto } f import { Authenticated } from 'src/middleware/auth.guard'; import { JobService } from 'src/services/job.service'; -@ApiTags('Job') +@ApiTags('Jobs') @Controller('jobs') export class JobController { constructor(private service: JobService) {} diff --git a/server/src/controllers/library.controller.ts b/server/src/controllers/library.controller.ts index b6d65874ca..fd7a88b074 100644 --- a/server/src/controllers/library.controller.ts +++ b/server/src/controllers/library.controller.ts @@ -13,7 +13,7 @@ import { Authenticated } from 'src/middleware/auth.guard'; import { LibraryService } from 'src/services/library.service'; import { UUIDParamDto } from 'src/validation'; -@ApiTags('Library') +@ApiTags('Libraries') @Controller('libraries') export class LibraryController { constructor(private service: LibraryService) {} diff --git a/server/src/controllers/memory.controller.ts b/server/src/controllers/memory.controller.ts index 4b779c60f2..9c5c22de43 100644 --- a/server/src/controllers/memory.controller.ts +++ b/server/src/controllers/memory.controller.ts @@ -7,7 +7,7 @@ import { Auth, Authenticated } from 'src/middleware/auth.guard'; import { MemoryService } from 'src/services/memory.service'; import { UUIDParamDto } from 'src/validation'; -@ApiTags('Memory') +@ApiTags('Memories') @Controller('memories') export class MemoryController { constructor(private service: MemoryService) {} diff --git a/server/src/controllers/partner.controller.ts b/server/src/controllers/partner.controller.ts index 102f6f10ce..927078bf0b 100644 --- a/server/src/controllers/partner.controller.ts +++ b/server/src/controllers/partner.controller.ts @@ -7,7 +7,7 @@ import { Auth, Authenticated } from 'src/middleware/auth.guard'; import { PartnerService } from 'src/services/partner.service'; import { UUIDParamDto } from 'src/validation'; -@ApiTags('Partner') +@ApiTags('Partners') @Controller('partners') export class PartnerController { constructor(private service: PartnerService) {} diff --git a/server/src/controllers/person.controller.ts b/server/src/controllers/person.controller.ts index 26f9df2e1f..5f642dfa00 100644 --- a/server/src/controllers/person.controller.ts +++ b/server/src/controllers/person.controller.ts @@ -21,7 +21,7 @@ import { PersonService } from 'src/services/person.service'; import { sendFile } from 'src/utils/file'; import { UUIDParamDto } from 'src/validation'; -@ApiTags('Person') +@ApiTags('People') @Controller('people') export class PersonController { constructor( diff --git a/server/src/controllers/shared-link.controller.ts b/server/src/controllers/shared-link.controller.ts index a7be1911d9..ffd6e0c969 100644 --- a/server/src/controllers/shared-link.controller.ts +++ b/server/src/controllers/shared-link.controller.ts @@ -16,7 +16,7 @@ import { SharedLinkService } from 'src/services/shared-link.service'; import { respondWithCookie } from 'src/utils/response'; import { UUIDParamDto } from 'src/validation'; -@ApiTags('Shared Link') +@ApiTags('Shared Links') @Controller('shared-links') export class SharedLinkController { constructor(private service: SharedLinkService) {} diff --git a/server/src/controllers/tag.controller.ts b/server/src/controllers/tag.controller.ts index 1f8a44dd5b..71d826fcc5 100644 --- a/server/src/controllers/tag.controller.ts +++ b/server/src/controllers/tag.controller.ts @@ -9,7 +9,7 @@ import { Auth, Authenticated } from 'src/middleware/auth.guard'; import { TagService } from 'src/services/tag.service'; import { UUIDParamDto } from 'src/validation'; -@ApiTags('Tag') +@ApiTags('Tags') @Controller('tags') export class TagController { constructor(private service: TagService) {} diff --git a/server/src/controllers/user-admin.controller.ts b/server/src/controllers/user-admin.controller.ts index 83b5156eda..a4f3b3198c 100644 --- a/server/src/controllers/user-admin.controller.ts +++ b/server/src/controllers/user-admin.controller.ts @@ -13,7 +13,7 @@ import { Auth, Authenticated } from 'src/middleware/auth.guard'; import { UserAdminService } from 'src/services/user-admin.service'; import { UUIDParamDto } from 'src/validation'; -@ApiTags('User') +@ApiTags('Users (admin)') @Controller('admin/users') export class UserAdminController { constructor(private service: UserAdminService) {} diff --git a/server/src/controllers/user.controller.ts b/server/src/controllers/user.controller.ts index 66a92e1a3f..82b9d67692 100644 --- a/server/src/controllers/user.controller.ts +++ b/server/src/controllers/user.controller.ts @@ -27,7 +27,7 @@ import { UserService } from 'src/services/user.service'; import { sendFile } from 'src/utils/file'; import { UUIDParamDto } from 'src/validation'; -@ApiTags('User') +@ApiTags('Users') @Controller(Route.USER) export class UserController { constructor(