Install
openclaw skills install tractusx-edcInteract with Tractus-X EDC (Eclipse Data Connector) control plane API v3 for managing assets, contract negotiations, policies, and data transfers.
openclaw skills install tractusx-edcUse this skill to interact with a Tractus-X EDC (Eclipse Data Connector) control plane using the v3 API.
Set these environment variables:
EDC_CONTROL_PLANE_URL - Base URL of the EDC control plane (e.g., http://localhost:9192)EDC_API_KEY - API key for authentication (optional, depends on connector config)${EDC_CONTROL_PLANE_URL}/v3
Create Asset:
curl -X POST "${EDC_CONTROL_PLANE_URL}/v3/assets" \
-H "Content-Type: application/json" \
-H "X-Api-Key: ${EDC_API_KEY}" \
-d '{
"properties": {
"id": "asset-id",
"name": "Asset Name",
"contentType": "application/json",
"description": "Data asset description"
},
"dataAddress": {
"type": "HttpData",
"baseUrl": "https://provider.example.com/data",
"proxyBody": true,
"proxyPath": true
}
}'
Update Asset:
curl -X PUT "${EDC_CONTROL_PLANE_URL}/v3/assets" \
-H "Content-Type: application/json" \
-H "X-Api-Key: ${EDC_API_KEY}" \
-d '{
"properties": {
"id": "asset-id",
"name": "Updated Asset Name"
}
}'
List Assets:
curl -X POST "${EDC_CONTROL_PLANE_URL}/v3/assets/request" \
-H "Content-Type: application/json" \
-H "X-Api-Key: ${EDC_API_KEY}" \
-d '{
"filterExpression": [],
"range": {"from": 0, "to": 100}
}'
Get Asset:
curl -X GET "${EDC_CONTROL_PLANE_URL}/v3/assets/{id}" \
-H "X-Api-Key: ${EDC_API_KEY}"
Delete Asset:
curl -X DELETE "${EDC_CONTROL_PLANE_URL}/v3/assets/{id}" \
-H "X-Api-Key: ${EDC_API_KEY}"
List Policies:
curl -X POST "${EDC_CONTROL_PLANE_URL}/v3/policydefinitions/request" \
-H "Content-Type: application/json" \
-H "X-Api-Key: ${EDC_API_KEY}" \
-d '{"filterExpression": [], "range": {"from": 0, "to": 100}}'
Create Contract Definition:
curl -X POST "${EDC_CONTROL_PLANE_URL}/v3/contractdefinitions" \
-H "Content-Type: application/json" \
-H "X-Api-Key: ${EDC_API_KEY}" \
-d '{
"id": "contract-def-id",
"accessPolicyId": "policy-id",
"contractPolicyId": "policy-id",
"assetsSelector": [{
"operandLeft": "https://w3id.org/edc/v0.0.1/ns/id",
"operator": "=",
"operandRight": "asset-id"
}]
}'
Update Contract Definition:
curl -X PUT "${EDC_CONTROL_PLANE_URL}/v3/contractdefinitions" \
-H "Content-Type: application/json" \
-H "X-Api-Key: ${EDC_API_KEY}" \
-d '{
"id": "contract-def-id",
"accessPolicyId": "policy-id",
"contractPolicyId": "policy-id",
"assetsSelector": [{
"operandLeft": "https://w3id.org/edc/v0.0.1/ns/id",
"operator": "=",
"operandRight": "asset-id"
}]
}'
List Contract Definitions:
curl -X POST "${EDC_CONTROL_PLANE_URL}/v3/contractdefinitions/request" \
-H "Content-Type: application/json" \
-H "X-Api-Key: ${EDC_API_KEY}" \
-d '{"filterExpression": [], "range": {"from": 0, "to": 100}}'
Initiate Negotiation:
curl -X POST "${EDC_CONTROL_PLANE_URL}/v3/contractnegotiations" \
-H "Content-Type: application/json" \
-H "X-Api-Key: ${EDC_API_KEY}" \
-d '{
"connectorId": "provider-connector-id",
"connectorAddress": "http://provider-connector:9194/protocol/dsp",
"offer": {
"assetId": "asset-id",
"offerId": "offer-id:1",
"policy": {
"permissions": [{
"target": "default",
"action": {"type": "USE"},
"constraints": []
}]
}
}
}'
Query Negotiations:
curl -X POST "${EDC_CONTROL_PLANE_URL}/v3/contractnegotiations/request" \
-H "Content-Type: application/json" \
-H "X-Api-Key: ${EDC_API_KEY}" \
-d '{"filterExpression": [], "range": {"from": 0, "to": 100}}'
Get Contract Agreement for Negotiation:
curl -X GET "${EDC_CONTROL_PLANE_URL}/v3/contractnegotiations/{id}/agreement" \
-H "X-Api-Key: ${EDC_API_KEY}"
Get Contract Agreement:
curl -X GET "${EDC_CONTROL_PLANE_URL}/v3/contractagreements/{id}" \
-H "X-Api-Key: ${EDC_API_KEY}"
Get Retired Agreements:
curl -X POST "${EDC_CONTROL_PLANE_URL}/v3/contractagreements/retirements/request" \
-H "Content-Type: application/json" \
-H "X-Api-Key: ${EDC_API_KEY}"
Initiate Transfer:
curl -X POST "${EDC_CONTROL_PLANE_URL}/v3/transferprocesses" \
-H "Content-Type: application/json" \
-H "X-Api-Key: ${EDC_API_KEY}" \
-d '{
"protocol": "dsp",
"connectorId": "provider-connector-id",
"connectorAddress": "http://provider-connector:9194/protocol/dsp",
"contractId": "contract-agreement-id",
"assetId": "asset-id",
"managedResources": true,
"dataDestination": {
"type": "HttpProxy",
"baseUrl": "http://consumer-backend:8080/data"
}
}'
Suspend Transfer:
curl -X POST "${EDC_CONTROL_PLANE_URL}/v3/transferprocesses/{id}/suspend" \
-H "Content-Type: application/json" \
-H "X-Api-Key: ${EDC_API_KEY}" \
-d '{"reason": "Suspension reason"}'
Initiate EDR Negotiation:
curl -X POST "${EDC_CONTROL_PLANE_URL}/v3/edrs" \
-H "Content-Type: application/json" \
-H "X-Api-Key: ${EDC_API_KEY}" \
-d '{
"connectorId": "provider-connector-id",
"connectorAddress": "http://provider-connector:9194/protocol/dsp",
"offer": {
"assetId": "asset-id",
"offerId": "offer-id:1",
"policy": {
"permissions": [{
"target": "default",
"action": {"type": "USE"},
"constraints": []
}]
}
}
}'
Get EDR Data Address:
curl -X GET "${EDC_CONTROL_PLANE_URL}/v3/edrs/{transferProcessId}/dataaddress" \
-H "X-Api-Key: ${EDC_API_KEY}"
Resolve All Groups:
curl -X GET "${EDC_CONTROL_PLANE_URL}/v3/business-partner-groups/groups" \
-H "X-Api-Key: ${EDC_API_KEY}"
Resolve Groups for BPN:
curl -X GET "${EDC_CONTROL_PLANE_URL}/v3/business-partner-groups/{bpn}" \
-H "X-Api-Key: ${EDC_API_KEY}"
Delete BPN Entry:
curl -X DELETE "${EDC_CONTROL_PLANE_URL}/v3/business-partner-groups/{bpn}" \
-H "X-Api-Key: ${EDC_API_KEY}"
Health Check:
curl -X GET "${EDC_CONTROL_PLANE_URL}/check/health"
Startup Check:
curl -X GET "${EDC_CONTROL_PLANE_URL}/check/startup"
Provider Side:
Consumer Side:
REQUESTING - Initial request sentOFFERED - Offer receivedACCEPTED - Offer acceptedAGREED - Agreement reachedVERIFIED - Agreement verifiedTERMINATED - Negotiation endedINITIAL - Transfer initiatedPROVISIONING - Resources being provisionedPROVISIONED - Resources readyREQUESTING - Request sent to providerSTARTED - Transfer startedSUSPENDED - Transfer pausedCOMPLETED - Transfer finishedTERMINATED - Transfer endedERROR - Transfer failedErrors return with status codes:
400 - Request malformed404 - Resource not found409 - Conflict (e.g., asset already exists)500 - Internal server errorResponse format:
[{ "message": "Error description", "path": "field/path", "invalidValue": "bad-value" }]
Full API specification: https://eclipse-tractusx.github.io/api-hub/tractusx-edc/0.12.0/control-plane/control-plane.yaml