@twin.org/dataspace-models 0.9.1 → 0.9.2-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 (65) hide show
  1. package/dist/es/entities/dataspaceAppDataset.js +11 -2
  2. package/dist/es/entities/dataspaceAppDataset.js.map +1 -1
  3. package/dist/es/entities/dataspaceAppDatasetV0.js +73 -0
  4. package/dist/es/entities/dataspaceAppDatasetV0.js.map +1 -0
  5. package/dist/es/entities/transferProcess.js +14 -20
  6. package/dist/es/entities/transferProcess.js.map +1 -1
  7. package/dist/es/entities/transferProcessV0.js +156 -0
  8. package/dist/es/entities/transferProcessV0.js.map +1 -0
  9. package/dist/es/entities/transferRetrieval.js +38 -0
  10. package/dist/es/entities/transferRetrieval.js.map +1 -0
  11. package/dist/es/index.js +5 -0
  12. package/dist/es/index.js.map +1 -1
  13. package/dist/es/models/IPushDeliveryPayload.js.map +1 -1
  14. package/dist/es/models/api/controlPlane/IAppDatasetCreateRequest.js.map +1 -1
  15. package/dist/es/models/api/controlPlane/IAppDatasetUpdateRequest.js.map +1 -1
  16. package/dist/es/models/controlPlane/IDataspaceAppDataset.js.map +1 -1
  17. package/dist/es/models/controlPlane/IDataspaceControlPlaneComponent.js.map +1 -1
  18. package/dist/es/models/controlPlane/ITransferCallback.js.map +1 -1
  19. package/dist/es/models/controlPlane/ITransferProcess.js.map +1 -1
  20. package/dist/es/models/controlPlane/ITransferQueryResult.js +2 -0
  21. package/dist/es/models/controlPlane/ITransferQueryResult.js.map +1 -0
  22. package/dist/es/models/controlPlane/dataspaceControlPlaneMetricIds.js +5 -1
  23. package/dist/es/models/controlPlane/dataspaceControlPlaneMetricIds.js.map +1 -1
  24. package/dist/es/models/controlPlane/dataspaceControlPlaneMetrics.js +5 -0
  25. package/dist/es/models/controlPlane/dataspaceControlPlaneMetrics.js.map +1 -1
  26. package/dist/es/models/controlPlane/transferTerminationCode.js +14 -0
  27. package/dist/es/models/controlPlane/transferTerminationCode.js.map +1 -0
  28. package/dist/es/models/dataPlane/IDataspaceDataPlaneComponent.js.map +1 -1
  29. package/dist/types/entities/dataspaceAppDataset.d.ts +6 -1
  30. package/dist/types/entities/dataspaceAppDatasetV0.d.ts +39 -0
  31. package/dist/types/entities/transferProcess.d.ts +10 -13
  32. package/dist/types/entities/transferProcessV0.d.ts +83 -0
  33. package/dist/types/entities/transferRetrieval.d.ts +18 -0
  34. package/dist/types/index.d.ts +5 -0
  35. package/dist/types/models/IPushDeliveryPayload.d.ts +1 -1
  36. package/dist/types/models/api/controlPlane/IAppDatasetCreateRequest.d.ts +7 -2
  37. package/dist/types/models/api/controlPlane/IAppDatasetUpdateRequest.d.ts +5 -0
  38. package/dist/types/models/controlPlane/IDataspaceAppDataset.d.ts +5 -0
  39. package/dist/types/models/controlPlane/IDataspaceControlPlaneComponent.d.ts +36 -6
  40. package/dist/types/models/controlPlane/ITransferCallback.d.ts +3 -3
  41. package/dist/types/models/controlPlane/ITransferProcess.d.ts +2 -11
  42. package/dist/types/models/controlPlane/ITransferQueryResult.d.ts +14 -0
  43. package/dist/types/models/controlPlane/dataspaceControlPlaneMetricIds.d.ts +4 -0
  44. package/dist/types/models/controlPlane/transferTerminationCode.d.ts +14 -0
  45. package/dist/types/models/dataPlane/IDataspaceDataPlaneComponent.d.ts +1 -1
  46. package/docs/changelog.md +110 -0
  47. package/docs/reference/classes/DataspaceAppDataset.md +10 -1
  48. package/docs/reference/classes/DataspaceAppDatasetV0.md +77 -0
  49. package/docs/reference/classes/TransferProcess.md +12 -18
  50. package/docs/reference/classes/TransferProcessV0.md +156 -0
  51. package/docs/reference/classes/TransferRetrieval.md +38 -0
  52. package/docs/reference/index.md +6 -0
  53. package/docs/reference/interfaces/IAppDatasetCreateRequest.md +9 -2
  54. package/docs/reference/interfaces/IAppDatasetUpdateRequest.md +7 -0
  55. package/docs/reference/interfaces/IDataspaceAppDataset.md +9 -0
  56. package/docs/reference/interfaces/IDataspaceControlPlaneComponent.md +77 -5
  57. package/docs/reference/interfaces/IDataspaceDataPlaneComponent.md +1 -1
  58. package/docs/reference/interfaces/IPushDeliveryPayload.md +1 -1
  59. package/docs/reference/interfaces/ITransferCallback.md +3 -3
  60. package/docs/reference/interfaces/ITransferProcess.md +2 -14
  61. package/docs/reference/interfaces/ITransferQueryResult.md +19 -0
  62. package/docs/reference/type-aliases/TransferTerminationCode.md +5 -0
  63. package/docs/reference/variables/DataspaceControlPlaneMetricIds.md +6 -0
  64. package/docs/reference/variables/TransferTerminationCode.md +14 -0
  65. package/package.json +15 -14
