VPS.org API

Dokumentasi API REST

API Manajemen DNS

Buat zona DNS dan atur catatan mereka. Zona dilayani oleh ns1.vps.org, ns2.zx0xqz dan ns3.vps.org.

Titik akhir 13
Jalur Dasar /api/v1/dns-zones, /api/v1/dns-records

Ringkasan

Sebuah zona menyimpan rekaman untuk satu domain. Setiap perubahan yang Anda buat melalui API langsung diteruskan ke nameserver VPS.org. Untuk melayani domain dari zona ini, atur nameserver-nya di registrar Anda ke ns1.vps.org, ns2.vps.org dan ns3.vps.org.

Perubahan disimpan dan diterbitkan dalam satu langkah: jika server nama menolak perubahan, permintaan mengembalikan 502 dan tidak ada yang disimpan. Zona tidak dapat dibuat untuk akun domain lain yang telah dikelola, induk atau anak dari zona akun lain, atau nama cadangan VPS.org.

Perlu izin: dns:list (GET), dns:create (POST), dns:update (PUT, PATCH, sync), dns:delete (DELETE), dns:*

MENDAPATKAN /api/v1/dns-zones/

Daftar Semua Zona DNS

Mengembalikan zona Anda, dari yang terbaru, 25 per halaman. Rekaman tidak disertakan di sini; ambil satu zona untuk mendapatkannya.

Parameter Kueri

Parameter Jenis Diperlukan Deskripsi
domain string Tidak Kembalikan hanya zona dengan nama domain ini
page integer Tidak Halaman nomor, mulai dari 1

Contoh Permintaan

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

Contoh Jawaban

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

Kolom Respons

Ruas Jenis Deskripsi
uuid string Pengenal Zona
domain string Nama domain, disimpan dalam huruf kecil
created_at datetime Waktu Penciptaan (ISO 8601, UTC)
record_count integer Jumlah catatan di zona, termasuk tiga catatan NS

Kode Status Respons

200 Berhasil
403 Hilang atau token API tak valid, atau token kurang izin yang diperlukan
POST /api/v1/dns-zones/

Buat Zona DNS

Membuat zona dan mempublikasikannya. Zona ini dimulai dengan tiga catatan NS untuk ns1, ns2 dan ns3.vps.org, yang merupakan catatan sistem dan tidak dapat diedit atau dihapus.

Parameter Badan Permintaan

Parameter Jenis Diperlukan Deskripsi
domain string Ya Nama domain, misalnya.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"}'

Contoh Jawaban

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

Kode Status Respons

201 Zona dibuat
400 Nama domain yang hilang atau tidak valid
MENDAPATKAN /api/v1/dns-zones/{uuid}/

Dapatkan Rincian Zona DNS

Mengembalikan satu zona dengan semua catatan dalam array catatan. Responnya memiliki bentuk yang sama dengan respon yang dibuat di atas.

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

Kode Status Respons

200 Berhasil
404 Tidak ditemukan, atau milik akun lain
MENGHAPUS /api/v1/dns-zones/{uuid}/

Hapus Zona DNS

Hapus zona dari ketiga server nama, periksa bahwa tidak satupun dari mereka masih melayaninya, dan kemudian menghapus zona dan catatannya. Jika sebuah penampil masih menjawab untuk zona, permintaan gagal dan zona tersebut disimpan sehingga Anda dapat mencoba lagi.

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

Kode Status Respons

204 Tak ada yang bisa di hapus.
400 Sebuah nameserver masih melayani zona. Zona tidak dihapus; bagian detail daftar kesalahan.
404 Tidak ditemukan, atau milik akun lain
MENDAPATKAN POST /api/v1/dns-zones/{uuid}/records/

Daftar atau Tambah Catatan dalam Suatu Zona

GET mengembalikan setiap catatan di zona sebagai sebuah array biasa (tidak tertata), diurutkan berdasarkan tipe dan nama. POST menambahkan catatan ke zona dan mempublikasikannya.

Parameter Badan Permintaan (POST)

