schemas/registrar.schema.json

registrar.schema.json

JSON Schema for the registrars dataset. Versioned alongside the data.

Download registrar.schema.jsonView dataset

Overview#overview

nameregistrar
version2026.05
fields9
used_byregistrars
draft2020-12
licenseCC-BY-4.0

Field definitions#fields

FieldTypeRequiredDescription
idstringrequiredStable slug identifier (lowercase).
iana_idintegerrequiredIANA-assigned registrar ID.
namestringrequiredLegal entity name.
rdap_basestring · urioptionalRDAP service base URL, if published.
statusenumrequiredactive | inactive | terminated
countrystring · ISO 3166optionalPrimary jurisdiction.
sourcesarray · enumrequiredProvenance: iana | rdap | registrar_docs | submission.
verification_statusenumrequiredSee verification statuses.
last_checkedstring · date-timerequiredISO 8601 timestamp of last check.

JSON Schema#preview

{
  "$id": "https://opendomaindata.org/schemas/registrar.schema.json",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "Registrar",
  "description": "Canonical record for an ICANN-accredited domain registrar.",
  "version": "2026.05",
  "type": "object",
  "required": ["id", "iana_id", "name", "status", "sources", "verification_status", "last_checked"],
  "properties": {
    "id": {
      "type": "string",
      "pattern": "^[a-z0-9][a-z0-9-]*$",
      "description": "Stable slug identifier."
    },
    "iana_id": {
      "type": "integer",
      "minimum": 1,
      "description": "IANA-assigned registrar ID."
    },
    "name": {
      "type": "string",
      "description": "Legal entity name."
    },
    "rdap_base": {
      "type": "string",
      "format": "uri",
      "description": "RDAP service base URL."
    },
    "status": {
      "type": "string",
      "enum": ["active", "inactive", "terminated"]
    },
    "country": {
      "type": "string",
      "description": "ISO 3166-1 alpha-2 country code."
    },
    "website": {
      "type": "string",
      "format": "uri"
    },
    "aliases": {
      "type": "array",
      "items": { "type": "string" }
    },
    "sources": {
      "type": "array",
      "minItems": 1,
      "items": {
        "type": "string",
        "enum": ["iana", "rdap", "registrar_docs", "submission"]
      }
    },
    "verification_status": {
      "type": "string",
      "enum": [
        "unknown",
        "public_sources",
        "independently_tested",
        "registrar_submitted",
        "registrar_verified",
        "deprecated"
      ]
    },
    "last_checked": {
      "type": "string",
      "format": "date-time"
    }
  },
  "additionalProperties": false
}

Validation example#validation

Validate a record locally using any JSON Schema validator. The schema is draft 2020-12; for ajv use the 2020 import.

import Ajv from "ajv/dist/2020";
import schema from "https://opendomaindata.org/schemas/registrar.schema.json" assert { type: "json" };

const ajv = new Ajv();
const validate = ajv.compile(schema);
const ok = validate(record);
if (!ok) console.error(validate.errors);

Changelog#changelog

Schema changes are recorded in the project changelog and follow the dataset release tag.