VPS.org API

REST API belgelendirmesi

DNS Yönetim API'si

DNS bölgeleri oluşturun ve kayıtlarını yönetin. Bölgeler ns1.vps.org, ns2.vps.org ve ns3.vps.org tarafından hizmet edilir.

Uç noktalar 13
Temel Yol /api/v1/dns-zones, /api/v1/dns-records

Genel Bakış

Bir bölge bir alan için kayıtları tutar. API üzerinden yaptığınız her değişiklik VPS.org isim sunucularına hemen gönderilir. Bu bölgelerden bir alan için hizmet etmek için, kayıt defterinizde isim sunucularını ns1.vps.org, ns2.vps.org ve ns3.vps.org olarak ayarlayınız.

Değişiklikler tek bir adımla kaydediliyor ve yayınlanıyor: eğer isim sunucuları bir değişikliği reddediyorsa, talepte 502 geri dönüyor ve hiçbir şey kaydedilmiyor. Bir bölge, başka bir hesap tarafından yönetilen bir alan, başka bir hesaptaki bir ana veya çocuk bölgesi veya VPS.org rezerve bir isim için oluşturulamaz.

İzin gerekiyor: dns:list (GET), dns:create (POST), dns:update (PUT, PATCH, sync), dns:delete (DELETE), dns:*

ELDE ETMEK /api/v1/dns-zones/

Tüm DNS Bölgelerini Listele

Bölgelerinizi, en yenisi önce, sayfa başına 25 olarak geri verir. Kayıtlar burada yer almıyor; onları almak için tek bir bölgeyi alın.

Sorgu Parametreleri

Parametreler Tip Gerekli Açıklama
domain string Hayır. Sadece bu alan adıyla aynı olan bölgeyi geri ver
page integer Hayır. Sayfa sayısı, 1'den başlayarak

Örnek Talep

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

Örnek Yanıt

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

Yanıt Alanları

Alan Tip Açıklama
uuid string Bölge tanımlayıcı
domain string Alan adı, küçük harflerle depolanır
created_at datetime Yaratma zamanı (ISO 8601, UTC)
record_count integer Üç NS kaydı da dahil olmak üzere bölgedeki kayıt sayısı

Yanıt Durum Kodları

200 Başarı
403 Eksik veya geçersiz API token'ı, ya da token'ın gerekli izinleri yok
POST /api/v1/dns-zones/

DNS Bölgesi Yarat

Bir bölge yaratıp yayınlar. Bölge, ns1, ns2 ve ns3. vps.org için üç NS kaydı ile başlar, bunlar sistem kayıtlarıdır ve düzenetilemez veya silinmez.

İstek Gövdesi Parametreleri

Parametreler Tip Gerekli Açıklama
domain string Evet Alan adı, örneğin 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"}'

Örnek Yanıt

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

Yanıt Durum Kodları

201 Bölge oluşturuldu
400 Eksik veya geçersiz alan adı
ELDE ETMEK /api/v1/dns-zones/{uuid}/

DNS Bölgesi Ayrıntılarını Al

Bir kayıt dizisi içindeki tüm kayıtlarıyla birlikte bir bölgeyi geri verir. Cevap yukarıdaki yarat cevabı ile aynı biçimdedir.

curl -X GET "https://admin.vps.org/api/v1/dns-zones/c7a1e3f0-2b4d-4e6a-9c8b-0d1f2e3a4b5c/" \
  -H "Authorization: Bearer YOUR_API_TOKEN"

Yanıt Durum Kodları

200 Başarı
404 Bulunamadı veya başka bir hesaba aittir
SİLMEK /api/v1/dns-zones/{uuid}/

DNS Bölgesini Sil

Bölgeyi üç isim sunucusundan da kaldırır, hiçbirinin ona hizmet vermediğini kontrol eder, sonra da bölge ve kayıtlarını siler. Eğer bir isim sunucusu hala bölge için cevap verirse, talep başarısız olur ve bölge tekrar denemeniz için saklanır.

curl -X DELETE "https://admin.vps.org/api/v1/dns-zones/c7a1e3f0-2b4d-4e6a-9c8b-0d1f2e3a4b5c/" \
  -H "Authorization: Bearer YOUR_API_TOKEN"

Yanıt Durum Kodları

204 Çözümün bir başlığı yok.
400 Bir isim sunucusu hala bölgeye hizmet veriyor. Bölge silinmedi; ayrıntılı alan hataları listeliyor.
404 Bulunamadı veya başka bir hesaba aittir
ELDE ETMEK POST /api/v1/dns-zones/{uuid}/records/

Bir bölgede kayıtları listele veya ekle

