@twin.org/dataspace-control-plane-service 0.0.3-next.26 → 0.0.3-next.28
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 +273 -61
- 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 +56 -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,39 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
-
## [0.0.3-next.
|
|
3
|
+
## [0.0.3-next.28](https://github.com/iotaledger/twin-dataspace/compare/dataspace-control-plane-service-v0.0.3-next.27...dataspace-control-plane-service-v0.0.3-next.28) (2026-05-12)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Features
|
|
7
|
+
|
|
8
|
+
* typescript 6 update ([340f10e](https://github.com/iotaledger/twin-dataspace/commit/340f10e4767f6285c694938944f7e044474f9aaa))
|
|
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.27 to 0.0.3-next.28
|
|
16
|
+
|
|
17
|
+
## [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)
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
### Features
|
|
21
|
+
|
|
22
|
+
* endpoint encryption + getDatasetTargets multi-target fix ([#112](https://github.com/iotaledger/twin-dataspace/issues/112)) ([3288941](https://github.com/iotaledger/twin-dataspace/commit/328894113c19c7402f7d00dfa77b6a97ae40ca91))
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
### Dependencies
|
|
26
|
+
|
|
27
|
+
* The following workspace dependencies were updated
|
|
28
|
+
* dependencies
|
|
29
|
+
* @twin.org/dataspace-models bumped from 0.0.3-next.26 to 0.0.3-next.27
|
|
30
|
+
|
|
31
|
+
## [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
32
|
|
|
5
33
|
|
|
6
34
|
### Bug Fixes
|
|
7
35
|
|
|
8
|
-
* dependency update ([fbff0dd](https://github.com/
|
|
36
|
+
* dependency update ([fbff0dd](https://github.com/iotaledger/twin-dataspace/commit/fbff0ddae93d82bd2899001368d7a03b482ce05c))
|
|
9
37
|
|
|
10
38
|
|
|
11
39
|
### Dependencies
|
|
@@ -14,7 +42,7 @@
|
|
|
14
42
|
* dependencies
|
|
15
43
|
* @twin.org/dataspace-models bumped from 0.0.3-next.25 to 0.0.3-next.26
|
|
16
44
|
|
|
17
|
-
## [0.0.3-next.25](https://github.com/
|
|
45
|
+
## [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
46
|
|
|
19
47
|
|
|
20
48
|
### Miscellaneous Chores
|
|
@@ -28,12 +56,12 @@
|
|
|
28
56
|
* dependencies
|
|
29
57
|
* @twin.org/dataspace-models bumped from 0.0.3-next.24 to 0.0.3-next.25
|
|
30
58
|
|
|
31
|
-
## [0.0.3-next.24](https://github.com/
|
|
59
|
+
## [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
60
|
|
|
33
61
|
|
|
34
62
|
### Features
|
|
35
63
|
|
|
36
|
-
* skip tenant dsp transfer routes ([#97](https://github.com/
|
|
64
|
+
* skip tenant dsp transfer routes ([#97](https://github.com/iotaledger/twin-dataspace/issues/97)) ([2f1ad97](https://github.com/iotaledger/twin-dataspace/commit/2f1ad971bc50ad24bb9f68759fbd4d44527d3d02))
|
|
37
65
|
|
|
38
66
|
|
|
39
67
|
### Dependencies
|
|
@@ -42,7 +70,7 @@
|
|
|
42
70
|
* dependencies
|
|
43
71
|
* @twin.org/dataspace-models bumped from 0.0.3-next.23 to 0.0.3-next.24
|
|
44
72
|
|
|
45
|
-
## [0.0.3-next.23](https://github.com/
|
|
73
|
+
## [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
74
|
|
|
47
75
|
|
|
48
76
|
### Miscellaneous Chores
|
|
@@ -56,12 +84,12 @@
|
|
|
56
84
|
* dependencies
|
|
57
85
|
* @twin.org/dataspace-models bumped from 0.0.3-next.22 to 0.0.3-next.23
|
|
58
86
|
|
|
59
|
-
## [0.0.3-next.22](https://github.com/
|
|
87
|
+
## [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
88
|
|
|
61
89
|
|
|
62
90
|
### Features
|
|
63
91
|
|
|
64
|
-
* internalise constant ([9b9b293](https://github.com/
|
|
92
|
+
* internalise constant ([9b9b293](https://github.com/iotaledger/twin-dataspace/commit/9b9b2933588ee70811a601bc485b5abaa12bed41))
|
|
65
93
|
|
|
66
94
|
|
|
67
95
|
### Dependencies
|
|
@@ -70,18 +98,18 @@
|
|
|
70
98
|
* dependencies
|
|
71
99
|
* @twin.org/dataspace-models bumped from 0.0.3-next.21 to 0.0.3-next.22
|
|
72
100
|
|
|
73
|
-
## [0.0.3-next.21](https://github.com/
|
|
101
|
+
## [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
102
|
|
|
75
103
|
|
|
76
104
|
### Features
|
|
77
105
|
|
|
78
|
-
* improve open-api examples ([1368dbe](https://github.com/
|
|
79
|
-
* improve open-api examples ([44f7350](https://github.com/
|
|
106
|
+
* improve open-api examples ([1368dbe](https://github.com/iotaledger/twin-dataspace/commit/1368dbed5c36e074b4854942304a19b9ce51e088))
|
|
107
|
+
* improve open-api examples ([44f7350](https://github.com/iotaledger/twin-dataspace/commit/44f7350c625d8d6afdca88b292dd48ef03253412))
|
|
80
108
|
|
|
81
109
|
|
|
82
110
|
### Bug Fixes
|
|
83
111
|
|
|
84
|
-
* handle missing target in catalogue offers during policy derivation check ([#89](https://github.com/
|
|
112
|
+
* 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
113
|
|
|
86
114
|
|
|
87
115
|
### Dependencies
|
|
@@ -90,12 +118,12 @@
|
|
|
90
118
|
* dependencies
|
|
91
119
|
* @twin.org/dataspace-models bumped from 0.0.3-next.20 to 0.0.3-next.21
|
|
92
120
|
|
|
93
|
-
## [0.0.3-next.20](https://github.com/
|
|
121
|
+
## [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
122
|
|
|
95
123
|
|
|
96
124
|
### Features
|
|
97
125
|
|
|
98
|
-
* improve open-api examples ([f065f4b](https://github.com/
|
|
126
|
+
* improve open-api examples ([f065f4b](https://github.com/iotaledger/twin-dataspace/commit/f065f4bd55540041a653ef141c4be29a83c5055e))
|
|
99
127
|
|
|
100
128
|
|
|
101
129
|
### Dependencies
|
|
@@ -104,12 +132,12 @@
|
|
|
104
132
|
* dependencies
|
|
105
133
|
* @twin.org/dataspace-models bumped from 0.0.3-next.19 to 0.0.3-next.20
|
|
106
134
|
|
|
107
|
-
## [0.0.3-next.19](https://github.com/
|
|
135
|
+
## [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
136
|
|
|
109
137
|
|
|
110
138
|
### Features
|
|
111
139
|
|
|
112
|
-
* improve validation ([#82](https://github.com/
|
|
140
|
+
* improve validation ([#82](https://github.com/iotaledger/twin-dataspace/issues/82)) ([8bfaf7b](https://github.com/iotaledger/twin-dataspace/commit/8bfaf7b830f89b63575f8a51ee96bd8ac4da02f4))
|
|
113
141
|
|
|
114
142
|
|
|
115
143
|
### Dependencies
|
|
@@ -118,12 +146,12 @@
|
|
|
118
146
|
* dependencies
|
|
119
147
|
* @twin.org/dataspace-models bumped from 0.0.3-next.18 to 0.0.3-next.19
|
|
120
148
|
|
|
121
|
-
## [0.0.3-next.18](https://github.com/
|
|
149
|
+
## [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
150
|
|
|
123
151
|
|
|
124
152
|
### Features
|
|
125
153
|
|
|
126
|
-
* resolve DSP transfer flow bugs for cross-node communication ([#76](https://github.com/
|
|
154
|
+
* 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
155
|
|
|
128
156
|
|
|
129
157
|
### Dependencies
|
|
@@ -132,18 +160,18 @@
|
|
|
132
160
|
* dependencies
|
|
133
161
|
* @twin.org/dataspace-models bumped from 0.0.3-next.17 to 0.0.3-next.18
|
|
134
162
|
|
|
135
|
-
## [0.0.3-next.17](https://github.com/
|
|
163
|
+
## [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
164
|
|
|
137
165
|
|
|
138
166
|
### Features
|
|
139
167
|
|
|
140
|
-
* docs update ([8b44c7a](https://github.com/
|
|
141
|
-
* types update ([77c338e](https://github.com/
|
|
168
|
+
* docs update ([8b44c7a](https://github.com/iotaledger/twin-dataspace/commit/8b44c7a75afb8d377a6f606616f8a78d58439ab4))
|
|
169
|
+
* types update ([77c338e](https://github.com/iotaledger/twin-dataspace/commit/77c338e9244dcc7e3d597fdb06229513b1f13eac))
|
|
142
170
|
|
|
143
171
|
|
|
144
172
|
### Bug Fixes
|
|
145
173
|
|
|
146
|
-
* avoid compaction of incoming activities ([#77](https://github.com/
|
|
174
|
+
* avoid compaction of incoming activities ([#77](https://github.com/iotaledger/twin-dataspace/issues/77)) ([ff43d6a](https://github.com/iotaledger/twin-dataspace/commit/ff43d6a3e1563eb9cb185501134b2a53ae88787c))
|
|
147
175
|
|
|
148
176
|
|
|
149
177
|
### Dependencies
|
|
@@ -152,12 +180,12 @@
|
|
|
152
180
|
* dependencies
|
|
153
181
|
* @twin.org/dataspace-models bumped from 0.0.3-next.16 to 0.0.3-next.17
|
|
154
182
|
|
|
155
|
-
## [0.0.3-next.16](https://github.com/
|
|
183
|
+
## [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
184
|
|
|
157
185
|
|
|
158
186
|
### Bug Fixes
|
|
159
187
|
|
|
160
|
-
* docs and component init ([8557233](https://github.com/
|
|
188
|
+
* docs and component init ([8557233](https://github.com/iotaledger/twin-dataspace/commit/8557233fb3b8273c5c9a5b580fb43061f8efe47c))
|
|
161
189
|
|
|
162
190
|
|
|
163
191
|
### Dependencies
|
|
@@ -166,12 +194,12 @@
|
|
|
166
194
|
* dependencies
|
|
167
195
|
* @twin.org/dataspace-models bumped from 0.0.3-next.15 to 0.0.3-next.16
|
|
168
196
|
|
|
169
|
-
## [0.0.3-next.15](https://github.com/
|
|
197
|
+
## [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
198
|
|
|
171
199
|
|
|
172
200
|
### Features
|
|
173
201
|
|
|
174
|
-
* unification of the data exchange and the data space connector ([#57](https://github.com/
|
|
202
|
+
* 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
203
|
|
|
176
204
|
|
|
177
205
|
### Dependencies
|
|
@@ -180,12 +208,12 @@
|
|
|
180
208
|
* dependencies
|
|
181
209
|
* @twin.org/dataspace-models bumped from 0.0.3-next.14 to 0.0.3-next.15
|
|
182
210
|
|
|
183
|
-
## [0.0.3-next.1](https://github.com/
|
|
211
|
+
## [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
212
|
|
|
185
213
|
|
|
186
214
|
### Features
|
|
187
215
|
|
|
188
|
-
* mocking data exchange basic methods ([#5](https://github.com/
|
|
216
|
+
* 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
217
|
|
|
190
218
|
|
|
191
219
|
### 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.28",
|
|
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.28",
|
|
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
|
}
|