rdapapi-io · Schema

NameserverResponse

CompanyRDAPDomainAPIWhois

Properties

Name Type Description
ldh_name string Nameserver hostname (lowercase). Empty string if the upstream returned a value that is not a valid LDH hostname.
unicode_name stringnull Unicode form as the registry sends it; some send the ASCII name
handle stringnull Registry-assigned handle
ip_addresses object
status array Status codes
dates object
entities object Contact entities keyed by role (registrant, administrative, technical, billing, abuse)
redacted object
meta object
View JSON Schema on GitHub

JSON Schema

rdapapi-io-nameserver-response-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/rdapapi-io/json-schema/rdapapi-io-nameserver-response-schema.json",
  "title": "NameserverResponse",
  "x-generated": "2026-10-31",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/rdapapi-io-openapi.yaml#/components/schemas/NameserverResponse",
  "type": "object",
  "required": [
    "ldh_name",
    "unicode_name",
    "handle",
    "ip_addresses",
    "status",
    "dates",
    "entities"
  ],
  "properties": {
    "ldh_name": {
      "type": "string",
      "description": "Nameserver hostname (lowercase). Empty string if the upstream returned a value that is not a valid LDH hostname."
    },
    "unicode_name": {
      "type": [
        "string",
        "null"
      ],
      "description": "Unicode form as the registry sends it; some send the ASCII name"
    },
    "handle": {
      "type": [
        "string",
        "null"
      ],
      "description": "Registry-assigned handle"
    },
    "ip_addresses": {
      "type": "object",
      "required": [
        "v4",
        "v6"
      ],
      "properties": {
        "v4": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "IPv4 addresses"
        },
        "v6": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "IPv6 addresses"
        }
      }
    },
    "status": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Status codes"
    },
    "dates": {
      "$ref": "#/$defs/Dates"
    },
    "entities": {
      "type": "object",
      "description": "Contact entities keyed by role (registrant, administrative, technical, billing, abuse)",
      "properties": {
        "registrant": {
          "$ref": "#/$defs/Contact"
        },
        "administrative": {
          "$ref": "#/$defs/Contact"
        },
        "technical": {
          "$ref": "#/$defs/Contact"
        },
        "billing": {
          "$ref": "#/$defs/Contact"
        },
        "abuse": {
          "$ref": "#/$defs/Contact"
        }
      }
    },
    "redacted": {
      "$ref": "#/$defs/Redaction"
    },
    "meta": {
      "$ref": "#/$defs/Meta"
    }
  },
  "$defs": {
    "Contact": {
      "type": "object",
      "description": "One contact. Any field may be null or withheld.\n",
      "required": [
        "handle",
        "name",
        "organization",
        "email",
        "phone",
        "address",
        "contact_url",
        "country_code"
      ],
      "properties": {
        "handle": {
          "type": [
            "string",
            "null"
          ],
          "description": "Registry handle for this entity"
        },
        "name": {
          "type": [
            "string",
            "null"
          ]
        },
        "organization": {
          "type": [
            "string",
            "null"
          ]
        },
        "email": {
          "type": [
            "string",
            "null"
          ]
        },
        "phone": {
          "type": [
            "string",
            "null"
          ],
          "description": "Voice telephone number in E.164, with a `;ext=42` suffix when the registry supplies an extension."
        },
        "address": {
          "type": [
            "string",
            "null"
          ]
        },
        "contact_url": {
          "type": [
            "string",
            "null"
          ],
          "description": "Where a server withholds `email` and publishes a web form instead, this carries it."
        },
        "country_code": {
          "type": [
            "string",
            "null"
          ],
          "description": "ISO 3166-1 alpha-2 country code from the address. Unlike the text fields, a redaction placeholder here is dropped to `null` rather than passed through — it is not a country code."
        }
      }
    },
    "Dates": {
      "type": "object",
      "required": [
        "registered",
        "expires",
        "updated"
      ],
      "properties": {
        "registered": {
          "type": [
            "string",
            "null"
          ],
          "format": "date-time"
        },
        "expires": {
          "type": [
            "string",
            "null"
          ],
          "format": "date-time"
        },
        "updated": {
          "type": [
            "string",
            "null"
          ],
          "format": "date-time"
        }
      }
    },
    "Meta": {
      "type": "object",
      "description": "Where the answer came from, and how it was served.\n",
      "required": [
        "server",
        "source"
      ],
      "properties": {
        "server": {
          "type": [
            "string",
            "null"
          ],
          "description": "Host that answered, as `/tlds` reports it (usable as `?server=`). May be null on old cached records."
        },
        "source": {
          "type": "string",
          "enum": [
            "rdap",
            "whois"
          ],
          "description": "Which protocol answered. Always `rdap` except on domain lookups, where a TLD with no RDAP server is answered over [WHOIS](#tag/whois-fallback)."
        },
        "rdap_server": {
          "type": "string",
          "deprecated": true,
          "description": "Base URL of the RDAP server, present only when `source` is `rdap`. Use `server` for the host that answered, or `raw_rdap_url` for the exact endpoint queried."
        },
        "raw_rdap_url": {
          "type": "string",
          "description": "Direct URL to the raw RDAP response. Absent when `source` is `whois`, which has no URL form, or when a stored snapshot answered."
        },
        "cached": {
          "type": "boolean",
          "description": "Whether the response was served from cache. Omitted from the partial `meta` of a failed bulk entry."
        },
        "cache_expires": {
          "type": "string",
          "format": "date-time",
          "description": "Cache expiration time (ISO 8601). Omitted from the partial `meta` of a failed bulk entry."
        },
        "followed": {
          "type": "boolean",
          "description": "Whether the registrar's RDAP server was queried for richer data. Only present when `?follow=true` is used and `source` is `rdap`."
        },
        "registrar_rdap_server": {
          "type": [
            "string",
            "null"
          ],
          "description": "URL of the registrar's RDAP record the registry linked to. Only present when `?follow=true` is used."
        },
        "follow_error": {
          "type": [
            "string",
            "null"
          ],
          "description": "Error message if the follow request failed. Only present when `?follow=true` is used and the request fails."
        }
      }
    },
    "Redaction": {
      "type": "object",
      "minProperties": 1,
      "description": "Fields the server declared withheld, at the same path as in the record. See [Redaction](#tag/terminology).\n",
      "properties": {
        "handle": {
          "$ref": "#/$defs/RedactionMethod"
        },
        "registrar": {
          "type": "object",
          "description": "Claims about the top-level `registrar` object. Domain lookups only.",
          "additionalProperties": {
            "$ref": "#/$defs/RedactionMethod"
          }
        },
        "entities": {
          "type": "object",
          "description": "Claims keyed by contact role, then by field within that contact.",
          "additionalProperties": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/$defs/RedactionMethod"
            }
          }
        }
      }
    },
    "RedactionMethod": {
      "type": "string",
      "description": "`removal`, `emptyValue`, `partialValue` or `replacementValue`; see [Redaction](#tag/terminology).\n"
    }
  }
}

Work with this as data

Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for schemas

4 MCP tools reach this
  • find_json_schemasBrowse and filter every JSON Schema in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/rdapapi-io-nameserver-response"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.