مرجع توسعه‌دهندگان · API v1

مستندات وب‌سرویس پنل Domain123

مرجع کامل API نسخهٔ ۱ پنل: احراز هویت، دامنه‌ها، نیم‌سرورها، قفل ثبت‌کننده، کیف پول و شناسه‌ها — با نمونه‌کد cURL و PHP و پاسخ‌های JSON.

Base URL
https://panel.domain123.ir/api/v1
احراز هویت
Bearer Token + IP Allowlist
قالب داده
JSON · UTF-8
استاندارد
OpenAPI 3.1

مقدمه #

وب‌سرویس پنل Domain123 یک API مبتنی بر HTTP و JSON است که همان هستهٔ کسب‌وکار پنل را در اختیار سیستم شما می‌گذارد؛ هیچ قاعدهٔ موازی و هیچ مسیر مالی دومی وجود ندارد. هر عملیاتی که در پنل انجام می‌شود، از طریق همین سرویس نیز قابل انجام است و برعکس.

این مستندات با استاندارد OpenAPI Specification 3.1 توصیف شده و ساختار صفحه بر پایهٔ الگوی سه‌ستونه (Slate / Three-pane) است: ستون راست، فهرست موضوعات؛ ستون میانی، متن مرجع؛ ستون چپ، نمونه‌کدها و پاسخ‌ها.

آدرس پایه

Base URLhttps://panel.domain123.ir/api/v1

همهٔ مسیرهای این مستندات نسبت به همین آدرس پایه نوشته شده‌اند. ارتباط باید روی HTTPS برقرار شود؛ درخواست‌های HTTP پذیرفته نمی‌شوند.

نسخه‌بندی

نسخهٔ فعلی v1 است و در مسیر URL قرار می‌گیرد. تغییرات ناسازگار تنها در نسخهٔ جدید منتشر می‌شود؛ افزودن فیلد به پاسخ‌ها یا افزودن پارامتر اختیاری، تغییر ناسازگار محسوب نمی‌شود.

مشخصات کلی سرویس

ویژگیمقدار
قالب دادهapplication/json با کدگذاری UTF-8
پروتکلHTTPS (TLS 1.2 یا بالاتر)
نسخهٔ APIv1
واحد پولریال ایران — همهٔ مبالغ عدد صحیح و بدون اعشار هستند
سقف درخواست۶۰ درخواست در دقیقه برای هر حساب؛ ۱۰ عملیات تغییردهنده در دقیقه
مستندات ماشین‌خوانOpenAPI 3.1 — دریافت فایل JSON

شروع سریع #

پیش از نخستین درخواست، سه کار را انجام دهید: ساخت کلید، تعیین IP مجاز و انتخاب سطح دسترسی.

  1. با حساب مشتری وارد پنل شوید و به بخش وب‌سرویس در آدرس /customer/service/api بروید.
  2. یک کلید جدید بسازید و حداقل یک IP یا بازهٔ CIDR را در فهرست مجاز ثبت کنید؛ IP خروجی سروری که درخواست‌ها را می‌فرستد الزامی است.
  3. سطح دسترسی کلید را انتخاب کنید: read، write یا full.
  4. مقدار کلید را در متغیر محیطی نگه دارید؛ کلید فقط یک بار نمایش داده می‌شود.
هدرهای استاندارد هر درخواستAuthorization: Bearer $DOMAIN123_API_KEY Accept: application/json Content-Type: application/json

قالب پاسخ

هر پاسخ — موفق یا ناموفق — یک پوشش ثابت دارد. دادهٔ عملیات همیشه در data و خطای ساختاریافته همیشه در error قرار می‌گیرد.

پاسخ موفق{ "ok": true, "data": { "...": "..." } }
پاسخ ناموفق{ "ok": false, "error": { "code": "domain-not-found", "message": "دامنه در این حساب یافت نشد." } }

احراز هویت #

احراز هویت با یک کلید API انجام می‌شود که به یک حساب مشخص تعلق دارد. سرویس هیچ انتخابگر حسابی نمی‌پذیرد؛ حساب از خود کلید استخراج می‌شود.

