VPS.org API

Dokumentacja REST API

Interfejs API zarządzania DNS

Twórz strefy DNS i zarządzaj ich rekordami. Strefy są obsługiwane przez serwery ns1.vps.org, ns2.vps.org i ns3.vps.org.

Punkty końcowe 13
Ścieżka bazowa /api/v1/dns-zones, /api/v1/dns-records

Przegląd

Strefa posiada zapisy dla jednej domeny. Każda zmiana, jaką dokonasz przez API, jest przycisnięta do serwerów nazw VPS.org. Aby służyć domenie z tych stref, ustaw serwerzy nazwy na serwerze rejestracyjnym na adres nr1.vps.org, ns2.vps.org i ns3.vps.org.

Zmiany są zapisywane i publikowane w jednym kroku: jeśli serwery nazw odmawiają zmiany, wniosek zwraca 502 i nic nie jest zapisywany. Strefa nie może być utworzona dla domeny, która zarządza już innym kontom, rodzicem lub dzieckiem strefy innego konta, lub zarezerwowaną nazwę VPS.org.

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

DOSTAWAĆ /api/v1/dns-zones/

Wyświetl wszystkie strefy DNS

Zwraca swoje strefy, najnowsze, 25 na stronę. Nie są tu rejestry; aby je dostać, należy pobrać jedną strefę.

Parametry zapytania

Parametr Typ Wymagany Opis
domain string Nie. Zwracaj tylko strefę o dokładnie tej nazwie domeny
page integer Nie. Numer strony, zaczynając od 1

Przykładowe żądanie

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

Przykładowa odpowiedź

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

Pola odpowiedzi

Pole Typ Opis
uuid string Identyfikator strefy
domain string Nazwa domeny, zapisana w małych
created_at datetime Czas tworzenia (ISO 8601, UTC)
record_count integer Liczba rejestrów w strefie, w tym trzech rejestrów NS

Kody statusu odpowiedzi

200 Sukces
403 Brak lub nieprawidłowy token API, lub token brakuje wymaganego pozwolenia
POST /api/v1/dns-zones/

Utwórz strefę DNS

Stworzy strefę i publikuje ją. Strefa zaczyna się od trzech zapisów NS dla ns1, ns2 i ns3.vps.org, które są zapisami systemu i nie mogą być edytowane ani usuwane.

Parametry treści żądania

Parametr Typ Wymagany Opis
domain string Tak Nazwa domeny, na przykład.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"}'

Przykładowa odpowiedź

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

Kody statusu odpowiedzi

201 Strefa stworzona
400 Brak lub nieprawidłowa nazwa domeny
DOSTAWAĆ /api/v1/dns-zones/{uuid}/

Szczegóły strefy DNS

Zwraca jedną strefę z wszystkimi jego zapisami w tablicy rejestrów. Odpowiedź ma taki sam kształt, jak odpowiedź wyżej.

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

Kody statusu odpowiedzi

200 Sukces
404 Nie znaleziono, albo należy do innego konta
USUWAĆ /api/v1/dns-zones/{uuid}/

Usuń strefę DNS

Usuwa strefę z wszystkich trzech serwerów nazw, sprawdza, czy żaden z nich nie służy jej, a następnie usuwa strefę i jego zapisy. Jeśli serwer nazw wciąż odpowiada na strefę, wniosek się nie powiodą i strefa jest przechowywana tak, aby można było ponownie sprawdzić.

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

Kody statusu odpowiedzi

204 Usunięto. Odpowiedź nie ma ciała.
400 Obsługa serwera nazw jest nadal obsługowana. Strefa nie została usunięta; w pole szczegółowym wyświetlono błędy.
404 Nie znaleziono, albo należy do innego konta
DOSTAWAĆ POST /api/v1/dns-zones/{uuid}/records/

Wyświetlanie lub dodanie dziennik w strefie

GE zwraca każdy rekord w strefie jako tablica zwykła (niepaginowana), sortowana według typu i nazwy. POST dodaje rekord do strefy i publikuje go.

Parametry treści żądania (POST)

