@twin.org/dataspace-control-plane-service 0.9.1 → 0.9.2-next.1

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":"IDataspaceControlPlaneServiceConfig.js","sourceRoot":"","sources":["../../../src/models/IDataspaceControlPlaneServiceConfig.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,uCAAuC","sourcesContent":["// Copyright 2025 IOTA Stiftung.\n// SPDX-License-Identifier: Apache-2.0.\n\n/**\n * Dataspace Control Plane service configuration.\n */\nexport interface IDataspaceControlPlaneServiceConfig {\n\t/**\n\t * Override the default trust generator type for token generation.\n\t * If not specified, the default trust generator configured in the trust component will be used.\n\t */\n\toverrideTrustGeneratorType?: string;\n\n\t/**\n\t * Base route path for the data plane service (path only, not full URL).\n\t * Combined with the public origin to form the `dataAddress.endpoint` sent to PULL consumers\n\t * and the inbox URL sent to PUSH providers.\n\t *\n\t * This must be the mount-point prefix of the data plane routes, NOT a specific route path.\n\t * Do NOT append sub-paths such as `/entities` or `/inbox` — those are appended automatically\n\t * by each transfer handler and by the data plane REST client.\n\t *\n\t * REQUIRED if PULL or PUSH transfers are supported.\n\t * If not specified, PULL and PUSH transfers will not be available.\n\t *\n\t * Example: \"dataspace\"\n\t */\n\tdataPlanePath?: string;\n\n\t/**\n\t * Control plane callback mount path (path only). Combined with this node's public origin to form the\n\t * consumer callbackAddress a provider POSTs DSP transfer messages back to (e.g.\n\t * `<origin>/<callbackPath>/transfers/:pid/start`), with `?organization=` appended for tenant routing.\n\t *\n\t * Example: \"dataspace\" or \"api/dataspace\".\n\t */\n\tcallbackPath?: string;\n\n\t/**\n\t * Whether the provider immediately starts a transfer once it has been requested. This is a\n\t * provider-side decision only; the consumer cannot request or influence auto-start. When false\n\t * (the default) the transfer stays in REQUESTED until the provider explicitly calls transferStarted.\n\t *\n\t * Defaults to false.\n\t */\n\tautoStartTransfers?: boolean;\n\n\t/**\n\t * How long (ms) a negotiation may sit without progress before the periodic cleanup treats it as\n\t * timed out, removes it, and notifies the registered callbacks (onTimeout, falling back to\n\t * onFailed with reason \"negotiationStalled\"). Requires a task-scheduler component to be configured.\n\t *\n\t * Defaults to 1800000 (30 minutes).\n\t */\n\tstalledNegotiationTimeoutMs?: number;\n\n\t/**\n\t * How long (ms) a consumer-initiated transfer may sit in REQUESTED without the provider progressing\n\t * it before the periodic cleanup treats it as timed out, removes it, and notifies the registered\n\t * transfer callbacks (onTimeout, falling back to onFailed with reason \"transferStalled\"). Requires a\n\t * task-scheduler component to be configured.\n\t *\n\t * Defaults to 1800000 (30 minutes).\n\t */\n\tstalledTransferTimeoutMs?: number;\n}\n"]}
1
+ {"version":3,"file":"IDataspaceControlPlaneServiceConfig.js","sourceRoot":"","sources":["../../../src/models/IDataspaceControlPlaneServiceConfig.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,uCAAuC","sourcesContent":["// Copyright 2025 IOTA Stiftung.\n// SPDX-License-Identifier: Apache-2.0.\n\n/**\n * Dataspace Control Plane service configuration.\n */\nexport interface IDataspaceControlPlaneServiceConfig {\n\t/**\n\t * Override the default trust generator type for token generation.\n\t * If not specified, the default trust generator configured in the trust component will be used.\n\t */\n\toverrideTrustGeneratorType?: string;\n\n\t/**\n\t * Base route path for the data plane service (path only, not full URL).\n\t * Combined with the public origin to form the `dataAddress.endpoint` sent to PULL consumers\n\t * and the inbox URL sent to PUSH providers.\n\t *\n\t * This must be the mount-point prefix of the data plane routes, NOT a specific route path.\n\t * Do NOT append sub-paths such as `/entities` or `/inbox` — those are appended automatically\n\t * by each transfer handler and by the data plane REST client.\n\t *\n\t * REQUIRED if PULL or PUSH transfers are supported.\n\t * If not specified, PULL and PUSH transfers will not be available.\n\t *\n\t * Example: \"dataspace\"\n\t */\n\tdataPlanePath?: string;\n\n\t/**\n\t * Control plane callback mount path (path only). Combined with this node's public origin to form the\n\t * consumer callbackAddress a provider POSTs DSP transfer messages back to (e.g.\n\t * `<origin>/<callbackPath>/transfers/:pid/start`), with `?organization=` appended for tenant routing.\n\t *\n\t * Example: \"dataspace\" or \"api/dataspace\".\n\t */\n\tcallbackPath?: string;\n\n\t/**\n\t * Whether the provider immediately starts a transfer once it has been requested. This is a\n\t * provider-side decision only; the consumer cannot request or influence auto-start. When false\n\t * (the default) the transfer stays in REQUESTED until the provider explicitly calls transferStarted.\n\t *\n\t * Defaults to false.\n\t */\n\tautoStartTransfers?: boolean;\n\n\t/**\n\t * How long (ms) a negotiation may sit without progress before the periodic cleanup treats it as\n\t * timed out, removes it, and notifies the registered callbacks (onTimeout, falling back to\n\t * onFailed with reason \"negotiationStalled\"). Requires a task-scheduler component to be configured.\n\t *\n\t * Defaults to 1800000 (30 minutes).\n\t */\n\tstalledNegotiationTimeoutMs?: number;\n\n\t/**\n\t * How long (ms) a consumer-initiated transfer may sit in REQUESTED without the provider progressing\n\t * it before the periodic cleanup treats it as timed out, removes it, and notifies the registered\n\t * transfer callbacks (onTimeout, falling back to onFailed with reason \"transferStalled\"). Requires a\n\t * task-scheduler component to be configured.\n\t *\n\t * Defaults to 1800000 (30 minutes).\n\t */\n\tstalledTransferTimeoutMs?: number;\n\n\t/**\n\t * Idle window (ms) for Provider-side STARTED PULL transfers: when there has been no data-plane\n\t * activity (last state change or last successful retrieval) within the window, the policy sweep\n\t * terminates the transfer with code \"idleTimeout\". Overridable per app dataset via its\n\t * transferIdleTimeoutMs (0 disables it for that dataset). Requires a task-scheduler component.\n\t * Unset (the default) disables the policy node-wide.\n\t */\n\tproviderTransferIdleTimeoutMs?: number;\n\n\t/**\n\t * Interval (ms) for the provider transfer policy sweep, rounded to whole minutes (minimum one).\n\t * Defaults to 300000 (5 minutes).\n\t */\n\tproviderTransferPolicySweepIntervalMs?: number;\n}\n"]}
@@ -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 * @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 */\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 * Data Plane component type, used to invoke push subscription lifecycle methods.\n\t * @default dataspace-data-plane\n\t */\n\tdataPlaneComponentType?: string;\n\n\t/**\n\t * Remote control plane component type used to make outbound DSP transfer requests.\n\t * Created dynamically via ComponentFactory.create() with the provider endpoint as config.\n\t * @default dataspace-control-plane-rest-client\n\t */\n\tremoteControlPlaneComponentType?: string;\n\n\t/**\n\t * Platform component type, used to retrieve public origin for constructing data plane URLs.\n\t * @default platform\n\t */\n\tplatformComponentType?: string;\n\n\t/**\n\t * The component type for the optional telemetry component used for metrics, defaults to no telemetry.\n\t */\n\ttelemetryComponentType?: 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 * @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 */\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 * Entity storage type for Transfer Retrieval entities; when not registered the one-shot\n\t * policy is inactive. Must match the Data Plane's setting.\n\t * @default transfer-retrieval\n\t */\n\ttransferRetrievalEntityStorageType?: 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 * Data Plane component type, used to invoke push subscription lifecycle methods.\n\t * @default dataspace-data-plane\n\t */\n\tdataPlaneComponentType?: string;\n\n\t/**\n\t * Remote control plane component type used to make outbound DSP transfer requests.\n\t * Created dynamically via ComponentFactory.create() with the provider endpoint as config.\n\t * @default dataspace-control-plane-rest-client\n\t */\n\tremoteControlPlaneComponentType?: string;\n\n\t/**\n\t * Platform component type, used to retrieve public origin for constructing data plane URLs.\n\t * @default platform\n\t */\n\tplatformComponentType?: string;\n\n\t/**\n\t * The component type for the optional telemetry component used for metrics, defaults to no telemetry.\n\t */\n\ttelemetryComponentType?: 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,6 +1,6 @@
1
1
  // Copyright 2025 IOTA Stiftung.
2
2
  // SPDX-License-Identifier: Apache-2.0.
3
- import { DataspaceAppDataset, TransferProcess } from "@twin.org/dataspace-models";
3
+ import { DataspaceAppDataset, DataspaceAppDatasetV0, TransferProcess, TransferRetrieval } from "@twin.org/dataspace-models";
4
4
  import { EntitySchemaFactory, EntitySchemaHelper } from "@twin.org/entity";
5
5
  /**
6
6
  * Inits schemas for Control Plane entities.
@@ -8,5 +8,7 @@ import { EntitySchemaFactory, EntitySchemaHelper } from "@twin.org/entity";
8
8
  export function initSchema() {
9
9
  EntitySchemaFactory.register("TransferProcess", () => EntitySchemaHelper.getSchema(TransferProcess));
10
10
  EntitySchemaFactory.register("DataspaceAppDataset", () => EntitySchemaHelper.getSchema(DataspaceAppDataset));
11
+ EntitySchemaFactory.register("DataspaceAppDatasetV0", () => EntitySchemaHelper.getSchema(DataspaceAppDatasetV0));
12
+ EntitySchemaFactory.register("TransferRetrieval", () => EntitySchemaHelper.getSchema(TransferRetrieval));
11
13
  }
12
14
  //# 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,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
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/schema.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,uCAAuC;AACvC,OAAO,EACN,mBAAmB,EACnB,qBAAqB,EACrB,eAAe,EACf,iBAAiB,EACjB,MAAM,4BAA4B,CAAC;AACpC,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;IACF,mBAAmB,CAAC,QAAQ,0BAAkC,GAAG,EAAE,CAClE,kBAAkB,CAAC,SAAS,CAAC,qBAAqB,CAAC,CACnD,CAAC;IACF,mBAAmB,CAAC,QAAQ,sBAA8B,GAAG,EAAE,CAC9D,kBAAkB,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAC/C,CAAC;AACH,CAAC","sourcesContent":["// Copyright 2025 IOTA Stiftung.\n// SPDX-License-Identifier: Apache-2.0.\nimport {\n\tDataspaceAppDataset,\n\tDataspaceAppDatasetV0,\n\tTransferProcess,\n\tTransferRetrieval\n} 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\tEntitySchemaFactory.register(nameof<DataspaceAppDatasetV0>(), () =>\n\t\tEntitySchemaHelper.getSchema(DataspaceAppDatasetV0)\n\t);\n\tEntitySchemaFactory.register(nameof<TransferRetrieval>(), () =>\n\t\tEntitySchemaHelper.getSchema(TransferRetrieval)\n\t);\n}\n"]}
@@ -1,5 +1,5 @@
1
- import { type IDataspaceAppDataset, type IDataspaceControlPlaneComponent, type IDataspaceControlPlaneResolverComponent, type INegotiationCallback, type ITransferCallback, 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, type IDataspaceProtocolVersionResponse } from "@twin.org/standards-dataspace-protocol";
1
+ import { type IDataspaceAppDataset, type IDataspaceControlPlaneComponent, type IDataspaceControlPlaneResolverComponent, type INegotiationCallback, type ITransferCallback, type ITransferContext, type ITransferQueryResult } from "@twin.org/dataspace-models";
2
+ import { DataspaceProtocolTransferProcessStateType, type IDataspaceProtocolContractNegotiation, type IDataspaceProtocolContractNegotiationError, type IDataspaceProtocolDataset, type IDataspaceProtocolTransferCompletionMessage, type IDataspaceProtocolTransferError, type IDataspaceProtocolTransferProcess, type IDataspaceProtocolTransferRequestMessage, type IDataspaceProtocolTransferStartMessage, type IDataspaceProtocolTransferSuspensionMessage, type IDataspaceProtocolTransferTerminationMessage, type IDataspaceProtocolVersionResponse } from "@twin.org/standards-dataspace-protocol";
3
3
  import type { IDataspaceControlPlaneServiceConstructorOptions } from "./models/IDataspaceControlPlaneServiceConstructorOptions.js";
4
4
  /**
5
5
  * Dataspace Control Plane Service implementation.
@@ -144,6 +144,17 @@ export declare class DataspaceControlPlaneService implements IDataspaceControlPl
144
144
  * @returns Transfer Process (DSP compliant) with current state, or TransferError if the operation fails.
145
145
  */
146
146
  getTransferProcess(pid: string, trustPayload: unknown): Promise<IDataspaceProtocolTransferProcess | IDataspaceProtocolTransferError>;
147
+ /**
148
+ * Query Transfer Processes by agreement id.
149
+ * Results are limited to transfers where the authenticated caller is a party
150
+ * (consumer or provider identity).
151
+ * @param agreementId The agreement id to look up transfer processes for.
152
+ * @param state Optional filter to a single transfer process state.
153
+ * @param cursor Optional pagination cursor from a previous result page.
154
+ * @param trustPayload Trust payload containing authorization information.
155
+ * @returns The matching transfer processes and a pagination cursor when more pages exist, empty when none match.
156
+ */
157
+ queryDataTransfer(agreementId: string, state: DataspaceProtocolTransferProcessStateType | undefined, cursor: string | undefined, trustPayload: unknown): Promise<ITransferQueryResult>;
147
158
  /**
148
159
  * Negotiate a contract agreement with a provider.
149
160
  * Returns immediately with a negotiationId. The caller is notified
@@ -203,9 +214,14 @@ export declare class DataspaceControlPlaneService implements IDataspaceControlPl
203
214
  * or generated.
204
215
  * @param appId The dataspace app this dataset belongs to.
205
216
  * @param dataset The dataset payload.
217
+ * @param options Optional dataset settings.
218
+ * @param options.transferIdleTimeoutMs Optional idle window (ms) overriding the node-level idle
219
+ * policy for this dataset's PULL transfers; 0 disables it for this dataset.
206
220
  * @returns The resolved dataset id.
207
221
  */
208
- createAppDataset(id: string | undefined, appId: string, dataset: IDataspaceProtocolDataset): Promise<string>;
222
+ createAppDataset(id: string | undefined, appId: string, dataset: IDataspaceProtocolDataset, options?: {
223
+ transferIdleTimeoutMs?: number;
224
+ }): Promise<string>;
209
225
  /**
210
226
  * Get a dataset record owned by the calling organization.
211
227
  * @param id The stored dataset id.
@@ -227,9 +243,14 @@ export declare class DataspaceControlPlaneService implements IDataspaceControlPl
227
243
  * @param id The stored dataset id.
228
244
  * @param appId The dataspace app this dataset belongs to.
229
245
  * @param dataset The dataset payload.
246
+ * @param options Optional dataset settings.
247
+ * @param options.transferIdleTimeoutMs Optional idle window (ms) overriding the node-level idle
248
+ * policy for this dataset's PULL transfers; 0 disables it for this dataset.
230
249
  * @returns A promise that resolves when the dataset has been updated in storage and the catalogue.
231
250
  */
232
- updateAppDataset(id: string, appId: string, dataset: IDataspaceProtocolDataset): Promise<void>;
251
+ updateAppDataset(id: string, appId: string, dataset: IDataspaceProtocolDataset, options?: {
252
+ transferIdleTimeoutMs?: number;
253
+ }): Promise<void>;
233
254
  /**
234
255
  * Delete a dataspace app dataset owned by the calling organization.
235
256
  * @param id The stored app dataset id.
@@ -55,4 +55,17 @@ export interface IDataspaceControlPlaneServiceConfig {
55
55
  * Defaults to 1800000 (30 minutes).
56
56
  */
57
57
  stalledTransferTimeoutMs?: number;
58
+ /**
59
+ * Idle window (ms) for Provider-side STARTED PULL transfers: when there has been no data-plane
60
+ * activity (last state change or last successful retrieval) within the window, the policy sweep
61
+ * terminates the transfer with code "idleTimeout". Overridable per app dataset via its
62
+ * transferIdleTimeoutMs (0 disables it for that dataset). Requires a task-scheduler component.
63
+ * Unset (the default) disables the policy node-wide.
64
+ */
65
+ providerTransferIdleTimeoutMs?: number;
66
+ /**
67
+ * Interval (ms) for the provider transfer policy sweep, rounded to whole minutes (minimum one).
68
+ * Defaults to 300000 (5 minutes).
69
+ */
70
+ providerTransferPolicySweepIntervalMs?: number;
58
71
  }