Parameter Jenis Diperlukan Deskripsi
record_type string Ya A, AAAA, CNAME, MX, NS, TXT, SRV, PTR, SOA, CAA
name string Ya @ untuk domain itu sendiri, atau label seperti www. Nama disimpan dalam huruf kecil.
value string Ya Data rekaman, misalnya alamat IP atau nama host. Nama host tidak perlu ada titik-titik tertinggal dan nilai-nilai TXT yang tidak perlu dikutip; keduanya ditambahkan ketika catatan diterbitkan.
ttl integer Ya Waktu untuk hidup dalam detik
priority integer MX dan SRV saja Diperlukan untuk catatan MX dan SRV dan diabaikan untuk setiap tipe lainnya. Untuk SRV, taruh berat, port dan target dalam nilai.

Contoh Permintaan

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

Contoh Jawaban

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

Kolom Respons

Ruas Jenis Deskripsi
uuid string Identifier rekaman, digunakan oleh /api/v1/dns-records/point
priority integer | null Prioritas untuk catatan MX dan SRV, jika tidak, kosong
created_at date Tanggal penciptaan (YYYM-DD), tanpa waktu

Kode Status Respons

200 GET: catatan zona
201 POST: record dibuat
400 Galat validasi, misalnya tipe rekaman yang tidak diketahui, ttl yang hilang, atau rekor MX atau SRV tanpa prioritas
404 Tidak ditemukan, atau milik akun lain
POST /api/v1/dns-zones/{uuid}/sync/

Republish Zona

Mendorong zona dan semua catatannya ke server nama lagi. Perubahan rekaman diterbitkan secara otomatis, tapi penerbitan adalah upaya terbaik dan kegagalan tidak gagal permintaan asli, jadi gunakan ini ketika perubahan tidak muncul dalam pencarian DNS. Tidak ada permintaan badan dibutuhkan.

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

Daftar atau Buat Catatan di Zona-zona

GET mengembalikan catatan semua zona Anda, 25 per halaman, diperintahkan oleh domain, tipe dan nama. POST menciptakan catatan seperti titik akhir catatan zona, tetapi mengambil zona di tubuh sebagai zone_uuid.

Parameter Kueri

Parameter Jenis Diperlukan Deskripsi
zone string Tidak Hanya catatan zona dengan uuid ini
record_type string Tidak Hanya catatan jenis ini, misalnya MX (case sensensitive)
page integer Tidak Halaman nomor, mulai dari 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"
    }
  ]
}

Kode Status Respons

200 GET: sukses
201 POST: record dibuat
400 Galat validasi, atau zone_uuid hilang atau bukan salah satu dari zona Anda
MENDAPATKAN PUT PATCH MENGHAPUS /api/v1/dns-records/{uuid}/

Dapatkan, Mutakhirkan atau Hapus suatu Record

GET kembali satu catatan. PUT mengganti itu dan membutuhkan record_type, nama, nilai, dan ttl. POC hanya perubahan bidang yang Anda kirim. DELETE menghapus catatan dan mengembalikan 204 tanpa tubuh. Perubahan diterbitkan langsung. Catatan NS yang dibuat dengan zona adalah catatan sistem: memperbarui atau menghapus mereka kembali 403.

Ketika Anda POCC prioritas dari sebuah catatan MX atau SRV, kirim record_type dalam permintaan yang sama. Sebuah badan POC dengan prioritas tetapi tanpa record_type membersihkan prioritas.
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}'

Kode Status Respons

200 GET, PUT atau PATCH: catatan
204 Tak ada yang bisa di hapus.
400 Galat validasi
403 Catatan adalah catatan sistem, atau token tidak memiliki izin yang diperlukan
404 Tidak ditemukan, atau milik akun lain

Kesalahan Menangani

Galat validasi mengembalikan 400 dengan masalah yang diay Keyed oleh nama ruas:

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

Menguji Perubahan DNS

Kuiri nameserver VPS.org secara langsung untuk mengkonfirmasi perubahan hidup sebelum delegasi registrar atau resolver menangkap:

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