VPS.org API

REST API dokumentacija

DNS valdymo API

Programiškai valdykite savo domenų DNS zonas ir įrašus.

Galutiniai taškai 4 galiniai taškai
Bazinis kelias /api/v1/dns-zones
Autentifikavimas Nešiotojo žetonas reikalingas

Apžvalga

DNS API užtikrina visišką DNS zonų ir įrašų valdymą. Visos zonos yra laikomos VPS.org autoritetingų pavadinimų serverių su automatiniu BIND9 zonos failų generavimu ir diegimu.

Vardų serverių infrastruktūra

Pagrindinės savybės

Autentifikavimas

Visi DNS API prašymai reikalauja Beaner žetonų autentiškumo patvirtinimo. Generuoti API žetonus iš savo paskyros prietaisų skydelio /account/developers/ su šiais leidimais:

Pavyzdys

Authorization: Bearer vps_abc123def456...
Svarbu: API simboliai rodomi tik vieną kartą kūrimo metu. Saugokite juos saugiai. Jei prarasite žetoną, turite sukurti naują.
GAUTI /api/v1/dns-zones/

Išvardinti visas DNS zonas

Gauti išspausdintą sąrašą visų DNS zonų, priklausančių patvirtintam vartotojui. Palaiko filtravimą pagal domeno vardą.

Užklausos parametrai

Parametras Tipas Privaloma Aprašymas
domain string Nr. Filter zones by exact domain name (e.g., example.com)

Prašymo pavyzdys

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

Atsakymo pavyzdys

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

Atsakymo laukai

Laukas Tipas Aprašymas
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

Atsakymo būsenos kodai

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

Gauti DNS zonos duomenis

Gaukite išsamią informaciją apie tam tikrą DNS zoną, įskaitant visus įrašus.

Kelio parametrai

Parametras Tipas Privaloma Aprašymas
uuid string Taip Unique zone identifier

Atsakymo pavyzdys

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

Atsakymo būsenos kodai

200 Successfully retrieved zone details
404 Zone not found or not owned by user
Potvarkis /api/v1/dns-zones/

Sukurti DNS zoną

Sukurti naują DNS zoną domenui. Zona bus nedelsiant dislokuota VPS.org vardų serveriams.

Užklausos turinio parametrai

Parametras Tipas Privaloma Aprašymas
domain string Taip Domain name (e.g., example.com)

Prašymo pavyzdys

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

Atsakymo pavyzdys

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

Atsakymo būsenos kodai

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

Ištrinti DNS zoną

Negrįžtamai ištrinti DNS zoną ir visus susijusius įrašus. Šis veiksmas negali būti atšauktas.

Kelio parametrai

Parametras Tipas Privaloma Aprašymas
uuid string Taip Unique zone identifier

Atsakymo būsenos kodai

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

DNS įrašų sąrašas zonoje

Gaukite visus DNS įrašus, skirtus konkrečiai zonai (numatytam maršrutui).

Kelio parametrai

Parametras Tipas Privaloma Aprašymas
uuid string Taip Zone UUID

Prašymo pavyzdys

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

Atsakymo pavyzdys

[
  {
    "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"
  }
]
Potvarkis /api/v1/dns-zones/{uuid}/records/

Sukurti DNS įrašą zonoje

Pridėti naują DNS įrašą į konkrečią zoną (numatytas maršrutas).

Užklausos turinio parametrai

Parametras Tipas Privaloma Aprašymas
record_type string Taip Record type: A, AAAA, CNAME, MX, TXT, NS, SRV, CAA
name string Taip Record name (@ for root, subdomain, or FQDN)
value string Taip 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)

Prašymo pavyzdys

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

Atsakymo būsenos kodai

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}/

Valdyti DNS įrašus (tiesioginė prieiga)

Visos CRUD operacijos atskiruose DNS įrašuose, naudojant įrašus UUID.

Galimos operacijos

Užklausos parametrai (dėl GET /api/v1/dns-records/)

Parameter Tipas Aprašymas
zone string Filter records by zone UUID
record_type string Filter by record type (A, AAAA, MX, etc.)

Pavyzdys: Įrašo atnaujinimas 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

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

Geriausia patirtis

TTL konfigūracija

Bendri modeliai

Saugumas

Klaida tvarkant

Dažnos klaidos

Būsenos kodas Klaida Tirpalas
400 Neteisingas domeno vardas Užtikrinti domeną pagal DNS pavadinimų konvencijas
400 MX įrašas reikalauja pirmenybės Įtraukti priority MX ir SRV įrašų laukelis
401 Netinkamas API žetonas Patikrinkite žymimo formatą (reikia pradėti nuo vps_)
403 Trūkstamas leidimas Generuoti naują žymeklį su reikiamu dns:* leidimai
404 Zona/įrašas nerastas Patikrinti UUID ir užtikrinti, kad resursas priklauso jūsų paskyrai

Pavyzdinės klaidos atsakas

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

Testuoti DNS pakeitimus

Tikrinti įrašų platinimą

# 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

Naudoti internetinius įrankius