@twin.org/rights-management-service 0.0.3-next.2 → 0.0.3-next.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,7 +1,6 @@
1
- import { ContextIdKeys } from "@twin.org/context";
2
1
  import { ComponentFactory, Guards } from "@twin.org/core";
3
2
  import { RightsManagementContexts, RightsManagementTypes } from "@twin.org/rights-management-models";
4
- import { HeaderTypes, HttpStatusCode, MimeTypes } from "@twin.org/web";
3
+ import { HeaderHelper, HeaderTypes, HttpStatusCode, MimeTypes } from "@twin.org/web";
5
4
  /**
6
5
  * The source used when communicating about these routes.
7
6
  */
@@ -72,11 +71,7 @@ export function generateRestRoutesDataAccessPoint(baseRouteName, componentName)
72
71
  ]
73
72
  }
74
73
  ],
75
- skipAuth: true,
76
- processorFeatures: ["verifiableCredential"],
77
- processorData: {
78
- verifiableCredential: { contextId: ContextIdKeys.Organization }
79
- }
74
+ skipAuth: true
80
75
  };
81
76
  const dapGetRoute = {
82
77
  operationId: "dapGet",
@@ -120,11 +115,7 @@ export function generateRestRoutesDataAccessPoint(baseRouteName, componentName)
120
115
  ]
121
116
  }
122
117
  ],
123
- skipAuth: true,
124
- processorFeatures: ["verifiableCredential"],
125
- processorData: {
126
- verifiableCredential: { contextId: ContextIdKeys.Organization }
127
- }
118
+ skipAuth: true
128
119
  };
129
120
  const dapUpdateRoute = {
130
121
  operationId: "dapUpdate",
@@ -166,11 +157,7 @@ export function generateRestRoutesDataAccessPoint(baseRouteName, componentName)
166
157
  type: "INoContentResponse"
167
158
  }
168
159
  ],
169
- skipAuth: true,
170
- processorFeatures: ["verifiableCredential"],
171
- processorData: {
172
- verifiableCredential: { contextId: ContextIdKeys.Organization }
173
- }
160
+ skipAuth: true
174
161
  };
175
162
  const dapRemoveRoute = {
176
163
  operationId: "dapRemove",
@@ -202,11 +189,7 @@ export function generateRestRoutesDataAccessPoint(baseRouteName, componentName)
202
189
  type: "INoContentResponse"
203
190
  }
204
191
  ],
205
- skipAuth: true,
206
- processorFeatures: ["verifiableCredential"],
207
- processorData: {
208
- verifiableCredential: { contextId: ContextIdKeys.Organization }
209
- }
192
+ skipAuth: true
210
193
  };
211
194
  const dapQueryRoute = {
212
195
  operationId: "dapQuery",
@@ -260,11 +243,7 @@ export function generateRestRoutesDataAccessPoint(baseRouteName, componentName)
260
243
  ]
261
244
  }
262
245
  ],
263
- skipAuth: true,
264
- processorFeatures: ["verifiableCredential"],
265
- processorData: {
266
- verifiableCredential: { contextId: ContextIdKeys.Organization }
267
- }
246
+ skipAuth: true
268
247
  };
269
248
  return [dapCreateRoute, dapGetRoute, dapUpdateRoute, dapRemoveRoute, dapQueryRoute];
270
249
  }
