VPS.org API

REST API Documentation

رابط برنامه‌نویسی مدیریت 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 تنظیم کنید.

تغییرات در یک گام ذخیره و منتشر می‌شوند: اگر کارسازهای نام یک تغییر را رد کنند، درخواست ۵۰۲ را برمی‌گرداند و هیچ چیز ذخیره نمی‌شود. یک منطقه نمی‌تواند برای دامنه ای که حساب دیگر از قبل مدیریت می‌کند، یک پدر یا فرزند از منطقه حساب دیگر، یا یک نام رزرو شده VPS.org ایجاد شود.

مجوز مورد نیاز: dns:list (GET), dns:create (POST), dns:update (PUT, PATCH, sync), dns:delete (DELETE), dns:*

دریافت کنید /api/v1/dns-zones/

لیست کردن تمام DNS Zone ها

بازگرداندن مناطق شما ، جدیدترین اول ، ۲۵ در هر صفحه. رکوردها در اینجا شامل نمی‌شوند. برای گرفتن آنها ، یک منطقه تک را بازیابی کنید.

پارامترهای پرس و جو

Parameter نوع مورد نیاز Description
domain string No فقط بازگرداندن ناحیۀ دقیقاً با این نام دامنه
page integer No شماره صفحه، از ۱ شروع می‌شود

درخواست نمونه

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

فیلدهای پاسخ

میدان نوع Description
uuid string شناسۀ منطقه
domain string نام دامنه ، ذخیره‌شده در حروف کوچک
created_at datetime زمان ایجاد) ISO 8601 ، UTC (
record_count integer تعداد رکوردها در منطقه، شامل سه رکورد NS

کدهای وضعیت پاسخ

200 موفقیت
403 نشان API مفقود یا نامعتبر، یا نشان اجازه مورد نیاز را ندارد
POST /api/v1/dns-zones/

ایجاد منطقه DNS

یک منطقه را ایجاد می‌کند و منتشر می‌کند. منطقه با سه رکورد NS برای ns1 ، ns2 و ns3. vps.org آغاز می‌شود ، که رکوردهای سیستمی هستند و نمی‌توان آنها را ویرایش یا حذف کرد.

درخواست پارامترهای بدنه

Parameter نوع مورد نیاز Description
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 پیدا نشد یا متعلق به حساب دیگری است
دریافت کنید POST /api/v1/dns-zones/{uuid}/records/

فهرست یا افزودن رکوردها در یک منطقه

GET هر رکورد در منطقه را به عنوان یک آرایه ساده (بدون صفحات) برمی‌گرداند، که بر اساس نوع و نام مرتب شده‌است. POST یک رکورد را به منطقه اضافه می‌کند و آن را منتشر می‌کند.

درخواست پارامترهای بدنه (POST)

Parameter نوع مورد نیاز Description
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"
}

فیلدهای پاسخ

میدان نوع Description
uuid string شناسۀ رکورد، توسط /api/v1/dns-records/ endpoints استفاده می‌شود
priority integer | null اولویت برای رکوردهای MX و SRV ، در غیر این صورت صفر
created_at date فقط تاریخ ایجاد) Y- MM- DD (، بدون زمان

کدهای وضعیت پاسخ

200 GET: رکوردهاي منطقه
201 POST: ایجاد رکورد
400 خطای اعتبارسنجی ، برای مثال یک نوع رکورد ناشناخته ، یک ttl مفقود ، یا یک رکورد MX یا SRV بدون اولویت
404 پیدا نشد یا متعلق به حساب دیگری است
POST /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"
}
دریافت کنید POST /api/v1/dns-records/

فهرست یا ایجاد رکوردها در سراسر مناطق

GET رکوردهای تمام مناطق شما را برمی‌گرداند، ۲۵ در هر صفحه، مرتب شده توسط دامنه، نوع و نام. POST یک رکورد مانند نقطه پایانی رکوردهای منطقه ایجاد می‌کند، اما منطقه را در بدن به عنوان zone_uuid می‌گیرد.

پارامترهای پرس و جو

Parameter نوع مورد نیاز Description
zone string No فقط رکوردهای منطقه با این uuid
record_type string No فقط رکوردهای این نوع ، برای مثال MX) حساس به حروف بزرگ و کوچک (
page integer No شماره صفحه، از ۱ شروع می‌شود
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 POST: ایجاد رکورد
400 خطای اعتبارسنجی، یا zone_ uuid گم شده یا یکی از مناطق شما نیست
دریافت کنید PUT PATCH حذف /api/v1/dns-records/{uuid}/

گرفتن ، به‌روزرسانی یا حذف یک رکورد

GET یک رکورد را برمی‌گرداند. PUT جایگزین آن می‌شود و نیازمند record_type ، name ، value و ttl است. PATCH فقط فیلدهایی را که فرستاده‌اید تغییر می‌دهد. DELETE رکورد را حذف می‌کند و ۲۰۴ را بدون بدنه برمی‌گرداند. تغییرات بلافاصله منتشر می‌شوند. رکوردهای NS ایجاد شده با منطقه رکوردهای سیستم هستند: به‌روزرسانی یا حذف آن‌ها ۴۰۳ را برمی‌گرداند.

هنگامی که اولویت یک رکورد MX یا SRV را PATCH می‌کنید، 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 پیدا نشد یا متعلق به حساب دیگری است

برخورد با خطا

خطاهای اعتبارسنجی با مشکل کلید‌گذاری‌شده توسط نام حوزه، ۴۰۰ را برمی‌گردانند:

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