@twin.org/dataspace-control-plane-service 0.0.3-next.26 → 0.0.3-next.27
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 +275 -9
- package/dist/es/dataspaceControlPlaneRoutes.js.map +1 -1
- package/dist/es/dataspaceControlPlaneService.js +272 -60
- package/dist/es/dataspaceControlPlaneService.js.map +1 -1
- package/dist/es/models/IDataspaceControlPlaneServiceConstructorOptions.js.map +1 -1
- package/dist/es/schema.js +2 -1
- package/dist/es/schema.js.map +1 -1
- package/dist/types/dataspaceControlPlaneService.d.ts +42 -3
- package/dist/types/models/IDataspaceControlPlaneServiceConstructorOptions.d.ts +10 -0
- package/docs/changelog.md +42 -28
- package/docs/reference/classes/DataspaceControlPlaneService.md +160 -1
- package/docs/reference/interfaces/IDataspaceControlPlaneServiceConstructorOptions.md +28 -0
- package/locales/en.json +9 -7
- package/package.json +7 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IDataspaceControlPlaneServiceConstructorOptions.js","sourceRoot":"","sources":["../../../src/models/IDataspaceControlPlaneServiceConstructorOptions.ts"],"names":[],"mappings":"","sourcesContent":["// Copyright 2025 IOTA Stiftung.\n// SPDX-License-Identifier: Apache-2.0.\nimport type { IDataspaceControlPlaneServiceConfig } from \"./IDataspaceControlPlaneServiceConfig.js\";\n\n/**\n * Dataspace Control Plane service constructor options.\n */\nexport interface IDataspaceControlPlaneServiceConstructorOptions {\n\t/**\n\t * Policy Administration Point component type.\n\t * Used for Agreement lookup and validation during Transfer Process initiation.\n\t * @default policy-administration-point\n\t */\n\tpolicyAdministrationPointComponentType?: string;\n\n\t/**\n\t * Policy Negotiation Point component type.\n\t * Used for contract negotiation to create agreements before transfer processes.\n\t * @default policy-negotiation-point\n\t */\n\tpolicyNegotiationPointComponentType?: string;\n\n\t/**\n\t * Policy Negotiation Admin Point component type.\n\t * Used for querying negotiation history.\n\t * Optional - if not provided, negotiation history will not be available.\n\t * @default policy-negotiation-admin-point\n\t */\n\tpolicyNegotiationAdminPointComponentType?: string;\n\n\t/**\n\t * Federated Catalogue component type.\n\t * Used for dataset validation during Transfer Process initiation.\n\t * Validates that Agreements reference valid catalog datasets.\n\t * @default federated-catalogue\n\t */\n\tfederatedCatalogueComponentType?: string;\n\n\t/**\n\t * Logging component type.\n\t * @default logging\n\t */\n\tloggingComponentType?: string;\n\n\t/**\n\t * Identity component type (for token signing/verification).\n\t * @default identity\n\t */\n\tidentityComponentType?: string;\n\n\t/**\n\t * Identity Authentication component type (for token validation).\n\t * @default identity-authentication\n\t */\n\tidentityAuthenticationComponentType?: string;\n\n\t/**\n\t * Trust component type for trust verification.\n\t * Used to verify JWT/VC tokens and extract identity information.\n\t * @default trust\n\t */\n\ttrustComponentType?: string;\n\n\t/**\n\t * Entity storage type for Transfer Process entities.\n\t * Used to persist transfer state for the consumerPid flow.\n\t * Must match the Data Plane's transferProcessEntityStorageType for shared storage.\n\t * @default transfer-process\n\t */\n\ttransferProcessEntityStorageType?: string;\n\n\t/**\n\t * Task scheduler component type for periodic cleanup of stalled negotiations.\n\t * @default task-scheduler\n\t */\n\ttaskSchedulerComponentType?: string;\n\n\t/**\n\t * The configuration of the Dataspace Control Plane Service.\n\t */\n\tconfig?: IDataspaceControlPlaneServiceConfig;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"IDataspaceControlPlaneServiceConstructorOptions.js","sourceRoot":"","sources":["../../../src/models/IDataspaceControlPlaneServiceConstructorOptions.ts"],"names":[],"mappings":"","sourcesContent":["// Copyright 2025 IOTA Stiftung.\n// SPDX-License-Identifier: Apache-2.0.\nimport type { IDataspaceControlPlaneServiceConfig } from \"./IDataspaceControlPlaneServiceConfig.js\";\n\n/**\n * Dataspace Control Plane service constructor options.\n */\nexport interface IDataspaceControlPlaneServiceConstructorOptions {\n\t/**\n\t * Policy Administration Point component type.\n\t * Used for Agreement lookup and validation during Transfer Process initiation.\n\t * @default policy-administration-point\n\t */\n\tpolicyAdministrationPointComponentType?: string;\n\n\t/**\n\t * Policy Negotiation Point component type.\n\t * Used for contract negotiation to create agreements before transfer processes.\n\t * @default policy-negotiation-point\n\t */\n\tpolicyNegotiationPointComponentType?: string;\n\n\t/**\n\t * Policy Negotiation Admin Point component type.\n\t * Used for querying negotiation history.\n\t * Optional - if not provided, negotiation history will not be available.\n\t * @default policy-negotiation-admin-point\n\t */\n\tpolicyNegotiationAdminPointComponentType?: string;\n\n\t/**\n\t * Federated Catalogue component type.\n\t * Used for dataset validation during Transfer Process initiation.\n\t * Validates that Agreements reference valid catalog datasets.\n\t * @default federated-catalogue\n\t */\n\tfederatedCatalogueComponentType?: string;\n\n\t/**\n\t * Logging component type.\n\t * @default logging\n\t */\n\tloggingComponentType?: string;\n\n\t/**\n\t * Identity component type (for token signing/verification).\n\t * @default identity\n\t */\n\tidentityComponentType?: string;\n\n\t/**\n\t * Identity Authentication component type (for token validation).\n\t * @default identity-authentication\n\t */\n\tidentityAuthenticationComponentType?: string;\n\n\t/**\n\t * Trust component type for trust verification.\n\t * Used to verify JWT/VC tokens and extract identity information.\n\t * @default trust\n\t */\n\ttrustComponentType?: string;\n\n\t/**\n\t * Entity storage type for Transfer Process entities.\n\t * Used to persist transfer state for the consumerPid flow.\n\t * Must match the Data Plane's transferProcessEntityStorageType for shared storage.\n\t * @default transfer-process\n\t */\n\ttransferProcessEntityStorageType?: string;\n\n\t/**\n\t * Entity storage type for Dataspace App Dataset entities.\n\t * @default dataspace-app-dataset\n\t */\n\tdataspaceAppDatasetEntityStorageType?: string;\n\n\t/**\n\t * Task scheduler component type for periodic cleanup of stalled negotiations.\n\t * @default task-scheduler\n\t */\n\ttaskSchedulerComponentType?: string;\n\n\t/**\n\t * URL Transformer component type used to encrypt the tenant token into the data-plane..\n\t * @default url-transformer\n\t */\n\turlTransformerComponentType?: string;\n\n\t/**\n\t * The configuration of the Dataspace Control Plane Service.\n\t */\n\tconfig?: IDataspaceControlPlaneServiceConfig;\n}\n"]}
|
package/dist/es/schema.js
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
// Copyright 2025 IOTA Stiftung.
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0.
|
|
3
|
-
import { TransferProcess } from "@twin.org/dataspace-models";
|
|
3
|
+
import { DataspaceAppDataset, TransferProcess } from "@twin.org/dataspace-models";
|
|
4
4
|
import { EntitySchemaFactory, EntitySchemaHelper } from "@twin.org/entity";
|
|
5
5
|
/**
|
|
6
6
|
* Inits schemas for Control Plane entities.
|
|
7
7
|
*/
|
|
8
8
|
export function initSchema() {
|
|
9
9
|
EntitySchemaFactory.register("TransferProcess", () => EntitySchemaHelper.getSchema(TransferProcess));
|
|
10
|
+
EntitySchemaFactory.register("DataspaceAppDataset", () => EntitySchemaHelper.getSchema(DataspaceAppDataset));
|
|
10
11
|
}
|
|
11
12
|
//# sourceMappingURL=schema.js.map
|
package/dist/es/schema.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/schema.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,uCAAuC;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/schema.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,uCAAuC;AACvC,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAClF,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAG3E;;GAEG;AACH,MAAM,UAAU,UAAU;IACzB,mBAAmB,CAAC,QAAQ,oBAA4B,GAAG,EAAE,CAC5D,kBAAkB,CAAC,SAAS,CAAC,eAAe,CAAC,CAC7C,CAAC;IACF,mBAAmB,CAAC,QAAQ,wBAAgC,GAAG,EAAE,CAChE,kBAAkB,CAAC,SAAS,CAAC,mBAAmB,CAAC,CACjD,CAAC;AACH,CAAC","sourcesContent":["// Copyright 2025 IOTA Stiftung.\n// SPDX-License-Identifier: Apache-2.0.\nimport { DataspaceAppDataset, TransferProcess } from \"@twin.org/dataspace-models\";\nimport { EntitySchemaFactory, EntitySchemaHelper } from \"@twin.org/entity\";\nimport { nameof } from \"@twin.org/nameof\";\n\n/**\n * Inits schemas for Control Plane entities.\n */\nexport function initSchema(): void {\n\tEntitySchemaFactory.register(nameof<TransferProcess>(), () =>\n\t\tEntitySchemaHelper.getSchema(TransferProcess)\n\t);\n\tEntitySchemaFactory.register(nameof<DataspaceAppDataset>(), () =>\n\t\tEntitySchemaHelper.getSchema(DataspaceAppDataset)\n\t);\n}\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { type IDataspaceControlPlaneComponent, type IDataspaceControlPlaneResolverComponent, type INegotiationCallback, type ITransferContext } from "@twin.org/dataspace-models";
|
|
2
|
-
import { type IDataspaceProtocolContractNegotiation, type IDataspaceProtocolContractNegotiationError, type IDataspaceProtocolTransferCompletionMessage, type IDataspaceProtocolTransferError, type IDataspaceProtocolTransferProcess, type IDataspaceProtocolTransferRequestMessage, type IDataspaceProtocolTransferStartMessage, type IDataspaceProtocolTransferSuspensionMessage, type IDataspaceProtocolTransferTerminationMessage } from "@twin.org/standards-dataspace-protocol";
|
|
1
|
+
import { type IDataspaceControlPlaneComponent, type IDataspaceControlPlaneResolverComponent, type INegotiationCallback, type IDataspaceAppDataset, type ITransferContext } from "@twin.org/dataspace-models";
|
|
2
|
+
import { type IDataspaceProtocolContractNegotiation, type IDataspaceProtocolContractNegotiationError, type IDataspaceProtocolDataset, type IDataspaceProtocolTransferCompletionMessage, type IDataspaceProtocolTransferError, type IDataspaceProtocolTransferProcess, type IDataspaceProtocolTransferRequestMessage, type IDataspaceProtocolTransferStartMessage, type IDataspaceProtocolTransferSuspensionMessage, type IDataspaceProtocolTransferTerminationMessage } from "@twin.org/standards-dataspace-protocol";
|
|
3
3
|
import type { IDataspaceControlPlaneServiceConstructorOptions } from "./models/IDataspaceControlPlaneServiceConstructorOptions.js";
|
|
4
4
|
/**
|
|
5
5
|
* Dataspace Control Plane Service implementation.
|
|
@@ -38,7 +38,9 @@ export declare class DataspaceControlPlaneService implements IDataspaceControlPl
|
|
|
38
38
|
/**
|
|
39
39
|
* The service needs to be started when the application is initialized.
|
|
40
40
|
* Populates the Federated Catalogue with datasets from registered apps
|
|
41
|
-
* and starts the stalled negotiation cleanup task.
|
|
41
|
+
* and starts the stalled negotiation cleanup task. Also captures the node
|
|
42
|
+
* identity from ContextIdStore when tenant-token encryption is configured
|
|
43
|
+
* (required to derive the vault key name `${nodeId}/${signingKeyName}`).
|
|
42
44
|
* @param nodeLoggingComponentType The node logging component type.
|
|
43
45
|
*/
|
|
44
46
|
start(nodeLoggingComponentType?: string): Promise<void>;
|
|
@@ -151,4 +153,41 @@ export declare class DataspaceControlPlaneService implements IDataspaceControlPl
|
|
|
151
153
|
* @returns Transfer Context with Agreement, datasetId, and Transfer Process metadata.
|
|
152
154
|
*/
|
|
153
155
|
resolveProviderPid(providerPid: string, trustPayload: unknown): Promise<ITransferContext>;
|
|
156
|
+
/**
|
|
157
|
+
* Register a dataset for a dataspace app, owned by the calling tenant.
|
|
158
|
+
* @param id Optional explicit id. If omitted, derived from `dataset["@id"]`
|
|
159
|
+
* or generated.
|
|
160
|
+
* @param appId The dataspace app this dataset belongs to.
|
|
161
|
+
* @param dataset The dataset payload.
|
|
162
|
+
* @returns The resolved dataset id.
|
|
163
|
+
*/
|
|
164
|
+
createAppDataset(id: string | undefined, appId: string, dataset: IDataspaceProtocolDataset): Promise<string>;
|
|
165
|
+
/**
|
|
166
|
+
* Get a dataset record owned by the calling tenant.
|
|
167
|
+
* @param id The stored dataset id.
|
|
168
|
+
* @returns The stored dataset record.
|
|
169
|
+
*/
|
|
170
|
+
getAppDataset(id: string): Promise<IDataspaceAppDataset>;
|
|
171
|
+
/**
|
|
172
|
+
* List the dataspace app datasets owned by the calling tenant.
|
|
173
|
+
* @param cursor Optional pagination cursor.
|
|
174
|
+
* @param limit Optional maximum number of entries to return.
|
|
175
|
+
* @returns The stored datasets and the next-page cursor if more exist.
|
|
176
|
+
*/
|
|
177
|
+
listAppDatasets(cursor?: string, limit?: number): Promise<{
|
|
178
|
+
entities: IDataspaceAppDataset[];
|
|
179
|
+
cursor?: string;
|
|
180
|
+
}>;
|
|
181
|
+
/**
|
|
182
|
+
* Update a dataset record owned by the calling tenant.
|
|
183
|
+
* @param id The stored dataset id.
|
|
184
|
+
* @param appId The dataspace app this dataset belongs to.
|
|
185
|
+
* @param dataset The dataset payload.
|
|
186
|
+
*/
|
|
187
|
+
updateAppDataset(id: string, appId: string, dataset: IDataspaceProtocolDataset): Promise<void>;
|
|
188
|
+
/**
|
|
189
|
+
* Delete a dataspace app dataset owned by the calling tenant.
|
|
190
|
+
* @param id The stored app dataset id.
|
|
191
|
+
*/
|
|
192
|
+
deleteAppDataset(id: string): Promise<void>;
|
|
154
193
|
}
|
|
@@ -57,11 +57,21 @@ export interface IDataspaceControlPlaneServiceConstructorOptions {
|
|
|
57
57
|
* @default transfer-process
|
|
58
58
|
*/
|
|
59
59
|
transferProcessEntityStorageType?: string;
|
|
60
|
+
/**
|
|
61
|
+
* Entity storage type for Dataspace App Dataset entities.
|
|
62
|
+
* @default dataspace-app-dataset
|
|
63
|
+
*/
|
|
64
|
+
dataspaceAppDatasetEntityStorageType?: string;
|
|
60
65
|
/**
|
|
61
66
|
* Task scheduler component type for periodic cleanup of stalled negotiations.
|
|
62
67
|
* @default task-scheduler
|
|
63
68
|
*/
|
|
64
69
|
taskSchedulerComponentType?: string;
|
|
70
|
+
/**
|
|
71
|
+
* URL Transformer component type used to encrypt the tenant token into the data-plane..
|
|
72
|
+
* @default url-transformer
|
|
73
|
+
*/
|
|
74
|
+
urlTransformerComponentType?: string;
|
|
65
75
|
/**
|
|
66
76
|
* The configuration of the Dataspace Control Plane Service.
|
|
67
77
|
*/
|
package/docs/changelog.md
CHANGED
|
@@ -1,11 +1,25 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
-
## [0.0.3-next.
|
|
3
|
+
## [0.0.3-next.27](https://github.com/iotaledger/twin-dataspace/compare/dataspace-control-plane-service-v0.0.3-next.26...dataspace-control-plane-service-v0.0.3-next.27) (2026-05-08)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Features
|
|
7
|
+
|
|
8
|
+
* endpoint encryption + getDatasetTargets multi-target fix ([#112](https://github.com/iotaledger/twin-dataspace/issues/112)) ([3288941](https://github.com/iotaledger/twin-dataspace/commit/328894113c19c7402f7d00dfa77b6a97ae40ca91))
|
|
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.26 to 0.0.3-next.27
|
|
16
|
+
|
|
17
|
+
## [0.0.3-next.26](https://github.com/iotaledger/twin-dataspace/compare/dataspace-control-plane-service-v0.0.3-next.25...dataspace-control-plane-service-v0.0.3-next.26) (2026-04-14)
|
|
4
18
|
|
|
5
19
|
|
|
6
20
|
### Bug Fixes
|
|
7
21
|
|
|
8
|
-
* dependency update ([fbff0dd](https://github.com/
|
|
22
|
+
* dependency update ([fbff0dd](https://github.com/iotaledger/twin-dataspace/commit/fbff0ddae93d82bd2899001368d7a03b482ce05c))
|
|
9
23
|
|
|
10
24
|
|
|
11
25
|
### Dependencies
|
|
@@ -14,7 +28,7 @@
|
|
|
14
28
|
* dependencies
|
|
15
29
|
* @twin.org/dataspace-models bumped from 0.0.3-next.25 to 0.0.3-next.26
|
|
16
30
|
|
|
17
|
-
## [0.0.3-next.25](https://github.com/
|
|
31
|
+
## [0.0.3-next.25](https://github.com/iotaledger/twin-dataspace/compare/dataspace-control-plane-service-v0.0.3-next.24...dataspace-control-plane-service-v0.0.3-next.25) (2026-04-10)
|
|
18
32
|
|
|
19
33
|
|
|
20
34
|
### Miscellaneous Chores
|
|
@@ -28,12 +42,12 @@
|
|
|
28
42
|
* dependencies
|
|
29
43
|
* @twin.org/dataspace-models bumped from 0.0.3-next.24 to 0.0.3-next.25
|
|
30
44
|
|
|
31
|
-
## [0.0.3-next.24](https://github.com/
|
|
45
|
+
## [0.0.3-next.24](https://github.com/iotaledger/twin-dataspace/compare/dataspace-control-plane-service-v0.0.3-next.23...dataspace-control-plane-service-v0.0.3-next.24) (2026-03-31)
|
|
32
46
|
|
|
33
47
|
|
|
34
48
|
### Features
|
|
35
49
|
|
|
36
|
-
* skip tenant dsp transfer routes ([#97](https://github.com/
|
|
50
|
+
* skip tenant dsp transfer routes ([#97](https://github.com/iotaledger/twin-dataspace/issues/97)) ([2f1ad97](https://github.com/iotaledger/twin-dataspace/commit/2f1ad971bc50ad24bb9f68759fbd4d44527d3d02))
|
|
37
51
|
|
|
38
52
|
|
|
39
53
|
### Dependencies
|
|
@@ -42,7 +56,7 @@
|
|
|
42
56
|
* dependencies
|
|
43
57
|
* @twin.org/dataspace-models bumped from 0.0.3-next.23 to 0.0.3-next.24
|
|
44
58
|
|
|
45
|
-
## [0.0.3-next.23](https://github.com/
|
|
59
|
+
## [0.0.3-next.23](https://github.com/iotaledger/twin-dataspace/compare/dataspace-control-plane-service-v0.0.3-next.22...dataspace-control-plane-service-v0.0.3-next.23) (2026-03-25)
|
|
46
60
|
|
|
47
61
|
|
|
48
62
|
### Miscellaneous Chores
|
|
@@ -56,12 +70,12 @@
|
|
|
56
70
|
* dependencies
|
|
57
71
|
* @twin.org/dataspace-models bumped from 0.0.3-next.22 to 0.0.3-next.23
|
|
58
72
|
|
|
59
|
-
## [0.0.3-next.22](https://github.com/
|
|
73
|
+
## [0.0.3-next.22](https://github.com/iotaledger/twin-dataspace/compare/dataspace-control-plane-service-v0.0.3-next.21...dataspace-control-plane-service-v0.0.3-next.22) (2026-03-20)
|
|
60
74
|
|
|
61
75
|
|
|
62
76
|
### Features
|
|
63
77
|
|
|
64
|
-
* internalise constant ([9b9b293](https://github.com/
|
|
78
|
+
* internalise constant ([9b9b293](https://github.com/iotaledger/twin-dataspace/commit/9b9b2933588ee70811a601bc485b5abaa12bed41))
|
|
65
79
|
|
|
66
80
|
|
|
67
81
|
### Dependencies
|
|
@@ -70,18 +84,18 @@
|
|
|
70
84
|
* dependencies
|
|
71
85
|
* @twin.org/dataspace-models bumped from 0.0.3-next.21 to 0.0.3-next.22
|
|
72
86
|
|
|
73
|
-
## [0.0.3-next.21](https://github.com/
|
|
87
|
+
## [0.0.3-next.21](https://github.com/iotaledger/twin-dataspace/compare/dataspace-control-plane-service-v0.0.3-next.20...dataspace-control-plane-service-v0.0.3-next.21) (2026-03-17)
|
|
74
88
|
|
|
75
89
|
|
|
76
90
|
### Features
|
|
77
91
|
|
|
78
|
-
* improve open-api examples ([1368dbe](https://github.com/
|
|
79
|
-
* improve open-api examples ([44f7350](https://github.com/
|
|
92
|
+
* improve open-api examples ([1368dbe](https://github.com/iotaledger/twin-dataspace/commit/1368dbed5c36e074b4854942304a19b9ce51e088))
|
|
93
|
+
* improve open-api examples ([44f7350](https://github.com/iotaledger/twin-dataspace/commit/44f7350c625d8d6afdca88b292dd48ef03253412))
|
|
80
94
|
|
|
81
95
|
|
|
82
96
|
### Bug Fixes
|
|
83
97
|
|
|
84
|
-
* handle missing target in catalogue offers during policy derivation check ([#89](https://github.com/
|
|
98
|
+
* handle missing target in catalogue offers during policy derivation check ([#89](https://github.com/iotaledger/twin-dataspace/issues/89)) ([a0e0dbc](https://github.com/iotaledger/twin-dataspace/commit/a0e0dbc8d9111d5d1c43e905249825e5d8d62816))
|
|
85
99
|
|
|
86
100
|
|
|
87
101
|
### Dependencies
|
|
@@ -90,12 +104,12 @@
|
|
|
90
104
|
* dependencies
|
|
91
105
|
* @twin.org/dataspace-models bumped from 0.0.3-next.20 to 0.0.3-next.21
|
|
92
106
|
|
|
93
|
-
## [0.0.3-next.20](https://github.com/
|
|
107
|
+
## [0.0.3-next.20](https://github.com/iotaledger/twin-dataspace/compare/dataspace-control-plane-service-v0.0.3-next.19...dataspace-control-plane-service-v0.0.3-next.20) (2026-03-17)
|
|
94
108
|
|
|
95
109
|
|
|
96
110
|
### Features
|
|
97
111
|
|
|
98
|
-
* improve open-api examples ([f065f4b](https://github.com/
|
|
112
|
+
* improve open-api examples ([f065f4b](https://github.com/iotaledger/twin-dataspace/commit/f065f4bd55540041a653ef141c4be29a83c5055e))
|
|
99
113
|
|
|
100
114
|
|
|
101
115
|
### Dependencies
|
|
@@ -104,12 +118,12 @@
|
|
|
104
118
|
* dependencies
|
|
105
119
|
* @twin.org/dataspace-models bumped from 0.0.3-next.19 to 0.0.3-next.20
|
|
106
120
|
|
|
107
|
-
## [0.0.3-next.19](https://github.com/
|
|
121
|
+
## [0.0.3-next.19](https://github.com/iotaledger/twin-dataspace/compare/dataspace-control-plane-service-v0.0.3-next.18...dataspace-control-plane-service-v0.0.3-next.19) (2026-03-12)
|
|
108
122
|
|
|
109
123
|
|
|
110
124
|
### Features
|
|
111
125
|
|
|
112
|
-
* improve validation ([#82](https://github.com/
|
|
126
|
+
* improve validation ([#82](https://github.com/iotaledger/twin-dataspace/issues/82)) ([8bfaf7b](https://github.com/iotaledger/twin-dataspace/commit/8bfaf7b830f89b63575f8a51ee96bd8ac4da02f4))
|
|
113
127
|
|
|
114
128
|
|
|
115
129
|
### Dependencies
|
|
@@ -118,12 +132,12 @@
|
|
|
118
132
|
* dependencies
|
|
119
133
|
* @twin.org/dataspace-models bumped from 0.0.3-next.18 to 0.0.3-next.19
|
|
120
134
|
|
|
121
|
-
## [0.0.3-next.18](https://github.com/
|
|
135
|
+
## [0.0.3-next.18](https://github.com/iotaledger/twin-dataspace/compare/dataspace-control-plane-service-v0.0.3-next.17...dataspace-control-plane-service-v0.0.3-next.18) (2026-03-09)
|
|
122
136
|
|
|
123
137
|
|
|
124
138
|
### Features
|
|
125
139
|
|
|
126
|
-
* resolve DSP transfer flow bugs for cross-node communication ([#76](https://github.com/
|
|
140
|
+
* resolve DSP transfer flow bugs for cross-node communication ([#76](https://github.com/iotaledger/twin-dataspace/issues/76)) ([506a45c](https://github.com/iotaledger/twin-dataspace/commit/506a45c94e63d5f958b1fc7131adfe452c3e2974))
|
|
127
141
|
|
|
128
142
|
|
|
129
143
|
### Dependencies
|
|
@@ -132,18 +146,18 @@
|
|
|
132
146
|
* dependencies
|
|
133
147
|
* @twin.org/dataspace-models bumped from 0.0.3-next.17 to 0.0.3-next.18
|
|
134
148
|
|
|
135
|
-
## [0.0.3-next.17](https://github.com/
|
|
149
|
+
## [0.0.3-next.17](https://github.com/iotaledger/twin-dataspace/compare/dataspace-control-plane-service-v0.0.3-next.16...dataspace-control-plane-service-v0.0.3-next.17) (2026-03-06)
|
|
136
150
|
|
|
137
151
|
|
|
138
152
|
### Features
|
|
139
153
|
|
|
140
|
-
* docs update ([8b44c7a](https://github.com/
|
|
141
|
-
* types update ([77c338e](https://github.com/
|
|
154
|
+
* docs update ([8b44c7a](https://github.com/iotaledger/twin-dataspace/commit/8b44c7a75afb8d377a6f606616f8a78d58439ab4))
|
|
155
|
+
* types update ([77c338e](https://github.com/iotaledger/twin-dataspace/commit/77c338e9244dcc7e3d597fdb06229513b1f13eac))
|
|
142
156
|
|
|
143
157
|
|
|
144
158
|
### Bug Fixes
|
|
145
159
|
|
|
146
|
-
* avoid compaction of incoming activities ([#77](https://github.com/
|
|
160
|
+
* avoid compaction of incoming activities ([#77](https://github.com/iotaledger/twin-dataspace/issues/77)) ([ff43d6a](https://github.com/iotaledger/twin-dataspace/commit/ff43d6a3e1563eb9cb185501134b2a53ae88787c))
|
|
147
161
|
|
|
148
162
|
|
|
149
163
|
### Dependencies
|
|
@@ -152,12 +166,12 @@
|
|
|
152
166
|
* dependencies
|
|
153
167
|
* @twin.org/dataspace-models bumped from 0.0.3-next.16 to 0.0.3-next.17
|
|
154
168
|
|
|
155
|
-
## [0.0.3-next.16](https://github.com/
|
|
169
|
+
## [0.0.3-next.16](https://github.com/iotaledger/twin-dataspace/compare/dataspace-control-plane-service-v0.0.3-next.15...dataspace-control-plane-service-v0.0.3-next.16) (2026-03-02)
|
|
156
170
|
|
|
157
171
|
|
|
158
172
|
### Bug Fixes
|
|
159
173
|
|
|
160
|
-
* docs and component init ([8557233](https://github.com/
|
|
174
|
+
* docs and component init ([8557233](https://github.com/iotaledger/twin-dataspace/commit/8557233fb3b8273c5c9a5b580fb43061f8efe47c))
|
|
161
175
|
|
|
162
176
|
|
|
163
177
|
### Dependencies
|
|
@@ -166,12 +180,12 @@
|
|
|
166
180
|
* dependencies
|
|
167
181
|
* @twin.org/dataspace-models bumped from 0.0.3-next.15 to 0.0.3-next.16
|
|
168
182
|
|
|
169
|
-
## [0.0.3-next.15](https://github.com/
|
|
183
|
+
## [0.0.3-next.15](https://github.com/iotaledger/twin-dataspace/compare/dataspace-control-plane-service-v0.0.3-next.14...dataspace-control-plane-service-v0.0.3-next.15) (2026-03-02)
|
|
170
184
|
|
|
171
185
|
|
|
172
186
|
### Features
|
|
173
187
|
|
|
174
|
-
* unification of the data exchange and the data space connector ([#57](https://github.com/
|
|
188
|
+
* unification of the data exchange and the data space connector ([#57](https://github.com/iotaledger/twin-dataspace/issues/57)) ([df2644d](https://github.com/iotaledger/twin-dataspace/commit/df2644d989471e07dadd83d27bef736179e31bf4))
|
|
175
189
|
|
|
176
190
|
|
|
177
191
|
### Dependencies
|
|
@@ -180,12 +194,12 @@
|
|
|
180
194
|
* dependencies
|
|
181
195
|
* @twin.org/dataspace-models bumped from 0.0.3-next.14 to 0.0.3-next.15
|
|
182
196
|
|
|
183
|
-
## [0.0.3-next.1](https://github.com/
|
|
197
|
+
## [0.0.3-next.1](https://github.com/iotaledger/twin-data-exchange/compare/data-exchange-service-v0.0.3-next.0...data-exchange-service-v0.0.3-next.1) (2026-01-19)
|
|
184
198
|
|
|
185
199
|
|
|
186
200
|
### Features
|
|
187
201
|
|
|
188
|
-
* mocking data exchange basic methods ([#5](https://github.com/
|
|
202
|
+
* mocking data exchange basic methods ([#5](https://github.com/iotaledger/twin-data-exchange/issues/5)) ([6cb00c0](https://github.com/iotaledger/twin-data-exchange/commit/6cb00c029aacf46da7bed0b3c97a21ef4102784a))
|
|
189
203
|
|
|
190
204
|
|
|
191
205
|
### Dependencies
|
|
@@ -120,7 +120,9 @@ The key used when registering the callback.
|
|
|
120
120
|
|
|
121
121
|
The service needs to be started when the application is initialized.
|
|
122
122
|
Populates the Federated Catalogue with datasets from registered apps
|
|
123
|
-
and starts the stalled negotiation cleanup task.
|
|
123
|
+
and starts the stalled negotiation cleanup task. Also captures the node
|
|
124
|
+
identity from ContextIdStore when tenant-token encryption is configured
|
|
125
|
+
(required to derive the vault key name `${nodeId}/${signingKeyName}`).
|
|
124
126
|
|
|
125
127
|
#### Parameters
|
|
126
128
|
|
|
@@ -553,3 +555,160 @@ Transfer Context with Agreement, datasetId, and Transfer Process metadata.
|
|
|
553
555
|
#### Implementation of
|
|
554
556
|
|
|
555
557
|
`IDataspaceControlPlaneResolverComponent.resolveProviderPid`
|
|
558
|
+
|
|
559
|
+
***
|
|
560
|
+
|
|
561
|
+
### createAppDataset() {#createappdataset}
|
|
562
|
+
|
|
563
|
+
> **createAppDataset**(`id`, `appId`, `dataset`): `Promise`\<`string`\>
|
|
564
|
+
|
|
565
|
+
Register a dataset for a dataspace app, owned by the calling tenant.
|
|
566
|
+
|
|
567
|
+
#### Parameters
|
|
568
|
+
|
|
569
|
+
##### id
|
|
570
|
+
|
|
571
|
+
`string` \| `undefined`
|
|
572
|
+
|
|
573
|
+
Optional explicit id. If omitted, derived from `dataset["@id"]`
|
|
574
|
+
or generated.
|
|
575
|
+
|
|
576
|
+
##### appId
|
|
577
|
+
|
|
578
|
+
`string`
|
|
579
|
+
|
|
580
|
+
The dataspace app this dataset belongs to.
|
|
581
|
+
|
|
582
|
+
##### dataset
|
|
583
|
+
|
|
584
|
+
`IDataspaceProtocolDataset`
|
|
585
|
+
|
|
586
|
+
The dataset payload.
|
|
587
|
+
|
|
588
|
+
#### Returns
|
|
589
|
+
|
|
590
|
+
`Promise`\<`string`\>
|
|
591
|
+
|
|
592
|
+
The resolved dataset id.
|
|
593
|
+
|
|
594
|
+
#### Implementation of
|
|
595
|
+
|
|
596
|
+
`IDataspaceControlPlaneComponent.createAppDataset`
|
|
597
|
+
|
|
598
|
+
***
|
|
599
|
+
|
|
600
|
+
### getAppDataset() {#getappdataset}
|
|
601
|
+
|
|
602
|
+
> **getAppDataset**(`id`): `Promise`\<`IDataspaceAppDataset`\>
|
|
603
|
+
|
|
604
|
+
Get a dataset record owned by the calling tenant.
|
|
605
|
+
|
|
606
|
+
#### Parameters
|
|
607
|
+
|
|
608
|
+
##### id
|
|
609
|
+
|
|
610
|
+
`string`
|
|
611
|
+
|
|
612
|
+
The stored dataset id.
|
|
613
|
+
|
|
614
|
+
#### Returns
|
|
615
|
+
|
|
616
|
+
`Promise`\<`IDataspaceAppDataset`\>
|
|
617
|
+
|
|
618
|
+
The stored dataset record.
|
|
619
|
+
|
|
620
|
+
#### Implementation of
|
|
621
|
+
|
|
622
|
+
`IDataspaceControlPlaneComponent.getAppDataset`
|
|
623
|
+
|
|
624
|
+
***
|
|
625
|
+
|
|
626
|
+
### listAppDatasets() {#listappdatasets}
|
|
627
|
+
|
|
628
|
+
> **listAppDatasets**(`cursor?`, `limit?`): `Promise`\<\{ `entities`: `IDataspaceAppDataset`[]; `cursor?`: `string`; \}\>
|
|
629
|
+
|
|
630
|
+
List the dataspace app datasets owned by the calling tenant.
|
|
631
|
+
|
|
632
|
+
#### Parameters
|
|
633
|
+
|
|
634
|
+
##### cursor?
|
|
635
|
+
|
|
636
|
+
`string`
|
|
637
|
+
|
|
638
|
+
Optional pagination cursor.
|
|
639
|
+
|
|
640
|
+
##### limit?
|
|
641
|
+
|
|
642
|
+
`number`
|
|
643
|
+
|
|
644
|
+
Optional maximum number of entries to return.
|
|
645
|
+
|
|
646
|
+
#### Returns
|
|
647
|
+
|
|
648
|
+
`Promise`\<\{ `entities`: `IDataspaceAppDataset`[]; `cursor?`: `string`; \}\>
|
|
649
|
+
|
|
650
|
+
The stored datasets and the next-page cursor if more exist.
|
|
651
|
+
|
|
652
|
+
#### Implementation of
|
|
653
|
+
|
|
654
|
+
`IDataspaceControlPlaneComponent.listAppDatasets`
|
|
655
|
+
|
|
656
|
+
***
|
|
657
|
+
|
|
658
|
+
### updateAppDataset() {#updateappdataset}
|
|
659
|
+
|
|
660
|
+
> **updateAppDataset**(`id`, `appId`, `dataset`): `Promise`\<`void`\>
|
|
661
|
+
|
|
662
|
+
Update a dataset record owned by the calling tenant.
|
|
663
|
+
|
|
664
|
+
#### Parameters
|
|
665
|
+
|
|
666
|
+
##### id
|
|
667
|
+
|
|
668
|
+
`string`
|
|
669
|
+
|
|
670
|
+
The stored dataset id.
|
|
671
|
+
|
|
672
|
+
##### appId
|
|
673
|
+
|
|
674
|
+
`string`
|
|
675
|
+
|
|
676
|
+
The dataspace app this dataset belongs to.
|
|
677
|
+
|
|
678
|
+
##### dataset
|
|
679
|
+
|
|
680
|
+
`IDataspaceProtocolDataset`
|
|
681
|
+
|
|
682
|
+
The dataset payload.
|
|
683
|
+
|
|
684
|
+
#### Returns
|
|
685
|
+
|
|
686
|
+
`Promise`\<`void`\>
|
|
687
|
+
|
|
688
|
+
#### Implementation of
|
|
689
|
+
|
|
690
|
+
`IDataspaceControlPlaneComponent.updateAppDataset`
|
|
691
|
+
|
|
692
|
+
***
|
|
693
|
+
|
|
694
|
+
### deleteAppDataset() {#deleteappdataset}
|
|
695
|
+
|
|
696
|
+
> **deleteAppDataset**(`id`): `Promise`\<`void`\>
|
|
697
|
+
|
|
698
|
+
Delete a dataspace app dataset owned by the calling tenant.
|
|
699
|
+
|
|
700
|
+
#### Parameters
|
|
701
|
+
|
|
702
|
+
##### id
|
|
703
|
+
|
|
704
|
+
`string`
|
|
705
|
+
|
|
706
|
+
The stored app dataset id.
|
|
707
|
+
|
|
708
|
+
#### Returns
|
|
709
|
+
|
|
710
|
+
`Promise`\<`void`\>
|
|
711
|
+
|
|
712
|
+
#### Implementation of
|
|
713
|
+
|
|
714
|
+
`IDataspaceControlPlaneComponent.deleteAppDataset`
|
|
@@ -139,6 +139,20 @@ transfer-process
|
|
|
139
139
|
|
|
140
140
|
***
|
|
141
141
|
|
|
142
|
+
### dataspaceAppDatasetEntityStorageType? {#dataspaceappdatasetentitystoragetype}
|
|
143
|
+
|
|
144
|
+
> `optional` **dataspaceAppDatasetEntityStorageType?**: `string`
|
|
145
|
+
|
|
146
|
+
Entity storage type for Dataspace App Dataset entities.
|
|
147
|
+
|
|
148
|
+
#### Default
|
|
149
|
+
|
|
150
|
+
```ts
|
|
151
|
+
dataspace-app-dataset
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
***
|
|
155
|
+
|
|
142
156
|
### taskSchedulerComponentType? {#taskschedulercomponenttype}
|
|
143
157
|
|
|
144
158
|
> `optional` **taskSchedulerComponentType?**: `string`
|
|
@@ -153,6 +167,20 @@ task-scheduler
|
|
|
153
167
|
|
|
154
168
|
***
|
|
155
169
|
|
|
170
|
+
### urlTransformerComponentType? {#urltransformercomponenttype}
|
|
171
|
+
|
|
172
|
+
> `optional` **urlTransformerComponentType?**: `string`
|
|
173
|
+
|
|
174
|
+
URL Transformer component type used to encrypt the tenant token into the data-plane..
|
|
175
|
+
|
|
176
|
+
#### Default
|
|
177
|
+
|
|
178
|
+
```ts
|
|
179
|
+
url-transformer
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
***
|
|
183
|
+
|
|
156
184
|
### config? {#config}
|
|
157
185
|
|
|
158
186
|
> `optional` **config?**: [`IDataspaceControlPlaneServiceConfig`](IDataspaceControlPlaneServiceConfig.md)
|
package/locales/en.json
CHANGED
|
@@ -12,8 +12,8 @@
|
|
|
12
12
|
"resolvedProviderPid": "Resolved providerPid to Transfer Context",
|
|
13
13
|
"catalogDatasetFound": "Dataset validated in Federated Catalogue",
|
|
14
14
|
"agreementMatchedOffer": "Agreement matched Catalog Offer",
|
|
15
|
-
"populatingFederatedCatalogue": "Populating Federated Catalogue with
|
|
16
|
-
"federatedCataloguePopulated": "Federated Catalogue population completed (registered: {registeredCount}, errors: {errorCount},
|
|
15
|
+
"populatingFederatedCatalogue": "Populating Federated Catalogue with stored app datasets",
|
|
16
|
+
"federatedCataloguePopulated": "Federated Catalogue population completed (registered: {registeredCount}, errors: {errorCount}, datasets: {totalDatasets})",
|
|
17
17
|
"startingContractNegotiation": "Starting contract negotiation with provider",
|
|
18
18
|
"offerFoundInCatalog": "Offer found in Federated Catalogue and validated",
|
|
19
19
|
"negotiationInitiated": "Contract negotiation initiated successfully",
|
|
@@ -34,8 +34,7 @@
|
|
|
34
34
|
"debug": {
|
|
35
35
|
"dataspaceControlPlaneService": {
|
|
36
36
|
"engineCloneStart": "Skipping Federated Catalogue population (engine clone or no engine)",
|
|
37
|
-
"
|
|
38
|
-
"datasetRegistered": "Dataset {datasetId} registered from app {appName}"
|
|
37
|
+
"datasetRegistered": "Dataset {datasetId} registered for app {appId} (tenant: {tenantId})"
|
|
39
38
|
}
|
|
40
39
|
},
|
|
41
40
|
"warn": {
|
|
@@ -54,8 +53,6 @@
|
|
|
54
53
|
"dataspaceControlPlaneService": {
|
|
55
54
|
"transferProcessNotFound": "Transfer Process not found",
|
|
56
55
|
"pullTransfersNotSupported": "PULL transfers are not supported. Configure dataPlanePath in service configuration to enable PULL transfers.",
|
|
57
|
-
"datasetRegistrationFailed": "Failed to register dataset {datasetId} from app {appName}",
|
|
58
|
-
"appDatasetsRetrievalFailed": "Failed to retrieve datasets from app {appName}",
|
|
59
56
|
"transferProcessTerminated": "Transfer Process \"{consumerPid}\" is terminated and cannot be used",
|
|
60
57
|
"transferProcessTerminatedProvider": "Transfer Process \"{providerPid}\" is terminated and cannot be used",
|
|
61
58
|
"invalidTransferRequest": "Transfer Request does not conform to Dataspace Protocol specification",
|
|
@@ -93,7 +90,12 @@
|
|
|
93
90
|
"callerNotAuthorizedAsConsumer": "The caller's verified identity does not match the consumer for this transfer process",
|
|
94
91
|
"callerNotAuthorizedAsProvider": "The caller's verified identity does not match the provider for this transfer process",
|
|
95
92
|
"callerNotAuthorizedForTransfer": "The caller's verified identity does not match the consumer or provider for this transfer process",
|
|
96
|
-
"multipleAssignersNotSupported": "Multiple assigners found in agreement, which is not supported. Only single assigner agreements are supported."
|
|
93
|
+
"multipleAssignersNotSupported": "Multiple assigners found in agreement, which is not supported. Only single assigner agreements are supported.",
|
|
94
|
+
"datasetPublishFailed": "Failed to publish dataset {datasetRecordId} for app {appId} (tenant: {tenantId})",
|
|
95
|
+
"datasetNodeContextRequired": "A node context is required to register a dataset.",
|
|
96
|
+
"datasetAlreadyExists": "A dataset with id \"{id}\" already exists.",
|
|
97
|
+
"datasetNotFound": "Dataset not found",
|
|
98
|
+
"datasetWrongTenant": "The calling tenant does not own this dataset."
|
|
97
99
|
},
|
|
98
100
|
"dataspaceControlPlanePolicyRequester": {}
|
|
99
101
|
}
|
package/package.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@twin.org/dataspace-control-plane-service",
|
|
3
|
-
"version": "0.0.3-next.
|
|
3
|
+
"version": "0.0.3-next.27",
|
|
4
4
|
"description": "Implements agreement negotiation and transfer process lifecycle management for control plane operations.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
7
|
-
"url": "git+https://github.com/
|
|
7
|
+
"url": "git+https://github.com/iotaledger/dataspace.git",
|
|
8
8
|
"directory": "packages/dataspace-control-plane-service"
|
|
9
9
|
},
|
|
10
10
|
"author": "martyn.janes@iota.org",
|
|
@@ -15,9 +15,10 @@
|
|
|
15
15
|
},
|
|
16
16
|
"dependencies": {
|
|
17
17
|
"@twin.org/api-models": "next",
|
|
18
|
+
"@twin.org/api-tenant-processor": "next",
|
|
18
19
|
"@twin.org/context": "next",
|
|
19
20
|
"@twin.org/core": "next",
|
|
20
|
-
"@twin.org/dataspace-models": "0.0.3-next.
|
|
21
|
+
"@twin.org/dataspace-models": "0.0.3-next.27",
|
|
21
22
|
"@twin.org/entity": "next",
|
|
22
23
|
"@twin.org/entity-storage-models": "next",
|
|
23
24
|
"@twin.org/federated-catalogue-models": "next",
|
|
@@ -26,7 +27,8 @@
|
|
|
26
27
|
"@twin.org/rights-management-models": "next",
|
|
27
28
|
"@twin.org/standards-dataspace-protocol": "next",
|
|
28
29
|
"@twin.org/standards-w3c-odrl": "next",
|
|
29
|
-
"@twin.org/trust-models": "next"
|
|
30
|
+
"@twin.org/trust-models": "next",
|
|
31
|
+
"@twin.org/vault-models": "next"
|
|
30
32
|
},
|
|
31
33
|
"main": "./dist/es/index.js",
|
|
32
34
|
"types": "./dist/types/index.d.ts",
|
|
@@ -64,7 +66,7 @@
|
|
|
64
66
|
"business-logic"
|
|
65
67
|
],
|
|
66
68
|
"bugs": {
|
|
67
|
-
"url": "git+https://github.com/
|
|
69
|
+
"url": "git+https://github.com/iotaledger/dataspace/issues"
|
|
68
70
|
},
|
|
69
71
|
"homepage": "https://twindev.org"
|
|
70
72
|
}
|