GET, bölgedeki her kaydı, türü ve adı ile sıralanmış, sıradan bir dizi olarak (sayfalanmış değil) geri verir. POST, bölgeye bir kayıt ekler ve yayınlar.

İstek Gövdesi Parametreleri (POST)

Parametreler Tip Gerekli Açıklama
record_type string Evet A, AAAA, CNAME, MX, NS, TXT, SRV, PTR, SOA, CAA
name string Evet @ alan adı için kendisi, ya da www gibi bir etiket. Adlar küçük harflerle depolanır.
value string Evet Kayıt verileri, örneğin IP adresi veya bir sunucu adı. Sunucu adları son noktaya ihtiyaç duymaz ve TXT değerleri alıntıya ihtiyaç duymaz; her ikisi de kayıt yayınlandığında eklenir.
ttl integer Evet Yaşamak için saniyeler var.
priority integer Sadece MX ve SRV MX ve SRV kayıtları için gereklidir ve diğer tüm türler için göz ardı edilir. SRV için değere ağırlık, port ve hedef koyun.

Örnek Talep

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

Örnek Yanıt

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

Yanıt Alanları

Alan Tip Açıklama
uuid string /api/v1/dns-records/ son noktaları tarafından kullanılan kayıt tanımlayıcısı
priority integer | null MX ve SRV kayıtları için öncelik, aksi takdirde boş
created_at date Sadece yaratım tarihi (Y-MM-DD), zaman olmadan

Yanıt Durum Kodları

200 GET: Bölgenin kayıtları
201 POST: kayıt oluşturuldu
400 Güvenlik hatası, örneğin bilinmeyen kayıt türü, eksik ttl, veya önceliksiz MX veya SRV kaydı
404 Bulunamadı veya başka bir hesaba aittir
POST /api/v1/dns-zones/{uuid}/sync/

Bir Bölgeyi Yeniden Yayınla

Zon ve tüm kayıtlarını isim sunucularına tekrar itiyor. Kayıt değişiklikleri otomatik olarak yayınlanır, ancak yayın en iyi çabadır ve bir hata orijinal isteği başarısız etmez, bu yüzden bir değişiklik DNS aramalarında görünmediği zaman bunu kullanın. İstek bedeni gerekmez.

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"
}
ELDE ETMEK POST /api/v1/dns-records/

Bölgeler arasında kayıt listele veya yarat

GET, alan, tür ve isimlere göre sıralanmış, sayfa başına 25 adet olarak tüm bölgelerinizin kayıtlarını geri verir. POST, bölge kayıtlarının son noktası gibi bir kayıt oluşturur, ancak bedendeki bölgeyi zone_uuid olarak alır.

Sorgu Parametreleri

Parametreler Tip Gerekli Açıklama
zone string Hayır. Sadece bu uuid ile bölgenin kayıtları
record_type string Hayır. Sadece bu tür kayıtlar, örneğin MX (büyük harf fark etmez)
page integer Hayır. Sayfa sayısı, 1'den başlayarak
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"
    }
  ]
}

Yanıt Durum Kodları

200 Başarı
201 POST: kayıt oluşturuldu
400 Güvenlik hatası, ya da zone_uuid eksik ya da sizin bölgelerinizden biri değil
ELDE ETMEK PUT PATCH SİLMEK /api/v1/dns-records/{uuid}/

Kayıt Al, Güncelle veya Sil

GET bir kayıt geri verir. PUT kayıt_türü, adı, değeri ve ttl'ye ihtiyaç duyar. PATCH sadece gönderdiğiniz alanları değiştirir. DELETE kayıtları kaldırır ve 204'ü bedensiz olarak geri verir. Değişiklikler hemen yayınlanmaktadır. Bölge ile oluşturulan NS kayıtları sistem kayıtlarıdır: bunları güncellemek veya silmek 403'ü geri verir.

Bir MX veya SRV kayıtının önceliğini PATCH yaptığınızda, record_type'ı aynı istekte gönderin. Öncelikle ancak record_type'siz bir PATCH vücut önceliği temizler.
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}'

Yanıt Durum Kodları

200 GET, PUT veya PATCH: kayıt
204 Çözümün bir başlığı yok.
400 Güvenlik hatası
403 Kayıt bir sistem kaydıdır veya token gerekli izinden yoksundur
404 Bulunamadı veya başka bir hesaba aittir

Hata Yönetimi

Güvenlik hataları, sorunun alan adı ile anahtarlanmış olduğunda 400 geri döndürür:

{
  "priority": ["MX records require a priority value"]
}

DNS Değişiklikleri Test Ediliyor

Bir değişikliğin kayıt delegeleme veya çözümleme önbellekleriniz yakalamadan önce canlı olduğunu doğrulamak için VPS.org isim sunucularını doğrudan sorgulayın:

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