@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.
@@ -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
@@ -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;AAC7D,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;AACH,CAAC","sourcesContent":["// Copyright 2025 IOTA Stiftung.\n// SPDX-License-Identifier: Apache-2.0.\nimport { 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}\n"]}
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.26](https://github.com/twinfoundation/dataspace/compare/dataspace-control-plane-service-v0.0.3-next.25...dataspace-control-plane-service-v0.0.3-next.26) (2026-04-14)
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/twinfoundation/dataspace/commit/fbff0ddae93d82bd2899001368d7a03b482ce05c))
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/twinfoundation/dataspace/compare/dataspace-control-plane-service-v0.0.3-next.24...dataspace-control-plane-service-v0.0.3-next.25) (2026-04-10)
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/twinfoundation/dataspace/compare/dataspace-control-plane-service-v0.0.3-next.23...dataspace-control-plane-service-v0.0.3-next.24) (2026-03-31)
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/twinfoundation/dataspace/issues/97)) ([2f1ad97](https://github.com/twinfoundation/dataspace/commit/2f1ad971bc50ad24bb9f68759fbd4d44527d3d02))
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/twinfoundation/dataspace/compare/dataspace-control-plane-service-v0.0.3-next.22...dataspace-control-plane-service-v0.0.3-next.23) (2026-03-25)
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/twinfoundation/dataspace/compare/dataspace-control-plane-service-v0.0.3-next.21...dataspace-control-plane-service-v0.0.3-next.22) (2026-03-20)
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/twinfoundation/dataspace/commit/9b9b2933588ee70811a601bc485b5abaa12bed41))
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/twinfoundation/dataspace/compare/dataspace-control-plane-service-v0.0.3-next.20...dataspace-control-plane-service-v0.0.3-next.21) (2026-03-17)
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/twinfoundation/dataspace/commit/1368dbed5c36e074b4854942304a19b9ce51e088))
79
- * improve open-api examples ([44f7350](https://github.com/twinfoundation/dataspace/commit/44f7350c625d8d6afdca88b292dd48ef03253412))
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/twinfoundation/dataspace/issues/89)) ([a0e0dbc](https://github.com/twinfoundation/dataspace/commit/a0e0dbc8d9111d5d1c43e905249825e5d8d62816))
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/twinfoundation/dataspace/compare/dataspace-control-plane-service-v0.0.3-next.19...dataspace-control-plane-service-v0.0.3-next.20) (2026-03-17)
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/twinfoundation/dataspace/commit/f065f4bd55540041a653ef141c4be29a83c5055e))
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/twinfoundation/dataspace/compare/dataspace-control-plane-service-v0.0.3-next.18...dataspace-control-plane-service-v0.0.3-next.19) (2026-03-12)
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/twinfoundation/dataspace/issues/82)) ([8bfaf7b](https://github.com/twinfoundation/dataspace/commit/8bfaf7b830f89b63575f8a51ee96bd8ac4da02f4))
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/twinfoundation/dataspace/compare/dataspace-control-plane-service-v0.0.3-next.17...dataspace-control-plane-service-v0.0.3-next.18) (2026-03-09)
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/twinfoundation/dataspace/issues/76)) ([506a45c](https://github.com/twinfoundation/dataspace/commit/506a45c94e63d5f958b1fc7131adfe452c3e2974))
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/twinfoundation/dataspace/compare/dataspace-control-plane-service-v0.0.3-next.16...dataspace-control-plane-service-v0.0.3-next.17) (2026-03-06)
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/twinfoundation/dataspace/commit/8b44c7a75afb8d377a6f606616f8a78d58439ab4))
141
- * types update ([77c338e](https://github.com/twinfoundation/dataspace/commit/77c338e9244dcc7e3d597fdb06229513b1f13eac))
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/twinfoundation/dataspace/issues/77)) ([ff43d6a](https://github.com/twinfoundation/dataspace/commit/ff43d6a3e1563eb9cb185501134b2a53ae88787c))
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/twinfoundation/dataspace/compare/dataspace-control-plane-service-v0.0.3-next.15...dataspace-control-plane-service-v0.0.3-next.16) (2026-03-02)
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/twinfoundation/dataspace/commit/8557233fb3b8273c5c9a5b580fb43061f8efe47c))
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/twinfoundation/dataspace/compare/dataspace-control-plane-service-v0.0.3-next.14...dataspace-control-plane-service-v0.0.3-next.15) (2026-03-02)
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/twinfoundation/dataspace/issues/57)) ([df2644d](https://github.com/twinfoundation/dataspace/commit/df2644d989471e07dadd83d27bef736179e31bf4))
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/twinfoundation/data-exchange/compare/data-exchange-service-v0.0.3-next.0...data-exchange-service-v0.0.3-next.1) (2026-01-19)
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/twinfoundation/data-exchange/issues/5)) ([6cb00c0](https://github.com/twinfoundation/data-exchange/commit/6cb00c029aacf46da7bed0b3c97a21ef4102784a))
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 datasets from registered apps",
16
- "federatedCataloguePopulated": "Federated Catalogue population completed (registered: {registeredCount}, errors: {errorCount}, apps: {totalApps})",
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
- "discoveredApps": "Discovered {count} registered Dataspace apps",
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.26",
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/twinfoundation/dataspace.git",
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.26",
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/twinfoundation/dataspace/issues"
69
+ "url": "git+https://github.com/iotaledger/dataspace/issues"
68
70
  },
69
71
  "homepage": "https://twindev.org"
70
72
  }