VPS.org API

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

DNS boshqaruv APIsi

Domenlaringiz uchun DNS zonalari va yozuvlarini dasturiy ravishda boshqaring.

Tugash nuqtalari 4 ta so'nggi nuqta
Asosiy yo'l /api/v1/dns-zones
Autentifikatsiya Бордирувчи токен талаб этилади

Umumiy ma'lumot

DNS API DNS зоналари ва ёзувларни тўлиқ бошқаришни таъминлайди. Барча зоналар VPS.org'нинг ишончли ном серверларида автоматик BIND9 зона файли яратиш ва ўрнатиш билан жойлаштирилади.

Nameserver инфратузилма

Асосий хусусиятлар

Autentifikatsiya

Барча DNS API талаблари Bearer token аутентификациясини талаб қилади. API tokenларини ҳисобингиз панелидан яратинг /account/developers/ қуйидаги рухсатлар билан:

Мисол

Authorization: Bearer vps_abc123def456...
Маълумот: API токенлари яратиш вақтида фақат бир марта кўрсатилади. Уларни хавфсиз сақланг. Агар сиз токенни йўқотсангиз, янгисини яратишингиз керак.
OLING /api/v1/dns-zones/

Barcha DNS zonalarini ro'yxatlash

Аутентификация қилинган фойдаланувчига тегишли барча DNS зоналарининг саҳифаланган рўйхатини олиш. Домен номи бўйича филтрлашни қўллаб-қувватлайди.

So'rov parametrlari

Парамeтрлар Turi Majburiy Тасвирлаш
domain string Йўқ Filter zones by exact domain name (e.g., example.com)

Namunaviy so'rov

cURL
Python
JavaScript
curl -X GET "https://admin.vps.org/api/v1/dns-zones/" \
  -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)
print(response.json())
const response = await fetch('https://admin.vps.org/api/v1/dns-zones/', {
  headers: {'Authorization': 'Bearer YOUR_API_TOKEN'}
});

const zones = await response.json();
console.log(zones);

Javob namunasi

[
  {
    "uuid": "abc123-def456-ghi789",
    "domain": "example.com",
    "created_at": "2024-01-15T10:30:00Z",
    "record_count": 12
  },
  {
    "uuid": "xyz789-uvw456-rst123",
    "domain": "myapp.io",
    "created_at": "2024-06-20T14:15:00Z",
    "record_count": 8
  }
]

Javob maydonlari

Асосий Turi Тасвирлаш
uuid string Unique zone identifier (used in API requests)
domain string Domain name for this DNS zone
created_at datetime Zone creation timestamp (ISO 8601 format)
record_count integer Total number of DNS records in this zone

Javob holati kodlari

200 Successfully retrieved DNS zones list
401 Unauthorized - Invalid or missing API token
403 Forbidden - Token lacks dns:list permission
OLING /api/v1/dns-zones/{uuid}/

DNS зонаси тафсилотларини олиш

Барча ёзувларни ўз ичига олган, муайян DNS зонаси ҳақидаги батафсил маълумотларни олиш.

Yo'l parametrlari

Парамeтрлар Turi Majburiy Тасвирлаш
uuid string Ha Unique zone identifier

Javob namunasi

{
  "uuid": "abc123-def456-ghi789",
  "domain": "example.com",
  "created_at": "2024-01-15T10:30:00Z",
  "record_count": 5,
  "records": [
    {
      "uuid": "rec-001",
      "record_type": "A",
      "name": "@",
      "value": "192.0.2.1",
      "ttl": 3600,
      "priority": null,
      "created_at": "2024-01-15T10:30:00Z"
    },
    {
      "uuid": "rec-002",
      "record_type": "MX",
      "name": "@",
      "value": "mail.example.com",
      "ttl": 3600,
      "priority": 10,
      "created_at": "2024-01-15T10:32:00Z"
    }
  ]
}

Javob holati kodlari

200 Successfully retrieved zone details
404 Zone not found or not owned by user
ПОСТ /api/v1/dns-zones/

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

Домен учун янги DNS зонасини яратинг. Зона VPS.org ном серверларига тезда ўрнатилади.

Tana parametrlarini so'rash

Парамeтрлар Turi Majburiy Тасвирлаш
domain string Ha Domain name (e.g., example.com)

Namunaviy so'rov

cURL
Python
JavaScript
curl -X POST "https://admin.vps.org/api/v1/dns-zones/" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"domain": "newdomain.com"}'
import requests

url = "https://admin.vps.org/api/v1/dns-zones/"
headers = {
    "Authorization": "Bearer YOUR_API_TOKEN",
    "Content-Type": "application/json"
}
data = {"domain": "newdomain.com"}

response = requests.post(url, headers=headers, json=data)
print(response.json())
const response = await fetch('https://admin.vps.org/api/v1/dns-zones/', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer YOUR_API_TOKEN',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({domain: 'newdomain.com'})
});

const zone = await response.json();
console.log(zone);

Javob namunasi

{
  "uuid": "new-zone-uuid",
  "domain": "newdomain.com",
  "created_at": "2026-01-18T16:45:00Z",
  "record_count": 0,
  "records": []
}

Javob holati kodlari

201 DNS zone created successfully
400 Bad Request - Invalid domain name or zone already exists
403 Forbidden - Token lacks dns:create permission
O'CHIRISH /api/v1/dns-zones/{uuid}/

DNS зонасини ўчириб ташлаш

