VPS.org API

REST API документация

API за управление на DNS

Създаване на DNS зони и управление на техните записи. Зони се сервират от NS1.vps.org, NS2.vps.org и NS3.vps.org.

Крайни точки 13
Базов път /api/v1/dns-zones, /api/v1/dns-records

Общ преглед

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.

Промените се запазват и публикуват в една стъпка: ако имейните сървъри откажат промяна, искането връща 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/

Списък или Добавяне на записи в зона

GE връща всеки запис в зоната като обикновен масив (не пагиниран), сортиран по тип и име. 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/

Списък или създаване на записи през зоните

GET връща записите на всички зони, 25 на страница, поръчани по домен, тип и име. POST създава рекорд като крайна точка на зоната, но заема зоната в тялото като zone_uuiid.

Параметри на заявката

Параметр Тип Задължително Описание
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}/

Вземете, актуализирайте или изтрийте запис

GET връща един запис. PUT го заменя и се нуждае от запис_ тип, име, стойност и ttl. PURT променя само полетата, които изпращате. DELETE премахва записите и връща 204 без тяло. Промените се публикуват веднага. NS записите, създадени с зоната, са системни записи: актуализиране или изтриване на тях връща 403.

Когато ПАЛЕЖИ приоритета на MX или SRV запис, изпращане на запис_тип в същото искане.
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