Object Classes

In RDAP, the information being queried is an RDAP object, and the types or classes of those objects are known as object classes. They are defined in RFC 9083. Each instance of an object class is REQUIRED to have the objectClassName attribute.

RDAP defines 5 core object classes:

  • Entity - a person, organization, group, etc…
  • Domain - a DNS registration
  • Nameserver - a nameserver (i.e. DNS host) registration
  • IP Network - an IP address block registration
  • Autnum - an Autonomous System Number block registration

Object classes are composed of the common data structures as well as other JSON structures specific to each. Many of these common structures are repeated in each object class, and they generally have the following form:

{
  "objectClassName" : "different for every object class",
  "handle" : "registry-unique-id",
  "status" : [ 
    // ... 
  ],
  "entities" : [
    // ...  
  ],
  "links" : [
    // ...
  ],
  "remarks" : [
    // ...
  ],
  "events" : [
    // ...
  ],
  "port43" : "whois.somewhere"

  // the structures specific to each object class
  // ...
}

When objects are returned as the top-most value of the response, such as in responses to lookups, they would have the rdapConformance array and optionally some notices.

{
  "rdapConformance" : [ "rdap_level_0" ],
  "notices" : [
    // ...  
  ],
  "objectClassName" : "different for every object class",
  "handle" : "registry-unique-id",

  // etc, ...
}

As hinted at above, all the object classes can have child entities. And some can have child IP networks, child autnums, and child nameservers. The diagram below depicts these relationships.

