From 866b531e70b4c851ba8e2cfa5540708e7753bf81 Mon Sep 17 00:00:00 2001 From: Milena-Czierlinski Date: Thu, 12 Mar 2026 12:17:24 +0100 Subject: [PATCH 1/3] feat: expose expiresAt and ephemeral when creating a presentation token --- packages/runtime/src/useCases/common/Schemas.ts | 10 +++++++++- .../consumption/openid4vc/CreatePresentationToken.ts | 6 ++++-- packages/runtime/test/consumption/openid4vc.test.ts | 7 ++++++- 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/packages/runtime/src/useCases/common/Schemas.ts b/packages/runtime/src/useCases/common/Schemas.ts index d7b435748..ab2878a94 100644 --- a/packages/runtime/src/useCases/common/Schemas.ts +++ b/packages/runtime/src/useCases/common/Schemas.ts @@ -17337,10 +17337,18 @@ export const CreatePresentationTokenRequest: any = { "properties": { "attributeId": { "type": "string" + }, + "expiresAt": { + "type": "string" + }, + "ephemeral": { + "type": "boolean" } }, "required": [ - "attributeId" + "attributeId", + "expiresAt", + "ephemeral" ], "additionalProperties": false } diff --git a/packages/runtime/src/useCases/consumption/openid4vc/CreatePresentationToken.ts b/packages/runtime/src/useCases/consumption/openid4vc/CreatePresentationToken.ts index a8dcb584a..07b2b75fd 100644 --- a/packages/runtime/src/useCases/consumption/openid4vc/CreatePresentationToken.ts +++ b/packages/runtime/src/useCases/consumption/openid4vc/CreatePresentationToken.ts @@ -10,6 +10,8 @@ import { TokenMapper } from "../../transport/tokens/TokenMapper"; export interface CreatePresentationTokenRequest { attributeId: string; + expiresAt: string; + 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; From f887c24d925cd413af0c6c8ad05e510a4c128494 Mon Sep 17 00:00:00 2001 From: Milena-Czierlinski Date: Thu, 12 Mar 2026 13:02:58 +0100 Subject: [PATCH 2/3] refactor: specify type of input string --- .../useCases/consumption/openid4vc/CreatePresentationToken.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/runtime/src/useCases/consumption/openid4vc/CreatePresentationToken.ts b/packages/runtime/src/useCases/consumption/openid4vc/CreatePresentationToken.ts index 07b2b75fd..e86c66844 100644 --- a/packages/runtime/src/useCases/consumption/openid4vc/CreatePresentationToken.ts +++ b/packages/runtime/src/useCases/consumption/openid4vc/CreatePresentationToken.ts @@ -5,12 +5,12 @@ 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: string; + expiresAt: ISO8601DateTimeString; ephemeral: boolean; } From cd65255344eae46770a0b0f8ffcf7c610a0c62a0 Mon Sep 17 00:00:00 2001 From: Milena-Czierlinski Date: Thu, 12 Mar 2026 13:04:41 +0100 Subject: [PATCH 3/3] chore: rebuild schemas --- packages/runtime/src/useCases/common/Schemas.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/runtime/src/useCases/common/Schemas.ts b/packages/runtime/src/useCases/common/Schemas.ts index ab2878a94..f94fbfe34 100644 --- a/packages/runtime/src/useCases/common/Schemas.ts +++ b/packages/runtime/src/useCases/common/Schemas.ts @@ -17339,7 +17339,7 @@ export const CreatePresentationTokenRequest: any = { "type": "string" }, "expiresAt": { - "type": "string" + "$ref": "#/definitions/ISO8601DateTimeString" }, "ephemeral": { "type": "boolean" @@ -17351,6 +17351,11 @@ export const CreatePresentationTokenRequest: any = { "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)?)?)?)?$" } } }