VPS.org API

เอกสาร REST API

API การจัดการ DNS

สร้างโซน 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 token ได้ หรือ token นั้น ไม่มีสิทธิ์ที่จำเป็น
ข้อความ /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

คืนค่ากลับมาเป็นโซนหนึ่ง โดยมีรายการทั้งหมดของโซนนั้นอยู่ในแถวรายการ ค่ากลับมาจะมีรูปแบบเหมือนกับค่ากลับมาของการสร้างที่กล่าวมาข้างต้น

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

ลบโซนออกจากเซิร์ฟเวอร์ชื่อทั้งหมด3ตัว และตรวจสอบว่าไม่มีเซิร์ฟเวอร์ชื่อใดที่ยังให้บริการโซนนี้อยู่ และลบโซนและบันทึกของมัน หากเซิร์ฟเวอร์ชื่อยังตอบสนองโซนนี้ คำขอจะล้มเหลว และโซนจะถูกเก็บไว้ เพื่อคุณจะสามารถลองใหม่ได้อีกครั้ง

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

รหัสสถานะการตอบกลับ

204 ลบออก คำตอบไม่มีส่วนตัว
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/endpoints
priority integer | null ความสำคัญสำหรับบันทึก MX และ SRV หากไม่เช่นนั้น จะไม่มีค่า
created_at date วันที่สร้างเท่านั้น (Y- MM- DD) โดยไม่มีเวลา

รหัสสถานะการตอบกลับ

200 GET: ข้อมูลของโซน
201 สร้างบันทึกใหม่
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 สำเร็จแล้ว
201 สร้างบันทึกใหม่
400 การตรวจสอบความถูกต้องล้มเหลว หรือ zone_ uuid หายไป หรือไม่ใช่โซนของคุณ
รับ PUT PATCH ลบ /api/v1/dns-records/{uuid}/

เรียกใช้, ปรับปรุงหรือลบรายการ

GET จะคืนค่ากลับมาเป็นบันทึกหนึ่งรายการ PUT จะแทนที่บันทึกและต้องการ record_ type, name, value และ ttl PATCH จะเปลี่ยนแปลงเพียงแค่ช่องที่คุณส่ง DELETE จะลบบันทึกและคืนค่ากลับมาเป็น 204 โดยไม่มีส่วนตัวของบันทึก ค่าเปลี่ยนแปลงจะถูกเผยแพร่ทันที บันทึก NS ที่สร้างขึ้นด้วยโซน เป็นบันทึกระบบ การปรับปรุงหรือลบบันทึกจะคืนค่ากลับมาเป็น 403

เมื่อคุณ PATCH ความสำคัญของบันทึก MX หรือ SRV ให้ส่ง record_ type ในคำขอเดียวกัน ส่วน PATCH body ที่มีความสำคัญ แต่ไม่มี 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 ลบออก คำตอบไม่มีส่วนตัว
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