@twin.org/dataspace-control-plane-service 0.0.3-next.19 → 0.0.3-next.20
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/dataspaceControlPlaneRoutes.js +274 -21
- package/dist/es/dataspaceControlPlaneRoutes.js.map +1 -1
- package/docs/changelog.md +14 -0
- package/docs/reference/classes/DataspaceControlPlanePolicyRequester.md +9 -9
- package/docs/reference/classes/DataspaceControlPlaneService.md +17 -17
- package/docs/reference/interfaces/IDataspaceControlPlaneServiceConfig.md +2 -2
- package/docs/reference/interfaces/IDataspaceControlPlaneServiceConstructorOptions.md +11 -11
- package/docs/reference/interfaces/INegotiationState.md +5 -5
- package/package.json +2 -2
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { ComponentFactory, Guards } from "@twin.org/core";
|
|
2
|
-
import {
|
|
2
|
+
import { DataspaceProtocolContexts, DataspaceProtocolTransferProcessStateType, DataspaceProtocolTransferProcessTypes } from "@twin.org/standards-dataspace-protocol";
|
|
3
|
+
import { HeaderHelper, HeaderTypes, MimeTypes } from "@twin.org/web";
|
|
3
4
|
import { transformErrorToStatusCode } from "./utils/transferErrorUtils.js";
|
|
4
5
|
/**
|
|
5
6
|
* The source used when communicating about these routes.
|
|
@@ -14,6 +15,37 @@ export const tagsDataspaceControlPlane = [
|
|
|
14
15
|
description: "DSP Transfer Process Protocol endpoints for initiating and managing data transfers."
|
|
15
16
|
}
|
|
16
17
|
];
|
|
18
|
+
// Example objects for API documentation
|
|
19
|
+
const requestTransferExample = {
|
|
20
|
+
"@context": DataspaceProtocolContexts.Context,
|
|
21
|
+
"@type": DataspaceProtocolTransferProcessTypes.TransferRequestMessage,
|
|
22
|
+
processId: "urn:uuid:consumer-process-12345",
|
|
23
|
+
consumerPid: "urn:uuid:consumer-process-12345",
|
|
24
|
+
providerPid: "urn:uuid:provider-process-12345",
|
|
25
|
+
agreementId: "urn:uuid:agreement-12345",
|
|
26
|
+
dataAddress: {
|
|
27
|
+
"@type": DataspaceProtocolTransferProcessTypes.DataAddress,
|
|
28
|
+
"@id": "https://provider.example.com/data",
|
|
29
|
+
endpointType: "https://w3id.org/dspace/v1/HttpDataAddress",
|
|
30
|
+
baseUrl: "https://provider.example.com/data"
|
|
31
|
+
},
|
|
32
|
+
callbackAddress: "https://consumer.example.com/transfer/webhook",
|
|
33
|
+
format: "urn:example:format"
|
|
34
|
+
};
|
|
35
|
+
const transferProcessExample = {
|
|
36
|
+
"@context": DataspaceProtocolContexts.Context,
|
|
37
|
+
"@type": DataspaceProtocolTransferProcessTypes.TransferProcess,
|
|
38
|
+
processId: "urn:uuid:provider-process-12345",
|
|
39
|
+
consumerPid: "urn:uuid:consumer-process-12345",
|
|
40
|
+
providerPid: "urn:uuid:provider-process-12345",
|
|
41
|
+
state: DataspaceProtocolTransferProcessStateType.STARTED,
|
|
42
|
+
dataAddress: {
|
|
43
|
+
"@type": DataspaceProtocolTransferProcessTypes.DataAddress,
|
|
44
|
+
"@id": "https://provider.example.com/data/transfer-12345",
|
|
45
|
+
endpointType: "https://w3id.org/dspace/v1/HttpDataAddress",
|
|
46
|
+
baseUrl: "https://provider.example.com/data/transfer-12345"
|
|
47
|
+
}
|
|
48
|
+
};
|
|
17
49
|
/**
|
|
18
50
|
* The REST routes for dataspace control plane (DSP Protocol only).
|
|
19
51
|
* These routes implement the Eclipse Dataspace Protocol Transfer Process Protocol.
|
|
@@ -26,71 +58,292 @@ export const tagsDataspaceControlPlane = [
|
|
|
26
58
|
* @returns The generated DSP protocol routes.
|
|
27
59
|
*/
|
|
28
60
|
export function generateRestRoutesDataspaceControlPlane(baseRouteName, componentName) {
|
|
29
|
-
const routes = [];
|
|
30
61
|
// ============================================================================
|
|
31
62
|
// TRANSFER PROCESS PROTOCOL (DSP)
|
|
32
63
|
// ============================================================================
|
|
33
64
|
// POST /transfers/request - Request Transfer Process (DSP)
|
|
34
|
-
|
|
65
|
+
const requestTransferRoute = {
|
|
35
66
|
operationId: "requestTransfer",
|
|
36
67
|
summary: "Request Transfer Process (DSP)",
|
|
37
68
|
tag: tagsDataspaceControlPlane[0].name,
|
|
38
69
|
method: "POST",
|
|
39
70
|
path: `${baseRouteName}/transfers/request`,
|
|
40
71
|
skipAuth: true,
|
|
41
|
-
handler: async (httpRequestContext, request) => requestTransferHandler(httpRequestContext, componentName, request)
|
|
42
|
-
|
|
72
|
+
handler: async (httpRequestContext, request) => requestTransferHandler(httpRequestContext, componentName, request),
|
|
73
|
+
requestType: {
|
|
74
|
+
mimeType: MimeTypes.JsonLd,
|
|
75
|
+
type: "IRequestTransferRequest",
|
|
76
|
+
examples: [
|
|
77
|
+
{
|
|
78
|
+
id: "requestTransferRequestExample",
|
|
79
|
+
request: {
|
|
80
|
+
headers: {
|
|
81
|
+
[HeaderTypes.Authorization]: "Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9..."
|
|
82
|
+
},
|
|
83
|
+
body: requestTransferExample
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
]
|
|
87
|
+
},
|
|
88
|
+
responseType: [
|
|
89
|
+
{
|
|
90
|
+
type: "IRequestTransferResponse",
|
|
91
|
+
examples: [
|
|
92
|
+
{
|
|
93
|
+
id: "requestTransferResponseExample",
|
|
94
|
+
response: {
|
|
95
|
+
body: transferProcessExample
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
]
|
|
99
|
+
}
|
|
100
|
+
]
|
|
101
|
+
};
|
|
43
102
|
// GET /transfers/:pid - Get Transfer Process state (DSP)
|
|
44
|
-
|
|
103
|
+
const getTransferProcessRoute = {
|
|
45
104
|
operationId: "getTransferProcess",
|
|
46
105
|
summary: "Get Transfer Process state (DSP)",
|
|
47
106
|
tag: tagsDataspaceControlPlane[0].name,
|
|
48
107
|
method: "GET",
|
|
49
108
|
path: `${baseRouteName}/transfers/:pid`,
|
|
50
109
|
skipAuth: true,
|
|
51
|
-
handler: async (httpRequestContext, request) => getTransferProcessHandler(httpRequestContext, componentName, request)
|
|
52
|
-
|
|
110
|
+
handler: async (httpRequestContext, request) => getTransferProcessHandler(httpRequestContext, componentName, request),
|
|
111
|
+
requestType: {
|
|
112
|
+
type: "IGetTransferProcessRequest",
|
|
113
|
+
examples: [
|
|
114
|
+
{
|
|
115
|
+
id: "getTransferProcessRequestExample",
|
|
116
|
+
request: {
|
|
117
|
+
headers: {
|
|
118
|
+
authorization: "Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9..."
|
|
119
|
+
},
|
|
120
|
+
pathParams: {
|
|
121
|
+
pid: "urn:uuid:provider-process-12345"
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
]
|
|
126
|
+
},
|
|
127
|
+
responseType: [
|
|
128
|
+
{
|
|
129
|
+
type: "IGetTransferProcessResponse",
|
|
130
|
+
examples: [
|
|
131
|
+
{
|
|
132
|
+
id: "getTransferProcessResponseExample",
|
|
133
|
+
response: {
|
|
134
|
+
body: transferProcessExample
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
]
|
|
138
|
+
}
|
|
139
|
+
]
|
|
140
|
+
};
|
|
53
141
|
// POST /transfers/:pid/start - Start Transfer Process (DSP)
|
|
54
|
-
|
|
142
|
+
const startTransferRoute = {
|
|
55
143
|
operationId: "startTransfer",
|
|
56
144
|
summary: "Start Transfer Process (DSP)",
|
|
57
145
|
tag: tagsDataspaceControlPlane[0].name,
|
|
58
146
|
method: "POST",
|
|
59
147
|
path: `${baseRouteName}/transfers/:pid/start`,
|
|
60
148
|
skipAuth: true,
|
|
61
|
-
handler: async (httpRequestContext, request) => startTransferHandler(httpRequestContext, componentName, request)
|
|
62
|
-
|
|
149
|
+
handler: async (httpRequestContext, request) => startTransferHandler(httpRequestContext, componentName, request),
|
|
150
|
+
requestType: {
|
|
151
|
+
mimeType: MimeTypes.JsonLd,
|
|
152
|
+
type: "IStartTransferRequest",
|
|
153
|
+
examples: [
|
|
154
|
+
{
|
|
155
|
+
id: "startTransferRequestExample",
|
|
156
|
+
request: {
|
|
157
|
+
headers: {
|
|
158
|
+
[HeaderTypes.Authorization]: "Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9..."
|
|
159
|
+
},
|
|
160
|
+
pathParams: {
|
|
161
|
+
pid: "urn:uuid:consumer-process-12345"
|
|
162
|
+
},
|
|
163
|
+
body: {
|
|
164
|
+
"@context": DataspaceProtocolContexts.Context,
|
|
165
|
+
"@type": "TransferStartMessage",
|
|
166
|
+
consumerPid: "urn:uuid:consumer-process-12345",
|
|
167
|
+
providerPid: "urn:uuid:provider-process-12345"
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
]
|
|
172
|
+
},
|
|
173
|
+
responseType: [
|
|
174
|
+
{
|
|
175
|
+
type: "IStartTransferResponse",
|
|
176
|
+
examples: [
|
|
177
|
+
{
|
|
178
|
+
id: "startTransferResponseExample",
|
|
179
|
+
response: {
|
|
180
|
+
body: {
|
|
181
|
+
"@context": DataspaceProtocolContexts.Context,
|
|
182
|
+
"@type": DataspaceProtocolTransferProcessTypes.TransferStartMessage,
|
|
183
|
+
consumerPid: "urn:uuid:consumer-process-12345",
|
|
184
|
+
providerPid: "urn:uuid:provider-process-12345"
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
]
|
|
189
|
+
}
|
|
190
|
+
]
|
|
191
|
+
};
|
|
63
192
|
// POST /transfers/:pid/complete - Complete Transfer Process (DSP)
|
|
64
|
-
|
|
193
|
+
const completeTransferRoute = {
|
|
65
194
|
operationId: "completeTransfer",
|
|
66
195
|
summary: "Complete Transfer Process (DSP)",
|
|
67
196
|
tag: tagsDataspaceControlPlane[0].name,
|
|
68
197
|
method: "POST",
|
|
69
198
|
path: `${baseRouteName}/transfers/:pid/complete`,
|
|
70
199
|
skipAuth: true,
|
|
71
|
-
handler: async (httpRequestContext, request) => completeTransferHandler(httpRequestContext, componentName, request)
|
|
72
|
-
|
|
200
|
+
handler: async (httpRequestContext, request) => completeTransferHandler(httpRequestContext, componentName, request),
|
|
201
|
+
requestType: {
|
|
202
|
+
mimeType: MimeTypes.JsonLd,
|
|
203
|
+
type: "ICompleteTransferRequest",
|
|
204
|
+
examples: [
|
|
205
|
+
{
|
|
206
|
+
id: "completeTransferRequestExample",
|
|
207
|
+
request: {
|
|
208
|
+
headers: {
|
|
209
|
+
[HeaderTypes.Authorization]: "Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9..."
|
|
210
|
+
},
|
|
211
|
+
pathParams: {
|
|
212
|
+
pid: "urn:uuid:consumer-process-12345"
|
|
213
|
+
},
|
|
214
|
+
body: {
|
|
215
|
+
"@context": DataspaceProtocolContexts.Context,
|
|
216
|
+
"@type": "TransferCompletionMessage",
|
|
217
|
+
consumerPid: "urn:uuid:consumer-process-12345",
|
|
218
|
+
providerPid: "urn:uuid:provider-process-12345"
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
]
|
|
223
|
+
},
|
|
224
|
+
responseType: [
|
|
225
|
+
{
|
|
226
|
+
type: "ICompleteTransferResponse",
|
|
227
|
+
examples: [
|
|
228
|
+
{
|
|
229
|
+
id: "completeTransferResponseExample",
|
|
230
|
+
response: {
|
|
231
|
+
body: {
|
|
232
|
+
...transferProcessExample,
|
|
233
|
+
state: DataspaceProtocolTransferProcessStateType.COMPLETED
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
]
|
|
238
|
+
}
|
|
239
|
+
]
|
|
240
|
+
};
|
|
73
241
|
// POST /transfers/:pid/suspend - Suspend Transfer Process (DSP)
|
|
74
|
-
|
|
242
|
+
const suspendTransferRoute = {
|
|
75
243
|
operationId: "suspendTransfer",
|
|
76
244
|
summary: "Suspend Transfer Process (DSP)",
|
|
77
245
|
tag: tagsDataspaceControlPlane[0].name,
|
|
78
246
|
method: "POST",
|
|
79
247
|
path: `${baseRouteName}/transfers/:pid/suspend`,
|
|
80
248
|
skipAuth: true,
|
|
81
|
-
handler: async (httpRequestContext, request) => suspendTransferHandler(httpRequestContext, componentName, request)
|
|
82
|
-
|
|
249
|
+
handler: async (httpRequestContext, request) => suspendTransferHandler(httpRequestContext, componentName, request),
|
|
250
|
+
requestType: {
|
|
251
|
+
mimeType: MimeTypes.JsonLd,
|
|
252
|
+
type: "ISuspendTransferRequest",
|
|
253
|
+
examples: [
|
|
254
|
+
{
|
|
255
|
+
id: "suspendTransferRequestExample",
|
|
256
|
+
request: {
|
|
257
|
+
headers: {
|
|
258
|
+
[HeaderTypes.Authorization]: "Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9..."
|
|
259
|
+
},
|
|
260
|
+
pathParams: {
|
|
261
|
+
pid: "urn:uuid:consumer-process-12345"
|
|
262
|
+
},
|
|
263
|
+
body: {
|
|
264
|
+
"@context": DataspaceProtocolContexts.Context,
|
|
265
|
+
"@type": "TransferSuspensionMessage",
|
|
266
|
+
consumerPid: "urn:uuid:consumer-process-12345",
|
|
267
|
+
providerPid: "urn:uuid:provider-process-12345"
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
]
|
|
272
|
+
},
|
|
273
|
+
responseType: [
|
|
274
|
+
{
|
|
275
|
+
type: "ISuspendTransferResponse",
|
|
276
|
+
examples: [
|
|
277
|
+
{
|
|
278
|
+
id: "suspendTransferResponseExample",
|
|
279
|
+
response: {
|
|
280
|
+
body: {
|
|
281
|
+
...transferProcessExample,
|
|
282
|
+
state: DataspaceProtocolTransferProcessStateType.SUSPENDED
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
]
|
|
287
|
+
}
|
|
288
|
+
]
|
|
289
|
+
};
|
|
83
290
|
// POST /transfers/:pid/terminate - Terminate Transfer Process (DSP)
|
|
84
|
-
|
|
291
|
+
const terminateTransferRoute = {
|
|
85
292
|
operationId: "terminateTransfer",
|
|
86
293
|
summary: "Terminate Transfer Process (DSP)",
|
|
87
294
|
tag: tagsDataspaceControlPlane[0].name,
|
|
88
295
|
method: "POST",
|
|
89
296
|
path: `${baseRouteName}/transfers/:pid/terminate`,
|
|
90
297
|
skipAuth: true,
|
|
91
|
-
handler: async (httpRequestContext, request) => terminateTransferHandler(httpRequestContext, componentName, request)
|
|
92
|
-
|
|
93
|
-
|
|
298
|
+
handler: async (httpRequestContext, request) => terminateTransferHandler(httpRequestContext, componentName, request),
|
|
299
|
+
requestType: {
|
|
300
|
+
mimeType: MimeTypes.JsonLd,
|
|
301
|
+
type: "ITerminateTransferRequest",
|
|
302
|
+
examples: [
|
|
303
|
+
{
|
|
304
|
+
id: "terminateTransferRequestExample",
|
|
305
|
+
request: {
|
|
306
|
+
headers: {
|
|
307
|
+
[HeaderTypes.Authorization]: "Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9..."
|
|
308
|
+
},
|
|
309
|
+
pathParams: {
|
|
310
|
+
pid: "urn:uuid:consumer-process-12345"
|
|
311
|
+
},
|
|
312
|
+
body: {
|
|
313
|
+
"@context": DataspaceProtocolContexts.Context,
|
|
314
|
+
"@type": "TransferTerminationMessage",
|
|
315
|
+
consumerPid: "urn:uuid:consumer-process-12345",
|
|
316
|
+
providerPid: "urn:uuid:provider-process-12345"
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
]
|
|
321
|
+
},
|
|
322
|
+
responseType: [
|
|
323
|
+
{
|
|
324
|
+
type: "ITerminateTransferResponse",
|
|
325
|
+
examples: [
|
|
326
|
+
{
|
|
327
|
+
id: "terminateTransferResponseExample",
|
|
328
|
+
response: {
|
|
329
|
+
body: {
|
|
330
|
+
...transferProcessExample,
|
|
331
|
+
state: DataspaceProtocolTransferProcessStateType.TERMINATED
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
]
|
|
336
|
+
}
|
|
337
|
+
]
|
|
338
|
+
};
|
|
339
|
+
return [
|
|
340
|
+
requestTransferRoute,
|
|
341
|
+
getTransferProcessRoute,
|
|
342
|
+
startTransferRoute,
|
|
343
|
+
completeTransferRoute,
|
|
344
|
+
suspendTransferRoute,
|
|
345
|
+
terminateTransferRoute
|
|
346
|
+
];
|
|
94
347
|
}
|
|
95
348
|
// ============================================================================
|
|
96
349
|
// TRANSFER PROCESS PROTOCOL HANDLERS
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dataspaceControlPlaneRoutes.js","sourceRoot":"","sources":["../../src/dataspaceControlPlaneRoutes.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright 2025 IOTA Stiftung.\n// SPDX-License-Identifier: Apache-2.0.\nimport type {\n\tIHostingComponent,\n\tIHttpRequestContext,\n\tIRestRoute,\n\tITag\n} from \"@twin.org/api-models\";\nimport { ComponentFactory, Guards } from \"@twin.org/core\";\nimport type {\n\tIDataspaceControlPlaneComponent,\n\tIRequestTransferRequest,\n\tIRequestTransferResponse,\n\tIGetTransferProcessRequest,\n\tIGetTransferProcessResponse,\n\tIStartTransferRequest,\n\tIStartTransferResponse,\n\tICompleteTransferRequest,\n\tICompleteTransferResponse,\n\tISuspendTransferRequest,\n\tISuspendTransferResponse,\n\tITerminateTransferRequest,\n\tITerminateTransferResponse\n} from \"@twin.org/dataspace-models\";\nimport { nameof } from \"@twin.org/nameof\";\nimport { HeaderHelper, HeaderTypes } from \"@twin.org/web\";\nimport { transformErrorToStatusCode } from \"./utils/transferErrorUtils.js\";\n\n/**\n * The source used when communicating about these routes.\n */\nconst ROUTES_SOURCE = \"dataspaceControlPlaneRoutes\";\n\n/**\n * The tags to associate with the DSP protocol routes.\n */\nexport const tagsDataspaceControlPlane: ITag[] = [\n\t{\n\t\tname: \"Transfer Process\",\n\t\tdescription:\n\t\t\t\"DSP Transfer Process Protocol endpoints for initiating and managing data transfers.\"\n\t}\n];\n\n/**\n * The REST routes for dataspace control plane (DSP Protocol only).\n * These routes implement the Eclipse Dataspace Protocol Transfer Process Protocol.\n *\n * Contract Negotiation is handled internally via PNP callbacks — no REST endpoints needed.\n * PNP registers its own inbound callback routes for negotiation messages from providers.\n *\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 DSP protocol routes.\n */\nexport function generateRestRoutesDataspaceControlPlane(\n\tbaseRouteName: string,\n\tcomponentName: string\n): IRestRoute[] {\n\tconst routes: IRestRoute[] = [];\n\n\t// ============================================================================\n\t// TRANSFER PROCESS PROTOCOL (DSP)\n\t// ============================================================================\n\n\t// POST /transfers/request - Request Transfer Process (DSP)\n\troutes.push({\n\t\toperationId: \"requestTransfer\",\n\t\tsummary: \"Request Transfer Process (DSP)\",\n\t\ttag: tagsDataspaceControlPlane[0].name,\n\t\tmethod: \"POST\",\n\t\tpath: `${baseRouteName}/transfers/request`,\n\t\tskipAuth: true,\n\t\thandler: async (httpRequestContext, request) =>\n\t\t\trequestTransferHandler(httpRequestContext, componentName, request)\n\t});\n\n\t// GET /transfers/:pid - Get Transfer Process state (DSP)\n\troutes.push({\n\t\toperationId: \"getTransferProcess\",\n\t\tsummary: \"Get Transfer Process state (DSP)\",\n\t\ttag: tagsDataspaceControlPlane[0].name,\n\t\tmethod: \"GET\",\n\t\tpath: `${baseRouteName}/transfers/:pid`,\n\t\tskipAuth: true,\n\t\thandler: async (httpRequestContext, request) =>\n\t\t\tgetTransferProcessHandler(httpRequestContext, componentName, request)\n\t});\n\n\t// POST /transfers/:pid/start - Start Transfer Process (DSP)\n\troutes.push({\n\t\toperationId: \"startTransfer\",\n\t\tsummary: \"Start Transfer Process (DSP)\",\n\t\ttag: tagsDataspaceControlPlane[0].name,\n\t\tmethod: \"POST\",\n\t\tpath: `${baseRouteName}/transfers/:pid/start`,\n\t\tskipAuth: true,\n\t\thandler: async (httpRequestContext, request) =>\n\t\t\tstartTransferHandler(httpRequestContext, componentName, request)\n\t});\n\n\t// POST /transfers/:pid/complete - Complete Transfer Process (DSP)\n\troutes.push({\n\t\toperationId: \"completeTransfer\",\n\t\tsummary: \"Complete Transfer Process (DSP)\",\n\t\ttag: tagsDataspaceControlPlane[0].name,\n\t\tmethod: \"POST\",\n\t\tpath: `${baseRouteName}/transfers/:pid/complete`,\n\t\tskipAuth: true,\n\t\thandler: async (httpRequestContext, request) =>\n\t\t\tcompleteTransferHandler(httpRequestContext, componentName, request)\n\t});\n\n\t// POST /transfers/:pid/suspend - Suspend Transfer Process (DSP)\n\troutes.push({\n\t\toperationId: \"suspendTransfer\",\n\t\tsummary: \"Suspend Transfer Process (DSP)\",\n\t\ttag: tagsDataspaceControlPlane[0].name,\n\t\tmethod: \"POST\",\n\t\tpath: `${baseRouteName}/transfers/:pid/suspend`,\n\t\tskipAuth: true,\n\t\thandler: async (httpRequestContext, request) =>\n\t\t\tsuspendTransferHandler(httpRequestContext, componentName, request)\n\t});\n\n\t// POST /transfers/:pid/terminate - Terminate Transfer Process (DSP)\n\troutes.push({\n\t\toperationId: \"terminateTransfer\",\n\t\tsummary: \"Terminate Transfer Process (DSP)\",\n\t\ttag: tagsDataspaceControlPlane[0].name,\n\t\tmethod: \"POST\",\n\t\tpath: `${baseRouteName}/transfers/:pid/terminate`,\n\t\tskipAuth: true,\n\t\thandler: async (httpRequestContext, request) =>\n\t\t\tterminateTransferHandler(httpRequestContext, componentName, request)\n\t});\n\n\treturn routes;\n}\n\n// ============================================================================\n// TRANSFER PROCESS PROTOCOL HANDLERS\n// ============================================================================\n\n/**\n * Request Transfer Process handler.\n * @param httpRequestContext The request context for the API.\n * @param componentName The name of the component to use.\n * @param request The API request containing headers and body.\n * @returns The response.\n */\nasync function requestTransferHandler(\n\thttpRequestContext: IHttpRequestContext,\n\tcomponentName: string,\n\trequest: IRequestTransferRequest\n): Promise<IRequestTransferResponse> {\n\tGuards.object(ROUTES_SOURCE, nameof(request), request);\n\tGuards.object(ROUTES_SOURCE, nameof(request.body), request.body);\n\n\tconst trustPayload = HeaderHelper.extractBearer(request.headers[HeaderTypes.Authorization]);\n\n\tconst component = ComponentFactory.get<IDataspaceControlPlaneComponent>(componentName);\n\tconst result = await component.requestTransfer(request.body, trustPayload);\n\n\treturn {\n\t\tbody: result,\n\t\tstatusCode: transformErrorToStatusCode(result)\n\t};\n}\n\n/**\n * Get Transfer Process handler.\n * @param httpRequestContext The request context for the API.\n * @param componentName The name of the component to use.\n * @param request The API request containing headers and path parameters.\n * @returns The response.\n */\nasync function getTransferProcessHandler(\n\thttpRequestContext: IHttpRequestContext,\n\tcomponentName: string,\n\trequest: IGetTransferProcessRequest\n): Promise<IGetTransferProcessResponse> {\n\tGuards.object(ROUTES_SOURCE, nameof(request), request);\n\tGuards.object(ROUTES_SOURCE, nameof(request.pathParams), request.pathParams);\n\tGuards.stringValue(ROUTES_SOURCE, nameof(request.pathParams.pid), request.pathParams.pid);\n\n\tconst trustPayload = HeaderHelper.extractBearer(request.headers[HeaderTypes.Authorization]);\n\n\tconst component = ComponentFactory.get<IDataspaceControlPlaneComponent>(componentName);\n\tconst result = await component.getTransferProcess(request.pathParams.pid, trustPayload);\n\n\treturn {\n\t\tbody: result,\n\t\tstatusCode: transformErrorToStatusCode(result)\n\t};\n}\n\n/**\n * Start Transfer Process handler.\n * @param httpRequestContext The request context for the API.\n * @param componentName The name of the component to use.\n * @param request The API request containing headers, path parameters, and body.\n * @returns The response.\n */\nasync function startTransferHandler(\n\thttpRequestContext: IHttpRequestContext,\n\tcomponentName: string,\n\trequest: IStartTransferRequest\n): Promise<IStartTransferResponse> {\n\tGuards.object(ROUTES_SOURCE, nameof(request), request);\n\tGuards.object(ROUTES_SOURCE, nameof(request.body), request.body);\n\n\tconst trustPayload = HeaderHelper.extractBearer(request.headers[HeaderTypes.Authorization]);\n\n\tconst hostingComponent = ComponentFactory.get<IHostingComponent>(\n\t\thttpRequestContext.hostingComponentType ?? \"hosting\"\n\t);\n\n\tconst component = ComponentFactory.get<IDataspaceControlPlaneComponent>(componentName);\n\tconst result = await component.startTransfer(\n\t\trequest.body,\n\t\tawait hostingComponent.getPublicOrigin(httpRequestContext.serverRequest.url),\n\t\ttrustPayload\n\t);\n\n\treturn {\n\t\tbody: result,\n\t\tstatusCode: transformErrorToStatusCode(result)\n\t};\n}\n\n/**\n * Complete Transfer Process handler.\n * @param httpRequestContext The request context for the API.\n * @param componentName The name of the component to use.\n * @param request The API request containing headers, path parameters, and body.\n * @returns The response.\n */\nasync function completeTransferHandler(\n\thttpRequestContext: IHttpRequestContext,\n\tcomponentName: string,\n\trequest: ICompleteTransferRequest\n): Promise<ICompleteTransferResponse> {\n\tGuards.object(ROUTES_SOURCE, nameof(request), request);\n\tGuards.object(ROUTES_SOURCE, nameof(request.body), request.body);\n\n\tconst trustPayload = HeaderHelper.extractBearer(request.headers[HeaderTypes.Authorization]);\n\n\tconst component = ComponentFactory.get<IDataspaceControlPlaneComponent>(componentName);\n\tconst result = await component.completeTransfer(request.body, trustPayload);\n\n\treturn {\n\t\tbody: result,\n\t\tstatusCode: transformErrorToStatusCode(result)\n\t};\n}\n\n/**\n * Suspend Transfer Process handler.\n * @param httpRequestContext The request context for the API.\n * @param componentName The name of the component to use.\n * @param request The API request containing headers, path parameters, and body.\n * @returns The response.\n */\nasync function suspendTransferHandler(\n\thttpRequestContext: IHttpRequestContext,\n\tcomponentName: string,\n\trequest: ISuspendTransferRequest\n): Promise<ISuspendTransferResponse> {\n\tGuards.object(ROUTES_SOURCE, nameof(request), request);\n\tGuards.object(ROUTES_SOURCE, nameof(request.body), request.body);\n\n\tconst trustPayload = HeaderHelper.extractBearer(request.headers[HeaderTypes.Authorization]);\n\n\tconst component = ComponentFactory.get<IDataspaceControlPlaneComponent>(componentName);\n\tconst result = await component.suspendTransfer(request.body, trustPayload);\n\n\treturn {\n\t\tbody: result,\n\t\tstatusCode: transformErrorToStatusCode(result)\n\t};\n}\n\n/**\n * Terminate Transfer Process handler.\n * @param httpRequestContext The request context for the API.\n * @param componentName The name of the component to use.\n * @param request The API request containing headers, path parameters, and body.\n * @returns The response.\n */\nasync function terminateTransferHandler(\n\thttpRequestContext: IHttpRequestContext,\n\tcomponentName: string,\n\trequest: ITerminateTransferRequest\n): Promise<ITerminateTransferResponse> {\n\tGuards.object(ROUTES_SOURCE, nameof(request), request);\n\tGuards.object(ROUTES_SOURCE, nameof(request.body), request.body);\n\n\tconst trustPayload = HeaderHelper.extractBearer(request.headers[HeaderTypes.Authorization]);\n\n\tconst component = ComponentFactory.get<IDataspaceControlPlaneComponent>(componentName);\n\tconst result = await component.terminateTransfer(request.body, trustPayload);\n\n\treturn {\n\t\tbody: result,\n\t\tstatusCode: transformErrorToStatusCode(result)\n\t};\n}\n"]}
|
|
1
|
+
{"version":3,"file":"dataspaceControlPlaneRoutes.js","sourceRoot":"","sources":["../../src/dataspaceControlPlaneRoutes.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright 2025 IOTA Stiftung.\n// SPDX-License-Identifier: Apache-2.0.\nimport type {\n\tIHostingComponent,\n\tIHttpRequestContext,\n\tIRestRoute,\n\tITag\n} from \"@twin.org/api-models\";\nimport { ComponentFactory, Guards } from \"@twin.org/core\";\nimport type {\n\tICompleteTransferRequest,\n\tICompleteTransferResponse,\n\tIDataspaceControlPlaneComponent,\n\tIGetTransferProcessRequest,\n\tIGetTransferProcessResponse,\n\tIRequestTransferRequest,\n\tIRequestTransferResponse,\n\tIStartTransferRequest,\n\tIStartTransferResponse,\n\tISuspendTransferRequest,\n\tISuspendTransferResponse,\n\tITerminateTransferRequest,\n\tITerminateTransferResponse\n} from \"@twin.org/dataspace-models\";\nimport { nameof } from \"@twin.org/nameof\";\nimport {\n\tDataspaceProtocolContexts,\n\tDataspaceProtocolTransferProcessStateType,\n\tDataspaceProtocolTransferProcessTypes\n} from \"@twin.org/standards-dataspace-protocol\";\nimport { HeaderHelper, HeaderTypes, MimeTypes } from \"@twin.org/web\";\nimport { transformErrorToStatusCode } from \"./utils/transferErrorUtils.js\";\n\n/**\n * The source used when communicating about these routes.\n */\nconst ROUTES_SOURCE = \"dataspaceControlPlaneRoutes\";\n\n/**\n * The tags to associate with the DSP protocol routes.\n */\nexport const tagsDataspaceControlPlane: ITag[] = [\n\t{\n\t\tname: \"Transfer Process\",\n\t\tdescription:\n\t\t\t\"DSP Transfer Process Protocol endpoints for initiating and managing data transfers.\"\n\t}\n];\n\n// Example objects for API documentation\nconst requestTransferExample = {\n\t\"@context\": DataspaceProtocolContexts.Context,\n\t\"@type\": DataspaceProtocolTransferProcessTypes.TransferRequestMessage,\n\tprocessId: \"urn:uuid:consumer-process-12345\",\n\tconsumerPid: \"urn:uuid:consumer-process-12345\",\n\tproviderPid: \"urn:uuid:provider-process-12345\",\n\tagreementId: \"urn:uuid:agreement-12345\",\n\tdataAddress: {\n\t\t\"@type\": DataspaceProtocolTransferProcessTypes.DataAddress,\n\t\t\"@id\": \"https://provider.example.com/data\",\n\t\tendpointType: \"https://w3id.org/dspace/v1/HttpDataAddress\",\n\t\tbaseUrl: \"https://provider.example.com/data\"\n\t},\n\tcallbackAddress: \"https://consumer.example.com/transfer/webhook\",\n\tformat: \"urn:example:format\"\n};\n\nconst transferProcessExample = {\n\t\"@context\": DataspaceProtocolContexts.Context,\n\t\"@type\": DataspaceProtocolTransferProcessTypes.TransferProcess,\n\tprocessId: \"urn:uuid:provider-process-12345\",\n\tconsumerPid: \"urn:uuid:consumer-process-12345\",\n\tproviderPid: \"urn:uuid:provider-process-12345\",\n\tstate: DataspaceProtocolTransferProcessStateType.STARTED,\n\tdataAddress: {\n\t\t\"@type\": DataspaceProtocolTransferProcessTypes.DataAddress,\n\t\t\"@id\": \"https://provider.example.com/data/transfer-12345\",\n\t\tendpointType: \"https://w3id.org/dspace/v1/HttpDataAddress\",\n\t\tbaseUrl: \"https://provider.example.com/data/transfer-12345\"\n\t}\n};\n\n/**\n * The REST routes for dataspace control plane (DSP Protocol only).\n * These routes implement the Eclipse Dataspace Protocol Transfer Process Protocol.\n *\n * Contract Negotiation is handled internally via PNP callbacks — no REST endpoints needed.\n * PNP registers its own inbound callback routes for negotiation messages from providers.\n *\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 DSP protocol routes.\n */\nexport function generateRestRoutesDataspaceControlPlane(\n\tbaseRouteName: string,\n\tcomponentName: string\n): IRestRoute[] {\n\t// ============================================================================\n\t// TRANSFER PROCESS PROTOCOL (DSP)\n\t// ============================================================================\n\n\t// POST /transfers/request - Request Transfer Process (DSP)\n\tconst requestTransferRoute: IRestRoute<IRequestTransferRequest, IRequestTransferResponse> = {\n\t\toperationId: \"requestTransfer\",\n\t\tsummary: \"Request Transfer Process (DSP)\",\n\t\ttag: tagsDataspaceControlPlane[0].name,\n\t\tmethod: \"POST\",\n\t\tpath: `${baseRouteName}/transfers/request`,\n\t\tskipAuth: true,\n\t\thandler: async (httpRequestContext, request) =>\n\t\t\trequestTransferHandler(httpRequestContext, componentName, request),\n\t\trequestType: {\n\t\t\tmimeType: MimeTypes.JsonLd,\n\t\t\ttype: nameof<IRequestTransferRequest>(),\n\t\t\texamples: [\n\t\t\t\t{\n\t\t\t\t\tid: \"requestTransferRequestExample\",\n\t\t\t\t\trequest: {\n\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\t[HeaderTypes.Authorization]: \"Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\tbody: requestTransferExample\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<IRequestTransferResponse>(),\n\t\t\t\texamples: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"requestTransferResponseExample\",\n\t\t\t\t\t\tresponse: {\n\t\t\t\t\t\t\tbody: transferProcessExample\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};\n\n\t// GET /transfers/:pid - Get Transfer Process state (DSP)\n\tconst getTransferProcessRoute: IRestRoute<\n\t\tIGetTransferProcessRequest,\n\t\tIGetTransferProcessResponse\n\t> = {\n\t\toperationId: \"getTransferProcess\",\n\t\tsummary: \"Get Transfer Process state (DSP)\",\n\t\ttag: tagsDataspaceControlPlane[0].name,\n\t\tmethod: \"GET\",\n\t\tpath: `${baseRouteName}/transfers/:pid`,\n\t\tskipAuth: true,\n\t\thandler: async (httpRequestContext, request) =>\n\t\t\tgetTransferProcessHandler(httpRequestContext, componentName, request),\n\t\trequestType: {\n\t\t\ttype: nameof<IGetTransferProcessRequest>(),\n\t\t\texamples: [\n\t\t\t\t{\n\t\t\t\t\tid: \"getTransferProcessRequestExample\",\n\t\t\t\t\trequest: {\n\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\tauthorization: \"Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\tpathParams: {\n\t\t\t\t\t\t\tpid: \"urn:uuid:provider-process-12345\"\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<IGetTransferProcessResponse>(),\n\t\t\t\texamples: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"getTransferProcessResponseExample\",\n\t\t\t\t\t\tresponse: {\n\t\t\t\t\t\t\tbody: transferProcessExample\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};\n\n\t// POST /transfers/:pid/start - Start Transfer Process (DSP)\n\tconst startTransferRoute: IRestRoute<IStartTransferRequest, IStartTransferResponse> = {\n\t\toperationId: \"startTransfer\",\n\t\tsummary: \"Start Transfer Process (DSP)\",\n\t\ttag: tagsDataspaceControlPlane[0].name,\n\t\tmethod: \"POST\",\n\t\tpath: `${baseRouteName}/transfers/:pid/start`,\n\t\tskipAuth: true,\n\t\thandler: async (httpRequestContext, request) =>\n\t\t\tstartTransferHandler(httpRequestContext, componentName, request),\n\t\trequestType: {\n\t\t\tmimeType: MimeTypes.JsonLd,\n\t\t\ttype: nameof<IStartTransferRequest>(),\n\t\t\texamples: [\n\t\t\t\t{\n\t\t\t\t\tid: \"startTransferRequestExample\",\n\t\t\t\t\trequest: {\n\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\t[HeaderTypes.Authorization]: \"Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\tpathParams: {\n\t\t\t\t\t\t\tpid: \"urn:uuid:consumer-process-12345\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\t\"@context\": DataspaceProtocolContexts.Context,\n\t\t\t\t\t\t\t\"@type\": \"TransferStartMessage\",\n\t\t\t\t\t\t\tconsumerPid: \"urn:uuid:consumer-process-12345\",\n\t\t\t\t\t\t\tproviderPid: \"urn:uuid:provider-process-12345\"\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<IStartTransferResponse>(),\n\t\t\t\texamples: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"startTransferResponseExample\",\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.Context,\n\t\t\t\t\t\t\t\t\"@type\": DataspaceProtocolTransferProcessTypes.TransferStartMessage,\n\t\t\t\t\t\t\t\tconsumerPid: \"urn:uuid:consumer-process-12345\",\n\t\t\t\t\t\t\t\tproviderPid: \"urn:uuid:provider-process-12345\"\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};\n\n\t// POST /transfers/:pid/complete - Complete Transfer Process (DSP)\n\tconst completeTransferRoute: IRestRoute<ICompleteTransferRequest, ICompleteTransferResponse> = {\n\t\toperationId: \"completeTransfer\",\n\t\tsummary: \"Complete Transfer Process (DSP)\",\n\t\ttag: tagsDataspaceControlPlane[0].name,\n\t\tmethod: \"POST\",\n\t\tpath: `${baseRouteName}/transfers/:pid/complete`,\n\t\tskipAuth: true,\n\t\thandler: async (httpRequestContext, request) =>\n\t\t\tcompleteTransferHandler(httpRequestContext, componentName, request),\n\t\trequestType: {\n\t\t\tmimeType: MimeTypes.JsonLd,\n\t\t\ttype: nameof<ICompleteTransferRequest>(),\n\t\t\texamples: [\n\t\t\t\t{\n\t\t\t\t\tid: \"completeTransferRequestExample\",\n\t\t\t\t\trequest: {\n\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\t[HeaderTypes.Authorization]: \"Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\tpathParams: {\n\t\t\t\t\t\t\tpid: \"urn:uuid:consumer-process-12345\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\t\"@context\": DataspaceProtocolContexts.Context,\n\t\t\t\t\t\t\t\"@type\": \"TransferCompletionMessage\",\n\t\t\t\t\t\t\tconsumerPid: \"urn:uuid:consumer-process-12345\",\n\t\t\t\t\t\t\tproviderPid: \"urn:uuid:provider-process-12345\"\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<ICompleteTransferResponse>(),\n\t\t\t\texamples: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"completeTransferResponseExample\",\n\t\t\t\t\t\tresponse: {\n\t\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\t\t...transferProcessExample,\n\t\t\t\t\t\t\t\tstate: DataspaceProtocolTransferProcessStateType.COMPLETED\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};\n\n\t// POST /transfers/:pid/suspend - Suspend Transfer Process (DSP)\n\tconst suspendTransferRoute: IRestRoute<ISuspendTransferRequest, ISuspendTransferResponse> = {\n\t\toperationId: \"suspendTransfer\",\n\t\tsummary: \"Suspend Transfer Process (DSP)\",\n\t\ttag: tagsDataspaceControlPlane[0].name,\n\t\tmethod: \"POST\",\n\t\tpath: `${baseRouteName}/transfers/:pid/suspend`,\n\t\tskipAuth: true,\n\t\thandler: async (httpRequestContext, request) =>\n\t\t\tsuspendTransferHandler(httpRequestContext, componentName, request),\n\t\trequestType: {\n\t\t\tmimeType: MimeTypes.JsonLd,\n\t\t\ttype: nameof<ISuspendTransferRequest>(),\n\t\t\texamples: [\n\t\t\t\t{\n\t\t\t\t\tid: \"suspendTransferRequestExample\",\n\t\t\t\t\trequest: {\n\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\t[HeaderTypes.Authorization]: \"Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\tpathParams: {\n\t\t\t\t\t\t\tpid: \"urn:uuid:consumer-process-12345\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\t\"@context\": DataspaceProtocolContexts.Context,\n\t\t\t\t\t\t\t\"@type\": \"TransferSuspensionMessage\",\n\t\t\t\t\t\t\tconsumerPid: \"urn:uuid:consumer-process-12345\",\n\t\t\t\t\t\t\tproviderPid: \"urn:uuid:provider-process-12345\"\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<ISuspendTransferResponse>(),\n\t\t\t\texamples: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"suspendTransferResponseExample\",\n\t\t\t\t\t\tresponse: {\n\t\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\t\t...transferProcessExample,\n\t\t\t\t\t\t\t\tstate: DataspaceProtocolTransferProcessStateType.SUSPENDED\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};\n\n\t// POST /transfers/:pid/terminate - Terminate Transfer Process (DSP)\n\tconst terminateTransferRoute: IRestRoute<ITerminateTransferRequest, ITerminateTransferResponse> =\n\t\t{\n\t\t\toperationId: \"terminateTransfer\",\n\t\t\tsummary: \"Terminate Transfer Process (DSP)\",\n\t\t\ttag: tagsDataspaceControlPlane[0].name,\n\t\t\tmethod: \"POST\",\n\t\t\tpath: `${baseRouteName}/transfers/:pid/terminate`,\n\t\t\tskipAuth: true,\n\t\t\thandler: async (httpRequestContext, request) =>\n\t\t\t\tterminateTransferHandler(httpRequestContext, componentName, request),\n\t\t\trequestType: {\n\t\t\t\tmimeType: MimeTypes.JsonLd,\n\t\t\t\ttype: nameof<ITerminateTransferRequest>(),\n\t\t\t\texamples: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"terminateTransferRequestExample\",\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.Authorization]: \"Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...\"\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tpathParams: {\n\t\t\t\t\t\t\t\tpid: \"urn:uuid:consumer-process-12345\"\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.Context,\n\t\t\t\t\t\t\t\t\"@type\": \"TransferTerminationMessage\",\n\t\t\t\t\t\t\t\tconsumerPid: \"urn:uuid:consumer-process-12345\",\n\t\t\t\t\t\t\t\tproviderPid: \"urn:uuid:provider-process-12345\"\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<ITerminateTransferResponse>(),\n\t\t\t\t\texamples: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"terminateTransferResponseExample\",\n\t\t\t\t\t\t\tresponse: {\n\t\t\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\t\t\t...transferProcessExample,\n\t\t\t\t\t\t\t\t\tstate: DataspaceProtocolTransferProcessStateType.TERMINATED\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\n\treturn [\n\t\trequestTransferRoute,\n\t\tgetTransferProcessRoute,\n\t\tstartTransferRoute,\n\t\tcompleteTransferRoute,\n\t\tsuspendTransferRoute,\n\t\tterminateTransferRoute\n\t];\n}\n\n// ============================================================================\n// TRANSFER PROCESS PROTOCOL HANDLERS\n// ============================================================================\n\n/**\n * Request Transfer Process handler.\n * @param httpRequestContext The request context for the API.\n * @param componentName The name of the component to use.\n * @param request The API request containing headers and body.\n * @returns The response.\n */\nasync function requestTransferHandler(\n\thttpRequestContext: IHttpRequestContext,\n\tcomponentName: string,\n\trequest: IRequestTransferRequest\n): Promise<IRequestTransferResponse> {\n\tGuards.object(ROUTES_SOURCE, nameof(request), request);\n\tGuards.object(ROUTES_SOURCE, nameof(request.body), request.body);\n\n\tconst trustPayload = HeaderHelper.extractBearer(request.headers[HeaderTypes.Authorization]);\n\n\tconst component = ComponentFactory.get<IDataspaceControlPlaneComponent>(componentName);\n\tconst result = await component.requestTransfer(request.body, trustPayload);\n\n\treturn {\n\t\tbody: result,\n\t\tstatusCode: transformErrorToStatusCode(result)\n\t};\n}\n\n/**\n * Get Transfer Process handler.\n * @param httpRequestContext The request context for the API.\n * @param componentName The name of the component to use.\n * @param request The API request containing headers and path parameters.\n * @returns The response.\n */\nasync function getTransferProcessHandler(\n\thttpRequestContext: IHttpRequestContext,\n\tcomponentName: string,\n\trequest: IGetTransferProcessRequest\n): Promise<IGetTransferProcessResponse> {\n\tGuards.object(ROUTES_SOURCE, nameof(request), request);\n\tGuards.object(ROUTES_SOURCE, nameof(request.pathParams), request.pathParams);\n\tGuards.stringValue(ROUTES_SOURCE, nameof(request.pathParams.pid), request.pathParams.pid);\n\n\tconst trustPayload = HeaderHelper.extractBearer(request.headers[HeaderTypes.Authorization]);\n\n\tconst component = ComponentFactory.get<IDataspaceControlPlaneComponent>(componentName);\n\tconst result = await component.getTransferProcess(request.pathParams.pid, trustPayload);\n\n\treturn {\n\t\tbody: result,\n\t\tstatusCode: transformErrorToStatusCode(result)\n\t};\n}\n\n/**\n * Start Transfer Process handler.\n * @param httpRequestContext The request context for the API.\n * @param componentName The name of the component to use.\n * @param request The API request containing headers, path parameters, and body.\n * @returns The response.\n */\nasync function startTransferHandler(\n\thttpRequestContext: IHttpRequestContext,\n\tcomponentName: string,\n\trequest: IStartTransferRequest\n): Promise<IStartTransferResponse> {\n\tGuards.object(ROUTES_SOURCE, nameof(request), request);\n\tGuards.object(ROUTES_SOURCE, nameof(request.body), request.body);\n\n\tconst trustPayload = HeaderHelper.extractBearer(request.headers[HeaderTypes.Authorization]);\n\n\tconst hostingComponent = ComponentFactory.get<IHostingComponent>(\n\t\thttpRequestContext.hostingComponentType ?? \"hosting\"\n\t);\n\n\tconst component = ComponentFactory.get<IDataspaceControlPlaneComponent>(componentName);\n\tconst result = await component.startTransfer(\n\t\trequest.body,\n\t\tawait hostingComponent.getPublicOrigin(httpRequestContext.serverRequest.url),\n\t\ttrustPayload\n\t);\n\n\treturn {\n\t\tbody: result,\n\t\tstatusCode: transformErrorToStatusCode(result)\n\t};\n}\n\n/**\n * Complete Transfer Process handler.\n * @param httpRequestContext The request context for the API.\n * @param componentName The name of the component to use.\n * @param request The API request containing headers, path parameters, and body.\n * @returns The response.\n */\nasync function completeTransferHandler(\n\thttpRequestContext: IHttpRequestContext,\n\tcomponentName: string,\n\trequest: ICompleteTransferRequest\n): Promise<ICompleteTransferResponse> {\n\tGuards.object(ROUTES_SOURCE, nameof(request), request);\n\tGuards.object(ROUTES_SOURCE, nameof(request.body), request.body);\n\n\tconst trustPayload = HeaderHelper.extractBearer(request.headers[HeaderTypes.Authorization]);\n\n\tconst component = ComponentFactory.get<IDataspaceControlPlaneComponent>(componentName);\n\tconst result = await component.completeTransfer(request.body, trustPayload);\n\n\treturn {\n\t\tbody: result,\n\t\tstatusCode: transformErrorToStatusCode(result)\n\t};\n}\n\n/**\n * Suspend Transfer Process handler.\n * @param httpRequestContext The request context for the API.\n * @param componentName The name of the component to use.\n * @param request The API request containing headers, path parameters, and body.\n * @returns The response.\n */\nasync function suspendTransferHandler(\n\thttpRequestContext: IHttpRequestContext,\n\tcomponentName: string,\n\trequest: ISuspendTransferRequest\n): Promise<ISuspendTransferResponse> {\n\tGuards.object(ROUTES_SOURCE, nameof(request), request);\n\tGuards.object(ROUTES_SOURCE, nameof(request.body), request.body);\n\n\tconst trustPayload = HeaderHelper.extractBearer(request.headers[HeaderTypes.Authorization]);\n\n\tconst component = ComponentFactory.get<IDataspaceControlPlaneComponent>(componentName);\n\tconst result = await component.suspendTransfer(request.body, trustPayload);\n\n\treturn {\n\t\tbody: result,\n\t\tstatusCode: transformErrorToStatusCode(result)\n\t};\n}\n\n/**\n * Terminate Transfer Process handler.\n * @param httpRequestContext The request context for the API.\n * @param componentName The name of the component to use.\n * @param request The API request containing headers, path parameters, and body.\n * @returns The response.\n */\nasync function terminateTransferHandler(\n\thttpRequestContext: IHttpRequestContext,\n\tcomponentName: string,\n\trequest: ITerminateTransferRequest\n): Promise<ITerminateTransferResponse> {\n\tGuards.object(ROUTES_SOURCE, nameof(request), request);\n\tGuards.object(ROUTES_SOURCE, nameof(request.body), request.body);\n\n\tconst trustPayload = HeaderHelper.extractBearer(request.headers[HeaderTypes.Authorization]);\n\n\tconst component = ComponentFactory.get<IDataspaceControlPlaneComponent>(componentName);\n\tconst result = await component.terminateTransfer(request.body, trustPayload);\n\n\treturn {\n\t\tbody: result,\n\t\tstatusCode: transformErrorToStatusCode(result)\n\t};\n}\n"]}
|
package/docs/changelog.md
CHANGED
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.0.3-next.20](https://github.com/twinfoundation/dataspace/compare/dataspace-control-plane-service-v0.0.3-next.19...dataspace-control-plane-service-v0.0.3-next.20) (2026-03-17)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Features
|
|
7
|
+
|
|
8
|
+
* improve open-api examples ([f065f4b](https://github.com/twinfoundation/dataspace/commit/f065f4bd55540041a653ef141c4be29a83c5055e))
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Dependencies
|
|
12
|
+
|
|
13
|
+
* The following workspace dependencies were updated
|
|
14
|
+
* dependencies
|
|
15
|
+
* @twin.org/dataspace-models bumped from 0.0.3-next.19 to 0.0.3-next.20
|
|
16
|
+
|
|
3
17
|
## [0.0.3-next.19](https://github.com/twinfoundation/dataspace/compare/dataspace-control-plane-service-v0.0.3-next.18...dataspace-control-plane-service-v0.0.3-next.19) (2026-03-12)
|
|
4
18
|
|
|
5
19
|
|
|
@@ -44,7 +44,7 @@ Optional callback interface for state change notifications.
|
|
|
44
44
|
|
|
45
45
|
## Properties
|
|
46
46
|
|
|
47
|
-
### CLASS\_NAME
|
|
47
|
+
### CLASS\_NAME {#class_name}
|
|
48
48
|
|
|
49
49
|
> `readonly` `static` **CLASS\_NAME**: `string`
|
|
50
50
|
|
|
@@ -52,7 +52,7 @@ Runtime name for the class.
|
|
|
52
52
|
|
|
53
53
|
## Methods
|
|
54
54
|
|
|
55
|
-
### className()
|
|
55
|
+
### className() {#classname}
|
|
56
56
|
|
|
57
57
|
> **className**(): `string`
|
|
58
58
|
|
|
@@ -70,7 +70,7 @@ The class name of the component.
|
|
|
70
70
|
|
|
71
71
|
***
|
|
72
72
|
|
|
73
|
-
### trackNegotiation()
|
|
73
|
+
### trackNegotiation() {#tracknegotiation}
|
|
74
74
|
|
|
75
75
|
> **trackNegotiation**(`negotiationId`): `void`
|
|
76
76
|
|
|
@@ -91,7 +91,7 @@ The negotiation ID returned by PNP.sendRequestToProvider().
|
|
|
91
91
|
|
|
92
92
|
***
|
|
93
93
|
|
|
94
|
-
### getActiveNegotiations()
|
|
94
|
+
### getActiveNegotiations() {#getactivenegotiations}
|
|
95
95
|
|
|
96
96
|
> **getActiveNegotiations**(): `Map`\<`string`, [`INegotiationState`](../interfaces/INegotiationState.md)\>
|
|
97
97
|
|
|
@@ -105,7 +105,7 @@ Map of negotiationId to negotiation state.
|
|
|
105
105
|
|
|
106
106
|
***
|
|
107
107
|
|
|
108
|
-
### removeNegotiation()
|
|
108
|
+
### removeNegotiation() {#removenegotiation}
|
|
109
109
|
|
|
110
110
|
> **removeNegotiation**(`negotiationId`): `void`
|
|
111
111
|
|
|
@@ -125,7 +125,7 @@ The negotiation ID to remove.
|
|
|
125
125
|
|
|
126
126
|
***
|
|
127
127
|
|
|
128
|
-
### offer()
|
|
128
|
+
### offer() {#offer}
|
|
129
129
|
|
|
130
130
|
> **offer**(`negotiationId`, `offer`): `Promise`\<`boolean`\>
|
|
131
131
|
|
|
@@ -158,7 +158,7 @@ True if the offer was accepted, false otherwise.
|
|
|
158
158
|
|
|
159
159
|
***
|
|
160
160
|
|
|
161
|
-
### agreement()
|
|
161
|
+
### agreement() {#agreement}
|
|
162
162
|
|
|
163
163
|
> **agreement**(`negotiationId`, `agreement`): `Promise`\<`boolean`\>
|
|
164
164
|
|
|
@@ -191,7 +191,7 @@ True if the agreement was accepted, false otherwise.
|
|
|
191
191
|
|
|
192
192
|
***
|
|
193
193
|
|
|
194
|
-
### finalised()
|
|
194
|
+
### finalised() {#finalised}
|
|
195
195
|
|
|
196
196
|
> **finalised**(`negotiationId`): `Promise`\<`void`\>
|
|
197
197
|
|
|
@@ -218,7 +218,7 @@ Nothing.
|
|
|
218
218
|
|
|
219
219
|
***
|
|
220
220
|
|
|
221
|
-
### terminated()
|
|
221
|
+
### terminated() {#terminated}
|
|
222
222
|
|
|
223
223
|
> **terminated**(`negotiationId`): `Promise`\<`void`\>
|
|
224
224
|
|
|
@@ -33,7 +33,7 @@ The options for the service.
|
|
|
33
33
|
|
|
34
34
|
## Properties
|
|
35
35
|
|
|
36
|
-
### CLASS\_NAME
|
|
36
|
+
### CLASS\_NAME {#class_name}
|
|
37
37
|
|
|
38
38
|
> `readonly` `static` **CLASS\_NAME**: `string`
|
|
39
39
|
|
|
@@ -41,7 +41,7 @@ Runtime name for the class.
|
|
|
41
41
|
|
|
42
42
|
## Methods
|
|
43
43
|
|
|
44
|
-
### className()
|
|
44
|
+
### className() {#classname}
|
|
45
45
|
|
|
46
46
|
> **className**(): `string`
|
|
47
47
|
|
|
@@ -59,7 +59,7 @@ The class name of the component.
|
|
|
59
59
|
|
|
60
60
|
***
|
|
61
61
|
|
|
62
|
-
### registerNegotiationCallback()
|
|
62
|
+
### registerNegotiationCallback() {#registernegotiationcallback}
|
|
63
63
|
|
|
64
64
|
> **registerNegotiationCallback**(`key`, `callback`): `void`
|
|
65
65
|
|
|
@@ -90,7 +90,7 @@ The callback interface to register.
|
|
|
90
90
|
|
|
91
91
|
***
|
|
92
92
|
|
|
93
|
-
### unregisterNegotiationCallback()
|
|
93
|
+
### unregisterNegotiationCallback() {#unregisternegotiationcallback}
|
|
94
94
|
|
|
95
95
|
> **unregisterNegotiationCallback**(`key`): `void`
|
|
96
96
|
|
|
@@ -114,7 +114,7 @@ The key used when registering the callback.
|
|
|
114
114
|
|
|
115
115
|
***
|
|
116
116
|
|
|
117
|
-
### start()
|
|
117
|
+
### start() {#start}
|
|
118
118
|
|
|
119
119
|
> **start**(`nodeLoggingComponentType?`): `Promise`\<`void`\>
|
|
120
120
|
|
|
@@ -140,7 +140,7 @@ The node logging component type.
|
|
|
140
140
|
|
|
141
141
|
***
|
|
142
142
|
|
|
143
|
-
### stop()
|
|
143
|
+
### stop() {#stop}
|
|
144
144
|
|
|
145
145
|
> **stop**(`nodeLoggingComponentType?`): `Promise`\<`void`\>
|
|
146
146
|
|
|
@@ -165,7 +165,7 @@ The node logging component type.
|
|
|
165
165
|
|
|
166
166
|
***
|
|
167
167
|
|
|
168
|
-
### requestTransfer()
|
|
168
|
+
### requestTransfer() {#requesttransfer}
|
|
169
169
|
|
|
170
170
|
> **requestTransfer**(`request`, `trustPayload`): `Promise`\<`IDataspaceProtocolTransferError` \| `IDataspaceProtocolTransferProcess`\>
|
|
171
171
|
|
|
@@ -201,7 +201,7 @@ Called by: Consumer when it wants to request a new Transfer Process
|
|
|
201
201
|
|
|
202
202
|
***
|
|
203
203
|
|
|
204
|
-
### startTransfer()
|
|
204
|
+
### startTransfer() {#starttransfer}
|
|
205
205
|
|
|
206
206
|
> **startTransfer**(`message`, `publicOrigin`, `trustPayload`): `Promise`\<`IDataspaceProtocolTransferError` \| `IDataspaceProtocolTransferStartMessage`\>
|
|
207
207
|
|
|
@@ -242,7 +242,7 @@ Role Performed: Provider / Consumer
|
|
|
242
242
|
|
|
243
243
|
***
|
|
244
244
|
|
|
245
|
-
### completeTransfer()
|
|
245
|
+
### completeTransfer() {#completetransfer}
|
|
246
246
|
|
|
247
247
|
> **completeTransfer**(`message`, `trustPayload`): `Promise`\<`IDataspaceProtocolTransferError` \| `IDataspaceProtocolTransferProcess`\>
|
|
248
248
|
|
|
@@ -274,7 +274,7 @@ Transfer Process (DSP compliant) with state COMPLETED, or TransferError if the o
|
|
|
274
274
|
|
|
275
275
|
***
|
|
276
276
|
|
|
277
|
-
### suspendTransfer()
|
|
277
|
+
### suspendTransfer() {#suspendtransfer}
|
|
278
278
|
|
|
279
279
|
> **suspendTransfer**(`message`, `trustPayload`): `Promise`\<`IDataspaceProtocolTransferError` \| `IDataspaceProtocolTransferProcess`\>
|
|
280
280
|
|
|
@@ -306,7 +306,7 @@ Transfer Process (DSP compliant) with state SUSPENDED, or TransferError if the o
|
|
|
306
306
|
|
|
307
307
|
***
|
|
308
308
|
|
|
309
|
-
### terminateTransfer()
|
|
309
|
+
### terminateTransfer() {#terminatetransfer}
|
|
310
310
|
|
|
311
311
|
> **terminateTransfer**(`message`, `trustPayload`): `Promise`\<`IDataspaceProtocolTransferError` \| `IDataspaceProtocolTransferProcess`\>
|
|
312
312
|
|
|
@@ -338,7 +338,7 @@ Transfer Process (DSP compliant) with state TERMINATED, or TransferError if the
|
|
|
338
338
|
|
|
339
339
|
***
|
|
340
340
|
|
|
341
|
-
### getTransferProcess()
|
|
341
|
+
### getTransferProcess() {#gettransferprocess}
|
|
342
342
|
|
|
343
343
|
> **getTransferProcess**(`pid`, `trustPayload`): `Promise`\<`IDataspaceProtocolTransferError` \| `IDataspaceProtocolTransferProcess`\>
|
|
344
344
|
|
|
@@ -370,7 +370,7 @@ Transfer Process (DSP compliant) with current state, or TransferError if the ope
|
|
|
370
370
|
|
|
371
371
|
***
|
|
372
372
|
|
|
373
|
-
### negotiateAgreement()
|
|
373
|
+
### negotiateAgreement() {#negotiateagreement}
|
|
374
374
|
|
|
375
375
|
> **negotiateAgreement**(`datasetId`, `offerId`, `providerEndpoint`, `publicOrigin`, `trustPayload`): `Promise`\<\{ `negotiationId`: `string`; \}\>
|
|
376
376
|
|
|
@@ -422,7 +422,7 @@ The negotiation ID. Use the registered callback for completion notification.
|
|
|
422
422
|
|
|
423
423
|
***
|
|
424
424
|
|
|
425
|
-
### getNegotiation()
|
|
425
|
+
### getNegotiation() {#getnegotiation}
|
|
426
426
|
|
|
427
427
|
> **getNegotiation**(`negotiationId`, `trustPayload`): `Promise`\<`IDataspaceProtocolContractNegotiation` \| `IDataspaceProtocolContractNegotiationError`\>
|
|
428
428
|
|
|
@@ -454,7 +454,7 @@ Current state of the negotiation.
|
|
|
454
454
|
|
|
455
455
|
***
|
|
456
456
|
|
|
457
|
-
### getNegotiationHistory()
|
|
457
|
+
### getNegotiationHistory() {#getnegotiationhistory}
|
|
458
458
|
|
|
459
459
|
> **getNegotiationHistory**(`state`, `cursor`, `trustPayload`): `Promise`\<\{ `negotiations`: `object`[]; `cursor?`: `string`; `count`: `number`; \}\>
|
|
460
460
|
|
|
@@ -492,7 +492,7 @@ List of negotiation history entries with pagination.
|
|
|
492
492
|
|
|
493
493
|
***
|
|
494
494
|
|
|
495
|
-
### resolveConsumerPid()
|
|
495
|
+
### resolveConsumerPid() {#resolveconsumerpid}
|
|
496
496
|
|
|
497
497
|
> **resolveConsumerPid**(`consumerPid`, `trustPayload`): `Promise`\<`ITransferContext`\>
|
|
498
498
|
|
|
@@ -524,7 +524,7 @@ Transfer Context with Agreement, datasetId, and Transfer Process metadata.
|
|
|
524
524
|
|
|
525
525
|
***
|
|
526
526
|
|
|
527
|
-
### resolveProviderPid()
|
|
527
|
+
### resolveProviderPid() {#resolveproviderpid}
|
|
528
528
|
|
|
529
529
|
> **resolveProviderPid**(`providerPid`, `trustPayload`): `Promise`\<`ITransferContext`\>
|
|
530
530
|
|
|
@@ -4,7 +4,7 @@ Dataspace Control Plane service configuration.
|
|
|
4
4
|
|
|
5
5
|
## Properties
|
|
6
6
|
|
|
7
|
-
### overrideTrustGeneratorType?
|
|
7
|
+
### overrideTrustGeneratorType? {#overridetrustgeneratortype}
|
|
8
8
|
|
|
9
9
|
> `optional` **overrideTrustGeneratorType**: `string`
|
|
10
10
|
|
|
@@ -13,7 +13,7 @@ If not specified, the default trust generator configured in the trust component
|
|
|
13
13
|
|
|
14
14
|
***
|
|
15
15
|
|
|
16
|
-
### dataPlanePath?
|
|
16
|
+
### dataPlanePath? {#dataplanepath}
|
|
17
17
|
|
|
18
18
|
> `optional` **dataPlanePath**: `string`
|
|
19
19
|
|
|
@@ -4,7 +4,7 @@ Dataspace Control Plane service constructor options.
|
|
|
4
4
|
|
|
5
5
|
## Properties
|
|
6
6
|
|
|
7
|
-
### policyAdministrationPointComponentType?
|
|
7
|
+
### policyAdministrationPointComponentType? {#policyadministrationpointcomponenttype}
|
|
8
8
|
|
|
9
9
|
> `optional` **policyAdministrationPointComponentType**: `string`
|
|
10
10
|
|
|
@@ -13,7 +13,7 @@ Used for Agreement lookup and validation during Transfer Process initiation.
|
|
|
13
13
|
|
|
14
14
|
***
|
|
15
15
|
|
|
16
|
-
### policyNegotiationPointComponentType?
|
|
16
|
+
### policyNegotiationPointComponentType? {#policynegotiationpointcomponenttype}
|
|
17
17
|
|
|
18
18
|
> `optional` **policyNegotiationPointComponentType**: `string`
|
|
19
19
|
|
|
@@ -22,7 +22,7 @@ Used for contract negotiation to create agreements before transfer processes.
|
|
|
22
22
|
|
|
23
23
|
***
|
|
24
24
|
|
|
25
|
-
### policyNegotiationAdminPointComponentType?
|
|
25
|
+
### policyNegotiationAdminPointComponentType? {#policynegotiationadminpointcomponenttype}
|
|
26
26
|
|
|
27
27
|
> `optional` **policyNegotiationAdminPointComponentType**: `string`
|
|
28
28
|
|
|
@@ -32,7 +32,7 @@ Optional - if not provided, negotiation history will not be available.
|
|
|
32
32
|
|
|
33
33
|
***
|
|
34
34
|
|
|
35
|
-
### federatedCatalogueComponentType?
|
|
35
|
+
### federatedCatalogueComponentType? {#federatedcataloguecomponenttype}
|
|
36
36
|
|
|
37
37
|
> `optional` **federatedCatalogueComponentType**: `string`
|
|
38
38
|
|
|
@@ -42,7 +42,7 @@ Validates that Agreements reference valid catalog datasets.
|
|
|
42
42
|
|
|
43
43
|
***
|
|
44
44
|
|
|
45
|
-
### loggingComponentType?
|
|
45
|
+
### loggingComponentType? {#loggingcomponenttype}
|
|
46
46
|
|
|
47
47
|
> `optional` **loggingComponentType**: `string`
|
|
48
48
|
|
|
@@ -50,7 +50,7 @@ Logging component type.
|
|
|
50
50
|
|
|
51
51
|
***
|
|
52
52
|
|
|
53
|
-
### identityComponentType?
|
|
53
|
+
### identityComponentType? {#identitycomponenttype}
|
|
54
54
|
|
|
55
55
|
> `optional` **identityComponentType**: `string`
|
|
56
56
|
|
|
@@ -58,7 +58,7 @@ Identity component type (for token signing/verification).
|
|
|
58
58
|
|
|
59
59
|
***
|
|
60
60
|
|
|
61
|
-
### identityAuthenticationComponentType?
|
|
61
|
+
### identityAuthenticationComponentType? {#identityauthenticationcomponenttype}
|
|
62
62
|
|
|
63
63
|
> `optional` **identityAuthenticationComponentType**: `string`
|
|
64
64
|
|
|
@@ -66,7 +66,7 @@ Identity Authentication component type (for token validation).
|
|
|
66
66
|
|
|
67
67
|
***
|
|
68
68
|
|
|
69
|
-
### trustComponentType?
|
|
69
|
+
### trustComponentType? {#trustcomponenttype}
|
|
70
70
|
|
|
71
71
|
> `optional` **trustComponentType**: `string`
|
|
72
72
|
|
|
@@ -75,7 +75,7 @@ Used to verify JWT/VC tokens and extract identity information.
|
|
|
75
75
|
|
|
76
76
|
***
|
|
77
77
|
|
|
78
|
-
### transferProcessEntityStorageType?
|
|
78
|
+
### transferProcessEntityStorageType? {#transferprocessentitystoragetype}
|
|
79
79
|
|
|
80
80
|
> `optional` **transferProcessEntityStorageType**: `string`
|
|
81
81
|
|
|
@@ -85,7 +85,7 @@ Must match the Data Plane's transferProcessEntityStorageType for shared storage.
|
|
|
85
85
|
|
|
86
86
|
***
|
|
87
87
|
|
|
88
|
-
### taskSchedulerComponentType?
|
|
88
|
+
### taskSchedulerComponentType? {#taskschedulercomponenttype}
|
|
89
89
|
|
|
90
90
|
> `optional` **taskSchedulerComponentType**: `string`
|
|
91
91
|
|
|
@@ -93,7 +93,7 @@ Task scheduler component type for periodic cleanup of stalled negotiations.
|
|
|
93
93
|
|
|
94
94
|
***
|
|
95
95
|
|
|
96
|
-
### config?
|
|
96
|
+
### config? {#config}
|
|
97
97
|
|
|
98
98
|
> `optional` **config**: [`IDataspaceControlPlaneServiceConfig`](IDataspaceControlPlaneServiceConfig.md)
|
|
99
99
|
|
|
@@ -4,7 +4,7 @@ Negotiation state tracked internally for callback routing.
|
|
|
4
4
|
|
|
5
5
|
## Properties
|
|
6
6
|
|
|
7
|
-
### negotiationId
|
|
7
|
+
### negotiationId {#negotiationid}
|
|
8
8
|
|
|
9
9
|
> **negotiationId**: `string`
|
|
10
10
|
|
|
@@ -12,7 +12,7 @@ The negotiation ID (self-reference for lookup).
|
|
|
12
12
|
|
|
13
13
|
***
|
|
14
14
|
|
|
15
|
-
### state
|
|
15
|
+
### state {#state}
|
|
16
16
|
|
|
17
17
|
> **state**: `DataspaceProtocolContractNegotiationStateType`
|
|
18
18
|
|
|
@@ -20,7 +20,7 @@ Current negotiation state.
|
|
|
20
20
|
|
|
21
21
|
***
|
|
22
22
|
|
|
23
|
-
### agreement?
|
|
23
|
+
### agreement? {#agreement}
|
|
24
24
|
|
|
25
25
|
> `optional` **agreement**: `IDataspaceProtocolAgreement`
|
|
26
26
|
|
|
@@ -28,7 +28,7 @@ Agreement received from provider (stored until finalized).
|
|
|
28
28
|
|
|
29
29
|
***
|
|
30
30
|
|
|
31
|
-
### startedAt
|
|
31
|
+
### startedAt {#startedat}
|
|
32
32
|
|
|
33
33
|
> **startedAt**: `number`
|
|
34
34
|
|
|
@@ -36,7 +36,7 @@ Timestamp when negotiation started.
|
|
|
36
36
|
|
|
37
37
|
***
|
|
38
38
|
|
|
39
|
-
### updatedAt
|
|
39
|
+
### updatedAt {#updatedat}
|
|
40
40
|
|
|
41
41
|
> **updatedAt**: `number`
|
|
42
42
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@twin.org/dataspace-control-plane-service",
|
|
3
|
-
"version": "0.0.3-next.
|
|
3
|
+
"version": "0.0.3-next.20",
|
|
4
4
|
"description": "Implements agreement negotiation and transfer process lifecycle management for control plane operations.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
"@twin.org/api-models": "next",
|
|
18
18
|
"@twin.org/context": "next",
|
|
19
19
|
"@twin.org/core": "next",
|
|
20
|
-
"@twin.org/dataspace-models": "0.0.3-next.
|
|
20
|
+
"@twin.org/dataspace-models": "0.0.3-next.20",
|
|
21
21
|
"@twin.org/entity": "next",
|
|
22
22
|
"@twin.org/entity-storage-models": "next",
|
|
23
23
|
"@twin.org/federated-catalogue-models": "next",
|