VPS.org API

REST API dokumentacija

API za upravljanje DNS-om

Napravite DNS zone i upravljajte njihovim zapisima. Zone su poslužene od strane ns1.vps.org, ns2.vps.org i ns3.vps.org.

Krajnje tačke 13
Osnovni put /api/v1/dns-zones, /api/v1/dns-records

Pregled

Zona drži zapise za jednu domenu. Svaka promjena koju napravite kroz API je odmah prebačena na VPS.org nameservere. Da biste poslužili domenu iz ovih zona, postavite njene nameservere u vašem registratoru na ns1.vps.org, ns2.vps.org i ns3.vps.org.

Promjene se spremaju i objavljuju u jednom koraku: ako nameserver odbije promjenu, zahtjev vraća 502 i ništa se ne sprema. Zona se ne može kreirati za domenu kojom već upravlja drugi račun, roditelj ili dijete zone drugog računa, ili rezervirano ime VPS.org.

Potrebna dozvola: dns:list (GET), dns:create (POST), dns:update (PUT, PATCH, sync), dns:delete (DELETE), dns:*

DOBITI /api/v1/dns-zones/

Prikaži sve DNS zone

Vraća vaše zone, najnovije prvo, 25 po stranici. Zapisi nisu uključeni ovdje; dohvatite jednu zonu da ih dobijete.

Parametri upita

Parametar Tip Obavezno Opis
domain string Ne, ne, ne. Vraća samo zonu sa tačno ovim imenom domena
page integer Ne, ne, ne. Broj stranica, poÄŤevši od 1

Primjer zahtjeva

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);

Primjer odgovora

{
  "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
    }
  ]
}

Polja za odgovor

Polje Tip Opis
uuid string Identifikator zone
domain string Ime domene, pohranjeno malim slovima
created_at datetime Vrijeme stvaranja (ISO 8601, UTC)
record_count integer Broj zapisa u zoni, uključujući tri NS zapisa

Kodovi statusa odgovora

200 Uspjeh
403 Nedostaje ili nije valjan API token, ili token nema potrebne dozvole
POST /api/v1/dns-zones/

Napravi DNS zonu

Stvara zonu i objavljuje je. Zona počinje sa tri NS zapisa za ns1, ns2 i ns3.vps.org, koji su sistemski zapisi i ne mogu se uređivati ili brisati.

Zahtjev za parametre tijela

Parametar Tip Obavezno Opis
domain string Da Ime domena, na primjer example.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"}'

Primjer odgovora

{
  "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
}

Kodovi statusa odgovora

201 Zona napravljena
400 Nedostaje ili nije valjano ime domene
DOBITI /api/v1/dns-zones/{uuid}/

Preuzmi detalje o DNS zoni

Vraća jednu zonu sa svim njenim zapisima u nizu zapisa. Odgovor ima isti oblik kao odgovor na kreiranje gore.

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

Kodovi statusa odgovora

200 Uspjeh
404 Nije pronađen, ili pripada drugom računu
IZBRIŠI /api/v1/dns-zones/{uuid}/

Brisanje DNS zone

Ukloni zonu sa sva tri nameservera, provjeri da je nijedan od njih još uvijek ne služi, a zatim izbriše zonu i njene zapise. Ako nameserver još uvijek odgovara za zonu, zahtjev ne uspijeva i zona se zadržava tako da možete ponovno pokušati.

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

Kodovi statusa odgovora

204 Izbrisano. Odgovor nema tijelo.
400 Nameserver još uvijek služi zonu. Zona nije izbrisana; polje detalja navodi greške.
404 Nije pronađen, ili pripada drugom računu
DOBITI POST /api/v1/dns-zones/{uuid}/records/

Popis ili dodavanje zapisa u zoni

GET vraća svaki zapis u zoni kao običan niz (ne paginated), sortiran po tipu i imenu. POST dodaje zapis u zonu i objavljuje ga.

Zahtjev za parametre tijela (POST)

