@twin.org/dataspace-control-plane-service 0.9.0 → 0.9.1-next.10

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.
Files changed (46) hide show
  1. package/README.md +1 -1
  2. package/dist/es/dataspaceControlPlaneRoutes.js +79 -7
  3. package/dist/es/dataspaceControlPlaneRoutes.js.map +1 -1
  4. package/dist/es/dataspaceControlPlaneService.js +121 -356
  5. package/dist/es/dataspaceControlPlaneService.js.map +1 -1
  6. package/dist/es/factories/transferHandlerFactory.js +11 -0
  7. package/dist/es/factories/transferHandlerFactory.js.map +1 -0
  8. package/dist/es/handlers/httpDataPostTransferHandler.js +111 -0
  9. package/dist/es/handlers/httpDataPostTransferHandler.js.map +1 -0
  10. package/dist/es/handlers/httpDataPullTransferHandler.js +108 -0
  11. package/dist/es/handlers/httpDataPullTransferHandler.js.map +1 -0
  12. package/dist/es/handlers/httpDataPushTransferHandler.js +114 -0
  13. package/dist/es/handlers/httpDataPushTransferHandler.js.map +1 -0
  14. package/dist/es/index.js +7 -0
  15. package/dist/es/index.js.map +1 -1
  16. package/dist/es/models/IDataspaceControlPlaneServiceConfig.js.map +1 -1
  17. package/dist/es/models/ITransferHandler.js +2 -0
  18. package/dist/es/models/ITransferHandler.js.map +1 -0
  19. package/dist/es/models/ITransferHandlerPrepareContext.js +4 -0
  20. package/dist/es/models/ITransferHandlerPrepareContext.js.map +1 -0
  21. package/dist/es/models/ITransferHandlerStartContext.js +2 -0
  22. package/dist/es/models/ITransferHandlerStartContext.js.map +1 -0
  23. package/dist/types/dataspaceControlPlaneRoutes.d.ts +1 -1
  24. package/dist/types/dataspaceControlPlaneService.d.ts +6 -1
  25. package/dist/types/factories/transferHandlerFactory.d.ts +8 -0
  26. package/dist/types/handlers/httpDataPostTransferHandler.d.ts +63 -0
  27. package/dist/types/handlers/httpDataPullTransferHandler.d.ts +63 -0
  28. package/dist/types/handlers/httpDataPushTransferHandler.d.ts +68 -0
  29. package/dist/types/index.d.ts +7 -0
  30. package/dist/types/models/IDataspaceControlPlaneServiceConfig.d.ts +10 -5
  31. package/dist/types/models/ITransferHandler.d.ts +62 -0
  32. package/dist/types/models/ITransferHandlerPrepareContext.d.ts +21 -0
  33. package/dist/types/models/ITransferHandlerStartContext.d.ts +31 -0
  34. package/docs/changelog.md +190 -0
  35. package/docs/reference/classes/DataspaceControlPlaneService.md +18 -0
  36. package/docs/reference/classes/HttpDataPostTransferHandler.md +235 -0
  37. package/docs/reference/classes/HttpDataPullTransferHandler.md +235 -0
  38. package/docs/reference/classes/HttpDataPushTransferHandler.md +242 -0
  39. package/docs/reference/index.md +7 -0
  40. package/docs/reference/interfaces/IDataspaceControlPlaneServiceConfig.md +10 -5
  41. package/docs/reference/interfaces/ITransferHandler.md +180 -0
  42. package/docs/reference/interfaces/ITransferHandlerPrepareContext.md +35 -0
  43. package/docs/reference/interfaces/ITransferHandlerStartContext.md +51 -0
  44. package/docs/reference/variables/TransferHandlerFactory.md +7 -0
  45. package/locales/en.json +14 -11
  46. package/package.json +18 -18
