VPS.org API

REST API -dokumentaatio

DNS-hallinta-API

Luo DNS-alueet ja hallinnoi niiden tietueita. Vyöhykkeitä palvelevat ns1.vps.org, ns2.vps.org ja ns3.vps.org.

Päätepisteet 13
Perusreitti /api/v1/dns-zones, /api/v1/dns-records

Yleiskatsaus

A zone holds the records for one domain. Every change you make through the API is pushed to the VPS.org nameservers straight away. To serve a domain from these zones, set its nameservers at your registrar to ns1.vps.org, ns2.vps.org and ns3.vps.org.

Muutokset tallennetaan ja julkaistaan yhdessä vaiheessa: jos nimipalvelimet kieltäytyvät muutoksesta, pyyntö palauttaa 502, eikä mitään tallenneta. Aluetta ei voida luoda toiselle jo hallinnoimalle verkkotunnukselle, toisen tilin alueen vanhemmalle tai lapselle tai VPS.org-varatulle nimelle.

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

SAADA /api/v1/dns-zones/

Listaa kaikki DNS-vyöhykkeet

Palauttaa vyöhykkeet, uusin ensin, 25 sivua kohti. Rekisteritiedot eivät sisälly tähän; hae yksi alue, jolla ne saadaan.

Kyselyparametrit

Muuttuja Tyyppi Pakollinen Tavaran kuvaus
domain string Ei tarvitse. Palauta vain alue, jolla on täsmälleen tämä verkkotunnus
page integer Ei tarvitse. Page number, starting at 1

Esimerkkipyyntö

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

Esimerkkivastaus

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

Vastauskentät

Kenttä Tyyppi Tavaran kuvaus
uuid string Alueen tunniste
domain string Verkkoalueen nimi, tallennettu pieniin kassiin
created_at datetime Luontiaika (ISO 8601, UTC)
record_count integer Alueella olevien tietueiden määrä, mukaan lukien kolme NS-rekisteriä

Vastauksen tilakoodit

200 Onnistuminen
403 Puuttuva tai virheellinen API-tunnus tai postimerkki puuttuu vaaditusta luvasta
JÄLKEEN /api/v1/dns-zones/

Luo DNS-alue

Vyöhyke luo vyöhykkeen ja julkaisee sen. Vyöhyke alkaa kolmella NS-levyllä ns1, ns2 ja ns3.vps.org, jotka ovat järjestelmätallenteita, joita ei voi muokata tai poistaa.

Pyynnön rungon parametrit

Muuttuja Tyyppi Pakollinen Tavaran kuvaus
domain string Kyllä Verkkotunnuksen nimi, esimerkiksi.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"}'

Esimerkkivastaus

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

Vastauksen tilakoodit

201 Luotu alue
400 Puuttuva tai virheellinen verkkotunnus
SAADA /api/v1/dns-zones/{uuid}/

Hanki DNS-alueen tiedot

Palauttaa yhden vyöhykkeen kaikkine tietueineen levysarjaan. Vastaus on saman muotoinen kuin luo vastaus yllä.

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

Vastauksen tilakoodit

200 Onnistuminen
404 Ei löytynyt, tai se kuuluu toiselle tilille
POISTAA /api/v1/dns-zones/{uuid}/

Poista DNS-alue

Poistaa alueen kaikilta kolmelta nimipalvelimelta, tarkistaa, ettei kukaan heistä enää palvele sitä, ja poistaa sitten vyöhykkeen ja sen tietueet. Jos nimipalvelija vielä vastaa vyöhykkeeseen, pyyntö epäonnistuu ja vyöhyke pidetään, jotta voit yrittää uudelleen.

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

Vastauksen tilakoodit

204 Reaktiossa ei ole kehoa.
400 Nimenpalvelin palvelee yhä aluetta. Aluetta ei poistettu, vaan yksityiskohdat luetellaan kentässä.
404 Ei löytynyt, tai se kuuluu toiselle tilille
SAADA JÄLKEEN /api/v1/dns-zones/{uuid}/records/

Luettele tai lisää tallenteita vyöhykkeellä

GET palauttaa jokaisen levyn alueella tavallisena levynä (ei sivutettuna), lajittele tyyppien ja nimien mukaan. POST lisää levyn alueelle ja julkaisee sen.

Pyynnön rungon parametrit (POST)