---
title: RDAP Object Classes
---
erDiagram
    Entity ||--o{ Entity : "has subordinate contacts"
    Entity ||--o{ "IP Network": "associate with"
    Entity ||--o{ Autnum: "associate with"
    "IP Network" ||--o{ Entity : "has contacts"
    Autnum ||--o{ Entity : "has contacts"
    Domain ||--o{ Entity : "has contacts"
    Domain ||--o{ Nameserver : "served by"
    Domain ||--o| "IP Network" : "reverse DNS"
    Nameserver ||--o{ Entity : "has contacts"

Entity

An entity represents a person, organization, role or group of people. In Whois parlance, these are often called “contacts”.

The entity object class has the following JSON data structures:

NameValue
objectClassName(REQUIRED) must be “entity”. See objectClassName
handlea registry-unique string identifier. See handle.
vcardArraysee jCard/vCard
rolesan array of strings describing the role the entity fulfills with repect to the object that is its parent. These values must be registered in the IANA RDAP JSON Values registry.
publicIdsa common type defined here
entitiesan array of objects as defined by this object class. See entity children.
remarksa common type defined here
linksa common type defined here
eventsa common type defined here
asEventActoran array of events without the eventActor JSON member. These are meant to define the entity as being the event actor. This is seldom used.
statusa common type defined here
port43a common type defined here
networksan array of IP networks. See IP network children.
autnumsan array of autnums. See autnum children.

The following is a contrived example of an entity. Keep in mind that rdapConformance and notices are common to all RDAP responses.

{
    "rdapConformance":[
        "rdap_level_0"
    ],
    "notices":[
        {
            "title":"Terms of Use",
            "description":[
                "The data and services are subject to the Terms of Use available at: https://www.arin.net/whois_tou.html"
            ],
            "links":[
                {
                    "value":"http://nic.lunar/entity/example",
                    "rel":"terms-of-service",
                    "type":"text/html",
                    "href":"https://www.nic.lunar/rdap_tou.html"
                }
            ]
        }
    ],
    "handle":"entity-dnr",
    "objectClassName":"entity",
    "vcardArray" : [
        "vcard",
        [
            ["version", {}, "text", "4.0"],
            ["fn", {}, "text", "Allice Allison"],
            ["kind", {}, "text", "individual"],
            ["lang", { "pref": "1" }, "language-tag", "fr"],
            ["lang", { "pref": "2" }, "language-tag", "en"],
            ["org", { "type": "work" }, "text", "Registry of the Moon"],
            ["title", {}, "text", "Research Scientist"],
            ["role", {}, "text", "Project Lead"],
            ["adr",
                { "type": "work" },
                "text",
                [
                    "",
                    "",
                    "123 Maple Syrup Lane",
                    "Quebec",
                    "QC",
                    "G1V 2M2",
                    "Canada"
                ]
            ],
            ["tel",
                { "type": ["work", "voice"], "pref": "1" },
                "uri",
                "tel:+1-418-555-9254;ext=102"
            ],
            ["tel",
                { "type": ["work", "cell", "voice", "video", "text"] },
                "uri",
                "tel:+1-418-555-6501"
            ],
            ["email",
                { "type": "work" },
                "text",
                "allice.allison@nic.lunar"
            ]
        ]
    ],
    "status":[ "validated", "locked" ],
    "publicIds" :
    [
      {
        "type": "IANA Registry",
        "identifier" : "1"
      }
    ],
    "remarks":[
        {
            "title": "A Poem",
            "description":[
                "She sells sea shells down by the sea shore.",
                "Originally written by Terry Sullivan."
            ]
        },
        {
            "title": "A Story",
            "description":[
                "It was the best of times, it was the worst of times, it was the age of wisdom, it was the age of foolishness, it was the epoch of belief, it was the epoch of incredulity, it was the season of Light, it was the season of Darkness, it was the spring of hope, it was the winter of despair, we had everything before us, we had nothing before us, we were all going direct to heaven, we were all going direct the other way - in short, the period was so far like the present period, that some of its noisiest authorities insisted on its being received, for good or for evil, in the superlative degree of comparison only.",
                "By Charles Dickens"
            ]
        }
    ],
    "links":[
        {
            "value":"https://rdap.nic.lunar/entity/entity-dnr",
            "rel":"self",
            "href":"https://rdap.nic.lunar/entity/entity-dnr"
        }
    ],
    "port43":"whois.nic.lunar",
    "events":[
        {
            "eventAction":"registration",
            "eventDate":"1990-12-31T23:59:60Z"
        },
        {
            "eventAction":"last changed",
            "eventDate":"1991-12-31T23:59:60Z",
            "eventActor":"joe@bob.com"
        }
    ]
}

Domain

A domain object represents a domain registration. This is the most complicated of all the object classes.

The domain object class has the following JSON data structures:

NameValue
objectClassName(REQUIRED) must be “domain”. See objectClassName.
handlea registry-unique string identifier. See handle.
ldhNamea letters-digits-hyphens (ldh, aka ASCII-only) domain name.
unicodeNamethe U-label version of an Internationalized Domain Name (IDN).
variantsset of variant IDNs for this domain. See variants.
nameserversan array of nameserver objects. See nameserver children.
secureDNSDNSSEC information. See DNSSEC data.
publicIdsa common type defined here
entitiesan array of entity objects. See entity children.
remarksa common type defined here
linksa common type defined here
eventsa common type defined here
statusa common type defined here
port43a common type defined here
networka single instance of IP networks.

The following is a contrived example of a domain. Keep in mind that rdapConformance is common to all RDAP responses.

{
  "objectClassName" : "domain",
  "handle" : "ex1-1",
  "ldhName" : "xn--fo-5ja.example",
  "unicodeName" : "fóo.example",
  "status" : [ "locked", "transfer prohibited" ],
  "nameservers" :
  [
    {
      "objectClassName" : "nameserver",
      "handle" : "ns1-1",
      "ldhName" : "ns1.example.com",
      "status" : [ "active" ],
      "ipAddresses" :
      {
        "v6": [ "2001:db8::123", "2001:db8::124" ],
        "v4": [ "192.0.2.1", "192.0.2.2" ]
      },
      "links" :
      [
        {
          "value" : "https://example.net/nameserver/ns1.example.com",
          "rel" : "self",
          "href" : "https://example.net/nameserver/ns1.example.com",
          "type" : "application/rdap+json"
        }
      ],
      "events" :
      [
        {
          "eventAction" : "registration", "eventDate" : "1990-12-31T23:59:59Z"
        },
        {
          "eventAction" : "last changed", "eventDate" : "1991-12-31T23:59:59Z"
        }
      ]
    },
    {
      "objectClassName" : "nameserver",
      "handle" : "ns2-1",
      "ldhName" : "ns2.example.com",
      "status" : [ "active" ],
      "ipAddresses" :
      {
        "v6" : [ "2001:db8::125", "2001:db8::126" ],
        "v4" : [ "192.0.2.3", "192.0.2.4" ]
      },
      "links" :
      [
        {
          "value" : "https://example.net/nameserver/ns2.example.com",
          "rel" : "self",
          "href" : "https://example.net/nameserver/ns2.example.com",
          "type" : "application/rdap+json"
        }
      ],
      "events" :
      [
        {
          "eventAction" : "registration", "eventDate" : "1990-12-31T23:59:59Z"
        },
        {
          "eventAction" : "last changed", "eventDate" : "1991-12-31T23:59:59Z"
        }
      ]
    }
  ],
  "links" :
  [
    {
      "value": "https://example.net/domain/xn--fo-5ja.example",
      "rel" : "self",
      "href" : "https://example.net/domain/xn--fo-5ja.example",
      "type" : "application/rdap+json"
    }
  ],
  "events" :
  [
    {
      "eventAction" : "registration", "eventDate" : "1990-12-31T23:59:59Z"
    },
    {
      "eventAction" : "last changed", "eventDate" : "1991-12-31T23:59:59Z",
      "eventActor" : "alice@example.com"
    },
    {
      "eventAction" : "transfer", "eventDate" : "1991-12-31T23:59:59Z",
      "eventActor" : "alice@example.com"
    },
    {
      "eventAction" : "expiration", "eventDate" : "2016-12-31T23:59:59Z",
      "eventActor" : "alice@example.com"
    }
  ],
  "entities" :
  [
    {
      "objectClassName" : "entity",
      "handle" : "regnt1-1",
      "status" : [ "validated" ],
      "roles" : [ "registrant" ],
      "vcardArray":[
        "vcard",
        [ [ "version", {}, "text", "4.0" ],
          [ "fn", {}, "text", "Alice Allison" ],
          [ "kind", {}, "text", "individual" ],
          [ "email", { "type":"work" }, "text", "alice@example.com" ] ]
      ],
      "links" :
      [
        {
          "value" : "https://example.net/entity/regnt1-1",
          "rel" : "self",
          "href" : "https://example.net/entity/regnt1-1",
          "type" : "application/rdap+json"
        }
      ],
      "events" :
      [
        {
          "eventAction" : "registration", "eventDate" : "2015-12-31T23:59:59Z"
        },
        {
          "eventAction" : "last changed", "eventDate" : "2016-12-31T23:59:59Z"
        }
      ]
    }
  ]
}

Variants

The variants structure describes domains that are internationalized variants of the domain registration. This is an array of objects, each with the following members:

NameValue
relationarray of strings, each a “domain variant relation” from the RDAP JSON Values IANA Registry.
idnTablethe name of the IDN table.
variantNamesarray of objects in the form {"ldhName": "xn--fo-5ja.example", "unicodeName": "fóo.example"}

The following excerpt is an example from RFC 9083:

"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" ],
    "idnTable": ".EXAMPLE Swedish",
    "variantNames" :
    [
      {
        "ldhName": "xn--fo-8ja.example",
        "unicodeName" : "fôo.example"
      }
    ]
  }
]

DNSSEC

The secureDNS structure describes the information about the domain’s DNS Security Extensions (DNSSEC). The topic of DNSSEC is broad. For understanding the meaning of the fields of this structure, readers should consult RFC 4034.

One interesting aspect of the secureDNS information is that RDAP can convey their updates separately from the domain name itself using the links and events.

NameValue
zoneSignedtrue if the domain’s zone is signed, otherwise false.
delegationSignedtrue if the domain’s parent zone has signed the delegation to this domain, otherwise false.
dsDataan array of objects describing Delegation Signer objects. See below.
keyDataan array of objects describing DNS Key objects. See below.

dsData

NameValue
keyTagthe integer of the key tag field of a DS record.
algorithmthe integer of the algorithm field of a DS record.
digeststring containing the hexadecimal digest of the DS record.
digestTypethe integer of the digest type of DS record.
linksa common type defined here
eventsa common type defined here

keyData

NameValue
flagthe integer of the flag field of a DNSKEY record.
protocolthe integer of the protocol field of a DNSKEY record.
publicKeystring containing the hexadecimal digest of a DNSKEY record public key.
algorithmthe integer of the algorithm field of a DNSKEY record.
linksa common type defined here
eventsa common type defined here

secureDNS example

"secureDNS" : {
  "delegationSigned" : true,
  "dsData" : [
    {
      "algorithm" : 13,
      "digest" : "B9BEC0EAC0F064929C8586DB185537787015EC3A48F0894BEA74DEEA452F3060",
      "digestType" : 2,
      "events" : [
        {
          "eventAction" : "registration",
          "eventDate" : "2018-03-27T20:09:08Z"
        },
        {
          "eventAction" : "last changed",
          "eventDate" : "2022-04-27T20:19:46Z"
        }
      ],
      "keyTag" : 47828
    }
  ]
}

Nameserver Children

Registries can differ in how they model nameservers, often referred to as “hosts”. None of the RIRs allow direct registration of nameservers as they must be carefully managed to compose reverse DNS. Some DNRs do allow direct registration of nameservers and some do not.

When a registry treats nameservers a “firs-class” objects (objects with a registration distinct from other objects), this is often called the “host object” model. Otherwise, this is often called the “host attribute” model.

The example given above shows a “host object” model. The “host attribute” model is usually much simpler, where the nameservers do not have a handle or other meta-data separate from the domain. The following is an example.

"nameserver" : [
  {
    "objectClassName" : "nameserver",
    "ldhName" : "ns1.example.com"
  },
  {
    "objectClassName" : "nameserver",
    "ldhName" : "ns2.example.com"
  }
]

Sometimes they may include the IP addresses of the nameservers.

"nameserver" : [
  {
    "objectClassName" : "nameserver",
    "ldhName" : "ns1.example.com",
    "ipAddresses" :
    {
      "v6": [ "2001:db8::123", "2001:db8::124" ],
      "v4": [ "192.0.2.1", "192.0.2.2" ]
    }
  },
  {
    "objectClassName" : "nameserver",
    "ldhName" : "ns2.example.com",
    "ipAddresses" :
    {
      "v6" : [ "2001:db8::125", "2001:db8::126" ],
      "v4" : [ "192.0.2.3", "192.0.2.4" ]
    },
  }
]

Nameserver

The nameserver object class represents nameservers, or hosts as they are often called. They are most commonly children of domain objects (see above), but can be registerable objects as well.

The nameserver object class has the following structures:

NameValue
objectClassName(REQUIRED) must be “nameserver”. See objectClassName.
handlea registry-unique string identifier. See handle.
ldhNamea letters-digits-hyphens (ldh, aka ASCII-only) fully-qualified domain name of the nameserver.
unicodeNamethe U-label version of Internationalized Domain Name (IDN) of the nameserver.
ipAddressesan array of objects, each with a v4 and v6 string array containing the IP addresses of the nameserver.
entitiesan array of entity objects. See entity children.
remarksa common type defined here
linksa common type defined here
eventsa common type defined here
statusa common type defined here
port43a common type defined here

The following is a contrived example of a nameserver. Keep in mind that rdapConformance is common to all RDAP responses.

{
   "rdapConformance" : [
      "rdap_level_0"
   ],
   "objectClassName" : "nameserver",
   "handle" : "ns1-1",
   "ldhName" : "ns1.xn--fo-5ja.example",
   "unicodeName" : "ns1.foo.example",
   "ipAddresses" : {
      "v4" : [
         "192.0.2.1",
         "192.0.2.2"
      ],
      "v6" : [
         "2001:db8::123"
      ]
   },
   "links" : [
      {
         "href" : "https://example.com/nameserver/ns1.xn--fo-5ja.example",
         "rel" : "self",
         "value" : "https://example.com/nameserver/ns1.xn--fo-5ja.example"
      }
   ],
   "remarks" : [
      {
         "description" : [
            "This is a sacrificial nameserver.",
            "It is used for the temporary assignment of domains before deletion."
         ]
      }
   ],
   "status" : [
      "active"
   ],
   "events" : [
      {
         "eventAction" : "registration",
         "eventDate" : "1990-12-31T23:59:60Z"
      },
      {
         "eventAction" : "last changed",
         "eventActor" : "alice@example.com",
         "eventDate" : "1991-12-31T23:59:60Z"
      }
   ]
}

IP Network

The “ip network” object class represents the registration of an IP address block. As not all INRRs require registrations on CIDR block boundaries, the IP address object defines the registration with a startAddress and endAddress.

This object class has the following structures:

NameValue
objectClassName(REQUIRED) must be “ip network”. See objectClassName.
handlea registry-unique string identifier. See handle.
startAddressa string containing the start IP address.
endAddressa string containing the end IP address.
ipVersiona string of either “v4” or “v6” denoting the IP address family version.
namea name for the registration usually given by the registration holder.
typea string containing an RIR classification of the registration.
countrya string with the ISO 3166-2 Alpha2 country code where the network originates traffic.
parentHandlethe handle of the parent network.
entitiesan array of entity objects. See entity children.
remarksa common type defined here
linksa common type defined here
eventsa common type defined here
statusa common type defined here
port43a common type defined here

The following is an example of an IP network taken from APNIC and edited for educational purposes. Keep in mind that rdapConformance and notices are common to all RDAP responses.

{
   "rdapConformance" : [ "rdap_level_0" ],
   "notices" : [
      {
         "title" : "Whois Inaccuracy Reporting",
         "description" : [ "If you see inaccuracies in the results, please visit: " ],
         "links" : [
            {
               "href" : "https://www.apnic.net/manage-ip/using-whois/abuse-and-spamming/invalid-contact-form",
               "rel" : "inaccuracy-report",
               "type" : "text/html",
               "value" : "https://rdap.apnic.net/ip/101.1.1.1"
            }
         ]
      }
   ],
   "objectClassName" : "ip network",
   "handle" : "101.1.0.0 - 101.1.3.255",
   "ipVersion" : "v4",
   "startAddress" : "101.1.0.0",
   "endAddress" : "101.1.3.255",
   "country" : "CN",
   "name" : "CHINANET-FJ",
   "status" : [ "active" ],
   "type" : "ALLOCATED PORTABLE",
   "entities" : [
      {
         "objectClassName" : "entity",
         "handle" : "IRT-CHINANET-CN",
         "roles" : [
            "abuse"
         ],
         "remarks" : [
            {
               "title" : "remarks",
               "description" : [ "anti-spam@chinatelecom.cn was validated on 2024-04-15" ]
            }
         ],
         "vcardArray" : [
            "vcard",
            [
               [ "version", {}, "text", "4.0" ],
               [ "fn", {}, "text", "IRT-CHINANET-CN" ],
               [ "kind", {}, "text", "group" ],
               [
                  "adr",
                  {
                     "label" : "No.31 ,jingrong street,beijing\n100032"
                  },
                  "text",
                  [ "", "", "", "", "", "", "" ]
               ],
               [ "email", {}, "text", "anti-spam@chinatelecom.cn" ]
            ]
         ],
         "events" : [
            { "eventAction" : "registration", "eventDate" : "2010-11-15T00:31:55Z" },
            { "eventAction" : "last changed", "eventDate" : "2024-04-15T01:54:23Z" }
         ],
         "links" : [
            {
               "href" : "https://rdap.apnic.net/entity/IRT-CHINANET-CN",
               "rel" : "self",
               "type" : "application/rdap+json",
               "value" : "https://rdap.apnic.net/ip/101.1.1.1"
            }
         ],
      },
   ],
   "events" : [
      { "eventAction" : "registration", "eventDate" : "2011-04-14T02:07:48Z" },
      { "eventAction" : "last changed", "eventDate" : "2021-06-15T08:05:33Z" }
   ],
   "links" : [
      {
         "href" : "https://rdap.apnic.net/ip/101.1.0.0/22",
         "rel" : "self",
         "type" : "application/rdap+json",
         "value" : "https://rdap.apnic.net/ip/101.1.1.1"
      },
      {
         "href" : "https://netox.apnic.net/search/101.1.0.0%2F22?utm_source=rdap&utm_medium=result&utm_campaign=rdap_result",
         "rel" : "related",
         "type" : "text/html",
         "value" : "https://rdap.apnic.net/ip/101.1.1.1"
      }
   ],
   "remarks" : [
      {
         "title" : "description",
         "description" : [
            "CHINANET FUJIAN PROVINCE NETWORK",
            "China Telecom",
            "No.31,jingrong street",
            "Beijing 100032"
         ]
      }
   ],
}

Autnum

The “autnum” object class represents a registration of a block of Autonomous System Numbers (ASNs). To some, the fact that they are represented as a block instead of a single ASN may seem odd as it is rare that a network is allocated more than one at a time. However, both the IANA and ARIN allocate them in blocks, though this is rare for ARIN.

Similar to the IP Network object class, these blocks are represented with a startNum and a endNum.

It has the following structures:

NameValue
objectClassName(REQUIRED) must be “autnum”. See objectClassName.
handlea registry-unique string identifier. See handle.
startNuma string containing the starting ASN.
endAddressa string containing the ending ASN.
namea name for the registration usually given by the registration holder.
typea string containing an RIR classification of the registration.
countrya string with the ISO 3166-2 Alpha2 country code where the network originates traffic.
entitiesan array of entity objects. See entity children.
remarksa common type defined here
linksa common type defined here
eventsa common type defined here
statusa common type defined here
port43a common type defined here

The following is an example of an autnum taken from APNIC and edited for educational purposes. Keep in mind that rdapConformance and notices are common to all RDAP responses.

{
   "rdapConformance" : [ "rdap_level_0" ],
   "notices" : [
      {
         "description" : [
            "This is the APNIC WHOIS Database query service. The objects are in RDAP format.",
            "This information has been partially mirrored by APNIC from IDNIC."
         ],
         "links" : [
            {
               "href" : "http://www.apnic.net/db/dbcopyright.html",
               "rel" : "terms-of-service",
               "type" : "text/html",
               "value" : "https://idnic.rdap.apnic.net/autnum/64297"
            }
         ],
         "title" : "Terms and Conditions"
      }
   ],
   "objectClassName" : "autnum",
   "handle" : "AS64297",
   "startAutnum" : 64297,
   "endAutnum" : 64297,
   "name" : "GLOBALMANDIRI-AS-ID",
   "country" : "ID",
   "status" : [
      "active"
   ],
   "entities" : [
      {
         "handle" : "MYH18-AP",
         "objectClassName" : "entity",
         "roles" : [
            "administrative",
            "technical"
         ],
         "events" : [
            { "eventAction" : "registration", "eventDate" : "2019-08-20T06:25:43Z" },
            { "eventAction" : "last changed", "eventDate" : "2016-10-26T03:33:39Z" }
         ],
         "links" : [
            {
               "href" : "https://idnic.rdap.apnic.net/entity/MYH18-AP",
               "rel" : "self",
               "type" : "application/rdap+json",
               "value" : "https://idnic.rdap.apnic.net/autnum/64297"
            }
         ],
         "vcardArray" : [
            "vcard",
            [
               [ "version", {}, "text", "4.0" ],
               [ "fn", {}, "text", "M Yusuf Hamid" ],
               [ "kind", {}, "text", "individual" ],
               [ "adr",
                  {
                     "label" : "Jl. Muhammadiyah Lr.139 B/24\nMelayu, Wajo\nSulawesi Selatan 90144"
                  },
                  "text",
                  [ "", "", "", "", "", "", "" ]
               ],
               [ "email", {}, "text", "noc@globalmandiri.co.id" ]
            ]
         ]
      },
   ],
   "events" : [
      { "eventAction" : "registration", "eventDate" : "2019-08-20T06:30:32Z" },
      { "eventAction" : "last changed", "eventDate" : "2023-05-03T06:00:56Z" }
   ],
   "links" : [
      {
         "href" : "https://idnic.rdap.apnic.net/autnum/64297",
         "rel" : "self",
         "type" : "application/rdap+json",
         "value" : "https://idnic.rdap.apnic.net/autnum/64297"
      }
   ],
   "remarks" : [
      {
         "description" : [
            "Send Spam & Abuse reports to: xchange@globallink.net.id"
         ]
      }
   ]
}

Entity Children

As noted above, all objects can have a entities value that is an array of entities, including an entity. This means that entities can be nested, which is useful when showing the relationship between entities.

{
  // ...
  "entities" : [
    {
      "objectClassName" : "entity",
      "handle" : "big-company-1",
      "roles" : [ "registrant" ],
      // ...
      "entities" : [
        {
          "objectClassName" : "entity",
          "handle" : "employee-1",
          "roles" : [ "technical" ]
          // ...
        }
      ]
    }  
  ]
}

IP Network Children

Entities may have multiple IP network children. This is used to allow RIR members to enumerate the number of networks they hold.

{
  "objectClassName" : "entity",
  "networks" : [
    {
      "objectClassName" : "ip network",
      "handle" : "net1"
      // ...
    },
    {
      "objectClassName" : "ip network",
      "handle" : "net2"
      // ...
    }  
  ]

  // ...
}

Autnum Children

Similarly, entities may also have autnum children. Again, this is used to allow RIR members to enumerate the number of autnum registrations they hold.

{
  "objectClassName" : "entity",
  "autnums" : [
    {
      "objectClassName" : "autnum",
      "handle" : "asn-1-1"
      // ...
    },
    {
      "objectClassName" : "autnum",
      "handle" : "asn-2-1"
      // ...
    }  
  ]

  // ...
}