@@ -1,8 +1,9 @@
1
1
  import type { IComponent } from "@twin.org/core";
2
- import type { IDataspaceProtocolContractNegotiation, IDataspaceProtocolContractNegotiationError, IDataspaceProtocolDataset, IDataspaceProtocolTransferCompletionMessage, IDataspaceProtocolTransferError, IDataspaceProtocolTransferProcess, IDataspaceProtocolTransferRequestMessage, IDataspaceProtocolTransferStartMessage, IDataspaceProtocolTransferSuspensionMessage, IDataspaceProtocolTransferTerminationMessage, IDataspaceProtocolVersionResponse } from "@twin.org/standards-dataspace-protocol";
2
+ import type { DataspaceProtocolTransferProcessStateType, IDataspaceProtocolContractNegotiation, IDataspaceProtocolContractNegotiationError, IDataspaceProtocolDataset, IDataspaceProtocolTransferCompletionMessage, IDataspaceProtocolTransferError, IDataspaceProtocolTransferProcess, IDataspaceProtocolTransferRequestMessage, IDataspaceProtocolTransferStartMessage, IDataspaceProtocolTransferSuspensionMessage, IDataspaceProtocolTransferTerminationMessage, IDataspaceProtocolVersionResponse } from "@twin.org/standards-dataspace-protocol";
3
3
  import type { IDataspaceAppDataset } from "./IDataspaceAppDataset.js";
4
4
  import type { INegotiationCallback } from "./INegotiationCallback.js";
5
5
  import type { ITransferCallback } from "./ITransferCallback.js";
6
+ import type { ITransferQueryResult } from "./ITransferQueryResult.js";
6
7
  /**
7
8
  * Dataspace Control Plane Component interface.
8
9
  * Implements Eclipse Dataspace Protocol (DSP) specifications:
@@ -40,7 +41,7 @@ export interface IDataspaceControlPlaneComponent extends IComponent {
40
41
  * notified via the registered INegotiationCallback when the negotiation completes.
41
42
  * The negotiation follows DSP state machine: REQUESTED → OFFERED → AGREED → VERIFIED → FINALIZED.
42
43
  *
43
- * The REST client does not support this method and throws a not supported error
44
+ * The REST client does not support this method and throws a not supported error -
44
45
  * use ComponentFactory.get() for the in-process service.
45
46
  *
46
47
  * DSP Spec: https://eclipse-dataspace-protocol-base.github.io/DataspaceProtocol/2025-1/#negotiation-protocol
@@ -98,7 +99,7 @@ export interface IDataspaceControlPlaneComponent extends IComponent {
98
99
  * consumer-initiated transfer changes state (STARTED, COMPLETED, SUSPENDED,
99
100
  * TERMINATED).
100
101
  *
101
- * The REST client does not support this method and throws a not supported error
102
+ * The REST client does not support this method and throws a not supported error -
102
103
  * use ComponentFactory.get() for the in-process service.
103
104
  * @param key A unique key identifying this callback registration.
104
105
  * @param callback The callback interface to register.
@@ -123,7 +124,7 @@ export interface IDataspaceControlPlaneComponent extends IComponent {
123
124
  * via the registered ITransferCallback. The transfer moves to STARTED when the
124
125
  * provider POSTs a TransferStartMessage back to this node's callback address.
125
126
  *
126
- * The REST client does not support this method and throws a not supported error
127
+ * The REST client does not support this method and throws a not supported error -
127
128
  * use ComponentFactory.get() for the in-process service.
128
129
  *
129
130
  * @param agreementId The finalized agreement ID (from contract negotiation).
@@ -245,6 +246,25 @@ export interface IDataspaceControlPlaneComponent extends IComponent {
245
246
  * @returns Transfer Process (DSP compliant) with current state, or TransferError if the operation fails.
246
247
  */
247
248
  getTransferProcess(pid: string, trustPayload: unknown): Promise<IDataspaceProtocolTransferProcess | IDataspaceProtocolTransferError>;
249
+ /**
250
+ * Query Transfer Processes by agreement id.
251
+ * Lets a caller check whether transfers already exist for an agreement
252
+ * (e.g. before initiating a new one) without knowing any process ids.
253
+ *
254
+ * Role Performed: Consumer / Provider
255
+ * Called by: Consumer orchestration before requesting a new transfer, or either
256
+ * party inspecting the transfers attached to an agreement on their side.
257
+ *
258
+ * Results are limited to transfers where the authenticated caller is a party
259
+ * (consumer or provider identity). A returned dataAddress is a point-in-time copy;
260
+ * if its token has expired the data plane rejects it and a new start is required.
261
+ * @param agreementId The agreement id to look up transfer processes for.
262
+ * @param state Optional filter to a single transfer process state.
263
+ * @param cursor Optional pagination cursor from a previous result page.
264
+ * @param trustPayload Trust payload containing authorization information (JWT, VC, etc.).
265
+ * @returns The matching transfer processes and a pagination cursor when more pages exist, empty when none match.
266
+ */
267
+ queryDataTransfer(agreementId: string, state: DataspaceProtocolTransferProcessStateType | undefined, cursor: string | undefined, trustPayload: unknown): Promise<ITransferQueryResult>;
248
268
  /**
249
269
  * Register an app dataset for a dataspace app, owned by the calling tenant.
250
270
  * @param id Optional explicit id. If omitted, derived from `dataset["@id"]`
@@ -252,9 +272,14 @@ export interface IDataspaceControlPlaneComponent extends IComponent {
252
272
  * @param appId The dataspace app this dataset belongs to (matches
253
273
  * `DataspaceAppFactory` registration name).
254
274
  * @param dataset The dataset payload (may omit system-stamped fields).
275
+ * @param options Optional dataset settings.
276
+ * @param options.transferIdleTimeoutMs Optional idle window (ms) overriding the node-level idle
277
+ * policy for this dataset's PULL transfers; 0 disables it for this dataset.
255
278
  * @returns The resolved dataset id.
256
279
  */
257
- createAppDataset(id: string | undefined, appId: string, dataset: IDataspaceProtocolDataset): Promise<string>;
280
+ createAppDataset(id: string | undefined, appId: string, dataset: IDataspaceProtocolDataset, options?: {
281
+ transferIdleTimeoutMs?: number;
282
+ }): Promise<string>;
258
283
  /**
259
284
  * Get an app dataset record owned by the calling tenant.
260
285
  * @param id The stored app dataset id.
@@ -276,9 +301,14 @@ export interface IDataspaceControlPlaneComponent extends IComponent {
276
301
  * @param id The stored app dataset id.
277
302
  * @param appId The dataspace app this dataset belongs to.
278
303
  * @param dataset The dataset payload.
304
+ * @param options Optional dataset settings.
305
+ * @param options.transferIdleTimeoutMs Optional idle window (ms) overriding the node-level idle
306
+ * policy for this dataset's PULL transfers; 0 disables it for this dataset.
279
307
  * @returns A promise that resolves when the dataset has been updated in storage and the catalogue.
280
308
  */
281
- updateAppDataset(id: string, appId: string, dataset: IDataspaceProtocolDataset): Promise<void>;
309
+ updateAppDataset(id: string, appId: string, dataset: IDataspaceProtocolDataset, options?: {
310
+ transferIdleTimeoutMs?: number;
311
+ }): Promise<void>;
282
312
  /**
283
313
  * Delete an app dataset record owned by the calling tenant.
284
314
  * @param id The stored app dataset id.
@@ -49,9 +49,9 @@ export interface ITransferCallback {
49
49
  */
50
50
  onFailed?(consumerPid: string, reason: string): Promise<void>;
51
51
  /**
52
- * Called when the transfer times out, i.e. the provider did not progress it (it sat in REQUESTED)
53
- * within the configured window. Optional: implement it to be notified specifically of a non-response
54
- * (otherwise the control plane falls back to `onFailed(consumerPid, "transferStalled")`).
52
+ * Called when the transfer times out: a consumer-side REQUESTED transfer the provider never
53
+ * progressed, or a provider-side STARTED transfer idle beyond the configured window. Optional:
54
+ * otherwise the control plane falls back to `onFailed` with the timeout reason.
55
55
  * @param consumerPid The consumer-side process ID.
56
56
  * @returns Nothing.
57
57
  */
@@ -1,4 +1,3 @@
1
- import type { IRightsManagementPolicy } from "@twin.org/rights-management-models";
2
1
  import type { DataspaceProtocolTransferProcessStateType, IDataspaceProtocolDataAddress } from "@twin.org/standards-dataspace-protocol";
3
2
  import type { TransferProcessRole } from "./transferProcessRole.js";
4
3
  /**
@@ -28,7 +27,6 @@ export interface ITransferProcess {
28
27
  state: DataspaceProtocolTransferProcessStateType;
29
28
  /**
30
29
  * Agreement ID linking to the rights-management Agreement.
31
- * Used to resolve policies and permissions.
32
30
  */
33
31
  agreementId: string;
34
32
  /**
@@ -40,11 +38,6 @@ export interface ITransferProcess {
40
38
  * Offer ID from the original Catalog offer.
41
39
  */
42
40
  offerId: string;
43
- /**
44
- * Policies from the Agreement.
45
- * Used by DSC for runtime policy enforcement.
46
- */
47
- policies?: IRightsManagementPolicy[];
48
41
  /**
49
42
  * Consumer identity (DID or URI).
50
43
  * Used for auditing and access control.
@@ -76,10 +69,8 @@ export interface ITransferProcess {
76
69
  */