DNS зонаси ва унга боғлиқ барча ёзувларни доимий равишда ўчириб ташлаш. Бу ишга қайтиб бўлмас.

Yo'l parametrlari

Парамeтрлар Turi Majburiy Тасвирлаш
uuid string Ha Unique zone identifier

Javob holati kodlari

204 Zone deleted successfully (no response body)
403 Forbidden - Token lacks dns:delete permission
404 Zone not found
OLING /api/v1/dns-zones/{uuid}/records/

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

Маълум бир зона учун барча DNS ёзувларни олиш (ўйилган йўл).

Yo'l parametrlari

Парамeтрлар Turi Majburiy Тасвирлаш
uuid string Ha Zone UUID

Namunaviy so'rov

curl -X GET "https://admin.vps.org/api/v1/dns-zones/{uuid}/records/" \
  -H "Authorization: Bearer YOUR_API_TOKEN"

Javob namunasi

[
  {
    "uuid": "rec-001",
    "record_type": "A",
    "name": "@",
    "value": "192.0.2.1",
    "ttl": 3600,
    "priority": null,
    "created_at": "2024-01-15T10:30:00Z"
  },
  {
    "uuid": "rec-002",
    "record_type": "MX",
    "name": "@",
    "value": "mail.example.com",
    "ttl": 3600,
    "priority": 10,
    "created_at": "2024-01-15T10:32:00Z"
  }
]
ПОСТ /api/v1/dns-zones/{uuid}/records/

Зонада DNS ёзувни яратиш

Янги DNS ёзувни белгиланган зонага (ўйилган йўл) қўшиш.

Tana parametrlarini so'rash

Парамeтрлар Turi Majburiy Тасвирлаш
record_type string Ha Record type: A, AAAA, CNAME, MX, TXT, NS, SRV, CAA
name string Ha Record name (@ for root, subdomain, or FQDN)
value string Ha Record value (IP address, hostname, text)
ttl integer No Time to live in seconds (default: 3600)
priority integer For MX/SRV Priority (required for MX and SRV records)

Namunaviy so'rov

cURL
Python
curl -X POST "https://admin.vps.org/api/v1/dns-zones/{uuid}/records/" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "record_type": "A",
    "name": "www",
    "value": "192.0.2.1",
    "ttl": 3600
  }'
import requests

url = f"https://admin.vps.org/api/v1/dns-zones/{zone_uuid}/records/"
headers = {
    "Authorization": "Bearer YOUR_API_TOKEN",
    "Content-Type": "application/json"
}
data = {
    "record_type": "A",
    "name": "www",
    "value": "192.0.2.1",
    "ttl": 3600
}

response = requests.post(url, headers=headers, json=data)
print(response.json())

Javob holati kodlari

201 DNS record created successfully
400 Bad Request - Invalid parameters or validation error (e.g., MX record missing priority)
GET PUT PATCH DELETE /api/v1/dns-records/{uuid}/

DNS ёзувларни бошқариш (тўғридан-тўғри кириш)

Запись UUID'дан фойдаланиб, индивидуал DNS ёзувларига тўлиқ CRUD операциялари.

Амалдорлар

Сўров параметрлари (GET /api/v1/dns-records/ учун)

Parameter Turi Тасвирлаш
zone string Filter records by zone UUID
record_type string Filter by record type (A, AAAA, MX, etc.)

Мисол: ёзувнинг TTL'ини янгилаш

curl -X PATCH "https://admin.vps.org/api/v1/dns-records/{rec-uuid}/" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"ttl": 1800}'

Supported DNS Record Types

Turi Purpose Example Value Priority Required
A Maps domain to IPv4 address 192.0.2.1 Йўқ
AAAA Maps domain to IPv6 address 2001:0db8::1 Йўқ
CNAME Creates alias to another domain example.com Йўқ
MX Mail server for domain mail.example.com Ha
TXT Text record (SPF, DKIM, verification) v=spf1 include:_spf.google.com ~all Йўқ
NS Nameserver delegation ns1.example.com Йўқ
SRV Service location record 10 5060 sip.example.com Ha
CAA Certificate authority authorization 0 issue "letsencrypt.org" Йўқ

Энг яхши амалиётлар

TTL созлаши

Умумлаштирилган намуналар

Хавфсизлик

Хатоларни бошқариш

Кўп учрайдиган хатолар

Holat kodi Хато Ҳисоблаш
400 Нодуруст домен номи Домен DNS номлаш қоидаларига риоя қилишини текшириш
400 MX ёзуви учун устуворлик талаб этилади Қўшиш priority MX ва SRV ёзувлари учун майдон
401 Нолойиқ API токен Текшириш токенининг формати (бошланиши керак) vps_)
403 Ҳуқуқ йўқ Янги токенни талаб қилинадиган билан яратиш dns:* рухсатлар
404 Зона/рекорд топилмади UUID'ни текширинг ва ресурс сизнинг ҳисобингизга тегишли эканига ишонч ҳосил қилинг

Хато жавоби мисоли

{
  "detail": "MX records require a priority value",
  "error_code": "validation_error",
  "field": "priority"
}

DNS ўзгаришлари синовдан ўтказилмоқда

Рекорд тарқалишини текшириш

# Query A record
dig example.com A

# Query specific nameserver
dig @ns1.vps.org example.com

# Query MX records
dig example.com MX

# Check all records
dig example.com ANY

Онлайн асбоблардан фойдаланиш