| rfc9910v1.txt | rfc9910.txt | |||
|---|---|---|---|---|
| Internet Engineering Task Force (IETF) T. Harrison | Internet Engineering Task Force (IETF) T. Harrison | |||
| Request for Comments: 9910 APNIC | Request for Comments: 9910 APNIC | |||
| Category: Standards Track J. Singh | Category: Standards Track J. Singh | |||
| ISSN: 2070-1721 ARIN | ISSN: 2070-1721 ARIN | |||
| December 2025 | January 2026 | |||
| Registration Data Access Protocol (RDAP) Regional Internet Registry | Registration Data Access Protocol (RDAP) Regional Internet Registry | |||
| (RIR) Search | (RIR) Search | |||
| Abstract | Abstract | |||
| The Registration Data Access Protocol (RDAP) is used by Regional | The Registration Data Access Protocol (RDAP) is used by Regional | |||
| Internet Registries (RIRs) and Domain Name Registries (DNRs) to | Internet Registries (RIRs) and Domain Name Registries (DNRs) to | |||
| provide access to their resource registration information. The core | provide access to their resource registration information. The core | |||
| specifications for RDAP define basic search functionality, but there | specifications for RDAP define basic search functionality, but there | |||
| skipping to change at line 39 ¶ | skipping to change at line 39 ¶ | |||
| received public review and has been approved for publication by the | received public review and has been approved for publication by the | |||
| Internet Engineering Steering Group (IESG). Further information on | Internet Engineering Steering Group (IESG). Further information on | |||
| Internet Standards is available in Section 2 of RFC 7841. | Internet Standards is available in Section 2 of RFC 7841. | |||
| Information about the current status of this document, any errata, | Information about the current status of this document, any errata, | |||
| and how to provide feedback on it may be obtained at | and how to provide feedback on it may be obtained at | |||
| https://www.rfc-editor.org/info/rfc9910. | https://www.rfc-editor.org/info/rfc9910. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2025 IETF Trust and the persons identified as the | Copyright (c) 2026 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 | |||
| carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
| to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
| include Revised BSD License text as described in Section 4.e of the | include Revised BSD License text as described in Section 4.e of the | |||
| Trust Legal Provisions and are provided without warranty as described | Trust Legal Provisions and are provided without warranty as described | |||
| skipping to change at line 132 ¶ | skipping to change at line 132 ¶ | |||
| 1.1. Conventions Used in This Document | 1.1. Conventions Used in This Document | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
| "OPTIONAL" in this document are to be interpreted as described in | "OPTIONAL" in this document are to be interpreted as described in | |||
| BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | |||
| capitals, as shown here. | capitals, as shown here. | |||
| Indentation and whitespace in examples are provided only to | Indentation and whitespace in examples are provided only to | |||
| illustrate element relationships, and they are not a required feature | illustrate element relationships and are not required features of | |||
| of this protocol. | this specification. | |||
| "..." in examples is used as shorthand for elements defined outside | "..." in examples is used as shorthand for elements defined outside | |||
| of this document, as well as to abbreviate elements that are too | of this document, as well as to abbreviate elements that are too | |||
| long. | long. | |||
| 2. Basic Searches | 2. Basic Searches | |||
| 2.1. Path Segments | 2.1. Path Segments | |||
| The new resource type path segments for basic search (similar to the | The new resource type path segments for basic search (similar to the | |||
| skipping to change at line 334 ¶ | skipping to change at line 334 ¶ | |||
| +--------------+ +----------------+ +----------------+ | +--------------+ +----------------+ +----------------+ | |||
| | 192.0.2.0/28 | | 192.0.2.128/26 | | 192.0.2.192/26 | | | 192.0.2.0/28 | | 192.0.2.128/26 | | 192.0.2.192/26 | | |||
| +--------------+ +----------------+ +----------------+ | +--------------+ +----------------+ +----------------+ | |||
| / | / | |||
| +--------------+ | +--------------+ | |||
| | 192.0.2.0/32 | | | 192.0.2.0/32 | | |||
| +--------------+ | +--------------+ | |||
| Figure 1: Example Registry Objects | Figure 1: Example Registry Objects | |||
| The relationships of INR object value to parent object (as well as to | For this example registry, the INR object value to parent/child | |||
| child objects) are: | object relationships are: | |||
| +==================+================+ | +==================+================+ | |||
| | INR object value | Parent object | | | INR object value | Parent object | | |||
| +==================+================+ | +==================+================+ | |||
| | 192.0.2.0/32 | 192.0.2.0/28 | | | 192.0.2.0/32 | 192.0.2.0/28 | | |||
| +------------------+----------------+ | +------------------+----------------+ | |||
| | 192.0.2.0/28 | 192.0.2.0/25 | | | 192.0.2.0/28 | 192.0.2.0/25 | | |||
| +------------------+----------------+ | +------------------+----------------+ | |||
| | 192.0.2.64/26 | 192.0.2.0/25 | | | 192.0.2.64/26 | 192.0.2.0/25 | | |||
| +------------------+----------------+ | +------------------+----------------+ | |||
| skipping to change at line 357 ¶ | skipping to change at line 357 ¶ | |||
| +------------------+----------------+ | +------------------+----------------+ | |||
| | 192.0.2.192/26 | 192.0.2.128/25 | | | 192.0.2.192/26 | 192.0.2.128/25 | | |||
| +------------------+----------------+ | +------------------+----------------+ | |||
| | 192.0.2.0/25 | 192.0.2.0/24 | | | 192.0.2.0/25 | 192.0.2.0/24 | | |||
| +------------------+----------------+ | +------------------+----------------+ | |||
| | 192.0.2.128/25 | 192.0.2.0/24 | | | 192.0.2.128/25 | 192.0.2.0/24 | | |||
| +------------------+----------------+ | +------------------+----------------+ | |||
| | 192.0.2.0/24 | N/A | | | 192.0.2.0/24 | N/A | | |||
| +------------------+----------------+ | +------------------+----------------+ | |||
| Table 1: Parent objects | Table 1: Parent Objects | |||
| +==================+================================+ | +==================+================================+ | |||
| | INR object value | Child objects | | | INR object value | Child objects | | |||
| +==================+================================+ | +==================+================================+ | |||
| | 192.0.2.0/24 | 192.0.2.0/25, 192.0.2.128/25 | | | 192.0.2.0/24 | 192.0.2.0/25, 192.0.2.128/25 | | |||
| +------------------+--------------------------------+ | +------------------+--------------------------------+ | |||
| | 192.0.2.0/25 | 192.0.2.0/28 | | | 192.0.2.0/25 | 192.0.2.0/28 | | |||
| +------------------+--------------------------------+ | +------------------+--------------------------------+ | |||
| | 192.0.2.128/25 | 192.0.2.128/26, 192.0.2.192/26 | | | 192.0.2.128/25 | 192.0.2.128/26, 192.0.2.192/26 | | |||
| +------------------+--------------------------------+ | +------------------+--------------------------------+ | |||
| skipping to change at line 379 ¶ | skipping to change at line 379 ¶ | |||
| +------------------+--------------------------------+ | +------------------+--------------------------------+ | |||
| | 192.0.2.128/26 | N/A | | | 192.0.2.128/26 | N/A | | |||
| +------------------+--------------------------------+ | +------------------+--------------------------------+ | |||
| | 192.0.2.192/26 | N/A | | | 192.0.2.192/26 | N/A | | |||
| +------------------+--------------------------------+ | +------------------+--------------------------------+ | |||
| | 192.0.2.0/28 | 192.0.2.0/32 | | | 192.0.2.0/28 | 192.0.2.0/32 | | |||
| +------------------+--------------------------------+ | +------------------+--------------------------------+ | |||
| | 192.0.2.0/32 | N/A | | | 192.0.2.0/32 | N/A | | |||
| +------------------+--------------------------------+ | +------------------+--------------------------------+ | |||
| Table 2: Child objects | Table 2: Child Objects | |||
| (INR object values do not necessarily correspond to registry objects, | (INR object values do not necessarily correspond to registry objects, | |||
| because users can provide arbitrary object values as input to the | because users can provide arbitrary object values as input to the | |||
| searches defined in this document.) | searches defined in this document.) | |||
| Similarly to the parent/child object relationships, each INR object | Similarly to the parent/child object relationships, each INR object | |||
| value may have a "top" object, being the least-specific covering | value may have a "top" object, being the least-specific covering | |||
| object that exists in the registry, and one or more "bottom" objects, | object that exists in the registry, and one or more "bottom" objects, | |||
| being the most-specific objects that entirely cover the INR object | being the most-specific objects that entirely cover the INR object | |||
| value when taken together. Given the registry defined above, the top | value when taken together. Given the registry defined above, the top | |||
| skipping to change at line 470 ¶ | skipping to change at line 470 ¶ | |||
| 3.2.2. Relations | 3.2.2. Relations | |||
| 3.2.2.1. Single-Result Searches | 3.2.2.1. Single-Result Searches | |||
| 3.2.2.1.1. "rdap-up" | 3.2.2.1.1. "rdap-up" | |||
| If the server receives a search containing the relation value "rdap- | If the server receives a search containing the relation value "rdap- | |||
| up", it will return the parent object for the specified INR object | up", it will return the parent object for the specified INR object | |||
| value as though that object had been requested directly. If no such | value as though that object had been requested directly. If no such | |||
| object exists, it will respond with an HTTP 404 (Not Found) [RFC9110] | object exists, it will respond with an HTTP 404 (Not Found) [RFC9110] | |||
| search response. | status code. | |||
| 3.2.2.1.2. "rdap-top" | 3.2.2.1.2. "rdap-top" | |||
| If the server receives a search containing the relation value "rdap- | If the server receives a search containing the relation value "rdap- | |||
| top", it will return the top object for the specified INR object | top", it will return the top object for the specified INR object | |||
| value as though that object had been requested directly. If no such | value as though that object had been requested directly. If no such | |||
| object exists, it will respond with an HTTP 404 (Not Found) [RFC9110] | object exists, it will respond with an HTTP 404 (Not Found) [RFC9110] | |||
| search response. | status code. | |||
| 3.2.2.2. Multiple-Result Searches | 3.2.2.2. Multiple-Result Searches | |||
| 3.2.2.2.1. "rdap-down" | 3.2.2.2.1. "rdap-down" | |||
| If the server receives a search containing the relation value "rdap- | If the server receives a search containing the relation value "rdap- | |||
| down", it will return the child objects for the specified INR object | down", it will return the child objects for the specified INR object | |||
| value. If no such objects exist, it will return an empty search | value. If no such objects exist, it will return an empty search | |||
| response. Per the definitions section, this includes only immediate | response. Per the definitions section, this includes only immediate | |||
| child objects. | child objects. | |||
| skipping to change at line 673 ¶ | skipping to change at line 673 ¶ | |||
| { | { | |||
| "startAddress": "2001:db8:a::", | "startAddress": "2001:db8:a::", | |||
| "endAddress": "2001:db8:a:ffff:ffff:ffff:ffff:ffff", | "endAddress": "2001:db8:a:ffff:ffff:ffff:ffff:ffff", | |||
| ... | ... | |||
| "links": [ | "links": [ | |||
| ..., | ..., | |||
| { | { | |||
| "value": "https://example.com/rdap/ip/2001:db8:a::/48", | "value": "https://example.com/rdap/ip/2001:db8:a::/48", | |||
| "rel": "rdap-up rdap-active", | "rel": "rdap-up rdap-active", | |||
| "href": | "href": | |||
| ".../rdap/ips/rirSearch1/rdap-up/2001:db8:a::/48?status=active", | ".../rdap/ips/rirSearch1/rdap-up/2001:db8:a::/48?status=active", | |||
| "type": "application/rdap+json" | "type": "application/rdap+json" | |||
| }, | }, | |||
| { | { | |||
| "value": "https://example.com/rdap/ip/2001:db8:a::/48", | "value": "https://example.com/rdap/ip/2001:db8:a::/48", | |||
| "rel": "rdap-top rdap-active", | "rel": "rdap-top rdap-active", | |||
| "href": | "href": | |||
| ".../rdap/ips/rirSearch1/rdap-top/2001:db8:a::/48?status=active", | ".../rdap/ips/rirSearch1/rdap-top/2001:db8:a::/48?status=active", | |||
| "type": "application/rdap+json" | "type": "application/rdap+json" | |||
| } | } | |||
| ] | ] | |||
| } | } | |||
| Figure 5: Example Status Links in an IPv6 Response | Figure 5: Example Status Links in an IPv6 Response | |||
| "rdap-active" is used only as a link relation in a link object. It | "rdap-active" is used only as a link relation in a link object. It | |||
| cannot be used as a value for <relation> in the relation search URL | cannot be used as a value for <relation> in the relation search URL | |||
| defined in Section 3.2. Section 3.3 details status filtering for | defined in Section 3.2. Section 3.3 details status filtering for | |||
| skipping to change at line 734 ¶ | skipping to change at line 734 ¶ | |||
| ..., | ..., | |||
| { | { | |||
| "value": "https://example.com/rdap/ip/2001:db8:a::/48", | "value": "https://example.com/rdap/ip/2001:db8:a::/48", | |||
| "rel": "rdap-up", | "rel": "rdap-up", | |||
| "href": "https://example.com/rdap/ip/2001:db8::/32", | "href": "https://example.com/rdap/ip/2001:db8::/32", | |||
| "type": "application/rdap+json" | "type": "application/rdap+json" | |||
| } | } | |||
| ] | ] | |||
| } | } | |||
| Figure 7: Example single-result links in an IPv6 response | Figure 7: Example Single-Result Links in an IPv6 Response | |||
| Use of these link relations in responses is OPTIONAL. The absence in | Use of these link relations in responses is OPTIONAL. The absence in | |||
| a response of a link for a specific relation does not necessarily | a response of a link for a specific relation does not necessarily | |||
| mean that the corresponding search will return no results. | mean that the corresponding search will return no results. | |||
| 4. Responding to Searches | 4. Responding to Searches | |||
| 4.1. Single-Result Searches | 4.1. Single-Result Searches | |||
| The "rdap-up" and "rdap-top" relations are single-result searches. | The "rdap-up" and "rdap-top" relations are single-result searches. | |||
| skipping to change at line 947 ¶ | skipping to change at line 947 ¶ | |||
| the remaining identifiers defined by this document, partly because | the remaining identifiers defined by this document, partly because | |||
| such a suffix would reduce consistency with the corresponding | such a suffix would reduce consistency with the corresponding | |||
| functionality for the other core object classes, and partly because | functionality for the other core object classes, and partly because | |||
| it is very unlikely that the functionality associated with those | it is very unlikely that the functionality associated with those | |||
| identifiers will change. | identifiers will change. | |||
| 7. Operational Considerations | 7. Operational Considerations | |||
| When using a link object for a single-result search, a server may | When using a link object for a single-result search, a server may | |||
| replace a search URL with a lookup URL, because the behaviour of the | replace a search URL with a lookup URL, because the behaviour of the | |||
| lookup URL is the same as for the search URL as at the time when the | lookup URL is the same as that of the search URL at the time the | |||
| response is generated. One difference between these approaches is | response is generated. One difference between these approaches is | |||
| that when using the lookup URL, the server is effectively performing | that when using the lookup URL, the server is effectively performing | |||
| the search on behalf of the client as at the time of response | the search on behalf of the client as at the time of response | |||
| generation. If there is no change to the relevant database state | generation. If there is no change to the relevant database state | |||
| between the time when the original response is generated and the time | between the time when the original response is generated and the time | |||
| when the client resolves the link relation target, then the search | when the client resolves the link relation target, then the search | |||
| URL and the lookup URL will lead to the same result. However, if | URL and the lookup URL will lead to the same result. However, if | |||
| there is a change to the relevant database state, then the lookup URL | there is a change to the relevant database state, then the lookup URL | |||
| may lead to a different result from that of the search URL. Server | may lead to a different result from that of the search URL. Server | |||
| operators should consider which type of URL will be more effective | operators should consider which type of URL will be more effective | |||
| skipping to change at line 1085 ¶ | skipping to change at line 1085 ¶ | |||
| 10.2.5. rdap-active | 10.2.5. rdap-active | |||
| Relation Name: rdap-active | Relation Name: rdap-active | |||
| Description: The target is for an RDAP RIR search that filters for | Description: The target is for an RDAP RIR search that filters for | |||
| the status "active". | the status "active". | |||
| Reference: RFC 9910 | Reference: RFC 9910 | |||
| 10.3. RDAP Reverse Search Registry | 10.3. RDAP Reverse Search Registry | |||
| IANA has registered the following entries in the "RDAP Reverse | IANA has registered the following entries in the "RDAP Reverse | |||
| Search" <https://www.iana.org/assignments/rdap-reverse-search/> | Search" registry <https://www.iana.org/assignments/rdap-reverse- | |||
| registry. | search/>. | |||
| 10.3.1. fn | 10.3.1. fn | |||
| Property: fn | Property: fn | |||
| Description: The server supports the IP/autnum search based on the | Description: The server supports the IP/autnum search based on the | |||
| full name (a.k.a. formatted name) of an associated entity. | full name (a.k.a. formatted name) of an associated entity. | |||
| Searchable Resource Type: ips, autnums | Searchable Resource Type: ips, autnums | |||
| Related Resource Type: entity | Related Resource Type: entity | |||
| Registrant: IETF | Registrant: IETF | |||
| Contact Information: iesg@ietf.org | Contact Information: iesg@ietf.org | |||
| skipping to change at line 1135 ¶ | skipping to change at line 1135 ¶ | |||
| role of an associated entity. | role of an associated entity. | |||
| Searchable Resource Type: ips, autnums | Searchable Resource Type: ips, autnums | |||
| Related Resource Type: entity | Related Resource Type: entity | |||
| Registrant: IETF | Registrant: IETF | |||
| Contact Information: iesg@ietf.org | Contact Information: iesg@ietf.org | |||
| Reference: RFC 9910 | Reference: RFC 9910 | |||
| 10.4. RDAP Reverse Search Mapping Registry | 10.4. RDAP Reverse Search Mapping Registry | |||
| IANA has registered the following entries in the "RDAP Reverse Search | IANA has registered the following entries in the "RDAP Reverse Search | |||
| Mapping" <https://www.iana.org/assignments/rdap-reverse-search- | Mapping" registry <https://www.iana.org/assignments/rdap-reverse- | |||
| mapping> registry. | search-mapping>. | |||
| 10.4.1. fn | 10.4.1. fn | |||
| Property: fn | Property: fn | |||
| Property Path: $.entities[*].vcardArray[1][?(@[0]=='fn')][3] | Property Path: $.entities[*].vcardArray[1][?(@[0]=='fn')][3] | |||
| Searchable Resource Type: ips, autnums | Searchable Resource Type: ips, autnums | |||
| Related Resource Type: entity | Related Resource Type: entity | |||
| Registrant: IETF | Registrant: IETF | |||
| Contact Information: iesg@ietf.org | Contact Information: iesg@ietf.org | |||
| Reference: RFC 9910 | Reference: RFC 9910 | |||
| End of changes. 14 change blocks. | ||||
| 18 lines changed or deleted | 18 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. | ||||