77
70
  format?: string;
78
71
  /**
79
- * Data address for consumer-initiated push transfers (HttpData-PUSH).
80
- * Contains the consumer's /inbox endpoint as supplied in the TransferRequestMessage.
81
- * Absent for PULL (HttpData-PULL) and provider-initiated push (HttpData-POST),
82
- * where the consumer deliberately omits a dataAddress.
72
+ * Data address for the transfer: the consumer's inbox for PUSH, or the
73
+ * provider-built address persisted at start for PULL/POST; may expire while STARTED.
83
74
  */
84
75
  dataAddress?: IDataspaceProtocolDataAddress;
85
76
  /**
@@ -0,0 +1,14 @@
1
+ import type { ITransferProcess } from "./ITransferProcess.js";
2
+ /**
3
+ * Result of querying Transfer Processes by agreement.
4
+ */
5
+ export interface ITransferQueryResult {
6
+ /**
7
+ * The transfer processes matching the query, empty when none match.
8
+ */
9
+ transfers: ITransferProcess[];
10
+ /**
11
+ * Pagination cursor for retrieving the next page, omitted when no more results exist.
12
+ */
13
+ cursor?: string;
14
+ }
@@ -42,6 +42,10 @@ export declare const DataspaceControlPlaneMetricIds: {
42
42
  * Number of app datasets deleted.
43
43
  */
44
44
  readonly AppDatasetsDeleted: "dcp_app_datasets_deleted";
45
+ /**
46
+ * Number of agreements removed by the agreement sweep.
47
+ */
48
+ readonly AgreementsSwept: "dcp_agreements_swept";
45
49
  };
