diff --git a/packages/runtime/src/useCases/common/Schemas.ts b/packages/runtime/src/useCases/common/Schemas.ts index d7b435748..f94fbfe34 100644 --- a/packages/runtime/src/useCases/common/Schemas.ts +++ b/packages/runtime/src/useCases/common/Schemas.ts @@ -17337,12 +17337,25 @@ export const CreatePresentationTokenRequest: any = { "properties": { "attributeId": { "type": "string" + }, + "expiresAt": { + "$ref": "#/definitions/ISO8601DateTimeString" + }, + "ephemeral": { + "type": "boolean" } }, "required": [ - "attributeId" + "attributeId", + "expiresAt", + "ephemeral" ], "additionalProperties": false + }, + "ISO8601DateTimeString": { + "type": "string", + "errorMessage": "must match ISO8601 datetime format", + "pattern": "^([+-]?\\d{4}(?!\\d{2}\\b))((-?)((0[1-9]|1[0-2])(\\3([12]\\d|0[1-9]|3[01]))?|W([0-4]\\d|5[0-2])(-?[1-7])?|(00[1-9]|0[1-9]\\d|[12]\\d{2}|3([0-5]\\d|6[1-6])))([T\\s]((([01]\\d|2[0-3])((:?)[0-5]\\d)?|24:?00)([.,]\\d+(?!:))?)?(\\17[0-5]\\d([.,]\\d+)?)?([zZ]|([+-])([01]\\d|2[0-3]):?([0-5]\\d)?)?)?)?$" } } } diff --git a/packages/runtime/src/useCases/consumption/openid4vc/CreatePresentationToken.ts b/packages/runtime/src/useCases/consumption/openid4vc/CreatePresentationToken.ts index a8dcb584a..e86c66844 100644 --- a/packages/runtime/src/useCases/consumption/openid4vc/CreatePresentationToken.ts +++ b/packages/runtime/src/useCases/consumption/openid4vc/CreatePresentationToken.ts @@ -5,11 +5,13 @@ import { CoreDate, CoreId } from "@nmshd/core-types"; import { TokenDTO } from "@nmshd/runtime-types"; import { TokenController } from "@nmshd/transport"; import { Inject } from "@nmshd/typescript-ioc"; -import { RuntimeErrors, SchemaRepository, SchemaValidator, UseCase } from "../../common"; +import { ISO8601DateTimeString, RuntimeErrors, SchemaRepository, SchemaValidator, UseCase } from "../../common"; import { TokenMapper } from "../../transport/tokens/TokenMapper"; export interface CreatePresentationTokenRequest { attributeId: string; + expiresAt: ISO8601DateTimeString; + ephemeral: boolean; } class Validator extends SchemaValidator { @@ -36,8 +38,8 @@ export class CreatePresentationTokenUseCase extends UseCase { ).value; expect((storedCredential.content.value as VerifiableCredentialJSON).displayInformation?.[0].name).toBe("test"); - const presentationTokenResult = await runtimeServices1.consumption.openId4Vc.createPresentationToken({ attributeId: storedCredential.id }); + const presentationTokenResult = await runtimeServices1.consumption.openId4Vc.createPresentationToken({ + attributeId: storedCredential.id, + expiresAt: CoreDate.utc().add({ minutes: 1 }).toString(), + ephemeral: true + }); expect(presentationTokenResult).toBeSuccessful(); const presentationTokenContent = presentationTokenResult.value.content;