tech-invite   World Map     

IETF     RFCs     Groups     SIP     ABNFs    |    3GPP     Specs     Glossaries     Architecture     IMS     UICC    |    search     info

RFC 7483

 Errata 
Proposed STD
Pages: 78
Top     in Index     Prev     Next
in Group Index     Prev in Group     Next in Group     Group: WEIRDS

JSON Responses for the Registration Data Access Protocol (RDAP)

Part 1 of 4, p. 1 to 15
None       Next RFC Part

 


Top       ToC       Page 1 
Internet Engineering Task Force (IETF)                         A. Newton
Request for Comments: 7483                                          ARIN
Category: Standards Track                                  S. Hollenbeck
ISSN: 2070-1721                                            Verisign Labs
                                                              March 2015


    JSON Responses for the Registration Data Access Protocol (RDAP)

Abstract

   This document describes JSON data structures representing
   registration information maintained by Regional Internet Registries
   (RIRs) and Domain Name Registries (DNRs).  These data structures are
   used to form Registration Data Access Protocol (RDAP) query
   responses.

Status of This Memo

   This is an Internet Standards Track document.

   This document is a product of the Internet Engineering Task Force
   (IETF).  It represents the consensus of the IETF community.  It has
   received public review and has been approved for publication by the
   Internet Engineering Steering Group (IESG).  Further information on
   Internet Standards is available in Section 2 of RFC 5741.

   Information about the current status of this document, any errata,
   and how to provide feedback on it may be obtained at
   http://www.rfc-editor.org/info/rfc7483.

Copyright Notice

   Copyright (c) 2015 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.

Top       Page 2 
Table of Contents

   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   3
     1.1.  Terminology and Definitions . . . . . . . . . . . . . . .   3
     1.2.  Data Model  . . . . . . . . . . . . . . . . . . . . . . .   4
   2.  Use of JSON . . . . . . . . . . . . . . . . . . . . . . . . .   5
     2.1.  Naming  . . . . . . . . . . . . . . . . . . . . . . . . .   5
   3.  Common Data Types . . . . . . . . . . . . . . . . . . . . . .   7
   4.  Common Data Structures  . . . . . . . . . . . . . . . . . . .   8
     4.1.  RDAP Conformance  . . . . . . . . . . . . . . . . . . . .   8
     4.2.  Links . . . . . . . . . . . . . . . . . . . . . . . . . .   9
     4.3.  Notices and Remarks . . . . . . . . . . . . . . . . . . .  10
     4.4.  Language Identifier . . . . . . . . . . . . . . . . . . .  11
     4.5.  Events  . . . . . . . . . . . . . . . . . . . . . . . . .  11
     4.6.  Status  . . . . . . . . . . . . . . . . . . . . . . . . .  13
     4.7.  Port 43 WHOIS Server  . . . . . . . . . . . . . . . . . .  13
     4.8.  Public IDs  . . . . . . . . . . . . . . . . . . . . . . .  13
     4.9.  Object Class Name . . . . . . . . . . . . . . . . . . . .  14
     4.10. An Example  . . . . . . . . . . . . . . . . . . . . . . .  14
   5.  Object Classes  . . . . . . . . . . . . . . . . . . . . . . .  15
     5.1.  The Entity Object Class . . . . . . . . . . . . . . . . .  16
     5.2.  The Nameserver Object Class . . . . . . . . . . . . . . .  22
     5.3.  The Domain Object Class . . . . . . . . . . . . . . . . .  26
     5.4.  The IP Network Object Class . . . . . . . . . . . . . . .  38
     5.5.  Autonomous System Number Entity Object Class  . . . . . .  42
   6.  Error Response Body . . . . . . . . . . . . . . . . . . . . .  45
   7.  Responding to Help Queries  . . . . . . . . . . . . . . . . .  48
   8.  Responding To Searches  . . . . . . . . . . . . . . . . . . .  48
   9.  Indicating Truncated Responses  . . . . . . . . . . . . . . .  49
   10. IANA Considerations . . . . . . . . . . . . . . . . . . . . .  52
     10.1.  RDAP JSON Media Type Registration  . . . . . . . . . . .  52
     10.2.  JSON Values Registry . . . . . . . . . . . . . . . . . .  53
       10.2.1.  Notice and Remark Types  . . . . . . . . . . . . . .  54
       10.2.2.  Status . . . . . . . . . . . . . . . . . . . . . . .  56
       10.2.3.  Event Actions  . . . . . . . . . . . . . . . . . . .  49
       10.2.4.  Roles  . . . . . . . . . . . . . . . . . . . . . . .  61
       10.2.5.  Variant Relations  . . . . . . . . . . . . . . . . .  63
   11. Security Considerations . . . . . . . . . . . . . . . . . . .  64
   12. Internationalization Considerations . . . . . . . . . . . . .  64
     12.1.  Character Encoding . . . . . . . . . . . . . . . . . . .  64
     12.2.  URIs and IRIs  . . . . . . . . . . . . . . . . . . . . .  64
     12.3.  Language Tags  . . . . . . . . . . . . . . . . . . . . .  64
     12.4.  Internationalized Domain Names . . . . . . . . . . . . .  65
   13. Privacy Considerations  . . . . . . . . . . . . . . . . . . .  65
   14. References  . . . . . . . . . . . . . . . . . . . . . . . . .  65
     14.1.  Normative References . . . . . . . . . . . . . . . . . .  65
     14.2.  Informative References . . . . . . . . . . . . . . . . .  67