AuthorizationAuthorization: Bearer <YOUR_API_KEY>

سطوح دسترسی

سطح دسترسی به اثر واقعی عملیات بسته است، نه به متد HTTP. یک POST می‌تواند فقط‌خواندنی باشد و یک GET هرگز به‌صورت خودکار بی‌خطر فرض نمی‌شود.

سطحاجازهٔ انجامنمونهٔ عملیات
readفقط خواندن؛ بدون هیچ اثر مالیفهرست دامنه‌ها، اطلاعات دامنه، استعلام موجودی، کیف پول
writeتغییرات بدون اثر مالینیم‌سرورها، Registrar Lock، ایجاد شناسه
fullهمهٔ عملیات، از جمله عملیات مالیثبت، تمدید، انتقال، بازگردانی، تغییر مالکیت

چرخهٔ عمر کلید

موضوعرفتار سرویس
IP مجازاجباری؛ درخواست از IP غیرمجاز با 401 رد می‌شود
تاریخ انقضااختیاری؛ کلید منقضی با 401 رد می‌شود
ابطال و جایگزینیاز همان صفحهٔ وب‌سرویس پنل؛ کلید جایگزین یک کلید مستقل با همان دسترسی‌هاست
لاگهر درخواست با کلید، IP، متد، مسیر، کد وضعیت و زمان ثبت می‌شود

قواعد عمومی #

این قواعد برای همهٔ اندپوینت‌ها یکسان است و رعایت آن‌ها از خطاهای تکراری جلوگیری می‌کند.

Idempotency-Key

همهٔ عملیات تغییردهنده باید هدر Idempotency-Key داشته باشند؛ رشته‌ای از ۱۶ تا ۶۴ نویسه شامل حروف لاتین، رقم، - و _. اگر هدر ارسال نشود، همان مقدار از فیلد request_key در بدنه خوانده می‌شود.

کلید تکرارپذیر است: ارسال دوبارهٔ همان کلید با همان ورودی، عملیات را دوباره اجرا نمی‌کند و همان نتیجهٔ قبلی را برمی‌گرداند. ارسال همان کلید با ورودی متفاوت با خطای request-key-reused-with-different-input رد می‌شود.

پول و مبالغ

همهٔ مبالغ عدد صحیح ریال هستند و واحد پول در فیلد currency با مقدار IRR گزارش می‌شود. عملیات مالی پیش از ارسال به ثبت‌کننده، مبلغ را در کیف پول رزرو می‌کند؛ در صورت شکست قطعی، مبلغ بازگردانده و در فیلد returned_amount گزارش می‌شود.

پارامتر confirmed_amount مبلغی است که کاربر نهایی در سیستم شما تأیید کرده است. اگر با تعرفهٔ منتشرشدهٔ لحظهٔ اجرا یکسان نباشد، عملیات رد می‌شود تا مبلغی خارج از تأیید کاربر خرج نشود.

نتیجهٔ عملیات

مقدار resultمعنااقدام لازم
successfulعملیات در ثبت‌کننده و در دفتر مالی قطعی شده استثبت نتیجه در سیستم شما
failedعملیات قطعاً انجام نشده و پول بازگشته استنمایش خطا؛ ارسال مجدد فقط پس از رفع علت
unknownنتیجهٔ ثبت‌کننده اثبات نشده استهمگام‌سازی در پنل؛ ارسال کورکورانهٔ مجدد ممنوع

محدودیت نرخ

دامنهٔ اعمالسقفسرآیندهای پاسخ
درخواست‌های احراز‌شده (کل حساب)۶۰ در دقیقهX-RateLimit-Limit، X-RateLimit-Remaining
عملیات تغییردهنده۱۰ در دقیقههمان سرآیندها با سقف ۱۰
اندپوینت‌های عمومی۶۰ در دقیقه برای هر IPهمان سرآیندها

در پاسخ 429، مقدار Retry-After تعداد ثانیهٔ انتظار را مشخص می‌کند.

