Exemplary Discovery of AAS Objects with LinkSets and ID Link#536
Exemplary Discovery of AAS Objects with LinkSets and ID Link#536sebbader-sap wants to merge 6 commits intoIDTA-01002-3-2_workingfrom
Conversation
| - Server may also include a Link header with rel="alternate" and type="application/linkset+json" to advertise discovery per RFC 8288. | ||
|
|
||
| [plantuml, seq-idlink-linkset, svg] | ||
| .... |
Check warning
Code scanning / QDJVMC
Typo Warning documentation
| actor Client | ||
| participant IDProvider as "ID Link Landing" | ||
| participant AASService as "AAS / Repo" | ||
|
|
Check warning
Code scanning / QDJVMC
Typo Warning documentation
| participant IDProvider as "ID Link Landing" | ||
| participant AASService as "AAS / Repo" | ||
|
|
||
| Client -> IDProvider: GET /my-asset-id\nAccept: application/linkset+json |
Check warning
Code scanning / QDJVMC
Typo Warning documentation
| IDProvider --> Client: 200 OK\nContent-Type: application/linkset+json\n{ 'aas', 'aas-service-endpoints', 'dpp' } | ||
|
|
||
| Client -> AASService: GET /aas/shells/<encoded-globalAssetId>\nAccept: application/json | ||
| AASService --> Client: 200 OK\n{ AssetAdministrationShell ... } |
Check warning
Code scanning / QDJVMC
Typo Warning documentation
| .... | ||
|
|
||
| ==== | ||
| // Guidance |
Check warning
Code scanning / QDJVMC
Typo Warning documentation
| Client -> IDProvider: GET /my-asset-id\nAccept: application/linkset+json | ||
| IDProvider --> Client: 200 OK\nContent-Type: application/linkset+json\n{ 'aas', 'aas-service-endpoints', 'dpp' } | ||
|
|
||
| Client -> AASService: GET /aas/shells/<encoded-globalAssetId>\nAccept: application/json |
There was a problem hiding this comment.
I assume the globalAssetId is identical to "my-asset-id" from step one, only encoded. Otherwise, how is the mapping from my-asset-id to globalAssetId done?
There was a problem hiding this comment.
That's an option, I would do it like that. However, and that's the beauty of the approach, the data provider / asset manufacturer can also implement it completely different. As long as the "ID Link Landing" service is configured accordingly, the client does not need to assume (or concatenate) anything anymore: It simply follows the href in the response.
| ], | ||
| "dpp": [ | ||
| { | ||
| "href": "https://service.example.com/dpp/dpps/https%3A//id.example.com/my-asset-id", |
There was a problem hiding this comment.
I think it should be the endpoint of the API and not of a single DPP, so only https://service.example.com/dpp/dpps/
| "anchor": "https://id.example.com/my-asset-id", | ||
| "aas": [ | ||
| { | ||
| "href": "https://service.example.com/aas/shells/aHR0cHM6Ly9pZC5leGFtcGxlLmNvbS9teS1hc3NldC1pZA", |
There was a problem hiding this comment.
why for a single AAS, should be the endpoint of the API, no? same finding for DPP, see below
| "id": "another-oauth2", | ||
| "type": "OAuth2", | ||
| "base_url": "https://auth.example.com/realms/aas", | ||
| "flows": ["client-credential-flow"], |
Check warning
Code scanning / QDJVMC
Typo Warning documentation
|
|
||
| note right | ||
| Select relation 'aas' and follow href | ||
| with 'AAS Service Interface'. |
Check warning
Code scanning / QDJVMC
Typo Warning documentation
|
|
PR is ready for review / merging from my point of view. |
| == Direct Discovery of AAS Objects based on ID Link and LinkSets | ||
|
|
||
| This section describes how a client can discover AAS and related resources by using an ID Link as the globalAssetId combined with RFC 9264 LinkSets. | ||
| The ID Link is a resolvable HTTP(S) URL representing the asset identity (globalAssetId). |
Check warning
Code scanning / QDJVMC
Typo Warning documentation
| - A GET on the ID Link with Accept: application/linkset+json returns a LinkSet anchored at the ID Link. | ||
| - The LinkSet provides relations such as: | ||
| - aas: direct representations/endpoints of the Asset Administration Shell. | ||
| - aas-service-endpoints: a LinkSet enumerating infrastructure endpoints (AAS Repository, Submodel Repository, Discovery, Registry). |
Check warning
Code scanning / QDJVMC
Typo Warning documentation
| "aas-service-endpoints": [ | ||
| { | ||
| "href": "https://service.example.com/aas/aas-service-endpoints", | ||
| "type": "application/linkset+json", |
Check warning
Code scanning / QDJVMC
Typo Warning documentation
| } | ||
| ], | ||
| "dpp-service-endpoint": | ||
| { |
Check warning
Code scanning / QDJVMC
Typo Warning documentation
| Example for the content of the LinkSet returned by the AAS Service Endpoints endpoint: | ||
| [source,json] | ||
| ---- | ||
| { |
Check warning
Code scanning / QDJVMC
Typo Warning documentation
| Example for the content of the LinkSet returned by the ID Link endpoint: | ||
| [source,json] | ||
| ---- | ||
| { |
Check warning
Code scanning / QDJVMC
Typo Warning documentation
Closes #535