Network Working Group | A. Newton |
Internet-Draft | ARIN |
Intended status: Informational | M. Sanz |
Expires: June 19, 2017 | DENIC eG |
December 16, 2016 |
Using RDAP as a Domain Availability Service
draft-newton-regext-rdap-domain-availability-00
This document describes a minimal profile of RDAP which can be used to check the availability of domain names available for registration.
This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet-Drafts is at http://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."
This Internet-Draft will expire on June 19, 2017.
Copyright (c) 2016 IETF Trust and the persons identified as the document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License.
While RDAP [RFC7480] has all the necessary properties to serve the information necessary to determine if a domain name is available for registration, without proper signalling an RDAP server is likely to return more information than is required to fulfill this requirement, thus wasting bandwidth and server resources, and may return negative answers when positive answers are more appropriate.
This document defines HTTP query parameters to be used by clients to signal the intent of the query is for an availability check. Servers may then respond with a much smaller and less costly payload than they would have otherwise. The contents of the payload would be at the discretion of the policies of the server operator within the guidelines of RDAP responses [RFC7483].
To signal that the client is only interested in domain availability checking, the client MUST use the query parameter 'availabilityCheck' in the RDAP query for a domain with value '1'. This query parameter has no meaning for other RDAP queries, and therefore should be ignored in those cases.
The following is an example RDAP query for a domain availability check.
https://example.com/rdap/domain/example.com?availabilityCheck=1
Figure 1: Example RDAP Query
The following is an example response.
{ "rdapConformance" : [ "rdap_level_0", "domain_check_0" ], "objectClassName" : "domain", "ldhName" : "example.com", "status" : [ "inactive", "redemption period" ] }
This response, not including the HTTP headers, is 174 octets long.
Figure 2: Example RDAP Response
When this query parameter is given, servers MUST reply with HTTP return codes as specified in Section 3.
RDAP [RFC7480] provides guidance on using HTTP return codes more contextual for the lookup of domain registration information than domain availability information. A query for domain registration information should result in a negative answer (e.g. 404 NOT FOUND) if the name is not registered (or not in active use or in another state where it may be considered to have a unregistration according to policy). However, a query for domain availability information upon the same domain name should yield a positive answer if the domain is available for registration within the bounds of the registry policy. In other words, the return codes may vary given the appropriate context.
In the context of domain availability, RDAP servers should return positive answers (in accordance with server policies for rate limiting and access control) if the domain registry for which the RDAP server is responding allows registration of the queried domain even if the domain is currently registered at the time of the query. For example, an RDAP server answering for foo.example would return a positive answer (i.e. 200 OK) for fiz.foo.example if the domain status was active or inactive, but it would return a negative answer for buzz.bar.example because it is not the registry for bar.example.
The example in Figure 2 shows a positive answer for a domain that is inactive (i.e. not registered). This example shows a positive answer for a domain that is active, including variants and the expiration date.
{ "rdapConformance" : [ "rdap_level_0", "domain_check_0" ], "objectClassName" : "domain", "handle" : "XXXX", "ldhName" : "xn--fo-5ja.example", "unicodeName" : "fóo.example", "variants" : [ { "relation" : [ "registered", "conjoined" ], "variantNames" : [ { "ldhName" : "xn--fo-cka.example", "unicodeName" : "fõo.example" }, { "ldhName" : "xn--fo-fka.example", "unicodeName" : "föo.example" } ] }, { "relation" : [ "unregistered", "registration restricted" ], "variantNames" : [ { "ldhName": "xn--fo-8ja.example", "unicodeName" : "fôo.example" } ] } ], "status" : [ "active", "transfer prohibited" ], "events" : [ { "eventAction" : "expiration", "eventDate" : "2019-12-31T23:59:59Z" } ] }
This response, not including the HTTP headers, is 908 octets long in UTF-8 encoding.
Figure 3: Example Positive Answer
All of the examples given in this document have been reduced from examples in [RFC7483], demonstrating that domain availability information is a subset of domain registration information in the RDAP data model. Some clients may desire both domain registration information and domain availability information. To signal that the client is interested in both contexts, the client MUST use the query parameter 'availabilityInformation' in the RDAP query for a domain with value '1'. This query parameter has no meaning for other RDAP queries, and therefore should be ignored in those cases.
Servers MUST respond with positive answers as specified in Section 3, but SHOULD NOT redact other registration information (i.e. entities, name servers, etc...) in accordance with their access policies.
Servers MUST include "domain_check_0" in the rdapConformance array of their response when modifying their behavior according to this specification. That is, this value should only be placed in the array when responding to a query with one of the query parameters in Section 2 or Section 4.
[RFC7480] | Newton, A., Ellacott, B. and N. Kong, "HTTP Usage in the Registration Data Access Protocol (RDAP)", RFC 7480, DOI 10.17487/RFC7480, March 2015. |
[RFC7483] | Newton, A. and S. Hollenbeck, "JSON Responses for the Registration Data Access Protocol (RDAP)", RFC 7483, DOI 10.17487/RFC7483, March 2015. |