-
Notifications
You must be signed in to change notification settings - Fork 90
docs: Add decision record for DID document based connector discovery #2503
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from 5 commits
Commits
Show all changes
8 commits
Select commit
Hold shift + click to select a range
3f984ec
Add dr for connector discovery
lgblaumeiser ac2658f
Simplify response structure to reflect used practise to return plain …
lgblaumeiser b7b48e7
Add legal notice
lgblaumeiser bf5eae0
Rename endpoint name to remove duplication
lgblaumeiser 01ed27a
Point out knowns parameter as optional
lgblaumeiser 69a66af
Change parameter name and improve description
lgblaumeiser 4838162
Update the knownConnectors parameter name
lgblaumeiser cb7062a
Include review comments
lgblaumeiser File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
86 changes: 86 additions & 0 deletions
86
...pment/decision-records/2026-01-06_service_retrieval_from_did_document/README.md
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,86 @@ | ||
| # Connector endpoint retrieval from DID Document service section | ||
|
|
||
| ## Decision | ||
|
|
||
| We will implement an additional endpoint in the connector discovery endpoint family. The endpoint will, based on a | ||
| DID retrieves the DID document, parses the service section for `DataService` entries, and retrieves for the detected | ||
| connector endpoints the dsp version parameters. It returns a list of version parameter sets for all found connectors | ||
| in the DID document. There will be a general support for other identifiers, using BPNLs as a second supported | ||
| identifier type. | ||
|
|
||
| ## Rationale | ||
|
|
||
| The current Tractus-X connector supports multiple versions of the DSP protocol the ones supported published | ||
| in the `.well-known/dspace-version` | ||
| [endpoint](https://eclipse-dataspace-protocol-base.github.io/DataspaceProtocol/2025-1/#exposure-of-dataspace-protocol-versions). | ||
| In addition, the DSP spec suggests to use the | ||
| [DID document](https://eclipse-dataspace-protocol-base.github.io/DataspaceProtocol/2025-1/#discovery-of-service-endpoints) | ||
| to publish connector endpoints. With this feature, the Tractus-X connector is about to support this retrieval of | ||
| connector endpoints together with the detection of the right version parameters used in the management api to | ||
| initiate DSP calls in the right version. | ||
|
|
||
| As for multi version connectors, only the option to use a `DataService` reference in the DID document makes sense, | ||
| the discovery of endpoints is limited to this type of connector references. | ||
|
|
||
| ## Approach | ||
|
|
||
| There is already a | ||
| [connector discovery extension](https://github.com/eclipse-tractusx/tractusx-edc/blob/eaa7084e83912e6dae42c13c948607a68d85ffa7/edc-extensions/connector-discovery/connector-discovery-api) | ||
| that implements the retrieval of the `.well-known/dspace-version` endpoint and to create the proper dsp version | ||
| parameters for a single connector endpoint provided as parameter. There is a second extension there which provides | ||
| a default implementation of the defined api. | ||
|
|
||
| As the intended api is related to this functionality, the approach is, to add another management api endpoint | ||
| called `/connectors` in this management api section that takes the following input parameters: | ||
|
|
||
| ```json | ||
| { | ||
| "identifier": "did:web:", | ||
| "knowns": [ | ||
| "https://first.provider-domain.com/somepath/dsp/v1/api", | ||
| "https://first.provider-domain.com/otherpath/dsp/v1/api", | ||
| "https://second.provider-domain.com/dsp/v1/api" | ||
| ] | ||
| } | ||
| ``` | ||
|
|
||
| The identifier field is kept neutral, in order to support different identifier types. The service will interpret | ||
| the identifier based on properties of the identifier, for now, DIDs and BPNLs will be supported. The mechanism | ||
| will be implemented in an extensible fashion, so that a general mapping from any identifier to a DID can be added. | ||
| The default implementation will detect DIDs and map them to themselves. A second extension will allow to handle | ||
| BPNLs and map them to the DID using the BDRS client. | ||
|
|
||
| The second input parameter `knowns` is optional and allows to add already known connector endpoints, so that also | ||
| for such them the version discovery can be executed and the right management api parameters are determined. | ||
|
|
||
| Consequently, the response has a body like this: | ||
|
|
||
| ```json | ||
| [ | ||
| { | ||
| "counterPartyAddress": "https://provider-domain/somepath/dsp/v1/api/2025-1", | ||
| "counterPartyId": "did:web:...", | ||
| "protocol": "dataspace-protocol-http:2025-1" | ||
| }, | ||
| { | ||
| "counterPartyAddress": "https://other-provider-domain/otherpath/dsp/v1/api", | ||
| "counterPartyId": "BPNL...", | ||
| "protocol": "dataspace-protocol-http" | ||
| } | ||
| ] | ||
| ``` | ||
|
|
||
| So it returns a list of parameter sets for the listed connectors in the DID document. It adds the known connectors | ||
| given as input and also requests the central discovery for now and provides the list of connectors from there. | ||
|
|
||
| The algorithm will make use of the existing features to download the DID document as well as the `dspace-version` | ||
| endpoint and processes the information. In case of a BPNL provided, it makes use of the BDRS client to translate | ||
| the BPNL to the DID. | ||
|
|
||
| ## NOTICE | ||
|
|
||
| This work is licensed under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode). | ||
|
|
||
| - SPDX-License-Identifier: CC-BY-4.0 | ||
| - SPDX-FileCopyrightText: 2026 Cofinity-X GmbH | ||
| - Source URL: [https://github.com/eclipse-tractusx/tractusx-edc](https://github.com/eclipse-tractusx/tractusx-edc) | ||
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.