VPS.org API

REST 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 бүсийг бий болгох

Зоныг үүсгэж нийтлүүлнэ. Зооныг ns1, ns2, ns3. vps.org- ийн3NS бичлэгээс эхэлнэ. Энэ нь системийн бичлэг бөгөөд засварлах, устгах боломжгүй.

Хүсэлтийн биеийн параметрүүд

Параметр Төрөл Шаардлагатай Тодорхойлолт
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 Товчхондоо, нэрийн сервер нь бүсэд үйлчилж байна. Зоныг устгасангүй. Товчхондоо, алдаанууд жагсаагдсан.
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/ төгсгөлийн цэгүүдийн ашигладаг бичлэгийн илэрхийлэгч
priority integer | null MX болон SRV бичлэгүүдийн тэргүүлэх зэрэглэл, эс бөгөөс нууц үг
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 нэрийн серверээс шууд асууж, таны бүртгэлийн үүрэгт эсвэл шийдлийн кэшүүд гүйцэж түрүүлэхээс өмнө өөрчлөлтийг баталгаажуулах:

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