شناسه‌ها و مالکیت

هر دامنه در پنل یک id عددی دارد و عملیات روی دامنه با همین شناسه انجام می‌شود. برای مصرف‌کنندگانی که دامنه را با نام می‌شناسند (مثل WHMCS)، اندپوینت GET /domains/lookup?fqdn= همین شناسه را برمی‌گرداند.

اندپوینت‌های عمومی #

این دو اندپوینت بدون کلید API در دسترس‌اند، فقط‌خواندنی هستند و به‌ازای هر IP محدود می‌شوند. برای استعلام قیمت و WHOIS در سایت یا سیستم خود از همین‌ها استفاده کنید.

دریافت تعرفه‌های منتشرشده #

GET /public/prices بدون احراز هویت

تعرفهٔ جاری یک سطح قیمتی را از آخرین نسخهٔ منتشرشدهٔ پنل برمی‌گرداند. اگر تعرفه کهنه باشد، به‌جای عدد نادرست، خطای ۵۰۳ برگردانده می‌شود.

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

نامنوع دادهالزامیتوضیحات
levelstringاختیاریکلید سطح قیمتی. اگر ارسال نشود، نخستین سطح منتشرشده انتخاب می‌شود.

فیلدهای پاسخ

نامنوع دادهتوضیحات
levelstringسطح قیمتی پاسخ
currencystringواحد پول؛ همیشه IRR
publicationobjectنسخهٔ انتشار تعرفه (id، version، published_at، …)
tierobjectسطح قیمتی نگاشت‌شده (slab_id، name)
rowsarray<object>یک ردیف برای هر TLD: register، renew، transfer، restore، move، five_year

استعلام WHOIS #

GET /public/whois بدون احراز هویت

نتیجهٔ WHOIS یک دامنه را به‌صورت پاک‌سازی‌شده برمی‌گرداند: آزاد بودن، وضعیت‌ها، تاریخ انقضا و نیم‌سرورها. دادهٔ شخصی مالک در این پاسخ نمایش داده نمی‌شود.

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

نامنوع دادهالزامیتوضیحات
domainstringالزامینام کامل دامنه، مثلاً example.ir

فیلدهای پاسخ

نامنوع دادهتوضیحات
domainstringدامنهٔ نرمال‌شده
availablebooleanآیا نام آزاد است
statusesarray<string>وضعیت‌های EPP/WHOIS
expirystring|nullتاریخ انقضا
nameserversarray<string>نیم‌سرورهای گزارش‌شده
sourcestringمنبع پاسخ WHOIS
checked_atintegerزمان خواندن، به ثانیهٔ یونیکس

حساب و کیف پول #

این دو اندپوینت تصویر مالی حسابِ کلید را نشان می‌دهند و برای کنترل موجودی پیش از عملیات مالی ضروری‌اند.

اطلاعات حساب #

GET /account کلید با سطح read

شناسه، نام، ایمیل، موجودی کیف پول و مشخصات کلید جاری را برمی‌گرداند. برای تشخیص اینکه کلید به کدام حساب تعلق دارد و چه سطحی دارد، از همین اندپوینت استفاده کنید.

فیلدهای پاسخ

نامنوع دادهتوضیحات
account_idintegerشناسهٔ حساب
namestringنام و نام خانوادگی
emailstringایمیل حساب
walletobjectموجودی و واحد پول
keyobjectشناسه، نام و سطح دسترسی کلید

موجودی و گردش کیف پول #

GET /wallet کلید با سطح read

موجودی جاری و ۵۰ تراکنش آخر کیف پول را برمی‌گرداند. هر ردیف، مبلغ، موجودی پس از تراکنش، نوع و عملیات مرتبط را نشان می‌دهد.

فیلدهای پاسخ

نامنوع دادهتوضیحات
balanceintegerموجودی قابل استفادهٔ کیف پول (ریال)
currencystringواحد پول
historyarray<object>تراکنش‌ها: id، amount، balance_after، type، operation، status، note، at

دامنه‌ها #

