Internet-Draft | DataRight+: Discovery | September 2024 |
Low & Kolera | Expires 18 March 2025 | [Page] |
This specification outlines the technical requirements related to the delivery of the DataRight+ Discovery Document.¶
The keywords "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC2119].¶
This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.¶
Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet-Drafts is at https://datatracker.ietf.org/drafts/current/.¶
Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."¶
This Internet-Draft will expire on 18 March 2025.¶
Copyright (c) 2024 IETF Trust and the persons identified as the document authors. All rights reserved.¶
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document.¶
The scope of this specification is focused on describing a discovery document for participants to identify supported functionality at a specific Provider supplied resource server.¶
This specification uses the terms "Provider" and "Initiator" as defined by [DATARIGHTPLUS-ROSETTA].¶
DataRight+ compatible Providers have metadata containing configuration related to the additional services they provide. These DataRight Provider Metadata values are used by participating Initiators.¶
Attribute Name | Requirement | JSON Type | Description |
---|---|---|---|
version
|
REQUIRED | String | The discovery document version. Currently only V1 is supported. |
scheme
|
REQUIRED | Object | Per scheme breakdown of support as outlined in Scheme Metadata |
Each scheme represents the key value of the metadata. The currently supported schemes are as follows:¶
cds
: The operations as outlined in Section 3.2 of [PROFILE-AU-CDR]¶
dio
: The operations as outlined in Section 3.2 of [PROFILE-AU-DIO]¶
For each participating scheme an JSON object is used incorporating the following fields:¶
Attribute Name | Requirement | JSON Type | Description |
---|---|---|---|
endpoint
|
REQUIRED | Object | An object containing a per operationId key and breakdown as outlined Operation Metadata |
For each scheme a set of supported endpoints is described whereby the key is the OpenAPI 3 operationId
and the value is an object containing the following fields:¶
Attribute Name | Requirement | JSON Type | Description |
---|---|---|---|
baseUri
|
REQUIRED for all schemes except cds
|
String (URI) | The Base URI to use for this endpoint. |
flags
|
OPTIONAL | Array (Enum) | List of flags supported by the endpoint as outlined in Operation Flags |
responseVersions
|
REQUIRED | Array (String) | List of Response Versions supported by the endpoint for the specific operation. |
requestVersions
|
OPTIONAL | Array (String) | List of Request Versions supported by the endpoint for the specific operation |
Each operation may have additional flags to indicate certain support for non-payload related capability. The list of supported flags is as follows:¶
Flag | Requirement | Description |
---|---|---|
SUPPORTS_CDS_VERSIONING
|
OPTIONAL | Supports the header based version negotiation as specified within [CDS] |
This flag indicates that the endpoint uses the versioning approach first specified in [CDS].¶
For endpoints utilising this flag the responseVersions
field is specified as the letter V
followed by the integer matching the x-v
value for the endpoint (for example V3
for x-v
value of 3
).¶
If multiple x-v
versions are supported these can be specified in the same way within the responseVersions
array, for example ["V1", "V2"]
.¶
The following is a non-normative example of a DataRight+ Discovery document:¶
{ "version": "V1", "scheme": { "cds": { "endpoint": { "getBankingAccountDetail": { "flags": [ "SUPPORTS_CDS_VERSIONING" ], "responseVersions": [ "V2" ] } }, "dio": { "endpoint": { "getBankingTransactionDetailListStatus": { "baseUri": "https://secure-api.acme.bank/dio-au/v1", "responseVersions": [ "V1" ] }, "requestBankingTransactionDetailList": { "baseUri": "https://secure-api.acme.bank/dio-au/v1", "responseVersions": [ "V1" ], "requestVersions": [ "V1" ] }, "retrieveBankingTransactionDetailList": { "baseUri": "https://secure-api.acme.bank/dio-au/v1", "responseVersions": [ "V1" ] } } } } } }¶
The Provider SHALL make available at the base uri advertised by the Ecosystem Authority for the Provider Brand publicBaseUri
attribute, as described further in [DATARIGHTPLUS-REDOCLY] the following endpoint:¶
Resource Server Endpoint | Valid x-max-v
|
---|---|
GET /discovery/datarightplus-configuration
|
V1
|
In order to provide a progressive update mechanism of the metadata itself the Provider:¶
x-max-v
request header value containing the letter V
and an integer (eg. V1
) and;¶
x-max-v
value to provide DataRight+ Discovery Metadata equal to or less than the integer contained in version
;¶
x-v
header with the same value as the version
attribute contained within the response payload;¶
The Initiator resource server client SHALL:¶
GET
request to the prescribed endpoint location (i.e. <publicBaseUri>/discovery/datarightplus-configuration
) and;¶
x-max-v
header describing the newest Initiator supported version of the DataRight+ Discovery Metadata and;¶
For the cds
scheme, the baseUri
value is intended to be provided by the Ecosystem Authority. In this case the baseUri
, if specified, MUST match the relevant value supplied by the Ecosystem Authority.¶