VPS.org API

وثائق REST API

واجهة برمجة تطبيقات إدارة نظام أسماء النطاقات (DNS)

إنشاء مناطق DNS وإدارة سجلاتها. المناطق تخدم من قبل ns1.vps.org، ns2.vps.org و ns3.vps.org.

نقاط النهاية 13
المسار الأساسي /api/v1/dns-zones, /api/v1/dns-records

ملخص

تحتوي المنطقة على السجلات لنطاق واحد. كل تغيير تقوم به من خلال API يتم دفعه إلى VPS.org nameservers على الفور. لخدمة مجال من هذه المناطق، حدد خواديم أسمائه في مسجلك إلى 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 لا رقم الصفحة، بدءا من ١

مثال على الطلب

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 عدد السجلات في المنطقة، بما في ذلك السجلات الوطنية الثلاثة

رموز حالة الاستجابة

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

يعيد منطقة واحدة مع جميع سجلاتها في صفيفة سجلات. الاستجابة لها نفس الشكل كما استجابة إنشاء أعلاه.

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 حذفت، لا يتضمن الرد أي نص.
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 نعم بيانات السجل، مثل عنوان بروتوكول الإنترنت أو اسم المضيف. أسماء المضيف لا تحتاج إلى نقطة في النهاية وقيم 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 تاريخ الإنشاء فقط (السنة - الشهر - اليوم)، بدون وقت

رموز حالة الاستجابة

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 لا رقم الصفحة، بدءا من ١
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 نقطة البيع: السجل المنشأ
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