هستهٔ اصلی سرویس: خواندن، استعلام، ثبت، تمدید، انتقال، بازگردانی، تغییر مالکیت، نیم‌سرورها و قفل ثبت‌کننده. همهٔ عملیات تغییردهنده از همان هستهٔ کسب‌وکار پنل استفاده می‌کنند.

فهرست دامنه‌ها #

GET /domains کلید با سطح read

دامنه‌های همین حساب را با جست‌وجو، فیلتر و صفحه‌بندی برمی‌گرداند. پاسخ همیشه یا کامل است یا صریحاً یک صفحه از یک مجموعهٔ شمارش‌شده؛ فهرست ناقصِ شبیه به کامل وجود ندارد.

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

نامنوع دادهالزامیتوضیحات
qstringاختیاریجست‌وجو در نام دامنه (حداکثر ۱۰۰ نویسه)
statusstringاختیاریفیلتر وضعیت: active، pending، expired، redemption، pending_registration، pending_transfer، fraud
registrarstringاختیاریفیلتر تخصیص ثبت‌کننده: assigned یا unknown
pageintegerاختیاریشمارهٔ صفحه؛ پیش‌فرض ۱
per_pageintegerاختیاریاندازهٔ صفحه؛ پیش‌فرض ۱۰۰ و حداکثر ۵۰۰

فیلدهای پاسخ

نامنوع دادهتوضیحات
countsobjectشمارش کل حساب (مستقل از فیلتر): total، active، pending، expired، renewal، other، unknown_registrar
matchedintegerتعداد ردیف‌های منطبق با فیلتر
totalintegerکل دامنه‌های حساب
pageobjectcurrent، pages، per_page، from، to، numbers
filtersobjectفیلترهای نرمال‌شده که واقعاً اعمال شده‌اند
truncatedbooleanهمیشه false در حالت صفحه‌بندی‌شده
domainsarray<object>ردیف‌های دامنه (همان شکل اندپوینت جزئیات، بدون خواندن زندهٔ ثبت‌کننده)

جست‌وجوی دامنه با نام #

GET /domains/lookup کلید با سطح read

دامنهٔ این حساب را با نام کامل پیدا می‌کند و همان پاسخ جزئیات را برمی‌گرداند. این اندپوینت برای مصرف‌کنندگانی ساخته شده که دامنه را با نام می‌شناسند، نه با شناسهٔ داخلی پنل.

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

نامنوع دادهالزامیتوضیحات
fqdnstringالزامینام کامل دامنه، مثلاً example.ir

فیلدهای پاسخ

نامنوع دادهتوضیحات
(بدنه)objectهمان فیلدهای اندپوینت «جزئیات دامنه»

جزئیات دامنه #

GET /domains/{id} کلید با سطح read

یک خواندن زندهٔ ثبت‌کننده انجام می‌دهد و اطلاعات نهایی را برمی‌گرداند: وضعیت‌ها، تاریخ انقضا، نیم‌سرورها، قفل و روابط شناسه. اگر خواندن شکست بخورد، آخرین وضعیت معتبر ذخیره‌شده با live=false و علت آن برگردانده می‌شود؛ هیچ چیزی پاک یا حدس زده نمی‌شود.

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

نامنوع دادهالزامیتوضیحات
idintegerالزامیشناسهٔ عددی دامنه در پنل

فیلدهای پاسخ

نامنوع دادهتوضیحات
livebooleanآیا پاسخ از خواندن زندهٔ ثبت‌کننده آمده است
read_reasonstring|nullعلت نبود خواندن زنده
statusesarray<string>وضعیت‌های EPP گزارش‌شده
state / state_labelstringوضعیت نرمال‌شده و برچسب فارسی آن
registrar_lockobjectstate، locked، inactive، statuses
nameservers_sourcestringREGISTRAR یا MIRROR

استعلام موجودی نام #

POST /domains/availability کلید با سطح read

