diff --git a/svmon-backend/src/api/apiToken/api-token.controller.ts b/svmon-backend/src/api/apiToken/api-token.controller.ts index 192b8811336a9e1acd2ab1a738975d84c2753105..08fbe79177f45ecb5ac6e1f26e48c1a970883bfc 100644 --- a/svmon-backend/src/api/apiToken/api-token.controller.ts +++ b/svmon-backend/src/api/apiToken/api-token.controller.ts @@ -10,6 +10,7 @@ import { UserRole } from '../auth/roles/user-role.enum'; import { Request } from 'express'; import { User } from '../auth/users/user.entity'; import { ApiTokenService } from './api-token.service'; +import { ApiTokenResultDto } from './dto/api-token.dto'; @Controller('auth') @ApiTags('auth') @@ -20,10 +21,12 @@ export class ApiTokenController { @Get('/apiToken') @ApiOperation({ summary: 'Request an api token from the user', + description: + 'Request a new token for the user, mark the last one as disabled', }) @ApiCreatedResponse({ description: 'Returns an api token for the user', - type: String, + type: ApiTokenResultDto, }) @ApiForbiddenResponse({ description: 'Forbidden.' }) @Roles(UserRole.USER, UserRole.ADMIN) diff --git a/svmon-backend/src/api/app.controller.ts b/svmon-backend/src/api/app.controller.ts index 1338abdc0577c8854d2af02cd893b36038a78d88..c00100c459219c65e45eb65d2d6d444983a69f5e 100644 --- a/svmon-backend/src/api/app.controller.ts +++ b/svmon-backend/src/api/app.controller.ts @@ -1,22 +1,20 @@ import { Controller, Get, Logger, Res } from '@nestjs/common'; -import { ApiOperation, ApiTags } from '@nestjs/swagger'; +import { ApiCreatedResponse, ApiOperation, ApiTags } from '@nestjs/swagger'; import { Public } from './auth/guards/public.guard'; import { Response } from 'express'; @Controller('') -@ApiTags('') +@ApiTags('status') export class AppController { private readonly logger = new Logger(AppController.name); constructor() {} @ApiOperation({ summary: 'Returns the health status of the API', - responses: {}, - security: [ - { - bearerAuth: [], - }, - ], + }) + @ApiCreatedResponse({ + description: 'Api health status: ONLINE', + type: String, }) @Get('/status') @Public() diff --git a/svmon-backend/src/api/app.module.ts b/svmon-backend/src/api/app.module.ts index 3b85c393e3333d1af003ff7c9404d6fd4137ea41..9add31217632815a6c4095103a77f70cc8d53e92 100644 --- a/svmon-backend/src/api/app.module.ts +++ b/svmon-backend/src/api/app.module.ts @@ -9,7 +9,6 @@ import { import { UsersModule } from './auth/users/users.module'; import { MysqlModule } from '../db/mysql.module'; import { ProviderModule } from './provider/provider.module'; -import { OwnerModule } from './owner/owner.module'; import { ServicesModule } from './services/services.module'; import { ServeStaticModule } from '@nestjs/serve-static'; import { @@ -29,7 +28,6 @@ import { AppController } from './app.controller'; UsersModule, MysqlModule, ProviderModule, - OwnerModule, ApiTokenModule, ServeStaticModule.forRoot({ rootPath: getFrontendDeploymentPath(), diff --git a/svmon-backend/src/api/auth/auth.controller.ts b/svmon-backend/src/api/auth/auth.controller.ts index dbdf917a48697a614a148d386d2a3817f2fb1641..d261043e06d68948386c5947912f7ef688fca723 100644 --- a/svmon-backend/src/api/auth/auth.controller.ts +++ b/svmon-backend/src/api/auth/auth.controller.ts @@ -15,6 +15,7 @@ import { Public } from './guards/public.guard'; import { UserDTO, UserProfileDTO } from './users/user.dto'; import { ApiCreatedResponse, + ApiExcludeEndpoint, ApiForbiddenResponse, ApiOperation, ApiTags, @@ -77,6 +78,10 @@ export class AuthController { } @Get('profile') + @ApiOperation({ + summary: 'Retrieves the user profile information', + description: 'Retrieves the user profile information', + }) @ApiCreatedResponse({ description: 'Successfully login.', type: UserProfileDTO, @@ -88,6 +93,7 @@ export class AuthController { @Get('oauth2') @UseGuards(AuthGuard('oauth2')) + @ApiExcludeEndpoint() @Public() // Needed to activate AuthGuard with oauth2 // eslint-disable-next-line @typescript-eslint/no-empty-function @@ -95,6 +101,7 @@ export class AuthController { @Get('callback') @UseGuards(AuthGuard('oauth2')) + @ApiExcludeEndpoint() @Public() async handleOauthCallback(@Req() req: Request, @Res() res: Response) { const accessToken = (req.user as LoginTokenDto).access_token; diff --git a/svmon-backend/src/api/auth/users/users.controller.ts b/svmon-backend/src/api/auth/users/users.controller.ts index 9ae9f0cd22c7e6a18a34c4a5b5a7c3bd94652e3f..a953e72ed422209b9029793c28eab201aa6fbfe3 100644 --- a/svmon-backend/src/api/auth/users/users.controller.ts +++ b/svmon-backend/src/api/auth/users/users.controller.ts @@ -1,6 +1,7 @@ -import { Controller, Body, Put, Res, HttpStatus } from '@nestjs/common'; +import { Controller, Body, Put } from '@nestjs/common'; import { ApiCreatedResponse, + ApiExcludeEndpoint, ApiForbiddenResponse, ApiOkResponse, ApiOperation, @@ -45,6 +46,7 @@ export class UsersController { }) @ApiOkResponse({ content: { 'application/json': {} } }) @ApiForbiddenResponse({ description: 'Forbidden.' }) + @ApiExcludeEndpoint() @Roles(UserRole.ADMIN) async updateRoles(@Body() user: UpdateUserDto): Promise { await this.usersService.updateRoles(user.email, user.roles); diff --git a/svmon-backend/src/api/dpmt/dpmt.controller.ts b/svmon-backend/src/api/dpmt/dpmt.controller.ts index 8e2baeae1048e6707d944dd75661f7e02a169240..ce20980de339a6b19b3b9ffb950a2bee36b5a3ac 100644 --- a/svmon-backend/src/api/dpmt/dpmt.controller.ts +++ b/svmon-backend/src/api/dpmt/dpmt.controller.ts @@ -1,6 +1,13 @@ import { Controller, Get, Param } from '@nestjs/common'; import { DPMTService } from './dpmt.service'; -import { ApiBearerAuth, ApiTags } from '@nestjs/swagger'; +import { + ApiBearerAuth, + ApiCreatedResponse, + ApiForbiddenResponse, + ApiOperation, + ApiTags, +} from '@nestjs/swagger'; +import { DPMTProviderDTO, DPMTProviderAPIDTO } from './dto/dpmt-provider.dto'; @Controller('dpmt') @ApiTags('dpmt') @@ -8,13 +15,34 @@ import { ApiBearerAuth, ApiTags } from '@nestjs/swagger'; export class DPMTController { constructor(private readonly dpmtService: DPMTService) {} + @ApiOperation({ + summary: 'Returns all the services providers', + description: + 'Returns all the available sites (services providers) registered on DPMT', + }) + @ApiCreatedResponse({ + description: 'List of available service providers', + isArray: true, + type: () => DPMTProviderAPIDTO, + }) + @ApiForbiddenResponse({ description: 'Forbidden.' }) @Get('/sites/all') getAllSites() { return this.dpmtService.getAllProvidersFromDPMT(); } - - @Get('/sites/:id') - findOne(@Param('id') id: string) { + @ApiOperation({ + summary: + 'Receives a provider name of DPMT and returns the details for that provider', + }) + @ApiCreatedResponse({ + description: + 'Receives a provider name of DPMT and returns the details for that provider. Example: KIT will returns details for KIT provider', + isArray: false, + type: () => DPMTProviderDTO, + }) + @ApiForbiddenResponse({ description: 'Forbidden.' }) + @Get('/sites/:providerId') + findOne(@Param('providerId') id: string) { return this.dpmtService.getProviderById(id); } } diff --git a/svmon-backend/src/api/dpmt/dto/dpmt-provider.dto.ts b/svmon-backend/src/api/dpmt/dto/dpmt-provider.dto.ts index 2de4d402f8a0f3cd4ddeece3c5c1093250ea5ce2..d93fc0c9eba8c17508d6273cbb7194535ef8a67f 100644 --- a/svmon-backend/src/api/dpmt/dto/dpmt-provider.dto.ts +++ b/svmon-backend/src/api/dpmt/dto/dpmt-provider.dto.ts @@ -1,9 +1,16 @@ import { ApiProperty } from '@nestjs/swagger'; import { IsNotEmpty } from 'class-validator'; import { Provider } from '../../provider/entities/provider.entity'; -import { SourceOfTruth } from '../../provider/entities/source-of-truth-provider-metadata'; +import { + SourceOfTruth, + SourceOfTruthProviderMetadata, +} from '../../provider/entities/source-of-truth-provider-metadata'; import { DeepPartial } from '../../../utils/types'; +import { Owner } from '../../owner/entities/owner.entity'; +import { ProviderLocation } from '../../provider/entities/provider-location'; +import { Service } from '../../services/entities/service.entity'; + class DomainDTO { @ApiProperty() @IsNotEmpty() domainName: string; } @@ -162,3 +169,39 @@ export class DPMTProviderDTO { }; } } + +export class DPMTProviderAPIDTO { + @ApiProperty() @IsNotEmpty() id: string; + + @ApiProperty() @IsNotEmpty() name: string; + + @ApiProperty() @IsNotEmpty() shortName: string; + + @ApiProperty() @IsNotEmpty() officialName: string; + + @ApiProperty() @IsNotEmpty() homeUrl: string; + + @ApiProperty() + @IsNotEmpty() + sourceOfTruthMetadata: SourceOfTruthProviderMetadata; + + @ApiProperty() @IsNotEmpty() owner: Owner; + + @ApiProperty() @IsNotEmpty() roc: string; + + @ApiProperty() @IsNotEmpty() productionInfrastructure: string; + + @ApiProperty() @IsNotEmpty() certificationStatus: string; + + @ApiProperty() @IsNotEmpty() location: ProviderLocation; + + @ApiProperty() @IsNotEmpty() csirtEmail: string; + + @ApiProperty() @IsNotEmpty() domainName: string; + + @ApiProperty() @IsNotEmpty() services: Service[]; + + @ApiProperty() @IsNotEmpty() createdOn: Date; + + @ApiProperty() @IsNotEmpty() modifiedOn: Date; +} diff --git a/svmon-backend/src/api/owner/dto/create-owner.dto.ts b/svmon-backend/src/api/owner/dto/create-owner.dto.ts deleted file mode 100644 index b09e1543b93f75557564e207e5a4b7ebab5d773c..0000000000000000000000000000000000000000 --- a/svmon-backend/src/api/owner/dto/create-owner.dto.ts +++ /dev/null @@ -1 +0,0 @@ -export class CreateOwnerDto {} diff --git a/svmon-backend/src/api/owner/dto/update-owner.dto.ts b/svmon-backend/src/api/owner/dto/update-owner.dto.ts deleted file mode 100644 index 80287c580b9da288c3fd0a4999cd218b1d2b7b42..0000000000000000000000000000000000000000 --- a/svmon-backend/src/api/owner/dto/update-owner.dto.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { PartialType } from '@nestjs/swagger'; -import { CreateOwnerDto } from './create-owner.dto'; - -export class UpdateOwnerDto extends PartialType(CreateOwnerDto) {} diff --git a/svmon-backend/src/api/owner/owner.controller.spec.ts b/svmon-backend/src/api/owner/owner.controller.spec.ts deleted file mode 100644 index 62747feff470a1157474593f6591d5514dea99f0..0000000000000000000000000000000000000000 --- a/svmon-backend/src/api/owner/owner.controller.spec.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { Test, TestingModule } from '@nestjs/testing'; -import { OwnerController } from './owner.controller'; -import { OwnerService } from './owner.service'; - -describe('OwnerController', () => { - let controller: OwnerController; - - beforeEach(async () => { - const module: TestingModule = await Test.createTestingModule({ - controllers: [OwnerController], - providers: [OwnerService], - }).compile(); - - controller = module.get(OwnerController); - }); - - it('should be defined', () => { - expect(controller).toBeDefined(); - }); -}); diff --git a/svmon-backend/src/api/owner/owner.controller.ts b/svmon-backend/src/api/owner/owner.controller.ts deleted file mode 100644 index 7ba653342aa9c967f68039821ef407c7a140758b..0000000000000000000000000000000000000000 --- a/svmon-backend/src/api/owner/owner.controller.ts +++ /dev/null @@ -1,45 +0,0 @@ -import { - Controller, - Get, - Post, - Body, - Patch, - Param, - Delete, -} from '@nestjs/common'; -import { OwnerService } from './owner.service'; -import { CreateOwnerDto } from './dto/create-owner.dto'; -import { UpdateOwnerDto } from './dto/update-owner.dto'; -import { ApiBearerAuth, ApiTags } from '@nestjs/swagger'; - -@Controller('owner') -@ApiTags('owner') -@ApiBearerAuth('JWT') -export class OwnerController { - constructor(private readonly ownerService: OwnerService) {} - - @Post() - create(@Body() createOwnerDto: CreateOwnerDto) { - return this.ownerService.create(createOwnerDto); - } - - @Get() - findAll() { - return this.ownerService.findAll(); - } - - @Get(':id') - findOne(@Param('id') id: string) { - return this.ownerService.findOne(+id); - } - - @Patch(':id') - update(@Param('id') id: string, @Body() updateOwnerDto: UpdateOwnerDto) { - return this.ownerService.update(+id, updateOwnerDto); - } - - @Delete(':id') - remove(@Param('id') id: string) { - return this.ownerService.remove(+id); - } -} diff --git a/svmon-backend/src/api/owner/owner.module.ts b/svmon-backend/src/api/owner/owner.module.ts deleted file mode 100644 index 2bc37a0d0c1aafdb55632d4ad84abc0612f60bab..0000000000000000000000000000000000000000 --- a/svmon-backend/src/api/owner/owner.module.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { Module } from '@nestjs/common'; -import { OwnerService } from './owner.service'; -import { OwnerController } from './owner.controller'; - -@Module({ - controllers: [OwnerController], - providers: [OwnerService], -}) -export class OwnerModule {} diff --git a/svmon-backend/src/api/owner/owner.service.spec.ts b/svmon-backend/src/api/owner/owner.service.spec.ts deleted file mode 100644 index 692de8fa1beb12b2cb70ea3215209f6bde8534d3..0000000000000000000000000000000000000000 --- a/svmon-backend/src/api/owner/owner.service.spec.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { Test, TestingModule } from '@nestjs/testing'; -import { OwnerService } from './owner.service'; - -describe('OwnerService', () => { - let service: OwnerService; - - beforeEach(async () => { - const module: TestingModule = await Test.createTestingModule({ - providers: [OwnerService], - }).compile(); - - service = module.get(OwnerService); - }); - - it('should be defined', () => { - expect(service).toBeDefined(); - }); -}); diff --git a/svmon-backend/src/api/owner/owner.service.ts b/svmon-backend/src/api/owner/owner.service.ts deleted file mode 100644 index 31d4a6a410fa44461cd617b46559d80bb21cc75c..0000000000000000000000000000000000000000 --- a/svmon-backend/src/api/owner/owner.service.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { Injectable } from '@nestjs/common'; -import { CreateOwnerDto } from './dto/create-owner.dto'; -import { UpdateOwnerDto } from './dto/update-owner.dto'; - -@Injectable() -export class OwnerService { - create(createOwnerDto: CreateOwnerDto) { - return 'This action adds a new owner'; - } - - findAll() { - return `This action returns all owner`; - } - - findOne(id: number) { - return `This action returns a #${id} owner`; - } - - update(id: number, updateOwnerDto: UpdateOwnerDto) { - return `This action updates a #${id} owner`; - } - - remove(id: number) { - return `This action removes a #${id} owner`; - } -} diff --git a/svmon-backend/src/api/service-component/service-component.controller.ts b/svmon-backend/src/api/service-component/service-component.controller.ts index e886d454ff24677b1b478eae8819ab9f89116b97..e3810372e21ee8af046bef119f5a2440ccac0eca 100644 --- a/svmon-backend/src/api/service-component/service-component.controller.ts +++ b/svmon-backend/src/api/service-component/service-component.controller.ts @@ -1,20 +1,14 @@ -import { - Body, - Controller, - Delete, - Get, - Logger, - Param, - Post, -} from '@nestjs/common'; +import { Body, Controller, Delete, Logger, Param, Post } from '@nestjs/common'; import { ServiceComponentService } from './service-component.service'; import { + ApiBadRequestResponse, ApiBearerAuth, ApiCreatedResponse, ApiForbiddenResponse, ApiOperation, ApiTags, ApiUnauthorizedResponse, + ApiExcludeEndpoint, } from '@nestjs/swagger'; import { JSONReportDto } from './dto/json-report.dto'; import { Roles } from '../auth/roles/roles.decorator'; @@ -34,12 +28,17 @@ export class ServiceComponentController { @Post('') @ApiOperation({ summary: 'Receives service component metadata and creates or updates it', + description: + 'Receives the site, hostName and service type to identify a service of service components and its tag (version)/operating system and updates it', }) @ApiCreatedResponse({ description: 'Service component successfully updated', type: String, }) @ApiForbiddenResponse({ description: 'Forbidden.' }) + @ApiBadRequestResponse({ + description: 'The service does not exists', + }) @Roles(UserRole.ADMIN) createOrUpdateServiceComponent(@Body() serviceComponent: JSONReportDto) { this.logger.log('New service component received from admin '); @@ -63,26 +62,14 @@ export class ServiceComponentController { return this.serviceComponentService.saveJsonReport(jsonReportDto); } - @Get() - @ApiOperation({ - summary: 'Get a list of service components', - responses: {}, - security: [ - { - bearerAuth: [], - }, - ], - }) - @ApiUnauthorizedResponse({ description: 'Unauthorized.' }) - findAll() { - return this.serviceComponentService.findAll(); - } - @Delete(':id') @ApiOperation({ summary: 'Removes a service component by ID', + description: + 'Receives a service component ID and removes it from the DB, admin role is necessary', }) @ApiUnauthorizedResponse({ description: 'Unauthorized.' }) + @ApiExcludeEndpoint() @Roles(UserRole.ADMIN) remove(@Param('id') id: string): Promise { return this.serviceComponentService.remove(id); diff --git a/svmon-backend/src/api/service-component/service-component.service.ts b/svmon-backend/src/api/service-component/service-component.service.ts index 3ca523cb6fb591a5d33855c45d5e98c298e675bb..8e35f0e6da449bdea41955bd9ec090adb7d929db 100644 --- a/svmon-backend/src/api/service-component/service-component.service.ts +++ b/svmon-backend/src/api/service-component/service-component.service.ts @@ -19,10 +19,6 @@ export class ServiceComponentService { private readonly providerRepository: Repository, ) {} - findAll() { - return `This action returns all service components`; - } - async addOrUpdateServiceComponent( serviceComponent: JSONReportDto, ): Promise { diff --git a/svmon-backend/src/api/services/dto/service.dto.ts b/svmon-backend/src/api/services/dto/service.dto.ts new file mode 100644 index 0000000000000000000000000000000000000000..ee078cd3a5e8ceaedea685b94623567a23bdf090 --- /dev/null +++ b/svmon-backend/src/api/services/dto/service.dto.ts @@ -0,0 +1,39 @@ +import { IsNotEmpty } from 'class-validator'; +import { ApiProperty } from '@nestjs/swagger'; + +import { ComponentMetadata } from '../entities/component-metadata.entity'; +import { ServiceComponent } from '../../service-component/entities/service-component.entity'; + +export class ServiceDto { + @ApiProperty() @IsNotEmpty() id: string; + + @ApiProperty() @IsNotEmpty() primaryKey: string; + + @ApiProperty() @IsNotEmpty() hostName: string; + + @ApiProperty() @IsNotEmpty() dpmtUrl: string; + + @ApiProperty() @IsNotEmpty() gocdbPortalUrl: string; + + @ApiProperty() @IsNotEmpty() serviceType: string; + + @ApiProperty() @IsNotEmpty() hostIp: string; + + @ApiProperty() @IsNotEmpty() inProduction: boolean; + + @ApiProperty() @IsNotEmpty() nodeMonitored: boolean; + + @ApiProperty() @IsNotEmpty() contactEmail: string; + + @ApiProperty() @IsNotEmpty() serviceUrl: string; + + @ApiProperty() @IsNotEmpty() provider: unknown; + + @ApiProperty() @IsNotEmpty() componentMetadata: ComponentMetadata; + + @ApiProperty() @IsNotEmpty() serviceComponents: ServiceComponent[]; + + @ApiProperty() @IsNotEmpty() createdOn: Date; + + @ApiProperty() @IsNotEmpty() modifiedOn: Date; +} diff --git a/svmon-backend/src/api/services/services.controller.ts b/svmon-backend/src/api/services/services.controller.ts index 9ee4cd207a1c5d6d4ca678b504c530137486efdf..9d040666ff436382fde5c36c43782d3b7c1ac633 100644 --- a/svmon-backend/src/api/services/services.controller.ts +++ b/svmon-backend/src/api/services/services.controller.ts @@ -2,15 +2,17 @@ import { Body, Controller, Get, Logger, Param, Put } from '@nestjs/common'; import { ApiBearerAuth, ApiCreatedResponse, + ApiExcludeEndpoint, ApiForbiddenResponse, ApiOperation, ApiTags, } from '@nestjs/swagger'; import { ServicesService } from './services.service'; -import { SourceOfTruth } from '../provider/entities/source-of-truth-provider-metadata'; import { Roles } from '../auth/roles/roles.decorator'; import { UserRole } from '../auth/roles/user-role.enum'; import { ServiceReportDto } from './dto/service-report.dto'; +import { ServiceSummaryDto } from './dto/service-summary.dto'; +import { ServiceDto } from './dto/service.dto'; @Controller('services') @ApiTags('services') @@ -19,35 +21,49 @@ export class ServicesController { private readonly logger = new Logger(ServicesController.name); constructor(private readonly serviceService: ServicesService) {} - @Get('/:sourceOfTruth/all') + @Get('/dpmt/all') + @ApiOperation({ + summary: 'Returns the list of services of DPMT', + }) + @ApiCreatedResponse({ + description: 'Returns a list of services provided by DPMT', + isArray: true, + type: () => ServiceDto, + }) + @ApiForbiddenResponse({ description: 'Forbidden.' }) @Roles(UserRole.API, UserRole.ADMIN) - getAllServicesBySourceOfTruth( - @Param('sourceOfTruth') sourceOfTruth: SourceOfTruth, - ) { - this.logger.log( - 'Returning all services for source of truth: ', - sourceOfTruth, - ); - // @todo (agustin) implement gocdb. + getAllServicesFromDPMT() { + this.logger.log('Returning all services from DPMT'); return this.serviceService.getAllServicesFromDPMT(); } - @Get('summary/:sourceOfTruth') + @Get('summary/dpmt') + @ApiOperation({ + summary: 'Returns a simplified list of services of DPMT', + }) + @ApiCreatedResponse({ + description: 'Returns a list of services as summary provided by DPMT', + isArray: true, + type: () => ServiceSummaryDto, + }) + @ApiForbiddenResponse({ description: 'Forbidden.' }) @Roles(UserRole.API, UserRole.ADMIN, UserRole.USER) - getAllServicesBySourceOfTruthSummary( - @Param('sourceOfTruth') sourceOfTruth: SourceOfTruth, - ) { - this.logger.log( - 'Returning all services formatted for source of truth: ', - sourceOfTruth, - ); - // @todo (agustin) implement gocdb. - return this.serviceService.getAllServicesBySourceOfTruthSummary( - sourceOfTruth, - ); + getAllServicesSummaryFromDPMT() { + this.logger.log('Returning all services as summary from DPMT '); + + return this.serviceService.getAllServicesBySourceOfTruthSummary(); } @Get('/provider/:providerName') + @ApiOperation({ + summary: 'Returns a list of services by his names', + }) + @ApiCreatedResponse({ + description: 'Returns a list of services by his name. Example: KIT', + isArray: true, + type: () => ServiceSummaryDto, + }) + @ApiForbiddenResponse({ description: 'Forbidden.' }) @Roles(UserRole.API, UserRole.ADMIN) getAllServicesByProviderID(@Param('providerName') providerName: string) { this.logger.log('Returning all services for provider: ', providerName); @@ -64,6 +80,8 @@ export class ServicesController { }) @ApiForbiddenResponse({ description: 'Forbidden.' }) @Roles(UserRole.API, UserRole.USER, UserRole.ADMIN) + @ApiExcludeEndpoint() + // @todo (agustin) check is this is needed or should be removed updateServiceComponentMetadata( @Body() addOrUpdateServiceReport: ServiceReportDto, ) { diff --git a/svmon-backend/src/api/services/services.service.ts b/svmon-backend/src/api/services/services.service.ts index ef3972d6c23652ad8e087e28a9551d19d238c4a9..95460450a4eedf33cde9f29b91cae093e7cf67a5 100644 --- a/svmon-backend/src/api/services/services.service.ts +++ b/svmon-backend/src/api/services/services.service.ts @@ -195,8 +195,9 @@ export class ServicesService { ); } + // @todo (agustin) this works only with DPMT at the moment async getAllServicesBySourceOfTruthSummary( - sourceOfTruth: SourceOfTruth, + sourceOfTruth: SourceOfTruth = SourceOfTruth.DPMT, ): Promise { // @todo (agustin) try to add COUNT instead of serviceComponents.length const serviceList = await this.serviceRepository