The path segment defined in this section is an
OPTIONAL extension of search path segments defined in [
RFC 7482]. This document defines an RDAP query parameter, "fieldSet", whose value is a non-empty string identifying a server-defined set of fields returned in place of the full response. The field sets supported by a server are usually described in out-of-band documents (e.g., RDAP profile) together with other features. Moreover, this document defines in
Section 2.1 an in-band mechanism by means of which servers can provide clients with basic information about the supported field sets.
The following is an example of an RDAP query including the "fieldSet" parameter:
https://example.com/rdap/domains?name=example*.com&fieldSet=afieldset
This solution can be implemented by RDAP providers with less effort than field selection and is easily requested by clients. The considerations that have led to this solution are described in more detail in
Appendix A.
According to most advanced principles in REST design, collectively known as "Hypermedia as the Engine of Application State" (HATEOAS) [
HATEOAS], a client entering a REST application through an initial URI should use server-provided links to dynamically discover available actions and access the resources it needs. In this way, the client is not required to have prior knowledge of the service nor, consequently, to hard-code the URIs of different resources. This allows the server to make URI changes as the API evolves without breaking clients. Definitively, a REST service should be as self-descriptive as possible.
Therefore, servers implementing the query parameter described in this specification
SHOULD provide additional information in their responses about the available field sets. Such information is collected in a new JSON data structure named "subsetting_metadata" containing the following properties:
-
"currentFieldSet": "String" (REQUIRED)
-
either the value of the "fieldSet" parameter as specified in the querystring, or the field set applied by default.
-
"availableFieldSets": "AvailableFieldSet[]" (OPTIONAL)
-
an array of objects, with each element describing an available field set. The AvailableFieldSet object includes the following members:
-
"name": "String" (REQUIRED)
-
the field set name.
-
"default": "Boolean" (REQUIRED)
-
indicator of whether the field set is applied by default. An RDAP server MUST define only one default field set.
-
"description": "String" (OPTIONAL)
-
a human-readable description of the field set.
-
"links": "Link[]" (OPTIONAL)
-
an array of links as described in [RFC 8288] containing thequery string that applies the field set (see Section 2.1.2).
Servers returning the "subsetting_metadata" section in their responses
MUST include "subsetting" in the rdapConformance array.
An RDAP server
MAY use the "links" array of the "subsetting_metadata" element to provide ready-made references [
RFC 8288] to the available field sets (
Figure 1). The target URI in each link is the reference to an alternative to the current view of results identified by the context URI.
The "value", "rel", and "href" JSON values
MUST be specified. All other JSON values are
OPTIONAL.
{
"rdapConformance": [
"rdap_level_0",
"subsetting"
],
...
"subsetting_metadata": {
"currentFieldSet": "afieldset",
"availableFieldSets": [
{
"name": "anotherfieldset",
"description": "Contains some fields",
"default": false,
"links": [
{
"value": "https://example.com/rdap/domains?name=example*.com
&fieldSet=afieldset",
"rel": "alternate",
"href": "https://example.com/rdap/domains?name=example*.com
&fieldSet=anotherfieldset",
"title": "Result Subset Link",
"type": "application/rdap+json"
}
]
},
...
]
},
...
"domainSearchResults": [
...
]
}