VPS.org API

REST API ҳужжатлаштириш

DNS boshqaruv APIsi

DNS зоналарини яратинг ва уларнинг ёзувларини бошқаринг. Зоналар ns1.vps.org, ns2.vps.org ва ns3.vps.org томонидан хизмат кўрсатилади.

Tugash nuqtalari 13
Asosiy yo'l /api/v1/dns-zones, /api/v1/dns-records

Umumiy ma'lumot

Зона бир домен учун ёзувларни сақлайди. 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:*

OLING /api/v1/dns-zones/

Barcha DNS zonalarini ro'yxatlash

Сизнинг зоналарингизни қайтаради, энг янгиси биринчи бўлиб, ҳар бир саҳифада 25. Бу ерда ёзувлар киритилмайди; уларни олиш учун биргина зонани олинг.

So'rov parametrlari

Парамeтрлар Turi Majburiy Тасвирлаш
domain string Йўқ Фақат шу домен номи билан зонани қайтариш
page integer Йўқ 1 дан бошланган саҳифа рақами

Namunaviy so'rov

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

Javob namunasi

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

Javob maydonlari

Асосий Turi Тасвирлаш
uuid string Зона идентификатори
domain string Домен номи, кичик ҳарфларда сақланмоқда
created_at datetime Юклаш вақти (ISO 8601, UTC)
record_count integer Зонада ёзувлар сони, учта NS ёзувларини ҳам ҳисобга олган ҳолда

Javob holati kodlari

200 Муваффақият
403 API токен йўқ ёки нодуруст, ёки токенда талаб қилинган рухсат йўқ
ПОСТ /api/v1/dns-zones/

DNS зонасини яратиш

Зона яратиб, уни эълон қилади. Зона ns1, ns2 ва ns3.vps.org учун учта NS ёзуви билан бошланади, булар тизим ёзувлари бўлиб, уларни ўзгартириш ёки ўчириб ташлаш мумкин эмас.

Tana parametrlarini so'rash

Парамeтрлар Turi Majburiy Тасвирлаш
domain string Ha Домен номи, мисол учун 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"}'

Javob namunasi

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

Javob holati kodlari

201 Зона яратилди
400 Домен номи йўқ ёки нодуруст
OLING /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"

Javob holati kodlari

200 Муваффақият
404 Топилмади ёки бошқа ҳисобга тегишли
O'CHIRISH /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"

Javob holati kodlari

204 Охирги жавобда тана йўқ.
400 Зонага ном сервери ҳали ҳам хизмат кўрсатмоқда. Зона йўқ қилинмади; тафсилотлар майдони хатоларни кўрсатади.
404 Топилмади ёки бошқа ҳисобга тегишли
OLING ПОСТ /api/v1/dns-zones/{uuid}/records/

Зонада ёзувлар рўйхати ёки қўшиш

GET зонадаги барча ёзувларни оддий матрица (бетларсиз) сифатида қайтаради, тур ва ном бўйича тартибланади. POST зонага ёзувни қўшиб, уни эълон қилади.

Tana parametrlarini so'rash (POST)

Парамeтрлар Turi Majburiy Тасвирлаш
record_type string Ha A, AAAA, CNAME, MX, NS, TXT, SRV, PTR, SOA, CAA
name string Ha @ доменнинг ўзи учун ёки www каби белги учун. Номлар кичик ҳарфларда сақланади.
value string Ha Захира маълумотлари, масалан IP манзили ёки хост номи. Хост номлари учун охирида нуқта ва TXT қийматлари учун иқтибослар керак эмас; иккаласи ҳам заҳира чоп этилганда қўшилади.
ttl integer Ha Секундларда яшаш вақти
priority integer Фақат MX ва SRV MX ва SRV ёзувлари учун зарур ва бошқа барча турлар учун эътиборсиз қолдирилади. SRV учун қийматга вазн, порт ва мақсадни киритинг.

Namunaviy so'rov

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

Javob namunasi

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

Javob maydonlari

Асосий Turi Тасвирлаш
uuid string /api/v1/dns-records/ охирида фойдаланиладиган ёзув идентификатори
priority integer | null MX ва SRV ёзувлари учун устуворлик, бошқача бўлса нуқсонли
created_at date Фақат яратиш санаси (Y-MM-DD), вақтсиз

Javob holati kodlari

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"
}
OLING ПОСТ /api/v1/dns-records/

Зоналар орасида рўйхат ёки ёзув яратиш

GET барча зоналарингиз ёзувларини қайтаради, ҳар бир саҳифада 25 та, домен, тур ва ном бўйича тартибланган. POST зона ёзувларининг охирига ўхшаш ёзувни яратади, аммо зонани zone_uuid деб олади.

So'rov parametrlari

Парамeтрлар Turi Majburiy Тасвирлаш
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"
    }
  ]
}

Javob holati kodlari

200 GET: муваффақиятли
201 POST: ёзув яратилди
400 Тасдиқлаш хатоси, ёки zone_uuid йўқ ёки сизнинг зоналарингиздан бири эмас
OLING PUT PATCH O'CHIRISH /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}'

Javob holati kodlari

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