46
50
  /**
47
51
  * Metric IDs for the dataspace control plane service.
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Machine-readable codes set on provider-initiated TransferTerminationMessages
3
+ * by the control plane's transfer lifecycle policies.
4
+ */
5
+ export declare const TransferTerminationCode: {
6
+ /**
7
+ * A Provider-side STARTED transfer had no data-plane activity within the configured idle window.
8
+ */
9
+ readonly IdleTimeout: "idleTimeout";
10
+ };
11
+ /**
12
+ * Type for TransferTerminationCode values.
13
+ */
14
+ export type TransferTerminationCode = (typeof TransferTerminationCode)[keyof typeof TransferTerminationCode];
@@ -37,7 +37,7 @@ export interface IDataspaceDataPlaneComponent extends IComponent {
37
37
  * @param trustPayload Trust payload to verify the requester's identity.
38
38
  * @returns the Activity Log Entry with the processing details.
39
39
  * @throws NotFoundError if activity log entry is not known.
40
- * @throws UnauthorizedError if trustPayload is absent or the verified identity is not the entry generator.
40
+ * @throws UnauthorizedError if trustPayload is absent or the verified identity is not authorised for the entry.
41
41
  */
42
42
  getActivityLogEntry(logEntryId: string, trustPayload?: unknown): Promise<IActivityLogEntry>;
43
43
  /**
package/docs/changelog.md CHANGED
@@ -1,5 +1,115 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.9.2-next.10](https://github.com/iotaledger/twin-dataspace/compare/dataspace-models-v0.9.2-next.9...dataspace-models-v0.9.2-next.10) (2026-08-16)
4
+
5
+
6
+ ### Features
7
+
8
+ * add unused agreement sweep to the control plane ([#344](https://github.com/iotaledger/twin-dataspace/issues/344)) ([8633642](https://github.com/iotaledger/twin-dataspace/commit/86336424ced7aeab3259c78373447074f4140e90))
9
+
10
+ ## [0.9.2-next.9](https://github.com/iotaledger/twin-dataspace/compare/dataspace-models-v0.9.2-next.8...dataspace-models-v0.9.2-next.9) (2026-08-13)
11
+
12
+
13
+ ### Bug Fixes
14
+
15
+ * get activity log auth ([#343](https://github.com/iotaledger/twin-dataspace/issues/343)) ([9514679](https://github.com/iotaledger/twin-dataspace/commit/95146790ccf7b54fd5dce923af64fdaa607ca555))
16
+
17
+ ## [0.9.2-next.8](https://github.com/iotaledger/twin-dataspace/compare/dataspace-models-v0.9.2-next.7...dataspace-models-v0.9.2-next.8) (2026-08-11)
18
+
19
+
20
+ ### Features
21
+
22
+ * transfer process remove inline agreement ([#340](https://github.com/iotaledger/twin-dataspace/issues/340)) ([332eaf6](https://github.com/iotaledger/twin-dataspace/commit/332eaf67e5cf0b13545d013d107658b232ae32ff))
23
+
24
+ ## [0.9.2-next.7](https://github.com/iotaledger/twin-dataspace/compare/dataspace-models-v0.9.2-next.6...dataspace-models-v0.9.2-next.7) (2026-08-10)
25
+
26
+
27
+ ### Miscellaneous Chores
28
+
29
+ * **dataspace-models:** Synchronize repo versions
30
+
31
+ ## [0.9.2-next.6](https://github.com/iotaledger/twin-dataspace/compare/dataspace-models-v0.9.2-next.5...dataspace-models-v0.9.2-next.6) (2026-08-10)
32
+
33
+
34
+ ### Miscellaneous Chores
35
+
36
+ * **dataspace-models:** Synchronize repo versions
37
+
38
+ ## [0.9.2-next.5](https://github.com/iotaledger/twin-dataspace/compare/dataspace-models-v0.9.2-next.4...dataspace-models-v0.9.2-next.5) (2026-08-07)
39
+
40
+
41
+ ### Features
42
+
43
+ * linting and dependency update ([adf8ee0](https://github.com/iotaledger/twin-dataspace/commit/adf8ee04f657f22fb051978591749a4cf19d67a1))
44
+
45
+ ## [0.9.2-next.4](https://github.com/iotaledger/twin-dataspace/compare/dataspace-models-v0.9.2-next.3...dataspace-models-v0.9.2-next.4) (2026-08-03)
46
+
47
+
48
+ ### Miscellaneous Chores
49
+
50
+ * **dataspace-models:** Synchronize repo versions
51
+
52
+ ## [0.9.2-next.3](https://github.com/iotaledger/twin-dataspace/compare/dataspace-models-v0.9.2-next.2...dataspace-models-v0.9.2-next.3) (2026-07-31)
53
+
54
+
55
+ ### Bug Fixes
56
+
57
+ * keep one TransferProcess record per role in self transfers ([#321](https://github.com/iotaledger/twin-dataspace/issues/321)) ([91ccc87](https://github.com/iotaledger/twin-dataspace/commit/91ccc87e47d94c6a015e3f974f0dd4cf680c4603))
58
+
59
+ ## [0.9.2-next.2](https://github.com/iotaledger/twin-dataspace/compare/dataspace-models-v0.9.2-next.1...dataspace-models-v0.9.2-next.2) (2026-07-30)
60
+
61
+
62
+ ### Miscellaneous Chores
63
+
64
+ * **dataspace-models:** Synchronize repo versions
65
+
66
+ ## [0.9.2-next.1](https://github.com/iotaledger/twin-dataspace/compare/dataspace-models-v0.9.2-next.0...dataspace-models-v0.9.2-next.1) (2026-07-28)
67
+
68
+
69
+ ### Features
70
+
71
+ * 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))
72
+ * add dataspace transfer format ([#111](https://github.com/iotaledger/twin-dataspace/issues/111)) ([f59ff5e](https://github.com/iotaledger/twin-dataspace/commit/f59ff5ef10d261d1cebbf5c6bb0689e74a10738a))
73
+ * add inline tasks and concurrent options ([#104](https://github.com/iotaledger/twin-dataspace/issues/104)) ([2227a21](https://github.com/iotaledger/twin-dataspace/commit/2227a212d906f58ba77850c79bb20bf2cb7195a8))
74
+ * 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))
75
+ * 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))
76
+ * add well known versions endpoint ([#251](https://github.com/iotaledger/twin-dataspace/issues/251)) ([4b4cbe9](https://github.com/iotaledger/twin-dataspace/commit/4b4cbe91a40980481dad6e0650c1ee73c53ae360))
77
+ * align all config times to ms ([40238d5](https://github.com/iotaledger/twin-dataspace/commit/40238d59a2b45caedc01792b682ce7206815dfd1))
78
+ * 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))
79
+ * docs update ([8b44c7a](https://github.com/iotaledger/twin-dataspace/commit/8b44c7a75afb8d377a6f606616f8a78d58439ab4))
80
+ * endpoint encryption + getDatasetTargets multi-target fix ([#112](https://github.com/iotaledger/twin-dataspace/issues/112)) ([3288941](https://github.com/iotaledger/twin-dataspace/commit/328894113c19c7402f7d00dfa77b6a97ae40ca91))
81
+ * get activity log add trust payload ([#201](https://github.com/iotaledger/twin-dataspace/issues/201)) ([cdb5486](https://github.com/iotaledger/twin-dataspace/commit/cdb5486942c1b94ddf6435236b9b9d190bea0407))
82
+ * implement DSP push transfer mode ([#109](https://github.com/iotaledger/twin-dataspace/issues/109)) ([71f5fee](https://github.com/iotaledger/twin-dataspace/commit/71f5feec1d92dfec8ed6899c951809818e1bf2a3))
83
+ * improve error handling and component usage ([544e20e](https://github.com/iotaledger/twin-dataspace/commit/544e20e640d6f09266942bfc698aead6227a7769))
84
+ * improve open-api examples ([1368dbe](https://github.com/iotaledger/twin-dataspace/commit/1368dbed5c36e074b4854942304a19b9ce51e088))
85
+ * improve validation ([#82](https://github.com/iotaledger/twin-dataspace/issues/82)) ([8bfaf7b](https://github.com/iotaledger/twin-dataspace/commit/8bfaf7b830f89b63575f8a51ee96bd8ac4da02f4))
86
+ * organization identifiers ([#188](https://github.com/iotaledger/twin-dataspace/issues/188)) ([af643d3](https://github.com/iotaledger/twin-dataspace/commit/af643d3bb7f212d6cbb672e362a9e1bbe886d1a5))
87
+ * provider-side idle lifecycle policy for STARTED data transfers ([#284](https://github.com/iotaledger/twin-dataspace/issues/284)) ([a9312ef](https://github.com/iotaledger/twin-dataspace/commit/a9312ef7573a92805c99cb2a314e8b289a6ab195))
88
+ * 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))
89
+ * query existing data transfers by agreement to avoid duplicate preparations ([#289](https://github.com/iotaledger/twin-dataspace/issues/289)) ([53fe251](https://github.com/iotaledger/twin-dataspace/commit/53fe2516b2287b6b6a7a6ca6fc6063ea4a446cf0))
90
+ * remove datasetsHandled method from apps ([9fdc950](https://github.com/iotaledger/twin-dataspace/commit/9fdc95018d38ab49c4a1094642be2ee83ee0e4cd))
91
+ * remove hosting component ([#209](https://github.com/iotaledger/twin-dataspace/issues/209)) ([5e19328](https://github.com/iotaledger/twin-dataspace/commit/5e1932823aa8a0f88f559f096610b9df1f3b8615))
92
+ * rename completed callback ([#147](https://github.com/iotaledger/twin-dataspace/issues/147)) ([f62baad](https://github.com/iotaledger/twin-dataspace/commit/f62baad0ff444e2913439b12dcd06d20c9a4f6a4))
93
+ * 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))
94
+ * shortcut implicit trust ([#215](https://github.com/iotaledger/twin-dataspace/issues/215)) ([f9bcfea](https://github.com/iotaledger/twin-dataspace/commit/f9bcfeab8f069b62017502833c108b4ee3791414))
95
+ * types update ([77c338e](https://github.com/iotaledger/twin-dataspace/commit/77c338e9244dcc7e3d597fdb06229513b1f13eac))
96
+ * typescript 6 update ([340f10e](https://github.com/iotaledger/twin-dataspace/commit/340f10e4767f6285c694938944f7e044474f9aaa))
97
+ * 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))
98
+ * update DataspaceTransferFormat names ([2c9d424](https://github.com/iotaledger/twin-dataspace/commit/2c9d424a07b97346faa2124048c4675514d58109))
99
+
100
+
101
+ ### Bug Fixes
102
+
103
+ * always verify trust in notifyActivity, no internal by ([#192](https://github.com/iotaledger/twin-dataspace/issues/192)) ([2cfc160](https://github.com/iotaledger/twin-dataspace/commit/2cfc16082a7c9d417f0b05f90f123e40f47d1e05))
104
+ * avoid compaction of incoming activities ([#77](https://github.com/iotaledger/twin-dataspace/issues/77)) ([ff43d6a](https://github.com/iotaledger/twin-dataspace/commit/ff43d6a3e1563eb9cb185501134b2a53ae88787c))
105
+ * docs ([652f4f2](https://github.com/iotaledger/twin-dataspace/commit/652f4f2fec8601bb3772e054b2c823f599ef68dc))
106
+ * filtering query optional q ([#248](https://github.com/iotaledger/twin-dataspace/issues/248)) ([e9e8ff1](https://github.com/iotaledger/twin-dataspace/commit/e9e8ff1e1bb3b93f0960260c21a46d6f58dbfaa2))
107
+ * implement missing trust check on negotiateAgreement ([#136](https://github.com/iotaledger/twin-dataspace/issues/136)) ([a3589c2](https://github.com/iotaledger/twin-dataspace/commit/a3589c279476d5450b68ea7c2790be7e3125bfe2))
108
+ * missing dependencies ([54e9e9c](https://github.com/iotaledger/twin-dataspace/commit/54e9e9c474b61cce3b9a82f9ccec27c7f8133382))
109
+ * retain cursor after pep enforcement ([#296](https://github.com/iotaledger/twin-dataspace/issues/296)) ([5198cd2](https://github.com/iotaledger/twin-dataspace/commit/5198cd29505ceffa532fa4fa18c97a5c8e78f663))
110
+ * return 422/500 when inline activity processing fails ([#135](https://github.com/iotaledger/twin-dataspace/issues/135)) ([8635187](https://github.com/iotaledger/twin-dataspace/commit/863518724cb90af15edc5f456d9a93c6cad7d661))
111
+ * throw not supported error for in-process only control plane methods ([#185](https://github.com/iotaledger/twin-dataspace/issues/185)) ([130f00a](https://github.com/iotaledger/twin-dataspace/commit/130f00a87412b34defde891855bee7aa3ac34130))
112
+
3
113
  ## [0.9.1](https://github.com/iotaledger/twin-dataspace/compare/dataspace-models-v0.9.1...dataspace-models-v0.9.1) (2026-07-27)
4
114
 
5
115
 
@@ -35,7 +35,7 @@ The identity of the organization that owns this entity.
35
35
  > `optional` **tenantId?**: `string`
36
36
 
37
37
  The tenant that owns this dataset, captured from the request context at
38
- write time. Optional single-tenant nodes (no `TWIN_TENANT_ENABLED`)
38
+ write time. Optional - single-tenant nodes (no `TWIN_TENANT_ENABLED`)
39
39
  register datasets without a tenant context.
40
40
 
41
41
  ***
@@ -62,6 +62,15 @@ opaque object and validated/populated at publish time.
62
62
 
63
63
  ***
64
64
 
65
+ ### transferIdleTimeoutMs? {#transferidletimeoutms}
66
+
67
+ > `optional` **transferIdleTimeoutMs?**: `number`
68
+
69
+ Idle window (ms) for this dataset's PULL transfers, overriding the node-level
70
+ providerTransferIdleTimeoutMs; 0 disables the idle policy for this dataset.
71
+
72
+ ***
73
+
65
74
  ### dateCreated {#datecreated}
66
75
 
67
76
  > **dateCreated**: `string`
@@ -0,0 +1,77 @@
1
+ # Class: DataspaceAppDatasetV0
2
+
3
+ Tenant-supplied Dataset shape persisted by the Control Plane, version 0.
4
+
5
+ ## Constructors
6
+
7
+ ### Constructor
8
+
9
+ > **new DataspaceAppDatasetV0**(): `DataspaceAppDatasetV0`
10
+
11
+ #### Returns
12
+
13
+ `DataspaceAppDatasetV0`
14
+
15
+ ## Properties
16
+
17
+ ### id {#id}
18
+
19
+ > **id**: `string`
20
+
21
+ The unique identifier for the dataset.
22
+
23
+ ***
24
+
25
+ ### organizationIdentity {#organizationidentity}
26
+
27
+ > **organizationIdentity**: `string`
28
+
29
+ The identity of the organization that owns this entity.
30
+
31
+ ***
32
+
33
+ ### tenantId? {#tenantid}
34
+
35
+ > `optional` **tenantId?**: `string`
36
+
37
+ The tenant that owns this dataset, captured from the request context at
38
+ write time. Optional - single-tenant nodes (no `TWIN_TENANT_ENABLED`)
39
+ register datasets without a tenant context.
40
+
41
+ ***
42
+
43
+ ### appId {#appid}
44
+
45
+ > **appId**: `string`
46
+
47
+ The dataspace app that this dataset belongs to. Matches the app's
48
+ registered name in `DataspaceAppFactory` (typically the app's URI).
49
+
50
+ ***
51
+
52
+ ### dataset {#dataset}
53
+
54
+ > **dataset**: `object`
55
+
56
+ The user-controlled JSON-LD dataset payload. Stored as an
57
+ opaque object and validated/populated at publish time.
58
+
59
+ #### Index Signature
60
+
61
+ \[`key`: `string`\]: `unknown`
62
+
63
+ ***
64
+
65
+ ### dateCreated {#datecreated}
66
+
67
+ > **dateCreated**: `string`
68
+
69
+ Creation timestamp (ISO string format).
70
+
71
+ ***
72
+
73
+ ### dateModified {#datemodified}
74
+
75
+ > **dateModified**: `string`
76
+
77
+ Last update timestamp (ISO string format).
@@ -15,20 +15,21 @@ This entity is the persistent representation of ITransferProcess.
15
15
 
16
16
  ## Properties
17
17
 
18
- ### consumerPid {#consumerpid}
18
+ ### id {#id}
19
19
 
20
- > **consumerPid**: `string`
20
+ > **id**: `string`
21
21
 
22
- The consumer PID is the primary key.
23
- Used for direct lookup by consumerPid.
22
+ Internal id, the primary key. Both role records of a self transfer share consumerPid and
23
+ providerPid, so only the internal id is collision-free within one partition.
24
24
 
25
25
  ***
26
26
 
27
- ### id {#id}
27
+ ### consumerPid {#consumerpid}
28
28
 
29
- > **id**: `string`
29
+ > **consumerPid**: `string`
30
30
 
31
- Internal UUID for storage (secondary key for providerPid lookup).
31
+ Consumer Process ID from the DSP protocol.
32
+ Indexed for lookup by consumerPid.
32
33
 
33
34
  ***
34
35
 
@@ -95,8 +96,8 @@ Provider identity (DID or URI).
95
96
  > `optional` **localRole?**: [`TransferProcessRole`](../type-aliases/TransferProcessRole.md)
96
97
 
97
98
  This node's role in the transfer, captured at write time so state transitions and async delivery
98
- can tell which party we are without inferring it from the matched PID (consumerPid is the primary
99
- key on both nodes). Optional for back-compat with records written before this field existed.
99
+ can tell which party we are without inferring it from the matched PID (a self transfer stores two
100
+ records sharing both pids). Optional for back-compat with records written before this field existed.
100
101
 
101
102
  ***
102
103
 
@@ -140,16 +141,9 @@ Last update timestamp (ISO string format).
140
141
 
141
142
  ***
142
143
 
143
- ### policies? {#policies}
144
-
145
- > `optional` **policies?**: `IRightsManagementPolicy`[]
146
-
147
- Policies from the Agreement (stored as JSON).
148
-
149
- ***
150
-
151
144
  ### dataAddress? {#dataaddress}
152
145
 
153
146
  > `optional` **dataAddress?**: `IDataspaceProtocolDataAddress`
154
147
 
155
- Data address for push mode transfers (stored as JSON).
148
+ Data address for the transfer (stored as JSON): the consumer's inbox for PUSH, or the
149
+ provider-built address persisted at start for PULL/POST; may expire while STARTED.
@@ -0,0 +1,156 @@
1
+ # Class: TransferProcessV0
2
+
3
+ Transfer Process for shared storage between Control Plane and Data Plane, version 0.
4
+ Keyed on consumerPid; superseded by the version keyed on the internal id.
5
+
6
+ ## Constructors
7
+
8
+ ### Constructor
9
+
10
+ > **new TransferProcessV0**(): `TransferProcessV0`
11
+
12
+ #### Returns
13
+
14
+ `TransferProcessV0`
15
+
16
+ ## Properties
17
+
18
+ ### consumerPid {#consumerpid}
19
+
20
+ > **consumerPid**: `string`
21
+
22
+ The consumer PID is the primary key.
23
+ Used for direct lookup by consumerPid.
24
+
25
+ ***
26
+
27
+ ### id {#id}
28
+
29
+ > **id**: `string`
30
+
31
+ Internal UUID for storage (secondary key for providerPid lookup).
32
+
33
+ ***
34
+
35
+ ### providerPid {#providerpid}
36
+
37
+ > **providerPid**: `string`
38
+
39
+ Provider Process ID from the DSP protocol.
40
+ Indexed for lookup by providerPid.
41
+
42
+ ***
43
+
44
+ ### agreementId {#agreementid}
45
+
46
+ > **agreementId**: `string`
47
+
48
+ Agreement ID linking to the rights-management Agreement.
49
+
50
+ ***
51
+
52
+ ### state {#state}
53
+
54
+ > **state**: `DataspaceProtocolTransferProcessStateType`
55
+
56
+ Transfer Process state from the DSP protocol.
57
+ One of: REQUESTED, STARTED, COMPLETED, SUSPENDED, TERMINATED.
58
+
59
+ ***
60
+
61
+ ### datasetId {#datasetid}
62
+
63
+ > **datasetId**: `string`
64
+
65
+ Dataset ID for DSC resolution.
66
+
67
+ ***
68
+
69
+ ### offerId {#offerid}
70
+
71
+ > **offerId**: `string`
72
+
73
+ Offer ID from the original Catalog offer.
74
+
75
+ ***
76
+
77
+ ### consumerIdentity? {#consumeridentity}
78
+
79
+ > `optional` **consumerIdentity?**: `string`
80
+
81
+ Consumer identity (DID or URI).
82
+
83
+ ***
84
+
85
+ ### providerIdentity? {#provideridentity}
86
+
87
+ > `optional` **providerIdentity?**: `string`
88
+
89
+ Provider identity (DID or URI).
90
+
91
+ ***
92
+
93
+ ### localRole? {#localrole}
94
+
95
+ > `optional` **localRole?**: [`TransferProcessRole`](../type-aliases/TransferProcessRole.md)
96
+
97
+ This node's role in the transfer, captured at write time so state transitions and async delivery
98
+ can tell which party we are without inferring it from the matched PID (consumerPid is the primary
99
+ key on both nodes). Optional for back-compat with records written before this field existed.
100
+
101
+ ***
102
+
103
+ ### format? {#format}
104
+
105
+ > `optional` **format?**: `string`
106
+
107
+ Data format from the Dataset Distribution.
108
+
109
+ ***
110
+
111
+ ### callbackAddress? {#callbackaddress}
112
+
113
+ > `optional` **callbackAddress?**: `string`
114
+
115
+ Callback address for Consumer notifications.
116
+
117
+ ***
118
+
119
+ ### organizationIdentity {#organizationidentity}
120
+
121
+ > **organizationIdentity**: `string`
122
+
123
+ The organization that owns this transfer process, captured from the request context at write time.
124
+
125
+ ***
126
+
127
+ ### dateCreated {#datecreated}
128
+
129
+ > **dateCreated**: `string`
130
+
131
+ Creation timestamp (ISO string format).
132
+
133
+ ***
134
+
135
+ ### dateModified {#datemodified}
136
+
137
+ > **dateModified**: `string`
138
+
139
+ Last update timestamp (ISO string format).
140
+
141
+ ***
142
+
143
+ ### policies? {#policies}
144
+
145
+ > `optional` **policies?**: `IRightsManagementPolicy`[]
146
+
147
+ Policies from the Agreement (stored as JSON).
148
+
149
+ ***
150
+
151
+ ### dataAddress? {#dataaddress}
152
+
153
+ > `optional` **dataAddress?**: `IDataspaceProtocolDataAddress`
154
+
155
+ Data address for the transfer (stored as JSON): the consumer's inbox for PUSH, or the
156
+ provider-built address persisted at start for PULL/POST; may expire while STARTED.