@@ -281,8 +260,7 @@ export async function dapCreate(httpRequestContext, componentName, request) {
281
260
  Guards.object(ROUTES_SOURCE, "request.pathParams", request.pathParams);
282
261
  Guards.object(ROUTES_SOURCE, "request.body", request.body);
283
262
  const component = ComponentFactory.get(componentName);
284
- const result = await component.create(request.pathParams.assetType, request.body.object, httpRequestContext.processorState
285
- .verifiableCredentialSubject);
263
+ const result = await component.create(request.pathParams.assetType, request.body.object, HeaderHelper.extractBearer(httpRequestContext.serverRequest.headers?.[HeaderTypes.Authorization]));
286
264
  return {
287
265
  statusCode: HttpStatusCode.created,
288
266
  headers: {
@@ -303,8 +281,7 @@ export async function dapGet(httpRequestContext, componentName, request) {
303
281
  Guards.object(ROUTES_SOURCE, "request.pathParams", request.pathParams);
304
282
  const mimeType = request.headers[HeaderTypes.Accept] === MimeTypes.JsonLd ? "jsonld" : "json";
305
283
  const component = ComponentFactory.get(componentName);
306
- const result = await component.get(request.pathParams.assetType, request.pathParams.id, httpRequestContext.processorState
307
- .verifiableCredentialSubject);
284
+ const result = await component.get(request.pathParams.assetType, request.pathParams.id, HeaderHelper.extractBearer(httpRequestContext.serverRequest.headers?.[HeaderTypes.Authorization]));
308
285
  return {
309
286
  headers: {
310
287
  [HeaderTypes.ContentType]: mimeType === "json" ? MimeTypes.Json : MimeTypes.JsonLd
@@ -325,8 +302,7 @@ export async function dapUpdate(httpRequestContext, componentName, request) {
325
302
  Guards.object(ROUTES_SOURCE, "request.pathParams", request.pathParams);
326
303
  Guards.object(ROUTES_SOURCE, "request.body", request.body);
327
304
  const component = ComponentFactory.get(componentName);
328
- await component.update(request.pathParams.assetType, request.body.object, httpRequestContext.processorState
329
- .verifiableCredentialSubject);
305
+ await component.update(request.pathParams.assetType, request.body.object, HeaderHelper.extractBearer(httpRequestContext.serverRequest.headers?.[HeaderTypes.Authorization]));
330
306
  return {
331
307
  statusCode: HttpStatusCode.noContent
332
308
  };
@@ -343,8 +319,7 @@ export async function dapRemove(httpRequestContext, componentName, request) {
343
319
  Guards.object(ROUTES_SOURCE, "request.headers", request.headers);
344
320
  Guards.object(ROUTES_SOURCE, "request.pathParams", request.pathParams);
345
321
  const component = ComponentFactory.get(componentName);
346
- await component.remove(request.pathParams.assetType, request.pathParams.id, httpRequestContext.processorState
347
- .verifiableCredentialSubject);
322
+ await component.remove(request.pathParams.assetType, request.pathParams.id, HeaderHelper.extractBearer(httpRequestContext.serverRequest.headers?.[HeaderTypes.Authorization]));
348
323
  return {
349
324
  statusCode: HttpStatusCode.noContent
350
325
  };
@@ -363,8 +338,7 @@ export async function dapQuery(httpRequestContext, componentName, request) {
363
338
  Guards.object(ROUTES_SOURCE, "request.body", request.body);
364
339
  const mimeType = request.headers[HeaderTypes.Accept] === MimeTypes.JsonLd ? "jsonld" : "json";
365
340
  const component = ComponentFactory.get(componentName);
366
- const result = await component.query(request.pathParams.assetType, request.body.conditions, request.body.cursor, request.body.options, httpRequestContext.processorState
367
- .verifiableCredentialSubject);
341
+ const result = await component.query(request.pathParams.assetType, request.body.conditions, request.body.cursor, request.body.options, HeaderHelper.extractBearer(httpRequestContext.serverRequest.headers?.[HeaderTypes.Authorization]));
368
342
  return {
369
343
  headers: {
370
344
  [HeaderTypes.ContentType]: mimeType === "json" ? MimeTypes.Json : MimeTypes.JsonLd
@@ -1 +1 @@
1
- {"version":3,"file":"dataAccessPointRoutes.js","sourceRoot":"","sources":["../../src/dataAccessPointRoutes.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright 2025 IOTA Stiftung.\n// SPDX-License-Identifier: Apache-2.0.\nimport type {\n\tICreatedResponse,\n\tIHttpRequestContext,\n\tINoContentResponse,\n\tIRestRoute,\n\tITag\n} from \"@twin.org/api-models\";\nimport { ContextIdKeys } from \"@twin.org/context\";\nimport { ComponentFactory, Guards } from \"@twin.org/core\";\nimport type { IIdentityAuthenticationActionRequest } from \"@twin.org/identity-authentication\";\nimport { nameof } from \"@twin.org/nameof\";\nimport {\n\tRightsManagementContexts,\n\tRightsManagementTypes,\n\ttype IDapCreateRequest,\n\ttype IDapGetRequest,\n\ttype IDapGetResponse,\n\ttype IDapQueryRequest,\n\ttype IDapQueryResponse,\n\ttype IDapRemoveRequest,\n\ttype IDapUpdateRequest,\n\ttype IDataAccessPointComponent\n} from \"@twin.org/rights-management-models\";\nimport { HeaderTypes, HttpStatusCode, MimeTypes } from \"@twin.org/web\";\n\n/**\n * The source used when communicating about these routes.\n */\nconst ROUTES_SOURCE = \"dataAccessPointRoutes\";\n\n/**\n * The tag to associate with the routes.\n */\nexport const dapTags: ITag[] = [\n\t{\n\t\tname: \"Data Access Point\",\n\t\tdescription: \"Endpoints for providing access to the Rights Management Data Access Point\"\n\t}\n];\n\n/**\n * The REST routes for the Data Access Point.\n * @param baseRouteName Prefix to prepend to the paths.\n * @param componentName The name of the component to use in the routes stored in the ComponentFactory.\n * @returns The generated routes.\n */\nexport function generateRestRoutesDataAccessPoint(\n\tbaseRouteName: string,\n\tcomponentName: string\n): IRestRoute[] {\n\tconst dapCreateRoute: IRestRoute<IDapCreateRequest, ICreatedResponse> = {\n\t\toperationId: \"dapCreate\",\n\t\tsummary: \"Create a new item\",\n\t\ttag: dapTags[0].name,\n\t\tmethod: \"POST\",\n\t\tpath: `${baseRouteName}/data/:assetType`,\n\t\thandler: async (httpRequestContext, request) =>\n\t\t\tdapCreate(httpRequestContext, componentName, request),\n\t\trequestType: {\n\t\t\ttype: nameof<IDapCreateRequest>(),\n\t\t\texamples: [\n\t\t\t\t{\n\t\t\t\t\tid: \"dapCreateRequestExample\",\n\t\t\t\t\trequest: {\n\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\t[HeaderTypes.Accept]: MimeTypes.JsonLd,\n\t\t\t\t\t\t\t[HeaderTypes.Authorization]: \"z3Vcuh2BP9ShC.z3Vcuh2BP9ShC.z3Vcuh2BP9ShC\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\tpathParams: {\n\t\t\t\t\t\t\tassetType: \"contacts\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\t\"@context\": RightsManagementContexts.ContextRoot,\n\t\t\t\t\t\t\ttype: RightsManagementTypes.DataAccessRequestWithObject,\n\t\t\t\t\t\t\tassetType: \"contacts\",\n\t\t\t\t\t\t\tobject: {\n\t\t\t\t\t\t\t\t\"@context\": \"https://schema.org\",\n\t\t\t\t\t\t\t\ttype: \"Person\",\n\t\t\t\t\t\t\t\tname: \"Jane Doe\"\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\tresponseType: [\n\t\t\t{\n\t\t\t\ttype: nameof<ICreatedResponse>(),\n\t\t\t\texamples: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"IDapCreateResponseExample\",\n\t\t\t\t\t\tresponse: {\n\t\t\t\t\t\t\tstatusCode: 201,\n\t\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\t\tlocation: \"urn:contacts:abc123def456\"\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t}\n\t\t],\n\t\tskipAuth: true,\n\t\tprocessorFeatures: [\"verifiableCredential\"],\n\t\tprocessorData: {\n\t\t\tverifiableCredential: { contextId: ContextIdKeys.Organization }\n\t\t}\n\t};\n\n\tconst dapGetRoute: IRestRoute<IDapGetRequest, IDapGetResponse> = {\n\t\toperationId: \"dapGet\",\n\t\tsummary: \"Get an existing item\",\n\t\ttag: dapTags[0].name,\n\t\tmethod: \"GET\",\n\t\tpath: `${baseRouteName}/data/:assetType/:id`,\n\t\thandler: async (httpRequestContext, request) =>\n\t\t\tdapGet(httpRequestContext, componentName, request),\n\t\trequestType: {\n\t\t\ttype: nameof<IDapGetRequest>(),\n\t\t\texamples: [\n\t\t\t\t{\n\t\t\t\t\tid: \"dapCreateRequestExample\",\n\t\t\t\t\trequest: {\n\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\t[HeaderTypes.Accept]: MimeTypes.JsonLd,\n\t\t\t\t\t\t\t[HeaderTypes.Authorization]: \"z3Vcuh2BP9ShC.z3Vcuh2BP9ShC.z3Vcuh2BP9ShC\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\tpathParams: {\n\t\t\t\t\t\t\tassetType: \"contacts\",\n\t\t\t\t\t\t\tid: \"urn:contacts:abc123def456\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\tresponseType: [\n\t\t\t{\n\t\t\t\ttype: nameof<IDapGetResponse>(),\n\t\t\t\texamples: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"IDapGetResponseExample\",\n\t\t\t\t\t\tresponse: {\n\t\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\t\t\"@context\": \"https://schema.org\",\n\t\t\t\t\t\t\t\ttype: \"Person\",\n\t\t\t\t\t\t\t\tname: \"Jane Doe\"\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t}\n\t\t],\n\t\tskipAuth: true,\n\t\tprocessorFeatures: [\"verifiableCredential\"],\n\t\tprocessorData: {\n\t\t\tverifiableCredential: { contextId: ContextIdKeys.Organization }\n\t\t}\n\t};\n\n\tconst dapUpdateRoute: IRestRoute<IDapUpdateRequest, INoContentResponse> = {\n\t\toperationId: \"dapUpdate\",\n\t\tsummary: \"Update an existing item\",\n\t\ttag: dapTags[0].name,\n\t\tmethod: \"PUT\",\n\t\tpath: `${baseRouteName}/data/:assetType/:id`,\n\t\thandler: async (httpRequestContext, request) =>\n\t\t\tdapUpdate(httpRequestContext, componentName, request),\n\t\trequestType: {\n\t\t\ttype: nameof<IDapUpdateRequest>(),\n\t\t\texamples: [\n\t\t\t\t{\n\t\t\t\t\tid: \"dapUpdateRequestExample\",\n\t\t\t\t\trequest: {\n\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\t[HeaderTypes.Accept]: MimeTypes.JsonLd,\n\t\t\t\t\t\t\t[HeaderTypes.Authorization]: \"z3Vcuh2BP9ShC.z3Vcuh2BP9ShC.z3Vcuh2BP9ShC\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\tpathParams: {\n\t\t\t\t\t\t\tassetType: \"contacts\",\n\t\t\t\t\t\t\tid: \"urn:contacts:abc123def456\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\t\"@context\": RightsManagementContexts.ContextRoot,\n\t\t\t\t\t\t\ttype: RightsManagementTypes.DataAccessRequestWithObject,\n\t\t\t\t\t\t\tassetType: \"contacts\",\n\t\t\t\t\t\t\tobject: {\n\t\t\t\t\t\t\t\t\"@context\": \"https://schema.org\",\n\t\t\t\t\t\t\t\ttype: \"Person\",\n\t\t\t\t\t\t\t\tname: \"Jane Doe\"\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\tresponseType: [\n\t\t\t{\n\t\t\t\ttype: nameof<INoContentResponse>()\n\t\t\t}\n\t\t],\n\t\tskipAuth: true,\n\t\tprocessorFeatures: [\"verifiableCredential\"],\n\t\tprocessorData: {\n\t\t\tverifiableCredential: { contextId: ContextIdKeys.Organization }\n\t\t}\n\t};\n\n\tconst dapRemoveRoute: IRestRoute<IDapRemoveRequest, INoContentResponse> = {\n\t\toperationId: \"dapRemove\",\n\t\tsummary: \"Remove an existing item\",\n\t\ttag: dapTags[0].name,\n\t\tmethod: \"DELETE\",\n\t\tpath: `${baseRouteName}/data/:assetType/:id`,\n\t\thandler: async (httpRequestContext, request) =>\n\t\t\tdapRemove(httpRequestContext, componentName, request),\n\t\trequestType: {\n\t\t\ttype: nameof<IDapRemoveRequest>(),\n\t\t\texamples: [\n\t\t\t\t{\n\t\t\t\t\tid: \"dapRemoveRequestExample\",\n\t\t\t\t\trequest: {\n\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\t[HeaderTypes.Accept]: MimeTypes.JsonLd,\n\t\t\t\t\t\t\t[HeaderTypes.Authorization]: \"z3Vcuh2BP9ShC.z3Vcuh2BP9ShC.z3Vcuh2BP9ShC\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\tpathParams: {\n\t\t\t\t\t\t\tassetType: \"contacts\",\n\t\t\t\t\t\t\tid: \"urn:contacts:abc123def456\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\tresponseType: [\n\t\t\t{\n\t\t\t\ttype: nameof<INoContentResponse>()\n\t\t\t}\n\t\t],\n\t\tskipAuth: true,\n\t\tprocessorFeatures: [\"verifiableCredential\"],\n\t\tprocessorData: {\n\t\t\tverifiableCredential: { contextId: ContextIdKeys.Organization }\n\t\t}\n\t};\n\n\tconst dapQueryRoute: IRestRoute<IDapQueryRequest, IDapQueryResponse> = {\n\t\toperationId: \"dapQuery\",\n\t\tsummary: \"Query items\",\n\t\ttag: dapTags[0].name,\n\t\tmethod: \"POST\",\n\t\tpath: `${baseRouteName}/data/:assetType/query`,\n\t\thandler: async (httpRequestContext, request) =>\n\t\t\tdapQuery(httpRequestContext, componentName, request),\n\t\trequestType: {\n\t\t\ttype: nameof<IDapQueryRequest>(),\n\t\t\texamples: [\n\t\t\t\t{\n\t\t\t\t\tid: \"dapQueryRequestExample\",\n\t\t\t\t\trequest: {\n\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\t[HeaderTypes.Accept]: MimeTypes.JsonLd,\n\t\t\t\t\t\t\t[HeaderTypes.Authorization]: \"z3Vcuh2BP9ShC.z3Vcuh2BP9ShC.z3Vcuh2BP9ShC\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\tpathParams: {\n\t\t\t\t\t\t\tassetType: \"contacts\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\t\"@context\": RightsManagementContexts.ContextRoot,\n\t\t\t\t\t\t\ttype: RightsManagementTypes.DataAccessQuery,\n\t\t\t\t\t\t\tassetType: \"contacts\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\tresponseType: [\n\t\t\t{\n\t\t\t\ttype: nameof<IDapQueryResponse>(),\n\t\t\t\texamples: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"IDapQueryResponseExample\",\n\t\t\t\t\t\tresponse: {\n\t\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\t\t\"@context\": RightsManagementContexts.ContextRoot,\n\t\t\t\t\t\t\t\ttype: RightsManagementTypes.DataAccessQueryResponse,\n\t\t\t\t\t\t\t\titems: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\"@context\": \"https://schema.org\",\n\t\t\t\t\t\t\t\t\t\ttype: \"Person\",\n\t\t\t\t\t\t\t\t\t\tname: \"Jane Doe\"\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t}\n\t\t],\n\t\tskipAuth: true,\n\t\tprocessorFeatures: [\"verifiableCredential\"],\n\t\tprocessorData: {\n\t\t\tverifiableCredential: { contextId: ContextIdKeys.Organization }\n\t\t}\n\t};\n\n\treturn [dapCreateRoute, dapGetRoute, dapUpdateRoute, dapRemoveRoute, dapQueryRoute];\n}\n\n/**\n * DAP: Create.\n * @param httpRequestContext The request context for the API.\n * @param componentName The name of the component to use in the routes.\n * @param request The request.\n * @returns The response object with additional http response properties.\n */\nexport async function dapCreate(\n\thttpRequestContext: IHttpRequestContext,\n\tcomponentName: string,\n\trequest: IDapCreateRequest\n): Promise<ICreatedResponse> {\n\tGuards.object<IDapCreateRequest>(ROUTES_SOURCE, nameof(request), request);\n\tGuards.object<IDapCreateRequest[\"headers\"]>(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.headers),\n\t\trequest.headers\n\t);\n\tGuards.object<IDapCreateRequest[\"pathParams\"]>(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.pathParams),\n\t\trequest.pathParams\n\t);\n\tGuards.object<IDapCreateRequest[\"body\"]>(ROUTES_SOURCE, nameof(request.body), request.body);\n\n\tconst component = ComponentFactory.get<IDataAccessPointComponent>(componentName);\n\tconst result = await component.create(\n\t\trequest.pathParams.assetType,\n\t\trequest.body.object,\n\t\thttpRequestContext.processorState\n\t\t\t.verifiableCredentialSubject as IIdentityAuthenticationActionRequest\n\t);\n\n\treturn {\n\t\tstatusCode: HttpStatusCode.created,\n\t\theaders: {\n\t\t\t[HeaderTypes.Location]: result\n\t\t}\n\t};\n}\n\n/**\n * DAP: Get.\n * @param httpRequestContext The request context for the API.\n * @param componentName The name of the component to use in the routes.\n * @param request The request.\n * @returns The response object with additional http response properties.\n */\nexport async function dapGet(\n\thttpRequestContext: IHttpRequestContext,\n\tcomponentName: string,\n\trequest: IDapGetRequest\n): Promise<IDapGetResponse> {\n\tGuards.object<IDapGetRequest>(ROUTES_SOURCE, nameof(request), request);\n\tGuards.object<IDapGetRequest[\"headers\"]>(ROUTES_SOURCE, nameof(request.headers), request.headers);\n\tGuards.object<IDapGetRequest[\"pathParams\"]>(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.pathParams),\n\t\trequest.pathParams\n\t);\n\n\tconst mimeType = request.headers[HeaderTypes.Accept] === MimeTypes.JsonLd ? \"jsonld\" : \"json\";\n\n\tconst component = ComponentFactory.get<IDataAccessPointComponent>(componentName);\n\tconst result = await component.get(\n\t\trequest.pathParams.assetType,\n\t\trequest.pathParams.id,\n\t\thttpRequestContext.processorState\n\t\t\t.verifiableCredentialSubject as IIdentityAuthenticationActionRequest\n\t);\n\n\treturn {\n\t\theaders: {\n\t\t\t[HeaderTypes.ContentType]: mimeType === \"json\" ? MimeTypes.Json : MimeTypes.JsonLd\n\t\t},\n\t\tbody: result\n\t};\n}\n\n/**\n * DAP: Update.\n * @param httpRequestContext The request context for the API.\n * @param componentName The name of the component to use in the routes.\n * @param request The request.\n * @returns The response object with additional http response properties.\n */\nexport async function dapUpdate(\n\thttpRequestContext: IHttpRequestContext,\n\tcomponentName: string,\n\trequest: IDapUpdateRequest\n): Promise<INoContentResponse> {\n\tGuards.object<IDapUpdateRequest>(ROUTES_SOURCE, nameof(request), request);\n\tGuards.object<IDapGetRequest[\"headers\"]>(ROUTES_SOURCE, nameof(request.headers), request.headers);\n\tGuards.object<IDapUpdateRequest[\"pathParams\"]>(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.pathParams),\n\t\trequest.pathParams\n\t);\n\tGuards.object<IDapUpdateRequest[\"body\"]>(ROUTES_SOURCE, nameof(request.body), request.body);\n\n\tconst component = ComponentFactory.get<IDataAccessPointComponent>(componentName);\n\tawait component.update(\n\t\trequest.pathParams.assetType,\n\t\trequest.body.object,\n\t\thttpRequestContext.processorState\n\t\t\t.verifiableCredentialSubject as IIdentityAuthenticationActionRequest\n\t);\n\n\treturn {\n\t\tstatusCode: HttpStatusCode.noContent\n\t};\n}\n\n/**\n * DAP: Remove.\n * @param httpRequestContext The request context for the API.\n * @param componentName The name of the component to use in the routes.\n * @param request The request.\n * @returns The response object with additional http response properties.\n */\nexport async function dapRemove(\n\thttpRequestContext: IHttpRequestContext,\n\tcomponentName: string,\n\trequest: IDapRemoveRequest\n): Promise<INoContentResponse> {\n\tGuards.object<IDapRemoveRequest>(ROUTES_SOURCE, nameof(request), request);\n\tGuards.object<IDapRemoveRequest[\"headers\"]>(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.headers),\n\t\trequest.headers\n\t);\n\tGuards.object<IDapRemoveRequest[\"pathParams\"]>(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.pathParams),\n\t\trequest.pathParams\n\t);\n\n\tconst component = ComponentFactory.get<IDataAccessPointComponent>(componentName);\n\tawait component.remove(\n\t\trequest.pathParams.assetType,\n\t\trequest.pathParams.id,\n\t\thttpRequestContext.processorState\n\t\t\t.verifiableCredentialSubject as IIdentityAuthenticationActionRequest\n\t);\n\n\treturn {\n\t\tstatusCode: HttpStatusCode.noContent\n\t};\n}\n\n/**\n * DAP: Query.\n * @param httpRequestContext The request context for the API.\n * @param componentName The name of the component to use in the routes.\n * @param request The request.\n * @returns The response object with additional http response properties.\n */\nexport async function dapQuery(\n\thttpRequestContext: IHttpRequestContext,\n\tcomponentName: string,\n\trequest: IDapQueryRequest\n): Promise<IDapQueryResponse> {\n\tGuards.object<IDapQueryRequest>(ROUTES_SOURCE, nameof(request), request);\n\tGuards.object<IDapQueryRequest[\"headers\"]>(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.headers),\n\t\trequest.headers\n\t);\n\tGuards.object<IDapQueryRequest[\"pathParams\"]>(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.pathParams),\n\t\trequest.pathParams\n\t);\n\tGuards.object<IDapQueryRequest[\"body\"]>(ROUTES_SOURCE, nameof(request.body), request.body);\n\n\tconst mimeType = request.headers[HeaderTypes.Accept] === MimeTypes.JsonLd ? \"jsonld\" : \"json\";\n\n\tconst component = ComponentFactory.get<IDataAccessPointComponent>(componentName);\n\tconst result = await component.query(\n\t\trequest.pathParams.assetType,\n\t\trequest.body.conditions,\n\t\trequest.body.cursor,\n\t\trequest.body.options,\n\t\thttpRequestContext.processorState\n\t\t\t.verifiableCredentialSubject as IIdentityAuthenticationActionRequest\n\t);\n\n\treturn {\n\t\theaders: {\n\t\t\t[HeaderTypes.ContentType]: mimeType === \"json\" ? MimeTypes.Json : MimeTypes.JsonLd\n\t\t},\n\t\tbody: {\n\t\t\t\"@context\": RightsManagementContexts.ContextRoot,\n\t\t\ttype: RightsManagementTypes.DataAccessQueryResponse,\n\t\t\t...result\n\t\t}\n\t};\n}\n"]}
1
+ {"version":3,"file":"dataAccessPointRoutes.js","sourceRoot":"","sources":["../../src/dataAccessPointRoutes.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright 2025 IOTA Stiftung.\n// SPDX-License-Identifier: Apache-2.0.\nimport type {\n\tICreatedResponse,\n\tIHttpRequestContext,\n\tINoContentResponse,\n\tIRestRoute,\n\tITag\n} from \"@twin.org/api-models\";\nimport { ComponentFactory, Guards } from \"@twin.org/core\";\nimport { nameof } from \"@twin.org/nameof\";\nimport {\n\tRightsManagementContexts,\n\tRightsManagementTypes,\n\ttype IDapCreateRequest,\n\ttype IDapGetRequest,\n\ttype IDapGetResponse,\n\ttype IDapQueryRequest,\n\ttype IDapQueryResponse,\n\ttype IDapRemoveRequest,\n\ttype IDapUpdateRequest,\n\ttype IDataAccessPointComponent\n} from \"@twin.org/rights-management-models\";\nimport { HeaderHelper, HeaderTypes, HttpStatusCode, MimeTypes } from \"@twin.org/web\";\n\n/**\n * The source used when communicating about these routes.\n */\nconst ROUTES_SOURCE = \"dataAccessPointRoutes\";\n\n/**\n * The tag to associate with the routes.\n */\nexport const dapTags: ITag[] = [\n\t{\n\t\tname: \"Data Access Point\",\n\t\tdescription: \"Endpoints for providing access to the Rights Management Data Access Point\"\n\t}\n];\n\n/**\n * The REST routes for the Data Access Point.\n * @param baseRouteName Prefix to prepend to the paths.\n * @param componentName The name of the component to use in the routes stored in the ComponentFactory.\n * @returns The generated routes.\n */\nexport function generateRestRoutesDataAccessPoint(\n\tbaseRouteName: string,\n\tcomponentName: string\n): IRestRoute[] {\n\tconst dapCreateRoute: IRestRoute<IDapCreateRequest, ICreatedResponse> = {\n\t\toperationId: \"dapCreate\",\n\t\tsummary: \"Create a new item\",\n\t\ttag: dapTags[0].name,\n\t\tmethod: \"POST\",\n\t\tpath: `${baseRouteName}/data/:assetType`,\n\t\thandler: async (httpRequestContext, request) =>\n\t\t\tdapCreate(httpRequestContext, componentName, request),\n\t\trequestType: {\n\t\t\ttype: nameof<IDapCreateRequest>(),\n\t\t\texamples: [\n\t\t\t\t{\n\t\t\t\t\tid: \"dapCreateRequestExample\",\n\t\t\t\t\trequest: {\n\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\t[HeaderTypes.Accept]: MimeTypes.JsonLd,\n\t\t\t\t\t\t\t[HeaderTypes.Authorization]: \"z3Vcuh2BP9ShC.z3Vcuh2BP9ShC.z3Vcuh2BP9ShC\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\tpathParams: {\n\t\t\t\t\t\t\tassetType: \"contacts\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\t\"@context\": RightsManagementContexts.ContextRoot,\n\t\t\t\t\t\t\ttype: RightsManagementTypes.DataAccessRequestWithObject,\n\t\t\t\t\t\t\tassetType: \"contacts\",\n\t\t\t\t\t\t\tobject: {\n\t\t\t\t\t\t\t\t\"@context\": \"https://schema.org\",\n\t\t\t\t\t\t\t\ttype: \"Person\",\n\t\t\t\t\t\t\t\tname: \"Jane Doe\"\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\tresponseType: [\n\t\t\t{\n\t\t\t\ttype: nameof<ICreatedResponse>(),\n\t\t\t\texamples: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"IDapCreateResponseExample\",\n\t\t\t\t\t\tresponse: {\n\t\t\t\t\t\t\tstatusCode: 201,\n\t\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\t\tlocation: \"urn:contacts:abc123def456\"\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t}\n\t\t],\n\t\tskipAuth: true\n\t};\n\n\tconst dapGetRoute: IRestRoute<IDapGetRequest, IDapGetResponse> = {\n\t\toperationId: \"dapGet\",\n\t\tsummary: \"Get an existing item\",\n\t\ttag: dapTags[0].name,\n\t\tmethod: \"GET\",\n\t\tpath: `${baseRouteName}/data/:assetType/:id`,\n\t\thandler: async (httpRequestContext, request) =>\n\t\t\tdapGet(httpRequestContext, componentName, request),\n\t\trequestType: {\n\t\t\ttype: nameof<IDapGetRequest>(),\n\t\t\texamples: [\n\t\t\t\t{\n\t\t\t\t\tid: \"dapCreateRequestExample\",\n\t\t\t\t\trequest: {\n\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\t[HeaderTypes.Accept]: MimeTypes.JsonLd,\n\t\t\t\t\t\t\t[HeaderTypes.Authorization]: \"z3Vcuh2BP9ShC.z3Vcuh2BP9ShC.z3Vcuh2BP9ShC\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\tpathParams: {\n\t\t\t\t\t\t\tassetType: \"contacts\",\n\t\t\t\t\t\t\tid: \"urn:contacts:abc123def456\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\tresponseType: [\n\t\t\t{\n\t\t\t\ttype: nameof<IDapGetResponse>(),\n\t\t\t\texamples: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"IDapGetResponseExample\",\n\t\t\t\t\t\tresponse: {\n\t\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\t\t\"@context\": \"https://schema.org\",\n\t\t\t\t\t\t\t\ttype: \"Person\",\n\t\t\t\t\t\t\t\tname: \"Jane Doe\"\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t}\n\t\t],\n\t\tskipAuth: true\n\t};\n\n\tconst dapUpdateRoute: IRestRoute<IDapUpdateRequest, INoContentResponse> = {\n\t\toperationId: \"dapUpdate\",\n\t\tsummary: \"Update an existing item\",\n\t\ttag: dapTags[0].name,\n\t\tmethod: \"PUT\",\n\t\tpath: `${baseRouteName}/data/:assetType/:id`,\n\t\thandler: async (httpRequestContext, request) =>\n\t\t\tdapUpdate(httpRequestContext, componentName, request),\n\t\trequestType: {\n\t\t\ttype: nameof<IDapUpdateRequest>(),\n\t\t\texamples: [\n\t\t\t\t{\n\t\t\t\t\tid: \"dapUpdateRequestExample\",\n\t\t\t\t\trequest: {\n\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\t[HeaderTypes.Accept]: MimeTypes.JsonLd,\n\t\t\t\t\t\t\t[HeaderTypes.Authorization]: \"z3Vcuh2BP9ShC.z3Vcuh2BP9ShC.z3Vcuh2BP9ShC\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\tpathParams: {\n\t\t\t\t\t\t\tassetType: \"contacts\",\n\t\t\t\t\t\t\tid: \"urn:contacts:abc123def456\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\t\"@context\": RightsManagementContexts.ContextRoot,\n\t\t\t\t\t\t\ttype: RightsManagementTypes.DataAccessRequestWithObject,\n\t\t\t\t\t\t\tassetType: \"contacts\",\n\t\t\t\t\t\t\tobject: {\n\t\t\t\t\t\t\t\t\"@context\": \"https://schema.org\",\n\t\t\t\t\t\t\t\ttype: \"Person\",\n\t\t\t\t\t\t\t\tname: \"Jane Doe\"\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\tresponseType: [\n\t\t\t{\n\t\t\t\ttype: nameof<INoContentResponse>()\n\t\t\t}\n\t\t],\n\t\tskipAuth: true\n\t};\n\n\tconst dapRemoveRoute: IRestRoute<IDapRemoveRequest, INoContentResponse> = {\n\t\toperationId: \"dapRemove\",\n\t\tsummary: \"Remove an existing item\",\n\t\ttag: dapTags[0].name,\n\t\tmethod: \"DELETE\",\n\t\tpath: `${baseRouteName}/data/:assetType/:id`,\n\t\thandler: async (httpRequestContext, request) =>\n\t\t\tdapRemove(httpRequestContext, componentName, request),\n\t\trequestType: {\n\t\t\ttype: nameof<IDapRemoveRequest>(),\n\t\t\texamples: [\n\t\t\t\t{\n\t\t\t\t\tid: \"dapRemoveRequestExample\",\n\t\t\t\t\trequest: {\n\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\t[HeaderTypes.Accept]: MimeTypes.JsonLd,\n\t\t\t\t\t\t\t[HeaderTypes.Authorization]: \"z3Vcuh2BP9ShC.z3Vcuh2BP9ShC.z3Vcuh2BP9ShC\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\tpathParams: {\n\t\t\t\t\t\t\tassetType: \"contacts\",\n\t\t\t\t\t\t\tid: \"urn:contacts:abc123def456\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\tresponseType: [\n\t\t\t{\n\t\t\t\ttype: nameof<INoContentResponse>()\n\t\t\t}\n\t\t],\n\t\tskipAuth: true\n\t};\n\n\tconst dapQueryRoute: IRestRoute<IDapQueryRequest, IDapQueryResponse> = {\n\t\toperationId: \"dapQuery\",\n\t\tsummary: \"Query items\",\n\t\ttag: dapTags[0].name,\n\t\tmethod: \"POST\",\n\t\tpath: `${baseRouteName}/data/:assetType/query`,\n\t\thandler: async (httpRequestContext, request) =>\n\t\t\tdapQuery(httpRequestContext, componentName, request),\n\t\trequestType: {\n\t\t\ttype: nameof<IDapQueryRequest>(),\n\t\t\texamples: [\n\t\t\t\t{\n\t\t\t\t\tid: \"dapQueryRequestExample\",\n\t\t\t\t\trequest: {\n\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\t[HeaderTypes.Accept]: MimeTypes.JsonLd,\n\t\t\t\t\t\t\t[HeaderTypes.Authorization]: \"z3Vcuh2BP9ShC.z3Vcuh2BP9ShC.z3Vcuh2BP9ShC\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\tpathParams: {\n\t\t\t\t\t\t\tassetType: \"contacts\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\t\"@context\": RightsManagementContexts.ContextRoot,\n\t\t\t\t\t\t\ttype: RightsManagementTypes.DataAccessQuery,\n\t\t\t\t\t\t\tassetType: \"contacts\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\tresponseType: [\n\t\t\t{\n\t\t\t\ttype: nameof<IDapQueryResponse>(),\n\t\t\t\texamples: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"IDapQueryResponseExample\",\n\t\t\t\t\t\tresponse: {\n\t\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\t\t\"@context\": RightsManagementContexts.ContextRoot,\n\t\t\t\t\t\t\t\ttype: RightsManagementTypes.DataAccessQueryResponse,\n\t\t\t\t\t\t\t\titems: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\"@context\": \"https://schema.org\",\n\t\t\t\t\t\t\t\t\t\ttype: \"Person\",\n\t\t\t\t\t\t\t\t\t\tname: \"Jane Doe\"\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t}\n\t\t],\n\t\tskipAuth: true\n\t};\n\n\treturn [dapCreateRoute, dapGetRoute, dapUpdateRoute, dapRemoveRoute, dapQueryRoute];\n}\n\n/**\n * DAP: Create.\n * @param httpRequestContext The request context for the API.\n * @param componentName The name of the component to use in the routes.\n * @param request The request.\n * @returns The response object with additional http response properties.\n */\nexport async function dapCreate(\n\thttpRequestContext: IHttpRequestContext,\n\tcomponentName: string,\n\trequest: IDapCreateRequest\n): Promise<ICreatedResponse> {\n\tGuards.object<IDapCreateRequest>(ROUTES_SOURCE, nameof(request), request);\n\tGuards.object<IDapCreateRequest[\"headers\"]>(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.headers),\n\t\trequest.headers\n\t);\n\tGuards.object<IDapCreateRequest[\"pathParams\"]>(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.pathParams),\n\t\trequest.pathParams\n\t);\n\tGuards.object<IDapCreateRequest[\"body\"]>(ROUTES_SOURCE, nameof(request.body), request.body);\n\n\tconst component = ComponentFactory.get<IDataAccessPointComponent>(componentName);\n\tconst result = await component.create(\n\t\trequest.pathParams.assetType,\n\t\trequest.body.object,\n\t\tHeaderHelper.extractBearer(\n\t\t\thttpRequestContext.serverRequest.headers?.[HeaderTypes.Authorization]\n\t\t)\n\t);\n\n\treturn {\n\t\tstatusCode: HttpStatusCode.created,\n\t\theaders: {\n\t\t\t[HeaderTypes.Location]: result\n\t\t}\n\t};\n}\n\n/**\n * DAP: Get.\n * @param httpRequestContext The request context for the API.\n * @param componentName The name of the component to use in the routes.\n * @param request The request.\n * @returns The response object with additional http response properties.\n */\nexport async function dapGet(\n\thttpRequestContext: IHttpRequestContext,\n\tcomponentName: string,\n\trequest: IDapGetRequest\n): Promise<IDapGetResponse> {\n\tGuards.object<IDapGetRequest>(ROUTES_SOURCE, nameof(request), request);\n\tGuards.object<IDapGetRequest[\"headers\"]>(ROUTES_SOURCE, nameof(request.headers), request.headers);\n\tGuards.object<IDapGetRequest[\"pathParams\"]>(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.pathParams),\n\t\trequest.pathParams\n\t);\n\n\tconst mimeType = request.headers[HeaderTypes.Accept] === MimeTypes.JsonLd ? \"jsonld\" : \"json\";\n\n\tconst component = ComponentFactory.get<IDataAccessPointComponent>(componentName);\n\tconst result = await component.get(\n\t\trequest.pathParams.assetType,\n\t\trequest.pathParams.id,\n\t\tHeaderHelper.extractBearer(\n\t\t\thttpRequestContext.serverRequest.headers?.[HeaderTypes.Authorization]\n\t\t)\n\t);\n\n\treturn {\n\t\theaders: {\n\t\t\t[HeaderTypes.ContentType]: mimeType === \"json\" ? MimeTypes.Json : MimeTypes.JsonLd\n\t\t},\n\t\tbody: result\n\t};\n}\n\n/**\n * DAP: Update.\n * @param httpRequestContext The request context for the API.\n * @param componentName The name of the component to use in the routes.\n * @param request The request.\n * @returns The response object with additional http response properties.\n */\nexport async function dapUpdate(\n\thttpRequestContext: IHttpRequestContext,\n\tcomponentName: string,\n\trequest: IDapUpdateRequest\n): Promise<INoContentResponse> {\n\tGuards.object<IDapUpdateRequest>(ROUTES_SOURCE, nameof(request), request);\n\tGuards.object<IDapGetRequest[\"headers\"]>(ROUTES_SOURCE, nameof(request.headers), request.headers);\n\tGuards.object<IDapUpdateRequest[\"pathParams\"]>(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.pathParams),\n\t\trequest.pathParams\n\t);\n\tGuards.object<IDapUpdateRequest[\"body\"]>(ROUTES_SOURCE, nameof(request.body), request.body);\n\n\tconst component = ComponentFactory.get<IDataAccessPointComponent>(componentName);\n\tawait component.update(\n\t\trequest.pathParams.assetType,\n\t\trequest.body.object,\n\t\tHeaderHelper.extractBearer(\n\t\t\thttpRequestContext.serverRequest.headers?.[HeaderTypes.Authorization]\n\t\t)\n\t);\n\n\treturn {\n\t\tstatusCode: HttpStatusCode.noContent\n\t};\n}\n\n/**\n * DAP: Remove.\n * @param httpRequestContext The request context for the API.\n * @param componentName The name of the component to use in the routes.\n * @param request The request.\n * @returns The response object with additional http response properties.\n */\nexport async function dapRemove(\n\thttpRequestContext: IHttpRequestContext,\n\tcomponentName: string,\n\trequest: IDapRemoveRequest\n): Promise<INoContentResponse> {\n\tGuards.object<IDapRemoveRequest>(ROUTES_SOURCE, nameof(request), request);\n\tGuards.object<IDapRemoveRequest[\"headers\"]>(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.headers),\n\t\trequest.headers\n\t);\n\tGuards.object<IDapRemoveRequest[\"pathParams\"]>(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.pathParams),\n\t\trequest.pathParams\n\t);\n\n\tconst component = ComponentFactory.get<IDataAccessPointComponent>(componentName);\n\tawait component.remove(\n\t\trequest.pathParams.assetType,\n\t\trequest.pathParams.id,\n\t\tHeaderHelper.extractBearer(\n\t\t\thttpRequestContext.serverRequest.headers?.[HeaderTypes.Authorization]\n\t\t)\n\t);\n\n\treturn {\n\t\tstatusCode: HttpStatusCode.noContent\n\t};\n}\n\n/**\n * DAP: Query.\n * @param httpRequestContext The request context for the API.\n * @param componentName The name of the component to use in the routes.\n * @param request The request.\n * @returns The response object with additional http response properties.\n */\nexport async function dapQuery(\n\thttpRequestContext: IHttpRequestContext,\n\tcomponentName: string,\n\trequest: IDapQueryRequest\n): Promise<IDapQueryResponse> {\n\tGuards.object<IDapQueryRequest>(ROUTES_SOURCE, nameof(request), request);\n\tGuards.object<IDapQueryRequest[\"headers\"]>(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.headers),\n\t\trequest.headers\n\t);\n\tGuards.object<IDapQueryRequest[\"pathParams\"]>(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.pathParams),\n\t\trequest.pathParams\n\t);\n\tGuards.object<IDapQueryRequest[\"body\"]>(ROUTES_SOURCE, nameof(request.body), request.body);\n\n\tconst mimeType = request.headers[HeaderTypes.Accept] === MimeTypes.JsonLd ? \"jsonld\" : \"json\";\n\n\tconst component = ComponentFactory.get<IDataAccessPointComponent>(componentName);\n\tconst result = await component.query(\n\t\trequest.pathParams.assetType,\n\t\trequest.body.conditions,\n\t\trequest.body.cursor,\n\t\trequest.body.options,\n\t\tHeaderHelper.extractBearer(\n\t\t\thttpRequestContext.serverRequest.headers?.[HeaderTypes.Authorization]\n\t\t)\n\t);\n\n\treturn {\n\t\theaders: {\n\t\t\t[HeaderTypes.ContentType]: mimeType === \"json\" ? MimeTypes.Json : MimeTypes.JsonLd\n\t\t},\n\t\tbody: {\n\t\t\t\"@context\": RightsManagementContexts.ContextRoot,\n\t\t\ttype: RightsManagementTypes.DataAccessQueryResponse,\n\t\t\t...result\n\t\t}\n\t};\n}\n"]}
@@ -1,8 +1,7 @@
1
- import { ContextIdKeys } from "@twin.org/context";
2
1
  import { ComponentFactory, Guards, Is } from "@twin.org/core";
3
2
  import { ContractNegotiationEventType, ContractNegotiationStateType, ContractNegotiationTypes, DataspaceProtocolContexts } from "@twin.org/standards-dataspace-protocol";
4
3
  import { OdrlContexts, OdrlTypes } from "@twin.org/standards-w3c-odrl";
5
- import { HeaderTypes, HttpStatusCode, MimeTypes } from "@twin.org/web";
4
+ import { HeaderHelper, HeaderTypes, HttpStatusCode, MimeTypes } from "@twin.org/web";
6
5
  /**
7
6
  * The source used when communicating about these routes.
8
7
  */
@@ -56,7 +55,7 @@ export function generateRestRoutesPolicyNegotiationPoint(baseRouteName, componen
56
55
  id: "pnpGetNegotiationResponseExample",
57
56
  response: {
58
57
  body: {
59
- "@context": DataspaceProtocolContexts.ContextRoot,
58
+ "@context": [DataspaceProtocolContexts.ContextRoot],
60
59
  "@type": ContractNegotiationTypes.ContractNegotiation,
61
60
  providerPid: "urn:contract-negotiation:002aa11bb.......ffff",
62
61
  consumerPid: "urn:contract-negotiation:22aa11bb.......ffff",
@@ -67,11 +66,7 @@ export function generateRestRoutesPolicyNegotiationPoint(baseRouteName, componen
67
66
  ]
68
67
  }
69
68
  ],
70
- skipAuth: true,
71
- processorFeatures: ["verifiableCredential"],
72
- processorData: {
73
- verifiableCredential: { contextId: ContextIdKeys.Organization }
74
- }
69
+ skipAuth: true
75
70
  };
76
71
  // https://eclipse-dataspace-protocol-base.github.io/DataspaceProtocol/2025-1/#negotiations-providerpid-request-post
77
72
  const pnpNegotiationRequestRoute = {
@@ -92,7 +87,7 @@ export function generateRestRoutesPolicyNegotiationPoint(baseRouteName, componen
92
87
  [HeaderTypes.Authorization]: "z3Vcuh2BP9ShC.z3Vcuh2BP9ShC.z3Vcuh2BP9ShC"
93
88
  },
94
89
  body: {
95
- "@context": DataspaceProtocolContexts.ContextRoot,
90
+ "@context": [DataspaceProtocolContexts.ContextRoot],
96
91
  "@type": ContractNegotiationTypes.ContractRequestMessage,
97
92
  consumerPid: "urn:contract-negotiation:22aa11bb.......ffff",
98
93
  offer: {
@@ -114,7 +109,7 @@ export function generateRestRoutesPolicyNegotiationPoint(baseRouteName, componen
114
109
  id: "IPnpNegotiationRequestResponseExample",
115
110
  response: {
116
111
  body: {
117
- "@context": DataspaceProtocolContexts.ContextRoot,
112
+ "@context": [DataspaceProtocolContexts.ContextRoot],
118
113
  "@type": ContractNegotiationTypes.ContractNegotiation,
119
114
  providerPid: "urn:contract-negotiation:00aa11bb.......ffff",
120
115
  consumerPid: "urn:contract-negotiation:22aa11bb.......ffff",
@@ -125,11 +120,7 @@ export function generateRestRoutesPolicyNegotiationPoint(baseRouteName, componen
125
120
  ]
126
121
  }
127
122
  ],
128
- skipAuth: true,
129
- processorFeatures: ["verifiableCredential"],
130
- processorData: {
131
- verifiableCredential: { contextId: ContextIdKeys.Organization }
132
- }
123
+ skipAuth: true
133
124
  };
134
125
  // https://eclipse-dataspace-protocol-base.github.io/DataspaceProtocol/2025-1/#negotiations-providerpid-request-post
135
126
  const pnpNegotiationProviderRequestRoute = {
@@ -153,7 +144,7 @@ export function generateRestRoutesPolicyNegotiationPoint(baseRouteName, componen
153
144
  id: "urn:contract-negotiation:00aa11bb.......ffff"
154
145
  },
155
146
  body: {
156
- "@context": DataspaceProtocolContexts.ContextRoot,
147
+ "@context": [DataspaceProtocolContexts.ContextRoot],
157
148
  "@type": ContractNegotiationTypes.ContractRequestMessage,
158
149
  consumerPid: "urn:contract-negotiation:22aa11bb.......ffff",
159
150
  offer: {
@@ -180,11 +171,7 @@ export function generateRestRoutesPolicyNegotiationPoint(baseRouteName, componen
180
171
  ]
181
172
  }
182
173
  ],
183
- skipAuth: true,
184
- processorFeatures: ["verifiableCredential"],
185
- processorData: {
186
- verifiableCredential: { contextId: ContextIdKeys.Organization }
187
- }
174
+ skipAuth: true
188
175
  };
189
176
  // https://eclipse-dataspace-protocol-base.github.io/DataspaceProtocol/2025-1/#negotiations-providerpid-events-post
190
177
  const pnpNegotiationEventsRoute = {
@@ -208,7 +195,7 @@ export function generateRestRoutesPolicyNegotiationPoint(baseRouteName, componen
208
195
  id: "urn:contract-negotiation:00aa11bb.......ffff"
209
196
  },
210
197
  body: {
211
- "@context": DataspaceProtocolContexts.ContextRoot,
198
+ "@context": [DataspaceProtocolContexts.ContextRoot],
212
199
  "@type": ContractNegotiationTypes.ContractRequestMessage,
213
200
  providerPid: "urn:contract-negotiation:00aa11bb.......ffff",
214
201
  consumerPid: "urn:contract-negotiation:22aa11bb.......ffff",
@@ -231,11 +218,7 @@ export function generateRestRoutesPolicyNegotiationPoint(baseRouteName, componen
231
218
  ]
232
219
  }
233
220
  ],
234
- skipAuth: true,
235
- processorFeatures: ["verifiableCredential"],
236
- processorData: {
237
- verifiableCredential: { contextId: ContextIdKeys.Organization }
238
- }
221
+ skipAuth: true
239
222
  };
240
223
  // https://eclipse-dataspace-protocol-base.github.io/DataspaceProtocol/2025-1/#negotiations-providerpid-agreement-verification-post
241
224
  const pnpNegotiationAgreementVerificationRoute = {
@@ -259,7 +242,7 @@ export function generateRestRoutesPolicyNegotiationPoint(baseRouteName, componen
259
242
  id: "urn:contract-negotiation:00aa11bb.......ffff"
260
243
  },
261
244
  body: {
262
- "@context": DataspaceProtocolContexts.ContextRoot,
245
+ "@context": [DataspaceProtocolContexts.ContextRoot],
263
246
  "@type": ContractNegotiationTypes.ContractRequestMessage,
264
247
  providerPid: "urn:contract-negotiation:00aa11bb.......ffff",
265
248
  consumerPid: "urn:contract-negotiation:22aa11bb.......ffff"
@@ -281,11 +264,7 @@ export function generateRestRoutesPolicyNegotiationPoint(baseRouteName, componen
281
264
  ]
282
265
  }
283
266
  ],
284
- skipAuth: true,
285
- processorFeatures: ["verifiableCredential"],
286
- processorData: {
287
- verifiableCredential: { contextId: ContextIdKeys.Organization }
288
- }
267
+ skipAuth: true
289
268
  };
290
269
  // https://eclipse-dataspace-protocol-base.github.io/DataspaceProtocol/2025-1/#negotiations-providerpid-termination-post
291
270
  const pnpNegotiationTerminationRoute = {
@@ -309,7 +288,7 @@ export function generateRestRoutesPolicyNegotiationPoint(baseRouteName, componen
309
288
  id: "urn:contract-negotiation:00aa11bb.......ffff"
310
289
  },
311
290
  body: {
312
- "@context": DataspaceProtocolContexts.ContextRoot,
291
+ "@context": [DataspaceProtocolContexts.ContextRoot],
313
292
  "@type": ContractNegotiationTypes.ContractRequestMessage,
314
293
  providerPid: "urn:contract-negotiation:00aa11bb.......ffff",
315
294
  consumerPid: "urn:contract-negotiation:22aa11bb.......ffff"
@@ -331,11 +310,7 @@ export function generateRestRoutesPolicyNegotiationPoint(baseRouteName, componen
331
310
  ]
332
311
  }
333
312
  ],
334
- skipAuth: true,
335
- processorFeatures: ["verifiableCredential"],
336
- processorData: {
337
- verifiableCredential: { contextId: ContextIdKeys.Organization }
338
- }
313
+ skipAuth: true
339
314
  };
340
315
  // https://eclipse-dataspace-protocol-base.github.io/DataspaceProtocol/2025-1/#negotiations-offers-post
341
316
  const pnpNegotiationOfferRoute = {
@@ -356,7 +331,7 @@ export function generateRestRoutesPolicyNegotiationPoint(baseRouteName, componen
356
331
  [HeaderTypes.Authorization]: "z3Vcuh2BP9ShC.z3Vcuh2BP9ShC.z3Vcuh2BP9ShC"
357
332
  },
358
333
  body: {
359
- "@context": DataspaceProtocolContexts.ContextRoot,
334
+ "@context": [DataspaceProtocolContexts.ContextRoot],
360
335
  "@type": ContractNegotiationTypes.ContractRequestMessage,
361
336
  providerPid: "urn:contract-negotiation:00aa11bb.......ffff",
362
337
  consumerPid: "urn:contract-negotiation:22aa11bb.......ffff",
@@ -379,7 +354,7 @@ export function generateRestRoutesPolicyNegotiationPoint(baseRouteName, componen
379
354
  id: "pnpNegotiationOfferResponseExample",
380
355
  response: {
381
356
  body: {
382
- "@context": DataspaceProtocolContexts.ContextRoot,
357
+ "@context": [DataspaceProtocolContexts.ContextRoot],
383
358
  "@type": ContractNegotiationTypes.ContractRequestMessage,
384
359
  providerPid: "urn:contract-negotiation:00aa11bb.......ffff",
385
360
  consumerPid: "urn:contract-negotiation:22aa11bb.......ffff"
@@ -389,11 +364,7 @@ export function generateRestRoutesPolicyNegotiationPoint(baseRouteName, componen
389
364
  ]
390
365
  }
391
366
  ],
392
- skipAuth: true,
393
- processorFeatures: ["verifiableCredential"],
394
- processorData: {
395
- verifiableCredential: { contextId: ContextIdKeys.Organization }
396
- }
367
+ skipAuth: true
397
368
  };
398
369
  // https://eclipse-dataspace-protocol-base.github.io/DataspaceProtocol/2025-1/#negotiations-consumerpid-offers-post
399
370
  const pnpNegotiationConsumerOfferRoute = {
@@ -417,7 +388,7 @@ export function generateRestRoutesPolicyNegotiationPoint(baseRouteName, componen
417
388
  id: "urn:contract-negotiation:22aa11bb.......ffff"
418
389
  },
419
390
  body: {
420
- "@context": DataspaceProtocolContexts.ContextRoot,
391
+ "@context": [DataspaceProtocolContexts.ContextRoot],
421
392
  "@type": ContractNegotiationTypes.ContractRequestMessage,
422
393
  providerPid: "urn:contract-negotiation:00aa11bb.......ffff",
423
394
  consumerPid: "urn:contract-negotiation:22aa11bb.......ffff",
@@ -440,7 +411,7 @@ export function generateRestRoutesPolicyNegotiationPoint(baseRouteName, componen
440
411
  id: "pnpNegotiationConsumerOfferResponseExample",
441
412
  response: {
442
413
  body: {
443
- "@context": DataspaceProtocolContexts.ContextRoot,
414
+ "@context": [DataspaceProtocolContexts.ContextRoot],
444
415
  "@type": ContractNegotiationTypes.ContractNegotiation,
445
416
  providerPid: "urn:contract-negotiation:00aa11bb.......ffff",
446
417
  consumerPid: "urn:contract-negotiation:22aa11bb.......ffff"
@@ -450,11 +421,7 @@ export function generateRestRoutesPolicyNegotiationPoint(baseRouteName, componen
450
421
  ]
451
422
  }
452
423
  ],
453
- skipAuth: true,
454
- processorFeatures: ["verifiableCredential"],
455
- processorData: {
456
- verifiableCredential: { contextId: ContextIdKeys.Organization }
457
- }
424
+ skipAuth: true
458
425
  };
459
426
  // https://eclipse-dataspace-protocol-base.github.io/DataspaceProtocol/2025-1/#negotiations-consumerpid-agreement-post
460
427
  const pnpNegotiationAgreementRoute = {
@@ -478,7 +445,7 @@ export function generateRestRoutesPolicyNegotiationPoint(baseRouteName, componen
478
445
  id: "urn:contract-negotiation:22aa11bb.......ffff"
479
446
  },
480
447
  body: {
481
- "@context": DataspaceProtocolContexts.ContextRoot,
448
+ "@context": [DataspaceProtocolContexts.ContextRoot],
482
449
  "@type": ContractNegotiationTypes.ContractRequestMessage,
483
450
  providerPid: "urn:contract-negotiation:00aa11bb.......ffff",
484
451
  consumerPid: "urn:contract-negotiation:22aa11bb.......ffff",
@@ -507,11 +474,7 @@ export function generateRestRoutesPolicyNegotiationPoint(baseRouteName, componen
507
474
  ]
508
475
  }
509
476
  ],
510
- skipAuth: true,
511
- processorFeatures: ["verifiableCredential"],
512
- processorData: {
513
- verifiableCredential: { contextId: ContextIdKeys.Organization }
514
- }
477
+ skipAuth: true
515
478
  };
516
479
  // The consumer event and terminate routes are exactly the same as the pnpNegotiationEventsRoute and pnpNegotiationTerminationRoute
517
480
  // https://eclipse-dataspace-protocol-base.github.io/DataspaceProtocol/2025-1/#negotiations-consumerpid-events-post
@@ -556,8 +519,7 @@ export async function pnpGetNegotiation(httpRequestContext, componentName, reque
556
519
  Guards.object(ROUTES_SOURCE, "request.pathParams", request.pathParams);
557
520
  const mimeType = request.headers[HeaderTypes.Accept] === MimeTypes.JsonLd ? "jsonld" : "json";
558
521
  const component = ComponentFactory.get(componentName);
559
- const result = await component.getNegotiation(request.pathParams.id, httpRequestContext.processorState
560
- .verifiableCredentialSubject);
522
+ const result = await component.getNegotiation(request.pathParams.id, HeaderHelper.extractBearer(httpRequestContext.serverRequest.headers?.[HeaderTypes.Authorization]));
561
523
  return {
562
524
  statusCode: mapError(result),
563
525
  headers: {
@@ -579,8 +541,7 @@ export async function pnpNegotiationRequest(httpRequestContext, componentName, r
579
541
  Guards.object(ROUTES_SOURCE, "request.body", request.body);
580
542
  const mimeType = request.headers[HeaderTypes.Accept] === MimeTypes.JsonLd ? "jsonld" : "json";
581
543
  const component = ComponentFactory.get(componentName);
582
- const result = await component.requestFromConsumer(request.body, httpRequestContext.processorState
583
- .verifiableCredentialSubject);
544
+ const result = await component.requestFromConsumer(request.body, HeaderHelper.extractBearer(httpRequestContext.serverRequest.headers?.[HeaderTypes.Authorization]));
584
545
  const isUpdate = Is.stringValue(request.pathParams?.id);
585
546
  if (isUpdate) {
586
547
  return {
@@ -612,8 +573,7 @@ export async function pnpNegotiationProviderEvents(httpRequestContext, component
612
573
  Guards.object(ROUTES_SOURCE, "request.body", request.body);
613
574
  const mimeType = request.headers[HeaderTypes.Accept] === MimeTypes.JsonLd ? "jsonld" : "json";
614
575
  const component = ComponentFactory.get(componentName);
615
- const result = await component.event(request.body, request.pathParams.id === request.body.providerPid ? "provider" : "consumer", httpRequestContext.processorState
616
- .verifiableCredentialSubject);
576
+ const result = await component.event(request.body, request.pathParams.id === request.body.providerPid ? "provider" : "consumer", HeaderHelper.extractBearer(httpRequestContext.serverRequest.headers?.[HeaderTypes.Authorization]));
617
577
  return {
618
578
  statusCode: mapError(result),
619
579
  headers: {
@@ -636,8 +596,7 @@ export async function pnpNegotiationAgreementVerification(httpRequestContext, co
636
596
  Guards.object(ROUTES_SOURCE, "request.body", request.body);
637
597
  const mimeType = request.headers[HeaderTypes.Accept] === MimeTypes.JsonLd ? "jsonld" : "json";
638
598
  const component = ComponentFactory.get(componentName);
639
- const result = await component.agreementVerificationFromConsumer(request.body, httpRequestContext.processorState
640
- .verifiableCredentialSubject);
599
+ const result = await component.agreementVerificationFromConsumer(request.body, HeaderHelper.extractBearer(httpRequestContext.serverRequest.headers?.[HeaderTypes.Authorization]));
641
600
  return {
642
601
  statusCode: mapError(result),
643
602
  headers: {
@@ -660,8 +619,7 @@ export async function pnpNegotiationTermination(httpRequestContext, componentNam
660
619
  Guards.object(ROUTES_SOURCE, "request.body", request.body);
661
620
  const mimeType = request.headers[HeaderTypes.Accept] === MimeTypes.JsonLd ? "jsonld" : "json";
662
621
  const component = ComponentFactory.get(componentName);
663
- const result = await component.terminate(request.body, request.pathParams.id === request.body.providerPid ? "provider" : "consumer", httpRequestContext.processorState
664
- .verifiableCredentialSubject);
622
+ const result = await component.terminate(request.body, request.pathParams.id === request.body.providerPid ? "provider" : "consumer", HeaderHelper.extractBearer(httpRequestContext.serverRequest.headers?.[HeaderTypes.Authorization]));
665
623
  return {
666
624
  statusCode: mapError(result),
667
625
  headers: {
@@ -683,8 +641,7 @@ export async function pnpNegotiationOffer(httpRequestContext, componentName, req
683
641
  Guards.object(ROUTES_SOURCE, "request.body", request.body);
684
642
  const mimeType = request.headers[HeaderTypes.Accept] === MimeTypes.JsonLd ? "jsonld" : "json";
685
643
  const component = ComponentFactory.get(componentName);
686
- const result = await component.offerFromProvider(request.body, httpRequestContext.processorState
687
- .verifiableCredentialSubject);
644
+ const result = await component.offerFromProvider(request.body, HeaderHelper.extractBearer(httpRequestContext.serverRequest.headers?.[HeaderTypes.Authorization]));
688
645
  const isUpdate = Is.stringValue(request.pathParams?.id);
689
646
  if (isUpdate) {
690
647
  return {
@@ -716,8 +673,7 @@ export async function pnpNegotiationAgreement(httpRequestContext, componentName,
716
673
  Guards.object(ROUTES_SOURCE, "request.body", request.body);
717
674
  const mimeType = request.headers[HeaderTypes.Accept] === MimeTypes.JsonLd ? "jsonld" : "json";
718
675
  const component = ComponentFactory.get(componentName);
719
- const result = await component.agreementFromProvider(request.body, httpRequestContext.processorState
720
- .verifiableCredentialSubject);
676
+ const result = await component.agreementFromProvider(request.body, HeaderHelper.extractBearer(httpRequestContext.serverRequest.headers?.[HeaderTypes.Authorization]));
721
677
  return {
722
678
  statusCode: mapError(result),
723
679
  headers: {
@@ -1 +1 @@
1
- {"version":3,"file":"policyNegotiationPointRoutes.js","sourceRoot":"","sources":["../../src/policyNegotiationPointRoutes.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright 2025 IOTA Stiftung.\n// SPDX-License-Identifier: Apache-2.0.\nimport type { IHttpRequestContext, IRestRoute, ITag } from \"@twin.org/api-models\";\nimport { ContextIdKeys } from \"@twin.org/context\";\nimport { ComponentFactory, Guards, Is } from \"@twin.org/core\";\nimport type { IIdentityAuthenticationActionRequest } from \"@twin.org/identity-authentication\";\nimport { nameof } from \"@twin.org/nameof\";\nimport type {\n\tIPnpAgreementRequest,\n\tIPnpAgreementVerificationRequest,\n\tIPnpContractNegotiationResponse,\n\tIPnpContractResponse,\n\tIPnpEventRequest,\n\tIPnpNegotiateRequest,\n\tIPnpNegotiationGetRequest,\n\tIPnpOfferRequest,\n\tIPnpTerminateRequest,\n\tIPolicyNegotiationPointComponent\n} from \"@twin.org/rights-management-models\";\nimport {\n\tContractNegotiationEventType,\n\tContractNegotiationStateType,\n\tContractNegotiationTypes,\n\tDataspaceProtocolContexts,\n\ttype IContractNegotiation,\n\ttype IContractNegotiationError\n} from \"@twin.org/standards-dataspace-protocol\";\nimport { OdrlContexts, OdrlTypes } from \"@twin.org/standards-w3c-odrl\";\nimport { HeaderTypes, HttpStatusCode, MimeTypes } from \"@twin.org/web\";\n\n/**\n * The source used when communicating about these routes.\n */\nconst ROUTES_SOURCE = \"policyNegotiationPointRoutes\";\n\n/**\n * The tag to associate with the routes.\n */\nexport const pnpTags: ITag[] = [\n\t{\n\t\tname: \"Policy Negotiation Point\",\n\t\tdescription: \"Endpoints for managing ODRL policies in the Policy Negotiation Point\"\n\t}\n];\n\n/**\n * The REST routes for the Policy Negotiation Point.\n * @param baseRouteName Prefix to prepend to the paths.\n * @param componentName The name of the component to use in the routes stored in the ComponentFactory.\n * @returns The generated routes.\n */\nexport function generateRestRoutesPolicyNegotiationPoint(\n\tbaseRouteName: string,\n\tcomponentName: string\n): IRestRoute[] {\n\t// v\n\tconst pnpGetNegotiationRoute: IRestRoute<\n\t\tIPnpNegotiationGetRequest,\n\t\tIPnpContractNegotiationResponse\n\t> = {\n\t\toperationId: \"pnpGetNegotiation\",\n\t\tsummary: \"Get a negotiation\",\n\t\ttag: pnpTags[0].name,\n\t\tmethod: \"GET\",\n\t\tpath: `${baseRouteName}/negotiations/:id`,\n\t\thandler: async (httpRequestContext, request) =>\n\t\t\tpnpGetNegotiation(httpRequestContext, componentName, request),\n\t\trequestType: {\n\t\t\ttype: nameof<IPnpNegotiationGetRequest>(),\n\t\t\texamples: [\n\t\t\t\t{\n\t\t\t\t\tid: \"pnpGetNegotiationRequestExample\",\n\t\t\t\t\trequest: {\n\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\t[HeaderTypes.Accept]: MimeTypes.JsonLd,\n\t\t\t\t\t\t\t[HeaderTypes.Authorization]: \"z3Vcuh2BP9ShC.z3Vcuh2BP9ShC.z3Vcuh2BP9ShC\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\tpathParams: {\n\t\t\t\t\t\t\tid: \"urn:contract-negotiation:00aa11bb.......ffff\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\tresponseType: [\n\t\t\t{\n\t\t\t\ttype: nameof<IPnpContractNegotiationResponse>(),\n\t\t\t\texamples: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"pnpGetNegotiationResponseExample\",\n\t\t\t\t\t\tresponse: {\n\t\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\t\t\"@context\": DataspaceProtocolContexts.ContextRoot,\n\t\t\t\t\t\t\t\t\"@type\": ContractNegotiationTypes.ContractNegotiation,\n\t\t\t\t\t\t\t\tproviderPid: \"urn:contract-negotiation:002aa11bb.......ffff\",\n\t\t\t\t\t\t\t\tconsumerPid: \"urn:contract-negotiation:22aa11bb.......ffff\",\n\t\t\t\t\t\t\t\tstate: ContractNegotiationStateType.REQUESTED\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t}\n\t\t],\n\t\tskipAuth: true,\n\t\tprocessorFeatures: [\"verifiableCredential\"],\n\t\tprocessorData: {\n\t\t\tverifiableCredential: { contextId: ContextIdKeys.Organization }\n\t\t}\n\t};\n\n\t// https://eclipse-dataspace-protocol-base.github.io/DataspaceProtocol/2025-1/#negotiations-providerpid-request-post\n\tconst pnpNegotiationRequestRoute: IRestRoute<\n\t\tIPnpNegotiateRequest,\n\t\tIPnpContractNegotiationResponse | IPnpContractResponse\n\t> = {\n\t\toperationId: \"pnpNegotiationRequest\",\n\t\tsummary: \"Negotiate a policy\",\n\t\ttag: pnpTags[0].name,\n\t\tmethod: \"POST\",\n\t\tpath: `${baseRouteName}/negotiations/request`,\n\t\thandler: async (httpRequestContext, request) =>\n\t\t\tpnpNegotiationRequest(httpRequestContext, componentName, request),\n\t\trequestType: {\n\t\t\ttype: nameof<IPnpNegotiateRequest>(),\n\t\t\texamples: [\n\t\t\t\t{\n\t\t\t\t\tid: \"pnpNegotiationRequestExample\",\n\t\t\t\t\trequest: {\n\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\t[HeaderTypes.Accept]: MimeTypes.JsonLd,\n\t\t\t\t\t\t\t[HeaderTypes.Authorization]: \"z3Vcuh2BP9ShC.z3Vcuh2BP9ShC.z3Vcuh2BP9ShC\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\t\"@context\": DataspaceProtocolContexts.ContextRoot,\n\t\t\t\t\t\t\t\"@type\": ContractNegotiationTypes.ContractRequestMessage,\n\t\t\t\t\t\t\tconsumerPid: \"urn:contract-negotiation:22aa11bb.......ffff\",\n\t\t\t\t\t\t\toffer: {\n\t\t\t\t\t\t\t\t\"@context\": OdrlContexts.ContextRoot,\n\t\t\t\t\t\t\t\t\"@type\": OdrlTypes.Offer,\n\t\t\t\t\t\t\t\tuid: \"urn:offer-1\",\n\t\t\t\t\t\t\t\tassigner: \"urn:provider:node:1\"\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\tresponseType: [\n\t\t\t{\n\t\t\t\ttype: nameof<IPnpContractNegotiationResponse>(),\n\t\t\t\texamples: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"IPnpNegotiationRequestResponseExample\",\n\t\t\t\t\t\tresponse: {\n\t\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\t\t\"@context\": DataspaceProtocolContexts.ContextRoot,\n\t\t\t\t\t\t\t\t\"@type\": ContractNegotiationTypes.ContractNegotiation,\n\t\t\t\t\t\t\t\tproviderPid: \"urn:contract-negotiation:00aa11bb.......ffff\",\n\t\t\t\t\t\t\t\tconsumerPid: \"urn:contract-negotiation:22aa11bb.......ffff\",\n\t\t\t\t\t\t\t\tstate: ContractNegotiationStateType.REQUESTED\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t}\n\t\t],\n\t\tskipAuth: true,\n\t\tprocessorFeatures: [\"verifiableCredential\"],\n\t\tprocessorData: {\n\t\t\tverifiableCredential: { contextId: ContextIdKeys.Organization }\n\t\t}\n\t};\n\n\t// https://eclipse-dataspace-protocol-base.github.io/DataspaceProtocol/2025-1/#negotiations-providerpid-request-post\n\tconst pnpNegotiationProviderRequestRoute: IRestRoute<IPnpNegotiateRequest, IPnpContractResponse> =\n\t\t{\n\t\t\toperationId: \"pnpNegotiationProviderRequest\",\n\t\t\tsummary: \"Negotiate a policy with an existing provider id\",\n\t\t\ttag: pnpTags[0].name,\n\t\t\tmethod: \"POST\",\n\t\t\tpath: `${baseRouteName}/negotiations/:id/request`,\n\t\t\thandler: async (httpRequestContext, request) =>\n\t\t\t\tpnpNegotiationRequest(httpRequestContext, componentName, request),\n\t\t\trequestType: {\n\t\t\t\ttype: nameof<IPnpNegotiateRequest>(),\n\t\t\t\texamples: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"pnpNegotiationProviderRequestExample\",\n\t\t\t\t\t\trequest: {\n\t\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\t\t[HeaderTypes.Accept]: MimeTypes.JsonLd,\n\t\t\t\t\t\t\t\t[HeaderTypes.Authorization]: \"z3Vcuh2BP9ShC.z3Vcuh2BP9ShC.z3Vcuh2BP9ShC\"\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tpathParams: {\n\t\t\t\t\t\t\t\tid: \"urn:contract-negotiation:00aa11bb.......ffff\"\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\t\t\"@context\": DataspaceProtocolContexts.ContextRoot,\n\t\t\t\t\t\t\t\t\"@type\": ContractNegotiationTypes.ContractRequestMessage,\n\t\t\t\t\t\t\t\tconsumerPid: \"urn:contract-negotiation:22aa11bb.......ffff\",\n\t\t\t\t\t\t\t\toffer: {\n\t\t\t\t\t\t\t\t\t\"@context\": OdrlContexts.ContextRoot,\n\t\t\t\t\t\t\t\t\t\"@type\": OdrlTypes.Offer,\n\t\t\t\t\t\t\t\t\tuid: \"urn:offer-1\",\n\t\t\t\t\t\t\t\t\tassigner: \"urn:provider:node:1\"\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t},\n\t\t\tresponseType: [\n\t\t\t\t{\n\t\t\t\t\ttype: nameof<IPnpContractResponse>(),\n\t\t\t\t\texamples: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"IPnpNegotiationProviderRequestResponseExample\",\n\t\t\t\t\t\t\tresponse: {\n\t\t\t\t\t\t\t\tbody: undefined\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t],\n\t\t\tskipAuth: true,\n\t\t\tprocessorFeatures: [\"verifiableCredential\"],\n\t\t\tprocessorData: {\n\t\t\t\tverifiableCredential: { contextId: ContextIdKeys.Organization }\n\t\t\t}\n\t\t};\n\n\t// https://eclipse-dataspace-protocol-base.github.io/DataspaceProtocol/2025-1/#negotiations-providerpid-events-post\n\tconst pnpNegotiationEventsRoute: IRestRoute<IPnpEventRequest, IPnpContractResponse> = {\n\t\toperationId: \"pnpNegotiationEvents\",\n\t\tsummary: \"Update the state of the negotiation\",\n\t\ttag: pnpTags[0].name,\n\t\tmethod: \"POST\",\n\t\tpath: `${baseRouteName}/negotiations/:id/events`,\n\t\thandler: async (httpRequestContext, request) =>\n\t\t\tpnpNegotiationProviderEvents(httpRequestContext, componentName, request),\n\t\trequestType: {\n\t\t\ttype: nameof<IPnpEventRequest>(),\n\t\t\texamples: [\n\t\t\t\t{\n\t\t\t\t\tid: \"pnpNegotiationEventsRequestExample\",\n\t\t\t\t\trequest: {\n\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\t[HeaderTypes.Accept]: MimeTypes.JsonLd,\n\t\t\t\t\t\t\t[HeaderTypes.Authorization]: \"z3Vcuh2BP9ShC.z3Vcuh2BP9ShC.z3Vcuh2BP9ShC\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\tpathParams: {\n\t\t\t\t\t\t\tid: \"urn:contract-negotiation:00aa11bb.......ffff\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\t\"@context\": DataspaceProtocolContexts.ContextRoot,\n\t\t\t\t\t\t\t\"@type\": ContractNegotiationTypes.ContractRequestMessage,\n\t\t\t\t\t\t\tproviderPid: \"urn:contract-negotiation:00aa11bb.......ffff\",\n\t\t\t\t\t\t\tconsumerPid: \"urn:contract-negotiation:22aa11bb.......ffff\",\n\t\t\t\t\t\t\tevent: ContractNegotiationEventType.ACCEPTED\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\tresponseType: [\n\t\t\t{\n\t\t\t\ttype: nameof<IPnpContractResponse>(),\n\t\t\t\texamples: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"IPnpNegotiationRequestResponseExample\",\n\t\t\t\t\t\tresponse: {\n\t\t\t\t\t\t\tbody: undefined\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t}\n\t\t],\n\t\tskipAuth: true,\n\t\tprocessorFeatures: [\"verifiableCredential\"],\n\t\tprocessorData: {\n\t\t\tverifiableCredential: { contextId: ContextIdKeys.Organization }\n\t\t}\n\t};\n\n\t// https://eclipse-dataspace-protocol-base.github.io/DataspaceProtocol/2025-1/#negotiations-providerpid-agreement-verification-post\n\tconst pnpNegotiationAgreementVerificationRoute: IRestRoute<\n\t\tIPnpAgreementVerificationRequest,\n\t\tIPnpContractResponse\n\t> = {\n\t\toperationId: \"pnpNegotiationAgreementVerification\",\n\t\tsummary: \"Set the agreement to verified\",\n\t\ttag: pnpTags[0].name,\n\t\tmethod: \"POST\",\n\t\tpath: `${baseRouteName}/negotiations/:id/agreement/verification`,\n\t\thandler: async (httpRequestContext, request) =>\n\t\t\tpnpNegotiationAgreementVerification(httpRequestContext, componentName, request),\n\t\trequestType: {\n\t\t\ttype: nameof<IPnpAgreementVerificationRequest>(),\n\t\t\texamples: [\n\t\t\t\t{\n\t\t\t\t\tid: \"pnpNegotiationAgreementVerificationRequestExample\",\n\t\t\t\t\trequest: {\n\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\t[HeaderTypes.Accept]: MimeTypes.JsonLd,\n\t\t\t\t\t\t\t[HeaderTypes.Authorization]: \"z3Vcuh2BP9ShC.z3Vcuh2BP9ShC.z3Vcuh2BP9ShC\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\tpathParams: {\n\t\t\t\t\t\t\tid: \"urn:contract-negotiation:00aa11bb.......ffff\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\t\"@context\": DataspaceProtocolContexts.ContextRoot,\n\t\t\t\t\t\t\t\"@type\": ContractNegotiationTypes.ContractRequestMessage,\n\t\t\t\t\t\t\tproviderPid: \"urn:contract-negotiation:00aa11bb.......ffff\",\n\t\t\t\t\t\t\tconsumerPid: \"urn:contract-negotiation:22aa11bb.......ffff\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\tresponseType: [\n\t\t\t{\n\t\t\t\ttype: nameof<IPnpContractResponse>(),\n\t\t\t\texamples: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"IPnpNegotiationAgreementVerificationResponseExample\",\n\t\t\t\t\t\tresponse: {\n\t\t\t\t\t\t\tbody: undefined\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t}\n\t\t],\n\t\tskipAuth: true,\n\t\tprocessorFeatures: [\"verifiableCredential\"],\n\t\tprocessorData: {\n\t\t\tverifiableCredential: { contextId: ContextIdKeys.Organization }\n\t\t}\n\t};\n\n\t// https://eclipse-dataspace-protocol-base.github.io/DataspaceProtocol/2025-1/#negotiations-providerpid-termination-post\n\tconst pnpNegotiationTerminationRoute: IRestRoute<IPnpTerminateRequest, IPnpContractResponse> = {\n\t\toperationId: \"pnpNegotiationTermination\",\n\t\tsummary: \"Set the agreement to terminated\",\n\t\ttag: pnpTags[0].name,\n\t\tmethod: \"POST\",\n\t\tpath: `${baseRouteName}/negotiations/:id/termination`,\n\t\thandler: async (httpRequestContext, request) =>\n\t\t\tpnpNegotiationTermination(httpRequestContext, componentName, request),\n\t\trequestType: {\n\t\t\ttype: nameof<IPnpTerminateRequest>(),\n\t\t\texamples: [\n\t\t\t\t{\n\t\t\t\t\tid: \"pnpNegotiationTerminationRequestExample\",\n\t\t\t\t\trequest: {\n\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\t[HeaderTypes.Accept]: MimeTypes.JsonLd,\n\t\t\t\t\t\t\t[HeaderTypes.Authorization]: \"z3Vcuh2BP9ShC.z3Vcuh2BP9ShC.z3Vcuh2BP9ShC\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\tpathParams: {\n\t\t\t\t\t\t\tid: \"urn:contract-negotiation:00aa11bb.......ffff\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\t\"@context\": DataspaceProtocolContexts.ContextRoot,\n\t\t\t\t\t\t\t\"@type\": ContractNegotiationTypes.ContractRequestMessage,\n\t\t\t\t\t\t\tproviderPid: \"urn:contract-negotiation:00aa11bb.......ffff\",\n\t\t\t\t\t\t\tconsumerPid: \"urn:contract-negotiation:22aa11bb.......ffff\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\tresponseType: [\n\t\t\t{\n\t\t\t\ttype: nameof<IPnpContractResponse>(),\n\t\t\t\texamples: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"pnpNegotiationTerminationResponseExample\",\n\t\t\t\t\t\tresponse: {\n\t\t\t\t\t\t\tbody: undefined\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t}\n\t\t],\n\t\tskipAuth: true,\n\t\tprocessorFeatures: [\"verifiableCredential\"],\n\t\tprocessorData: {\n\t\t\tverifiableCredential: { contextId: ContextIdKeys.Organization }\n\t\t}\n\t};\n\n\t// https://eclipse-dataspace-protocol-base.github.io/DataspaceProtocol/2025-1/#negotiations-offers-post\n\tconst pnpNegotiationOfferRoute: IRestRoute<\n\t\tIPnpOfferRequest,\n\t\tIPnpContractNegotiationResponse | IPnpContractResponse\n\t> = {\n\t\toperationId: \"pnpNegotiationOffer\",\n\t\tsummary: \"Send the offer to the consumer\",\n\t\ttag: pnpTags[0].name,\n\t\tmethod: \"POST\",\n\t\tpath: `${baseRouteName}/negotiations/offers`,\n\t\thandler: async (httpRequestContext, request) =>\n\t\t\tpnpNegotiationOffer(httpRequestContext, componentName, request),\n\t\trequestType: {\n\t\t\ttype: nameof<IPnpOfferRequest>(),\n\t\t\texamples: [\n\t\t\t\t{\n\t\t\t\t\tid: \"pnpNegotiationOfferRequestExample\",\n\t\t\t\t\trequest: {\n\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\t[HeaderTypes.Accept]: MimeTypes.JsonLd,\n\t\t\t\t\t\t\t[HeaderTypes.Authorization]: \"z3Vcuh2BP9ShC.z3Vcuh2BP9ShC.z3Vcuh2BP9ShC\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\t\"@context\": DataspaceProtocolContexts.ContextRoot,\n\t\t\t\t\t\t\t\"@type\": ContractNegotiationTypes.ContractRequestMessage,\n\t\t\t\t\t\t\tproviderPid: \"urn:contract-negotiation:00aa11bb.......ffff\",\n\t\t\t\t\t\t\tconsumerPid: \"urn:contract-negotiation:22aa11bb.......ffff\",\n\t\t\t\t\t\t\toffer: {\n\t\t\t\t\t\t\t\t\"@context\": OdrlContexts.ContextRoot,\n\t\t\t\t\t\t\t\t\"@type\": OdrlTypes.Offer,\n\t\t\t\t\t\t\t\tuid: \"urn:offer-1\",\n\t\t\t\t\t\t\t\tassigner: \"urn:provider:node:1\"\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\tresponseType: [\n\t\t\t{\n\t\t\t\ttype: nameof<IPnpContractResponse>(),\n\t\t\t\texamples: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"pnpNegotiationOfferResponseExample\",\n\t\t\t\t\t\tresponse: {\n\t\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\t\t\"@context\": DataspaceProtocolContexts.ContextRoot,\n\t\t\t\t\t\t\t\t\"@type\": ContractNegotiationTypes.ContractRequestMessage,\n\t\t\t\t\t\t\t\tproviderPid: \"urn:contract-negotiation:00aa11bb.......ffff\",\n\t\t\t\t\t\t\t\tconsumerPid: \"urn:contract-negotiation:22aa11bb.......ffff\"\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t}\n\t\t],\n\t\tskipAuth: true,\n\t\tprocessorFeatures: [\"verifiableCredential\"],\n\t\tprocessorData: {\n\t\t\tverifiableCredential: { contextId: ContextIdKeys.Organization }\n\t\t}\n\t};\n\n\t// https://eclipse-dataspace-protocol-base.github.io/DataspaceProtocol/2025-1/#negotiations-consumerpid-offers-post\n\tconst pnpNegotiationConsumerOfferRoute: IRestRoute<IPnpOfferRequest, IPnpContractResponse> = {\n\t\toperationId: \"pnpNegotiationConsumerOffer\",\n\t\tsummary: \"Send the offer to the consumer with existing id\",\n\t\ttag: pnpTags[0].name,\n\t\tmethod: \"POST\",\n\t\tpath: `${baseRouteName}/negotiations/:id/offers`,\n\t\thandler: async (httpRequestContext, request) =>\n\t\t\tpnpNegotiationOffer(httpRequestContext, componentName, request),\n\t\trequestType: {\n\t\t\ttype: nameof<IPnpOfferRequest>(),\n\t\t\texamples: [\n\t\t\t\t{\n\t\t\t\t\tid: \"pnpNegotiationConsumerOfferRequestExample\",\n\t\t\t\t\trequest: {\n\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\t[HeaderTypes.Accept]: MimeTypes.JsonLd,\n\t\t\t\t\t\t\t[HeaderTypes.Authorization]: \"z3Vcuh2BP9ShC.z3Vcuh2BP9ShC.z3Vcuh2BP9ShC\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\tpathParams: {\n\t\t\t\t\t\t\tid: \"urn:contract-negotiation:22aa11bb.......ffff\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\t\"@context\": DataspaceProtocolContexts.ContextRoot,\n\t\t\t\t\t\t\t\"@type\": ContractNegotiationTypes.ContractRequestMessage,\n\t\t\t\t\t\t\tproviderPid: \"urn:contract-negotiation:00aa11bb.......ffff\",\n\t\t\t\t\t\t\tconsumerPid: \"urn:contract-negotiation:22aa11bb.......ffff\",\n\t\t\t\t\t\t\toffer: {\n\t\t\t\t\t\t\t\t\"@context\": OdrlContexts.ContextRoot,\n\t\t\t\t\t\t\t\t\"@type\": OdrlTypes.Offer,\n\t\t\t\t\t\t\t\tuid: \"urn:offer-1\",\n\t\t\t\t\t\t\t\tassigner: \"urn:provider:node:1\"\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\tresponseType: [\n\t\t\t{\n\t\t\t\ttype: nameof<IPnpContractResponse>(),\n\t\t\t\texamples: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"pnpNegotiationConsumerOfferResponseExample\",\n\t\t\t\t\t\tresponse: {\n\t\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\t\t\"@context\": DataspaceProtocolContexts.ContextRoot,\n\t\t\t\t\t\t\t\t\"@type\": ContractNegotiationTypes.ContractNegotiation,\n\t\t\t\t\t\t\t\tproviderPid: \"urn:contract-negotiation:00aa11bb.......ffff\",\n\t\t\t\t\t\t\t\tconsumerPid: \"urn:contract-negotiation:22aa11bb.......ffff\"\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t}\n\t\t],\n\t\tskipAuth: true,\n\t\tprocessorFeatures: [\"verifiableCredential\"],\n\t\tprocessorData: {\n\t\t\tverifiableCredential: { contextId: ContextIdKeys.Organization }\n\t\t}\n\t};\n\n\t// https://eclipse-dataspace-protocol-base.github.io/DataspaceProtocol/2025-1/#negotiations-consumerpid-agreement-post\n\tconst pnpNegotiationAgreementRoute: IRestRoute<IPnpAgreementRequest, IPnpContractResponse> = {\n\t\toperationId: \"pnpNegotiationAgreement\",\n\t\tsummary: \"Send the agreement to the consumer\",\n\t\ttag: pnpTags[0].name,\n\t\tmethod: \"POST\",\n\t\tpath: `${baseRouteName}/negotiations/:id/agreement`,\n\t\thandler: async (httpRequestContext, request) =>\n\t\t\tpnpNegotiationAgreement(httpRequestContext, componentName, request),\n\t\trequestType: {\n\t\t\ttype: nameof<IPnpAgreementRequest>(),\n\t\t\texamples: [\n\t\t\t\t{\n\t\t\t\t\tid: \"pnpNegotiationAgreementRequestExample\",\n\t\t\t\t\trequest: {\n\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\t[HeaderTypes.Accept]: MimeTypes.JsonLd,\n\t\t\t\t\t\t\t[HeaderTypes.Authorization]: \"z3Vcuh2BP9ShC.z3Vcuh2BP9ShC.z3Vcuh2BP9ShC\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\tpathParams: {\n\t\t\t\t\t\t\tid: \"urn:contract-negotiation:22aa11bb.......ffff\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\t\"@context\": DataspaceProtocolContexts.ContextRoot,\n\t\t\t\t\t\t\t\"@type\": ContractNegotiationTypes.ContractRequestMessage,\n\t\t\t\t\t\t\tproviderPid: \"urn:contract-negotiation:00aa11bb.......ffff\",\n\t\t\t\t\t\t\tconsumerPid: \"urn:contract-negotiation:22aa11bb.......ffff\",\n\t\t\t\t\t\t\tagreement: {\n\t\t\t\t\t\t\t\t\"@context\": OdrlContexts.ContextRoot,\n\t\t\t\t\t\t\t\t\"@type\": OdrlTypes.Agreement,\n\t\t\t\t\t\t\t\tuid: \"urn:offer-1\",\n\t\t\t\t\t\t\t\tassigner: \"urn:provider:node:1\",\n\t\t\t\t\t\t\t\tassignee: \"urn:consumer:node:1\"\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\tresponseType: [\n\t\t\t{\n\t\t\t\ttype: nameof<IPnpContractResponse>(),\n\t\t\t\texamples: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"pnpNegotiationAgreementResponseExample\",\n\t\t\t\t\t\tresponse: {\n\t\t\t\t\t\t\tbody: undefined\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t}\n\t\t],\n\t\tskipAuth: true,\n\t\tprocessorFeatures: [\"verifiableCredential\"],\n\t\tprocessorData: {\n\t\t\tverifiableCredential: { contextId: ContextIdKeys.Organization }\n\t\t}\n\t};\n\n\t// The consumer event and terminate routes are exactly the same as the pnpNegotiationEventsRoute and pnpNegotiationTerminationRoute\n\t// https://eclipse-dataspace-protocol-base.github.io/DataspaceProtocol/2025-1/#negotiations-consumerpid-events-post\n\t// https://eclipse-dataspace-protocol-base.github.io/DataspaceProtocol/2025-1/#negotiations-consumerpid-termination-post\n\n\treturn [\n\t\tpnpGetNegotiationRoute,\n\t\tpnpNegotiationRequestRoute,\n\t\tpnpNegotiationProviderRequestRoute,\n\t\tpnpNegotiationEventsRoute,\n\t\tpnpNegotiationAgreementVerificationRoute,\n\t\tpnpNegotiationTerminationRoute,\n\t\tpnpNegotiationOfferRoute,\n\t\tpnpNegotiationConsumerOfferRoute,\n\t\tpnpNegotiationAgreementRoute\n\t];\n}\n\n/**\n * Map the IDS result to an HTTP status code.\n * @param result The result to map.\n * @returns The mapped status code or undefined if no mapping was found or not an error.\n */\nfunction mapError(\n\tresult: IContractNegotiation | IContractNegotiationError | undefined\n): HttpStatusCode | undefined {\n\tif (\n\t\tresult?.[\"@type\"] === ContractNegotiationTypes.ContractNegotiationError &&\n\t\tIs.object<IContractNegotiationError>(result)\n\t) {\n\t\tif (Is.stringValue(result.code) && /notfound/i.test(result.code)) {\n\t\t\treturn HttpStatusCode.notFound;\n\t\t}\n\t\treturn HttpStatusCode.badRequest;\n\t}\n\n\treturn undefined;\n}\n\n/**\n * PNP: Get negotiation.\n * @param httpRequestContext The request context for the API.\n * @param componentName The name of the component to use in the routes.\n * @param request The request.\n * @returns The response object with additional http response properties.\n */\nexport async function pnpGetNegotiation(\n\thttpRequestContext: IHttpRequestContext,\n\tcomponentName: string,\n\trequest: IPnpNegotiationGetRequest\n): Promise<IPnpContractNegotiationResponse> {\n\tGuards.object<IPnpNegotiationGetRequest>(ROUTES_SOURCE, nameof(request), request);\n\tGuards.object<IPnpNegotiationGetRequest[\"headers\"]>(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.headers),\n\t\trequest.headers\n\t);\n\tGuards.object<IPnpNegotiationGetRequest[\"pathParams\"]>(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.pathParams),\n\t\trequest.pathParams\n\t);\n\n\tconst mimeType = request.headers[HeaderTypes.Accept] === MimeTypes.JsonLd ? \"jsonld\" : \"json\";\n\n\tconst component = ComponentFactory.get<IPolicyNegotiationPointComponent>(componentName);\n\tconst result = await component.getNegotiation(\n\t\trequest.pathParams.id,\n\t\thttpRequestContext.processorState\n\t\t\t.verifiableCredentialSubject as IIdentityAuthenticationActionRequest\n\t);\n\n\treturn {\n\t\tstatusCode: mapError(result),\n\t\theaders: {\n\t\t\t[HeaderTypes.ContentType]: mimeType === \"json\" ? MimeTypes.Json : MimeTypes.JsonLd\n\t\t},\n\t\tbody: result\n\t};\n}\n\n/**\n * PNP: Request a negotiation.\n * @param httpRequestContext The request context for the API.\n * @param componentName The name of the component to use in the routes.\n * @param request The request.\n * @returns The response object with additional http response properties.\n */\nexport async function pnpNegotiationRequest(\n\thttpRequestContext: IHttpRequestContext,\n\tcomponentName: string,\n\trequest: IPnpNegotiateRequest\n): Promise<IPnpContractNegotiationResponse | IPnpContractResponse> {\n\tGuards.object<IPnpNegotiateRequest>(ROUTES_SOURCE, nameof(request), request);\n\tGuards.object<IPnpNegotiateRequest[\"headers\"]>(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.headers),\n\t\trequest.headers\n\t);\n\tGuards.object<IPnpNegotiateRequest[\"body\"]>(ROUTES_SOURCE, nameof(request.body), request.body);\n\n\tconst mimeType = request.headers[HeaderTypes.Accept] === MimeTypes.JsonLd ? \"jsonld\" : \"json\";\n\n\tconst component = ComponentFactory.get<IPolicyNegotiationPointComponent>(componentName);\n\tconst result = await component.requestFromConsumer(\n\t\trequest.body,\n\t\thttpRequestContext.processorState\n\t\t\t.verifiableCredentialSubject as IIdentityAuthenticationActionRequest\n\t);\n\n\tconst isUpdate = Is.stringValue(request.pathParams?.id);\n\n\tif (isUpdate) {\n\t\treturn {\n\t\t\tstatusCode: mapError(result),\n\t\t\theaders: {\n\t\t\t\t[HeaderTypes.ContentType]: mimeType === \"json\" ? MimeTypes.Json : MimeTypes.JsonLd\n\t\t\t}\n\t\t};\n\t}\n\treturn {\n\t\tstatusCode: mapError(result) ?? HttpStatusCode.created,\n\t\theaders: {\n\t\t\t[HeaderTypes.ContentType]: mimeType === \"json\" ? MimeTypes.Json : MimeTypes.JsonLd\n\t\t},\n\t\tbody: result\n\t};\n}\n\n/**\n * PNP: Update state of negotiation.\n * @param httpRequestContext The request context for the API.\n * @param componentName The name of the component to use in the routes.\n * @param request The request.\n * @returns The response object with additional http response properties.\n */\nexport async function pnpNegotiationProviderEvents(\n\thttpRequestContext: IHttpRequestContext,\n\tcomponentName: string,\n\trequest: IPnpEventRequest\n): Promise<IPnpContractResponse> {\n\tGuards.object<IPnpEventRequest>(ROUTES_SOURCE, nameof(request), request);\n\tGuards.object<IPnpEventRequest[\"headers\"]>(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.headers),\n\t\trequest.headers\n\t);\n\tGuards.object<IPnpEventRequest[\"pathParams\"]>(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.pathParams),\n\t\trequest.pathParams\n\t);\n\tGuards.object<IPnpEventRequest[\"body\"]>(ROUTES_SOURCE, nameof(request.body), request.body);\n\n\tconst mimeType = request.headers[HeaderTypes.Accept] === MimeTypes.JsonLd ? \"jsonld\" : \"json\";\n\n\tconst component = ComponentFactory.get<IPolicyNegotiationPointComponent>(componentName);\n\tconst result = await component.event(\n\t\trequest.body,\n\t\trequest.pathParams.id === request.body.providerPid ? \"provider\" : \"consumer\",\n\t\thttpRequestContext.processorState\n\t\t\t.verifiableCredentialSubject as IIdentityAuthenticationActionRequest\n\t);\n\n\treturn {\n\t\tstatusCode: mapError(result),\n\t\theaders: {\n\t\t\t[HeaderTypes.ContentType]: mimeType === \"json\" ? MimeTypes.Json : MimeTypes.JsonLd\n\t\t},\n\t\tbody: result\n\t};\n}\n\n/**\n * PNP: Set the agreement to verified.\n * @param httpRequestContext The request context for the API.\n * @param componentName The name of the component to use in the routes.\n * @param request The request.\n * @returns The response object with additional http response properties.\n */\nexport async function pnpNegotiationAgreementVerification(\n\thttpRequestContext: IHttpRequestContext,\n\tcomponentName: string,\n\trequest: IPnpAgreementVerificationRequest\n): Promise<IPnpContractResponse> {\n\tGuards.object<IPnpAgreementVerificationRequest>(ROUTES_SOURCE, nameof(request), request);\n\tGuards.object<IPnpAgreementVerificationRequest[\"headers\"]>(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.headers),\n\t\trequest.headers\n\t);\n\tGuards.object<IPnpAgreementVerificationRequest[\"pathParams\"]>(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.pathParams),\n\t\trequest.pathParams\n\t);\n\tGuards.object<IPnpAgreementVerificationRequest[\"body\"]>(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.body),\n\t\trequest.body\n\t);\n\n\tconst mimeType = request.headers[HeaderTypes.Accept] === MimeTypes.JsonLd ? \"jsonld\" : \"json\";\n\n\tconst component = ComponentFactory.get<IPolicyNegotiationPointComponent>(componentName);\n\tconst result = await component.agreementVerificationFromConsumer(\n\t\trequest.body,\n\t\thttpRequestContext.processorState\n\t\t\t.verifiableCredentialSubject as IIdentityAuthenticationActionRequest\n\t);\n\n\treturn {\n\t\tstatusCode: mapError(result),\n\t\theaders: {\n\t\t\t[HeaderTypes.ContentType]: mimeType === \"json\" ? MimeTypes.Json : MimeTypes.JsonLd\n\t\t},\n\t\tbody: result\n\t};\n}\n\n/**\n * PNP: Terminate the provider negotiation.\n * @param httpRequestContext The request context for the API.\n * @param componentName The name of the component to use in the routes.\n * @param request The request.\n * @returns The response object with additional http response properties.\n */\nexport async function pnpNegotiationTermination(\n\thttpRequestContext: IHttpRequestContext,\n\tcomponentName: string,\n\trequest: IPnpTerminateRequest\n): Promise<IPnpContractResponse> {\n\tGuards.object<IPnpTerminateRequest>(ROUTES_SOURCE, nameof(request), request);\n\tGuards.object<IPnpTerminateRequest[\"headers\"]>(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.headers),\n\t\trequest.headers\n\t);\n\tGuards.object<IPnpTerminateRequest[\"pathParams\"]>(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.pathParams),\n\t\trequest.pathParams\n\t);\n\tGuards.object<IPnpTerminateRequest[\"body\"]>(ROUTES_SOURCE, nameof(request.body), request.body);\n\n\tconst mimeType = request.headers[HeaderTypes.Accept] === MimeTypes.JsonLd ? \"jsonld\" : \"json\";\n\n\tconst component = ComponentFactory.get<IPolicyNegotiationPointComponent>(componentName);\n\tconst result = await component.terminate(\n\t\trequest.body,\n\t\trequest.pathParams.id === request.body.providerPid ? \"provider\" : \"consumer\",\n\t\thttpRequestContext.processorState\n\t\t\t.verifiableCredentialSubject as IIdentityAuthenticationActionRequest\n\t);\n\n\treturn {\n\t\tstatusCode: mapError(result),\n\t\theaders: {\n\t\t\t[HeaderTypes.ContentType]: mimeType === \"json\" ? MimeTypes.Json : MimeTypes.JsonLd\n\t\t},\n\t\tbody: result\n\t};\n}\n\n/**\n * PNP: Send the offer to the consumer.\n * @param httpRequestContext The request context for the API.\n * @param componentName The name of the component to use in the routes.\n * @param request The request.\n * @returns The response object with additional http response properties.\n */\nexport async function pnpNegotiationOffer(\n\thttpRequestContext: IHttpRequestContext,\n\tcomponentName: string,\n\trequest: IPnpOfferRequest\n): Promise<IPnpContractNegotiationResponse | IPnpContractResponse> {\n\tGuards.object<IPnpOfferRequest>(ROUTES_SOURCE, nameof(request), request);\n\tGuards.object<IPnpOfferRequest[\"headers\"]>(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.headers),\n\t\trequest.headers\n\t);\n\tGuards.object<IPnpOfferRequest[\"body\"]>(ROUTES_SOURCE, nameof(request.body), request.body);\n\n\tconst mimeType = request.headers[HeaderTypes.Accept] === MimeTypes.JsonLd ? \"jsonld\" : \"json\";\n\n\tconst component = ComponentFactory.get<IPolicyNegotiationPointComponent>(componentName);\n\tconst result = await component.offerFromProvider(\n\t\trequest.body,\n\t\thttpRequestContext.processorState\n\t\t\t.verifiableCredentialSubject as IIdentityAuthenticationActionRequest\n\t);\n\n\tconst isUpdate = Is.stringValue(request.pathParams?.id);\n\n\tif (isUpdate) {\n\t\treturn {\n\t\t\tstatusCode: mapError(result),\n\t\t\theaders: {\n\t\t\t\t[HeaderTypes.ContentType]: mimeType === \"json\" ? MimeTypes.Json : MimeTypes.JsonLd\n\t\t\t}\n\t\t};\n\t}\n\treturn {\n\t\tstatusCode: mapError(result) ?? HttpStatusCode.created,\n\t\theaders: {\n\t\t\t[HeaderTypes.ContentType]: mimeType === \"json\" ? MimeTypes.Json : MimeTypes.JsonLd\n\t\t},\n\t\tbody: result\n\t};\n}\n\n/**\n * PNP: Send the agreement to the consumer.\n * @param httpRequestContext The request context for the API.\n * @param componentName The name of the component to use in the routes.\n * @param request The request.\n * @returns The response object with additional http response properties.\n */\nexport async function pnpNegotiationAgreement(\n\thttpRequestContext: IHttpRequestContext,\n\tcomponentName: string,\n\trequest: IPnpAgreementRequest\n): Promise<IPnpContractResponse> {\n\tGuards.object<IPnpAgreementRequest>(ROUTES_SOURCE, nameof(request), request);\n\tGuards.object<IPnpAgreementRequest[\"headers\"]>(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.headers),\n\t\trequest.headers\n\t);\n\tGuards.object<IPnpAgreementRequest[\"body\"]>(ROUTES_SOURCE, nameof(request.body), request.body);\n\tGuards.object<IPnpAgreementRequest[\"pathParams\"]>(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.body),\n\t\trequest.body\n\t);\n\n\tconst mimeType = request.headers[HeaderTypes.Accept] === MimeTypes.JsonLd ? \"jsonld\" : \"json\";\n\n\tconst component = ComponentFactory.get<IPolicyNegotiationPointComponent>(componentName);\n\tconst result = await component.agreementFromProvider(\n\t\trequest.body,\n\t\thttpRequestContext.processorState\n\t\t\t.verifiableCredentialSubject as IIdentityAuthenticationActionRequest\n\t);\n\n\treturn {\n\t\tstatusCode: mapError(result),\n\t\theaders: {\n\t\t\t[HeaderTypes.ContentType]: mimeType === \"json\" ? MimeTypes.Json : MimeTypes.JsonLd\n\t\t},\n\t\tbody: result\n\t};\n}\n"]}
1
+ {"version":3,"file":"policyNegotiationPointRoutes.js","sourceRoot":"","sources":["../../src/policyNegotiationPointRoutes.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright 2025 IOTA Stiftung.\n// SPDX-License-Identifier: Apache-2.0.\nimport type { IHttpRequestContext, IRestRoute, ITag } from \"@twin.org/api-models\";\nimport { ComponentFactory, Guards, Is } from \"@twin.org/core\";\nimport { nameof } from \"@twin.org/nameof\";\nimport type {\n\tIPnpAgreementRequest,\n\tIPnpAgreementVerificationRequest,\n\tIPnpContractNegotiationResponse,\n\tIPnpContractResponse,\n\tIPnpEventRequest,\n\tIPnpNegotiateRequest,\n\tIPnpNegotiationGetRequest,\n\tIPnpOfferRequest,\n\tIPnpTerminateRequest,\n\tIPolicyNegotiationPointComponent\n} from \"@twin.org/rights-management-models\";\nimport {\n\tContractNegotiationEventType,\n\tContractNegotiationStateType,\n\tContractNegotiationTypes,\n\tDataspaceProtocolContexts,\n\ttype IContractNegotiation,\n\ttype IContractNegotiationError\n} from \"@twin.org/standards-dataspace-protocol\";\nimport { OdrlContexts, OdrlTypes } from \"@twin.org/standards-w3c-odrl\";\nimport { HeaderHelper, HeaderTypes, HttpStatusCode, MimeTypes } from \"@twin.org/web\";\n\n/**\n * The source used when communicating about these routes.\n */\nconst ROUTES_SOURCE = \"policyNegotiationPointRoutes\";\n\n/**\n * The tag to associate with the routes.\n */\nexport const pnpTags: ITag[] = [\n\t{\n\t\tname: \"Policy Negotiation Point\",\n\t\tdescription: \"Endpoints for managing ODRL policies in the Policy Negotiation Point\"\n\t}\n];\n\n/**\n * The REST routes for the Policy Negotiation Point.\n * @param baseRouteName Prefix to prepend to the paths.\n * @param componentName The name of the component to use in the routes stored in the ComponentFactory.\n * @returns The generated routes.\n */\nexport function generateRestRoutesPolicyNegotiationPoint(\n\tbaseRouteName: string,\n\tcomponentName: string\n): IRestRoute[] {\n\t// v\n\tconst pnpGetNegotiationRoute: IRestRoute<\n\t\tIPnpNegotiationGetRequest,\n\t\tIPnpContractNegotiationResponse\n\t> = {\n\t\toperationId: \"pnpGetNegotiation\",\n\t\tsummary: \"Get a negotiation\",\n\t\ttag: pnpTags[0].name,\n\t\tmethod: \"GET\",\n\t\tpath: `${baseRouteName}/negotiations/:id`,\n\t\thandler: async (httpRequestContext, request) =>\n\t\t\tpnpGetNegotiation(httpRequestContext, componentName, request),\n\t\trequestType: {\n\t\t\ttype: nameof<IPnpNegotiationGetRequest>(),\n\t\t\texamples: [\n\t\t\t\t{\n\t\t\t\t\tid: \"pnpGetNegotiationRequestExample\",\n\t\t\t\t\trequest: {\n\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\t[HeaderTypes.Accept]: MimeTypes.JsonLd,\n\t\t\t\t\t\t\t[HeaderTypes.Authorization]: \"z3Vcuh2BP9ShC.z3Vcuh2BP9ShC.z3Vcuh2BP9ShC\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\tpathParams: {\n\t\t\t\t\t\t\tid: \"urn:contract-negotiation:00aa11bb.......ffff\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\tresponseType: [\n\t\t\t{\n\t\t\t\ttype: nameof<IPnpContractNegotiationResponse>(),\n\t\t\t\texamples: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"pnpGetNegotiationResponseExample\",\n\t\t\t\t\t\tresponse: {\n\t\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\t\t\"@context\": [DataspaceProtocolContexts.ContextRoot],\n\t\t\t\t\t\t\t\t\"@type\": ContractNegotiationTypes.ContractNegotiation,\n\t\t\t\t\t\t\t\tproviderPid: \"urn:contract-negotiation:002aa11bb.......ffff\",\n\t\t\t\t\t\t\t\tconsumerPid: \"urn:contract-negotiation:22aa11bb.......ffff\",\n\t\t\t\t\t\t\t\tstate: ContractNegotiationStateType.REQUESTED\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t}\n\t\t],\n\t\tskipAuth: true\n\t};\n\n\t// https://eclipse-dataspace-protocol-base.github.io/DataspaceProtocol/2025-1/#negotiations-providerpid-request-post\n\tconst pnpNegotiationRequestRoute: IRestRoute<\n\t\tIPnpNegotiateRequest,\n\t\tIPnpContractNegotiationResponse | IPnpContractResponse\n\t> = {\n\t\toperationId: \"pnpNegotiationRequest\",\n\t\tsummary: \"Negotiate a policy\",\n\t\ttag: pnpTags[0].name,\n\t\tmethod: \"POST\",\n\t\tpath: `${baseRouteName}/negotiations/request`,\n\t\thandler: async (httpRequestContext, request) =>\n\t\t\tpnpNegotiationRequest(httpRequestContext, componentName, request),\n\t\trequestType: {\n\t\t\ttype: nameof<IPnpNegotiateRequest>(),\n\t\t\texamples: [\n\t\t\t\t{\n\t\t\t\t\tid: \"pnpNegotiationRequestExample\",\n\t\t\t\t\trequest: {\n\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\t[HeaderTypes.Accept]: MimeTypes.JsonLd,\n\t\t\t\t\t\t\t[HeaderTypes.Authorization]: \"z3Vcuh2BP9ShC.z3Vcuh2BP9ShC.z3Vcuh2BP9ShC\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\t\"@context\": [DataspaceProtocolContexts.ContextRoot],\n\t\t\t\t\t\t\t\"@type\": ContractNegotiationTypes.ContractRequestMessage,\n\t\t\t\t\t\t\tconsumerPid: \"urn:contract-negotiation:22aa11bb.......ffff\",\n\t\t\t\t\t\t\toffer: {\n\t\t\t\t\t\t\t\t\"@context\": OdrlContexts.ContextRoot,\n\t\t\t\t\t\t\t\t\"@type\": OdrlTypes.Offer,\n\t\t\t\t\t\t\t\tuid: \"urn:offer-1\",\n\t\t\t\t\t\t\t\tassigner: \"urn:provider:node:1\"\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\tresponseType: [\n\t\t\t{\n\t\t\t\ttype: nameof<IPnpContractNegotiationResponse>(),\n\t\t\t\texamples: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"IPnpNegotiationRequestResponseExample\",\n\t\t\t\t\t\tresponse: {\n\t\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\t\t\"@context\": [DataspaceProtocolContexts.ContextRoot],\n\t\t\t\t\t\t\t\t\"@type\": ContractNegotiationTypes.ContractNegotiation,\n\t\t\t\t\t\t\t\tproviderPid: \"urn:contract-negotiation:00aa11bb.......ffff\",\n\t\t\t\t\t\t\t\tconsumerPid: \"urn:contract-negotiation:22aa11bb.......ffff\",\n\t\t\t\t\t\t\t\tstate: ContractNegotiationStateType.REQUESTED\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t}\n\t\t],\n\t\tskipAuth: true\n\t};\n\n\t// https://eclipse-dataspace-protocol-base.github.io/DataspaceProtocol/2025-1/#negotiations-providerpid-request-post\n\tconst pnpNegotiationProviderRequestRoute: IRestRoute<IPnpNegotiateRequest, IPnpContractResponse> =\n\t\t{\n\t\t\toperationId: \"pnpNegotiationProviderRequest\",\n\t\t\tsummary: \"Negotiate a policy with an existing provider id\",\n\t\t\ttag: pnpTags[0].name,\n\t\t\tmethod: \"POST\",\n\t\t\tpath: `${baseRouteName}/negotiations/:id/request`,\n\t\t\thandler: async (httpRequestContext, request) =>\n\t\t\t\tpnpNegotiationRequest(httpRequestContext, componentName, request),\n\t\t\trequestType: {\n\t\t\t\ttype: nameof<IPnpNegotiateRequest>(),\n\t\t\t\texamples: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"pnpNegotiationProviderRequestExample\",\n\t\t\t\t\t\trequest: {\n\t\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\t\t[HeaderTypes.Accept]: MimeTypes.JsonLd,\n\t\t\t\t\t\t\t\t[HeaderTypes.Authorization]: \"z3Vcuh2BP9ShC.z3Vcuh2BP9ShC.z3Vcuh2BP9ShC\"\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tpathParams: {\n\t\t\t\t\t\t\t\tid: \"urn:contract-negotiation:00aa11bb.......ffff\"\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\t\t\"@context\": [DataspaceProtocolContexts.ContextRoot],\n\t\t\t\t\t\t\t\t\"@type\": ContractNegotiationTypes.ContractRequestMessage,\n\t\t\t\t\t\t\t\tconsumerPid: \"urn:contract-negotiation:22aa11bb.......ffff\",\n\t\t\t\t\t\t\t\toffer: {\n\t\t\t\t\t\t\t\t\t\"@context\": OdrlContexts.ContextRoot,\n\t\t\t\t\t\t\t\t\t\"@type\": OdrlTypes.Offer,\n\t\t\t\t\t\t\t\t\tuid: \"urn:offer-1\",\n\t\t\t\t\t\t\t\t\tassigner: \"urn:provider:node:1\"\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t},\n\t\t\tresponseType: [\n\t\t\t\t{\n\t\t\t\t\ttype: nameof<IPnpContractResponse>(),\n\t\t\t\t\texamples: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"IPnpNegotiationProviderRequestResponseExample\",\n\t\t\t\t\t\t\tresponse: {\n\t\t\t\t\t\t\t\tbody: undefined\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t],\n\t\t\tskipAuth: true\n\t\t};\n\n\t// https://eclipse-dataspace-protocol-base.github.io/DataspaceProtocol/2025-1/#negotiations-providerpid-events-post\n\tconst pnpNegotiationEventsRoute: IRestRoute<IPnpEventRequest, IPnpContractResponse> = {\n\t\toperationId: \"pnpNegotiationEvents\",\n\t\tsummary: \"Update the state of the negotiation\",\n\t\ttag: pnpTags[0].name,\n\t\tmethod: \"POST\",\n\t\tpath: `${baseRouteName}/negotiations/:id/events`,\n\t\thandler: async (httpRequestContext, request) =>\n\t\t\tpnpNegotiationProviderEvents(httpRequestContext, componentName, request),\n\t\trequestType: {\n\t\t\ttype: nameof<IPnpEventRequest>(),\n\t\t\texamples: [\n\t\t\t\t{\n\t\t\t\t\tid: \"pnpNegotiationEventsRequestExample\",\n\t\t\t\t\trequest: {\n\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\t[HeaderTypes.Accept]: MimeTypes.JsonLd,\n\t\t\t\t\t\t\t[HeaderTypes.Authorization]: \"z3Vcuh2BP9ShC.z3Vcuh2BP9ShC.z3Vcuh2BP9ShC\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\tpathParams: {\n\t\t\t\t\t\t\tid: \"urn:contract-negotiation:00aa11bb.......ffff\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\t\"@context\": [DataspaceProtocolContexts.ContextRoot],\n\t\t\t\t\t\t\t\"@type\": ContractNegotiationTypes.ContractRequestMessage,\n\t\t\t\t\t\t\tproviderPid: \"urn:contract-negotiation:00aa11bb.......ffff\",\n\t\t\t\t\t\t\tconsumerPid: \"urn:contract-negotiation:22aa11bb.......ffff\",\n\t\t\t\t\t\t\tevent: ContractNegotiationEventType.ACCEPTED\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\tresponseType: [\n\t\t\t{\n\t\t\t\ttype: nameof<IPnpContractResponse>(),\n\t\t\t\texamples: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"IPnpNegotiationRequestResponseExample\",\n\t\t\t\t\t\tresponse: {\n\t\t\t\t\t\t\tbody: undefined\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t}\n\t\t],\n\t\tskipAuth: true\n\t};\n\n\t// https://eclipse-dataspace-protocol-base.github.io/DataspaceProtocol/2025-1/#negotiations-providerpid-agreement-verification-post\n\tconst pnpNegotiationAgreementVerificationRoute: IRestRoute<\n\t\tIPnpAgreementVerificationRequest,\n\t\tIPnpContractResponse\n\t> = {\n\t\toperationId: \"pnpNegotiationAgreementVerification\",\n\t\tsummary: \"Set the agreement to verified\",\n\t\ttag: pnpTags[0].name,\n\t\tmethod: \"POST\",\n\t\tpath: `${baseRouteName}/negotiations/:id/agreement/verification`,\n\t\thandler: async (httpRequestContext, request) =>\n\t\t\tpnpNegotiationAgreementVerification(httpRequestContext, componentName, request),\n\t\trequestType: {\n\t\t\ttype: nameof<IPnpAgreementVerificationRequest>(),\n\t\t\texamples: [\n\t\t\t\t{\n\t\t\t\t\tid: \"pnpNegotiationAgreementVerificationRequestExample\",\n\t\t\t\t\trequest: {\n\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\t[HeaderTypes.Accept]: MimeTypes.JsonLd,\n\t\t\t\t\t\t\t[HeaderTypes.Authorization]: \"z3Vcuh2BP9ShC.z3Vcuh2BP9ShC.z3Vcuh2BP9ShC\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\tpathParams: {\n\t\t\t\t\t\t\tid: \"urn:contract-negotiation:00aa11bb.......ffff\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\t\"@context\": [DataspaceProtocolContexts.ContextRoot],\n\t\t\t\t\t\t\t\"@type\": ContractNegotiationTypes.ContractRequestMessage,\n\t\t\t\t\t\t\tproviderPid: \"urn:contract-negotiation:00aa11bb.......ffff\",\n\t\t\t\t\t\t\tconsumerPid: \"urn:contract-negotiation:22aa11bb.......ffff\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\tresponseType: [\n\t\t\t{\n\t\t\t\ttype: nameof<IPnpContractResponse>(),\n\t\t\t\texamples: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"IPnpNegotiationAgreementVerificationResponseExample\",\n\t\t\t\t\t\tresponse: {\n\t\t\t\t\t\t\tbody: undefined\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t}\n\t\t],\n\t\tskipAuth: true\n\t};\n\n\t// https://eclipse-dataspace-protocol-base.github.io/DataspaceProtocol/2025-1/#negotiations-providerpid-termination-post\n\tconst pnpNegotiationTerminationRoute: IRestRoute<IPnpTerminateRequest, IPnpContractResponse> = {\n\t\toperationId: \"pnpNegotiationTermination\",\n\t\tsummary: \"Set the agreement to terminated\",\n\t\ttag: pnpTags[0].name,\n\t\tmethod: \"POST\",\n\t\tpath: `${baseRouteName}/negotiations/:id/termination`,\n\t\thandler: async (httpRequestContext, request) =>\n\t\t\tpnpNegotiationTermination(httpRequestContext, componentName, request),\n\t\trequestType: {\n\t\t\ttype: nameof<IPnpTerminateRequest>(),\n\t\t\texamples: [\n\t\t\t\t{\n\t\t\t\t\tid: \"pnpNegotiationTerminationRequestExample\",\n\t\t\t\t\trequest: {\n\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\t[HeaderTypes.Accept]: MimeTypes.JsonLd,\n\t\t\t\t\t\t\t[HeaderTypes.Authorization]: \"z3Vcuh2BP9ShC.z3Vcuh2BP9ShC.z3Vcuh2BP9ShC\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\tpathParams: {\n\t\t\t\t\t\t\tid: \"urn:contract-negotiation:00aa11bb.......ffff\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\t\"@context\": [DataspaceProtocolContexts.ContextRoot],\n\t\t\t\t\t\t\t\"@type\": ContractNegotiationTypes.ContractRequestMessage,\n\t\t\t\t\t\t\tproviderPid: \"urn:contract-negotiation:00aa11bb.......ffff\",\n\t\t\t\t\t\t\tconsumerPid: \"urn:contract-negotiation:22aa11bb.......ffff\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\tresponseType: [\n\t\t\t{\n\t\t\t\ttype: nameof<IPnpContractResponse>(),\n\t\t\t\texamples: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"pnpNegotiationTerminationResponseExample\",\n\t\t\t\t\t\tresponse: {\n\t\t\t\t\t\t\tbody: undefined\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t}\n\t\t],\n\t\tskipAuth: true\n\t};\n\n\t// https://eclipse-dataspace-protocol-base.github.io/DataspaceProtocol/2025-1/#negotiations-offers-post\n\tconst pnpNegotiationOfferRoute: IRestRoute<\n\t\tIPnpOfferRequest,\n\t\tIPnpContractNegotiationResponse | IPnpContractResponse\n\t> = {\n\t\toperationId: \"pnpNegotiationOffer\",\n\t\tsummary: \"Send the offer to the consumer\",\n\t\ttag: pnpTags[0].name,\n\t\tmethod: \"POST\",\n\t\tpath: `${baseRouteName}/negotiations/offers`,\n\t\thandler: async (httpRequestContext, request) =>\n\t\t\tpnpNegotiationOffer(httpRequestContext, componentName, request),\n\t\trequestType: {\n\t\t\ttype: nameof<IPnpOfferRequest>(),\n\t\t\texamples: [\n\t\t\t\t{\n\t\t\t\t\tid: \"pnpNegotiationOfferRequestExample\",\n\t\t\t\t\trequest: {\n\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\t[HeaderTypes.Accept]: MimeTypes.JsonLd,\n\t\t\t\t\t\t\t[HeaderTypes.Authorization]: \"z3Vcuh2BP9ShC.z3Vcuh2BP9ShC.z3Vcuh2BP9ShC\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\t\"@context\": [DataspaceProtocolContexts.ContextRoot],\n\t\t\t\t\t\t\t\"@type\": ContractNegotiationTypes.ContractRequestMessage,\n\t\t\t\t\t\t\tproviderPid: \"urn:contract-negotiation:00aa11bb.......ffff\",\n\t\t\t\t\t\t\tconsumerPid: \"urn:contract-negotiation:22aa11bb.......ffff\",\n\t\t\t\t\t\t\toffer: {\n\t\t\t\t\t\t\t\t\"@context\": OdrlContexts.ContextRoot,\n\t\t\t\t\t\t\t\t\"@type\": OdrlTypes.Offer,\n\t\t\t\t\t\t\t\tuid: \"urn:offer-1\",\n\t\t\t\t\t\t\t\tassigner: \"urn:provider:node:1\"\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\tresponseType: [\n\t\t\t{\n\t\t\t\ttype: nameof<IPnpContractResponse>(),\n\t\t\t\texamples: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"pnpNegotiationOfferResponseExample\",\n\t\t\t\t\t\tresponse: {\n\t\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\t\t\"@context\": [DataspaceProtocolContexts.ContextRoot],\n\t\t\t\t\t\t\t\t\"@type\": ContractNegotiationTypes.ContractRequestMessage,\n\t\t\t\t\t\t\t\tproviderPid: \"urn:contract-negotiation:00aa11bb.......ffff\",\n\t\t\t\t\t\t\t\tconsumerPid: \"urn:contract-negotiation:22aa11bb.......ffff\"\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t}\n\t\t],\n\t\tskipAuth: true\n\t};\n\n\t// https://eclipse-dataspace-protocol-base.github.io/DataspaceProtocol/2025-1/#negotiations-consumerpid-offers-post\n\tconst pnpNegotiationConsumerOfferRoute: IRestRoute<IPnpOfferRequest, IPnpContractResponse> = {\n\t\toperationId: \"pnpNegotiationConsumerOffer\",\n\t\tsummary: \"Send the offer to the consumer with existing id\",\n\t\ttag: pnpTags[0].name,\n\t\tmethod: \"POST\",\n\t\tpath: `${baseRouteName}/negotiations/:id/offers`,\n\t\thandler: async (httpRequestContext, request) =>\n\t\t\tpnpNegotiationOffer(httpRequestContext, componentName, request),\n\t\trequestType: {\n\t\t\ttype: nameof<IPnpOfferRequest>(),\n\t\t\texamples: [\n\t\t\t\t{\n\t\t\t\t\tid: \"pnpNegotiationConsumerOfferRequestExample\",\n\t\t\t\t\trequest: {\n\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\t[HeaderTypes.Accept]: MimeTypes.JsonLd,\n\t\t\t\t\t\t\t[HeaderTypes.Authorization]: \"z3Vcuh2BP9ShC.z3Vcuh2BP9ShC.z3Vcuh2BP9ShC\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\tpathParams: {\n\t\t\t\t\t\t\tid: \"urn:contract-negotiation:22aa11bb.......ffff\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\t\"@context\": [DataspaceProtocolContexts.ContextRoot],\n\t\t\t\t\t\t\t\"@type\": ContractNegotiationTypes.ContractRequestMessage,\n\t\t\t\t\t\t\tproviderPid: \"urn:contract-negotiation:00aa11bb.......ffff\",\n\t\t\t\t\t\t\tconsumerPid: \"urn:contract-negotiation:22aa11bb.......ffff\",\n\t\t\t\t\t\t\toffer: {\n\t\t\t\t\t\t\t\t\"@context\": OdrlContexts.ContextRoot,\n\t\t\t\t\t\t\t\t\"@type\": OdrlTypes.Offer,\n\t\t\t\t\t\t\t\tuid: \"urn:offer-1\",\n\t\t\t\t\t\t\t\tassigner: \"urn:provider:node:1\"\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\tresponseType: [\n\t\t\t{\n\t\t\t\ttype: nameof<IPnpContractResponse>(),\n\t\t\t\texamples: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"pnpNegotiationConsumerOfferResponseExample\",\n\t\t\t\t\t\tresponse: {\n\t\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\t\t\"@context\": [DataspaceProtocolContexts.ContextRoot],\n\t\t\t\t\t\t\t\t\"@type\": ContractNegotiationTypes.ContractNegotiation,\n\t\t\t\t\t\t\t\tproviderPid: \"urn:contract-negotiation:00aa11bb.......ffff\",\n\t\t\t\t\t\t\t\tconsumerPid: \"urn:contract-negotiation:22aa11bb.......ffff\"\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t}\n\t\t],\n\t\tskipAuth: true\n\t};\n\n\t// https://eclipse-dataspace-protocol-base.github.io/DataspaceProtocol/2025-1/#negotiations-consumerpid-agreement-post\n\tconst pnpNegotiationAgreementRoute: IRestRoute<IPnpAgreementRequest, IPnpContractResponse> = {\n\t\toperationId: \"pnpNegotiationAgreement\",\n\t\tsummary: \"Send the agreement to the consumer\",\n\t\ttag: pnpTags[0].name,\n\t\tmethod: \"POST\",\n\t\tpath: `${baseRouteName}/negotiations/:id/agreement`,\n\t\thandler: async (httpRequestContext, request) =>\n\t\t\tpnpNegotiationAgreement(httpRequestContext, componentName, request),\n\t\trequestType: {\n\t\t\ttype: nameof<IPnpAgreementRequest>(),\n\t\t\texamples: [\n\t\t\t\t{\n\t\t\t\t\tid: \"pnpNegotiationAgreementRequestExample\",\n\t\t\t\t\trequest: {\n\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\t[HeaderTypes.Accept]: MimeTypes.JsonLd,\n\t\t\t\t\t\t\t[HeaderTypes.Authorization]: \"z3Vcuh2BP9ShC.z3Vcuh2BP9ShC.z3Vcuh2BP9ShC\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\tpathParams: {\n\t\t\t\t\t\t\tid: \"urn:contract-negotiation:22aa11bb.......ffff\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\t\"@context\": [DataspaceProtocolContexts.ContextRoot],\n\t\t\t\t\t\t\t\"@type\": ContractNegotiationTypes.ContractRequestMessage,\n\t\t\t\t\t\t\tproviderPid: \"urn:contract-negotiation:00aa11bb.......ffff\",\n\t\t\t\t\t\t\tconsumerPid: \"urn:contract-negotiation:22aa11bb.......ffff\",\n\t\t\t\t\t\t\tagreement: {\n\t\t\t\t\t\t\t\t\"@context\": OdrlContexts.ContextRoot,\n\t\t\t\t\t\t\t\t\"@type\": OdrlTypes.Agreement,\n\t\t\t\t\t\t\t\tuid: \"urn:offer-1\",\n\t\t\t\t\t\t\t\tassigner: \"urn:provider:node:1\",\n\t\t\t\t\t\t\t\tassignee: \"urn:consumer:node:1\"\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\tresponseType: [\n\t\t\t{\n\t\t\t\ttype: nameof<IPnpContractResponse>(),\n\t\t\t\texamples: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"pnpNegotiationAgreementResponseExample\",\n\t\t\t\t\t\tresponse: {\n\t\t\t\t\t\t\tbody: undefined\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t}\n\t\t],\n\t\tskipAuth: true\n\t};\n\n\t// The consumer event and terminate routes are exactly the same as the pnpNegotiationEventsRoute and pnpNegotiationTerminationRoute\n\t// https://eclipse-dataspace-protocol-base.github.io/DataspaceProtocol/2025-1/#negotiations-consumerpid-events-post\n\t// https://eclipse-dataspace-protocol-base.github.io/DataspaceProtocol/2025-1/#negotiations-consumerpid-termination-post\n\n\treturn [\n\t\tpnpGetNegotiationRoute,\n\t\tpnpNegotiationRequestRoute,\n\t\tpnpNegotiationProviderRequestRoute,\n\t\tpnpNegotiationEventsRoute,\n\t\tpnpNegotiationAgreementVerificationRoute,\n\t\tpnpNegotiationTerminationRoute,\n\t\tpnpNegotiationOfferRoute,\n\t\tpnpNegotiationConsumerOfferRoute,\n\t\tpnpNegotiationAgreementRoute\n\t];\n}\n\n/**\n * Map the IDS result to an HTTP status code.\n * @param result The result to map.\n * @returns The mapped status code or undefined if no mapping was found or not an error.\n */\nfunction mapError(\n\tresult: IContractNegotiation | IContractNegotiationError | undefined\n): HttpStatusCode | undefined {\n\tif (\n\t\tresult?.[\"@type\"] === ContractNegotiationTypes.ContractNegotiationError &&\n\t\tIs.object<IContractNegotiationError>(result)\n\t) {\n\t\tif (Is.stringValue(result.code) && /notfound/i.test(result.code)) {\n\t\t\treturn HttpStatusCode.notFound;\n\t\t}\n\t\treturn HttpStatusCode.badRequest;\n\t}\n\n\treturn undefined;\n}\n\n/**\n * PNP: Get negotiation.\n * @param httpRequestContext The request context for the API.\n * @param componentName The name of the component to use in the routes.\n * @param request The request.\n * @returns The response object with additional http response properties.\n */\nexport async function pnpGetNegotiation(\n\thttpRequestContext: IHttpRequestContext,\n\tcomponentName: string,\n\trequest: IPnpNegotiationGetRequest\n): Promise<IPnpContractNegotiationResponse> {\n\tGuards.object<IPnpNegotiationGetRequest>(ROUTES_SOURCE, nameof(request), request);\n\tGuards.object<IPnpNegotiationGetRequest[\"headers\"]>(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.headers),\n\t\trequest.headers\n\t);\n\tGuards.object<IPnpNegotiationGetRequest[\"pathParams\"]>(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.pathParams),\n\t\trequest.pathParams\n\t);\n\n\tconst mimeType = request.headers[HeaderTypes.Accept] === MimeTypes.JsonLd ? \"jsonld\" : \"json\";\n\n\tconst component = ComponentFactory.get<IPolicyNegotiationPointComponent>(componentName);\n\tconst result = await component.getNegotiation(\n\t\trequest.pathParams.id,\n\t\tHeaderHelper.extractBearer(\n\t\t\thttpRequestContext.serverRequest.headers?.[HeaderTypes.Authorization]\n\t\t)\n\t);\n\n\treturn {\n\t\tstatusCode: mapError(result),\n\t\theaders: {\n\t\t\t[HeaderTypes.ContentType]: mimeType === \"json\" ? MimeTypes.Json : MimeTypes.JsonLd\n\t\t},\n\t\tbody: result\n\t};\n}\n\n/**\n * PNP: Request a negotiation.\n * @param httpRequestContext The request context for the API.\n * @param componentName The name of the component to use in the routes.\n * @param request The request.\n * @returns The response object with additional http response properties.\n */\nexport async function pnpNegotiationRequest(\n\thttpRequestContext: IHttpRequestContext,\n\tcomponentName: string,\n\trequest: IPnpNegotiateRequest\n): Promise<IPnpContractNegotiationResponse | IPnpContractResponse> {\n\tGuards.object<IPnpNegotiateRequest>(ROUTES_SOURCE, nameof(request), request);\n\tGuards.object<IPnpNegotiateRequest[\"headers\"]>(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.headers),\n\t\trequest.headers\n\t);\n\tGuards.object<IPnpNegotiateRequest[\"body\"]>(ROUTES_SOURCE, nameof(request.body), request.body);\n\n\tconst mimeType = request.headers[HeaderTypes.Accept] === MimeTypes.JsonLd ? \"jsonld\" : \"json\";\n\n\tconst component = ComponentFactory.get<IPolicyNegotiationPointComponent>(componentName);\n\tconst result = await component.requestFromConsumer(\n\t\trequest.body,\n\t\tHeaderHelper.extractBearer(\n\t\t\thttpRequestContext.serverRequest.headers?.[HeaderTypes.Authorization]\n\t\t)\n\t);\n\n\tconst isUpdate = Is.stringValue(request.pathParams?.id);\n\n\tif (isUpdate) {\n\t\treturn {\n\t\t\tstatusCode: mapError(result),\n\t\t\theaders: {\n\t\t\t\t[HeaderTypes.ContentType]: mimeType === \"json\" ? MimeTypes.Json : MimeTypes.JsonLd\n\t\t\t}\n\t\t};\n\t}\n\treturn {\n\t\tstatusCode: mapError(result) ?? HttpStatusCode.created,\n\t\theaders: {\n\t\t\t[HeaderTypes.ContentType]: mimeType === \"json\" ? MimeTypes.Json : MimeTypes.JsonLd\n\t\t},\n\t\tbody: result\n\t};\n}\n\n/**\n * PNP: Update state of negotiation.\n * @param httpRequestContext The request context for the API.\n * @param componentName The name of the component to use in the routes.\n * @param request The request.\n * @returns The response object with additional http response properties.\n */\nexport async function pnpNegotiationProviderEvents(\n\thttpRequestContext: IHttpRequestContext,\n\tcomponentName: string,\n\trequest: IPnpEventRequest\n): Promise<IPnpContractResponse> {\n\tGuards.object<IPnpEventRequest>(ROUTES_SOURCE, nameof(request), request);\n\tGuards.object<IPnpEventRequest[\"headers\"]>(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.headers),\n\t\trequest.headers\n\t);\n\tGuards.object<IPnpEventRequest[\"pathParams\"]>(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.pathParams),\n\t\trequest.pathParams\n\t);\n\tGuards.object<IPnpEventRequest[\"body\"]>(ROUTES_SOURCE, nameof(request.body), request.body);\n\n\tconst mimeType = request.headers[HeaderTypes.Accept] === MimeTypes.JsonLd ? \"jsonld\" : \"json\";\n\n\tconst component = ComponentFactory.get<IPolicyNegotiationPointComponent>(componentName);\n\tconst result = await component.event(\n\t\trequest.body,\n\t\trequest.pathParams.id === request.body.providerPid ? \"provider\" : \"consumer\",\n\t\tHeaderHelper.extractBearer(\n\t\t\thttpRequestContext.serverRequest.headers?.[HeaderTypes.Authorization]\n\t\t)\n\t);\n\n\treturn {\n\t\tstatusCode: mapError(result),\n\t\theaders: {\n\t\t\t[HeaderTypes.ContentType]: mimeType === \"json\" ? MimeTypes.Json : MimeTypes.JsonLd\n\t\t},\n\t\tbody: result\n\t};\n}\n\n/**\n * PNP: Set the agreement to verified.\n * @param httpRequestContext The request context for the API.\n * @param componentName The name of the component to use in the routes.\n * @param request The request.\n * @returns The response object with additional http response properties.\n */\nexport async function pnpNegotiationAgreementVerification(\n\thttpRequestContext: IHttpRequestContext,\n\tcomponentName: string,\n\trequest: IPnpAgreementVerificationRequest\n): Promise<IPnpContractResponse> {\n\tGuards.object<IPnpAgreementVerificationRequest>(ROUTES_SOURCE, nameof(request), request);\n\tGuards.object<IPnpAgreementVerificationRequest[\"headers\"]>(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.headers),\n\t\trequest.headers\n\t);\n\tGuards.object<IPnpAgreementVerificationRequest[\"pathParams\"]>(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.pathParams),\n\t\trequest.pathParams\n\t);\n\tGuards.object<IPnpAgreementVerificationRequest[\"body\"]>(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.body),\n\t\trequest.body\n\t);\n\n\tconst mimeType = request.headers[HeaderTypes.Accept] === MimeTypes.JsonLd ? \"jsonld\" : \"json\";\n\n\tconst component = ComponentFactory.get<IPolicyNegotiationPointComponent>(componentName);\n\tconst result = await component.agreementVerificationFromConsumer(\n\t\trequest.body,\n\t\tHeaderHelper.extractBearer(\n\t\t\thttpRequestContext.serverRequest.headers?.[HeaderTypes.Authorization]\n\t\t)\n\t);\n\n\treturn {\n\t\tstatusCode: mapError(result),\n\t\theaders: {\n\t\t\t[HeaderTypes.ContentType]: mimeType === \"json\" ? MimeTypes.Json : MimeTypes.JsonLd\n\t\t},\n\t\tbody: result\n\t};\n}\n\n/**\n * PNP: Terminate the provider negotiation.\n * @param httpRequestContext The request context for the API.\n * @param componentName The name of the component to use in the routes.\n * @param request The request.\n * @returns The response object with additional http response properties.\n */\nexport async function pnpNegotiationTermination(\n\thttpRequestContext: IHttpRequestContext,\n\tcomponentName: string,\n\trequest: IPnpTerminateRequest\n): Promise<IPnpContractResponse> {\n\tGuards.object<IPnpTerminateRequest>(ROUTES_SOURCE, nameof(request), request);\n\tGuards.object<IPnpTerminateRequest[\"headers\"]>(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.headers),\n\t\trequest.headers\n\t);\n\tGuards.object<IPnpTerminateRequest[\"pathParams\"]>(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.pathParams),\n\t\trequest.pathParams\n\t);\n\tGuards.object<IPnpTerminateRequest[\"body\"]>(ROUTES_SOURCE, nameof(request.body), request.body);\n\n\tconst mimeType = request.headers[HeaderTypes.Accept] === MimeTypes.JsonLd ? \"jsonld\" : \"json\";\n\n\tconst component = ComponentFactory.get<IPolicyNegotiationPointComponent>(componentName);\n\tconst result = await component.terminate(\n\t\trequest.body,\n\t\trequest.pathParams.id === request.body.providerPid ? \"provider\" : \"consumer\",\n\t\tHeaderHelper.extractBearer(\n\t\t\thttpRequestContext.serverRequest.headers?.[HeaderTypes.Authorization]\n\t\t)\n\t);\n\n\treturn {\n\t\tstatusCode: mapError(result),\n\t\theaders: {\n\t\t\t[HeaderTypes.ContentType]: mimeType === \"json\" ? MimeTypes.Json : MimeTypes.JsonLd\n\t\t},\n\t\tbody: result\n\t};\n}\n\n/**\n * PNP: Send the offer to the consumer.\n * @param httpRequestContext The request context for the API.\n * @param componentName The name of the component to use in the routes.\n * @param request The request.\n * @returns The response object with additional http response properties.\n */\nexport async function pnpNegotiationOffer(\n\thttpRequestContext: IHttpRequestContext,\n\tcomponentName: string,\n\trequest: IPnpOfferRequest\n): Promise<IPnpContractNegotiationResponse | IPnpContractResponse> {\n\tGuards.object<IPnpOfferRequest>(ROUTES_SOURCE, nameof(request), request);\n\tGuards.object<IPnpOfferRequest[\"headers\"]>(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.headers),\n\t\trequest.headers\n\t);\n\tGuards.object<IPnpOfferRequest[\"body\"]>(ROUTES_SOURCE, nameof(request.body), request.body);\n\n\tconst mimeType = request.headers[HeaderTypes.Accept] === MimeTypes.JsonLd ? \"jsonld\" : \"json\";\n\n\tconst component = ComponentFactory.get<IPolicyNegotiationPointComponent>(componentName);\n\tconst result = await component.offerFromProvider(\n\t\trequest.body,\n\t\tHeaderHelper.extractBearer(\n\t\t\thttpRequestContext.serverRequest.headers?.[HeaderTypes.Authorization]\n\t\t)\n\t);\n\n\tconst isUpdate = Is.stringValue(request.pathParams?.id);\n\n\tif (isUpdate) {\n\t\treturn {\n\t\t\tstatusCode: mapError(result),\n\t\t\theaders: {\n\t\t\t\t[HeaderTypes.ContentType]: mimeType === \"json\" ? MimeTypes.Json : MimeTypes.JsonLd\n\t\t\t}\n\t\t};\n\t}\n\treturn {\n\t\tstatusCode: mapError(result) ?? HttpStatusCode.created,\n\t\theaders: {\n\t\t\t[HeaderTypes.ContentType]: mimeType === \"json\" ? MimeTypes.Json : MimeTypes.JsonLd\n\t\t},\n\t\tbody: result\n\t};\n}\n\n/**\n * PNP: Send the agreement to the consumer.\n * @param httpRequestContext The request context for the API.\n * @param componentName The name of the component to use in the routes.\n * @param request The request.\n * @returns The response object with additional http response properties.\n */\nexport async function pnpNegotiationAgreement(\n\thttpRequestContext: IHttpRequestContext,\n\tcomponentName: string,\n\trequest: IPnpAgreementRequest\n): Promise<IPnpContractResponse> {\n\tGuards.object<IPnpAgreementRequest>(ROUTES_SOURCE, nameof(request), request);\n\tGuards.object<IPnpAgreementRequest[\"headers\"]>(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.headers),\n\t\trequest.headers\n\t);\n\tGuards.object<IPnpAgreementRequest[\"body\"]>(ROUTES_SOURCE, nameof(request.body), request.body);\n\tGuards.object<IPnpAgreementRequest[\"pathParams\"]>(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.body),\n\t\trequest.body\n\t);\n\n\tconst mimeType = request.headers[HeaderTypes.Accept] === MimeTypes.JsonLd ? \"jsonld\" : \"json\";\n\n\tconst component = ComponentFactory.get<IPolicyNegotiationPointComponent>(componentName);\n\tconst result = await component.agreementFromProvider(\n\t\trequest.body,\n\t\tHeaderHelper.extractBearer(\n\t\t\thttpRequestContext.serverRequest.headers?.[HeaderTypes.Authorization]\n\t\t)\n\t);\n\n\treturn {\n\t\tstatusCode: mapError(result),\n\t\theaders: {\n\t\t\t[HeaderTypes.ContentType]: mimeType === \"json\" ? MimeTypes.Json : MimeTypes.JsonLd\n\t\t},\n\t\tbody: result\n\t};\n}\n"]}
package/docs/changelog.md CHANGED
@@ -1,5 +1,49 @@
1
1
  # @twin.org/rights-management-pap-service - Changelog
2
2
 
3
+ ## [0.0.3-next.4](https://github.com/twinfoundation/rights-management/compare/rights-management-service-v0.0.3-next.3...rights-management-service-v0.0.3-next.4) (2025-12-04)
4
+
5
+
6
+ ### Features
7
+
8
+ * add factory pattern ([d26b4c0](https://github.com/twinfoundation/rights-management/commit/d26b4c08a2f3ba5758df66a1c48203b8d8e3638e))
9
+
10
+
11
+ ### Dependencies
12
+
13
+ * The following workspace dependencies were updated
14
+ * dependencies
15
+ * @twin.org/rights-management-models bumped from 0.0.3-next.3 to 0.0.3-next.4
16
+ * devDependencies
17
+ * @twin.org/rights-management-pap-service bumped from 0.0.3-next.3 to 0.0.3-next.4
18
+ * @twin.org/rights-management-pdp-service bumped from 0.0.3-next.3 to 0.0.3-next.4
19
+ * @twin.org/rights-management-pep-service bumped from 0.0.3-next.3 to 0.0.3-next.4
20
+ * @twin.org/rights-management-pip-service bumped from 0.0.3-next.3 to 0.0.3-next.4
21
+ * @twin.org/rights-management-pmp-service bumped from 0.0.3-next.3 to 0.0.3-next.4
22
+ * @twin.org/rights-management-pnp-service bumped from 0.0.3-next.3 to 0.0.3-next.4
23
+ * @twin.org/rights-management-pxp-service bumped from 0.0.3-next.3 to 0.0.3-next.4
24
+
25
+ ## [0.0.3-next.3](https://github.com/twinfoundation/rights-management/compare/rights-management-service-v0.0.3-next.2...rights-management-service-v0.0.3-next.3) (2025-11-28)
26
+
27
+
28
+ ### Features
29
+
30
+ * update dataspace standards packages ([dbd5bf6](https://github.com/twinfoundation/rights-management/commit/dbd5bf62403a97c758ee2320d9cac378c568165b))
31
+
32
+
33
+ ### Dependencies
34
+
35
+ * The following workspace dependencies were updated
36
+ * dependencies
37
+ * @twin.org/rights-management-models bumped from 0.0.3-next.2 to 0.0.3-next.3
38
+ * devDependencies
39
+ * @twin.org/rights-management-pap-service bumped from 0.0.3-next.2 to 0.0.3-next.3
40
+ * @twin.org/rights-management-pdp-service bumped from 0.0.3-next.2 to 0.0.3-next.3
41
+ * @twin.org/rights-management-pep-service bumped from 0.0.3-next.2 to 0.0.3-next.3
42
+ * @twin.org/rights-management-pip-service bumped from 0.0.3-next.2 to 0.0.3-next.3
43
+ * @twin.org/rights-management-pmp-service bumped from 0.0.3-next.2 to 0.0.3-next.3
44
+ * @twin.org/rights-management-pnp-service bumped from 0.0.3-next.2 to 0.0.3-next.3
45
+ * @twin.org/rights-management-pxp-service bumped from 0.0.3-next.2 to 0.0.3-next.3
46
+
3
47
  ## [0.0.3-next.2](https://github.com/twinfoundation/rights-management/compare/rights-management-service-v0.0.3-next.1...rights-management-service-v0.0.3-next.2) (2025-11-20)
4
48
 
5
49
 
@@ -635,7 +635,9 @@
635
635
  "examples": {
636
636
  "pnpGetNegotiationResponseExample": {
637
637
  "value": {
638
- "@context": "https://w3id.org/dspace/2025/1/context.json",
638
+ "@context": [
639
+ "https://w3id.org/dspace/2025/1/context.json"
640
+ ],
639
641
  "@type": "ContractNegotiation",
640
642
  "providerPid": "urn:contract-negotiation:002aa11bb.......ffff",
641
643
  "consumerPid": "urn:contract-negotiation:22aa11bb.......ffff",
@@ -728,7 +730,9 @@
728
730
  "examples": {
729
731
  "pnpNegotiationRequestExample": {
730
732
  "value": {
731
- "@context": "https://w3id.org/dspace/2025/1/context.json",
733
+ "@context": [
734
+ "https://w3id.org/dspace/2025/1/context.json"
735
+ ],
732
736
  "@type": "ContractRequestMessage",
733
737
  "consumerPid": "urn:contract-negotiation:22aa11bb.......ffff",
734
738
  "offer": {
@@ -754,7 +758,9 @@
754
758
  "examples": {
755
759
  "IPnpNegotiationRequestResponseExample": {
756
760
  "value": {
757
- "@context": "https://w3id.org/dspace/2025/1/context.json",
761
+ "@context": [
762
+ "https://w3id.org/dspace/2025/1/context.json"
763
+ ],
758
764
  "@type": "ContractNegotiation",
759
765
  "providerPid": "urn:contract-negotiation:00aa11bb.......ffff",
760
766
  "consumerPid": "urn:contract-negotiation:22aa11bb.......ffff",
@@ -838,7 +844,9 @@
838
844
  "examples": {
839
845
  "pnpNegotiationProviderRequestExample": {
840
846
  "value": {
841
- "@context": "https://w3id.org/dspace/2025/1/context.json",
847
+ "@context": [
848
+ "https://w3id.org/dspace/2025/1/context.json"
849
+ ],
842
850
  "@type": "ContractRequestMessage",
843
851
  "consumerPid": "urn:contract-negotiation:22aa11bb.......ffff",
844
852
  "offer": {
@@ -957,7 +965,9 @@
957
965
  "examples": {
958
966
  "pnpNegotiationEventsRequestExample": {
959
967
  "value": {
960
- "@context": "https://w3id.org/dspace/2025/1/context.json",
968
+ "@context": [
969
+ "https://w3id.org/dspace/2025/1/context.json"
970
+ ],
961
971
  "@type": "ContractRequestMessage",
962
972
  "providerPid": "urn:contract-negotiation:00aa11bb.......ffff",
963
973
  "consumerPid": "urn:contract-negotiation:22aa11bb.......ffff",
@@ -1072,7 +1082,9 @@
1072
1082
  "examples": {
1073
1083
  "pnpNegotiationAgreementVerificationRequestExample": {
1074
1084
  "value": {
1075
- "@context": "https://w3id.org/dspace/2025/1/context.json",
1085
+ "@context": [
1086
+ "https://w3id.org/dspace/2025/1/context.json"
1087
+ ],
1076
1088
  "@type": "ContractRequestMessage",
1077
1089
  "providerPid": "urn:contract-negotiation:00aa11bb.......ffff",
1078
1090
  "consumerPid": "urn:contract-negotiation:22aa11bb.......ffff"
@@ -1186,7 +1198,9 @@
1186
1198
  "examples": {
1187
1199
  "pnpNegotiationTerminationRequestExample": {
1188
1200
  "value": {
1189
- "@context": "https://w3id.org/dspace/2025/1/context.json",
1201
+ "@context": [
1202
+ "https://w3id.org/dspace/2025/1/context.json"
1203
+ ],
1190
1204
  "@type": "ContractRequestMessage",
1191
1205
  "providerPid": "urn:contract-negotiation:00aa11bb.......ffff",
1192
1206
  "consumerPid": "urn:contract-negotiation:22aa11bb.......ffff"
@@ -1289,7 +1303,9 @@
1289
1303
  "examples": {
1290
1304
  "pnpNegotiationOfferRequestExample": {
1291
1305
  "value": {
1292
- "@context": "https://w3id.org/dspace/2025/1/context.json",
1306
+ "@context": [
1307
+ "https://w3id.org/dspace/2025/1/context.json"
1308
+ ],
1293
1309
  "@type": "ContractRequestMessage",
1294
1310
  "providerPid": "urn:contract-negotiation:00aa11bb.......ffff",
1295
1311
  "consumerPid": "urn:contract-negotiation:22aa11bb.......ffff",
@@ -1316,7 +1332,9 @@
1316
1332
  "examples": {
1317
1333
  "pnpNegotiationOfferResponseExample": {
1318
1334
  "value": {
1319
- "@context": "https://w3id.org/dspace/2025/1/context.json",
1335
+ "@context": [
1336
+ "https://w3id.org/dspace/2025/1/context.json"
1337
+ ],
1320
1338
  "@type": "ContractRequestMessage",
1321
1339
  "providerPid": "urn:contract-negotiation:00aa11bb.......ffff",
1322
1340
  "consumerPid": "urn:contract-negotiation:22aa11bb.......ffff"
@@ -1399,7 +1417,9 @@
1399
1417
  "examples": {
1400
1418
  "pnpNegotiationConsumerOfferRequestExample": {
1401
1419
  "value": {
1402
- "@context": "https://w3id.org/dspace/2025/1/context.json",
1420
+ "@context": [
1421
+ "https://w3id.org/dspace/2025/1/context.json"
1422
+ ],
1403
1423
  "@type": "ContractRequestMessage",
1404
1424
  "providerPid": "urn:contract-negotiation:00aa11bb.......ffff",
1405
1425
  "consumerPid": "urn:contract-negotiation:22aa11bb.......ffff",
@@ -1426,7 +1446,9 @@
1426
1446
  "examples": {
1427
1447
  "pnpNegotiationConsumerOfferResponseExample": {
1428
1448
  "value": {
1429
- "@context": "https://w3id.org/dspace/2025/1/context.json",
1449
+ "@context": [
1450
+ "https://w3id.org/dspace/2025/1/context.json"
1451
+ ],
1430
1452
  "@type": "ContractNegotiation",
1431
1453
  "providerPid": "urn:contract-negotiation:00aa11bb.......ffff",
1432
1454
  "consumerPid": "urn:contract-negotiation:22aa11bb.......ffff"
@@ -1529,7 +1551,9 @@
1529
1551
  "examples": {
1530
1552
  "pnpNegotiationAgreementRequestExample": {
1531
1553
  "value": {
1532
- "@context": "https://w3id.org/dspace/2025/1/context.json",
1554
+ "@context": [
1555
+ "https://w3id.org/dspace/2025/1/context.json"
1556
+ ],
1533
1557
  "@type": "ContractRequestMessage",
1534
1558
  "providerPid": "urn:contract-negotiation:00aa11bb.......ffff",
1535
1559
  "consumerPid": "urn:contract-negotiation:22aa11bb.......ffff",
@@ -2693,8 +2717,13 @@
2693
2717
  "DataspaceProtocolContextType": {
2694
2718
  "anyOf": [
2695
2719
  {
2696
- "type": "string",
2697
- "const": "https://w3id.org/dspace/2025/1/context.json"
2720
+ "type": "array",
2721
+ "items": {
2722
+ "type": "string",
2723
+ "const": "https://w3id.org/dspace/2025/1/context.json"
2724
+ },
2725
+ "minItems": 1,
2726
+ "maxItems": 1
2698
2727
  },
2699
2728
  {
2700
2729
  "type": "array",
@@ -2729,7 +2758,7 @@
2729
2758
  }
2730
2759
  }
2731
2760
  ],
2732
- "description": "The Dataspace Protocol Protocol JSON-LD context type."
2761
+ "description": "The Dataspace Protocol JSON-LD context type."
2733
2762
  },
2734
2763
  "EntityCondition<JsonLdNodeObject>": {
2735
2764
  "anyOf": [
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@twin.org/rights-management-service",
3
- "version": "0.0.3-next.2",
3
+ "version": "0.0.3-next.4",
4
4
  "description": "Rights Management service implementation and REST endpoint definitions",
5
5
  "repository": {
6
6
  "type": "git",
@@ -23,9 +23,8 @@
23
23
  "@twin.org/core": "next",
24
24
  "@twin.org/data-json-ld": "next",
25
25
  "@twin.org/entity": "next",
26
- "@twin.org/identity-authentication": "next",
27
26
  "@twin.org/nameof": "next",
28
- "@twin.org/rights-management-models": "0.0.3-next.2",
27
+ "@twin.org/rights-management-models": "0.0.3-next.4",
29
28
  "@twin.org/standards-dataspace-protocol": "next",
30
29
  "@twin.org/standards-w3c-did": "next",
31
30
  "@twin.org/standards-w3c-odrl": "next",