set_dns
ActiveTool of run.domani/domani
Upsert DNS records for a domain you own, at the rrset level: records at a (type, name) you send replace that rrset; rrsets you don't mention are preserved (NS never touched). An automatic zone backup is taken before every write. Best practice: call get_dns first and pass its zone_version so a concurrent change fails with DNS_VERSION_CONFLICT instead of being clobbered. Common patterns: Vercel (A @ 76.76.21.21), GitHub Pages (CNAME @ user.github.io), Cloudflare Pages (CNAME @ project.pages.dev)
Parameters schema
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"domain",
"records"
],
"properties": {
"domain": {
"type": "string",
"description": "Domain name to set DNS records for"
},
"records": {
"type": "array",
"items": {
"type": "object",
"required": [
"type",
"name",
"value",
"ttl"
],
"properties": {
"ttl": {
"type": "number",
"description": "Time to live in seconds, e.g. 3600"
},
"name": {
"type": "string",
"description": "Record name, e.g. @ or subdomain (e.g. _443._tcp for TLSA)"
},
"type": {
"enum": [
"A",
"AAAA",
"CNAME",
"MX",
"TXT",
"NS",
"TLSA"
],
"type": "string",
"description": "DNS record type (TLSA for DANE)"
},
"value": {
"type": "string",
"description": "Record value: IP/hostname, or TLSA rdata like '3 1 1 abc123...'"
},
"priority": {
"type": "number",
"description": "Priority for MX records"
}
}
},
"description": "Array of DNS records to set"
},
"zone_version": {
"type": "string",
"description": "The zone_version from get_dns - rejects the write with DNS_VERSION_CONFLICT if the zone changed since"
}
}
}Parent server
run.domani/domani
https://github.com/gwendall/domani
1/7 registries