Parametr Typ Wymagany Opis
record_type string Tak A, AAAA, CNAME, MX, NS, TXT, SRV, PTR, SOA, CAA
name string Tak @ dla samej domeny, lub etykieta jak www. Nazwy są przechowywane w małych.
value string Tak Dane zapisowe, na przykład adres IP lub nazwa użytkownika. Nazwa komputera nie potrzebuje kończącej się wartości punktu, a wartości TXT nie potrzebują cytatów; obie są dodawane po opublikowaniu zapisu.
ttl integer Tak Czas na życie w sekundach
priority integer Tylko MX i SRV Wymagane dla zapisów MX i SRV i ignorowane dla każdego innego typu. Dla SRV, umieścić wagę, port i docelowy wartość.

Przykładowe żądanie

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

Przykładowa odpowiedź

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

Pola odpowiedzi

Pole Typ Opis
uuid string Identyfikator rejestru, stosowany przez rejestry /api/v1/dns/ punkty końcowe
priority integer | null Priorytet dla rejestrów MX i SRV, w przeciwnym razie nule
created_at date Tylko data utworzenia (R-MM-DD), bez czasu

Kody statusu odpowiedzi

200 Zapisy strefy
201 POST: zapis stworzony
400 Błąd weryfikacji, na przykład nieznany typ zapisu, brak ttl, lub MX lub SRV rekord bez priorytetu
404 Nie znaleziono, albo należy do innego konta
POST /api/v1/dns-zones/{uuid}/sync/

Republikować strefę

Przekłada strefę i wszystkie jego zapisy do serwerów nazw. Zmiany zapisów są publikowane automatycznie, ale wydawanie to najlepszy wysiłek i niepowodzenie nie zawiodą pierwotnego żądania, więc użyj tego, gdy zmiana nie pojawia się w wyszukiwaniach DNS. Nie jest potrzebne żadne ciało.

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

Wyświetlanie lub tworzenie Records w obrębie stref

GET zwraca zapisy wszystkich stref, 25 na stronę, zamówione według domeny, typu i nazwy. POST tworzy rekord jak punkt końcowy strefy, ale przejmuje strefę w organizmie jako zone_uuid.

Parametry zapytania

Parametr Typ Wymagany Opis
zone string Nie. Tylko rejestry strefy z tym uuid
record_type string Nie. Tylko zapisy tego typu, na przykład MX (nieczuleństwo przypadku)
page integer Nie. Numer strony, zaczynając 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"
    }
  ]
}

Kody statusu odpowiedzi

200 GET: sukces
201 POST: zapis stworzony
400 Błąd weryfikacji, lub zone_uuid brakuje lub nie jest jedną z waszych stref
DOSTAWAĆ PUT PATCH USUWAĆ /api/v1/dns-records/{uuid}/

Uzyskaj, aktualizuj lub usuń zapis

GET zwraca jeden zapis. PUT zastępuje go i potrzebuje zapisu typu, nazwy, wartości i ttl. PATCH zmienia tylko pola, które wyślesz. DELETE usuwa zapis i zwraca 204 bez ciała. Zmiany są publikowane natychmiast. Zapisy NS stworzone z strefy są rejestrami systemu: aktualizacja lub usuwanie ich zwraca 403.

Kiedy PATCH priorytet płyty MX lub SRV, wyślij rekord_type w tym samym żądaniu. Ciało PATCH z priorytetem, ale bez rekord_type oczyszcza priorytet.
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}'

Kody statusu odpowiedzi

200 GOT, PUT lub PATCH: rekord
204 Usunięto. Odpowiedź nie ma ciała.
400 Błąd weryfikacji
403 Zapis jest rejestrem systemu, lub token brakuje wymaganego pozwolenia
404 Nie znaleziono, albo należy do innego konta

Rozwiązanie błędów

Błędy weryfikacji zwracają 400 z problemem załączonym pod nazwą pola:

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

Testowanie zmian DNS

Zapytaj serwery nazw VPS.org bezpośrednio, aby potwierdzić zmianę jest na żywo przed Twoim delegacją rejestracyjną lub klapsami rozdzielczymi:

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