إنشاء مناطق DNS وإدارة سجلاتها. المناطق تخدم من قبل ns1.vps.org، ns2.vps.org و ns3.vps.org.
تحتوي المنطقة على السجلات لنطاق واحد. كل تغيير تقوم به من خلال 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:*
يعيد مناطقك، أحدث أولاً، 25 في كل صفحة. السجلات غير مدرجة هنا؛ أخذ منطقة واحدة للحصول عليها.
| البارامترات | يكتب | مطلوب | وصف المشروع |
|---|---|---|---|
domain |
string | لا | أرجع فقط المنطقة مع هذا الاسم بالضبط |
page |
integer | لا | رقم الصفحة، بدءا من ١ |
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 مفقود أو غير صحيح، أو يفتقر الرمز إلى الإذن المطلوب |
تبدأ المنطقة بثلاثة سجلات 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 | اسم النطاق المفقود أو غير الصحيح |
يعيد منطقة واحدة مع جميع سجلاتها في صفيفة سجلات. الاستجابة لها نفس الشكل كما استجابة إنشاء أعلاه.
curl -X GET "https://admin.vps.org/api/v1/dns-zones/c7a1e3f0-2b4d-4e6a-9c8b-0d1f2e3a4b5c/" \
-H "Authorization: Bearer YOUR_API_TOKEN"
| 200 | النجاح |
| 404 | لم يُعثر عليها، أو أنها تنتمي إلى حساب آخر |
يزيل المنطقة من جميع خواديم الأسماء الثلاثة، ويتحقق من أن أيا منها لا يزال يخدمها، ثم يحذف المنطقة وسجلاتها. إذا كان خادوم الاسم لا يزال يستجيب للمنطقة، يفشل الطلب وتبقى المنطقة حتى يمكنك محاولة مرة أخرى.
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 | لم يُعثر عليها، أو أنها تنتمي إلى حساب آخر |
GET يعيد كل سجل في المنطقة كمصفوفة بسيطة (غير صفحة)، مرتبة حسب النوع والعنوان. 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 -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 | لم يُعثر عليها، أو أنها تنتمي إلى حساب آخر |
يدفع المنطقة وجميع سجلاتها إلى خواديم الأسماء مرة أخرى. تنشر تغييرات السجلات تلقائياً، ولكن النشر هو أفضل جهد والفشل لا يفشل الطلب الأصلي، لذلك استخدم هذا عندما لا يظهر تغيير في بحث 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"
}
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 مفقود أو ليس من مناطقك |
GET يعيد سجل واحد. PUT يستبدل هذا السجل ويحتاج إلى record_type، name، value و ttl. PATCH يغير الحقول التي ترسلها فقط. DELETE يزيل السجل ويعيد 204 بدون جسد. التغييرات تنشر فورا. السجلات NS التي أنشئت مع المنطقة هي سجلات النظام: تحديثها أو حذفها يعيد 403.
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"]
}
استفسر عن خوادم الأسماء VPS.org مباشرة للتأكد من أن التغيير هو حي قبل تفويض المسجل أو حل مخزن اللحاق:
dig @ns1.vps.org example.com A
dig @ns2.vps.org example.com MX
dig @ns3.vps.org www.example.com