Tractusx EDC
Interact with Tractus-X EDC (Eclipse Data Connector) control plane API v3 for managing assets, contract negotiations, policies, and data transfers.
Like a lobster shell, security has layers — review code before you run it.
License
Runtime requirements
SKILL.md
Tractus-X EDC Connector Skill (v3 API)
Use this skill to interact with a Tractus-X EDC (Eclipse Data Connector) control plane using the v3 API.
Configuration
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)
API Base URL
${EDC_CONTROL_PLANE_URL}/v3
Core Operations
1. Assets Management (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}"
2. Policy Definitions (v3)
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}}'
3. Contract Definitions (v3)
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}}'
4. Contract Negotiations (v3)
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}"
5. Contract Agreements (v3)
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}"
6. Transfer Processes (v3)
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"}'
7. EDR (Endpoint Data Reference) Management (v3)
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}"
8. Business Partner Groups (v3)
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}"
9. Health Checks
Health Check:
curl -X GET "${EDC_CONTROL_PLANE_URL}/check/health"
Startup Check:
curl -X GET "${EDC_CONTROL_PLANE_URL}/check/startup"
Workflow: Complete Data Exchange
-
Provider Side:
- Create Asset with data address
- Create Policy definition
- Create Contract definition linking asset to policy
-
Consumer Side:
- Initiate Contract Negotiation
- Query negotiations to track state
- Get Contract Agreement from negotiation
- Initiate Transfer Process
- Suspend/resume transfer as needed
- Get EDR data address for actual data access
Common States
Contract Negotiation States (from negotiation object)
REQUESTING- Initial request sentOFFERED- Offer receivedACCEPTED- Offer acceptedAGREED- Agreement reachedVERIFIED- Agreement verifiedTERMINATED- Negotiation ended
Transfer Process States
INITIAL- Transfer initiatedPROVISIONING- Resources being provisionedPROVISIONED- Resources readyREQUESTING- Request sent to providerSTARTED- Transfer startedSUSPENDED- Transfer pausedCOMPLETED- Transfer finishedTERMINATED- Transfer endedERROR- Transfer failed
Error Handling
Errors return with status codes:
400- Request malformed404- Resource not found409- Conflict (e.g., asset already exists)500- Internal server error
Response format:
[{ "message": "Error description", "path": "field/path", "invalidValue": "bad-value" }]
OpenAPI Reference
Full API specification: https://eclipse-tractusx.github.io/api-hub/tractusx-edc/0.12.0/control-plane/control-plane.yaml
Files
2 totalComments
Loading comments…