@@ -0,0 +1,63 @@
1
+ import type { IDataspaceDataPlaneComponent } from "@twin.org/dataspace-models";
2
+ import type { DataspaceProtocolTransferProcessStateType, IDataspaceProtocolDataAddress } from "@twin.org/standards-dataspace-protocol";
3
+ import type { ITransferHandler } from "../models/ITransferHandler.js";
4
+ import type { ITransferHandlerPrepareContext } from "../models/ITransferHandlerPrepareContext.js";
5
+ import type { ITransferHandlerStartContext } from "../models/ITransferHandlerStartContext.js";
6
+ /**
7
+ * Transfer handler for HttpData-PULL format.
8
+ * Consumer queries the provider's data endpoint using a bearer token supplied in the
9
+ * TransferStartMessage dataAddress. No data-plane push subscription is involved.
10
+ */
11
+ export declare class HttpDataPullTransferHandler implements ITransferHandler {
12
+ /**
13
+ * Runtime name for the class.
14
+ */
15
+ static readonly CLASS_NAME: string;
16
+ /**
17
+ * Returns the class name of the component.
18
+ * @returns The class name of the component.
19
+ */
20
+ className(): string;
21
+ /**
22
+ * PULL consumers do not supply a dataAddress — the provider generates one on start.
23
+ * @param ctx Prepare context (unused for PULL).
24
+ * @returns undefined.
25
+ */
26
+ buildConsumerDataAddress(ctx: ITransferHandlerPrepareContext): IDataspaceProtocolDataAddress | undefined;
27
+ /**
28
+ * Build the provider's data endpoint and bearer token for the TransferStartMessage.
29
+ * @param ctx Start context containing entity, trust component, and path configuration.
30
+ * @returns The dataAddress carrying the query endpoint and bearer token.
31
+ * @throws GeneralError When dataPlanePath is not configured or providerIdentity is missing.
32
+ */
33
+ buildProviderStartDataAddress(ctx: ITransferHandlerStartContext): Promise<IDataspaceProtocolDataAddress | undefined>;
34
+ /**
35
+ * No-op: PULL transfers require no push subscription.
36
+ * @param dataPlaneComponent The data plane component instance.
37
+ * @param consumerPid The consumer process ID.
38
+ * @param previousState The state before the STARTED transition.
39
+ * @returns A promise that resolves immediately.
40
+ */
41
+ onProviderStart(dataPlaneComponent: IDataspaceDataPlaneComponent, consumerPid: string, previousState: DataspaceProtocolTransferProcessStateType): Promise<void>;
42
+ /**
43
+ * No-op: PULL transfers have no push subscription to tear down.
44
+ * @param dataPlaneComponent The data plane component instance.
45
+ * @param consumerPid The consumer process ID.
46
+ * @returns A promise that resolves immediately.
47
+ */
48
+ onComplete(dataPlaneComponent: IDataspaceDataPlaneComponent, consumerPid: string): Promise<void>;
49
+ /**
50
+ * No-op: PULL transfers have no push subscription to suspend.
51
+ * @param dataPlaneComponent The data plane component instance.
52
+ * @param consumerPid The consumer process ID.
53
+ * @returns A promise that resolves immediately.
54
+ */
55
+ onSuspend(dataPlaneComponent: IDataspaceDataPlaneComponent, consumerPid: string): Promise<void>;
56
+ /**
57
+ * No-op: PULL transfers have no push subscription to tear down.
58
+ * @param dataPlaneComponent The data plane component instance.
59
+ * @param consumerPid The consumer process ID.
60
+ * @returns A promise that resolves immediately.
61
+ */
62
+ onTerminate(dataPlaneComponent: IDataspaceDataPlaneComponent, consumerPid: string): Promise<void>;
63
+ }
@@ -0,0 +1,68 @@
1
+ import type { IDataspaceDataPlaneComponent } from "@twin.org/dataspace-models";
2
+ import { DataspaceProtocolTransferProcessStateType } from "@twin.org/standards-dataspace-protocol";
3
+ import type { IDataspaceProtocolDataAddress } from "@twin.org/standards-dataspace-protocol";
4
+ import type { ITransferHandler } from "../models/ITransferHandler.js";
5
+ import type { ITransferHandlerPrepareContext } from "../models/ITransferHandlerPrepareContext.js";
6
+ import type { ITransferHandlerStartContext } from "../models/ITransferHandlerStartContext.js";
7
+ /**
8
+ * Transfer handler for HttpData-PUSH format (consumer-initiated push).
9
+ * The consumer supplies its /inbox endpoint in the TransferRequestMessage dataAddress.
10
+ * The provider pushes ActivityStreams objects to that endpoint, and returns its own
11
+ * /inbox in the TransferStartMessage so the consumer can route data notifications.
12
+ */
13
+ export declare class HttpDataPushTransferHandler implements ITransferHandler {
14
+ /**
15
+ * Runtime name for the class.
16
+ */
17
+ static readonly CLASS_NAME: string;
18
+ /**
19
+ * Returns the class name of the component.
20
+ * @returns The class name of the component.
21
+ */
22
+ className(): string;
23
+ /**
24
+ * Build the consumer's /inbox dataAddress for the TransferRequestMessage.
25
+ * @param ctx Prepare context containing path and organization identity.
26
+ * @returns The consumer's ActivityStream inbox dataAddress.
27
+ * @throws GeneralError When dataPlanePath is not configured.
28
+ */
29
+ buildConsumerDataAddress(ctx: ITransferHandlerPrepareContext): IDataspaceProtocolDataAddress | undefined;
30
+ /**
31
+ * Validate the consumer's dataAddress and build the provider's /inbox endpoint
32
+ * for the TransferStartMessage. No bearer token is included — the consumer authenticates
33
+ * via the DSP protocol trust payload on the push POST.
34
+ * @param ctx Start context containing entity and path configuration.
35
+ * @returns The provider's ActivityStream inbox dataAddress.
36
+ * @throws GeneralError When the consumer dataAddress is invalid or dataPlanePath is not configured.
37
+ */
38
+ buildProviderStartDataAddress(ctx: ITransferHandlerStartContext): Promise<IDataspaceProtocolDataAddress | undefined>;
39
+ /**
40
+ * Set up (or resume) the data-plane push subscription after state is persisted to STARTED.
41
+ * @param dataPlaneComponent The data plane component instance.
42
+ * @param consumerPid The consumer process ID.
43
+ * @param previousState The state before the STARTED transition.
44
+ * @returns A promise that resolves when the subscription is established.
45
+ */
46
+ onProviderStart(dataPlaneComponent: IDataspaceDataPlaneComponent, consumerPid: string, previousState: DataspaceProtocolTransferProcessStateType): Promise<void>;
47
+ /**
48
+ * Tear down the push subscription when the transfer completes.
49
+ * @param dataPlaneComponent The data plane component instance.
50
+ * @param consumerPid The consumer process ID.
51
+ * @returns A promise that resolves when the subscription is torn down.
52
+ */
53
+ onComplete(dataPlaneComponent: IDataspaceDataPlaneComponent, consumerPid: string): Promise<void>;
54
+ /**
55
+ * Suspend the push subscription when the transfer is suspended.
56
+ * @param dataPlaneComponent The data plane component instance.
57
+ * @param consumerPid The consumer process ID.
58
+ * @returns A promise that resolves when the subscription is suspended.
59
+ */
60
+ onSuspend(dataPlaneComponent: IDataspaceDataPlaneComponent, consumerPid: string): Promise<void>;
61
+ /**
62
+ * Tear down the push subscription when the transfer terminates.
63
+ * @param dataPlaneComponent The data plane component instance.
64
+ * @param consumerPid The consumer process ID.
65
+ * @returns A promise that resolves when the subscription is torn down.
66
+ */
67
+ onTerminate(dataPlaneComponent: IDataspaceDataPlaneComponent, consumerPid: string): Promise<void>;
68
+ }
@@ -1,9 +1,16 @@
1
1
  export * from "./dataspaceControlPlanePolicyRequester.js";
