| 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/ | ||||