Top      ToC       Page 3 
   Appendix A.  Suggested Data Modeling with the Entity Object Class  68
     A.1.  Registrants and Contacts  . . . . . . . . . . . . . . . .  68
     A.2.  Registrars  . . . . . . . . . . . . . . . . . . . . . . .  70
   Appendix B.  Modeling Events  . . . . . . . . . . . . . . . . . .  72
   Appendix C.  Structured vs. Unstructured Addresses  . . . . . . .  74
   Appendix D.  Secure DNS . . . . . . . . . . . . . . . . . . . . .  76
   Appendix E.  Motivations for Using JSON . . . . . . . . . . . . .  77
   Acknowledgements  . . . . . . . . . . . . . . . . . . . . . . . .  77
   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  78

1.  Introduction

   This document describes responses in the JSON [RFC7159] format for
   the queries as defined by the Registration Data Access Protocol Query
   Format [RFC7482].  A communication protocol for exchanging queries
   and responses is described in [RFC7480].

1.1.  Terminology and Definitions

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
   document are to be interpreted as described in [RFC2119] when
   specified in their uppercase forms.

   The following list describes terminology and definitions used
   throughout this document:

   DNR:              Domain Name Registry

   LDH:              letters, digits, hyphen

   member:           data found within an object as defined by JSON
                     [RFC7159].

   object:           a data structure as defined by JSON [RFC7159].

   object class:     the definition of members that may be found in JSON
                     objects described in this document.

   object instance:  an instantiation or specific instance of an object
                     class.

   RDAP:             Registration Data Access Protocol

   RIR:              Regional Internet Registry

Top      ToC       Page 4 
1.2.  Data Model

   The data model for JSON responses is specified in five sections:

   1.  simple data types conveyed in JSON strings

   2.  data structures specified as JSON arrays or objects that are used
       repeatedly when building up larger objects

   3.  object classes representing structured data corresponding to a
       lookup of a single object

   4.  arrays of objects representing structured data corresponding to a
       search for multiple objects

   5.  the response to an error

   The object classes represent responses for two major categories of
   data: responses returned by RIRs for registration data related to IP
   addresses, reverse DNS names, and Autonomous System numbers and
   responses returned by DNRs for registration data related to forward
   DNS names.  The following object classes are returned by both RIRs
   and DNRs:

   1.  domains

   2.  nameservers

   3.  entities

   The information served by both RIRs and DNRs for these object classes
   overlap extensively and are given in this document as a unified model
   for both classes of service.

   In addition to the object classes listed above, RIRs also serve the
   following object classes:

   1.  IP networks

   2.  Autonomous System numbers

   Object classes defined in this document represent a minimal set of
   what a compliant client/server needs to understand to function
   correctly; however, some deployments may want to include additional
   object classes to suit individual needs.  Anticipating this need for
   extension, Section 2.1 of this document defines a mechanism for
   extending the JSON objects that are described in this document.

Top      ToC       Page 5 
   Positive responses take two forms.  A response to a lookup of a
   single object in the registration system yields a JSON object, which
   is the subject of the lookup.  A response to a search for multiple
   objects yields a JSON object that contains an array of JSON objects
   that are the subject of the search.  In each type of response, other
   data structures are present within the topmost JSON object.

2.  Use of JSON

2.1.  Naming

   Clients of these JSON responses SHOULD ignore unrecognized JSON
   members in responses.  Servers can insert members into the JSON
   responses, which are not specified in this document, but that does
   not constitute an error in the response.  Servers that insert such
   unspecified members into JSON responses SHOULD have member names
   prefixed with a short identifier followed by an underscore followed
   by a meaningful name.  It has been observed that these short
   identifiers aid software implementers with identifying the
   specification of the JSON member, and failure to use one could cause
   an implementer to assume the server is erroneously using a name from
   this specification.  This allowance does not apply to jCard [RFC7095]
   objects.  The full JSON name (the prefix plus the underscore plus the
   meaningful name) SHOULD adhere to the character and name limitations
   of the prefix registry described in [RFC7480].  Failure to use these
   limitations could result in slower adoption as these limitations have
   been observed to aid some client programming models.

   Consider the following JSON response with JSON members, all of which
   are specified in this document.

   {
     "handle" : "ABC123",
     "remarks" :
     [
       {
         "description" :
         [
           "She sells sea shells down by the sea shore.",
           "Originally written by Terry Sullivan."
         ]
       }
     ]
   }

                                 Figure 1

Top      ToC       Page 6 
   If The Registry of the Moon desires to express information not found
   in this specification, it might select "lunarNic" as its identifying
   prefix and insert, as an example, the member named
   "lunarNic_beforeOneSmallStep" to signify registrations occurring
   before the first moon landing and the member named
   "lunarNic_harshMistressNotes" that contains other descriptive text.

   Consider the following JSON response with JSON names, some of which
   should be ignored by clients without knowledge of their meaning.

   {
     "handle" : "ABC123",
     "lunarNic_beforeOneSmallStep" : "TRUE THAT!",
     "remarks" :
     [
       {
         "description" :
         [
           "She sells sea shells down by the sea shore.",
           "Originally written by Terry Sullivan."
         ]
       }
     ],
     "lunarNic_harshMistressNotes" :
     [
       "In space,",
       "nobody can hear you scream."
     ]
   }

                                 Figure 2

   Insertion of unrecognized members ignored by clients may also be used
   for future revisions to this specification.

   Clients processing JSON responses need to be prepared for members
   representing registration data specified in this document to be
   absent from a response.  In other words, servers are free to not
   include JSON members containing registration data based on their own
   policies.

   Finally, all JSON names specified in this document are case
   sensitive.  Both servers and clients MUST transmit and process them
   using the specified character case.

Top      ToC       Page 7 
3.  Common Data Types

   JSON [RFC7159] defines the data types of a number, character string,
   boolean, array, object, and null.  This section describes the
   semantics and/or syntax reference for common, JSON character strings
   used in this document.

   handle:           DNRs and RIRs have registry-unique identifiers that
                     may be used to specifically reference an object
                     instance.  The semantics of this data type as found
                     in this document are to be a registry-unique
                     reference to the closest enclosing object where the
                     value is found.  The data type names "registryId",
                     "roid", "nic-handle", "registrationNo", etc., are
                     terms often synonymous with this data type.  In
                     this document, the term "handle" is used.  The term
                     exposed to users by clients is a presentation issue
                     beyond the scope of this document.

   IPv4 addresses:   The representation of IPv4 addresses in this
                     document uses the dotted-decimal notation.  An
                     example of this textual representation is
                     "192.0.2.0".

   IPv6 addresses:   The representation of IPv6 addresses in this
                     document follow the forms outlined in [RFC5952].
                     An example of this textual representation is
                     "2001:db8::1:0:0:1".

   country codes:    Where the identity of a geopolitical nation or
                     country is needed, these identities are represented
                     with the alpha-2 or two-character country code
                     designation as defined in [ISO.3166.1988].  The
                     alpha-2 representation is used because it is freely
                     available, whereas the alpha-3 and numeric-3
                     standards are not.

   LDH names:        Textual representations of DNS names where the
                     labels of the domain are all "letters, digits,
                     hyphen" labels as described by [RFC5890].  Trailing
                     periods are optional.

   Unicode names:    Textual representations of DNS names where one or
                     more of the labels are U-labels as described by
                     [RFC5890].  Trailing periods are optional.

   dates and times:  The syntax for values denoting dates and times is
                     defined in [RFC3339].

Top      ToC       Page 8 
   URIs:             The syntax for values denoting a Uniform Resource
                     Identifier (URI) is defined by [RFC3986].

   Contact information is defined using jCards as described in
   [RFC7095].

4.  Common Data Structures

   This section defines common data structures used in responses and
   object classes.

4.1.  RDAP Conformance

   The data structure named "rdapConformance" is an array of strings,
   each providing a hint as to the specifications used in the
   construction of the response.  This data structure appears only in
   the topmost JSON object of a response.

   An example rdapConformance data structure:

   "rdapConformance" :
   [
     "rdap_level_0"
   ]

                                 Figure 3

   The string literal "rdap_level_0" signifies conformance with this
   specification.  When custom JSON values are inserted into responses,
   conformance to those custom specifications MUST use a string prefixed
   with the appropriate identifier from the IANA RDAP Extensions
   registry specified in [RFC7480].  For example, if the fictional
   Registry of the Moon wants to signify that their JSON responses are
   conformant with their registered extensions, the string used might be
   "lunarNIC_level_0".  These prefixes aid the identification of
   specifications for software implementers, and failure to use them
   could result in slower adoption of extensions.

   Example rdapConformance structure with custom extensions noted:

   "rdapConformance" :
   [
     "rdap_level_0",
     "lunarNic_level_0"
   ]

                                 Figure 4

Top      ToC       Page 9 
4.2.  Links

   The "links" array is found in data structures to signify links to
   other resources on the Internet.  The relationship of these links is
   defined by the IANA registry described by [RFC5988].

   The following is an example of the link structure:

       {
         "value" : "http://example.com/context_uri",
         "rel" : "self",
         "href" : "http://example.com/target_uri",
         "hreflang" : [ "en", "ch" ],
         "title" : "title",
         "media" : "screen",
         "type" : "application/json"
       }

                                 Figure 5

   The JSON name/values of "rel", "href", "hreflang", "title", "media",
   and "type" correspond to values found in Section 5 of [RFC5988].  The
   "value" JSON value is the context URI as described by [RFC5988].  The
   "href" JSON value MUST be specified.  All other JSON values are
   OPTIONAL.

   This is an example of the "links" array as it might be found in an
   object class:

       "links" :
       [
           {
             "value" : "http://example.com/ip/2001:db8::123",
             "rel" : "self",
             "href" : "http://example.com/ip/2001:db8::123",
             "type" : "application/rdap+json"
           },
           {
             "value" : "http://example.com/ip/2001:db8::123",
             "rel" : "up",
             "href" : "http://example.com/ip/2001:db8::/48",
             "type" : "application/rdap+json"
           }

       ]

                                 Figure 6

Top      ToC       Page 10 
4.3.  Notices and Remarks

   The "notices" and "remarks" data structures take the same form.  The
   notices structure denotes information about the service providing
   RDAP information and/or information about the entire response,
   whereas the remarks structure denotes information about the object
   class that contains it (see Section 5 regarding object classes).

   Both are arrays of objects.  Each object contains an optional "title"
   string representing the title of the object, an optional "type"
   string denoting a registered type of remark or notice (see
   Section 10.2.1), an array of strings named "description" for the
   purposes of conveying any descriptive text, and an optional "links"
   array as described in Section 4.2.

   An example of the notices data structure:

   "notices" :
   [
     {
       "title" : "Terms of Use",
       "description" :
       [
         "Service subject to The Registry of the Moon's TOS.",
         "Copyright (c) 2020 LunarNIC"
       ],
       "links" :
       [
         {
           "value" : "http://example.net/entity/XXXX",
           "rel" : "alternate",
           "type" : "text/html",
           "href" : "http://www.example.com/terms_of_use.html"
         }
       ]
     }
   ]

                                 Figure 7

   It is the job of the clients to determine line breaks, spacing, and
   display issues for sentences within the character strings of the
   "description" array.  Each string in the "description" array contains
   a single complete division of human-readable text indicating to
   clients where there are semantic breaks.

Top      ToC       Page 11 
   An example of the remarks data structure:

   "remarks" :
   [
     {
       "description" :
       [
         "She sells sea shells down by the sea shore.",
         "Originally written by Terry Sullivan."
       ]
     }
   ]

                                 Figure 8

   Note that objects in the "remarks" array may also have a "links"
   array.

   While the "title" and "description" fields are intended primarily for
   human consumption, the "type" string contains a well-known value to
   be registered with IANA (see Section 10.2.1) for programmatic use.

   An example of the remarks data structure:

   "remarks" :
   [
     {
       "type" : "object truncated due to authorization",
       "description" :
       [
         "Some registration data may not have been given.",
         "Use proper authorization credentials to see all of it."
       ]
     }
   ]

                                 Figure 9

   While the "remarks" array will appear in many object classes in a
   response, the "notices" array appears only in the topmost object of a
   response.

Top      ToC       Page 12 
4.4.  Language Identifier

   This data structure consists solely of a name/value pair, where the
   name is "lang" and the value is a string containing a language
   identifier as described in [RFC5646].

   "lang" : "mn-Cyrl-MN"

                                 Figure 10

   The "lang" attribute may appear anywhere in an object class or data
   structure except for in jCard objects.

4.5.  Events

   This data structure represents events that have occurred on an
   instance of an object class (see Section 5 regarding object classes).

   This is an example of an "events" array.

   "events" :
   [
     {
       "eventAction" : "registration",
       "eventActor" : "SOMEID-LUNARNIC",
       "eventDate" : "1990-12-31T23:59:59Z"
     },
     {
       "eventAction" : "last changed",
       "eventActor" : "OTHERID-LUNARNIC",
       "eventDate" : "1991-12-31T23:59:59Z"
     }
   ]

                                 Figure 11

   The "events" array consists of objects, each with the following
   members:

   o  "eventAction" -- a string denoting the reason for the event

   o  "eventActor" -- an optional identifier denoting the actor
      responsible for the event

   o  "eventDate" -- a string containing the time and date the event
      occurred.

   o  "links" -- see Section 4.2

Top      ToC       Page 13 
   Events can be future dated.  One use case for future dating of events
   is to denote when an object expires from a registry.

   The "links" array in this data structure is provided for references
   to the event actor.  In order to reference an RDAP entity, a "rel" of
   "related" and a "type" of "application/rdap+json" is used in the link
   reference.

   See Section 10.2.3 for a list of values for the "eventAction" string.
   See Appendix B regarding the various ways events can be modeled.

4.6.  Status

   This data structure, named "status", is an array of strings
   indicating the state of a registered object (see Section 10.2.2 for a
   list of values).

4.7.  Port 43 WHOIS Server

   This data structure, a member named "port43", is a simple string
   containing the fully qualified host name or IP address of the WHOIS
   [RFC3912] server where the containing object instance may be found.
   Note that this is not a URI, as there is no WHOIS URI scheme.

4.8.  Public IDs

   This data structure maps a public identifier to an object class.  It
   is named "publicIds" and is an array of objects, with each object
   containing the following members:

   o  type -- a string denoting the type of public identifier

   o  identifier -- a public identifier of the type denoted by "type"

   The following is an example of a publicIds structure.

   "publicIds":
   [
     {
       "type":"IANA Registrar ID",
       "identifier":"1"
     }
   ]

                                 Figure 12

Top      ToC       Page 14 
4.9.  Object Class Name

   This data structure, a member named "objectClassName", gives the
   object class name of a particular object as a string.  This
   identifies the type of object being processed.  An objectClassName is
   REQUIRED in all RDAP response objects so that the type of the object
   can be interpreted.

4.10.  An Example

   This is an example response with both rdapConformance and notices
   embedded:

   {
     "rdapConformance" :
     [
       "rdap_level_0"
     ],
     "notices" :
     [
       {
         "title" : "Content Removed",
         "description" :
         [
           "Without full authorization, content has been removed.",
           "Sorry, dude!"
         ],
         "links" :
         [
           {
             "value" : "http://example.net/ip/192.0.2.0/24",
             "rel" : "alternate",
             "type" : "text/html",
             "href" : "http://www.example.com/redaction_policy.html"
           }
         ]
       }
     ],
     "lang" : "en",
     "objectClassName" : "ip network",
     "startAddress" : "192.0.2.0",
     "endAddress" : "192.0.2.255",
     "handle" : "XXXX-RIR",
     "ipVersion" : "v4",
     "name": "NET-RTR-1",
     "parentHandle" : "YYYY-RIR",
     "remarks" :
     [

Top      ToC       Page 15 
       {
         "description" :
         [
           "She sells sea shells down by the sea shore.",
           "Originally written by Terry Sullivan."
         ]
       }
     ]
   }

                                 Figure 13



(page 15 continued on part 2)

Next RFC Part