Parametar Tip Obavezno Opis
record_type string Da A, AAAA, CNAME, MX, NS, TXT, SRV, PTR, SOA, CAA
name string Da @ za sam domen, ili oznaku kao što je www. Imena su pohranjena u malim slovima.
value string Da Podaci zapisa, naprimjer IP adresa ili ime računara. Ime računara ne treba završnu tačku i TXT vrijednosti ne trebaju navodnike; oboje se dodaje kada se zapis objavi.
ttl integer Da Vrijeme za život u sekundama
priority integer Samo MX i SRV Zahtijeva se za MX i SRV zapise i ignorira se za sve druge vrste. Za SRV, stavite težinu, port i odredište u vrijednost.

Primjer zahtjeva

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())

Primjer odgovora

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

Polja za odgovor

Polje Tip Opis
uuid string Identifikator zapisa, koristi se od strane /api/v1/dns-records/ krajnjih tačaka
priority integer | null Prioritet za MX i SRV zapise, inače null
created_at date Samo datum stvaranja (G-MM-DD), bez vremena

Kodovi statusa odgovora

200 GET: zone records
201 POST: zapis napravljen
400 Greška prilikom provjere, na primjer nepoznata vrsta zapisa, nedostaje ttl, ili MX ili SRV zapis bez prioriteta
404 Nije pronađen, ili pripada drugom računu
POST /api/v1/dns-zones/{uuid}/sync/

Objavi zonu

Pomiče zonu i sve njene zapise na nameservere ponovo. Promjene zapisa se objavljuju automatski, ali objavljivanje je najbolji napor i neuspjeh ne propušta originalni zahtjev, tako da koristite ovo kada se promjena ne pojavi u DNS pretraživanjima. Nema tijela zahtjeva potrebno.

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"
}
DOBITI POST /api/v1/dns-records/

List or Create Records Across Zones

GET vraća zapise svih vaših zona, 25 po stranici, poredane po domeni, tipu i imenu. POST stvara zapis kao krajnju tačku zapisa zone, ali uzima zonu u tijelu kao zone_uuid.

Parametri upita

Parametar Tip Obavezno Opis
zone string Ne, ne, ne. Samo zapisi zone sa ovim uuid
record_type string Ne, ne, ne. Samo zapisi ove vrste, npr. MX (ne razlikuje mala i velika slova)
page integer Ne, ne, ne. Broj stranica, poÄŤevši od 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"
    }
  ]
}

Kodovi statusa odgovora

200 GET: success
201 POST: zapis napravljen
400 Greška prilikom provjere, ili zone_uuid nedostaje ili nije jedna od vaših zona
DOBITI PUT PATCH IZBRIŠI /api/v1/dns-records/{uuid}/

Dohvati, ažuriraj ili izbriši zapis

GET vraća jedan zapis. PUT ga zamjenjuje i treba record_type, ime, vrijednost i ttl. PATCH mijenja samo polja koja šaljete. DELETE uklanja zapis i vraća 204 bez tijela. Promjene se objavljuju odmah. NS zapisi napravljeni sa zonom su sistemski zapisi: ažuriranje ili brisanje njih vraća 403.

Kada PATCH prioritet MX ili SRV zapisa, pošalji record_type u istom zahtjevu. PATCH tijelo sa prioritetom ali bez record_type briše prioritet.
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}'

Kodovi statusa odgovora

200 GET, PUT ili PATCH: zapis
204 Izbrisano. Odgovor nema tijelo.
400 Greška prilikom provjere
403 Zapis je sistemski zapis, ili token nema potrebne dozvole
404 Nije pronađen, ili pripada drugom računu

Rad s greškama

Greške u provjeri vraćaju 400 sa problemom ključan po imenu polja:

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

Testiranje DNS promjena

Upitajte VPS.org nameservere direktno da potvrdite promjenu prije nego što vaš registrator delegata ili cache-ovi rješavača nadoknade:

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