@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.
- package/dist/es/dataspaceControlPlaneRoutes.js +6 -2
- package/dist/es/dataspaceControlPlaneRoutes.js.map +1 -1
- package/dist/es/dataspaceControlPlaneService.js +329 -11
- package/dist/es/dataspaceControlPlaneService.js.map +1 -1
- package/dist/es/models/IDataspaceControlPlaneServiceConfig.js.map +1 -1
- package/dist/es/models/IDataspaceControlPlaneServiceConstructorOptions.js.map +1 -1
- package/dist/es/schema.js +3 -1
- package/dist/es/schema.js.map +1 -1
- package/dist/types/dataspaceControlPlaneService.d.ts +25 -4
- package/dist/types/models/IDataspaceControlPlaneServiceConfig.d.ts +13 -0
- package/dist/types/models/IDataspaceControlPlaneServiceConstructorOptions.d.ts +6 -0
- package/docs/changelog.md +72 -0
- package/docs/reference/classes/DataspaceControlPlaneService.md +70 -2
- package/docs/reference/interfaces/IDataspaceControlPlaneServiceConfig.md +21 -0
- package/docs/reference/interfaces/IDataspaceControlPlaneServiceConstructorOptions.md +15 -0
- package/locales/en.json +8 -2
- package/package.json +17 -18
|
@@ -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
|
package/dist/es/schema.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/schema.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,uCAAuC;AACvC,OAAO,
|
|
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
|
|
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
|
|
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": "
|
|
18
|
-
"@twin.org/api-tenant-processor": "
|
|
19
|
-
"@twin.org/context": "
|
|
20
|
-
"@twin.org/core": "
|
|
21
|
-
"@twin.org/dataspace-models": "
|
|
22
|
-
"@twin.org/
|
|
23
|
-
"@twin.org/entity": "
|
|
24
|
-
"@twin.org/
|
|
25
|
-
"@twin.org/
|
|
26
|
-
"@twin.org/
|
|
27
|
-
"@twin.org/
|
|
28
|
-
"@twin.org/
|
|
29
|
-
"@twin.org/standards-
|
|
30
|
-
"@twin.org/
|
|
31
|
-
"@twin.org/
|
|
32
|
-
"@twin.org/
|
|
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",
|