schemas/rdap-metadata.schema.json

rdap-metadata.schema.json

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

Download rdap-metadata.schema.jsonView dataset

Overview#overview

namerdap-metadata
version2026.06
fields7
used_byrdap_metadata
draft2020-12
licenseCC-BY-4.0

Field definitions#fields

FieldTypeRequiredDescription
registrar_idstringrequiredForeign key to registrars.id.
base_urlstring · urirequiredRDAP service base URL from the IANA registrar-ids registry.
conformancestringrequiredReported RDAP conformance level (e.g. rfc7483).
iana_bootstrappedbooleanrequiredRDAP base URL is published in the IANA registrar-ids registry.
verification_statusenumrequiredSee verification statuses.
last_checkedstring · date-timerequiredISO 8601 timestamp.
field_provenanceobjectoptionalPer-field source_url, verification_status, last_checked and note.

JSON Schema#preview

{
  "$id": "https://opendomaindata.org/schemas/rdap-metadata.schema.json",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "RdapMetadata",
  "description": "RDAP service metadata for a single registrar.",
  "version": "2026.06",
  "type": "object",
  "required": ["registrar_id", "base_url", "conformance", "iana_bootstrapped", "verification_status", "last_checked"],
  "properties": {
    "registrar_id": { "type": "string", "description": "Foreign key to registrars.id." },
    "base_url": { "type": "string", "format": "uri", "description": "RDAP service base URL as published in the IANA registrar-ids registry." },
    "conformance": { "type": "string", "description": "Reported RDAP conformance level (e.g. rfc7483)." },
    "iana_bootstrapped": { "type": "boolean", "description": "True when the RDAP base URL is published in the IANA registrar-ids registry." },
    "verification_status": {
      "type": "string",
      "enum": ["unknown", "public_sources", "independently_tested", "registrar_submitted", "registrar_verified", "deprecated"]
    },
    "last_checked": { "type": "string", "format": "date-time" },
    "field_provenance": { "$ref": "#/$defs/fieldProvenance" }
  },
  "additionalProperties": false,
  "$defs": {
    "fieldProvenance": {
      "type": "object",
      "description": "Per-field provenance. Maps a field name in this record to the source URL it was checked against, its verification status and the timestamp of that check. Field-level entries are authoritative over the record-level verification_status/last_checked for the field they describe.",
      "additionalProperties": {
        "type": "object",
        "required": ["source_url", "verification_status", "last_checked"],
        "properties": {
          "source_url": { "type": "string", "format": "uri", "description": "Primary source URL the field value was checked against." },
          "verification_status": {
            "type": "string",
            "enum": ["unknown", "public_sources", "independently_tested", "registrar_submitted", "registrar_verified", "deprecated"]
          },
          "last_checked": { "type": "string", "format": "date-time" },
          "note": { "type": "string", "description": "Optional human-readable note describing how this specific field was checked." }
        },
        "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/rdap-metadata.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.