VPS.org API

REST API Documentation

DNS-administrations-API

Opret DNS zoner og administrere deres optegnelser. Zoner serveres af ns1.vps.org, ns2.vps.org og ns3.vps.org.

Endepunkter 13
Basissti /api/v1/dns-zones, /api/v1/dns-records

Oversigt

En zone indeholder optegnelser for et domæne. Hver ændring du foretager gennem API skubbes til VPS.org navneservere med det samme. For at tjene et domæne fra disse zoner, indstille dens navneservere på din registrator til ns1.vps.org, ns2.vps.org og ns3.vps.org.

Ændringer gemmes og offentliggøres i ét trin: Hvis navneserveren afviser en ændring, returnerer anmodningen 502 og intet gemmes. En zone kan ikke oprettes for et domæne en anden konto allerede forvalter, en forælder eller barn af en anden kontos zone, eller et VPS.org reserveret navn.

Krævet tilladelse: dns:list (GET), dns:create (POST), dns:update (PUT, PATCH, sync), dns:delete (DELETE), dns:*

/api/v1/dns-zones/

Liste over alle DNS-zoner

Returnerer dine zoner, nyeste første, 25 pr side. Records er ikke inkluderet her; hent en enkelt zone for at få dem.

Forespørgselsparametre

Parameter Type Påkrævet Description
domain string No Returner kun zonen med præcis dette domænenavn
page integer No Sidenummer, begyndende kl. 1

Eksempel på anmodning

cURL
Python
JavaScript
curl -X GET "https://admin.vps.org/api/v1/dns-zones/?domain=example.com" \
  -H "Authorization: Bearer YOUR_API_TOKEN"
import requests

url = "https://admin.vps.org/api/v1/dns-zones/"
headers = {"Authorization": "Bearer YOUR_API_TOKEN"}

response = requests.get(url, headers=headers, params={"domain": "example.com"})
for zone in response.json()["results"]:
    print(zone["uuid"], zone["domain"], zone["record_count"])
const response = await fetch('https://admin.vps.org/api/v1/dns-zones/?domain=example.com', {
  headers: { 'Authorization': 'Bearer YOUR_API_TOKEN' }
});

const data = await response.json();
console.log(data.results);

Eksempel på svar

{
  "count": 1,
  "next": null,
  "previous": null,
  "results": [
    {
      "uuid": "c7a1e3f0-2b4d-4e6a-9c8b-0d1f2e3a4b5c",
      "domain": "example.com",
      "created_at": "2026-09-06T03:11:48.829693Z",
      "record_count": 5
    }
  ]
}

Svarfelter

Felt Type Description
uuid string Områdeidentifikator
domain string Domænenavn, gemt i små bogstaver
created_at datetime Skabelsestid (ISO 8601, UTC)
record_count integer Antal registreringer i zonen, herunder de tre NS-registreringer

Svarstatuskoder

200 Succes
403 Manglende eller ugyldig API token, eller den token mangler den krævede tilladelse
POST /api/v1/dns-zones/

Opret DNS- zone

Opretter en zone og udgiver den. Zonen starter med tre NS-poster for ns1, ns2 og ns3.vps.org, som er systemposter og ikke kan redigeres eller slettes.

Parametre for anmodningstekst

Parameter Type Påkrævet Description
domain string Ja Domænenavnet, for eksempel.com
curl -X POST "https://admin.vps.org/api/v1/dns-zones/" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"domain": "example.com"}'

Eksempel på svar

{
  "uuid": "c7a1e3f0-2b4d-4e6a-9c8b-0d1f2e3a4b5c",
  "domain": "example.com",
  "created_at": "2026-09-14T21:02:11.402113Z",
  "records": [
    {
      "uuid": "1f2e3d4c-5b6a-4978-8a9b-0c1d2e3f4a5b",
      "record_type": "NS",
      "name": "@",
      "value": "ns1.vps.org",
      "ttl": 86400,
      "priority": null,
      "created_at": "2026-09-14"
    },
    ...
  ],
  "record_count": 3
}

