schemas/pricing.schema.json
pricing.schema.json
JSON Schema for the tld_pricing dataset. Versioned alongside the data.
Overview#overview
Field definitions#fields
| Field | Type | Required | Description |
|---|---|---|---|
| registrar_id | string | required | Foreign key to registrars.id. |
| tld | string | required | Top-level domain (without leading dot). |
| register_usd | number | optional | First-year register price in USD. |
| renew_usd | number | optional | Annual renewal price in USD. |
| transfer_usd | number | optional | Transfer-in price in USD. |
| promotional | boolean | optional | Whether register_usd is a promotional price. |
| sources | array · enum | required | Provenance. |
| verification_status | enum | required | See verification statuses. |
| last_checked | string · date-time | required | ISO 8601 timestamp. |
JSON Schema#preview
{
"$id": "https://opendomaindata.org/schemas/pricing.schema.json",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "TldPricing",
"description": "Normalized TLD pricing per registrar.",
"version": "2026.06",
"type": "object",
"required": ["registrar_id", "tld", "sources", "verification_status", "last_checked"],
"properties": {
"registrar_id": { "type": "string" },
"tld": { "type": "string", "pattern": "^[a-z0-9-]+$" },
"register_usd": { "type": ["number", "null"], "minimum": 0 },
"renew_usd": { "type": ["number", "null"], "minimum": 0 },
"transfer_usd": { "type": ["number", "null"], "minimum": 0 },
"promotional": { "type": "boolean" },
"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/pricing.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.