schemas/registrar.schema.json
registrar.schema.json
JSON Schema for the registrars dataset. Versioned alongside the data.
Overview#overview
Field definitions#fields
| Field | Type | Required | Description |
|---|---|---|---|
| id | string | required | Stable slug identifier (lowercase). |
| iana_id | integer | required | IANA-assigned registrar ID. |
| name | string | required | Legal entity name. |
| rdap_base | string · uri | optional | RDAP service base URL, if published. |
| status | enum | required | active | inactive | terminated |
| country | string · ISO 3166 | optional | Primary jurisdiction. |
| sources | array · enum | required | Provenance: iana | rdap | registrar_docs | submission. |
| verification_status | enum | required | See verification statuses. |
| last_checked | string · date-time | required | ISO 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.