آزاد بودن یک نام را از ثبت‌کننده می‌پرسد. این درخواست فقط‌خواندنی است: چیزی رزرو نمی‌کند، صورتحساب نمی‌سازد و پول مصرف نمی‌کند.

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

نامنوع دادهالزامیتوضیحات
fqdnstringالزامینام کامل دامنه، مثلاً example.ir

فیلدهای پاسخ

نامنوع دادهتوضیحات
statusstringavailable، unavailable یا unknown
reasonstring|nullعلت پاسخ؛ مثلاً provider-reported-available یا availability-not-proven
fqdnstring|nullنام نرمال‌شده
registrarstring|nullثبت‌کننده‌ای که پاسخ داده است
operation_idstringشناسهٔ عملیات خواندن (برای پیگیری)

ثبت دامنه #

POST /domains/register کلید با سطح full

یک نام جدید را ثبت می‌کند. پیش از هر اثر مالی، آزاد بودن نام از ثبت‌کننده پرسیده می‌شود، تعرفهٔ جاری از انتشار فعال خوانده می‌شود و مبلغ در کیف پول رزرو می‌گردد.

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

نامنوع دادهالزامیتوضیحات
fqdnstringالزامینام کامل دامنه، مثلاً example.ir
periodintegerالزامیمدت ثبت به سال؛ ۱ تا ۱۰
handlestringاختیاریشناسهٔ ایرنیک مالک (NIC handle). یا این یا contact_id الزامی است
contact_idintegerاختیاریشناسهٔ محلیِ شناسه در همین حساب؛ جایگزین handle
nameserversarray<string>اختیاریحداکثر ۴ نیم‌سرور؛ تکراری‌ها حذف و نام‌ها نرمال می‌شوند

فیلدهای پاسخ

نامنوع دادهتوضیحات
resultstringsuccessful، failed یا unknown
reasonstring|nullکد دلیل نهایی
operation_idstringشناسهٔ یکتای عملیات؛ برای پیگیری و تکرار امن
domain_idinteger|nullشناسهٔ دامنه پس از ثبت موفق
amountintegerمبلغ رزروشده (ریال)
currencystringواحد پول
reserve_statestringوضعیت رزرو: NONE، HELD، CONSUMED، RETURNED
returned_amountintegerمبلغ بازگشته به کیف پول
case_statestring|nullCLOSED تنها وقتی پرونده و تسویه هر دو قطعی باشند

تمدید دامنه #

POST /domains/renew کلید با سطح full

مدت اعتبار یک دامنهٔ متعلق به همین حساب را افزایش می‌دهد. تعرفه از انتشار فعال خوانده می‌شود و مبلغ پیش از تماس با ثبت‌کننده رزرو می‌گردد.

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

نامنوع دادهالزامیتوضیحات
domain_idintegerالزامیشناسهٔ دامنه در پنل
periodintegerالزامیمدت تمدید به سال

انتقال دامنه #

POST /domains/transfer کلید با سطح full

انتقال یک دامنه از ثبت‌کنندهٔ دیگر به Domain123 را آغاز می‌کند. مبلغ تأییدشدهٔ کاربر باید با تعرفهٔ لحظهٔ اجرا یکسان باشد.

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

نامنوع دادهالزامیتوضیحات
fqdnstringالزامینام کامل دامنه
periodintegerالزامیمدت تمدید همراه انتقال
confirmed_amountintegerالزامیمبلغی که کاربر تأیید کرده است (ریال)

بازگردانی دامنه #

POST /domains/restore کلید با سطح full

دامنهٔ منقضی را از دورهٔ بازگردانی (Redemption) خارج و دوباره فعال می‌کند. این عملیات معمولاً هزینهٔ بازگردانی دارد.

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

نامنوع دادهالزامیتوضیحات
domain_idintegerالزامیشناسهٔ دامنه
confirmed_amountintegerالزامیمبلغ تأییدشدهٔ کاربر (ریال)

ثبت مجوز بازگردانی #

POST /domains/restore-flag کلید با سطح write