Svarstatuskoder

201 Område oprettet
400 Manglende eller ugyldigt domænenavn
/api/v1/dns-zones/{uuid}/

Få oplysninger om DNS- zone

Returnerer en zone med alle sine optegnelser i et register array. Svaret har samme form som den skabe respons ovenfor.

curl -X GET "https://admin.vps.org/api/v1/dns-zones/c7a1e3f0-2b4d-4e6a-9c8b-0d1f2e3a4b5c/" \
  -H "Authorization: Bearer YOUR_API_TOKEN"

Svarstatuskoder

200 Succes
404 Ikke fundet, eller det tilhører en anden konto
SLET /api/v1/dns-zones/{uuid}/

Slet DNS- zone

Fjerner zonen fra alle tre navneservere, kontrollerer, at ingen af dem stadig tjener den, og sletter derefter zonen og dens optegnelser. Hvis en navneserver stadig svarer for zonen, fejler anmodningen, og zonen holdes, så du kan prøve igen.

curl -X DELETE "https://admin.vps.org/api/v1/dns-zones/c7a1e3f0-2b4d-4e6a-9c8b-0d1f2e3a4b5c/" \
  -H "Authorization: Bearer YOUR_API_TOKEN"

Svarstatuskoder

204 Deleted. The response has no body.
400 En navneserver tjener stadig zonen. Zonen blev ikke slettet; detaljefeltet viser fejlene.
404 Ikke fundet, eller det tilhører en anden konto
POST /api/v1/dns-zones/{uuid}/records/

Liste eller tilføj optegnelser i en zone

GET returnerer hver post i zonen som et almindeligt array (ikke pagineret), sorteret efter type og navn. POST tilføjer en rekord til zonen og udgiver den.

Parametre for anmodningstekst (POST)

Parameter Type Påkrævet Description
record_type string Ja A, AAAA, CNAME, MX, NS, TXT, SRV, PTR, SOA, CAA
name string Ja @ for selve domænet, eller en etiket som www. Navne er gemt i små bogstaver.
value string Ja De registrerede data, for eksempel en IP- adresse eller et værtsnavn. Hostnames behøver ikke en efterfølgende prik og TXT værdier behøver ikke citater; begge tilføjes, når posten er offentliggjort.
ttl integer Ja Tid til at leve i sekunder
priority integer Kun MX og SRV Kræves til MX og SRV poster og ignoreres for alle andre typer. For SRV, sætte vægt, port og mål i værdi.

Eksempel på anmodning

cURL
Python
curl -X POST "https://admin.vps.org/api/v1/dns-zones/c7a1e3f0-2b4d-4e6a-9c8b-0d1f2e3a4b5c/records/" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"record_type": "MX", "name": "@", "value": "mail.example.com", "ttl": 3600, "priority": 10}'
import requests

zone_uuid = "c7a1e3f0-2b4d-4e6a-9c8b-0d1f2e3a4b5c"
url = f"https://admin.vps.org/api/v1/dns-zones/{zone_uuid}/records/"
headers = {"Authorization": "Bearer YOUR_API_TOKEN"}
data = {"record_type": "A", "name": "www", "value": "203.0.113.10", "ttl": 3600}

response = requests.post(url, headers=headers, json=data)
print(response.status_code, response.json())

Eksempel på svar

{
  "uuid": "9d430082-5562-42b4-a0b2-12a6f6c862f9",
  "record_type": "MX",
  "name": "@",
  "value": "mail.example.com",
  "ttl": 3600,
  "priority": 10,
  "created_at": "2026-09-14"
}

Svarfelter

Felt Type Description
uuid string Record-identifikator, der anvendes af /api/v1/dns-records/-endpoints
priority integer | null Prioritet for MX- og SRV-poster, ellers nul
created_at date Kun oprettelsesdato (Å-MM-DD), uden tid

Svarstatuskoder

200 GET: zonens optegnelser
201 POST: Oprettet post
400 Valideringsfejl, f.eks. en ukendt rekordtype, en manglende ttl eller en MX eller SRV-registrering uden prioritet
404 Ikke fundet, eller det tilhører en anden konto
POST /api/v1/dns-zones/{uuid}/sync/

