VPS.org API

Документация

DNS башкаруу API'си

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 Ооба Домендин аты, мисалы example.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 A nameserver still serves the zone. The zone was not deleted; the detail field lists the errors.
404 Табылган жок же башка эсептик жазууга таандык
АЛУУ ПОСТ /api/v1/dns-zones/{uuid}/records/

Зонадагы жазууларды тизмелөө же кошуу

GET зонадагы ар бир жазуу боюнча тип жана аталыш боюнча сорттолгон таза масив (баракталбаган) катары кайтарат. 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-records/ endpoints
priority integer | null MX жана SRV жазууларынын приоритети, башкача null
created_at date Жаратуу күнү гана (Y-MM-DD), убакыт жок

Жооп берүү статусунун коддору

200 GET: зонанын жазуулары
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_uuid катары алат.

Сурам параметрлери

Параметрлер Түрү Талап кылынат Сүрөт
zone string Жок Бул uuid менен зонанын гана жазуулары
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 аны алмаштырат жана record_type, name, value жана ttl керек. PATCH жөнөтүлгөн талааларды гана өзгөртөт. DELETE жазууларды алып салат жана 204 дегенди кайтарат. Өзгөртүүлөр дароо жарыяланат. Зона менен түзүлгөн NS жазуулары системалык жазуулар: аларды жаңылоо же өчүрүү 403 дегенди кайтарат.

MX же SRV жазууларынын приоритетин PATCH кылганда, ошол эле суроо менен record_type жөнөтүлөт. PATCH денеси приоритет менен, бирок 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 GET, PUT же PATCH: жазуу
204 Өчүрүлгөн. Жайлоо тексти жок.
400 Текшерүү катасы
403 Запись является системной записью, или же токену не хватает необходимых прав
404 Табылган жок же башка эсептик жазууга таандык

Каталарды иштетүү

Текшерүү каталары 400 кайтарат, бул учурда көйгөй талаа аты менен аталат:

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

DNS өзгөрүүлөрүн текшерүү

Изменение в реестре или в кэше регистратора или делегации до его загрузки проверить напрямую на VPS.org nameservers:

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