Internet-Draft | Versioning in RDAP | May 2023 |
Gould, et al. | Expires 13 November 2023 | [Page] |
This document describes an RDAP extension for identifying RDAP extension versions supported by the server, RDAP extension versions included in an RDAP response, and enabling a client to specify the desired RDAP extension versions to include in an RDAP response using machine-parseable identifiers.¶
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 13 November 2023.¶
Copyright (c) 2023 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. Code Components extracted from this document must include Revised BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Revised BSD License.¶
RDAP supports identifying the RDAP extensions included in an RDAP response using the RDAP Conformance, defined in Section 4.1 of [RFC9083]. The RDAP Conformance values of RDAP extensions can informally support versioning using a machine processable, opaque identifier, but there is no standard mechanism defined in [RFC9083] that exists to support structured, machine-parseable version signaling by the server.¶
This document describes an RDAP extension for identifying RDAP extension versions supported by the server, RDAP extension versions included in an RDAP response, and enabling a client to specify the desired RDAP extension versions to include in an RDAP response using machine-parseable identifiers. The RDAP extension versions supported by the server is returned in an extension to the RDAP help response, defined in Section 7 of [RFC9083], using the "versioning-help" member Section 6.2. The "versioning-help" member includes the list of supported extensions, using the RDAP Conformance identifiers with a list of supported versions, an indication of the default version, and optional links to the extension version documentation. The RDAP extension versions included in an RDAP response are identified using the "versioning" member Section 6.3. The "versioning" member includes a list of extensions, using the RDAP Conformance identifiers with the extension version included in the RDAP response. The client can specify the desired RDAP extension versions to include in the RDAP response with the "versioning" query parameter Section 5. The "versioning" query parameter is set with a list of extension version identifiers Section 3, delimeted by a comma (',').¶
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.¶
The Extension Version Identifier is the unique versioned extension identifier that is used for extension signaling by the server and by the client. The Extension Version Identifier uses the Extension Identifier, defined in [RFC7480], along with the Extension Versioning defined in Section 3.1. The format of the Extension Version Identifier is defined in Section 3.2.¶
The Extension Versioning uses a subset of the Semantic Versioning [SemVer] rules, where the patch version, pre-release version, and build metadata are not used. RDAP versioning is only associated with changes to the protocol interface that is the public API of [SemVer]. Only the [SemVer] major version and minor version are used for Extension Versioning. The RDAP extension given a version number MAJOR.MINOR, increment the:¶
The following are the Extension Versioning rules based on modifications to the Semantic Versioning [SemVer] rules:¶
Precedence refers to how versions are compared to each other when ordered.¶
The Augmented Backus-Naur Form (ABNF) grammar [RFC5234] format for the Extension Version Identifier is below, with the "identifier" rule matching the Extension Identifer in [RFC7480] and returned in the "rdapConformance" data structure of [RFC7483]:¶
Example Extension Version Identifiers:¶
Profile extensions represent existing entries in the RDAP Extensions Registry, defined in Section 8.1 of [RFC7480], that embed versioning information to signal policy implementation by the server. The RDAP Extensions Registry was not designed to support versioning, so the profile extensions represent a corner case that can be better handled using this extension. Examples include "icann_rdap_response_profile_0" and "icann_rdap_technical_implementation_guide_0", where the version "0" is included as a suffix of the extension identifier. The goal for the "versioning" extension is to handle the versioning consistently for all RDAP extensions, so the Extension Version Identifier MAY duplicate some of the version information included in the extension identifier initially. For example, for the extension identifier "icann_rdap_response_profile_0", the recommendation is to set the Extension Version Identifier of the "icann_rdap_response_profile_0" extension identifier to "icann_rdap_response_profile_0-1.0" to reflect it as the first stable version. Similarly, a future "icann_rdap_response_profile_1" extension identifier would have the Extension Version Identifier set to "icann_rdap_response_profile_1-2.0".¶
The profile extension identifiers can be transitioned to leverage this extension to fully handle the versioning of the extension by removing the versioning information from the extension identifiers and consolidating a set of profile extension identifiers with a single profile extension identifier. For example, the set of profile extension identifiers "icann_rdap_response_profile_0" and "icann_rdap_response_profile_1" can be consolidated to the single extension identifier "icann_rdap_response_profile" and the "versioning" extension can include the Extension Version Identifier values of "icann_rdap_response_profile-1.0" and "icann_rdap_response_profile-2.0". Embedding of versioning into the extension identifers was the only option available prior to the use of the "versioning" extension, which can be used to signal the versioning of all RDAP extensions.¶
The Extension Version Identifier (Section 3) associated with this version of the "versioning" extension is "versioning-0.1".¶
This specification describes an OPTIONAL "versioning" query parameter for use with RDAP queries to specify the version of the RDAP extensions to include in the RDAP response. The "versioning" query parameter is a list of one or more Extension Version Identifiers, as defined in Section 3, seperated by commas. The Augmented Backus-Naur Form (ABNF) grammar [RFC5234] format for the "versioning" query parameter, using the "extension-version-identifier" rule from Figure 1, is:¶
To bootstrap the use of the "versioning" extension, the client SHOULD use the "versioning" query parameter with the desired version of the "versioning" extension; otherwise it will be up to server policy what version of the "versioning" extension to return in the RDAP response.¶
Example RDAP queries using the "versioning" query parameter:¶
RDAP responses that contain values described in this document MUST indicate conformance with this specification by including an "rdapConformance" ([RFC9083]) value of "versioning". The "versioning" extension identifier is described in Section 7.1.¶
Example "rdapConformance" member with the versioning extension:¶
The "versioning-help" member MUST be added to a response of a RDAP help query, defined in [RFC9082], to indicate the RDAP extensions that are supported by the server. The "versioning-help" member contains an array of extension objects with the following child members:¶
An array of extension version objects with the following child members:¶
OPTIONAL "links" array to extension version documentation. The relationship of these links is defined by the IANA registry described in [RFC8288]. The JSON name/values of "rel", "href", "hreflang", "title", "media", and "type" correspond to values found in Section 3 of [RFC8288]. The "value", "rel", and "href" JSON values MUST be specified. All other JSON values are OPTIONAL.¶
Example "links" member for the "ext2-0.1" extension version identifier:¶
Example help response with "versioning-help" and "versioning" members and no client specified versioning in the help query "https://example.com/rdap/help":¶
Example help response with the "versioning-help" and "versioning" members and client specified "versioning-0.0" extension version in the help query "https://example.com/rdap/help?versioning=versioning-0.0". The "versioning-0.0" extension version does not include support for the "default" member and uses the "ext" member instead of the "extension" member.¶
The "versioning" member MUST be added to the RDAP response when there is one or more RDAP extension fields. The "versioning" member is included as a member of the object class in a lookup response, such as the object classes defined in [RFC9083], and as a member of the object instances in a search response, such as the object instances defined in [RFC9083]. The "versioning" member contains an array of versioning objects with the following child members:¶
Example domain lookup response with "versioning" member and no client specified versioning in the lookup query "https://example.com/rdap/domain/versioning.example":¶
Example domain lookup response with "versioning" member and client specified "ext1-0.1" extension version in the lookup query "https://example.com/rdap/domain/versioning.example?versioning=ext1-0.1":¶
Example domain lookup response with "versioning" member and client specified "ext1-0.1" and "versioning-0.0" extension versions in the lookup query "https://example.com/rdap/domain/versioning.example?versioning=ext1-0.1,versioning-0.0":¶
IANA is requested to register the following value in the RDAP Extensions Registry:¶
The RDAP extensions available to clients can be subject to server disclosure and authorization policies. Inclusion of available RDAP extensions and their available versions in the "versioning-help" member, defined in Section 6.2, of the RDAP help response and inclusion of the RDAP extensions in the RDAP response with the "versioning" member, defined in Section 6.3, can be dependent on authentication and authorization of the client by the server.¶
The authors wish to thank the following persons for their feedback and suggestions: Scott Hollenbeck, Andy Newton, and Jasdip Singh.¶