@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.
- package/dist/es/dataAccessPointRoutes.js +11 -37
- package/dist/es/dataAccessPointRoutes.js.map +1 -1
- package/dist/es/policyNegotiationPointRoutes.js +29 -73
- package/dist/es/policyNegotiationPointRoutes.js.map +1 -1
- package/docs/changelog.md +44 -0
- package/docs/open-api/spec.json +44 -15
- package/package.json +2 -3
|
@@ -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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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":"AAGA,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAC;AAc9D,OAAO,EACN,4BAA4B,EAC5B,4BAA4B,EAC5B,wBAAwB,EACxB,yBAAyB,EAGzB,MAAM,wCAAwC,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAErF;;GAEG;AACH,MAAM,aAAa,GAAG,8BAA8B,CAAC;AAErD;;GAEG;AACH,MAAM,CAAC,MAAM,OAAO,GAAW;IAC9B;QACC,IAAI,EAAE,0BAA0B;QAChC,WAAW,EAAE,sEAAsE;KACnF;CACD,CAAC;AAEF;;;;;GAKG;AACH,MAAM,UAAU,wCAAwC,CACvD,aAAqB,EACrB,aAAqB;IAErB,IAAI;IACJ,MAAM,sBAAsB,GAGxB;QACH,WAAW,EAAE,mBAAmB;QAChC,OAAO,EAAE,mBAAmB;QAC5B,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI;QACpB,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,GAAG,aAAa,mBAAmB;QACzC,OAAO,EAAE,KAAK,EAAE,kBAAkB,EAAE,OAAO,EAAE,EAAE,CAC9C,iBAAiB,CAAC,kBAAkB,EAAE,aAAa,EAAE,OAAO,CAAC;QAC9D,WAAW,EAAE;YACZ,IAAI,6BAAqC;YACzC,QAAQ,EAAE;gBACT;oBACC,EAAE,EAAE,iCAAiC;oBACrC,OAAO,EAAE;wBACR,OAAO,EAAE;4BACR,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC,MAAM;4BACtC,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,2CAA2C;yBACxE;wBACD,UAAU,EAAE;4BACX,EAAE,EAAE,8CAA8C;yBAClD;qBACD;iBACD;aACD;SACD;QACD,YAAY,EAAE;YACb;gBACC,IAAI,mCAA2C;gBAC/C,QAAQ,EAAE;oBACT;wBACC,EAAE,EAAE,kCAAkC;wBACtC,QAAQ,EAAE;4BACT,IAAI,EAAE;gCACL,UAAU,EAAE,CAAC,yBAAyB,CAAC,WAAW,CAAC;gCACnD,OAAO,EAAE,wBAAwB,CAAC,mBAAmB;gCACrD,WAAW,EAAE,+CAA+C;gCAC5D,WAAW,EAAE,8CAA8C;gCAC3D,KAAK,EAAE,4BAA4B,CAAC,SAAS;6BAC7C;yBACD;qBACD;iBACD;aACD;SACD;QACD,QAAQ,EAAE,IAAI;KACd,CAAC;IAEF,oHAAoH;IACpH,MAAM,0BAA0B,GAG5B;QACH,WAAW,EAAE,uBAAuB;QACpC,OAAO,EAAE,oBAAoB;QAC7B,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI;QACpB,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,GAAG,aAAa,uBAAuB;QAC7C,OAAO,EAAE,KAAK,EAAE,kBAAkB,EAAE,OAAO,EAAE,EAAE,CAC9C,qBAAqB,CAAC,kBAAkB,EAAE,aAAa,EAAE,OAAO,CAAC;QAClE,WAAW,EAAE;YACZ,IAAI,wBAAgC;YACpC,QAAQ,EAAE;gBACT;oBACC,EAAE,EAAE,8BAA8B;oBAClC,OAAO,EAAE;wBACR,OAAO,EAAE;4BACR,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC,MAAM;4BACtC,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,2CAA2C;yBACxE;wBACD,IAAI,EAAE;4BACL,UAAU,EAAE,CAAC,yBAAyB,CAAC,WAAW,CAAC;4BACnD,OAAO,EAAE,wBAAwB,CAAC,sBAAsB;4BACxD,WAAW,EAAE,8CAA8C;4BAC3D,KAAK,EAAE;gCACN,UAAU,EAAE,YAAY,CAAC,WAAW;gCACpC,OAAO,EAAE,SAAS,CAAC,KAAK;gCACxB,GAAG,EAAE,aAAa;gCAClB,QAAQ,EAAE,qBAAqB;6BAC/B;yBACD;qBACD;iBACD;aACD;SACD;QACD,YAAY,EAAE;YACb;gBACC,IAAI,mCAA2C;gBAC/C,QAAQ,EAAE;oBACT;wBACC,EAAE,EAAE,uCAAuC;wBAC3C,QAAQ,EAAE;4BACT,IAAI,EAAE;gCACL,UAAU,EAAE,CAAC,yBAAyB,CAAC,WAAW,CAAC;gCACnD,OAAO,EAAE,wBAAwB,CAAC,mBAAmB;gCACrD,WAAW,EAAE,8CAA8C;gCAC3D,WAAW,EAAE,8CAA8C;gCAC3D,KAAK,EAAE,4BAA4B,CAAC,SAAS;6BAC7C;yBACD;qBACD;iBACD;aACD;SACD;QACD,QAAQ,EAAE,IAAI;KACd,CAAC;IAEF,oHAAoH;IACpH,MAAM,kCAAkC,GACvC;QACC,WAAW,EAAE,+BAA+B;QAC5C,OAAO,EAAE,iDAAiD;QAC1D,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI;QACpB,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,GAAG,aAAa,2BAA2B;QACjD,OAAO,EAAE,KAAK,EAAE,kBAAkB,EAAE,OAAO,EAAE,EAAE,CAC9C,qBAAqB,CAAC,kBAAkB,EAAE,aAAa,EAAE,OAAO,CAAC;QAClE,WAAW,EAAE;YACZ,IAAI,wBAAgC;YACpC,QAAQ,EAAE;gBACT;oBACC,EAAE,EAAE,sCAAsC;oBAC1C,OAAO,EAAE;wBACR,OAAO,EAAE;4BACR,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC,MAAM;4BACtC,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,2CAA2C;yBACxE;wBACD,UAAU,EAAE;4BACX,EAAE,EAAE,8CAA8C;yBAClD;wBACD,IAAI,EAAE;4BACL,UAAU,EAAE,CAAC,yBAAyB,CAAC,WAAW,CAAC;4BACnD,OAAO,EAAE,wBAAwB,CAAC,sBAAsB;4BACxD,WAAW,EAAE,8CAA8C;4BAC3D,KAAK,EAAE;gCACN,UAAU,EAAE,YAAY,CAAC,WAAW;gCACpC,OAAO,EAAE,SAAS,CAAC,KAAK;gCACxB,GAAG,EAAE,aAAa;gCAClB,QAAQ,EAAE,qBAAqB;6BAC/B;yBACD;qBACD;iBACD;aACD;SACD;QACD,YAAY,EAAE;YACb;gBACC,IAAI,wBAAgC;gBACpC,QAAQ,EAAE;oBACT;wBACC,EAAE,EAAE,+CAA+C;wBACnD,QAAQ,EAAE;4BACT,IAAI,EAAE,SAAS;yBACf;qBACD;iBACD;aACD;SACD;QACD,QAAQ,EAAE,IAAI;KACd,CAAC;IAEH,mHAAmH;IACnH,MAAM,yBAAyB,GAAuD;QACrF,WAAW,EAAE,sBAAsB;QACnC,OAAO,EAAE,qCAAqC;QAC9C,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI;QACpB,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,GAAG,aAAa,0BAA0B;QAChD,OAAO,EAAE,KAAK,EAAE,kBAAkB,EAAE,OAAO,EAAE,EAAE,CAC9C,4BAA4B,CAAC,kBAAkB,EAAE,aAAa,EAAE,OAAO,CAAC;QACzE,WAAW,EAAE;YACZ,IAAI,oBAA4B;YAChC,QAAQ,EAAE;gBACT;oBACC,EAAE,EAAE,oCAAoC;oBACxC,OAAO,EAAE;wBACR,OAAO,EAAE;4BACR,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC,MAAM;4BACtC,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,2CAA2C;yBACxE;wBACD,UAAU,EAAE;4BACX,EAAE,EAAE,8CAA8C;yBAClD;wBACD,IAAI,EAAE;4BACL,UAAU,EAAE,CAAC,yBAAyB,CAAC,WAAW,CAAC;4BACnD,OAAO,EAAE,wBAAwB,CAAC,sBAAsB;4BACxD,WAAW,EAAE,8CAA8C;4BAC3D,WAAW,EAAE,8CAA8C;4BAC3D,KAAK,EAAE,4BAA4B,CAAC,QAAQ;yBAC5C;qBACD;iBACD;aACD;SACD;QACD,YAAY,EAAE;YACb;gBACC,IAAI,wBAAgC;gBACpC,QAAQ,EAAE;oBACT;wBACC,EAAE,EAAE,uCAAuC;wBAC3C,QAAQ,EAAE;4BACT,IAAI,EAAE,SAAS;yBACf;qBACD;iBACD;aACD;SACD;QACD,QAAQ,EAAE,IAAI;KACd,CAAC;IAEF,mIAAmI;IACnI,MAAM,wCAAwC,GAG1C;QACH,WAAW,EAAE,qCAAqC;QAClD,OAAO,EAAE,+BAA+B;QACxC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI;QACpB,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,GAAG,aAAa,0CAA0C;QAChE,OAAO,EAAE,KAAK,EAAE,kBAAkB,EAAE,OAAO,EAAE,EAAE,CAC9C,mCAAmC,CAAC,kBAAkB,EAAE,aAAa,EAAE,OAAO,CAAC;QAChF,WAAW,EAAE;YACZ,IAAI,oCAA4C;YAChD,QAAQ,EAAE;gBACT;oBACC,EAAE,EAAE,mDAAmD;oBACvD,OAAO,EAAE;wBACR,OAAO,EAAE;4BACR,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC,MAAM;4BACtC,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,2CAA2C;yBACxE;wBACD,UAAU,EAAE;4BACX,EAAE,EAAE,8CAA8C;yBAClD;wBACD,IAAI,EAAE;4BACL,UAAU,EAAE,CAAC,yBAAyB,CAAC,WAAW,CAAC;4BACnD,OAAO,EAAE,wBAAwB,CAAC,sBAAsB;4BACxD,WAAW,EAAE,8CAA8C;4BAC3D,WAAW,EAAE,8CAA8C;yBAC3D;qBACD;iBACD;aACD;SACD;QACD,YAAY,EAAE;YACb;gBACC,IAAI,wBAAgC;gBACpC,QAAQ,EAAE;oBACT;wBACC,EAAE,EAAE,qDAAqD;wBACzD,QAAQ,EAAE;4BACT,IAAI,EAAE,SAAS;yBACf;qBACD;iBACD;aACD;SACD;QACD,QAAQ,EAAE,IAAI;KACd,CAAC;IAEF,wHAAwH;IACxH,MAAM,8BAA8B,GAA2D;QAC9F,WAAW,EAAE,2BAA2B;QACxC,OAAO,EAAE,iCAAiC;QAC1C,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI;QACpB,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,GAAG,aAAa,+BAA+B;QACrD,OAAO,EAAE,KAAK,EAAE,kBAAkB,EAAE,OAAO,EAAE,EAAE,CAC9C,yBAAyB,CAAC,kBAAkB,EAAE,aAAa,EAAE,OAAO,CAAC;QACtE,WAAW,EAAE;YACZ,IAAI,wBAAgC;YACpC,QAAQ,EAAE;gBACT;oBACC,EAAE,EAAE,yCAAyC;oBAC7C,OAAO,EAAE;wBACR,OAAO,EAAE;4BACR,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC,MAAM;4BACtC,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,2CAA2C;yBACxE;wBACD,UAAU,EAAE;4BACX,EAAE,EAAE,8CAA8C;yBAClD;wBACD,IAAI,EAAE;4BACL,UAAU,EAAE,CAAC,yBAAyB,CAAC,WAAW,CAAC;4BACnD,OAAO,EAAE,wBAAwB,CAAC,sBAAsB;4BACxD,WAAW,EAAE,8CAA8C;4BAC3D,WAAW,EAAE,8CAA8C;yBAC3D;qBACD;iBACD;aACD;SACD;QACD,YAAY,EAAE;YACb;gBACC,IAAI,wBAAgC;gBACpC,QAAQ,EAAE;oBACT;wBACC,EAAE,EAAE,0CAA0C;wBAC9C,QAAQ,EAAE;4BACT,IAAI,EAAE,SAAS;yBACf;qBACD;iBACD;aACD;SACD;QACD,QAAQ,EAAE,IAAI;KACd,CAAC;IAEF,uGAAuG;IACvG,MAAM,wBAAwB,GAG1B;QACH,WAAW,EAAE,qBAAqB;QAClC,OAAO,EAAE,gCAAgC;QACzC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI;QACpB,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,GAAG,aAAa,sBAAsB;QAC5C,OAAO,EAAE,KAAK,EAAE,kBAAkB,EAAE,OAAO,EAAE,EAAE,CAC9C,mBAAmB,CAAC,kBAAkB,EAAE,aAAa,EAAE,OAAO,CAAC;QAChE,WAAW,EAAE;YACZ,IAAI,oBAA4B;YAChC,QAAQ,EAAE;gBACT;oBACC,EAAE,EAAE,mCAAmC;oBACvC,OAAO,EAAE;wBACR,OAAO,EAAE;4BACR,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC,MAAM;4BACtC,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,2CAA2C;yBACxE;wBACD,IAAI,EAAE;4BACL,UAAU,EAAE,CAAC,yBAAyB,CAAC,WAAW,CAAC;4BACnD,OAAO,EAAE,wBAAwB,CAAC,sBAAsB;4BACxD,WAAW,EAAE,8CAA8C;4BAC3D,WAAW,EAAE,8CAA8C;4BAC3D,KAAK,EAAE;gCACN,UAAU,EAAE,YAAY,CAAC,WAAW;gCACpC,OAAO,EAAE,SAAS,CAAC,KAAK;gCACxB,GAAG,EAAE,aAAa;gCAClB,QAAQ,EAAE,qBAAqB;6BAC/B;yBACD;qBACD;iBACD;aACD;SACD;QACD,YAAY,EAAE;YACb;gBACC,IAAI,wBAAgC;gBACpC,QAAQ,EAAE;oBACT;wBACC,EAAE,EAAE,oCAAoC;wBACxC,QAAQ,EAAE;4BACT,IAAI,EAAE;gCACL,UAAU,EAAE,CAAC,yBAAyB,CAAC,WAAW,CAAC;gCACnD,OAAO,EAAE,wBAAwB,CAAC,sBAAsB;gCACxD,WAAW,EAAE,8CAA8C;gCAC3D,WAAW,EAAE,8CAA8C;6BAC3D;yBACD;qBACD;iBACD;aACD;SACD;QACD,QAAQ,EAAE,IAAI;KACd,CAAC;IAEF,mHAAmH;IACnH,MAAM,gCAAgC,GAAuD;QAC5F,WAAW,EAAE,6BAA6B;QAC1C,OAAO,EAAE,iDAAiD;QAC1D,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI;QACpB,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,GAAG,aAAa,0BAA0B;QAChD,OAAO,EAAE,KAAK,EAAE,kBAAkB,EAAE,OAAO,EAAE,EAAE,CAC9C,mBAAmB,CAAC,kBAAkB,EAAE,aAAa,EAAE,OAAO,CAAC;QAChE,WAAW,EAAE;YACZ,IAAI,oBAA4B;YAChC,QAAQ,EAAE;gBACT;oBACC,EAAE,EAAE,2CAA2C;oBAC/C,OAAO,EAAE;wBACR,OAAO,EAAE;4BACR,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC,MAAM;4BACtC,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,2CAA2C;yBACxE;wBACD,UAAU,EAAE;4BACX,EAAE,EAAE,8CAA8C;yBAClD;wBACD,IAAI,EAAE;4BACL,UAAU,EAAE,CAAC,yBAAyB,CAAC,WAAW,CAAC;4BACnD,OAAO,EAAE,wBAAwB,CAAC,sBAAsB;4BACxD,WAAW,EAAE,8CAA8C;4BAC3D,WAAW,EAAE,8CAA8C;4BAC3D,KAAK,EAAE;gCACN,UAAU,EAAE,YAAY,CAAC,WAAW;gCACpC,OAAO,EAAE,SAAS,CAAC,KAAK;gCACxB,GAAG,EAAE,aAAa;gCAClB,QAAQ,EAAE,qBAAqB;6BAC/B;yBACD;qBACD;iBACD;aACD;SACD;QACD,YAAY,EAAE;YACb;gBACC,IAAI,wBAAgC;gBACpC,QAAQ,EAAE;oBACT;wBACC,EAAE,EAAE,4CAA4C;wBAChD,QAAQ,EAAE;4BACT,IAAI,EAAE;gCACL,UAAU,EAAE,CAAC,yBAAyB,CAAC,WAAW,CAAC;gCACnD,OAAO,EAAE,wBAAwB,CAAC,mBAAmB;gCACrD,WAAW,EAAE,8CAA8C;gCAC3D,WAAW,EAAE,8CAA8C;6BAC3D;yBACD;qBACD;iBACD;aACD;SACD;QACD,QAAQ,EAAE,IAAI;KACd,CAAC;IAEF,sHAAsH;IACtH,MAAM,4BAA4B,GAA2D;QAC5F,WAAW,EAAE,yBAAyB;QACtC,OAAO,EAAE,oCAAoC;QAC7C,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI;QACpB,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,GAAG,aAAa,6BAA6B;QACnD,OAAO,EAAE,KAAK,EAAE,kBAAkB,EAAE,OAAO,EAAE,EAAE,CAC9C,uBAAuB,CAAC,kBAAkB,EAAE,aAAa,EAAE,OAAO,CAAC;QACpE,WAAW,EAAE;YACZ,IAAI,wBAAgC;YACpC,QAAQ,EAAE;gBACT;oBACC,EAAE,EAAE,uCAAuC;oBAC3C,OAAO,EAAE;wBACR,OAAO,EAAE;4BACR,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC,MAAM;4BACtC,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,2CAA2C;yBACxE;wBACD,UAAU,EAAE;4BACX,EAAE,EAAE,8CAA8C;yBAClD;wBACD,IAAI,EAAE;4BACL,UAAU,EAAE,CAAC,yBAAyB,CAAC,WAAW,CAAC;4BACnD,OAAO,EAAE,wBAAwB,CAAC,sBAAsB;4BACxD,WAAW,EAAE,8CAA8C;4BAC3D,WAAW,EAAE,8CAA8C;4BAC3D,SAAS,EAAE;gCACV,UAAU,EAAE,YAAY,CAAC,WAAW;gCACpC,OAAO,EAAE,SAAS,CAAC,SAAS;gCAC5B,GAAG,EAAE,aAAa;gCAClB,QAAQ,EAAE,qBAAqB;gCAC/B,QAAQ,EAAE,qBAAqB;6BAC/B;yBACD;qBACD;iBACD;aACD;SACD;QACD,YAAY,EAAE;YACb;gBACC,IAAI,wBAAgC;gBACpC,QAAQ,EAAE;oBACT;wBACC,EAAE,EAAE,wCAAwC;wBAC5C,QAAQ,EAAE;4BACT,IAAI,EAAE,SAAS;yBACf;qBACD;iBACD;aACD;SACD;QACD,QAAQ,EAAE,IAAI;KACd,CAAC;IAEF,mIAAmI;IACnI,mHAAmH;IACnH,wHAAwH;IAExH,OAAO;QACN,sBAAsB;QACtB,0BAA0B;QAC1B,kCAAkC;QAClC,yBAAyB;QACzB,wCAAwC;QACxC,8BAA8B;QAC9B,wBAAwB;QACxB,gCAAgC;QAChC,4BAA4B;KAC5B,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,SAAS,QAAQ,CAChB,MAAoE;IAEpE,IACC,MAAM,EAAE,CAAC,OAAO,CAAC,KAAK,wBAAwB,CAAC,wBAAwB;QACvE,EAAE,CAAC,MAAM,CAA4B,MAAM,CAAC,EAC3C,CAAC;QACF,IAAI,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;YAClE,OAAO,cAAc,CAAC,QAAQ,CAAC;QAChC,CAAC;QACD,OAAO,cAAc,CAAC,UAAU,CAAC;IAClC,CAAC;IAED,OAAO,SAAS,CAAC;AAClB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACtC,kBAAuC,EACvC,aAAqB,EACrB,OAAkC;IAElC,MAAM,CAAC,MAAM,CAA4B,aAAa,aAAmB,OAAO,CAAC,CAAC;IAClF,MAAM,CAAC,MAAM,CACZ,aAAa,qBAEb,OAAO,CAAC,OAAO,CACf,CAAC;IACF,MAAM,CAAC,MAAM,CACZ,aAAa,wBAEb,OAAO,CAAC,UAAU,CAClB,CAAC;IAEF,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC;IAE9F,MAAM,SAAS,GAAG,gBAAgB,CAAC,GAAG,CAAmC,aAAa,CAAC,CAAC;IACxF,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,cAAc,CAC5C,OAAO,CAAC,UAAU,CAAC,EAAE,EACrB,YAAY,CAAC,aAAa,CACzB,kBAAkB,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC,WAAW,CAAC,aAAa,CAAC,CACrE,CACD,CAAC;IAEF,OAAO;QACN,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC;QAC5B,OAAO,EAAE;YACR,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM;SAClF;QACD,IAAI,EAAE,MAAM;KACZ,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAC1C,kBAAuC,EACvC,aAAqB,EACrB,OAA6B;IAE7B,MAAM,CAAC,MAAM,CAAuB,aAAa,aAAmB,OAAO,CAAC,CAAC;IAC7E,MAAM,CAAC,MAAM,CACZ,aAAa,qBAEb,OAAO,CAAC,OAAO,CACf,CAAC;IACF,MAAM,CAAC,MAAM,CAA+B,aAAa,kBAAwB,OAAO,CAAC,IAAI,CAAC,CAAC;IAE/F,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC;IAE9F,MAAM,SAAS,GAAG,gBAAgB,CAAC,GAAG,CAAmC,aAAa,CAAC,CAAC;IACxF,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,mBAAmB,CACjD,OAAO,CAAC,IAAI,EACZ,YAAY,CAAC,aAAa,CACzB,kBAAkB,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC,WAAW,CAAC,aAAa,CAAC,CACrE,CACD,CAAC;IAEF,MAAM,QAAQ,GAAG,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IAExD,IAAI,QAAQ,EAAE,CAAC;QACd,OAAO;YACN,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC;YAC5B,OAAO,EAAE;gBACR,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM;aAClF;SACD,CAAC;IACH,CAAC;IACD,OAAO;QACN,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,cAAc,CAAC,OAAO;QACtD,OAAO,EAAE;YACR,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM;SAClF;QACD,IAAI,EAAE,MAAM;KACZ,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,4BAA4B,CACjD,kBAAuC,EACvC,aAAqB,EACrB,OAAyB;IAEzB,MAAM,CAAC,MAAM,CAAmB,aAAa,aAAmB,OAAO,CAAC,CAAC;IACzE,MAAM,CAAC,MAAM,CACZ,aAAa,qBAEb,OAAO,CAAC,OAAO,CACf,CAAC;IACF,MAAM,CAAC,MAAM,CACZ,aAAa,wBAEb,OAAO,CAAC,UAAU,CAClB,CAAC;IACF,MAAM,CAAC,MAAM,CAA2B,aAAa,kBAAwB,OAAO,CAAC,IAAI,CAAC,CAAC;IAE3F,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC;IAE9F,MAAM,SAAS,GAAG,gBAAgB,CAAC,GAAG,CAAmC,aAAa,CAAC,CAAC;IACxF,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,KAAK,CACnC,OAAO,CAAC,IAAI,EACZ,OAAO,CAAC,UAAU,CAAC,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,EAC5E,YAAY,CAAC,aAAa,CACzB,kBAAkB,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC,WAAW,CAAC,aAAa,CAAC,CACrE,CACD,CAAC;IAEF,OAAO;QACN,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC;QAC5B,OAAO,EAAE;YACR,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM;SAClF;QACD,IAAI,EAAE,MAAM;KACZ,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,mCAAmC,CACxD,kBAAuC,EACvC,aAAqB,EACrB,OAAyC;IAEzC,MAAM,CAAC,MAAM,CAAmC,aAAa,aAAmB,OAAO,CAAC,CAAC;IACzF,MAAM,CAAC,MAAM,CACZ,aAAa,qBAEb,OAAO,CAAC,OAAO,CACf,CAAC;IACF,MAAM,CAAC,MAAM,CACZ,aAAa,wBAEb,OAAO,CAAC,UAAU,CAClB,CAAC;IACF,MAAM,CAAC,MAAM,CACZ,aAAa,kBAEb,OAAO,CAAC,IAAI,CACZ,CAAC;IAEF,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC;IAE9F,MAAM,SAAS,GAAG,gBAAgB,CAAC,GAAG,CAAmC,aAAa,CAAC,CAAC;IACxF,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,iCAAiC,CAC/D,OAAO,CAAC,IAAI,EACZ,YAAY,CAAC,aAAa,CACzB,kBAAkB,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC,WAAW,CAAC,aAAa,CAAC,CACrE,CACD,CAAC;IAEF,OAAO;QACN,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC;QAC5B,OAAO,EAAE;YACR,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM;SAClF;QACD,IAAI,EAAE,MAAM;KACZ,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC9C,kBAAuC,EACvC,aAAqB,EACrB,OAA6B;IAE7B,MAAM,CAAC,MAAM,CAAuB,aAAa,aAAmB,OAAO,CAAC,CAAC;IAC7E,MAAM,CAAC,MAAM,CACZ,aAAa,qBAEb,OAAO,CAAC,OAAO,CACf,CAAC;IACF,MAAM,CAAC,MAAM,CACZ,aAAa,wBAEb,OAAO,CAAC,UAAU,CAClB,CAAC;IACF,MAAM,CAAC,MAAM,CAA+B,aAAa,kBAAwB,OAAO,CAAC,IAAI,CAAC,CAAC;IAE/F,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC;IAE9F,MAAM,SAAS,GAAG,gBAAgB,CAAC,GAAG,CAAmC,aAAa,CAAC,CAAC;IACxF,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,SAAS,CACvC,OAAO,CAAC,IAAI,EACZ,OAAO,CAAC,UAAU,CAAC,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,EAC5E,YAAY,CAAC,aAAa,CACzB,kBAAkB,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC,WAAW,CAAC,aAAa,CAAC,CACrE,CACD,CAAC;IAEF,OAAO;QACN,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC;QAC5B,OAAO,EAAE;YACR,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM;SAClF;QACD,IAAI,EAAE,MAAM;KACZ,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACxC,kBAAuC,EACvC,aAAqB,EACrB,OAAyB;IAEzB,MAAM,CAAC,MAAM,CAAmB,aAAa,aAAmB,OAAO,CAAC,CAAC;IACzE,MAAM,CAAC,MAAM,CACZ,aAAa,qBAEb,OAAO,CAAC,OAAO,CACf,CAAC;IACF,MAAM,CAAC,MAAM,CAA2B,aAAa,kBAAwB,OAAO,CAAC,IAAI,CAAC,CAAC;IAE3F,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC;IAE9F,MAAM,SAAS,GAAG,gBAAgB,CAAC,GAAG,CAAmC,aAAa,CAAC,CAAC;IACxF,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,iBAAiB,CAC/C,OAAO,CAAC,IAAI,EACZ,YAAY,CAAC,aAAa,CACzB,kBAAkB,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC,WAAW,CAAC,aAAa,CAAC,CACrE,CACD,CAAC;IAEF,MAAM,QAAQ,GAAG,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IAExD,IAAI,QAAQ,EAAE,CAAC;QACd,OAAO;YACN,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC;YAC5B,OAAO,EAAE;gBACR,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM;aAClF;SACD,CAAC;IACH,CAAC;IACD,OAAO;QACN,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,cAAc,CAAC,OAAO;QACtD,OAAO,EAAE;YACR,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM;SAClF;QACD,IAAI,EAAE,MAAM;KACZ,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC5C,kBAAuC,EACvC,aAAqB,EACrB,OAA6B;IAE7B,MAAM,CAAC,MAAM,CAAuB,aAAa,aAAmB,OAAO,CAAC,CAAC;IAC7E,MAAM,CAAC,MAAM,CACZ,aAAa,qBAEb,OAAO,CAAC,OAAO,CACf,CAAC;IACF,MAAM,CAAC,MAAM,CAA+B,aAAa,kBAAwB,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/F,MAAM,CAAC,MAAM,CACZ,aAAa,kBAEb,OAAO,CAAC,IAAI,CACZ,CAAC;IAEF,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC;IAE9F,MAAM,SAAS,GAAG,gBAAgB,CAAC,GAAG,CAAmC,aAAa,CAAC,CAAC;IACxF,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,qBAAqB,CACnD,OAAO,CAAC,IAAI,EACZ,YAAY,CAAC,aAAa,CACzB,kBAAkB,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC,WAAW,CAAC,aAAa,CAAC,CACrE,CACD,CAAC;IAEF,OAAO;QACN,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC;QAC5B,OAAO,EAAE;YACR,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM;SAClF;QACD,IAAI,EAAE,MAAM;KACZ,CAAC;AACH,CAAC","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
|
|
package/docs/open-api/spec.json
CHANGED
|
@@ -635,7 +635,9 @@
|
|
|
635
635
|
"examples": {
|
|
636
636
|
"pnpGetNegotiationResponseExample": {
|
|
637
637
|
"value": {
|
|
638
|
-
"@context":
|
|
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":
|
|
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":
|
|
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":
|
|
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":
|
|
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":
|
|
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":
|
|
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":
|
|
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":
|
|
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":
|
|
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":
|
|
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":
|
|
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": "
|
|
2697
|
-
"
|
|
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
|
|
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.
|
|
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.
|
|
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",
|