VPS.org API

Dokumentasi API REST

API Pengurusan DNS

Urus zon dan rekod DNS secara pengaturcaraan untuk domain anda.

Titik akhir 4 titik hujung
Laluan Asas /api/v1/dns-zones
Pengesahan Token Pemegang Diperlukan

Gambaran Keseluruhan

API DNS menyediakan pengurusan penuh zon dan rekod DNS. Semua zon dihost pada pelayan nama berkuasa VPS.org dengan penjanaan fail zon BIND9 automatik dan pelaksanaan.

Infrastruktur Pelayan Nama

Ciri-ciri Utama

Pengesahan

Semua permintaan API DNS memerlukan pengesahan token Bearer. Janakan token API dari dashboard akaun anda di /account/developers/ dengan keizinan berikut:

Contoh

Authorization: Bearer vps_abc123def456...
Penting: Token API hanya dipaparkan sekali semasa penciptaan. Simpan mereka dengan selamat. Jika anda kehilangan token, anda mesti cipta yang baru.
DAPATKAN /api/v1/dns-zones/

Senaraikan Semua Zon DNS

Dapatkan senarai berpagina semua zon DNS yang dimiliki oleh pengguna yang disahkan. Menyokong penapis mengikut nama domain.

Parameter Pertanyaan

Parameter Jenis Diperlukan Huraian
domain string Tidak Filter zones by exact domain name (e.g., example.com)

Contoh Permintaan

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

Contoh Respons

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

Medan Respons

Medan Jenis Huraian
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

Kod Status Respons

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

Dapatkan Perincian Zon DNS

Dapatkan maklumat terperinci mengenai zon DNS tertentu, termasuk semua rekod.

Parameter Laluan

Parameter Jenis Diperlukan Huraian
uuid string Ya Unique zone identifier

Contoh Respons

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

Kod Status Respons

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

Cipta Zon DNS

Cipta zon DNS baru untuk domain. Zon akan segera dilaksanakan ke VPS.org pelayan nama.

Minta Parameter Badan

Parameter Jenis Diperlukan Huraian
domain string Ya Domain name (e.g., example.com)

Contoh Permintaan

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

Contoh Respons

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

Kod Status Respons

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

Hapuskan Zon DNS

Padam secara kekal zon DNS dan semua rekod yang berkaitan. Tindakan ini tidak boleh dibatalkan.

Parameter Laluan

Parameter Jenis Diperlukan Huraian
uuid string Ya Unique zone identifier

Kod Status Respons

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

Senarai Rekod DNS dalam Zon

Dapatkan semua rekod DNS untuk zon tertentu (laluan bersarang).

Parameter Laluan

Parameter Jenis Diperlukan Huraian
uuid string Ya Zone UUID

Contoh Permintaan

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

Contoh Respons

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

Cipta Rekod DNS dalam Zon

Tambah rekod DNS baru ke zon tertentu (laluan bersarang).

Minta Parameter Badan

Parameter Jenis Diperlukan Huraian
record_type string Ya Record type: A, AAAA, CNAME, MX, TXT, NS, SRV, CAA
name string Ya Record name (@ for root, subdomain, or FQDN)
value string Ya 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)

Contoh Permintaan

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

Kod Status Respons

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

Urus Rekod DNS (Cetak Langsung)

Operasi CRUD penuh pada rekod DNS individu menggunakan UUID rekod.

Operasi yang Ada

Parameter pertanyaan (untuk GET /api/v1/dns-records/)

Parameter Jenis Huraian
zone string Filter records by zone UUID
record_type string Filter by record type (A, AAAA, MX, etc.)

Contoh: Kemas kini TTL Rekod

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

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

Praktek Terbaik

Konfigurasi TTL

Corak Umum

Keselamatan

Pengendalian Ralat

Ralat Biasa

Kod Status Ralat Penyelesaian
400 Nama domain tidak sah Pastikan domain mengikut konvensyen penamaan DNS
400 Rekod MX memerlukan keutamaan Termasuk priority medan untuk rekod MX dan SRV
401 Token API tidak sah Format token semak (mesti bermula dengan vps_)
403 Keizinan hilang Janakan token baru dengan dikehendaki dns:* Permissions
404 Zon/rekod tidak dijumpai Sahkan UUID dan pastikan sumber milik akaun anda

Contoh Balasan Ralat

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

Uji Perubahan DNS

Sahkan Penyebaran Rekod

# 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

Menggunakan Alat Dalam Talian