Republisér en zone

Skuber zonen og alle dens optegnelser til navneserveren igen. Optag ændringer offentliggøres automatisk, men udgivelse er den bedste indsats og en fejl ikke mislykkes den oprindelige anmodning, så brug dette, når en ændring ikke vises i DNS opslag. Ingen anmodning krop er nødvendig.

curl -X POST "https://admin.vps.org/api/v1/dns-zones/c7a1e3f0-2b4d-4e6a-9c8b-0d1f2e3a4b5c/sync/" \
  -H "Authorization: Bearer YOUR_API_TOKEN"
{
  "detail": "Zone example.com synced to PowerDNS"
}
POST /api/v1/dns-records/

Liste eller opret optegnelser på tværs af zoner

GET returnerer optegnelserne over alle dine zoner, 25 pr. side, bestilt efter domæne, type og navn. POST skaber en rekord som zone optegnelser endpoint, men tager zonen i kroppen som zone_uuid.

Forespørgselsparametre

Parameter Type Påkrævet Description
zone string No Kun optegnelser over zonen med denne uuid
record_type string No Kun optegnelser af denne type, f.eks. MX (ufølsomt tilfælde)
page integer No Sidenummer, begyndende kl. 1
curl -X GET "https://admin.vps.org/api/v1/dns-records/?zone=c7a1e3f0-2b4d-4e6a-9c8b-0d1f2e3a4b5c&record_type=A" \
  -H "Authorization: Bearer YOUR_API_TOKEN"

curl -X POST "https://admin.vps.org/api/v1/dns-records/" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"zone_uuid": "c7a1e3f0-2b4d-4e6a-9c8b-0d1f2e3a4b5c", "record_type": "TXT", "name": "@", "value": "v=spf1 mx -all", "ttl": 3600}'
{
  "count": 1,
  "next": null,
  "previous": null,
  "results": [
    {
      "uuid": "4b8e2c10-7d3f-4a5b-9e6c-1a2b3c4d5e6f",
      "record_type": "A",
      "name": "www",
      "value": "203.0.113.10",
      "ttl": 3600,
      "priority": null,
      "created_at": "2026-09-14"
    }
  ]
}

Svarstatuskoder

200 FÅ: succes
201 POST: Oprettet post
400 Valideringsfejl, eller zone_uuid mangler eller ej en af dine zoner
PUT PATCH SLET /api/v1/dns-records/{uuid}/

Få, opdatere eller slet en rekord

GET returnerer en post. PUT erstatter den og har brug for record_ type, navn, værdi og ttl. PATCH ændrer kun de felter du sender. DELETE fjerner posten og returnerer 204 uden krop. Ændringer offentliggøres med det samme. NS- optegnelserne oprettet med zonen er systemposter: opdatering eller sletning af dem returnerer 403.

Når du PATCH prioriteten af en MX eller SRV post, sende record_ type i samme anmodning. En PATCH organ med prioritet, men uden record_ type rydder prioriteten.
curl -X PATCH "https://admin.vps.org/api/v1/dns-records/4b8e2c10-7d3f-4a5b-9e6c-1a2b3c4d5e6f/" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"ttl": 300}'

Svarstatuskoder

200 GET, PUT eller PATCH: recorden
204 Deleted. The response has no body.
400 Valideringsfejl
403 Optegnelsen er en systemoptegnelse, eller den symbolske mangler den krævede tilladelse
404 Ikke fundet, eller det tilhører en anden konto

Fejlhåndtering

Valideringsfejl returnerer 400 med problemet nøgleret ved feltnavn:

{
  "priority": ["MX records require a priority value"]
}

Test af DNS- ændringer

Forespørg VPS.org navneservere direkte for at bekræfte en ændring er live, før din registrator delegation eller resolver caches indhente:

dig @ns1.vps.org example.com A
dig @ns2.vps.org example.com MX
dig @ns3.vps.org www.example.com