2
2
  export * from "./dataspaceControlPlaneRoutes.js";
3
3
  export * from "./dataspaceControlPlaneService.js";
4
+ export * from "./factories/transferHandlerFactory.js";
5
+ export * from "./handlers/httpDataPostTransferHandler.js";
6
+ export * from "./handlers/httpDataPullTransferHandler.js";
7
+ export * from "./handlers/httpDataPushTransferHandler.js";
4
8
  export * from "./models/endpointProperties.js";
5
9
  export * from "./models/IDataspaceControlPlaneServiceConfig.js";
6
10
  export * from "./models/IDataspaceControlPlaneServiceConstructorOptions.js";
7
11
  export * from "./models/INegotiationState.js";
12
+ export * from "./models/ITransferHandler.js";
13
+ export * from "./models/ITransferHandlerPrepareContext.js";
14
+ export * from "./models/ITransferHandlerStartContext.js";
8
15
  export * from "./restEntryPoints.js";
9
16
  export * from "./schema.js";
@@ -8,13 +8,18 @@ export interface IDataspaceControlPlaneServiceConfig {
8
8
  */
9
9
  overrideTrustGeneratorType?: string;
10
10
  /**
11
- * Data plane endpoint path for PULL transfers (path only, not full URL).
12
- * Will be combined with the public origin.
11
+ * Base route path for the data plane service (path only, not full URL).
12
+ * Combined with the public origin to form the `dataAddress.endpoint` sent to PULL consumers
13
+ * and the inbox URL sent to PUSH providers.
13
14
  *
14
- * REQUIRED if PULL transfers are supported.
15
- * If not specified, PULL transfers will not be available.
15
+ * This must be the mount-point prefix of the data plane routes, NOT a specific route path.
16
+ * Do NOT append sub-paths such as `/entities` or `/inbox` — those are appended automatically
17
+ * by each transfer handler and by the data plane REST client.
16
18
  *
17
- * Example: "data-plane/data" or "api/data-plane/data"
19
+ * REQUIRED if PULL or PUSH transfers are supported.
20
+ * If not specified, PULL and PUSH transfers will not be available.
21
+ *
22
+ * Example: "dataspace"
18
23
  */
19
24
  dataPlanePath?: string;
20
25
  /**
@@ -0,0 +1,62 @@
1
+ import type { IComponent } from "@twin.org/core";
2
+ import type { IDataspaceDataPlaneComponent } from "@twin.org/dataspace-models";
3
+ import type { DataspaceProtocolTransferProcessStateType, IDataspaceProtocolDataAddress } from "@twin.org/standards-dataspace-protocol";
4
+ import type { ITransferHandlerPrepareContext } from "./ITransferHandlerPrepareContext.js";
5
+ import type { ITransferHandlerStartContext } from "./ITransferHandlerStartContext.js";
6
+ /**
7
+ * Format-specific handler for transfer process operations.
8
+ * One implementation exists per DataspaceTransferFormat value; the TransferHandlerFactory
9
+ * returns the correct instance keyed on the format string.
10
+ */
11
+ export interface ITransferHandler extends IComponent {
12
+ /**
13
+ * Optionally build a consumer dataAddress for the TransferRequestMessage.
14
+ * Called during prepareTransfer. Returns undefined for formats that do not
15
+ * require a consumer-supplied dataAddress (PULL and POST).
16
+ * @param ctx The prepare context.
17
+ * @returns The consumer dataAddress, or undefined if not required for this format.
18
+ */
19
+ buildConsumerDataAddress(ctx: ITransferHandlerPrepareContext): IDataspaceProtocolDataAddress | undefined;
20
+ /**
21
+ * Build the provider dataAddress for the TransferStartMessage.
22
+ * Called during startTransfer (provider role). Throws a GeneralError when
23
+ * required configuration (e.g. dataPlanePath) is absent.
24
+ * @param ctx The start context.
25
+ * @returns The provider dataAddress, or undefined if not applicable.
26
+ */
27
+ buildProviderStartDataAddress(ctx: ITransferHandlerStartContext): Promise<IDataspaceProtocolDataAddress | undefined>;
28
+ /**
29
+ * Post-start hook for the provider role. Called after state has been persisted
30
+ * to STARTED. PUSH transfers set up (or resume) the data-plane push subscription
31
+ * here; all other formats are no-ops.
32
+ * @param dataPlaneComponent The data plane component instance.
33
+ * @param consumerPid The consumer process ID.
34
+ * @param previousState The state before the STARTED transition.
35
+ * @returns A promise that resolves when the hook completes.
36
+ */
37
+ onProviderStart(dataPlaneComponent: IDataspaceDataPlaneComponent, consumerPid: string, previousState: DataspaceProtocolTransferProcessStateType): Promise<void>;
38
+ /**
39
+ * Called after a transfer transitions to COMPLETED.
40
+ * PUSH and POST tear down the push subscription; PULL is a no-op.
41
+ * @param dataPlaneComponent The data plane component instance.
42
+ * @param consumerPid The consumer process ID.
43
+ * @returns A promise that resolves when the hook completes.
44
+ */
45
+ onComplete(dataPlaneComponent: IDataspaceDataPlaneComponent, consumerPid: string): Promise<void>;
46
+ /**
47
+ * Called after a transfer transitions to SUSPENDED.
48
+ * PUSH and POST suspend the push subscription; PULL is a no-op.
49
+ * @param dataPlaneComponent The data plane component instance.
50
+ * @param consumerPid The consumer process ID.
51
+ * @returns A promise that resolves when the hook completes.
52
+ */
53
+ onSuspend(dataPlaneComponent: IDataspaceDataPlaneComponent, consumerPid: string): Promise<void>;
54
+ /**
55
+ * Called after a transfer transitions to TERMINATED.
56
+ * PUSH and POST tear down the push subscription; PULL is a no-op.
57
+ * @param dataPlaneComponent The data plane component instance.
58
+ * @param consumerPid The consumer process ID.
59
+ * @returns A promise that resolves when the hook completes.
60
+ */
61
+ onTerminate(dataPlaneComponent: IDataspaceDataPlaneComponent, consumerPid: string): Promise<void>;
62
+ }
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Context supplied to buildConsumerDataAddress during prepareTransfer.
3
+ */
4
+ export interface ITransferHandlerPrepareContext {
5
+ /**
6
+ * The consumer process ID.
7
+ */
8
+ consumerPid: string;
9
+ /**
10
+ * The consumer's base origin URL.
11
+ */
12
+ origin: string;
13
+ /**
14
+ * The data plane path segment, if configured.
15
+ */
16
+ dataPlanePath: string | undefined;
17
+ /**
18
+ * The organization identity resolved from the current context.
19
+ */
20
+ organizationIdentity: string;
21
+ }
@@ -0,0 +1,31 @@
1
+ import type { ITransferProcess } from "@twin.org/dataspace-models";
2
+ import type { ITrustComponent } from "@twin.org/trust-models";
3
+ /**
4
+ * Context supplied to buildProviderStartDataAddress during startTransfer (provider role).
5
+ */
6
+ export interface ITransferHandlerStartContext {
7
+ /**
8
+ * The transfer process entity.
9
+ */
10
+ entity: ITransferProcess;
11
+ /**
12
+ * The provider's public origin URL.
13
+ */
14
+ publicOrigin: string;
15
+ /**
16
+ * The data plane path segment, if configured.
17
+ */
18
+ dataPlanePath: string | undefined;
19
+ /**
20
+ * The organization identity resolved from the current context.
21
+ */
22
+ organizationIdentity: string;
23
+ /**
24
+ * The trust component for generating access tokens.
25
+ */
26
+ trustComponent: ITrustComponent;
27
+ /**
28
+ * The override trust generator type, if configured.
29
+ */
30
+ overrideTrustGeneratorType: string | undefined;
31
+ }
package/docs/changelog.md CHANGED
@@ -1,5 +1,195 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.9.1-next.10](https://github.com/iotaledger/twin-dataspace/compare/dataspace-control-plane-service-v0.9.1-next.9...dataspace-control-plane-service-v0.9.1-next.10) (2026-07-20)
4
+
5
+
6
+ ### Miscellaneous Chores
7
+
8
+ * **dataspace-control-plane-service:** Synchronize repo versions
9
+
10
+
11
+ ### Dependencies
12
+
13
+ * The following workspace dependencies were updated
14
+ * dependencies
15
+ * @twin.org/dataspace-models bumped from 0.9.1-next.9 to 0.9.1-next.10
16
+
17
+ ## [0.9.1-next.9](https://github.com/iotaledger/twin-dataspace/compare/dataspace-control-plane-service-v0.9.1-next.8...dataspace-control-plane-service-v0.9.1-next.9) (2026-07-06)
18
+
19
+
20
+ ### Miscellaneous Chores
21
+
22
+ * **dataspace-control-plane-service:** Synchronize repo versions
23
+
24
+
25
+ ### Dependencies
26
+
27
+ * The following workspace dependencies were updated
28
+ * dependencies
29
+ * @twin.org/dataspace-models bumped from 0.9.1-next.8 to 0.9.1-next.9
30
+
31
+ ## [0.9.1-next.8](https://github.com/iotaledger/twin-dataspace/compare/dataspace-control-plane-service-v0.9.1-next.7...dataspace-control-plane-service-v0.9.1-next.8) (2026-07-02)
32
+
33
+
34
+ ### Bug Fixes
35
+
36
+ * defer catalogue reconciliation to background on startup ([#260](https://github.com/iotaledger/twin-dataspace/issues/260)) ([0824e46](https://github.com/iotaledger/twin-dataspace/commit/0824e465f5cedc9557abad90fb4d18a524210ddd))
37
+
38
+
39
+ ### Dependencies
40
+
41
+ * The following workspace dependencies were updated
42
+ * dependencies
43
+ * @twin.org/dataspace-models bumped from 0.9.1-next.7 to 0.9.1-next.8
44
+
45
+ ## [0.9.1-next.7](https://github.com/iotaledger/twin-dataspace/compare/dataspace-control-plane-service-v0.9.1-next.6...dataspace-control-plane-service-v0.9.1-next.7) (2026-07-02)
46
+
47
+
48
+ ### Features
49
+
50
+ * simplify url construction ([49986d1](https://github.com/iotaledger/twin-dataspace/commit/49986d1b67b58c0918a5744794d06baf6b6c6461))
51
+
52
+
53
+ ### Bug Fixes
54
+
55
+ * data plane path is base not full url for pull ([68092ac](https://github.com/iotaledger/twin-dataspace/commit/68092acf707b6ba6679f5b75d4dc355c6629396c))
56
+
57
+
58
+ ### Dependencies
59
+
60
+ * The following workspace dependencies were updated
61
+ * dependencies
62
+ * @twin.org/dataspace-models bumped from 0.9.1-next.6 to 0.9.1-next.7
63
+
64
+ ## [0.9.1-next.6](https://github.com/iotaledger/twin-dataspace/compare/dataspace-control-plane-service-v0.9.1-next.5...dataspace-control-plane-service-v0.9.1-next.6) (2026-07-02)
65
+
66
+
67
+ ### Features
68
+
69
+ * add transfer handlers ([#259](https://github.com/iotaledger/twin-dataspace/issues/259)) ([06e21b1](https://github.com/iotaledger/twin-dataspace/commit/06e21b179f548f3d93d81192b68ea710e5b9aafb))
70
+
71
+
72
+ ### Dependencies
73
+
74
+ * The following workspace dependencies were updated
75
+ * dependencies
76
+ * @twin.org/dataspace-models bumped from 0.9.1-next.5 to 0.9.1-next.6
77
+
78
+ ## [0.9.1-next.5](https://github.com/iotaledger/twin-dataspace/compare/dataspace-control-plane-service-v0.9.1-next.4...dataspace-control-plane-service-v0.9.1-next.5) (2026-06-30)
79
+
80
+
81
+ ### Features
82
+
83
+ * rest enhancements ([f6dbd24](https://github.com/iotaledger/twin-dataspace/commit/f6dbd24c186a382769c97e697e54f0b6e28488a9))
84
+
85
+
86
+ ### Dependencies
87
+
88
+ * The following workspace dependencies were updated
89
+ * dependencies
90
+ * @twin.org/dataspace-models bumped from 0.9.1-next.4 to 0.9.1-next.5
91
+
92
+ ## [0.9.1-next.4](https://github.com/iotaledger/twin-dataspace/compare/dataspace-control-plane-service-v0.9.1-next.3...dataspace-control-plane-service-v0.9.1-next.4) (2026-06-29)
93
+
94
+
95
+ ### Features
96
+
97
+ * enhanced rest testing ([#255](https://github.com/iotaledger/twin-dataspace/issues/255)) ([264f91e](https://github.com/iotaledger/twin-dataspace/commit/264f91ea3a6501a13da51e7accbe9035e5ac4cef))
98
+
99
+
100
+ ### Dependencies
101
+
102
+ * The following workspace dependencies were updated
103
+ * dependencies
104
+ * @twin.org/dataspace-models bumped from 0.9.1-next.3 to 0.9.1-next.4
105
+
106
+ ## [0.9.1-next.3](https://github.com/iotaledger/twin-dataspace/compare/dataspace-control-plane-service-v0.9.1-next.2...dataspace-control-plane-service-v0.9.1-next.3) (2026-06-26)
107
+
108
+
109
+ ### Features
110
+
111
+ * well-known endpoint ([9ff2607](https://github.com/iotaledger/twin-dataspace/commit/9ff2607a345ee9e038a2915179a926353251e59c))
112
+
113
+
114
+ ### Dependencies
115
+
116
+ * The following workspace dependencies were updated
117
+ * dependencies
118
+ * @twin.org/dataspace-models bumped from 0.9.1-next.2 to 0.9.1-next.3
119
+
120
+ ## [0.9.1-next.2](https://github.com/iotaledger/twin-dataspace/compare/dataspace-control-plane-service-v0.9.1-next.1...dataspace-control-plane-service-v0.9.1-next.2) (2026-06-26)
121
+
122
+
123
+ ### Features
124
+
125
+ * add well known versions endpoint ([#251](https://github.com/iotaledger/twin-dataspace/issues/251)) ([4b4cbe9](https://github.com/iotaledger/twin-dataspace/commit/4b4cbe91a40980481dad6e0650c1ee73c53ae360))
126
+
127
+
128
+ ### Dependencies
129
+
130
+ * The following workspace dependencies were updated
131
+ * dependencies
132
+ * @twin.org/dataspace-models bumped from 0.9.1-next.1 to 0.9.1-next.2
133
+
134
+ ## [0.9.1-next.1](https://github.com/iotaledger/twin-dataspace/compare/dataspace-control-plane-service-v0.9.1-next.0...dataspace-control-plane-service-v0.9.1-next.1) (2026-06-26)
135
+
136
+
137
+ ### Features
138
+
139
+ * add consumer transfer callbacks and startDataTransfer convenience method ([#151](https://github.com/iotaledger/twin-dataspace/issues/151)) ([0ab66c3](https://github.com/iotaledger/twin-dataspace/commit/0ab66c3636fd1f98f89baca1e99764d77c6f91d9))
140
+ * add support for the new federated catalogue trust model ([#179](https://github.com/iotaledger/twin-dataspace/issues/179)) ([0d99a93](https://github.com/iotaledger/twin-dataspace/commit/0d99a9331e259e3efe5250e390fdfb1a2f0983b1))
141
+ * add telemetry metrics to dataspace control and data plane services ([#212](https://github.com/iotaledger/twin-dataspace/issues/212)) ([b5b0248](https://github.com/iotaledger/twin-dataspace/commit/b5b024899ed12c0f639c5d51aefa3e509753eac6))
142
+ * add transferStarted provider method to start a data transfer ([#206](https://github.com/iotaledger/twin-dataspace/issues/206)) ([3ec2dc8](https://github.com/iotaledger/twin-dataspace/commit/3ec2dc8943c8531cd8d8e4ab07cb970ef7b11090))
143
+ * align all config times to ms ([40238d5](https://github.com/iotaledger/twin-dataspace/commit/40238d59a2b45caedc01792b682ce7206815dfd1))
144
+ * cross-node transfer callbacks and DataTransferManager auto-start ([#199](https://github.com/iotaledger/twin-dataspace/issues/199)) ([1089aa3](https://github.com/iotaledger/twin-dataspace/commit/1089aa344e3598e382f37a82ca03230c5cf6cacd))
145
+ * docs update ([8b44c7a](https://github.com/iotaledger/twin-dataspace/commit/8b44c7a75afb8d377a6f606616f8a78d58439ab4))
146
+ * endpoint encryption + getDatasetTargets multi-target fix ([#112](https://github.com/iotaledger/twin-dataspace/issues/112)) ([3288941](https://github.com/iotaledger/twin-dataspace/commit/328894113c19c7402f7d00dfa77b6a97ae40ca91))
147
+ * implement DSP push transfer mode ([#109](https://github.com/iotaledger/twin-dataspace/issues/109)) ([71f5fee](https://github.com/iotaledger/twin-dataspace/commit/71f5feec1d92dfec8ed6899c951809818e1bf2a3))
148
+ * improve open-api examples ([1368dbe](https://github.com/iotaledger/twin-dataspace/commit/1368dbed5c36e074b4854942304a19b9ce51e088))
149
+ * improve open-api examples ([44f7350](https://github.com/iotaledger/twin-dataspace/commit/44f7350c625d8d6afdca88b292dd48ef03253412))
150
+ * improve open-api examples ([f065f4b](https://github.com/iotaledger/twin-dataspace/commit/f065f4bd55540041a653ef141c4be29a83c5055e))
151
+ * improve validation ([#82](https://github.com/iotaledger/twin-dataspace/issues/82)) ([8bfaf7b](https://github.com/iotaledger/twin-dataspace/commit/8bfaf7b830f89b63575f8a51ee96bd8ac4da02f4))
152
+ * internalise constant ([9b9b293](https://github.com/iotaledger/twin-dataspace/commit/9b9b2933588ee70811a601bc485b5abaa12bed41))
153
+ * local optimization ([#218](https://github.com/iotaledger/twin-dataspace/issues/218)) ([1daae6b](https://github.com/iotaledger/twin-dataspace/commit/1daae6be8be44abdbe2b4c883c35938506cdd34a))
154
+ * organization identifiers ([#188](https://github.com/iotaledger/twin-dataspace/issues/188)) ([af643d3](https://github.com/iotaledger/twin-dataspace/commit/af643d3bb7f212d6cbb672e362a9e1bbe886d1a5))
155
+ * provider-side transfer auto-start and negotiation/transfer timeout callbacks ([#227](https://github.com/iotaledger/twin-dataspace/issues/227)) ([619d858](https://github.com/iotaledger/twin-dataspace/commit/619d858e8d44e59744dc8a0f73e06be976932b53))
156
+ * remove datasetsHandled method from apps ([9fdc950](https://github.com/iotaledger/twin-dataspace/commit/9fdc95018d38ab49c4a1094642be2ee83ee0e4cd))
157
+ * remove hosting component ([#209](https://github.com/iotaledger/twin-dataspace/issues/209)) ([5e19328](https://github.com/iotaledger/twin-dataspace/commit/5e1932823aa8a0f88f559f096610b9df1f3b8615))
158
+ * rename completed callback ([#147](https://github.com/iotaledger/twin-dataspace/issues/147)) ([f62baad](https://github.com/iotaledger/twin-dataspace/commit/f62baad0ff444e2913439b12dcd06d20c9a4f6a4))
159
+ * 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))
160
+ * shortcut implicit trust ([#215](https://github.com/iotaledger/twin-dataspace/issues/215)) ([f9bcfea](https://github.com/iotaledger/twin-dataspace/commit/f9bcfeab8f069b62017502833c108b4ee3791414))
161
+ * skip tenant dsp transfer routes ([#97](https://github.com/iotaledger/twin-dataspace/issues/97)) ([2f1ad97](https://github.com/iotaledger/twin-dataspace/commit/2f1ad971bc50ad24bb9f68759fbd4d44527d3d02))
162
+ * types update ([77c338e](https://github.com/iotaledger/twin-dataspace/commit/77c338e9244dcc7e3d597fdb06229513b1f13eac))
163
+ * typescript 6 update ([340f10e](https://github.com/iotaledger/twin-dataspace/commit/340f10e4767f6285c694938944f7e044474f9aaa))
164
+ * 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))
165
+ * update DataspaceTransferFormat names ([2c9d424](https://github.com/iotaledger/twin-dataspace/commit/2c9d424a07b97346faa2124048c4675514d58109))
166
+ * use inbuilt constants ([256bc03](https://github.com/iotaledger/twin-dataspace/commit/256bc0332bf439fcc16022e0b984b9035e9b0100))
167
+
168
+
169
+ ### Bug Fixes
170
+
171
+ * avoid compaction of incoming activities ([#77](https://github.com/iotaledger/twin-dataspace/issues/77)) ([ff43d6a](https://github.com/iotaledger/twin-dataspace/commit/ff43d6a3e1563eb9cb185501134b2a53ae88787c))
172
+ * defer startTransfer state mutation until dispatch succeeds ([#162](https://github.com/iotaledger/twin-dataspace/issues/162)) ([6704bbd](https://github.com/iotaledger/twin-dataspace/commit/6704bbd88c10c8b5b37b621b56cf9d8704e00a15))
173
+ * dependency update ([fbff0dd](https://github.com/iotaledger/twin-dataspace/commit/fbff0ddae93d82bd2899001368d7a03b482ce05c))
174
+ * docs and component init ([8557233](https://github.com/iotaledger/twin-dataspace/commit/8557233fb3b8273c5c9a5b580fb43061f8efe47c))
175
+ * gate implicit-trust shortcut on local provider endpoint ([#221](https://github.com/iotaledger/twin-dataspace/issues/221)) ([1167c53](https://github.com/iotaledger/twin-dataspace/commit/1167c53d2a94d4672191d278fed69b4f2d607a3c))
176
+ * 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))
177
+ * implement missing trust check on negotiateAgreement ([#136](https://github.com/iotaledger/twin-dataspace/issues/136)) ([a3589c2](https://github.com/iotaledger/twin-dataspace/commit/a3589c279476d5450b68ea7c2790be7e3125bfe2))
178
+ * incorrect docs ([754aa8d](https://github.com/iotaledger/twin-dataspace/commit/754aa8d032a5dfefa69072aa460106badfa41ac9))
179
+ * mock pnap ([35f21f8](https://github.com/iotaledger/twin-dataspace/commit/35f21f847d3fb9d2ffcb9191a18835093cd259b9))
180
+ * persist STARTED before setupPushSubscription so data-plane read-back sees the right state ([#168](https://github.com/iotaledger/twin-dataspace/issues/168)) ([6a7c81a](https://github.com/iotaledger/twin-dataspace/commit/6a7c81a1247dcbfbec5d64958328e8b77798be0c))
181
+ * remove inline i18n ([edde37e](https://github.com/iotaledger/twin-dataspace/commit/edde37e90ac397f253f57bc0d306b4bd0c797920))
182
+ * return 409 Conflict on duplicate dataset creation ([#165](https://github.com/iotaledger/twin-dataspace/issues/165)) ([890a2f5](https://github.com/iotaledger/twin-dataspace/commit/890a2f59d881aed4c50f63f57cdec3a4ccfb572d))
183
+ * use async getStore in tests ([739531e](https://github.com/iotaledger/twin-dataspace/commit/739531e1a159f728301835cd39cf06eab7a7bf4a))
184
+ * validate dataset-id ([#138](https://github.com/iotaledger/twin-dataspace/issues/138)) ([92a6a9b](https://github.com/iotaledger/twin-dataspace/commit/92a6a9b7b82c3dd5c652a3685892f7e9156d458b))
185
+
186
+
187
+ ### Dependencies
188
+
189
+ * The following workspace dependencies were updated
190
+ * dependencies
191
+ * @twin.org/dataspace-models bumped from 0.9.1-next.0 to 0.9.1-next.1
192
+
3
193
  ## [0.9.0](https://github.com/iotaledger/twin-dataspace/compare/dataspace-control-plane-service-v0.9.0...dataspace-control-plane-service-v0.9.0) (2026-06-25)
4
194
 
5
195
 
@@ -851,3 +851,21 @@ A promise that resolves when the dataset has been removed from storage and the c
851
851
  #### Implementation of
852
852
 
853
853
  `IDataspaceControlPlaneComponent.deleteAppDataset`
854
+
855
+ ***
856
+
857
+ ### getProtocolVersions() {#getprotocolversions}
858
+
859
+ > **getProtocolVersions**(): `Promise`\<`IDataspaceProtocolVersionResponse`\>
860
+
861
+ Return the Dataspace Protocol versions supported by this connector.
862
+
863
+ #### Returns
864
+
865
+ `Promise`\<`IDataspaceProtocolVersionResponse`\>
866
+
867
+ The protocol version response listing all supported DSP versions.
868
+
869
+ #### Implementation of
870
+
871
+ `IDataspaceControlPlaneComponent.getProtocolVersions`