schemas/dns-capabilities.schema.json

dns-capabilities.schema.json

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

Download dns-capabilities.schema.jsonView dataset

Overview#overview

namedns-capabilities
version2026.05
fields10
used_bydns_capabilities
draft2020-12
licenseCC-BY-4.0

Field definitions#fields

FieldTypeRequiredDescription
registrar_idstringrequiredForeign key to registrars.id.
dnssecenumrequiredsupported | unsupported | partial.
alias_anamebooleanoptionalALIAS / ANAME apex records supported.
caabooleanoptionalCAA records supported.
api_record_managementbooleanoptionalRecords editable via API.
record_typesarray · enumoptionalSupported record types.
ttl_min_secondsintegeroptionalMinimum TTL the registrar allows.
sourcesarray · enumrequiredProvenance.
verification_statusenumrequiredSee verification statuses.
last_checkedstring · date-timerequiredISO 8601 timestamp.

JSON Schema#preview

{
  "$id": "https://opendomaindata.org/schemas/dns-capabilities.schema.json",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "DnsCapabilities",
  "description": "DNS feature support per registrar.",
  "version": "2026.05",
  "type": "object",
  "required": ["registrar_id", "dnssec", "sources", "verification_status", "last_checked"],
  "properties": {
    "registrar_id": { "type": "string" },
    "dnssec": { "type": "string", "enum": ["supported", "unsupported", "partial"] },
    "alias_aname": { "type": "boolean" },
    "caa": { "type": "boolean" },
    "api_record_management": { "type": "boolean" },
    "record_types": { "type": "array", "items": { "type": "string" } },
    "ttl_min_seconds": { "type": "integer", "minimum": 0 },
    "sources": {
      "type": "array",
      "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/dns-capabilities.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.