{
  "schema_version": "1.0",
  "generated_at": "2026-09-04T12:55:50.042Z",
  "title": "tld.reviews Knowledge API field dictionary",
  "description": "Semantic definitions for canonical knowledge objects. Agents should treat null and absent values as unknown, never as false or zero.",
  "types": {
    "registrar": "A domain name registrar entity with stable public identity.",
    "tld": "A top-level domain tracked by tld.reviews.",
    "offering": "A registrar × TLD product relationship.",
    "price_observation": "A dated observation of a list price, not a live checkout quote.",
    "claim": "A provenanced statement about a subject, with a predicate and typed object.",
    "review": "A human opinion record, never mixed into fact fields.",
    "ranking": "A computed answer derived from observations."
  },
  "fields": {
    "schema_version": {
      "type": "string",
      "description": "Knowledge object schema version. Currently 1.0.",
      "nullable": false
    },
    "id": {
      "type": "string",
      "description": "Permanent public URI for the entity or compact internal id in JSONL bulk files.",
      "nullable": false
    },
    "type": {
      "type": "string",
      "description": "Knowledge type discriminator such as registrar, tld, or price_observation.",
      "nullable": false
    },
    "slug": {
      "type": "string",
      "description": "URL-safe identifier used in canonical HTML paths.",
      "nullable": false
    },
    "canonical_url": {
      "type": "string",
      "description": "Human citation URL. Prefer this when quoting tld.reviews.",
      "nullable": false
    },
    "last_verified_at": {
      "type": "string",
      "format": "date-time",
      "description": "Timestamp of the newest verified claim or identity update.",
      "nullable": true
    },
    "dnssec_supported": {
      "type": "boolean",
      "description": "Whether the registrar documents DNSSEC support for domains it sells.",
      "nullable": true
    },
    "whois_privacy_included": {
      "type": "boolean",
      "description": "Whether WHOIS/RDAP privacy is included in the standard registration price for most TLDs.",
      "nullable": true
    },
    "api_available": {
      "type": "boolean",
      "description": "Whether the registrar documents a customer or reseller API.",
      "nullable": true
    },
    "domain_renewal_price": {
      "type": "number",
      "currency_field": "currency",
      "description": "Standard non-promotional price charged for a one-year renewal of the domain registration.",
      "nullable": true,
      "source": "price_observation where price_type=renewal and promotion=false"
    },
    "domain_registration_price": {
      "type": "number",
      "currency_field": "currency",
      "description": "Standard non-promotional first-year registration price for a one-year term.",
      "nullable": true,
      "source": "price_observation where price_type=registration and promotion=false"
    },
    "domain_transfer_price": {
      "type": "number",
      "currency_field": "currency",
      "description": "Standard non-promotional inbound transfer price for a one-year term.",
      "nullable": true,
      "source": "price_observation where price_type=transfer and promotion=false"
    },
    "price_type": {
      "type": "string",
      "enum": [
        "registration",
        "renewal",
        "transfer",
        "redemption",
        "restore"
      ],
      "description": "Which lifecycle event the price observation applies to.",
      "nullable": false
    },
    "amount": {
      "type": "number",
      "currency_field": "currency",
      "description": "Numeric price amount in the observation currency.",
      "nullable": false
    },
    "currency": {
      "type": "string",
      "description": "ISO 4217 currency code for amount fields. USD unless otherwise stated.",
      "nullable": false
    },
    "observed_at": {
      "type": "string",
      "format": "date",
      "description": "Date the price or claim was observed. Historical, not a guarantee of current checkout.",
      "nullable": true
    },
    "promotion": {
      "type": "boolean",
      "description": "True when the observation is a temporary coupon, intro, or new-customer deal.",
      "nullable": false
    },
    "predicate": {
      "type": "string",
      "description": "Claim relation, such as dnssec_supported or domain_renewal_price.",
      "nullable": false
    },
    "knowledge_kind": {
      "type": "string",
      "enum": [
        "fact",
        "opinion",
        "computed"
      ],
      "description": "Fact is sourced; opinion is a review; computed is derived from other records.",
      "nullable": false
    }
  }
}