مجوز تاریخ‌دار بازیابی یک نام قفل‌شده را ثبت می‌کند. این یک «اجازه» است، نه عملیات: چیزی رزرو نمی‌کند، با ثبت‌کننده تماس نمی‌گیرد و هزینه‌ای ندارد.

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

نامنوع دادهالزامیتوضیحات
domain_idintegerالزامیشناسهٔ دامنه

فیلدهای پاسخ

نامنوع دادهتوضیحات
resultstringflagged یا نتیجهٔ رد
flag_idintegerشناسهٔ مجوز ثبت‌شده
flag_datestringتاریخ ثبت مجوز
flag_statestringوضعیت مجوز
createdbooleanآیا مجوز تازه ساخته شد یا مجوز قبلی برگشت
amount_chargedintegerهمیشه صفر

تغییر مالکیت (Move) #

POST /domains/move کلید با سطح full

شناسهٔ مالک دامنه را به یک NIC handle جدید تغییر می‌دهد. مبلغ در صورت وجود، پیش از تماس با ثبت‌کننده رزرو می‌شود.

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

نامنوع دادهالزامیتوضیحات
fqdnstringالزامینام کامل دامنه
handlestringالزامیشناسهٔ ایرنیک مالک جدید
confirmed_amountintegerاختیاریمبلغ تأییدشده؛ اگر عملیات هزینه داشته باشد الزامی است

تغییر نیم‌سرورها #

POST /domains/nameservers کلید با سطح write

مجموعهٔ نیم‌سرورهای دامنه را جایگزین می‌کند. این عملیات رایگان است و هیچ مبلغی رزرو نمی‌کند، اما تغییردهنده است و کلید Idempotency می‌خواهد.

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

نامنوع دادهالزامیتوضیحات
domain_idintegerالزامیشناسهٔ دامنه
nameserversarray<string>الزامیبین ۱ تا ۴ نیم‌سرور؛ نام‌ها lowercase، بدون نقطهٔ پایانی و بدون تکرار می‌شوند

قفل ثبت‌کننده (Registrar Lock) #

POST /domains/lock کلید با سطح write

قفل ثبت‌کننده را روی دامنه فعال یا غیرفعال می‌کند. این عملیات رایگان است، اما یک تغییر واقعی در ثبت‌کننده است و کلید Idempotency می‌خواهد.

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

نامنوع دادهالزامیتوضیحات
domain_idintegerالزامیشناسهٔ دامنه
targetstringالزامیمقدار LOCKED یا UNLOCKED

شناسه‌ها (Contacts) #

شناسه‌ها همان handle های ایرنیک هستند که مالک، مدیر فنی و سایر نقش‌ها را به دامنه متصل می‌کنند. ایجاد شناسه یک تغییر بدون اثر مالی است و به سطح دسترسی write یا بالاتر نیاز دارد.

فهرست شناسه‌ها #

GET /contacts کلید با سطح read

شناسه‌های همین حساب را با نوع، handle، نام، ایمیل و وضعیت برمی‌گرداند.

فیلدهای پاسخ

نامنوع دادهتوضیحات
contactsarray<object>هر ردیف: id، type، handle، name، email، status

ایجاد شناسه #

POST /contacts کلید با سطح write

یک شناسهٔ جدید از نوع مشخص می‌سازد. مجموعهٔ فیلدهای الزامی به نوع شناسه و تعریف‌های همین نصب بستگی دارد؛ فیلدهای ارسال‌شده پیش از تماس با ثبت‌کننده اعتبارسنجی می‌شوند.

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

نامنوع دادهالزامیتوضیحات
typestringالزامینوع شناسه: personal، company، government، education، international
first_namestringالزامینام؛ برای همهٔ انواع الزامی است
last_namestringالزامینام خانوادگی
emailstringالزامیایمیل معتبر
phone_numberstringالزامیشمارهٔ تماس، فقط ارقام
national_codestringاختیاریکد ملی؛ برای نوع شخصی الزامی است
company_namestringاختیارینام شرکت؛ برای انواع حقوقی الزامی است
country / state / city / address / post_codestringاختیارینشانی؛ مجموعهٔ الزامی آن به نوع شناسه بستگی دارد

