VPS.org API

Документація з програмного інтерфейсу REST

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 або елемент не має потрібного дозволу
POST /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 Не знайдено або він належить іншому обліковому запису
ОТРИМАТИ POST /api/v1/dns-zones/{uuid}/records/

Список або додавання записів у зону

Отримання всіх записів у зоні як звичайного масиву (не застаріле), впорядкований за типом і назвою. POST додає запис до зони і опубліковує його.

Параметри тіла запиту (POST)

Параметр Тип Обов'язково Опис
record_type string Так A, AAAA, CNAME, MX, NS, TXT, SRV, PTR, SOA, CAA
name string Так @ для самого домену або надпис на зразок www. names зберігаються у нижній регістр.
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- cords/ end points
priority integer | null Пріоритет для записів MX і SRV, у іншому випадку нульовий
created_at date Тільки дата створення (Р- ММ- ДД), без часу

Коди стану відповіді

200 Get: the zany's registers
201 POST: створено запис
400 Помилка під час перевірки, наприклад, невідомий тип запису, відсутній ttl або MX або SRV запис без пріоритету
404 Не знайдено або він належить іншому обліковому запису
POST /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"
}
ОТРИМАТИ POST /api/v1/dns-records/

Список або створення записів, що перетинаються зонами

Get Records entry of all your zones, 25 per page, sorted by domain, type and name. POST створює запис на зразок точки кінця зональних записів, але приймає зону у тілі як zone_ uuid.

Параметри запиту

Параметр Тип Обов'язково Опис
zone string Ні Лише записи зони з цим uid
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 GET: успіх
201 POST: створено запис
400 Помилка перевірки або відсутні zone_ uuid або не є однією з ваших зон
ОТРИМАТИ PUT PATCH ВИДАЛИТИ /api/v1/dns-records/{uuid}/

Отримати, оновити або Вилучити запис

Get () повертає один запис. PUT замінює його і потребує запису_ типу, назви, значення і stl. PATCH змінює лише поля, які ви надсилаєте. DELETE вилучає запис і повертає 204 без тіла. Зміни друкуються одразу. Записи NS, створені за допомогою зон, є системними записами: оновлення або вилучення їх повертає 403.

Якщо ви виконуєте PATCH пріоритет запису MX або SRV, надішліть запит на запис_ типу запису у тому самому запиті. Тело PATCH з пріоритетом, але без типу entry_ 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 GET, PUT або PATCH: рекорд
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