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 ზონის შექმნა

ქმნის ზონას და გამოსცემს მას. ზონა იწყება სამი 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 ზონის დეტალების მიღება

Returns one zone with all of its records in a records array. The response has the same shape as the create response above.

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 Deleted. The response has no body.
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 Deleted. The response has no body.
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