Muuttuja Tyyppi Pakollinen Tavaran kuvaus
record_type string Kyllä A, AAAA, CNAME, MX, NS, TXT, SRV, PTR, SOA, CAA
name string Kyllä @ itse verkkotunnuksen tai esimerkiksi www-tunnuksen kohdalla nimet tallennetaan pieniin.
value string Kyllä Levytiedot, esimerkiksi IP-osoite tai isäntänimi. Isännät eivät tarvitse jälkipistettä, eikä TXT-arvoja tarvitse noteerata, vaan molemmat lisätään levyn julkaisun yhteydessä.
ttl integer Kyllä Aika elää sekunneissa
priority integer Vain MX ja SRV Vaaditaan MX- ja SRV-tallenteita, eikä niitä oteta huomioon kaikissa muissa tyypeissä. SRV:lle paino, portti ja kohde arvossa.

Esimerkkipyyntö

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

Esimerkkivastaus

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

Vastauskentät

Kenttä Tyyppi Tavaran kuvaus
uuid string Record-tunniste, jota käytetään /api/v1/dns-tallenteiden/päätetapahtumien avulla
priority integer | null MX- ja SRV-levyjen prioriteetti, muuten nolla
created_at date Luontipäivä (V-KK-PP) ilman aikaa

Vastauksen tilakoodit

200 GET: vyöhykkeen tiedot
201 POST: levy luotu
400 Validointivirhe, esimerkiksi tuntematon levytyyppi, puuttuva ttl, tai MX- tai SRV-levy ilman prioriteettia
404 Ei löytynyt, tai se kuuluu toiselle tilille
JÄLKEEN /api/v1/dns-zones/{uuid}/sync/

Relevant a Zone

Painaa alueen ja kaikki sen levyt nimipalvelijoille uudelleen. Levymuutokset julkaistaan automaattisesti, mutta julkaisu on parasta tehdä, eikä epäonnistu alkuperäinen pyyntö, joten käytä tätä, kun muutos ei näy DNS-hakukokeissa. Pyyntöelintä ei tarvita.

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"
}
SAADA JÄLKEEN /api/v1/dns-records/

Luettele tai luo tietueita vyöhykkeiden yli

GET palauttaa kaikkien vyöhykkeidesi tiedot, 25 sivua kohden, tilattuna verkkotunnuksen, tyypin ja nimen mukaan. POST luo vyöhykkeen kaltaisen tietueen, mutta ottaa vyöhykkeen kehossa vyöhykkeeksi_uuid.

Kyselyparametrit

Muuttuja Tyyppi Pakollinen Tavaran kuvaus
zone string Ei tarvitse. Vain tiedot vyöhykkeestä tällä uuid-otteella
record_type string Ei tarvitse. Vain tämäntyyppiset levyt, esimerkiksi MX (tapaus tunnoton)
page integer Ei tarvitse. Page number, starting at 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"
    }
  ]
}

Vastauksen tilakoodit

200 GET: menestys
201 POST: levy luotu
400 Validointivirhe tai zone_uuid puuttuu tai ei ole yksi vyöhykkeesi
SAADA PUT PATCH POISTAA /api/v1/dns-records/{uuid}/

Hae, päivitä tai poista levy

GET palauttaa yhden levyn. PUT korvaa sen ja tarvitsee levy_tyypin, nimen, arvon ja ttl. PASSITUS muuttaa vain lähettämäsi kentät. DELETE poistaa levyn ja palauttaa 204 ilman ruumista. Muutokset julkaistaan saman tien. Alueella luodut NS-tietueet ovat järjestelmätietueita: niiden päivittäminen tai poistaminen palauttaa 403.

Kun valitset MX- tai SRV-levyn prioriteetin, lähetä levy_type samaan pyyntöön. PANSSI-elin, jolla on prioriteetti, mutta ilman levyä, poistaa prioriteetin.
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}'

Vastauksen tilakoodit

200 GET, PUT tai PASSITUS: levy
204 Reaktiossa ei ole kehoa.
400 Validointivirhe
403 Levy on järjestelmärekisteri, tai postimerkiltä puuttuu vaadittava lupa
404 Ei löytynyt, tai se kuuluu toiselle tilille

Virheiden käsittely

Validointivirheet palauttavat 400 kentän nimen näppäinongelman kanssa:

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

DNS-muutosten testaus

Kysy VPS.org-nimeäpalvelijoilta, että muutos on suora lähetys ennen kuin registrar-valtuuskuntasi tai ratkaisijasi saavat kiinni:

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