From a1daf8e0ca07669a9b83bae96e751ce617cf6f4d Mon Sep 17 00:00:00 2001 From: Artur Sudnik-Hrynkiewicz Date: Mon, 25 Sep 2023 17:31:47 +0200 Subject: [PATCH] fix(input-descriptor-to-credential): fixing Swagger UI crashing the service --- .../docs/openapi.json | 54 ++++++++++++++++++- .../modules/converter/converter.controller.ts | 2 + .../modules/converter/dtos/credential.dto.ts | 7 +++ ...t-descriptor-to-credential-response.dto.ts | 3 +- 4 files changed, 63 insertions(+), 3 deletions(-) diff --git a/apps/input-descriptor-to-credential/docs/openapi.json b/apps/input-descriptor-to-credential/docs/openapi.json index 09588fe5..17d38383 100644 --- a/apps/input-descriptor-to-credential/docs/openapi.json +++ b/apps/input-descriptor-to-credential/docs/openapi.json @@ -16,8 +16,15 @@ } }, "responses": { - "201": { - "description": "" + "default": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/InputDescriptorToCredentialResponseDto" + } + } + } } } } @@ -50,6 +57,49 @@ } }, "required": ["constraints"] + }, + "CredentialType": { + "type": "string", + "enum": ["VerifiableCredential", "VerifiablePresentation", "StatusList2021Credential", "EWFRole"] + }, + "CredentialDto": { + "type": "object", + "properties": { + "@context": { + "type": "array", + "items": { + "type": "string" + } + }, + "credentialSubject": { + "type": "object" + }, + "id": { + "type": "string" + }, + "issuanceDate": { + "type": "string" + }, + "type": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CredentialType" + } + }, + "issuer": { + "type": "string" + } + }, + "required": ["@context", "credentialSubject", "id", "issuanceDate", "type", "issuer"] + }, + "InputDescriptorToCredentialResponseDto": { + "type": "object", + "properties": { + "credential": { + "$ref": "#/components/schemas/CredentialDto" + } + }, + "required": ["credential"] } } } diff --git a/apps/input-descriptor-to-credential/src/modules/converter/converter.controller.ts b/apps/input-descriptor-to-credential/src/modules/converter/converter.controller.ts index 2662d283..68b2742b 100644 --- a/apps/input-descriptor-to-credential/src/modules/converter/converter.controller.ts +++ b/apps/input-descriptor-to-credential/src/modules/converter/converter.controller.ts @@ -19,12 +19,14 @@ import { Body, Controller, Post } from '@nestjs/common'; import { ConverterService } from './converter.service'; import { InputDesciptorToCredentialDto, InputDescriptorToCredentialResponseDto } from './dtos'; import { CredentialDto } from './dtos/credential.dto'; +import { ApiResponse } from '@nestjs/swagger'; @Controller('converter') export class ConverterController { constructor(private readonly converterService: ConverterService) {} @Post('input-descriptor-to-credential') + @ApiResponse({ type: InputDescriptorToCredentialResponseDto }) async inputDescriptorToCredential( @Body() inputDesciptorToCredentialDto: InputDesciptorToCredentialDto ): Promise { diff --git a/apps/input-descriptor-to-credential/src/modules/converter/dtos/credential.dto.ts b/apps/input-descriptor-to-credential/src/modules/converter/dtos/credential.dto.ts index 50c35c08..82972dcb 100644 --- a/apps/input-descriptor-to-credential/src/modules/converter/dtos/credential.dto.ts +++ b/apps/input-descriptor-to-credential/src/modules/converter/dtos/credential.dto.ts @@ -16,13 +16,20 @@ */ import { Credential, CredentialType } from '@ew-did-registry/credentials-interface'; +import { ApiProperty } from '@nestjs/swagger'; export class CredentialDto implements Credential> { + @ApiProperty() '@context': Array>; + @ApiProperty() credentialSubject: Record; + @ApiProperty() id: string; + @ApiProperty() issuanceDate: string; + @ApiProperty({ enum: CredentialType, enumName: 'CredentialType', isArray: true }) type: CredentialType[]; + @ApiProperty() issuer: string; [x: string]: unknown; diff --git a/apps/input-descriptor-to-credential/src/modules/converter/dtos/input-descriptor-to-credential-response.dto.ts b/apps/input-descriptor-to-credential/src/modules/converter/dtos/input-descriptor-to-credential-response.dto.ts index cd773150..5fe5239e 100644 --- a/apps/input-descriptor-to-credential/src/modules/converter/dtos/input-descriptor-to-credential-response.dto.ts +++ b/apps/input-descriptor-to-credential/src/modules/converter/dtos/input-descriptor-to-credential-response.dto.ts @@ -18,10 +18,11 @@ import { CredentialDto } from './credential.dto'; import { Type } from 'class-transformer'; import { ValidateNested } from 'class-validator'; +import { ApiProperty } from '@nestjs/swagger'; export class InputDescriptorToCredentialResponseDto { @Type(() => CredentialDto) - @ValidateNested() + @ApiProperty({ type: CredentialDto }) credential: CredentialDto; constructor(props: Partial) {