rfc8982xml2.original.xml | rfc8982.xml | |||
---|---|---|---|---|
<?xml version="1.0" encoding="UTF-8"?> | <?xml version="1.0" encoding="UTF-8"?> | |||
<!DOCTYPE rfc SYSTEM "http://xml.resource.org/authoring/rfc2629.dtd" | ||||
[ | ||||
<!ENTITY RFC2119 PUBLIC '' | ||||
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml'> | ||||
<!ENTITY RFC5890 PUBLIC '' | ||||
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.5890.xml'> | ||||
<!ENTITY RFC7230 PUBLIC '' | ||||
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.7230.xml'> | ||||
<!ENTITY RFC7480 PUBLIC '' | ||||
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.7480.xml'> | ||||
<!ENTITY RFC7481 PUBLIC '' | ||||
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.7481.xml'> | ||||
<!ENTITY RFC7482 PUBLIC '' | ||||
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.7482.xml'> | ||||
<!ENTITY RFC7483 PUBLIC '' | ||||
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.7483.xml'> | ||||
<!ENTITY RFC7942 PUBLIC '' | ||||
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.7942.xml'> | ||||
<!ENTITY RFC8174 PUBLIC '' | ||||
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.8174.xml'> | ||||
<!ENTITY RFC8288 PUBLIC '' | ||||
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.8288.xml'> | ||||
]> | ||||
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt"?> | ||||
<?rfc toc="yes"?> | <!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent"> | |||
<?rfc tocompact="yes"?> | ||||
<?rfc tocdepth="4"?> | <rfc xmlns:xi="http://www.w3.org/2001/XInclude" xml:lang="en" submissionType="IE | |||
<?rfc compact="yes"?> | TF" | |||
<?rfc subcompact="yes"?> | category="std" consensus="true" docName="draft-ietf-regext-rdap-partial-response | |||
<?rfc sortrefs="yes"?> | -16" | |||
<?rfc symrefs="yes"?> | number="8982" ipr="trust200902" tocInclude="true" tocDepth="4" sortRefs="true" | |||
<?rfc iprnotified="no"?> | symRefs="true" version="3"> | |||
<rfc category="std" docName="draft-ietf-regext-rdap-partial-response-16" ipr="tr ust200902"> | ||||
<front> | <front> | |||
<title abbrev="RDAP Partial Response">Registration Data Access Protocol (RDA P) Partial Response</title> | <title abbrev="RDAP Partial Response">Registration Data Access Protocol (RDA P) Partial Response</title> | |||
<seriesInfo name="RFC" value="8982"/> | ||||
<author fullname="Mario Loffredo" initials="M." surname="Loffredo"> | <author fullname="Mario Loffredo" initials="M." surname="Loffredo"> | |||
<organization>IIT-CNR/Registro.it</organization> | <organization>IIT-CNR/Registro.it</organization> | |||
<address> | <address> | |||
<postal> | <postal> | |||
<street>Via Moruzzi,1</street> | <street>Via Moruzzi,1</street> | |||
<city>Pisa</city> | <city>Pisa</city> | |||
<country>IT</country> | <country>IT</country> | |||
<code>56124</code> | <code>56124</code> | |||
</postal> | </postal> | |||
<email>mario.loffredo@iit.cnr.it</email> | <email>mario.loffredo@iit.cnr.it</email> | |||
<uri>http://www.iit.cnr.it</uri> | <uri>https://www.iit.cnr.it</uri> | |||
</address> | </address> | |||
</author> | </author> | |||
<author fullname="Maurizio Martinelli" initials="M." surname="Martinelli"> | <author fullname="Maurizio Martinelli" initials="M." surname="Martinelli"> | |||
<organization>IIT-CNR/Registro.it</organization> | <organization>IIT-CNR/Registro.it</organization> | |||
<address> | <address> | |||
<postal> | <postal> | |||
<street>Via Moruzzi,1</street> | <street>Via Moruzzi,1</street> | |||
<city>Pisa</city> | <city>Pisa</city> | |||
<country>IT</country> | <country>IT</country> | |||
<code>56124</code> | <code>56124</code> | |||
</postal> | </postal> | |||
<email>maurizio.martinelli@iit.cnr.it</email> | <email>maurizio.martinelli@iit.cnr.it</email> | |||
skipping to change at line 64 ¶ | skipping to change at line 36 ¶ | |||
<author fullname="Maurizio Martinelli" initials="M." surname="Martinelli"> | <author fullname="Maurizio Martinelli" initials="M." surname="Martinelli"> | |||
<organization>IIT-CNR/Registro.it</organization> | <organization>IIT-CNR/Registro.it</organization> | |||
<address> | <address> | |||
<postal> | <postal> | |||
<street>Via Moruzzi,1</street> | <street>Via Moruzzi,1</street> | |||
<city>Pisa</city> | <city>Pisa</city> | |||
<country>IT</country> | <country>IT</country> | |||
<code>56124</code> | <code>56124</code> | |||
</postal> | </postal> | |||
<email>maurizio.martinelli@iit.cnr.it</email> | <email>maurizio.martinelli@iit.cnr.it</email> | |||
<uri>http://www.iit.cnr.it</uri> | <uri>https://www.iit.cnr.it</uri> | |||
</address> | </address> | |||
</author> | </author> | |||
<date year="2021" month="February"/> | ||||
<date/> | ||||
<area>Applications and Real-Time</area> | <area>Applications and Real-Time</area> | |||
<workgroup>Registration Protocols Extensions</workgroup> | <workgroup>Registration Protocols Extensions</workgroup> | |||
<keyword>RDAP</keyword> | <keyword>RDAP</keyword> | |||
<keyword>Partial response</keyword> | <keyword>Partial response</keyword> | |||
<abstract> | <abstract> | |||
<t>The Registration Data Access Protocol (RDAP) does not include capabilit ies to request partial responses. Servers will only return full responses that include all of the information that a client is authorized to receive. A partia l response capability that limits the amount of information returned, especially in the case of search queries, could bring benefits to both clients and servers . This document describes an RDAP query extension that allows clients to specif y their preference for obtaining a partial response.</t> | <t>The Registration Data Access Protocol (RDAP) does not include capabilit ies to request partial responses. Servers will only return full responses that include all of the information that a client is authorized to receive. A partia l response capability that limits the amount of information returned, especially in the case of search queries, could bring benefits to both clients and servers . This document describes an RDAP query extension that allows clients to specif y their preference for obtaining a partial response.</t> | |||
</abstract> | </abstract> | |||
</front> | </front> | |||
<middle> | <middle> | |||
<section anchor="introduction" title="Introduction"> | <section anchor="introduction"> | |||
<t>The use of partial responses in RESTful API <xref target="REST"/> desig | ||||
n is very common. The rationale is quite simple: instead of returning objects i | ||||
n API responses with all data fields, only a subset of the fields in each result | ||||
object is returned. The benefit is obvious: less data transferred over the net | ||||
work means less bandwidth usage, faster server responses, less CPU time spent bo | ||||
th on the server and the client, and less memory usage on the client.</t> | ||||
<t>Currently, RDAP does not provide a client with any way to request a par | ||||
tial response. Servers can only provide the client with a full response <xref t | ||||
arget="RFC7483"/>. Servers cannot limit the amount of information returned in a | ||||
response based on a client's preferences, and this creates inefficiencies.</t> | ||||
<t>The protocol described in this specification extends RDAP search capabi | <name>Introduction</name> | |||
lities to enable partial responses through the provisioning of pre-defined sets | <t>The use of partial responses in RESTful API <xref | |||
of fields that clients can submit to an RDAP service by adding a new query param | target="REST"/> design is very common. The rationale is quite simple: | |||
eter. The service is implemented using the Hypertext Transfer Protocol (HTTP) < | instead of returning objects in API responses with all data fields, only | |||
xref target="RFC7230"/> and the conventions described in <xref target="RFC7480"/ | a subset of the fields in each result object is returned. The benefit | |||
>.</t> | is obvious: less data transferred over the network means less bandwidth | |||
usage, faster server responses, less CPU time spent both on the server | ||||
and the client, and less memory usage on the client.</t> | ||||
<section title="Conventions Used in This Document"> | <t>Currently, RDAP does not provide a client with any way to request a | |||
<t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "S | partial response. Servers can only provide the client with a full | |||
HOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in | response <xref target="RFC7483"/>. Servers cannot limit the amount of | |||
this document are to be interpreted as described in BCP 14 <xref target="RFC211 | information returned in a response based on a client's preferences, and | |||
9"/> <xref target="RFC8174"/> when, and only when, they appear in all capitals, | this creates inefficiencies.</t> | |||
as shown here.</t> | <t>The protocol described in this specification extends RDAP search | |||
</section> | capabilities to enable partial responses through the provisioning of | |||
</section> | predefined sets of fields that clients can submit to an RDAP service by | |||
adding a new query parameter. The service is implemented using the | ||||
Hypertext Transfer Protocol (HTTP) <xref target="RFC7230"/> and the | ||||
conventions described in <xref target="RFC7480"/>.</t> | ||||
<section> | ||||
<name>Conventions Used in This Document</name> | ||||
<section anchor="rdap-path-segment-specification" title="RDAP Path Segment | <t> | |||
Specification"> | The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", | |||
"<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL | ||||
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", | ||||
"<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", | ||||
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are | ||||
to be interpreted as described in BCP 14 <xref target="RFC2119"/> | ||||
<xref target="RFC8174"/> when, and only when, they appear in all capitals, | ||||
as shown here. | ||||
</t> | ||||
<t>The path segment defined in this section is an OPTIONAL extension of s | </section> | |||
earch path segments defined in <xref target="RFC7482"/>. This document defines | </section> | |||
an RDAP query parameter, "fieldSet", whose value is a non-empty string | <section anchor="rdap-path-segment-specification"> | |||
identifying a server-defined set of fields returned in place of the full respon | <name>RDAP Path Segment Specification</name> | |||
se. The field sets supported by a server are usually described in out-of-band d | <t>The path segment defined in this section is an | |||
ocuments (e.g., RDAP profile) together with other features. Moreover, this docu | <bcp14>OPTIONAL</bcp14> extension of search path segments defined in | |||
ment defines in <xref target="rdap-subsetting-metadata"/> an in-band mechanism b | <xref target="RFC7482"/>. This document defines an RDAP query | |||
y means of which servers can provide clients with a basic information about the | parameter, "fieldSet", whose value is a non-empty string identifying a | |||
supported field sets.</t> | 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 <xref | ||||
target="rdap-subsetting-metadata"/> an in-band mechanism by means of | ||||
which servers can provide clients with basic information about the | ||||
supported field sets.</t> | ||||
<t>The following is an example of an RDAP query including the "fieldSet" p | ||||
arameter:</t> | ||||
<artwork><![CDATA[ | ||||
https://example.com/rdap/domains?name=example*.com&fieldSet=afieldset | ||||
]]></artwork> | ||||
<t>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 <xref | ||||
target="approaches-to-partial-response-implementation"/>.</t> | ||||
<section anchor="rdap-subsetting-metadata"> | ||||
<t>The following is an example of an RDAP query including the "fiel | <name>Subsetting Metadata</name> | |||
dSet" parameter:</t> | <t>According to most advanced principles in REST design, collectively | |||
known as "Hypermedia as the Engine of Application State" (HATEOAS) | ||||
<xref target="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.</t> | ||||
<t>Therefore, servers implementing the query parameter described in | ||||
this specification <bcp14>SHOULD</bcp14> 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:</t> | ||||
<dl newline="true"> | ||||
<t>https://example.com/rdap/domains?name=example*.com&fieldSet=afiel | <dt>"currentFieldSet": "String" (<bcp14>REQUIRED</bcp14>) | |||
dset</t> | </dt> | |||
<dd>either the value of the "fieldSet" parameter as specified in the query | ||||
string, or the field set applied by default. | ||||
</dd> | ||||
<t>This solution can be implemented by RDAP providers with less effort th | <dt>"availableFieldSets": "AvailableFieldSet[]" (<bcp14>OPTIONAL</bcp14>) | |||
an field selection and is easily requested by clients. The considerations that | </dt> | |||
have led to this solution are described in more detail in <xref target="approach | <dd><t>an array of objects, with each element describing an available field set. | |||
es-to-partial-response-implementation"/>.</t> | The AvailableFieldSet object includes the following members:</t> | |||
<section anchor="rdap-subsetting-metadata" title="Subsetting Metadata"> | <dl newline="true"> | |||
<t>According to most advanced principles in REST design, collectively known | <dt>"name": "String" (<bcp14>REQUIRED</bcp14>) | |||
as HATEOAS (Hypermedia as the Engine of Application State) <xref target="HATEOA | </dt> | |||
S"/>, a client entering a REST application through an initial URI should use ser | <dd>the field set name. | |||
ver-provided links to dynamically discover available actions and access the reso | </dd> | |||
urces it needs. In this way, the client is not required to have prior knowledge | ||||
of the service and, 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 possibl | ||||
e.</t> | ||||
<t>Therefore, servers implementing the query parameter described in this s | <dt>"default": "Boolean" (<bcp14>REQUIRED</bcp14>) | |||
pecification SHOULD provide additional information in their responses about the | </dt> | |||
available field sets. Such information is collected in a new JSON data structur | <dd>indicator of whether the field set is applied by | |||
e named "subsetting_metadata" containing the following properties:</t> | default. An RDAP server <bcp14>MUST</bcp14> define only one default field set. | |||
<t><list style="symbols"> | </dd> | |||
<t>"currentFieldSet": "String" (REQUIRED) either th | ||||
e value of the "fieldSet" parameter as specified in the query string, | ||||
or the field set applied by default;<vspace blankLines='1'/></t> | ||||
<t>"availableFieldSets": "AvailableFieldSet[]" (OP | ||||
TIONAL) an array of objects, with each element describing an available field set | ||||
. The AvailableFieldSet object includes the following members: | ||||
<list style="symbols"> | ||||
<t>"name": "String" (REQUIRED) the field set nam | ||||
e;</t> | ||||
<t>"default": "Boolean" (REQUIRED) whether the fie | ||||
ld set is applied by default. An RDAP server MUST define only one default field | ||||
set;</t> | ||||
<t>"description": "String" (OPTIONAL) a human-rea | ||||
dable description of the field set;</t> | ||||
<t>"links": "Link[]" (OPTIONAL) an array of links a | ||||
s described in <xref target="RFC8288"/> containing the query string that applies | ||||
the field set (see <xref target="subsetting_links"/>).</t> | ||||
</list></t> | ||||
</list></t> | ||||
<section anchor="rdap-conformance" title="RDAP Conformance"> | <dt>"description": "String" (<bcp14>OPTIONAL</bcp14>) | |||
<t>Servers returning the "subsetting_metadata" section in their | </dt> | |||
responses MUST include "subsetting" in the rdapConformance array.</t> | <dd>a human-readable description of the field set. | |||
</section> | </dd> | |||
<section anchor="subsetting_links" title="Representing Subsetting Links"> | <dt>"links": "Link[]" (<bcp14>OPTIONAL</bcp14>) | |||
<t>An RDAP server MAY use the "links" array of the "subset | </dt> | |||
ting_metadata" element to provide ready-made references <xref target="RFC82 | <dd>an array of links as described in <xref target="RFC8288"/> containing the | |||
88"/> to the available field sets (<xref target="subset-link-in-response-example | query string that applies the field set (see <xref | |||
"/>). The target URI in each link is the reference to an alternative to the cur | target="subsetting_links"/>). | |||
rent view of results identified by the context URI.</t> | </dd> | |||
</dl> | ||||
<t>The "value", "rel" and "href" JSON values MUST | </dd> | |||
be specified. All other JSON values are OPTIONAL.</t> | </dl> | |||
<figure anchor="subset-link-in-response-example" title="Example of a " | <section anchor="rdap-conformance"> | |||
subsetting_metadata" instance"> | <name>RDAP Conformance</name> | |||
<artwork xml:space="preserve"><![CDATA[ | <t>Servers returning the "subsetting_metadata" section in their respon | |||
ses <bcp14>MUST</bcp14> include "subsetting" in the rdapConformance array.</t> | ||||
</section> | ||||
<section anchor="subsetting_links"> | ||||
<name>Representing Subsetting Links</name> | ||||
<t>An RDAP server <bcp14>MAY</bcp14> use the "links" array of the "sub | ||||
setting_metadata" element to provide ready-made references <xref target="RFC8288 | ||||
"/> to the available field sets (<xref target="subset-link-in-response-example"/ | ||||
>). The target URI in each link is the reference to an alternative to the curre | ||||
nt view of results identified by the context URI.</t> | ||||
<t>The "value", "rel", and "href" JSON values <bcp14>MUST</bcp14> be s | ||||
pecified. All other JSON values are <bcp14>OPTIONAL</bcp14>.</t> | ||||
<figure anchor="subset-link-in-response-example"> | ||||
<name>Example of a "subsetting_metadata" Instance</name> | ||||
<sourcecode type="json"><![CDATA[ | ||||
{ | { | |||
"rdapConformance": [ | "rdapConformance": [ | |||
"rdap_level_0", | "rdap_level_0", | |||
"subsetting" | "subsetting" | |||
], | ], | |||
... | ... | |||
"subsetting_metadata": { | "subsetting_metadata": { | |||
"currentFieldSet": "afieldset", | "currentFieldSet": "afieldset", | |||
"availableFieldSets": [ | "availableFieldSets": [ | |||
{ | { | |||
skipping to change at line 163 ¶ | skipping to change at line 214 ¶ | |||
] | ] | |||
}, | }, | |||
... | ... | |||
] | ] | |||
}, | }, | |||
... | ... | |||
"domainSearchResults": [ | "domainSearchResults": [ | |||
... | ... | |||
] | ] | |||
} | } | |||
]]></artwork> | ]]></sourcecode> | |||
</figure> | </figure> | |||
</section> | ||||
</section> | ||||
</section> | ||||
</section> | </section> | |||
</section> | ||||
<section anchor="rdap-field-set-relationships"> | ||||
<name>Dealing with Relationships</name> | ||||
<t>Representation of second-level objects within a field set produces addi | ||||
tional considerations. Since the representation of the topmost returned objects | ||||
will vary according to the field set in use, the response may contain no relati | ||||
onships (e.g., for an abbreviated field set) or may contain associated objects a | ||||
s in a normal RDAP query response. Each field set can indicate the format of th | ||||
e additional objects to be returned, in the same manner that the format of the t | ||||
opmost objects is controlled by the field set.</t> | ||||
</section> | ||||
<section anchor="basic-field-sets"> | ||||
<name>Basic Field Sets</name> | ||||
<t>This section defines three basic field sets that servers | ||||
<bcp14>MAY</bcp14> implement to facilitate their interaction with | ||||
clients:</t> | ||||
<section anchor="rdap-field-set-relationships" title="Dealing with Relationships | <dl> | |||
"> | ||||
<t>Representation of second level objects within a field set produces add | ||||
itional considerations. Since the representation of the topmost returned object | ||||
s will vary according to the field set in use, the response may contain no relat | ||||
ionships (e.g., for an abbreviated field set) or may contain associated objects | ||||
as in a normal RDAP query response. Each field set can indicate the format of t | ||||
he additional objects to be returned, in the same manner that the format of the | ||||
topmost objects is controlled by the field set.</t> | ||||
</section> | ||||
<section anchor="basic-field-sets" title="Basic Field Sets"> | ||||
<t>This section defines three basic field sets which servers MAY implemen | ||||
t to facilitate their interaction with clients:</t> | ||||
<t><list style="symbols"> | <dt>"id": | |||
<t>"id": the server provides only the key field: "handle | </dt> | |||
" for entities, "ldhName" for domains and nameservers. If a retu | <dd>The server provides only the key field; "handle" for entities, and "ldhName" | |||
rned domain or nameserver is an Internationalized Domain Name (IDN) <xref target | for domains | |||
="RFC5890"/>, then the "unicodeName" field MUST additionally be includ | and nameservers. If a returned domain or nameserver is an Internationalized Dom | |||
ed in the response. This field set could be used when the client wants to obtai | ain Name (IDN) <xref | |||
n a collection of object identifiers (<xref target="fieldSet-id-response-example | target="RFC5890"/>, then the "unicodeName" field <bcp14>MUST</bcp14> additionall | |||
"/>);<vspace blankLines='1' /></t> | y be included in the | |||
<t>"brief": the field set contains the fields that can be inc | response. This field set could be used when the client wants to obtain a collec | |||
luded in a "short" response. This field set could be used when the cl | tion of object | |||
ient is asking for a subset of the full response which provides only basic knowl | identifiers (<xref target="fieldSet-id-response-example"/>). | |||
edge of each object;<vspace blankLines='1'/></t> | </dd> | |||
<t>"full": the field set contains all of the information the | ||||
server can provide for a particular object.</t> | ||||
</list></t> | ||||
<t>The "objectClassName" field is implicitly included in each of | <dt>"brief": | |||
the above field sets. RDAP providers SHOULD include a "links" field | </dt> | |||
indicating the "self" link relationship. RDAP providers MAY also add | <dd>The field set contains the fields that can be included in a "short" response | |||
any property providing service information.</t> | . | |||
This field set could be used when the client is asking for a subset of the full | ||||
response that provides | ||||
only basic knowledge of each object. | ||||
</dd> | ||||
<t>Fields included in the "brief" and "full" field set | <dt>"full": | |||
responses MUST take into account the user's access and authorization levels.</t | </dt> | |||
> | <dd>The field set contains all of the information the server can provide for a | |||
particular object. | ||||
</dd> | ||||
<figure anchor="fieldSet-id-response-example" title="Example of RDAP respo | </dl> | |||
nse according to the "id" field set"> | ||||
<artwork xml:space="preserve"> | ||||
<t>The "objectClassName" field is implicitly included in each of the above | ||||
field sets. RDAP providers <bcp14>SHOULD</bcp14> include a "links" field indic | ||||
ating the "self" link relationship. RDAP providers <bcp14>MAY</bcp14> also add | ||||
any property providing service information.</t> | ||||
<t>Fields included in the "brief" and "full" field set responses <bcp14>MU | ||||
ST</bcp14> take into account the user's access and authorization levels.</t> | ||||
<figure anchor="fieldSet-id-response-example"> | ||||
<name>Example of RDAP Response According to the "id" Field Set</name> | ||||
<sourcecode type="json"> | ||||
{ | { | |||
"rdapConformance": [ | "rdapConformance": [ | |||
"rdap_level_0", | "rdap_level_0", | |||
"subsetting" | "subsetting" | |||
], | ], | |||
... | ... | |||
"domainSearchResults": [ | "domainSearchResults": [ | |||
{ | { | |||
"objectClassName": "domain", | "objectClassName": "domain", | |||
"ldhName": "example1.com", | "ldhName": "example1.com", | |||
skipping to change at line 225 ¶ | skipping to change at line 294 ¶ | |||
"value": "https://example.com/rdap/domain/example2.com", | "value": "https://example.com/rdap/domain/example2.com", | |||
"rel": "self", | "rel": "self", | |||
"href": "https://example.com/rdap/domain/example2.com", | "href": "https://example.com/rdap/domain/example2.com", | |||
"type": "application/rdap+json" | "type": "application/rdap+json" | |||
} | } | |||
] | ] | |||
}, | }, | |||
... | ... | |||
] | ] | |||
} | } | |||
</artwork> | </sourcecode> | |||
</figure> | </figure> | |||
</section> | ||||
</section> | <section anchor="negative-answers"> | |||
<name>Negative Answers</name> | ||||
<section anchor="negative-answers" title="Negative Answers"> | <t>Each request including an empty or unsupported "fieldSet" value <bcp14> | |||
<t>Each request including an empty or unsupported "fieldSet" val | MUST</bcp14> produce an HTTP 400 (Bad Request) response code. Optionally, the r | |||
ue MUST produce an HTTP 400 (Bad Request) response code. Optionally, the respon | esponse <bcp14>MAY</bcp14> include additional information regarding the supporte | |||
se MAY include additional information regarding the supported field sets in the | d field sets in the HTTP entity body (<xref target="field-set-error"/>).</t> | |||
HTTP entity body (<xref target="field-set-error"/>).</t> | <figure anchor="field-set-error"> | |||
<name>Example of RDAP Error Response Due to an Invalid Field Set Include | ||||
<figure anchor="field-set-error" title="Example of RDAP error response due | d in the Request</name> | |||
to an invalid field set included in the request"> | ||||
<artwork xml:space="preserve"> | ||||
<sourcecode type="json"> | ||||
{ | { | |||
"errorCode": 400, | "errorCode": 400, | |||
"title": "Field set 'unknownfieldset' is not valid", | "title": "Field set 'unknownfieldset' is not valid", | |||
"description": [ | "description": [ | |||
"Supported field sets are: 'afieldset', 'anotherfieldset'." | "Supported field sets are: 'afieldset', 'anotherfieldset'." | |||
] | ] | |||
} | } | |||
</artwork> | </sourcecode> | |||
</figure> | </figure> | |||
</section> | </section> | |||
<section anchor="IANA-considerations"> | ||||
<section anchor="IANA-considerations" title="IANA Considerations"> | <name>IANA Considerations</name> | |||
<t>IANA has registered the following value in the "RDAP Extensions" regist | ||||
<t>IANA is requested to register the following value in the RDAP Extensio | ry:</t> | |||
ns Registry:</t> | ||||
<t><list style="none"> | <dl spacing="compact"> | |||
<t>Extension identifier: subsetting</t> | ||||
<t>Registry operator: Any</t> | ||||
<t>Published specification: This document.</t> | ||||
<t>Contact: IETF <iesg@ietf.org></t> | ||||
<t>Intended usage: This extension describes best practice for partial resp | ||||
onse provisioning.</t> | ||||
</list></t> | ||||
</section> | <dt>Extension identifier: | |||
</dt> | ||||
<dd>subsetting | ||||
</dd> | ||||
<section anchor="impl-status" title="Implementation Status"> | <dt>Registry operator: | |||
<t>NOTE: Please remove this section and the reference to RFC 7942 prior to | </dt> | |||
publication as an RFC.</t> | <dd>Any | |||
</dd> | ||||
<t>This section records the status of known implementations of the protoco | <dt>Published specification: | |||
l defined by this specification at the time of posting of this Internet-Draft, a | </dt> | |||
nd is based on a proposal described in <xref target="RFC7942"/>. The descriptio | <dd>RFC 8982 | |||
n of implementations in this section is intended to assist the IETF in its decis | </dd> | |||
ion processes in progressing drafts to RFCs. Please note that the listing of an | ||||
y individual implementation here does not imply endorsement by the IETF. Furthe | ||||
rmore, no effort has been spent to verify the information presented here that wa | ||||
s supplied by IETF contributors. This is not intended as, and must not be const | ||||
rued to be, a catalog of available implementations or their features. Readers a | ||||
re advised to note that other implementations may exist.</t> | ||||
<t>According to RFC 7942, "this will allow reviewers and working groups to | <dt>Contact: | |||
assign due consideration to documents that have the benefit of running code, wh | </dt> | |||
ich may serve as evidence of valuable experimentation and feedback that have mad | <dd>IETF <iesg@ietf.org> | |||
e the implemented protocols more mature. It is up to the individual working gro | </dd> | |||
ups to use this information as they see fit".</t> | ||||
<section anchor="iit-cnr-registro-it" title="IIT-CNR/Registro.it"> | <dt>Intended usage: | |||
<t><list style="none"> | </dt> | |||
<t>Responsible Organization: Institute of Informatics and Telematics of | <dd>This extension describes a best practice for partial response provisioning. | |||
the National Research Council (IIT-CNR)/Registro.it</t> | </dd> | |||
<t>Location: https://rdap.pubtest.nic.it/</t> | ||||
<t>Description: This implementation includes support for RDAP queries u | ||||
sing data from .it public test environment.</t> | ||||
<t>Level of Maturity: This is an "alpha" test implementation.</t> | ||||
<t>Coverage: This implementation includes all of the features described | ||||
in this specification.</t> | ||||
<t>Contact Information: Mario Loffredo, mario.loffredo@iit.cnr.it</t> | ||||
</list></t> | ||||
</section> | ||||
<section anchor="apnic" title="APNIC"> | </dl> | |||
<t><list style="none"> | ||||
<t>Responsible Organization: Asia-Pacific Network Information Centre</t | ||||
> | ||||
<t>Location: https://github.com/APNIC-net/rdap-rmp-demo/tree/partial-re | ||||
sponse</t> | ||||
<t>Description: A proof-of-concept for RDAP mirroring.</t> | ||||
<t>Level of Maturity: This is a proof-of-concept implementation.</t> | ||||
<t>Coverage: This implementation includes all of the features described | ||||
in this specification.</t> | ||||
<t>Contact Information: Tom Harrison, tomh@apnic.net</t> | ||||
</list></t> | ||||
</section> | ||||
</section> | </section> | |||
<section anchor="security-considerations" title="Security Considerations"> | <section anchor="security-considerations"> | |||
<t>A search query typically requires more server resources (such as memory | <name>Security Considerations</name> | |||
, CPU cycles, and network bandwidth) when compared to a lookup query. This incr | <t>A search query typically requires more server resources (such as memory | |||
eases the risk of server resource exhaustion and subsequent denial of service. | , CPU cycles, and network bandwidth) when compared to a lookup query. This incr | |||
This risk can be mitigated by supporting the return of partial responses combine | eases the risk of server resource exhaustion and subsequent denial of service. | |||
d with other strategies (e.g. restricting search functionality, limiting the rat | This risk can be mitigated by supporting the return of partial responses combine | |||
e of search requests, and truncating and paging results).</t> | d with other strategies (e.g., restricting search functionality, limiting the ra | |||
te of search requests, and truncating and paging results).</t> | ||||
<t>Support for partial responses gives RDAP operators the ability to imple ment data access control policies based on the HTTP authentication mechanisms de scribed in <xref target="RFC7481"/>. RDAP operators can vary the information re turned in RDAP responses based on a client's access and authorization levels. F or example:</t> | <t>Support for partial responses gives RDAP operators the ability to imple ment data access control policies based on the HTTP authentication mechanisms de scribed in <xref target="RFC7481"/>. RDAP operators can vary the information re turned in RDAP responses based on a client's access and authorization levels. F or example:</t> | |||
<ul> | ||||
<t><list style="symbols"> | <li> | |||
<t>the list of fields for each set can differ based on the client's acc | <t>the list of fields for each set can differ based on the client's ac | |||
ess and authorization levels;<vspace blankLines='1' /></t> | cess and authorization levels;</t> | |||
<t>the set of available field sets could be restricted based on the cli | <t/> | |||
ent's access and authorization levels.</t> | </li> | |||
</list></t> | <li>the set of available field sets could be restricted based on the cli | |||
ent's access and authorization levels.</li> | ||||
</ul> | ||||
<t>Servers can also define different result limits according to the availa ble field sets, so a more flexible truncation strategy can be implemented. The new query parameter presented in this document provides RDAP operators with a wa y to implement a server that reduces inefficiency risks.</t> | <t>Servers can also define different result limits according to the availa ble field sets, so a more flexible truncation strategy can be implemented. The new query parameter presented in this document provides RDAP operators with a wa y to implement a server that reduces inefficiency risks.</t> | |||
</section> | </section> | |||
</middle> | </middle> | |||
<back> | <back> | |||
<references title="Normative References"> | <references> | |||
&RFC2119; | <name>References</name> | |||
&RFC5890; | <references> | |||
&RFC7230; | <name>Normative References</name> | |||
&RFC7480; | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
&RFC7481; | FC.2119.xml"/> | |||
&RFC7482; | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
&RFC7483; | FC.5890.xml"/> | |||
&RFC7942; | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
&RFC8174; | FC.7230.xml"/> | |||
&RFC8288; | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
</references> | FC.7480.xml"/> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.7481.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.7482.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.7483.xml"/> | ||||
<references title="Informative References"> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
<reference anchor='CQL' target='https://github.com/gregwhitaker/catnap/wiki/ | FC.8174.xml"/> | |||
Catnap-Query-Language-Reference'> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
<front> | FC.8288.xml"/> | |||
<title>Catnap Query Language Reference</title> | </references> | |||
<author initials='G.' surname='Whitaker' fullname='Greg Whitaker' | <references> | |||
> | <name>Informative References</name> | |||
</author> | ||||
<date year='2017' month='September' /> | ||||
</front> | ||||
</reference> | ||||
<reference anchor='HATEOAS' target='https://www.e4developer.com/2018/02/16/h | ||||
ateoas-simple-explanation/'> | ||||
<front> | ||||
<title>HATEOAS - a simple explanation</title> | ||||
<author initials='B.' surname='Jedrzejewski' fullname='Bartosz Je | ||||
drzejewski'> | ||||
</author> | ||||
<date year='2018'/> | ||||
</front> | ||||
</reference> | ||||
<reference anchor='REST' target='http://www.ics.uci.edu/~fielding/pubs/disse | ||||
rtation/fielding_dissertation.pdf'> | ||||
<front> | ||||
<title>Architectural Styles and the Design of Network-based Softw | ||||
are Architectures</title> | ||||
<author initials='R.' surname='Fielding' fullname='Roy Thomas Fie | ||||
lding'> | ||||
<organization>PH.D. DISSERTATION, UNIVERSITY OF CALIFORNIA, IRVI | ||||
NE</organization> | ||||
</author> | ||||
<date year='2000'/> | ||||
</front> | ||||
</reference> | ||||
</references> | ||||
<section anchor="approaches-to-partial-response-implementation" title="Approa | <reference anchor="CQL" target="https://github.com/gregwhitaker/catnap/w | |||
ches to Partial Response Implementation"> | iki/Catnap-Query-Language-Reference"> | |||
<front> | ||||
<title>Catnap Query Language Reference</title> | ||||
<author initials="G." surname="Whitaker" fullname="Greg Whitaker"> | ||||
</author> | ||||
<date year="2017" month="September"/> | ||||
</front> | ||||
<refcontent>commit d4f402c</refcontent> | ||||
</reference> | ||||
<t>Looking at the implementation experiences of partial response offered b | <reference anchor="HATEOAS" target="https://www.e4developer.com/2018/02/ | |||
y data providers on the web, two approaches are observed:</t> | 16/hateoas-simple-explanation/"> | |||
<front> | ||||
<title>HATEOAS - a simple explanation</title> | ||||
<author initials="B." surname="Jedrzejewski" fullname="Bartosz Jedrz | ||||
ejewski"> | ||||
</author> | ||||
<date month="February" year="2018"/> | ||||
</front> | ||||
</reference> | ||||
<t><list style="symbols"> | <reference anchor="REST" target="https://www.ics.uci.edu/~fielding/pubs/ | |||
<t>the client explicitly describes the data fields to be returned;<vspa | dissertation/fielding_dissertation.pdf"> | |||
ce blankLines='1' /></t> | <front> | |||
<t>the client describes a name identifying a server-defined set of data | <title>Architectural Styles and the Design of Network-based Software | |||
fields.</t> | Architectures</title> | |||
</list></t> | <author initials="R." surname="Fielding" fullname="Roy Thomas Fieldi | |||
ng"> | ||||
</author> | ||||
<date year="2000"/> | ||||
</front> | ||||
<refcontent>Ph.D. Dissertation, University of California, Irvine</refco | ||||
ntent> | ||||
</reference> | ||||
</references> | ||||
</references> | ||||
<section anchor="approaches-to-partial-response-implementation"> | ||||
<name>Approaches to Partial Response Implementation</name> | ||||
<t>Looking at the implementation experiences of partial responses offered | ||||
by data providers on the web, two approaches are observed:</t> | ||||
<ul> | ||||
<li> | ||||
<t>the client explicitly describes the data fields to be returned;</t> | ||||
<t/> | ||||
</li> | ||||
<li>the client describes a name identifying a server-defined set of data | ||||
fields.</li> | ||||
</ul> | ||||
<t>The former is more flexible than the latter because clients can specify all the data fields they need. However, it has some drawbacks:</t> | <t>The former is more flexible than the latter because clients can specify all the data fields they need. However, it has some drawbacks:</t> | |||
<ul> | ||||
<li> | ||||
<t>Fields have to be declared according to a given syntax. This is | ||||
a simple task when the data structure of the object is flat, but it | ||||
is much more difficult when the object has a tree structure like | ||||
that of a JSON object. The presence of arrays and deep nested | ||||
objects complicate both the syntax definition of the query and, | ||||
consequently, the processing required on the server side.</t> | ||||
<t/> | ||||
</li> | ||||
<li> | ||||
<t>Clients need to recognize the returned data structure to avoid | ||||
cases when the requested fields are invalid.</t> | ||||
<t/> | ||||
</li> | ||||
<li>The request of some fields might not match the client's access and | ||||
authorization levels. Clients might request unauthorized fields, and | ||||
servers have to define a strategy for responding such as always | ||||
returning an error response or returning a response that ignores the | ||||
unauthorized fields.</li> | ||||
</ul> | ||||
<section anchor="specific-issues-in-rdap"> | ||||
<name>Specific Issues Raised by RDAP</name> | ||||
<t>In addition to those listed above, RDAP responses raise some specific | ||||
issues:</t> | ||||
<ul> | ||||
<li> | ||||
<t>Relevant entity object information is included in a jCard, but | ||||
such information cannot be easily selected because it is split | ||||
into the items of a jagged array.</t> | ||||
<t/> | ||||
</li> | ||||
<li>RDAP responses contain some properties providing service | ||||
information (e.g., rdapConformance, links, notices, remarks, etc.), | ||||
which are not normally selected but are just as important. | ||||
They could be returned anyway but, in this case, the server would | ||||
provide unrequested data.</li> | ||||
</ul> | ||||
<t>It is possible to address these issues. For example, the Catnap | ||||
Query Language <xref target="CQL"/> is a comprehensive expression | ||||
language that can be used to customize the JSON response of a RESTful | ||||
web service. Application of CQL to RDAP responses would explicitly | ||||
identify the output fields that would be acceptable when a few fields | ||||
are requested but it would become very complicated when processing a | ||||
larger number of fields. In the following, two CQL expressions for a | ||||
domain search query are shown (<xref target="cql-example"/>). In the | ||||
first, only objectClassName and ldhName are requested. In the second, | ||||
the fields of a possible WHOIS-like response are listed.</t> | ||||
<figure anchor="cql-example"> | ||||
<name>Examples of CQL Expressions for a Domain Search Query</name> | ||||
<t><list style="symbols"> | <sourcecode type="http-message"><![CDATA[ | |||
<t>fields have to be declared according to a given syntax. This is a s | ||||
imple task when the data structure of the object is flat, but it is much more di | ||||
fficult when the object has a tree structure like that of a JSON object. The pr | ||||
esence of arrays and deep nested objects complicate both the syntax definition o | ||||
f the query and, consequently, the processing required on the server side;<vspac | ||||
e blankLines='1' /></t> | ||||
<t>clients need to recognize the returned data structure to avoid cases | ||||
when the requested fields are invalid;<vspace blankLines='1' /></t> | ||||
<t>the request of some fields might not match the client's access and a | ||||
uthorization levels. Clients might request unauthorized fields and servers have | ||||
to define a strategy for responding, such as always returning an error response | ||||
or returning a response that ignores the unauthorized fields.</t> | ||||
</list></t> | ||||
<section anchor="specific-issues-in-rdap" title="Specific Issues Raised by RD | ||||
AP"> | ||||
<t>In addition to those listed above, RDAP responses raise some specific i | ||||
ssues:</t> | ||||
<t><list style="symbols"> | ||||
<t>relevant entity object information is included in a jCard, but such | ||||
information cannot be easily selected because it is split into the items of a ja | ||||
gged array;<vspace blankLines='1' /></t> | ||||
<t>RDAP responses contain some properties providing service information | ||||
(e.g. rdapConformance, links, notices, remarks, etc.) which are not normally se | ||||
lected but they are just as important. They could be returned anyway but, in th | ||||
is case, the server would provide unrequested data.</t> | ||||
</list></t> | ||||
<t>It is possible to address these issues. For example, the Catnap Quer | ||||
y Language <xref target="CQL"/> is a comprehensive expression language that can | ||||
be used to customize the JSON response of a RESTful web service. Application of | ||||
CQL to RDAP responses would explicitly identify the output fields that would be | ||||
acceptable when a few fields are requested but it would become very complicated | ||||
when processing a larger number of fields. In the following, two CQL expressio | ||||
ns for a domain search query are shown (<xref target="cql-example"/>). In the f | ||||
irst, only objectClassName and ldhName are requested. In the second, the fields | ||||
of a possible WHOIS-like response are listed.</t> | ||||
<figure anchor="cql-example" title="Examples of CQL expressions for a doma | ||||
in search query"> | ||||
<artwork xml:space="preserve"><![CDATA[ | ||||
https://example.com/rdap/domains?name=example*.com | https://example.com/rdap/domains?name=example*.com | |||
&fields=domainSearchResults(objectClassName,ldhName) | &fields=domainSearchResults(objectClassName,ldhName) | |||
https://example.com/rdap/domains?name=example*.com | https://example.com/rdap/domains?name=example*.com | |||
&fields=domainSearchResults(objectClassName,ldhName, | &fields=domainSearchResults(objectClassName,ldhName, | |||
unicodeName, | unicodeName, | |||
status, | status, | |||
events(eventAction,eventDate), | events(eventAction,eventDate), | |||
entities(objectClassName,handle,roles), | entities(objectClassName,handle,roles), | |||
nameservers(objectClassName,ldhName)) | nameservers(objectClassName,ldhName)) | |||
]]></artwork> | ]]> | |||
</figure> | </sourcecode> | |||
</figure> | ||||
<t>The field set approach seems to facilitate RDAP interoperability. Se | <t>The field set approach seems to facilitate RDAP interoperability. | |||
rvers can define basic field sets which, if known to clients, can increase the p | Servers can define basic field sets that, if known to clients, can | |||
robability of obtaining a valid response. The usage of field sets makes the que | increase the probability of obtaining a valid response. The usage of | |||
ry string be less complex. Moreover, the definition of pre-defined sets of fiel | field sets makes the query string less complex. Moreover, the | |||
ds makes it easier to establish result limits.</t> | definition of predefined sets of fields makes it easier to establish | |||
<t>Finally, considering that there is no real need for RDAP users to hav | result limits.</t> | |||
e the maximum flexibility in defining all the possible sets of logically connect | <t>Finally, considering that there is no real need for RDAP users to | |||
ed fields (e.g. users interested in domains usually need to know the status, the | have the maximum flexibility in defining all the possible sets of | |||
creation date, and the expiry date of each domain), the field set approach is p | logically connected fields (e.g., users interested in domains usually | |||
referred.</t> | need to know the status, the creation date, and the expiry date of | |||
each domain), the field set approach is preferred.</t> | ||||
</section> | ||||
</section> | </section> | |||
<section title="Acknowledgements" numbered="no"> | ||||
<t>The authors would like to acknowledge Scott Hollenbeck, Tom Harrison, K | ||||
arl Heinz Wolf, Jasdip Singh, Patrick Mevzek, Benjamin Kaduk, Roman Danyliw, Mur | ||||
ray Kucherawy, Erik Kline and Robert Wilton for their contribution to this docum | ||||
ent.</t> | ||||
</section> | </section> | |||
<section numbered="false"> | ||||
<section title="Change Log" numbered="no"> | <name>Acknowledgements</name> | |||
<t> | <t>The authors would like to acknowledge <contact fullname="Scott Hollenbe | |||
<list style="hanging"> | ck"/>, <contact fullname="Tom Harrison"/>, <contact fullname="Karl Heinz Wolf"/> | |||
<t hangText="00:">Initial working group version ported from draft-loff | , <contact fullname="Jasdip Singh"/>, <contact fullname="Patrick Mevzek"/>, <con | |||
redo-regext-rdap-partial-response-03</t> | tact fullname="Benjamin Kaduk"/>, <contact fullname="Roman Danyliw"/>, <contact | |||
<t hangText="01:">Removed "FOR DISCUSSION" items. Changed t | fullname="Murray Kucherawy"/>, <contact fullname="Erik Kline"/>, and <contact fu | |||
he basic field sets from REQUIRED to OPTIONAL. Removed the definition of fields | llname="Robert Wilton"/> for their contribution to this document.</t> | |||
included in "brief" field set. Provided a more detailed description | ||||
of "subsetting_metadata" structure. Removed some references.</t> | ||||
<t hangText="02:">Added the "Negative Answers" section. Cha | ||||
nged "IANA Considerations" section.</t> | ||||
<t hangText="03:">Added the "unicodeName" field in the id fi | ||||
eldSet when a returned domain or nameserver is an IDN. Added RFC5890 to "N | ||||
ormative References" section.</t> | ||||
<t hangText="04:">Recommended the RDAP providers to include a "se | ||||
lf" link in any field set other than "full". Updated "Ackno | ||||
wledgements" section.</t> | ||||
<t hangText="05:">Moved "Approaches to Partial Response Implement | ||||
ation" section to the appendix.</t> | ||||
<t hangText="06:">Clarified the use of self links in "Basic Field | ||||
Sets" section. Added APNIC to the implementations of the "Implementa | ||||
tion Status" section.</t> | ||||
<t hangText="07:">Changed "only a subset is returned" to &qu | ||||
ot;only a subset of fields in each result object is returned" in the " | ||||
Introduction" section. Moved the "RDAP Conformance" section up i | ||||
n the document. Updated the "Acknowledgements" section.</t> | ||||
<t hangText="08:">Changed the rdapConformance tag "subsetting_lev | ||||
el_0" to "subsetting". Moved <xref target="RFC7942"/> to the &qu | ||||
ot;Normative References".</t> | ||||
<t hangText="09:">Corrected the "rdapConformance" con | ||||
tent in <xref target="fieldSet-id-response-example"/>.</t> | ||||
<t hangText="10:">Corrected the JSON content in <xref target="s | ||||
ubset-link-in-response-example"/>. Clarified the meaning of both context and ta | ||||
rget URIs in a result subset link defined in <xref target="subsetting_links"/>. | ||||
Updated the "Acknowledgements" section.</t> | ||||
<t hangText="11:">Minor pre-AD review edits.</t> | ||||
<t hangText="12:">Additional minor pre-AD review edits.</t> | ||||
<t hangText="13:">Edits due to Gen-ART review: in the first paragrap | ||||
h of <xref target="rdap-path-segment-specification"/> clarified how field sets a | ||||
re defined by a server, in the first sentence of <xref target="negative-answers" | ||||
/> replaced SHOULD with MUST. Other minor edits due to AD review.</t> | ||||
<t hangText="14:">Edits due to IESG review: | ||||
<list style="symbols"> | ||||
<t>replaced "fewer data transferred" with "less data trans | ||||
ferred" in the "Introduction" section;</t> | ||||
<t>in the "Subsetting Metadata" section: | ||||
<list style="symbols"> | ||||
<t>replaced the phrase "collected in a new data structure" w | ||||
ith the phrase "collected in a new JSON data structure";</t> | ||||
<t>replaced "Members are:" with "The AvailableFieldSet | ||||
object includes the following members:";</t> | ||||
<t>clarified that an RDAP server MUST define only one default field se | ||||
t;</t> | ||||
</list> | ||||
</t> | ||||
<t>clarified the required members of a Link object in the "Represent | ||||
ing Subsetting Links" section;</t> | ||||
<t>rewritten the "Dealing with Relationships" section;</t> | ||||
<t>in the "Basic Field Sets" section: | ||||
<list style="symbols"> | ||||
<t>replaced the phrase "include a 'self' link in each field set& | ||||
quot; with the phrase "include a 'links' field indicating the 'self' link r | ||||
elationship";</t> | ||||
<t>replaced the phrase "'unicodeName' field MUST be included&quo | ||||
t; with the phrase "'unicodeName' field MUST additionally be included" | ||||
;</t> | ||||
</list> | ||||
</t> | ||||
<t>in the "Negative Answers" section: | ||||
<list style="symbols"> | ||||
<t>replaced the phrase "the response MAY include additional info | ||||
rmation regarding the negative answer" with the phrase "the response M | ||||
AY include additional information regarding the supported field sets";</t> | ||||
<t>added a new example;</t> | ||||
</list> | ||||
</t> | ||||
<t>replaced the phrase "and subsequent denial of service due to a | ||||
buse" with the phrase "and subsequent denial of service" in " | ||||
;Security Considerations" section;</t> | ||||
<t>corrected the [REST] reference in the "Informative References&quo | ||||
t; section;</t> | ||||
<t>in "Appendix A": | ||||
<list style="symbols"> | ||||
<t>added the phrase " offered by data providers on the web" | ||||
; after the phrase "Looking at the implementation experiences of partial re | ||||
sponse";</t> | ||||
<t>replaced the phrase "servers should define a strategy" | ||||
with the phrase "servers have to define a strategy";</t> | ||||
<t>replaced the term "latter approach" with the term " | ||||
;field set approach" in the "Appendix A.1" section;</t> | ||||
</list> | ||||
</t> | ||||
<t>updated the "Acknowledgements" section.</t> | ||||
</list></t> | ||||
<t hangText="15:">Minor edit in the "Appendix A.1" section | ||||
;</t> | ||||
<t hangText="16:">Changed a figure containing only an RDAP query int | ||||
o text. Made the RDAP queries uniform. Other minor edits.</t> | ||||
</list> | ||||
</t> | ||||
</section> | </section> | |||
</back> | </back> | |||
</rfc> | </rfc> | |||
End of changes. 59 change blocks. | ||||
497 lines changed or deleted | 397 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |