dnswizdocs

Record types

Everything dnswiz can serve, what each one is for, the exact data shape stored, and the validation rules the API enforces.

Notation. name is the leaf (www, @ for apex). value shapes are what’s stored in the record’s data field, the same JSON the API accepts and returns.

Plain DNS

A

IPv4 address.

AAAA

IPv6 address.

CNAME

Alias to another name. The query result is the target’s resolution.

ANAME

Apex CNAME flattening. The engine periodically resolves the target via public resolvers (1.1.1.1 / 8.8.8.8 by default) and serves the resulting A/AAAA records under your apex name.

MX

Mail exchanger with priority. The console renders priority + host as two fields; storage is a single string "<priority> <host>".

SRV

Service location. Storage is one string of the four standard fields.

CAA

Certificate authority authorization.

PTR

Reverse DNS pointer.

TXT

Arbitrary text. Used for SPF, DKIM, ACME challenges, etc.

GSLB (global load balancing)

These are dnswiz-specific record types. They aren’t standard DNS RRs. The engine resolves them to A/AAAA answers at query time using the referenced pool/endpoint state.

POOL

Serves answers from a pool. The pool’s selection_method (weighted, active-passive, round-robin) decides which member each query gets.

GEO

Per-region selection. Pick a different pool (or endpoint) based on the querying resolver’s continent.

CANARY

Time-ramped split between two targets. Use for blue/green deploys.

Validation rules

Every rule below is enforced on create and update, a bad record is rejected, never half-saved.

Rule
Names are normalized (trailing dot added/stripped consistently).
TTL must be ≥ 0.
A name with a CNAME can have no other records, and vice-versa (RFC 1034).
ANAME is apex-only; CNAME may not be at the apex.
MX requires a priority.
SRV requires all four fields, with numeric priority/weight/port.
CAA requires a valid tag (issue/issuewild/iodef) and flags 0–255.
TXT is capped at 4096 bytes, no NUL bytes.
A GSLB target points at exactly one of a pool or an endpoint.
GEO needs at least one region, with unique region codes.
A (name, type) pair must be unique within a zone.

If a write is rejected you get a 400 (or 409 for a conflict); the response’s type field links to the matching error doc.