فیلدهای پاسخ

نامنوع دادهتوضیحات
resultstringaccepted یا نتیجهٔ رد
operation_idstringشناسهٔ عملیات
handlestring|nullشناسهٔ ثبت‌شده در ثبت‌کننده
statusstring|nullوضعیت شناسه

کدهای خطا #

کد خطا پایدار است و هرگز متن استثنا، پاسخ خام ثبت‌کننده یا مقدار محرمانه را افشا نمی‌کند. برای منطق برنامه از error.code استفاده کنید، نه از متن پیام.

کدهای وضعیت HTTP

کدمعنااقدام پیشنهادی
200درخواست اجرا شد؛ نتیجه را از data.result بخوانیدحتی در ۲۰۰ ممکن است result=unknown باشد
201منبع ساخته شدشناسهٔ ایجادشده را ذخیره کنید
401کلید نامعتبر، منقضی، باطل یا IP غیرمجازکلید و فهرست IP را بررسی کنید
403سطح دسترسی کلید برای این عملیات کافی نیستکلید با سطح بالاتر بسازید
404دامنه، حساب یا سطح قیمتی در دسترس نیستشناسه و مالکیت را بررسی کنید
422ورودی نامعتبر یا عملیات رد شدفیلدهای خطا را اصلاح کنید؛ ارسال مجدد کورکورانه نکنید
429سقف نرخ پر شده استتا مقدار Retry-After صبر کنید
503سرویس وابسته یا تعرفهٔ منتشرشده در دسترس نیستکمی بعد دوباره تلاش کنید

کدهای خطای پرکاربرد

کدتوضیح
unauthenticatedکلید معتبر نیست یا IP درخواست مجاز نیست
forbiddenسطح دسترسی کلید اجازهٔ این عملیات را نمی‌دهد
rate-limitedسقف درخواست حساب یا IP پر شده است
domain-required / domain-invalidنام دامنه ارسال نشده یا قابل نرمال‌سازی نیست
domain-not-foundدامنه در این حساب وجود ندارد
idempotency-key-requiredکلید Idempotency ارسال نشده یا شکل آن نامعتبر است
insufficient-balanceموجودی کیف پول برای رزرو مبلغ کافی نیست
domain-not-availableثبت‌کننده اعلام کرده نام در دسترس نیست
availability-not-provenآزاد بودن نام اثبات نشده است؛ ثبت انجام نمی‌شود
nameservers-empty / nameserver-invalidمجموعهٔ نیم‌سرور خالی یا نامعتبر است
lock-target-invalidمقدار target غیر از LOCKED/UNLOCKED است
contact-type-requiredنوع شناسه ارسال نشده است
prices-unavailableتعرفهٔ منتشرشده و به‌روز وجود ندارد

مهاجرت از وب‌سرویس قدیم #

اگر مصرف‌کنندهٔ وب‌سرویس قدیم CP هستید، جدول زیر معادل هر فراخوانی را نشان می‌دهد. منطق کسب‌وکار یکی است، اما پوشش پاسخ و روش احراز هویت تغییر کرده است.

وب‌سرویس قدیم (CP)معادل در API v1
POST /api/domains/registerPOST /domains/register
POST /api/domains/renewPOST /domains/renew
POST /api/domains/transferPOST /domains/transfer
POST /api/domains/restorePOST /domains/restore
POST /api/domains/movePOST /domains/move
POST /api/domains/dnsPOST /domains/nameservers
POST /api/domains/lock + lockStatusPOST /domains/lock + GET /domains/{id}
POST /api/domains/infoGET /domains/lookup?fqdn= یا GET /domains/{id}
POST /api/domains/pricesGET /public/prices
POST /api/resellerGET /account + GET /wallet

این مستندات توصیف ماشین‌خوان OpenAPI 3.1 نیز دارد: api/openapi.json

برای گزارش ناسازگاری در مستندات یا رفتار سرویس، از پشتیبانی استفاده کنید.