draft-ietf-regext-rdap-sorting-and-paging-11.txt | draft-ietf-regext-rdap-sorting-and-paging-12.txt | |||
---|---|---|---|---|
Registration Protocols Extensions M. Loffredo | Registration Protocols Extensions M. Loffredo | |||
Internet-Draft M. Martinelli | Internet-Draft M. Martinelli | |||
Intended status: Standards Track IIT-CNR/Registro.it | Intended status: Standards Track IIT-CNR/Registro.it | |||
Expires: October 18, 2020 S. Hollenbeck | Expires: October 19, 2020 S. Hollenbeck | |||
Verisign Labs | Verisign Labs | |||
April 16, 2020 | April 17, 2020 | |||
Registration Data Access Protocol (RDAP) Query Parameters for Result | Registration Data Access Protocol (RDAP) Query Parameters for Result | |||
Sorting and Paging | Sorting and Paging | |||
draft-ietf-regext-rdap-sorting-and-paging-11 | draft-ietf-regext-rdap-sorting-and-paging-12 | |||
Abstract | Abstract | |||
The Registration Data Access Protocol (RDAP) does not include core | The Registration Data Access Protocol (RDAP) does not include core | |||
functionality for clients to provide sorting and paging parameters | functionality for clients to provide sorting and paging parameters | |||
for control of large result sets. This omission can lead to | for control of large result sets. This omission can lead to | |||
unpredictable server processing of queries and client processing of | unpredictable server processing of queries and client processing of | |||
responses. This unpredictability can be greatly reduced if clients | responses. This unpredictability can be greatly reduced if clients | |||
can provide servers with their preferences for managing large | can provide servers with their preferences for managing large | |||
responses. This document describes RDAP query extensions that allow | responses. This document describes RDAP query extensions that allow | |||
skipping to change at page 1, line 41 ¶ | skipping to change at page 1, line 41 ¶ | |||
Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
Drafts is at https://datatracker.ietf.org/drafts/current/. | Drafts is at https://datatracker.ietf.org/drafts/current/. | |||
Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
This Internet-Draft will expire on October 18, 2020. | This Internet-Draft will expire on October 19, 2020. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2020 IETF Trust and the persons identified as the | Copyright (c) 2020 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
(https://trustee.ietf.org/license-info) in effect on the date of | (https://trustee.ietf.org/license-info) in effect on the date of | |||
publication of this document. Please review these documents | publication of this document. Please review these documents | |||
skipping to change at page 22, line 25 ¶ | skipping to change at page 22, line 25 ¶ | |||
given element. The root element is always referred to as $ | given element. The root element is always referred to as $ | |||
regardless if it is an object or array. | regardless if it is an object or array. | |||
Additionally, the specification permits implementations to support | Additionally, the specification permits implementations to support | |||
arbitrary script expressions: these can be used to index into an | arbitrary script expressions: these can be used to index into an | |||
object or an array, or to filter elements from an array. While | object or an array, or to filter elements from an array. While | |||
script expression behaviour is implementation-defined, most | script expression behaviour is implementation-defined, most | |||
implementations support the basic relational and logical operators, | implementations support the basic relational and logical operators, | |||
as well as both object member and array item access, sufficiently | as well as both object member and array item access, sufficiently | |||
similarly for the purposes of this document. Commonly-supported | similarly for the purposes of this document. Commonly-supported | |||
operators/functions are documented in Table 3. | operators/functions divided into "top-level operators" and "filter | |||
operators" are documented in Table 3 and Table 4 respectively. | ||||
+-------------------+-----------------------------------------------+ | +-------------------+-----------------------------------------+ | |||
| Operator | Descritpion | | | Operator | Descritpion | | |||
+-------------------+-----------------------------------------------+ | +-------------------+-----------------------------------------+ | |||
| $ | Root element | | | $ | Root element | | |||
| .<name> | Object member access | | | .<name> | Object member access (dot-notation) | | |||
| [<number>] | Array item access | | | ['<name>'] | Object member access (bracket-notation) | | |||
| * | All elements within the specified scope | | | [<number>] | Array item access | | |||
| [?(<expression>)] | Filter expression | | | * | All elements within the specified scope | | |||
| @ | The current element being processed by a | | | [?(<expression>)] | Filter expression | | |||
| | filter predicate | | +-------------------+-----------------------------------------+ | |||
| == | Left is equal to right | | ||||
| != | Left is not equal to right | | ||||
| < | Left is less than right | | ||||
| <= | Left is less than or equal to right | | ||||
| > | Left is greater than right | | ||||
| >= | Left is greater than or equal to right | | ||||
| && | Logical conjunction | | ||||
| || | Logical disjunction | | ||||
+-------------------+-----------------------------------------------+ | ||||
Table 3: JSONPath Operators | Table 3: JSONPath Top-Level Operators | |||
+------------+----------------------------------------+ | ||||
| Operator | Descritpion | | ||||
+------------+----------------------------------------+ | ||||
| @ | Current element being processed | | ||||
| .<name> | Object member access | | ||||
| [<number>] | Array item access | | ||||
| == | Left is equal to right | | ||||
| != | Left is not equal to right | | ||||
| < | Left is less than right | | ||||
| <= | Left is less than or equal to right | | ||||
| > | Left is greater than right | | ||||
| >= | Left is greater than or equal to right | | ||||
| && | Logical conjunction | | ||||
| || | Logical disjunction | | ||||
+------------+----------------------------------------+ | ||||
Table 4: JSONPath Filter Operators | ||||
Appendix B. Approaches to Result Pagination | Appendix B. Approaches to Result Pagination | |||
An RDAP query could return a response with hundreds, even thousands, | An RDAP query could return a response with hundreds, even thousands, | |||
of objects, especially when partial matching is used. For that | of objects, especially when partial matching is used. For that | |||
reason, the cursor parameter addressing result pagination is defined | reason, the cursor parameter addressing result pagination is defined | |||
to make responses easier to handle. | to make responses easier to handle. | |||
Presently, the most popular methods to implement pagination in REST | Presently, the most popular methods to implement pagination in REST | |||
API are: offset pagination and keyset pagination. Both two | API are: offset pagination and keyset pagination. Both two | |||
skipping to change at page 26, line 4 ¶ | skipping to change at page 26, line 22 ¶ | |||
document. Removed the "Paging Responses to POST Requests" | document. Removed the "Paging Responses to POST Requests" | |||
section. Updated the "Acknowledgements" section. Removed unused | section. Updated the "Acknowledgements" section. Removed unused | |||
references. In the "Sorting Properties Declaration" section: | references. In the "Sorting Properties Declaration" section: | |||
* clarified the logic of sorting on events; | * clarified the logic of sorting on events; | |||
* corrected the JSONPath of the "lastChanged" sorting property; | * corrected the JSONPath of the "lastChanged" sorting property; | |||
* provided a JSONPath example taking into account the vCard | * provided a JSONPath example taking into account the vCard | |||
"pref" parameter. | "pref" parameter. | |||
10: Corrected the JSONPaths of both "fn" and "org" sorting | 10: Corrected the JSONPaths of both "fn" and "org" sorting | |||
properties in Table 2. Corrected JSON content in Figure 4. Moved | properties in Table 2. Corrected JSON content in Figure 4. Moved | |||
[W3C.CR-xpath-31-20161213] and [RFC7942] to the "Normative | [W3C.CR-xpath-31-20161213] and [RFC7942] to the "Normative | |||
References". Changed the rdapConformance tags "sorting_level_0" | References". Changed the rdapConformance tags "sorting_level_0" | |||
and "paging_level_0" to "sorting" and "paging" respectively. | and "paging_level_0" to "sorting" and "paging" respectively. | |||
11: Added the "JSONPath operators" section to appendix. | 11: Added the "JSONPath operators" section to appendix. | |||
12: Changed the content of "JSONPath operators" section. | ||||
Authors' Addresses | Authors' Addresses | |||
Mario Loffredo | Mario Loffredo | |||
IIT-CNR/Registro.it | IIT-CNR/Registro.it | |||
Via Moruzzi,1 | Via Moruzzi,1 | |||
Pisa 56124 | Pisa 56124 | |||
IT | IT | |||
Email: mario.loffredo@iit.cnr.it | Email: mario.loffredo@iit.cnr.it | |||
End of changes. 9 change blocks. | ||||
26 lines changed or deleted | 36 lines changed or added | |||
This html diff was produced by rfcdiff 1.47. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |