DNS
OAuth-scopes: lezen vereist dns:read, schrijven vereist dns:write.
Rechten per zone
De scope is niet de hele controle — de gebruiker achter de credential heeft ook rechten nodig op het account van de zone:
- Een zone wijzigen (DNSSEC) en records ervan aanmaken, bijwerken of verwijderen vereist bewerkrechten.
- Een zone verwijderen vereist het recht verwijderen.
Ontbreekt een van beide, dan volgt 403 met code: "forbidden".
Account-bearer-API-sleutels die niet aan een gebruiker zijn gekoppeld,
vallen niet onder deze controle per gebruiker.
DNS-zones
DNS-zones weergeven
Dit is niet account-scoped en retourneert ALLE dns-zones waartoe deze gebruiker toegang heeft.
GET /api/dns_zones
Params (optioneel)
- page: Integer | paginanummer (standaard: 1)
- per_page: Integer | records per pagina (standaard: 50, max: 100)
Geretourneerde params
- dns_zones: Array
- id: String
- name: String
- dnssec: Boolean
- dnssec_data: Object (nil als dnssec = false)
- created_at: DateTime
- updated_at: DateTime
- account: Object
- id: String
- name: String
Een zone bekijken
GET /api/dns_zones/:id
Geretourneerde params
- dns_zone: Object
- id: String
- name: String
- dnssec: Boolean
- dnssec_data: Object (nil als dnssec = false)
- Enabled: Boolean
- DsRecord: String
- Digest: String
- DigestType: String
- Algorithm: Integer
- PublicKey: String
- KeyTag: Integer
- Flags: Integer
- DsConfigured: Boolean
- created_at: DateTime
- updated_at: DateTime
- account: Object
- id: String
- name: String
- records: Array
- id: String
- record_type: Integer
- ttl: Integer
- value: String
- name: String
- priority: Integer
- port: Integer
- flags: Integer
- record_tag: String
- comment: String
- site: Object | null | altijd aanwezig; de site die via het gekoppelde domein van dit record wordt bereikt,
nullals die er niet is- id: String
- name: String
- created_at: DateTime
- updated_at: DateTime
- primary_domain: String
- location: String
- package: String
- created_at: DateTime
- updated_at: DateTime
- nameservers: Array
DNSSEC in-/uitschakelen
PATCH /api/dns_zones/:id
Params
- dns_zone: Object
- dnssec: Boolean
Retourneert hetzelfde als show.
Een DNS-zone aanmaken
Account-scope vereist; voeg de X-Auth-Account-header toe met je
Account ID — het account van de zone komt uit de account-context van
het verzoek. Alleen name wordt geaccepteerd.
POST /api/dns_zones
Params
- dns_zone: Object
- name: String
Fouten
- 400 | de header
X-Auth-Accountontbreekt. Deze fout draagt geencode-sleutel — de body is enkel{"errors":["Missing X-Auth-Account"]}, dus match op de status en niet op een identifier - 403
{"errors":["Not Authorized"]}| geen bewerkrechten op het account - 422 | zone ongeldig (zie errors-array)
Retourneert hetzelfde als show.
Zone verwijderen
DELETE /api/dns_zones/:id
Retourneert 202.
Een zone waaraan nog een site of een domein is gekoppeld, kan niet worden
verwijderd — dat levert 422 op met Unable to delete, has linked sites. in de
errors-array. Ontkoppel eerst de domeinen.
DNS-querystatistieken
Statistieken over geserveerde queries voor een Bunny DNS-zone, opgemaakt voor grafieken.
GET /api/dns_zones/:id/dns_stats
Params (optioneel)
- date_from: String | ISO8601-datetime (standaard: 14 dagen geleden)
- date_to: String | ISO8601-datetime (standaard: nu)
Geretourneerde params
- total: Integer | totaal aantal geserveerde queries in het venster
- series:
Array<Object>|[{ name: String, data: [[unix_ms, count], ...] }] - date_from: String (ISO8601)
- date_to: String (ISO8601)
Fouten
- 502 Bad Gateway | zone nog niet ingericht, of upstream Bunny-verzoek mislukt
DNS-records
Beschikbare recordtypes
Het veld record_type is een integer. De beschikbare types zijn:
| Waarde | Type |
|---|---|
| 0 | A (standaard) |
| 1 | AAAA |
| 2 | CNAME |
| 3 | TXT |
| 4 | MX |
| 5 | Redirect |
| 6 | Flatten |
| 7 | PullZone |
| 8 | SRV |
| 9 | CAA |
| 10 | PTR |
| 11 | Script |
| 12 | NS |
| 13 | SVCB |
| 14 | HTTPS |
| 15 | TLSA (beheerd door automatisering) |
TLSA-records worden aangemaakt en onderhouden door automatisering, en het recordformulier in het dashboard biedt ze niet aan. Die beperking hoort bij het dashboard — de API dwingt geen lijst met door gebruikers aan te maken types af.
Alle records weergeven
Wordt ook geretourneerd bij het bekijken van een zone.
GET /api/dns_zones/:dns_zone_id/records
Geretourneerde params
- dns_records: Array
- id: String
- record_type: Integer
- ttl: Integer
- value: String
- name: String
- priority: Integer
- weight: Integer
- port: Integer
- flags: Integer
- record_tag: String
- comment: String
- site: Object | null | altijd aanwezig; de site die via het gekoppelde domein van dit record wordt bereikt,
nullals die er niet is- id: String
- name: String
- created_at: DateTime
- updated_at: DateTime
- primary_domain: String
- location: String
- package: String
- created_at: DateTime
- updated_at: DateTime
Record bekijken
GET /api/dns_zones/:dns_zone_id/records/:id
Retourneert één dns_record-object met dezelfde velden als een lijstvermelding.
Record aanmaken
POST /api/dns_zones/:dns_zone_id/records
Params
- dns_record: Object
- record_type: Integer | niet vereist — als je het weglaat, wordt stilzwijgend een A-record aangemaakt (de kolom heeft standaard
0). Moet0–15zijn - ttl: Integer |
30–604799(standaard:14400) - value: String | vereist voor elk type behalve PullZone (
7) - name: String
- priority: Integer | vereist voor MX (
4) en SRV (8);0–65535 - weight: Integer | vereist voor SRV (
8);0–100 - port: Integer | vereist voor SRV (
8);0–65535 - flags: Integer | vereist voor CAA (
9);0of hoger - record_tag: String | vereist voor CAA (
9) - comment: String
- record_type: Integer | niet vereist — als je het weglaat, wordt stilzwijgend een A-record aangemaakt (de kolom heeft standaard
Bij succes wordt het aangemaakte record gerenderd (zelfde vorm als show) met HTTP 200 (niet 201). Ongeldig record → 422 (zie errors-array).
Record bijwerken
PATCH /api/dns_zones/:dns_zone_id/records/:id
name en record_type kunnen niet worden gewijzigd. Retourneert 202.
Params
- dns_record: Object
- ttl: Integer
- value: String
- priority: Integer
- weight: Integer
- port: Integer
- flags: Integer
- record_tag: String
- comment: String
Record verwijderen
DELETE /api/dns_zones/:dns_zone_id/records/:id
Retourneert 202.