VPS.org API

API- документација

API за управување со DNS

Создавање DNS зони и управување со нивните записи. Зони се сервирани од ns1. vps.org, ns2. vps.org и ns3. vps.org.

Крајни точки 13
Основна патека /api/v1/dns-zones, /api/v1/dns-records

Преглед

Зона ги држи записите за еден домен. Секоја промена што ја правите преку API се притиска веднаш на серверите со име VPS.org. За да служите домен од овие зони, поставете ги своите имиња сервери на вашиот регистар на ns1. vps.org, ns2. vps.org и ns3. vps.org.

Промените се зачувани и објавуваат во еден чекор: ако серверите на име одбиваат промена, барањето враќа 502 и ништо не е зачувано. Зона не може да биде создадена за домен кој веќе управува со друга сметка, родител или дете со друга зона или VPS.org резервирано име.

Неопходна дозвола: dns:list (GET), dns:create (POST), dns:update (PUT, PATCH, sync), dns:delete (DELETE), dns:*

ДОБИЈ /api/v1/dns-zones/

Листај ги сите DNS зони

Враќа вашите зони, најновите, 25 на страница. Тука не се вклучени записите; донеси една зона за да ги добиеш.

Параметри на барањето

Параметр Тип Задолжително Опис
domain string Не. Враќа само зоната со точно ова име на доменот
page integer Не. Број на страницата, почнувајќи од 1

Пример за барање

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

Пример за одговор

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

Полиња за одговор

Поле Тип Опис
uuid string Идентификатор на зона
domain string Име на доменот, складирано во мала
created_at datetime Време на создавање (ISO 8601, UTC)
record_count integer Број на записи во зоната, вклучувајќи ги и трите NS записи

Кодови за статус на одговор

200 Успех
403 Недостасува или невалиден API- токен, или на токму тоа му недостига потребната дозвола
ПОСТ /api/v1/dns-zones/

Креирај DNS- зона

Создава зона и ја објавува. Зоната започнува со три NS записи за ns1, ns2 и ns3. vps.org, кои се системски записи и не можат да се уредуваат или избришуваат.

Параметри на телото на барањето

Параметр Тип Задолжително Опис
domain string Да Името на доменот, на пример. 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"}'

Пример за одговор

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

Кодови за статус на одговор

201 Зона создадена
400 Недостасува или невалидно име на доменот
ДОБИЈ /api/v1/dns-zones/{uuid}/

Соберете детали за DNS- зоната

Враќа една зона со сите нејзините записи во низа на записи. Одговорот има ист облик како и одговорот на креирањето.

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

Кодови за статус на одговор

200 Успех
404 Не е пронајдено или припаѓа на друга сметка
ИЗБРИШИ /api/v1/dns-zones/{uuid}/

Избриши DNS- зона

Ја отстранува зоната од сите три сервери со имиња, проверува дали никој од нив сѐ уште не ја служи, а потоа ја избриша зоната и нејзините записи. Ако серверот со имиња сѐ уште одговара за зоната, барањето не успеа и зоната е зачувана за да може повторно да ја повторите.

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

Кодови за статус на одговор

204 Избришано. Одговорот нема тело.
400 Серверот на име и понатаму ја служи зоната. Зоната не беше избришана; полето за детали ги наведува грешките.
404 Не е пронајдено или припаѓа на друга сметка
ДОБИЈ ПОСТ /api/v1/dns-zones/{uuid}/records/

Листа или додај записи во зона

Враќа секој запис во зоната како обичен низ (не е пагиниран), сортиран по тип и име. POST додава запис во зоната и го објавува.

Параметри на телото на барањето (POST)

Параметр Тип Задолжително Опис
record_type string Да A, AAAA, CNAME, MX, NS, TXT, SRV, PTR, SOA, CAA
name string Да @ за самата домен, или етикета како www. Имената се чуваат во мала.
value string Да Податоците за запис, на пример, IP- адреса или име на име. Името на имената не им треба следна точка и на TXT- вредности не им требаат цитати; и двете се додаваат кога е објавен записот.
ttl integer Да Време за живеење во секунди
priority integer Само MX и SRV Потребно е за MX и SRV записигнорирано за секој друг тип. За SRV, ставите тежина, порта и мета во вредност.

Пример за барање

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

Пример за одговор

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

Полиња за одговор

Поле Тип Опис
uuid string Идентификатор на запис, кој се користи од /api/v1/dns- записи/ крајни точки
priority integer | null Приоритет за MX и SRV записи, во спротивно нули
created_at date Само датум на создавање (Г- ММ- ДД) без време

Кодови за статус на одговор

200 ГЕТ: записите на зоната
201 POST: записот е создаден
400 Грешка при овластување, на пример непознат тип на запис, недостасува ttl, или MX или SRV запис без приоритет
404 Не е пронајдено или припаѓа на друга сметка
ПОСТ /api/v1/dns-zones/{uuid}/sync/

Објавување на зона

Го турка зоната и сите нејзините записи повторно во серверите на име. Изменувањата на записите се објавуваат автоматски, но објавувањето е најдобар напор и неуспехот не го пропушта оригиналното барање, па затоа користете го ова кога промената не се појавува во DNS барањата. Не е потребно тело за барање.

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"
}
ДОБИЈ ПОСТ /api/v1/dns-records/

Листа на или креирај записи низ зоните

Ги враќа записите за сите ваши зони, 25 по страница, наредени по домен, тип и име. POST создава рекорд како крајната точка на записот на зоната, но ја презема зоната во телото како zone_ uuid.

Параметри на барањето

Параметр Тип Задолжително Опис
zone string Не. Само записи за зоната со овој ууид
record_type string Не. Само записи од овој тип, на пример MX (нечувствителен случај)
page integer Не. Број на страницата, почнувајќи од 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"
    }
  ]
}

Кодови за статус на одговор

200 ГЭТ: успех
201 POST: записот е создаден
400 Грешка при овластување или zone_ uuid недостасува или недна од вашите зони
ДОБИЈ PUT PATCH ИЗБРИШИ /api/v1/dns-records/{uuid}/

Земи, ажурирај или избриши запис

Враќа еден запис. PUT го заменува и му треба запис_ тип, име, вредност и ttl. ПАТЧ менува само полињата што ги испраќате. DELETE го отстранува записот и го враќа 204 без тело. Промените се објавуваат веднаш. NS записите создадени со зоната се системски записи: ажурирање или бришење ги враќа 403.

Кога ќе го ПРАТЕ приоритетот на MX или SRV записот, испратете Record_ type во истото барање. ПАТЧ тело со приоритет, но без Record_ type го брише приоритетот.
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}'

Кодови за статус на одговор

200 Гет, Пут или ПАТЧ: рекорд
204 Избришано. Одговорот нема тело.
400 Грешка при овластување
403 Рекордата е системски запис, или на жетонот му недостига потребната дозвола
404 Не е пронајдено или припаѓа на друга сметка

Раководење со грешки

Грешката во проверката враќа 400 со проблемот клучен со име на полето:

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

Тестирање на промени во DNS

Прашај ги зVPS.org имионсерверите директно за да потврдиш дека промената е во живо пред твојата делегација на регистарот или кешовите на решавачот да ги надојде:

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