Skip to content

Zone

ZoneBlock pydantic-model

Bases: BasicOptionsMixin

Zone block for BIND configuration.

Grammar: zone [ ] { type primary | secondary | mirror | hint | stub | static-stub | forward | redirect; ... # options depending on type };

Show JSON schema:
{
  "$defs": {
    "AAAARecord": {
      "description": "AAAA record - maps a hostname to an IPv6 address.\n\nGrammar (Reference: RFC 3596 Section 2.2):\n```\n[<NAME>] [<TTL>] [<CLASS>] AAAA <ADDRESS>\n```",
      "properties": {
        "comment": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional comment for this block",
          "title": "Comment"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "DNS name (optional, inherits from previous RR)",
          "title": "Name"
        },
        "ttl": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Time to live in seconds (optional)",
          "title": "Ttl"
        },
        "rr_class": {
          "anyOf": [
            {
              "$ref": "#/$defs/RRClassEnum"
            },
            {
              "type": "null"
            }
          ],
          "default": "IN",
          "description": "Record class"
        },
        "rr_type": {
          "$ref": "#/$defs/RRTypeEnum",
          "default": "AAAA"
        },
        "address": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "format": "ipv6",
              "type": "string"
            }
          ],
          "description": "IPv6 address",
          "title": "Address"
        }
      },
      "required": [
        "address"
      ],
      "title": "AAAARecord",
      "type": "object"
    },
    "ARecord": {
      "description": "A record - maps a hostname to an IPv4 address.\n\nGrammar (Reference: RFC 1035 Section 3.4.1):\n```\n[<NAME>] [<TTL>] [<CLASS>] A <ADDRESS>\n```",
      "properties": {
        "comment": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional comment for this block",
          "title": "Comment"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "DNS name (optional, inherits from previous RR)",
          "title": "Name"
        },
        "ttl": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Time to live in seconds (optional)",
          "title": "Ttl"
        },
        "rr_class": {
          "anyOf": [
            {
              "$ref": "#/$defs/RRClassEnum"
            },
            {
              "type": "null"
            }
          ],
          "default": "IN",
          "description": "Record class"
        },
        "rr_type": {
          "$ref": "#/$defs/RRTypeEnum",
          "default": "A"
        },
        "address": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "format": "ipv4",
              "type": "string"
            }
          ],
          "description": "IPv4 address",
          "title": "Address"
        }
      },
      "required": [
        "address"
      ],
      "title": "ARecord",
      "type": "object"
    },
    "CAARecord": {
      "description": "CAA record - Certification Authority Authorization.\n\nGrammar (Reference: RFC 6844):\n```\n[<NAME>] [<TTL>] [<CLASS>] CAA <FLAGS> <TAG> \"<VALUE>\"\n```",
      "properties": {
        "comment": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional comment for this block",
          "title": "Comment"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "DNS name (optional, inherits from previous RR)",
          "title": "Name"
        },
        "ttl": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Time to live in seconds (optional)",
          "title": "Ttl"
        },
        "rr_class": {
          "anyOf": [
            {
              "$ref": "#/$defs/RRClassEnum"
            },
            {
              "type": "null"
            }
          ],
          "default": "IN",
          "description": "Record class"
        },
        "rr_type": {
          "$ref": "#/$defs/RRTypeEnum",
          "default": "CAA"
        },
        "flags": {
          "default": 0,
          "description": "Flags (0-255, usually 0 or 128 for critical)",
          "maximum": 255,
          "minimum": 0,
          "title": "Flags",
          "type": "integer"
        },
        "tag": {
          "$ref": "#/$defs/CAATagEnum",
          "description": "CAA property tag"
        },
        "value": {
          "description": "Property value",
          "title": "Value",
          "type": "string"
        }
      },
      "required": [
        "tag",
        "value"
      ],
      "title": "CAARecord",
      "type": "object"
    },
    "CAATagEnum": {
      "description": "CAA tag values.",
      "enum": [
        "issue",
        "issuewild",
        "iodef",
        "contact"
      ],
      "title": "CAATagEnum",
      "type": "string"
    },
    "CERTRecord": {
      "description": "CERT record - certificate storage.\n\nGrammar (Reference: RFC 4398):\n```\n[<NAME>] [<TTL>] [<CLASS>] CERT <CERT_TYPE> <KEY_TAG> <ALGORITHM> <CERTIFICATE>\n```",
      "properties": {
        "comment": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional comment for this block",
          "title": "Comment"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "DNS name (optional, inherits from previous RR)",
          "title": "Name"
        },
        "ttl": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Time to live in seconds (optional)",
          "title": "Ttl"
        },
        "rr_class": {
          "anyOf": [
            {
              "$ref": "#/$defs/RRClassEnum"
            },
            {
              "type": "null"
            }
          ],
          "default": "IN",
          "description": "Record class"
        },
        "rr_type": {
          "$ref": "#/$defs/RRTypeEnum",
          "default": "CERT"
        },
        "cert_type": {
          "description": "Certificate type",
          "title": "Cert Type",
          "type": "integer"
        },
        "key_tag": {
          "description": "Key tag",
          "title": "Key Tag",
          "type": "integer"
        },
        "algorithm": {
          "description": "Algorithm",
          "title": "Algorithm",
          "type": "integer"
        },
        "certificate": {
          "description": "Certificate data",
          "title": "Certificate",
          "type": "string"
        }
      },
      "required": [
        "cert_type",
        "key_tag",
        "algorithm",
        "certificate"
      ],
      "title": "CERTRecord",
      "type": "object"
    },
    "CNAMERecord": {
      "description": "CNAME record - alias for another domain name.\n\nGrammar (Reference: RFC 1035 Section 3.3.1):\n```\n[<NAME>] [<TTL>] [<CLASS>] CNAME <CANONICAL_NAME>\n```",
      "properties": {
        "comment": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional comment for this block",
          "title": "Comment"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "DNS name (optional, inherits from previous RR)",
          "title": "Name"
        },
        "ttl": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Time to live in seconds (optional)",
          "title": "Ttl"
        },
        "rr_class": {
          "anyOf": [
            {
              "$ref": "#/$defs/RRClassEnum"
            },
            {
              "type": "null"
            }
          ],
          "default": "IN",
          "description": "Record class"
        },
        "rr_type": {
          "$ref": "#/$defs/RRTypeEnum",
          "default": "CNAME"
        },
        "canonical_name": {
          "description": "Canonical domain name (the real name)",
          "title": "Canonical Name",
          "type": "string"
        }
      },
      "required": [
        "canonical_name"
      ],
      "title": "CNAMERecord",
      "type": "object"
    },
    "DNAMERecord": {
      "description": "DNAME record - delegation name (creates a subtree delegation).\n\nGrammar (Reference: RFC 6672 Section 2):\n```\n[<NAME>] [<TTL>] [<CLASS>] DNAME <TARGET>\n```",
      "properties": {
        "comment": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional comment for this block",
          "title": "Comment"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "DNS name (optional, inherits from previous RR)",
          "title": "Name"
        },
        "ttl": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Time to live in seconds (optional)",
          "title": "Ttl"
        },
        "rr_class": {
          "anyOf": [
            {
              "$ref": "#/$defs/RRClassEnum"
            },
            {
              "type": "null"
            }
          ],
          "default": "IN",
          "description": "Record class"
        },
        "rr_type": {
          "$ref": "#/$defs/RRTypeEnum",
          "default": "DNAME"
        },
        "target": {
          "description": "Target domain name for delegation",
          "title": "Target",
          "type": "string"
        }
      },
      "required": [
        "target"
      ],
      "title": "DNAMERecord",
      "type": "object"
    },
    "DNSKEYRecord": {
      "description": "DNSKEY record - DNS public key (DNSSEC).\n\nGrammar (Reference: RFC 4034):\n```\n[<NAME>] [<TTL>] [<CLASS>] DNSKEY <FLAGS> <PROTOCOL> <ALGORITHM> <PUBLIC_KEY>\n```",
      "properties": {
        "comment": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional comment for this block",
          "title": "Comment"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "DNS name (optional, inherits from previous RR)",
          "title": "Name"
        },
        "ttl": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Time to live in seconds (optional)",
          "title": "Ttl"
        },
        "rr_class": {
          "anyOf": [
            {
              "$ref": "#/$defs/RRClassEnum"
            },
            {
              "type": "null"
            }
          ],
          "default": "IN",
          "description": "Record class"
        },
        "rr_type": {
          "$ref": "#/$defs/RRTypeEnum",
          "default": "DNSKEY"
        },
        "flags": {
          "description": "Flags (256=Zone Key, 257=Secure Entry Point)",
          "maximum": 65535,
          "minimum": 0,
          "title": "Flags",
          "type": "integer"
        },
        "protocol": {
          "default": 3,
          "description": "Protocol (always 3 for DNSSEC)",
          "title": "Protocol",
          "type": "integer"
        },
        "algorithm": {
          "$ref": "#/$defs/DNSSECAlgorithmEnum",
          "description": "DNSSEC algorithm used"
        },
        "public_key": {
          "description": "Base64 encoded public key",
          "title": "Public Key",
          "type": "string"
        }
      },
      "required": [
        "flags",
        "algorithm",
        "public_key"
      ],
      "title": "DNSKEYRecord",
      "type": "object"
    },
    "DNSSECAlgorithmEnum": {
      "description": "DNSSEC algorithms as defined in RFC 4034.",
      "enum": [
        1,
        2,
        3,
        5,
        6,
        7,
        8,
        10,
        12,
        13,
        14,
        15,
        16
      ],
      "title": "DNSSECAlgorithmEnum",
      "type": "integer"
    },
    "DSRecord": {
      "description": "DS record - delegation signer (DNSSEC).\n\nGrammar (Reference: RFC 4034):\n```\n[<NAME>] [<TTL>] [<CLASS>] DS <KEY_TAG> <ALGORITHM> <DIGEST_TYPE> <DIGEST>\n```",
      "properties": {
        "comment": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional comment for this block",
          "title": "Comment"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "DNS name (optional, inherits from previous RR)",
          "title": "Name"
        },
        "ttl": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Time to live in seconds (optional)",
          "title": "Ttl"
        },
        "rr_class": {
          "anyOf": [
            {
              "$ref": "#/$defs/RRClassEnum"
            },
            {
              "type": "null"
            }
          ],
          "default": "IN",
          "description": "Record class"
        },
        "rr_type": {
          "$ref": "#/$defs/RRTypeEnum",
          "default": "DS"
        },
        "key_tag": {
          "description": "Key tag value",
          "maximum": 65535,
          "minimum": 0,
          "title": "Key Tag",
          "type": "integer"
        },
        "algorithm": {
          "$ref": "#/$defs/DNSSECAlgorithmEnum",
          "description": "DNSSEC algorithm used"
        },
        "digest_type": {
          "description": "Digest type (1=SHA-1, 2=SHA-256)",
          "maximum": 255,
          "minimum": 0,
          "title": "Digest Type",
          "type": "integer"
        },
        "digest": {
          "description": "Hexadecimal digest value",
          "title": "Digest",
          "type": "string"
        }
      },
      "required": [
        "key_tag",
        "algorithm",
        "digest_type",
        "digest"
      ],
      "title": "DSRecord",
      "type": "object"
    },
    "HINFORecord": {
      "description": "HINFO record - host information.\n\nGrammar (Reference: RFC 1035 Section 3.3.11):\n```\n[<NAME>] [<TTL>] [<CLASS>] HINFO \"<CPU>\" \"<OS>\"\n```",
      "properties": {
        "comment": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional comment for this block",
          "title": "Comment"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "DNS name (optional, inherits from previous RR)",
          "title": "Name"
        },
        "ttl": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Time to live in seconds (optional)",
          "title": "Ttl"
        },
        "rr_class": {
          "anyOf": [
            {
              "$ref": "#/$defs/RRClassEnum"
            },
            {
              "type": "null"
            }
          ],
          "default": "IN",
          "description": "Record class"
        },
        "rr_type": {
          "$ref": "#/$defs/RRTypeEnum",
          "default": "HINFO"
        },
        "cpu": {
          "description": "CPU type",
          "title": "Cpu",
          "type": "string"
        },
        "os": {
          "description": "Operating system",
          "title": "Os",
          "type": "string"
        }
      },
      "required": [
        "cpu",
        "os"
      ],
      "title": "HINFORecord",
      "type": "object"
    },
    "LOCRecord": {
      "description": "LOC record - geographical location.\n\nGrammar (Reference: RFC 1876):\n```\n[<NAME>] [<TTL>] [<CLASS>] LOC <LATITUDE> <LONGITUDE> <ALTITUDE>\n    <SIZE> <HPREC> <VPREC>\n```",
      "properties": {
        "comment": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional comment for this block",
          "title": "Comment"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "DNS name (optional, inherits from previous RR)",
          "title": "Name"
        },
        "ttl": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Time to live in seconds (optional)",
          "title": "Ttl"
        },
        "rr_class": {
          "anyOf": [
            {
              "$ref": "#/$defs/RRClassEnum"
            },
            {
              "type": "null"
            }
          ],
          "default": "IN",
          "description": "Record class"
        },
        "rr_type": {
          "$ref": "#/$defs/RRTypeEnum",
          "default": "LOC"
        },
        "latitude": {
          "description": "Latitude (e.g., 51 30 12.123 N)",
          "title": "Latitude",
          "type": "string"
        },
        "longitude": {
          "description": "Longitude (e.g., 0 7 39.456 W)",
          "title": "Longitude",
          "type": "string"
        },
        "altitude": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "string"
            }
          ],
          "description": "Altitude in meters",
          "title": "Altitude"
        },
        "size": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "string"
            }
          ],
          "description": "Diameter of sphere in meters",
          "title": "Size"
        },
        "hprecision": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "string"
            }
          ],
          "description": "Horizontal precision in meters",
          "title": "Hprecision"
        },
        "vprecision": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "string"
            }
          ],
          "description": "Vertical precision in meters",
          "title": "Vprecision"
        }
      },
      "required": [
        "latitude",
        "longitude",
        "altitude",
        "size",
        "hprecision",
        "vprecision"
      ],
      "title": "LOCRecord",
      "type": "object"
    },
    "MXRecord": {
      "description": "MX record - mail exchange server with priority.\n\nGrammar (Reference: RFC 1035 Section 3.3.9):\n```\n[<NAME>] [<TTL>] [<CLASS>] MX <PREFERENCE> <EXCHANGE>\n```",
      "properties": {
        "comment": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional comment for this block",
          "title": "Comment"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "DNS name (optional, inherits from previous RR)",
          "title": "Name"
        },
        "ttl": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Time to live in seconds (optional)",
          "title": "Ttl"
        },
        "rr_class": {
          "anyOf": [
            {
              "$ref": "#/$defs/RRClassEnum"
            },
            {
              "type": "null"
            }
          ],
          "default": "IN",
          "description": "Record class"
        },
        "rr_type": {
          "$ref": "#/$defs/RRTypeEnum",
          "default": "MX"
        },
        "preference": {
          "description": "Priority (lower value = higher priority)",
          "maximum": 65535,
          "minimum": 0,
          "title": "Preference",
          "type": "integer"
        },
        "exchange": {
          "description": "Hostname of mail server",
          "title": "Exchange",
          "type": "string"
        }
      },
      "required": [
        "preference",
        "exchange"
      ],
      "title": "MXRecord",
      "type": "object"
    },
    "NAPTRRecord": {
      "description": "NAPTR record - naming authority pointer.\n\nGrammar (Reference: RFC 3403):\n```\n[<NAME>] [<TTL>] [<CLASS>] NAPTR <ORDER> <PREFERENCE> <FLAGS>\n    <SERVICES> \"<REGEXP>\" <REPLACEMENT>\n```",
      "properties": {
        "comment": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional comment for this block",
          "title": "Comment"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "DNS name (optional, inherits from previous RR)",
          "title": "Name"
        },
        "ttl": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Time to live in seconds (optional)",
          "title": "Ttl"
        },
        "rr_class": {
          "anyOf": [
            {
              "$ref": "#/$defs/RRClassEnum"
            },
            {
              "type": "null"
            }
          ],
          "default": "IN",
          "description": "Record class"
        },
        "rr_type": {
          "$ref": "#/$defs/RRTypeEnum",
          "default": "NAPTR"
        },
        "order": {
          "description": "Order (lower processed first)",
          "title": "Order",
          "type": "integer"
        },
        "preference": {
          "description": "Preference within same order",
          "title": "Preference",
          "type": "integer"
        },
        "flags": {
          "description": "Flags (S, A, U, P)",
          "title": "Flags",
          "type": "string"
        },
        "services": {
          "description": "Service parameters",
          "title": "Services",
          "type": "string"
        },
        "regexp": {
          "description": "Regular expression",
          "title": "Regexp",
          "type": "string"
        },
        "replacement": {
          "description": "Replacement dns name",
          "title": "Replacement",
          "type": "string"
        }
      },
      "required": [
        "order",
        "preference",
        "flags",
        "services",
        "regexp",
        "replacement"
      ],
      "title": "NAPTRRecord",
      "type": "object"
    },
    "NSECRecord": {
      "description": "NSEC record - next secure record (DNSSEC).\n\nGrammar (Reference: RFC 4034):\n```\n[<NAME>] [<TTL>] [<CLASS>] NSEC <NEXT_DOMAIN_NAME> <TYPE_BIT_MAPS>\n```",
      "properties": {
        "comment": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional comment for this block",
          "title": "Comment"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "DNS name (optional, inherits from previous RR)",
          "title": "Name"
        },
        "ttl": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Time to live in seconds (optional)",
          "title": "Ttl"
        },
        "rr_class": {
          "anyOf": [
            {
              "$ref": "#/$defs/RRClassEnum"
            },
            {
              "type": "null"
            }
          ],
          "default": "IN",
          "description": "Record class"
        },
        "rr_type": {
          "$ref": "#/$defs/RRTypeEnum",
          "default": "NSEC"
        },
        "next_domain_name": {
          "description": "Next domain name in zone",
          "title": "Next Domain Name",
          "type": "string"
        },
        "type_bit_maps": {
          "description": "Type bit maps",
          "items": {
            "type": "string"
          },
          "title": "Type Bit Maps",
          "type": "array"
        }
      },
      "required": [
        "next_domain_name",
        "type_bit_maps"
      ],
      "title": "NSECRecord",
      "type": "object"
    },
    "NSRecord": {
      "description": "NS record - authoritative name server for a domain.\n\nGrammar (Reference: RFC 1035 Section 3.3.11):\n```\n[<NAME>] [<TTL>] [<CLASS>] NS <NSDNAME>\n```",
      "properties": {
        "comment": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional comment for this block",
          "title": "Comment"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "DNS name (optional, inherits from previous RR)",
          "title": "Name"
        },
        "ttl": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Time to live in seconds (optional)",
          "title": "Ttl"
        },
        "rr_class": {
          "anyOf": [
            {
              "$ref": "#/$defs/RRClassEnum"
            },
            {
              "type": "null"
            }
          ],
          "default": "IN",
          "description": "Record class"
        },
        "rr_type": {
          "$ref": "#/$defs/RRTypeEnum",
          "default": "NS"
        },
        "nsdname": {
          "description": "Hostname of authoritative name server",
          "title": "Nsdname",
          "type": "string"
        }
      },
      "required": [
        "nsdname"
      ],
      "title": "NSRecord",
      "type": "object"
    },
    "PTRRecord": {
      "description": "PTR record - pointer for reverse DNS lookups.\n\nGrammar (Reference: RFC 1035 Section 3.3.12):\n```\n[<NAME>] [<TTL>] [<CLASS>] PTR <DOMAIN_NAME>\n```",
      "properties": {
        "comment": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional comment for this block",
          "title": "Comment"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "DNS name (optional, inherits from previous RR)",
          "title": "Name"
        },
        "ttl": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Time to live in seconds (optional)",
          "title": "Ttl"
        },
        "rr_class": {
          "anyOf": [
            {
              "$ref": "#/$defs/RRClassEnum"
            },
            {
              "type": "null"
            }
          ],
          "default": "IN",
          "description": "Record class"
        },
        "rr_type": {
          "$ref": "#/$defs/RRTypeEnum",
          "default": "PTR"
        },
        "domain_name": {
          "description": "Canonical domain name",
          "title": "Domain Name",
          "type": "string"
        }
      },
      "required": [
        "domain_name"
      ],
      "title": "PTRRecord",
      "type": "object"
    },
    "RPRecord": {
      "description": "RP record - responsible person.\n\nGrammar (Reference: RFC 1183):\n```\n[<NAME>] [<TTL>] [<CLASS>] RP <MBOX_DNAME> <TXT_DNAME>\n```",
      "properties": {
        "comment": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional comment for this block",
          "title": "Comment"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "DNS name (optional, inherits from previous RR)",
          "title": "Name"
        },
        "ttl": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Time to live in seconds (optional)",
          "title": "Ttl"
        },
        "rr_class": {
          "anyOf": [
            {
              "$ref": "#/$defs/RRClassEnum"
            },
            {
              "type": "null"
            }
          ],
          "default": "IN",
          "description": "Record class"
        },
        "rr_type": {
          "$ref": "#/$defs/RRTypeEnum",
          "default": "RP"
        },
        "mbox_dname": {
          "description": "Mailbox domain name",
          "title": "Mbox Dname",
          "type": "string"
        },
        "txt_dname": {
          "description": "TXT record domain name",
          "title": "Txt Dname",
          "type": "string"
        }
      },
      "required": [
        "mbox_dname",
        "txt_dname"
      ],
      "title": "RPRecord",
      "type": "object"
    },
    "RRClassEnum": {
      "enum": [
        "IN",
        "CH",
        "HS"
      ],
      "title": "RRClassEnum",
      "type": "string"
    },
    "RRSIGRecord": {
      "description": "RRSIG record - digital signature for RRset (DNSSEC).\n\nGrammar (Reference: RFC 4034):\n```\n[<NAME>] [<TTL>] [<CLASS>] RRSIG <TYPE_COVERED> <ALGORITHM> <LABELS>\n    <ORIGINAL_TTL> <SIGNATURE_EXPIRATION> <SIGNATURE_INCEPTION>\n    <KEY_TAG> <SIGNER_NAME> <SIGNATURE>\n```",
      "properties": {
        "comment": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional comment for this block",
          "title": "Comment"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "DNS name (optional, inherits from previous RR)",
          "title": "Name"
        },
        "ttl": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Time to live in seconds (optional)",
          "title": "Ttl"
        },
        "rr_class": {
          "anyOf": [
            {
              "$ref": "#/$defs/RRClassEnum"
            },
            {
              "type": "null"
            }
          ],
          "default": "IN",
          "description": "Record class"
        },
        "rr_type": {
          "$ref": "#/$defs/RRTypeEnum",
          "default": "RRSIG"
        },
        "type_covered": {
          "description": "RR type covered by signature",
          "title": "Type Covered",
          "type": "string"
        },
        "algorithm": {
          "$ref": "#/$defs/DNSSECAlgorithmEnum",
          "description": "DNSSEC algorithm used"
        },
        "labels": {
          "description": "Number of labels in original name",
          "title": "Labels",
          "type": "integer"
        },
        "original_ttl": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "string"
            }
          ],
          "description": "Original TTL of RRset",
          "title": "Original Ttl"
        },
        "signature_expiration": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "string"
            }
          ],
          "description": "Signature expiration time (Unix timestamp)",
          "title": "Signature Expiration"
        },
        "signature_inception": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "string"
            }
          ],
          "description": "Signature inception time (Unix timestamp)",
          "title": "Signature Inception"
        },
        "key_tag": {
          "description": "Key tag value",
          "title": "Key Tag",
          "type": "integer"
        },
        "signer_name": {
          "description": "Name of signing key",
          "title": "Signer Name",
          "type": "string"
        },
        "signature": {
          "description": "Base64 encoded signature",
          "title": "Signature",
          "type": "string"
        }
      },
      "required": [
        "type_covered",
        "algorithm",
        "labels",
        "original_ttl",
        "signature_expiration",
        "signature_inception",
        "key_tag",
        "signer_name",
        "signature"
      ],
      "title": "RRSIGRecord",
      "type": "object"
    },
    "RRTypeEnum": {
      "enum": [
        "A",
        "AAAA",
        "CNAME",
        "MX",
        "NS",
        "PTR",
        "SOA",
        "TXT",
        "SPF",
        "SRV",
        "DNAME",
        "DS",
        "DNSKEY",
        "RRSIG",
        "NSEC",
        "SSHFP",
        "TLSA",
        "CERT",
        "CAA",
        "LOC",
        "RP",
        "HINFO",
        "NAPTR"
      ],
      "title": "RRTypeEnum",
      "type": "string"
    },
    "SOARecord": {
      "description": "SOA record - defines authoritative information for the zone.\n\nGrammar (Reference: RFC 1035 Section 3.3.13):\n```\n[<NAME>] [<TTL>] [<CLASS>] SOA <MNAME> <RNAME> (\n    <SERIAL> <REFRESH> <RETRY> <EXPIRE> <MINIMUM>\n)\n```",
      "properties": {
        "comment": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional comment for this block",
          "title": "Comment"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "DNS name (optional, inherits from previous RR)",
          "title": "Name"
        },
        "ttl": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Global $TTL for the zone (optional)",
          "title": "Ttl"
        },
        "rr_class": {
          "anyOf": [
            {
              "$ref": "#/$defs/RRClassEnum"
            },
            {
              "type": "null"
            }
          ],
          "default": "IN",
          "description": "Record class"
        },
        "rr_type": {
          "$ref": "#/$defs/RRTypeEnum",
          "default": "SOA"
        },
        "mname": {
          "description": "Primary master name server",
          "title": "Mname",
          "type": "string"
        },
        "rname": {
          "description": "Email address of responsible person (@ replaced by .)",
          "title": "Rname",
          "type": "string"
        },
        "serial": {
          "description": "Zone serial number (32-bit unsigned)",
          "title": "Serial",
          "type": "integer"
        },
        "refresh": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "string"
            }
          ],
          "description": "Refresh interval in seconds",
          "title": "Refresh"
        },
        "retry": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "string"
            }
          ],
          "description": "Retry interval in seconds",
          "title": "Retry"
        },
        "expire": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "string"
            }
          ],
          "description": "Expire time in seconds",
          "title": "Expire"
        },
        "minimum": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "string"
            }
          ],
          "description": "Minimum TTL in seconds (negative cache)",
          "title": "Minimum"
        },
        "origin": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Global $ORIGIN domain name",
          "title": "Origin"
        }
      },
      "required": [
        "mname",
        "rname",
        "serial",
        "refresh",
        "retry",
        "expire",
        "minimum"
      ],
      "title": "SOARecord",
      "type": "object"
    },
    "SPFRecord": {
      "description": "SPF record - Sender Policy Framework (syntactic equivalent to TXT).\n\nGrammar (Reference: RFC 4408):\n```\n[<NAME>] [<TTL>] [<CLASS>] SPF \"<SPF_DATA>\"\n```",
      "properties": {
        "comment": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional comment for this block",
          "title": "Comment"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "DNS name (optional, inherits from previous RR)",
          "title": "Name"
        },
        "ttl": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Time to live in seconds (optional)",
          "title": "Ttl"
        },
        "rr_class": {
          "anyOf": [
            {
              "$ref": "#/$defs/RRClassEnum"
            },
            {
              "type": "null"
            }
          ],
          "default": "IN",
          "description": "Record class"
        },
        "rr_type": {
          "$ref": "#/$defs/RRTypeEnum",
          "default": "SPF"
        },
        "spf_data": {
          "description": "SPF policy text",
          "items": {
            "type": "string"
          },
          "title": "Spf Data",
          "type": "array"
        }
      },
      "required": [
        "spf_data"
      ],
      "title": "SPFRecord",
      "type": "object"
    },
    "SRVRecord": {
      "description": "SRV record - service location record.\n\nGrammar (Reference: RFC 2782):\n```\n[<NAME>] [<TTL>] [<CLASS>] SRV <PRIORITY> <WEIGHT> <PORT> <TARGET>\n```",
      "properties": {
        "comment": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional comment for this block",
          "title": "Comment"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "DNS name (optional, inherits from previous RR)",
          "title": "Name"
        },
        "ttl": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Time to live in seconds (optional)",
          "title": "Ttl"
        },
        "rr_class": {
          "anyOf": [
            {
              "$ref": "#/$defs/RRClassEnum"
            },
            {
              "type": "null"
            }
          ],
          "default": "IN",
          "description": "Record class"
        },
        "rr_type": {
          "$ref": "#/$defs/RRTypeEnum",
          "default": "SRV"
        },
        "priority": {
          "description": "Priority (lower value = higher priority)",
          "maximum": 65535,
          "minimum": 0,
          "title": "Priority",
          "type": "integer"
        },
        "weight": {
          "description": "Weight for load balancing",
          "maximum": 65535,
          "minimum": 0,
          "title": "Weight",
          "type": "integer"
        },
        "port": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "integer"
            }
          ],
          "description": "Service port number",
          "title": "Port"
        },
        "target": {
          "description": "Target hostname",
          "title": "Target",
          "type": "string"
        }
      },
      "required": [
        "priority",
        "weight",
        "port",
        "target"
      ],
      "title": "SRVRecord",
      "type": "object"
    },
    "SSHFPAlgorithmEnum": {
      "description": "SSHFP algorithm types.",
      "enum": [
        1,
        2,
        3,
        4
      ],
      "title": "SSHFPAlgorithmEnum",
      "type": "integer"
    },
    "SSHFPHashTypeEnum": {
      "description": "SSHFP hash types.",
      "enum": [
        1,
        2
      ],
      "title": "SSHFPHashTypeEnum",
      "type": "integer"
    },
    "SSHFPRecord": {
      "description": "SSHFP record - SSH public key fingerprint.\n\nGrammar (Reference: RFC 4255):\n```\n[<NAME>] [<TTL>] [<CLASS>] SSHFP <ALGORITHM> <HASH_TYPE> <FINGERPRINT>\n```",
      "properties": {
        "comment": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional comment for this block",
          "title": "Comment"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "DNS name (optional, inherits from previous RR)",
          "title": "Name"
        },
        "ttl": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Time to live in seconds (optional)",
          "title": "Ttl"
        },
        "rr_class": {
          "anyOf": [
            {
              "$ref": "#/$defs/RRClassEnum"
            },
            {
              "type": "null"
            }
          ],
          "default": "IN",
          "description": "Record class"
        },
        "rr_type": {
          "$ref": "#/$defs/RRTypeEnum",
          "default": "SSHFP"
        },
        "algorithm": {
          "$ref": "#/$defs/SSHFPAlgorithmEnum",
          "description": "SSH key algorithm"
        },
        "hash_type": {
          "$ref": "#/$defs/SSHFPHashTypeEnum",
          "description": "Hash algorithm used"
        },
        "fingerprint": {
          "description": "Hexadecimal fingerprint",
          "title": "Fingerprint",
          "type": "string"
        }
      },
      "required": [
        "algorithm",
        "hash_type",
        "fingerprint"
      ],
      "title": "SSHFPRecord",
      "type": "object"
    },
    "TLSACertUsageEnum": {
      "description": "TLSA certificate usage values.",
      "enum": [
        0,
        1,
        2,
        3
      ],
      "title": "TLSACertUsageEnum",
      "type": "integer"
    },
    "TLSAMatchingTypeEnum": {
      "description": "TLSA matching type values.",
      "enum": [
        0,
        1,
        2
      ],
      "title": "TLSAMatchingTypeEnum",
      "type": "integer"
    },
    "TLSARecord": {
      "description": "TLSA record - TLS certificate association (DANE).\n\nGrammar (Reference: RFC 6698):\n```\n[<NAME>] [<TTL>] [<CLASS>] TLSA <CERT_USAGE> <SELECTOR> <MATCHING_TYPE> <CERT_DATA>\n```",
      "properties": {
        "comment": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional comment for this block",
          "title": "Comment"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "DNS name (optional, inherits from previous RR)",
          "title": "Name"
        },
        "ttl": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Time to live in seconds (optional)",
          "title": "Ttl"
        },
        "rr_class": {
          "anyOf": [
            {
              "$ref": "#/$defs/RRClassEnum"
            },
            {
              "type": "null"
            }
          ],
          "default": "IN",
          "description": "Record class"
        },
        "rr_type": {
          "$ref": "#/$defs/RRTypeEnum",
          "default": "TLSA"
        },
        "cert_usage": {
          "$ref": "#/$defs/TLSACertUsageEnum",
          "description": "Certificate usage"
        },
        "selector": {
          "$ref": "#/$defs/TLSASelectorEnum",
          "description": "Part of certificate selected"
        },
        "matching_type": {
          "$ref": "#/$defs/TLSAMatchingTypeEnum",
          "description": "How certificate is presented"
        },
        "cert_data": {
          "description": "Certificate association data",
          "title": "Cert Data",
          "type": "string"
        }
      },
      "required": [
        "cert_usage",
        "selector",
        "matching_type",
        "cert_data"
      ],
      "title": "TLSARecord",
      "type": "object"
    },
    "TLSASelectorEnum": {
      "description": "TLSA selector values.",
      "enum": [
        0,
        1
      ],
      "title": "TLSASelectorEnum",
      "type": "integer"
    },
    "TXTRecord": {
      "description": "TXT record - text strings associated with a domain.\n\nGrammar (Reference: RFC 1035 Section 3.3.14):\n```\n[<NAME>] [<TTL>] [<CLASS>] TXT \"<TEXT_DATA>\"\n```",
      "properties": {
        "comment": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional comment for this block",
          "title": "Comment"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "DNS name (optional, inherits from previous RR)",
          "title": "Name"
        },
        "ttl": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Time to live in seconds (optional)",
          "title": "Ttl"
        },
        "rr_class": {
          "anyOf": [
            {
              "$ref": "#/$defs/RRClassEnum"
            },
            {
              "type": "null"
            }
          ],
          "default": "IN",
          "description": "Record class"
        },
        "rr_type": {
          "$ref": "#/$defs/RRTypeEnum",
          "default": "TXT"
        },
        "text_data": {
          "description": "List of text strings (each max 255 chars)",
          "items": {
            "type": "string"
          },
          "title": "Text Data",
          "type": "array"
        }
      },
      "required": [
        "text_data"
      ],
      "title": "TXTRecord",
      "type": "object"
    },
    "UpdatePolicyBlock": {
      "description": "Update-policy block for zone.\n\nGrammar: update-policy ( local | { ( deny | grant ) <string> ( 6to4-self | external | ... )\n          [ <string> ] <rrtypelist>; ... } );",
      "properties": {
        "comment": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional comment for this block",
          "title": "Comment"
        },
        "local": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "string"
            },
            {
              "type": "integer"
            },
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Use local policy",
          "title": "Local"
        },
        "rules": {
          "description": "List of rules",
          "items": {
            "$ref": "#/$defs/UpdatePolicyRule"
          },
          "title": "Rules",
          "type": "array"
        }
      },
      "title": "UpdatePolicyBlock",
      "type": "object"
    },
    "UpdatePolicyRule": {
      "description": "Rule for update-policy.\n\nGrammar: ( deny | grant ) <string> ( 6to4-self | external | krb5-self | krb5-selfsub |\n          krb5-subdomain | krb5-subdomain-self-rhs | ms-self | ms-selfsub |\n          ms-subdomain | ms-subdomain-self-rhs | name | self | selfsub | selfwild |\n          subdomain | tcp-self | wildcard | zonesub ) [ <string> ] <rrtypelist>;",
      "properties": {
        "comment": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional comment for this block",
          "title": "Comment"
        },
        "action": {
          "description": "Action: deny or grant",
          "enum": [
            "deny",
            "grant"
          ],
          "title": "Action",
          "type": "string"
        },
        "identity": {
          "description": "Identifier (key or domain name)",
          "title": "Identity",
          "type": "string"
        },
        "rule_type": {
          "$ref": "#/$defs/UpdatePolicyRuleTypeEnum",
          "description": "Rule type"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Name for matching (optional)",
          "title": "Name"
        },
        "record_types": {
          "description": "DNS record types",
          "items": {
            "type": "string"
          },
          "title": "Record Types",
          "type": "array"
        }
      },
      "required": [
        "action",
        "identity",
        "rule_type"
      ],
      "title": "UpdatePolicyRule",
      "type": "object"
    },
    "UpdatePolicyRuleTypeEnum": {
      "description": "Rule types for update-policy.",
      "enum": [
        "name",
        "subdomain",
        "zonesub",
        "wildcard",
        "self",
        "selfsub",
        "selfwild",
        "ms-self",
        "ms-selfsub",
        "ms-subdomain",
        "ms-subdomain-self-rhs",
        "krb5-self",
        "krb5-selfsub",
        "krb5-subdomain",
        "krb5-subdomain-self-rhs",
        "tcp-self",
        "6to4-self",
        "external"
      ],
      "title": "UpdatePolicyRuleTypeEnum",
      "type": "string"
    },
    "ZoneClassEnum": {
      "description": "Zone classes in BIND.",
      "enum": [
        "IN",
        "HS",
        "CHAOS"
      ],
      "title": "ZoneClassEnum",
      "type": "string"
    },
    "ZoneTypeEnum": {
      "description": "Zone types in BIND.",
      "enum": [
        "primary",
        "secondary",
        "mirror",
        "hint",
        "stub",
        "static-stub",
        "forward",
        "redirect",
        "in-view"
      ],
      "title": "ZoneTypeEnum",
      "type": "string"
    }
  },
  "description": "Zone block for BIND configuration.\n\nGrammar:\nzone <string> [ <class> ] {\n    type primary | secondary | mirror | hint | stub | static-stub | forward | redirect;\n    ... # options depending on type\n};",
  "properties": {
    "comment": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Optional comment for this block",
      "title": "Comment"
    },
    "sig_signing_nodes": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Maximum nodes to examine per quantum when signing",
      "title": "Sig Signing Nodes"
    },
    "sig_signing_signatures": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Signature threshold per quantum when signing",
      "title": "Sig Signing Signatures"
    },
    "sig_signing_type": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Private RDATA type for signing-state records",
      "title": "Sig Signing Type"
    },
    "min_transfer_rate_in": {
      "anyOf": [
        {
          "maxItems": 2,
          "minItems": 2,
          "prefixItems": [
            {
              "type": "integer"
            },
            {
              "type": "integer"
            }
          ],
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Minimum inbound transfer rate",
      "title": "Min Transfer Rate In"
    },
    "max_ixfr_ratio": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "integer"
        },
        {
          "type": "number"
        },
        {
          "const": "unlimited",
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Maximum IXFR size as percentage of zone",
      "title": "Max Ixfr Ratio"
    },
    "dnssec_policy": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "DNSSEC key and signing policy",
      "title": "Dnssec Policy"
    },
    "key_directory": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "DNSSEC key directory",
      "title": "Key Directory"
    },
    "zone_statistics": {
      "anyOf": [
        {
          "type": "boolean"
        },
        {
          "type": "string"
        },
        {
          "type": "integer"
        },
        {
          "type": "number"
        },
        {
          "enum": [
            "full",
            "terse",
            "none"
          ],
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Level of zone statistics gathering",
      "title": "Zone Statistics"
    },
    "max_journal_size": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "integer"
        },
        {
          "enum": [
            "default",
            "unlimited"
          ],
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Maximum journal file size",
      "title": "Max Journal Size"
    },
    "max_records": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Maximum records per zone",
      "title": "Max Records"
    },
    "max_records_per_type": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Maximum records per RRset",
      "title": "Max Records Per Type"
    },
    "max_types_per_name": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Maximum RR types per owner name",
      "title": "Max Types Per Name"
    },
    "forward": {
      "anyOf": [
        {
          "enum": [
            "first",
            "only"
          ],
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Forwarding behavior",
      "title": "Forward"
    },
    "check_dup_records": {
      "anyOf": [
        {
          "enum": [
            "fail",
            "warn",
            "ignore"
          ],
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Check for duplicate records in primary zones",
      "title": "Check Dup Records"
    },
    "check_integrity": {
      "anyOf": [
        {
          "type": "boolean"
        },
        {
          "type": "string"
        },
        {
          "type": "integer"
        },
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Perform zone integrity checks",
      "title": "Check Integrity"
    },
    "check_mx": {
      "anyOf": [
        {
          "enum": [
            "fail",
            "warn",
            "ignore"
          ],
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Check MX records",
      "title": "Check Mx"
    },
    "check_mx_cname": {
      "anyOf": [
        {
          "enum": [
            "fail",
            "warn",
            "ignore"
          ],
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Check MX records referring to CNAMEs",
      "title": "Check Mx Cname"
    },
    "check_sibling": {
      "anyOf": [
        {
          "type": "boolean"
        },
        {
          "type": "string"
        },
        {
          "type": "integer"
        },
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Check for sibling glue",
      "title": "Check Sibling"
    },
    "check_spf": {
      "anyOf": [
        {
          "enum": [
            "warn",
            "ignore"
          ],
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Check for TXT SPF records",
      "title": "Check Spf"
    },
    "check_srv_cname": {
      "anyOf": [
        {
          "enum": [
            "fail",
            "warn",
            "ignore"
          ],
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Check SRV records referring to CNAMEs",
      "title": "Check Srv Cname"
    },
    "check_svcb": {
      "anyOf": [
        {
          "type": "boolean"
        },
        {
          "type": "string"
        },
        {
          "type": "integer"
        },
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Check SVCB records",
      "title": "Check Svcb"
    },
    "check_wildcard": {
      "anyOf": [
        {
          "type": "boolean"
        },
        {
          "type": "string"
        },
        {
          "type": "integer"
        },
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Check for non-terminal wildcards",
      "title": "Check Wildcard"
    },
    "ixfr_from_differences": {
      "anyOf": [
        {
          "type": "boolean"
        },
        {
          "type": "string"
        },
        {
          "type": "integer"
        },
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Generate IXFR from differences",
      "title": "Ixfr From Differences"
    },
    "multi_master": {
      "anyOf": [
        {
          "type": "boolean"
        },
        {
          "type": "string"
        },
        {
          "type": "integer"
        },
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Multiple primary servers for a zone",
      "title": "Multi Master"
    },
    "notify": {
      "anyOf": [
        {
          "type": "boolean"
        },
        {
          "type": "string"
        },
        {
          "type": "integer"
        },
        {
          "type": "number"
        },
        {
          "enum": [
            "explicit",
            "master-only",
            "primary-only"
          ],
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Send NOTIFY messages on zone changes",
      "title": "Notify"
    },
    "notify_to_soa": {
      "anyOf": [
        {
          "type": "boolean"
        },
        {
          "type": "string"
        },
        {
          "type": "integer"
        },
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Send NOTIFY to SOA MNAME",
      "title": "Notify To Soa"
    },
    "request_expire": {
      "anyOf": [
        {
          "type": "boolean"
        },
        {
          "type": "string"
        },
        {
          "type": "integer"
        },
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Request EDNS EXPIRE value",
      "title": "Request Expire"
    },
    "request_ixfr": {
      "anyOf": [
        {
          "type": "boolean"
        },
        {
          "type": "string"
        },
        {
          "type": "integer"
        },
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Request IXFR from primaries",
      "title": "Request Ixfr"
    },
    "try_tcp_refresh": {
      "anyOf": [
        {
          "type": "boolean"
        },
        {
          "type": "string"
        },
        {
          "type": "integer"
        },
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Try TCP if UDP refresh fails",
      "title": "Try Tcp Refresh"
    },
    "zero_no_soa_ttl": {
      "anyOf": [
        {
          "type": "boolean"
        },
        {
          "type": "string"
        },
        {
          "type": "integer"
        },
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Set TTL to 0 for negative SOA responses",
      "title": "Zero No Soa Ttl"
    },
    "allow_query": {
      "anyOf": [
        {
          "items": {},
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Hosts allowed to send queries",
      "title": "Allow Query"
    },
    "allow_query_on": {
      "anyOf": [
        {
          "items": {},
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Local addresses allowed to receive queries",
      "title": "Allow Query On"
    },
    "allow_transfer": {
      "anyOf": [
        {
          "items": {},
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Hosts allowed to receive zone transfers",
      "title": "Allow Transfer"
    },
    "allow_update": {
      "anyOf": [
        {
          "items": {},
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Hosts allowed to submit dynamic updates",
      "title": "Allow Update"
    },
    "allow_notify": {
      "anyOf": [
        {
          "items": {},
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Hosts allowed to send NOTIFY messages",
      "title": "Allow Notify"
    },
    "allow_update_forwarding": {
      "anyOf": [
        {
          "items": {},
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Hosts allowed to forward dynamic updates",
      "title": "Allow Update Forwarding"
    },
    "name": {
      "description": "Zone name",
      "title": "Name",
      "type": "string"
    },
    "zone_type": {
      "$ref": "#/$defs/ZoneTypeEnum",
      "description": "Zone type"
    },
    "zone_class": {
      "anyOf": [
        {
          "$ref": "#/$defs/ZoneClassEnum"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Zone class"
    },
    "check_names": {
      "anyOf": [
        {
          "enum": [
            "fail",
            "warn",
            "ignore"
          ],
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Check names policy",
      "title": "Check Names"
    },
    "checkds": {
      "anyOf": [
        {
          "type": "boolean"
        },
        {
          "type": "string"
        },
        {
          "type": "integer"
        },
        {
          "type": "number"
        },
        {
          "const": "explicit",
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Check DS records. Zone-only in BIND9 - not valid in options/view.",
      "title": "Checkds"
    },
    "inline_signing": {
      "anyOf": [
        {
          "type": "boolean"
        },
        {
          "type": "string"
        },
        {
          "type": "integer"
        },
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Maintain separate signed version of the zone. Zone-only in BIND9 - not valid in options/view.",
      "title": "Inline Signing"
    },
    "database": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Database type for zone storage",
      "title": "Database"
    },
    "file": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Zone file name",
      "title": "File"
    },
    "forwarders": {
      "anyOf": [
        {
          "items": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "format": "ipv4",
                "type": "string"
              },
              {
                "format": "ipv6",
                "type": "string"
              }
            ]
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Forwarding servers",
      "title": "Forwarders"
    },
    "masterfile_format": {
      "anyOf": [
        {
          "enum": [
            "raw",
            "text"
          ],
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Zone file format",
      "title": "Masterfile Format"
    },
    "masterfile_style": {
      "anyOf": [
        {
          "enum": [
            "full",
            "relative"
          ],
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Zone dump style",
      "title": "Masterfile Style"
    },
    "also_notify": {
      "anyOf": [
        {
          "items": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "maxItems": 2,
                "minItems": 2,
                "prefixItems": [
                  {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "format": "ipv4",
                        "type": "string"
                      },
                      {
                        "format": "ipv6",
                        "type": "string"
                      }
                    ]
                  },
                  {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "integer"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                ],
                "type": "array"
              }
            ]
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Additional notify recipients",
      "title": "Also Notify"
    },
    "journal": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Journal file name",
      "title": "Journal"
    },
    "dnssec_loadkeys_interval": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "DNSSEC key repository check interval",
      "title": "Dnssec Loadkeys Interval"
    },
    "max_transfer_idle_out": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Maximum idle time for outbound transfers",
      "title": "Max Transfer Idle Out"
    },
    "max_transfer_time_out": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Maximum outbound transfer time",
      "title": "Max Transfer Time Out"
    },
    "notify_defer": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Delay before sending NOTIFY",
      "title": "Notify Defer"
    },
    "notify_delay": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Delay between NOTIFY message sets",
      "title": "Notify Delay"
    },
    "notify_source": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "format": "ipv4",
          "type": "string"
        },
        {
          "const": "*",
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Source IPv4 address for NOTIFY",
      "title": "Notify Source"
    },
    "notify_source_v6": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "format": "ipv6",
          "type": "string"
        },
        {
          "const": "*",
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Source IPv6 address for NOTIFY",
      "title": "Notify Source V6"
    },
    "parental_agents": {
      "anyOf": [
        {
          "items": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "maxItems": 2,
                "minItems": 2,
                "prefixItems": [
                  {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "format": "ipv4",
                        "type": "string"
                      },
                      {
                        "format": "ipv6",
                        "type": "string"
                      }
                    ]
                  },
                  {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "integer"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                ],
                "type": "array"
              }
            ]
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Parental agents for DNSSEC key rollover",
      "title": "Parental Agents"
    },
    "parental_source": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "format": "ipv4",
          "type": "string"
        },
        {
          "const": "*",
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Source IPv4 for parental agent queries",
      "title": "Parental Source"
    },
    "parental_source_v6": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "format": "ipv6",
          "type": "string"
        },
        {
          "const": "*",
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Source IPv6 for parental agent queries",
      "title": "Parental Source V6"
    },
    "serial_update_method": {
      "anyOf": [
        {
          "enum": [
            "date",
            "increment",
            "unixtime"
          ],
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Dynamic DNS serial number update method",
      "title": "Serial Update Method"
    },
    "update_policy": {
      "anyOf": [
        {
          "$ref": "#/$defs/UpdatePolicyBlock"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Dynamic update policy"
    },
    "max_refresh_time": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Maximum refresh time",
      "title": "Max Refresh Time"
    },
    "max_retry_time": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Maximum retry time",
      "title": "Max Retry Time"
    },
    "max_transfer_idle_in": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Maximum idle time for inbound transfers",
      "title": "Max Transfer Idle In"
    },
    "max_transfer_time_in": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Maximum inbound transfer time",
      "title": "Max Transfer Time In"
    },
    "min_refresh_time": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Minimum refresh time",
      "title": "Min Refresh Time"
    },
    "min_retry_time": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Minimum retry time",
      "title": "Min Retry Time"
    },
    "primaries": {
      "anyOf": [
        {
          "items": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "maxItems": 2,
                "minItems": 2,
                "prefixItems": [
                  {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "format": "ipv4",
                        "type": "string"
                      },
                      {
                        "format": "ipv6",
                        "type": "string"
                      }
                    ]
                  },
                  {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "integer"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                ],
                "type": "array"
              }
            ]
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Primary servers for secondary zone",
      "title": "Primaries"
    },
    "transfer_source": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "format": "ipv4",
          "type": "string"
        },
        {
          "const": "*",
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Source IPv4 for zone transfers",
      "title": "Transfer Source"
    },
    "transfer_source_v6": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "format": "ipv6",
          "type": "string"
        },
        {
          "const": "*",
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Source IPv6 for zone transfers",
      "title": "Transfer Source V6"
    },
    "server_addresses": {
      "anyOf": [
        {
          "items": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "format": "ipv4",
                "type": "string"
              },
              {
                "format": "ipv6",
                "type": "string"
              }
            ]
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "IP addresses for static-stub zone",
      "title": "Server Addresses"
    },
    "server_names": {
      "anyOf": [
        {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Server names for static-stub zone",
      "title": "Server Names"
    },
    "in_view": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "View in which zone is defined",
      "title": "In View"
    },
    "resource_records": {
      "description": "List of resource records",
      "items": {
        "anyOf": [
          {
            "$ref": "#/$defs/ARecord"
          },
          {
            "$ref": "#/$defs/AAAARecord"
          },
          {
            "$ref": "#/$defs/CNAMERecord"
          },
          {
            "$ref": "#/$defs/DNAMERecord"
          },
          {
            "$ref": "#/$defs/MXRecord"
          },
          {
            "$ref": "#/$defs/NSRecord"
          },
          {
            "$ref": "#/$defs/PTRRecord"
          },
          {
            "$ref": "#/$defs/SOARecord"
          },
          {
            "$ref": "#/$defs/TXTRecord"
          },
          {
            "$ref": "#/$defs/SPFRecord"
          },
          {
            "$ref": "#/$defs/SRVRecord"
          },
          {
            "$ref": "#/$defs/DSRecord"
          },
          {
            "$ref": "#/$defs/DNSKEYRecord"
          },
          {
            "$ref": "#/$defs/RRSIGRecord"
          },
          {
            "$ref": "#/$defs/NSECRecord"
          },
          {
            "$ref": "#/$defs/SSHFPRecord"
          },
          {
            "$ref": "#/$defs/TLSARecord"
          },
          {
            "$ref": "#/$defs/CAARecord"
          },
          {
            "$ref": "#/$defs/CERTRecord"
          },
          {
            "$ref": "#/$defs/LOCRecord"
          },
          {
            "$ref": "#/$defs/NAPTRRecord"
          },
          {
            "$ref": "#/$defs/HINFORecord"
          },
          {
            "$ref": "#/$defs/RPRecord"
          }
        ]
      },
      "title": "Resource Records",
      "type": "array"
    }
  },
  "required": [
    "name",
    "zone_type"
  ],
  "title": "ZoneBlock",
  "type": "object"
}

Fields:

Validators:

name pydantic-field

name: domain_name_BIND

Zone name

zone_type pydantic-field

zone_type: ZoneTypeEnum

Zone type

zone_class pydantic-field

zone_class: ZoneClassEnum | None = None

Zone class

check_names pydantic-field

check_names: Literal["fail", "warn", "ignore"] | None = None

Check names policy

checkds pydantic-field

checkds: boolean_BIND | Literal['explicit'] | None = None

Check DS records. Zone-only in BIND9 - not valid in options/view.

inline_signing pydantic-field

inline_signing: boolean_BIND | None = None

Maintain separate signed version of the zone. Zone-only in BIND9 - not valid in options/view.

database pydantic-field

database: string_BIND | None = None

Database type for zone storage

file pydantic-field

file: quoted_string_BIND | None = None

Zone file name

forwarders pydantic-field

forwarders: (
    list[ip_v4_address_BIND | ip_v6_address_BIND] | None
) = None

Forwarding servers

masterfile_format pydantic-field

masterfile_format: Literal['raw', 'text'] | None = None

Zone file format

masterfile_style pydantic-field

masterfile_style: Literal['full', 'relative'] | None = None

Zone dump style

also_notify pydantic-field

also_notify: (
    list[
        string_BIND
        | tuple[
            ip_v4_address_BIND | ip_v6_address_BIND,
            port_BIND | None,
        ]
    ]
    | None
) = None

Additional notify recipients

journal pydantic-field

journal: quoted_string_BIND | None = None

Journal file name

dnssec_loadkeys_interval pydantic-field

dnssec_loadkeys_interval: integer_BIND | None = None

DNSSEC key repository check interval

max_transfer_idle_out pydantic-field

max_transfer_idle_out: integer_BIND | None = None

Maximum idle time for outbound transfers

max_transfer_time_out pydantic-field

max_transfer_time_out: integer_BIND | None = None

Maximum outbound transfer time

notify_defer pydantic-field

notify_defer: integer_BIND | None = None

Delay before sending NOTIFY

notify_delay pydantic-field

notify_delay: integer_BIND | None = None

Delay between NOTIFY message sets

notify_source pydantic-field

notify_source: ip_v4_address_BIND | Literal["*"] | None = (
    None
)

Source IPv4 address for NOTIFY

notify_source_v6 pydantic-field

notify_source_v6: (
    ip_v6_address_BIND | Literal["*"] | None
) = None

Source IPv6 address for NOTIFY

parental_agents pydantic-field

parental_agents: (
    list[
        string_BIND
        | tuple[
            ip_v4_address_BIND | ip_v6_address_BIND,
            port_BIND | None,
        ]
    ]
    | None
) = None

Parental agents for DNSSEC key rollover

parental_source pydantic-field

parental_source: (
    ip_v4_address_BIND | Literal["*"] | None
) = None

Source IPv4 for parental agent queries

parental_source_v6 pydantic-field

parental_source_v6: (
    ip_v6_address_BIND | Literal["*"] | None
) = None

Source IPv6 for parental agent queries

serial_update_method pydantic-field

serial_update_method: (
    Literal["date", "increment", "unixtime"] | None
) = None

Dynamic DNS serial number update method

update_policy pydantic-field

update_policy: UpdatePolicyBlock | None = None

Dynamic update policy

max_refresh_time pydantic-field

max_refresh_time: integer_BIND | None = None

Maximum refresh time

max_retry_time pydantic-field

max_retry_time: integer_BIND | None = None

Maximum retry time

max_transfer_idle_in pydantic-field

max_transfer_idle_in: integer_BIND | None = None

Maximum idle time for inbound transfers

max_transfer_time_in pydantic-field

max_transfer_time_in: integer_BIND | None = None

Maximum inbound transfer time

min_refresh_time pydantic-field

min_refresh_time: integer_BIND | None = None

Minimum refresh time

min_retry_time pydantic-field

min_retry_time: integer_BIND | None = None

Minimum retry time

primaries pydantic-field

primaries: (
    list[
        string_BIND
        | tuple[
            ip_v4_address_BIND | ip_v6_address_BIND,
            port_BIND | None,
        ]
    ]
    | None
) = None

Primary servers for secondary zone

transfer_source pydantic-field

transfer_source: (
    ip_v4_address_BIND | Literal["*"] | None
) = None

Source IPv4 for zone transfers

transfer_source_v6 pydantic-field

transfer_source_v6: (
    ip_v6_address_BIND | Literal["*"] | None
) = None

Source IPv6 for zone transfers

server_addresses pydantic-field

server_addresses: (
    list[ip_v4_address_BIND | ip_v6_address_BIND] | None
) = None

IP addresses for static-stub zone

server_names pydantic-field

server_names: list[string_BIND] | None = None

Server names for static-stub zone

in_view pydantic-field

in_view: string_BIND | None = None

View in which zone is defined

resource_records pydantic-field

resource_records: list[ResourceRecordType]

List of resource records

validate_zone_type_specific_fields pydantic-validator

validate_zone_type_specific_fields() -> ZoneBlock

Validate fields based on zone type.

model_bind_syntax

model_bind_syntax(indent_level: int = 0) -> str

Render as zone <name> { ... };.

An in-view zone has no type statement at all - just in-view <viewname>; on its own; named-checkconf rejects type in-view; with "'in-view' unexpected".

model_bind_syntax_zone_file

model_bind_syntax_zone_file(indent_level: int = 0) -> str

Generate zone file syntax for BIND zone files.

Grammar:

$TTL <duration>
$ORIGIN <domain_name>

; Zone records follow:
<name> [<ttl>] [<class>] <type> <rdata>
...

ZoneTypeEnum

Bases: str, Enum

Zone types in BIND.

ZoneClassEnum

Bases: str, Enum

Zone classes in BIND.

UpdatePolicyBlock pydantic-model

Bases: BindBaseModel

Update-policy block for zone.

update-policy ( local | { ( deny | grant ) ( 6to4-self | external | ... )

[ ] ; ... } );

Show JSON schema:
{
  "$defs": {
    "UpdatePolicyRule": {
      "description": "Rule for update-policy.\n\nGrammar: ( deny | grant ) <string> ( 6to4-self | external | krb5-self | krb5-selfsub |\n          krb5-subdomain | krb5-subdomain-self-rhs | ms-self | ms-selfsub |\n          ms-subdomain | ms-subdomain-self-rhs | name | self | selfsub | selfwild |\n          subdomain | tcp-self | wildcard | zonesub ) [ <string> ] <rrtypelist>;",
      "properties": {
        "comment": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional comment for this block",
          "title": "Comment"
        },
        "action": {
          "description": "Action: deny or grant",
          "enum": [
            "deny",
            "grant"
          ],
          "title": "Action",
          "type": "string"
        },
        "identity": {
          "description": "Identifier (key or domain name)",
          "title": "Identity",
          "type": "string"
        },
        "rule_type": {
          "$ref": "#/$defs/UpdatePolicyRuleTypeEnum",
          "description": "Rule type"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Name for matching (optional)",
          "title": "Name"
        },
        "record_types": {
          "description": "DNS record types",
          "items": {
            "type": "string"
          },
          "title": "Record Types",
          "type": "array"
        }
      },
      "required": [
        "action",
        "identity",
        "rule_type"
      ],
      "title": "UpdatePolicyRule",
      "type": "object"
    },
    "UpdatePolicyRuleTypeEnum": {
      "description": "Rule types for update-policy.",
      "enum": [
        "name",
        "subdomain",
        "zonesub",
        "wildcard",
        "self",
        "selfsub",
        "selfwild",
        "ms-self",
        "ms-selfsub",
        "ms-subdomain",
        "ms-subdomain-self-rhs",
        "krb5-self",
        "krb5-selfsub",
        "krb5-subdomain",
        "krb5-subdomain-self-rhs",
        "tcp-self",
        "6to4-self",
        "external"
      ],
      "title": "UpdatePolicyRuleTypeEnum",
      "type": "string"
    }
  },
  "description": "Update-policy block for zone.\n\nGrammar: update-policy ( local | { ( deny | grant ) <string> ( 6to4-self | external | ... )\n          [ <string> ] <rrtypelist>; ... } );",
  "properties": {
    "comment": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Optional comment for this block",
      "title": "Comment"
    },
    "local": {
      "anyOf": [
        {
          "type": "boolean"
        },
        {
          "type": "string"
        },
        {
          "type": "integer"
        },
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Use local policy",
      "title": "Local"
    },
    "rules": {
      "description": "List of rules",
      "items": {
        "$ref": "#/$defs/UpdatePolicyRule"
      },
      "title": "Rules",
      "type": "array"
    }
  },
  "title": "UpdatePolicyBlock",
  "type": "object"
}

Fields:

Validators:

local pydantic-field

local: boolean_BIND | None = None

Use local policy

rules pydantic-field

rules: list[UpdatePolicyRule]

List of rules

validate_update_policy pydantic-validator

validate_update_policy() -> UpdatePolicyBlock

Validate update policy.

Compares local against the string "yes" rather than using it as a Python truth value: boolean_BIND normalizes it to "yes"/"no", and "no" is itself truthy in Python.

UpdatePolicyRule pydantic-model

Bases: BindBaseModel

Rule for update-policy.

( deny | grant ) ( 6to4-self | external | krb5-self | krb5-selfsub |

krb5-subdomain | krb5-subdomain-self-rhs | ms-self | ms-selfsub | ms-subdomain | ms-subdomain-self-rhs | name | self | selfsub | selfwild | subdomain | tcp-self | wildcard | zonesub ) [ ] ;

Show JSON schema:
{
  "$defs": {
    "UpdatePolicyRuleTypeEnum": {
      "description": "Rule types for update-policy.",
      "enum": [
        "name",
        "subdomain",
        "zonesub",
        "wildcard",
        "self",
        "selfsub",
        "selfwild",
        "ms-self",
        "ms-selfsub",
        "ms-subdomain",
        "ms-subdomain-self-rhs",
        "krb5-self",
        "krb5-selfsub",
        "krb5-subdomain",
        "krb5-subdomain-self-rhs",
        "tcp-self",
        "6to4-self",
        "external"
      ],
      "title": "UpdatePolicyRuleTypeEnum",
      "type": "string"
    }
  },
  "description": "Rule for update-policy.\n\nGrammar: ( deny | grant ) <string> ( 6to4-self | external | krb5-self | krb5-selfsub |\n          krb5-subdomain | krb5-subdomain-self-rhs | ms-self | ms-selfsub |\n          ms-subdomain | ms-subdomain-self-rhs | name | self | selfsub | selfwild |\n          subdomain | tcp-self | wildcard | zonesub ) [ <string> ] <rrtypelist>;",
  "properties": {
    "comment": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Optional comment for this block",
      "title": "Comment"
    },
    "action": {
      "description": "Action: deny or grant",
      "enum": [
        "deny",
        "grant"
      ],
      "title": "Action",
      "type": "string"
    },
    "identity": {
      "description": "Identifier (key or domain name)",
      "title": "Identity",
      "type": "string"
    },
    "rule_type": {
      "$ref": "#/$defs/UpdatePolicyRuleTypeEnum",
      "description": "Rule type"
    },
    "name": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Name for matching (optional)",
      "title": "Name"
    },
    "record_types": {
      "description": "DNS record types",
      "items": {
        "type": "string"
      },
      "title": "Record Types",
      "type": "array"
    }
  },
  "required": [
    "action",
    "identity",
    "rule_type"
  ],
  "title": "UpdatePolicyRule",
  "type": "object"
}

Fields:

action pydantic-field

action: Literal['deny', 'grant']

Action: deny or grant

identity pydantic-field

identity: string_BIND

Identifier (key or domain name)

rule_type pydantic-field

rule_type: UpdatePolicyRuleTypeEnum

Rule type

name pydantic-field

name: string_BIND | None = None

Name for matching (optional)

record_types pydantic-field

record_types: list[string_BIND]

DNS record types

UpdatePolicyRuleTypeEnum

Bases: str, Enum

Rule types for update-policy.