@@ -60,6 +60,12 @@ export interface IDataspaceControlPlaneServiceConstructorOptions {
60
60
  * @default dataspace-app-dataset
61
61
  */
62
62
  dataspaceAppDatasetEntityStorageType?: string;
63
+ /**
64
+ * Entity storage type for Transfer Retrieval entities; when not registered the one-shot
65
+ * policy is inactive. Must match the Data Plane's setting.
66
+ * @default transfer-retrieval
67
+ */
68
+ transferRetrievalEntityStorageType?: string;
63
69
  /**
64
70
  * Task scheduler component type for periodic cleanup of stalled negotiations.
65
71
  * @default task-scheduler
package/docs/changelog.md CHANGED
@@ -1,5 +1,77 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.9.2-next.1](https://github.com/iotaledger/twin-dataspace/compare/dataspace-control-plane-service-v0.9.2-next.0...dataspace-control-plane-service-v0.9.2-next.1) (2026-07-28)
4
+
5
+
6
+ ### Features
7
+
8
+ * 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))
9
+ * 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))
10
+ * 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))
11
+ * add transfer handlers ([#259](https://github.com/iotaledger/twin-dataspace/issues/259)) ([06e21b1](https://github.com/iotaledger/twin-dataspace/commit/06e21b179f548f3d93d81192b68ea710e5b9aafb))
12
+ * 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))
13
+ * add well known versions endpoint ([#251](https://github.com/iotaledger/twin-dataspace/issues/251)) ([4b4cbe9](https://github.com/iotaledger/twin-dataspace/commit/4b4cbe91a40980481dad6e0650c1ee73c53ae360))
14
+ * align all config times to ms ([40238d5](https://github.com/iotaledger/twin-dataspace/commit/40238d59a2b45caedc01792b682ce7206815dfd1))
15
+ * 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))
16
+ * docs update ([8b44c7a](https://github.com/iotaledger/twin-dataspace/commit/8b44c7a75afb8d377a6f606616f8a78d58439ab4))
17
+ * endpoint encryption + getDatasetTargets multi-target fix ([#112](https://github.com/iotaledger/twin-dataspace/issues/112)) ([3288941](https://github.com/iotaledger/twin-dataspace/commit/328894113c19c7402f7d00dfa77b6a97ae40ca91))
18
+ * enhanced rest testing ([#255](https://github.com/iotaledger/twin-dataspace/issues/255)) ([264f91e](https://github.com/iotaledger/twin-dataspace/commit/264f91ea3a6501a13da51e7accbe9035e5ac4cef))
19
+ * implement DSP push transfer mode ([#109](https://github.com/iotaledger/twin-dataspace/issues/109)) ([71f5fee](https://github.com/iotaledger/twin-dataspace/commit/71f5feec1d92dfec8ed6899c951809818e1bf2a3))
20
+ * improve open-api examples ([1368dbe](https://github.com/iotaledger/twin-dataspace/commit/1368dbed5c36e074b4854942304a19b9ce51e088))
21
+ * improve open-api examples ([44f7350](https://github.com/iotaledger/twin-dataspace/commit/44f7350c625d8d6afdca88b292dd48ef03253412))
22
+ * improve open-api examples ([f065f4b](https://github.com/iotaledger/twin-dataspace/commit/f065f4bd55540041a653ef141c4be29a83c5055e))
23
+ * improve validation ([#82](https://github.com/iotaledger/twin-dataspace/issues/82)) ([8bfaf7b](https://github.com/iotaledger/twin-dataspace/commit/8bfaf7b830f89b63575f8a51ee96bd8ac4da02f4))
24
+ * internalise constant ([9b9b293](https://github.com/iotaledger/twin-dataspace/commit/9b9b2933588ee70811a601bc485b5abaa12bed41))
25
+ * local optimization ([#218](https://github.com/iotaledger/twin-dataspace/issues/218)) ([1daae6b](https://github.com/iotaledger/twin-dataspace/commit/1daae6be8be44abdbe2b4c883c35938506cdd34a))
26
+ * organization identifiers ([#188](https://github.com/iotaledger/twin-dataspace/issues/188)) ([af643d3](https://github.com/iotaledger/twin-dataspace/commit/af643d3bb7f212d6cbb672e362a9e1bbe886d1a5))
27
+ * 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))
28
+ * 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))
29
+ * 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))
30
+ * remove datasetsHandled method from apps ([9fdc950](https://github.com/iotaledger/twin-dataspace/commit/9fdc95018d38ab49c4a1094642be2ee83ee0e4cd))
31
+ * remove engine dependency ([#313](https://github.com/iotaledger/twin-dataspace/issues/313)) ([aec9f60](https://github.com/iotaledger/twin-dataspace/commit/aec9f60d530cd06a73170b3226795a260db8e6f4))
32
+ * remove hosting component ([#209](https://github.com/iotaledger/twin-dataspace/issues/209)) ([5e19328](https://github.com/iotaledger/twin-dataspace/commit/5e1932823aa8a0f88f559f096610b9df1f3b8615))
33
+ * rename completed callback ([#147](https://github.com/iotaledger/twin-dataspace/issues/147)) ([f62baad](https://github.com/iotaledger/twin-dataspace/commit/f62baad0ff444e2913439b12dcd06d20c9a4f6a4))
34
+ * 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))
35
+ * rest enhancements ([f6dbd24](https://github.com/iotaledger/twin-dataspace/commit/f6dbd24c186a382769c97e697e54f0b6e28488a9))
36
+ * shortcut implicit trust ([#215](https://github.com/iotaledger/twin-dataspace/issues/215)) ([f9bcfea](https://github.com/iotaledger/twin-dataspace/commit/f9bcfeab8f069b62017502833c108b4ee3791414))
37
+ * simplify url construction ([49986d1](https://github.com/iotaledger/twin-dataspace/commit/49986d1b67b58c0918a5744794d06baf6b6c6461))
38
+ * skip tenant dsp transfer routes ([#97](https://github.com/iotaledger/twin-dataspace/issues/97)) ([2f1ad97](https://github.com/iotaledger/twin-dataspace/commit/2f1ad971bc50ad24bb9f68759fbd4d44527d3d02))
39
+ * types update ([77c338e](https://github.com/iotaledger/twin-dataspace/commit/77c338e9244dcc7e3d597fdb06229513b1f13eac))
40
+ * typescript 6 update ([340f10e](https://github.com/iotaledger/twin-dataspace/commit/340f10e4767f6285c694938944f7e044474f9aaa))
41
+ * 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))
42
+ * update DataspaceTransferFormat names ([2c9d424](https://github.com/iotaledger/twin-dataspace/commit/2c9d424a07b97346faa2124048c4675514d58109))
43
+ * use inbuilt constants ([256bc03](https://github.com/iotaledger/twin-dataspace/commit/256bc0332bf439fcc16022e0b984b9035e9b0100))
44
+ * well-known endpoint ([9ff2607](https://github.com/iotaledger/twin-dataspace/commit/9ff2607a345ee9e038a2915179a926353251e59c))
45
+
46
+
47
+ ### Bug Fixes
48
+
49
+ * avoid compaction of incoming activities ([#77](https://github.com/iotaledger/twin-dataspace/issues/77)) ([ff43d6a](https://github.com/iotaledger/twin-dataspace/commit/ff43d6a3e1563eb9cb185501134b2a53ae88787c))
50
+ * data plane path is base not full url for pull ([68092ac](https://github.com/iotaledger/twin-dataspace/commit/68092acf707b6ba6679f5b75d4dc355c6629396c))
51
+ * 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))
52
+ * 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))
53
+ * dependency update ([fbff0dd](https://github.com/iotaledger/twin-dataspace/commit/fbff0ddae93d82bd2899001368d7a03b482ce05c))
54
+ * docs and component init ([8557233](https://github.com/iotaledger/twin-dataspace/commit/8557233fb3b8273c5c9a5b580fb43061f8efe47c))
55
+ * 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))
56
+ * 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))
57
+ * implement missing trust check on negotiateAgreement ([#136](https://github.com/iotaledger/twin-dataspace/issues/136)) ([a3589c2](https://github.com/iotaledger/twin-dataspace/commit/a3589c279476d5450b68ea7c2790be7e3125bfe2))
58
+ * incorrect docs ([754aa8d](https://github.com/iotaledger/twin-dataspace/commit/754aa8d032a5dfefa69072aa460106badfa41ac9))
59
+ * mock pnap ([35f21f8](https://github.com/iotaledger/twin-dataspace/commit/35f21f847d3fb9d2ffcb9191a18835093cd259b9))
60
+ * 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))
61
+ * remove inline i18n ([edde37e](https://github.com/iotaledger/twin-dataspace/commit/edde37e90ac397f253f57bc0d306b4bd0c797920))
62
+ * retain cursor after pep enforcement ([#296](https://github.com/iotaledger/twin-dataspace/issues/296)) ([5198cd2](https://github.com/iotaledger/twin-dataspace/commit/5198cd29505ceffa532fa4fa18c97a5c8e78f663))
63
+ * 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))
64
+ * run prepareTransfer request in-process for local-origin providers ([#291](https://github.com/iotaledger/twin-dataspace/issues/291)) ([eb8cc40](https://github.com/iotaledger/twin-dataspace/commit/eb8cc408df5ce5394fbeb30897595dab2d555840)), refs [#287](https://github.com/iotaledger/twin-dataspace/issues/287)
65
+ * use async getStore in tests ([739531e](https://github.com/iotaledger/twin-dataspace/commit/739531e1a159f728301835cd39cf06eab7a7bf4a))
66
+ * validate dataset-id ([#138](https://github.com/iotaledger/twin-dataspace/issues/138)) ([92a6a9b](https://github.com/iotaledger/twin-dataspace/commit/92a6a9b7b82c3dd5c652a3685892f7e9156d458b))
67
+
68
+
69
+ ### Dependencies
70
+
71
+ * The following workspace dependencies were updated
72
+ * dependencies
73
+ * @twin.org/dataspace-models bumped from 0.9.2-next.0 to 0.9.2-next.1
74
+
3
75
  ## [0.9.1](https://github.com/iotaledger/twin-dataspace/compare/dataspace-control-plane-service-v0.9.1...dataspace-control-plane-service-v0.9.1) (2026-07-27)
4
76
 
5
77
 
@@ -514,6 +514,52 @@ Transfer Process (DSP compliant) with current state, or TransferError if the ope
514
514
 
515
515
  ***
516
516
 
517
+ ### queryDataTransfer() {#querydatatransfer}
518
+
519
+ > **queryDataTransfer**(`agreementId`, `state`, `cursor`, `trustPayload`): `Promise`\<`ITransferQueryResult`\>
520
+
521
+ Query Transfer Processes by agreement id.
522
+ Results are limited to transfers where the authenticated caller is a party
523
+ (consumer or provider identity).
524
+
525
+ #### Parameters
526
+
527
+ ##### agreementId
528
+
529
+ `string`
530
+
531
+ The agreement id to look up transfer processes for.
532
+
533
+ ##### state
534
+
535
+ `DataspaceProtocolTransferProcessStateType` \| `undefined`
536
+
537
+ Optional filter to a single transfer process state.
538
+
539
+ ##### cursor
540
+
541
+ `string` \| `undefined`
542
+
543
+ Optional pagination cursor from a previous result page.
544
+
545
+ ##### trustPayload
546
+
547
+ `unknown`
548
+
549
+ Trust payload containing authorization information.
550
+
551
+ #### Returns
552
+
553
+ `Promise`\<`ITransferQueryResult`\>
554
+
555
+ The matching transfer processes and a pagination cursor when more pages exist, empty when none match.
556
+
557
+ #### Implementation of
558
+
559
+ `IDataspaceControlPlaneComponent.queryDataTransfer`
560
+
561
+ ***
562
+
517
563
  ### negotiateAgreement() {#negotiateagreement}
518
564
 
519
565
  > **negotiateAgreement**(`datasetId`, `offerId`, `providerEndpoint`, `trustPayload`): `Promise`\<\{ `negotiationId?`: `string`; `agreementId?`: `string`; \}\>
@@ -696,7 +742,7 @@ Transfer Context with Agreement, datasetId, and Transfer Process metadata.
696
742
 
697
743
  ### createAppDataset() {#createappdataset}
698
744
 
699
- > **createAppDataset**(`id`, `appId`, `dataset`): `Promise`\<`string`\>
745
+ > **createAppDataset**(`id`, `appId`, `dataset`, `options?`): `Promise`\<`string`\>
700
746
 
701
747
  Register a dataset for a dataspace app, owned by the calling organization.
702
748
 
@@ -721,6 +767,17 @@ The dataspace app this dataset belongs to.
721
767
 
722
768
  The dataset payload.
723
769
 
770
+ ##### options?
771
+
772
+ Optional dataset settings.
773
+
774
+ ###### transferIdleTimeoutMs?
775
+
776
+ `number`
777
+
778
+ Optional idle window (ms) overriding the node-level idle
779
+ policy for this dataset's PULL transfers; 0 disables it for this dataset.
780
+
724
781
  #### Returns
725
782
 
726
783
  `Promise`\<`string`\>
@@ -793,7 +850,7 @@ The stored datasets and the next-page cursor if more exist.
793
850
 
794
851
  ### updateAppDataset() {#updateappdataset}
795
852
 
796
- > **updateAppDataset**(`id`, `appId`, `dataset`): `Promise`\<`void`\>
853
+ > **updateAppDataset**(`id`, `appId`, `dataset`, `options?`): `Promise`\<`void`\>
797
854
 
798
855
  Update a dataset record owned by the calling organization.
799
856
 
@@ -817,6 +874,17 @@ The dataspace app this dataset belongs to.
817
874
 
818
875
  The dataset payload.
819
876
 
877
+ ##### options?
878
+
879
+ Optional dataset settings.
880
+
881
+ ###### transferIdleTimeoutMs?
882
+
883
+ `number`
884
+
885
+ Optional idle window (ms) overriding the node-level idle
886
+ policy for this dataset's PULL transfers; 0 disables it for this dataset.
887
+
820
888
  #### Returns
821
889
 
822
890
  `Promise`\<`void`\>
@@ -78,3 +78,24 @@ transfer callbacks (onTimeout, falling back to onFailed with reason "transferSta
78
78
  task-scheduler component to be configured.
79
79
 
80
80
  Defaults to 1800000 (30 minutes).
81
+
82
+ ***
83
+
84
+ ### providerTransferIdleTimeoutMs? {#providertransferidletimeoutms}
85
+
86
+ > `optional` **providerTransferIdleTimeoutMs?**: `number`
87
+
88
+ Idle window (ms) for Provider-side STARTED PULL transfers: when there has been no data-plane
89
+ activity (last state change or last successful retrieval) within the window, the policy sweep
90
+ terminates the transfer with code "idleTimeout". Overridable per app dataset via its
91
+ transferIdleTimeoutMs (0 disables it for that dataset). Requires a task-scheduler component.
92
+ Unset (the default) disables the policy node-wide.
93
+
94
+ ***
95
+
96
+ ### providerTransferPolicySweepIntervalMs? {#providertransferpolicysweepintervalms}
97
+
98
+ > `optional` **providerTransferPolicySweepIntervalMs?**: `number`
99
+
100
+ Interval (ms) for the provider transfer policy sweep, rounded to whole minutes (minimum one).
101
+ Defaults to 300000 (5 minutes).
@@ -146,6 +146,21 @@ dataspace-app-dataset
146
146
 
147
147
  ***
148
148
 
149
+ ### transferRetrievalEntityStorageType? {#transferretrievalentitystoragetype}
150
+
151
+ > `optional` **transferRetrievalEntityStorageType?**: `string`
152
+
153
+ Entity storage type for Transfer Retrieval entities; when not registered the one-shot
154
+ policy is inactive. Must match the Data Plane's setting.
155
+
156
+ #### Default
157
+
158
+ ```ts
159
+ transfer-retrieval
160
+ ```
161
+
162
+ ***
163
+
149
164
  ### taskSchedulerComponentType? {#taskschedulercomponenttype}
150
165
 
151
166
  > `optional` **taskSchedulerComponentType?**: `string`
package/locales/en.json CHANGED
@@ -3,6 +3,7 @@
3
3
  "dataspaceControlPlaneService": {
4
4
  "transferProcessInitiated": "Transfer Process initiated",
5
5
  "transferProcessQueried": "Transfer Process queried (role: {role})",
6
+ "dataTransfersQueried": "Data transfers queried (agreementId: {agreementId}, count: {count})",
6
7
  "transferProcessStarted": "Transfer Process started",
7
8
  "transferProcessCompleted": "Transfer Process completed",
8
9
  "transferProcessSuspended": "Transfer Process suspended",
@@ -22,6 +23,7 @@
22
23
  "negotiationHistoryRetrieved": "Negotiation history retrieved successfully",
23
24
  "stalledNegotiationsCleanupComplete": "Stalled negotiations cleanup completed (cleanedUp: {cleanedUp})",
24
25
  "stalledTransfersCleanupComplete": "Stalled transfers cleanup completed (cleanedUp: {cleanedUp})",
26
+ "providerTransferPolicySweepComplete": "Provider transfer policy sweep completed (terminated: {terminated})",
25
27
  "preparingTransfer": "Preparing consumer-initiated data transfer (agreementId: {agreementId}, providerEndpoint: {providerEndpoint}, format: {format})",
26
28
  "transferPrepared": "Consumer data transfer prepared successfully (consumerPid: {consumerPid}, providerPid: {providerPid}, agreementId: {agreementId}, format: {format})"
27
29
  },
@@ -42,7 +44,10 @@
42
44
  "dataspaceControlPlaneService": {
43
45
  "catalogDatasetHasNoOffers": "Dataset has no Offers (odrl:hasPolicy) in Federated Catalogue",
44
46
  "stalledNegotiationCleanedUp": "Stalled negotiation cleaned up (negotiationId: {negotiationId})",
45
- "stalledTransferCleanedUp": "Stalled transfer cleaned up (consumerPid: {consumerPid})"
47
+ "stalledTransferCleanedUp": "Stalled transfer cleaned up (consumerPid: {consumerPid})",
48
+ "providerTransferIdleTimedOut": "Provider-side STARTED transfer had no data-plane activity within the idle window and will be terminated (consumerPid: {consumerPid}, providerPid: {providerPid}, idleTimeoutMs: {idleTimeoutMs})",
49
+ "providerTransferIdleStorageMissing": "The idle policy is configured but the transfer-retrieval entity storage is not registered, so the policy is skipped",
50
+ "providerTransferPolicyNoProviderIdentity": "Removed a Provider-side STARTED transfer with no provider identity (DID), it cannot be transitioned (consumerPid: {consumerPid})"
46
51
  },
47
52
  "dataspaceControlPlanePolicyRequester": {
48
53
  "unknownNegotiationFinalized": "Unknown negotiation finalized (negotiationId: {negotiationId})",
@@ -103,7 +108,8 @@
103
108
  "datasetNotFound": "Dataset not found",
104
109
  "datasetWrongOrganization": "The calling organization does not own this dataset.",
105
110
  "transferWrongOrganization": "The calling organization does not own this transfer.",
106
- "invalidDatasetId": "Dataset ID \"{id}\" is not a valid URN or URL"
111
+ "invalidDatasetId": "Dataset ID \"{id}\" is not a valid URN or URL",
112
+ "providerTransferTerminateFailed": "Failed to terminate a provider transfer for a lifecycle policy (consumerPid: {consumerPid})"
107
113
  },
108
114
  "dataspaceControlPlanePolicyRequester": {},
109
115
  "httpDataPullTransferHandler": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@twin.org/dataspace-control-plane-service",
3
- "version": "0.9.1",
3
+ "version": "0.9.2-next.1",
4
4
  "description": "Implements agreement negotiation and transfer process lifecycle management for control plane operations.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -14,23 +14,22 @@
14
14
  "node": ">=24.0.0"
15
15
  },
16
16
  "dependencies": {
17
- "@twin.org/api-models": "^0.9.1",
18
- "@twin.org/api-tenant-processor": "^0.9.1",
19
- "@twin.org/context": "^0.9.1",
20
- "@twin.org/core": "^0.9.1",
21
- "@twin.org/dataspace-models": "^0.9.1",
22
- "@twin.org/engine-models": "^0.9.0",
23
- "@twin.org/entity": "^0.9.1",
24
- "@twin.org/entity-storage-models": "^0.9.1",
25
- "@twin.org/federated-catalogue-models": "^0.9.1",
26
- "@twin.org/logging-models": "^0.9.1",
27
- "@twin.org/nameof": "^0.9.1",
28
- "@twin.org/rights-management-models": "^0.9.1",
29
- "@twin.org/standards-dataspace-protocol": "^0.9.1",
30
- "@twin.org/standards-w3c-odrl": "^0.9.1",
31
- "@twin.org/telemetry-models": "^0.9.1",
32
- "@twin.org/trust-models": "^0.9.1",
33
- "@twin.org/vault-models": "^0.9.1"
17
+ "@twin.org/api-models": "next",
18
+ "@twin.org/api-tenant-processor": "next",
19
+ "@twin.org/context": "next",
20
+ "@twin.org/core": "next",
21
+ "@twin.org/dataspace-models": "0.9.2-next.1",
22
+ "@twin.org/entity": "next",
23
+ "@twin.org/entity-storage-models": "next",
24
+ "@twin.org/federated-catalogue-models": "next",
25
+ "@twin.org/logging-models": "next",
26
+ "@twin.org/nameof": "next",
27
+ "@twin.org/rights-management-models": "next",
28
+ "@twin.org/standards-dataspace-protocol": "next",
29
+ "@twin.org/standards-w3c-odrl": "next",
30
+ "@twin.org/telemetry-models": "next",
31
+ "@twin.org/trust-models": "next",
32
+ "@twin.org/vault-models": "next"
34
33
  },
35
34
  "main": "./dist/es/index.js",
36
35
  "types": "./dist/types/index.d.ts",