وب سرویس هاستینگ
وب سرویس هاستینگ، هاست اشتراکی آریانت (cPanel و DirectAdmin) را مدیریت میکند: سفارش اکانت، تمدید و تغییر پلن، رکوردهای DNS، صندوقهای ایمیل، دیتابیسها و کاربرانشان، کلیدهای SSH، PHP، ردیس و ترافیک. دستورهای arianet hosting روی همین وب سرویس ساخته شدهاند. نمایندگی هاست هم از همین وب سرویس مدیریت میشود (نمایندگی هاست).
- آدرس پایه:
https://api.ariaservice.net/hosting/v1 - قالب: JSON روی HTTPS
- احراز هویت: توکن شخصی API که به صورت Bearer ارسال میشود (احراز هویت و توکن)
- OpenAPI 3.1:
https://api.ariaservice.net/hosting/v1/openapi.jsonکه در مرجع تعاملی قابل مرور است
شروع سریع
- در پنل، در cloud.ariaservice.net/users/api-tokens توکنی با دسترسیهای
hosting:accounts:readوhosting:accounts:writeبسازید. - وب سرویس را صدا بزنید:
export ARIANET_TOKEN="paste-your-token-here"
BASE=https://api.ariaservice.net/hosting/v1
AUTH="Authorization: Bearer $ARIANET_TOKEN"
curl -s $BASE/datacenters -H "$AUTH"
curl -s "$BASE/plans?kind=shared" -H "$AUTH"
curl -s -X POST $BASE/accounts -H "$AUTH" -H "Content-Type: application/json" \
-d '{"datacenter":"thr","plan_id":3,"term":"monthly","domain":"example.com","password":"S3cret-pass"}'
پاسخ سفارش، اکانت و یک action را برمیگرداند؛ ساخت اکانت ناهمگام است و با GET /actions/{id} تا رسیدن state به success یا error دنبال میشود. هزینه از کیف پول حساب کسر میشود.
احراز هویت و دسترسیها
Authorization: Bearer <token>
| دسترسی (scope) | اجازه |
|---|---|
hosting:accounts:read | دیدن اکانتها، مصرف، DNS، ایمیلها و دیتابیسها |
hosting:accounts:write | همه تغییرات: سفارش، تمدید، تغییر پلن، حذف، ورود یکبارمصرف به پنل، DNS، ایمیل، دیتابیس، SSH، PHP، ردیس و ترافیک |
توکن بدون هیچ دسترسی، بدون محدودیت است. دسترسی توکن هیچوقت از دسترسی صاحبش بیشتر نمیشود: برای عضو تیم، سیاستهای IAM حساب هم اعمال میشوند (مثلاً نمایندگی هاست به hosting:reseller:manage نیاز دارد).
ریجنها
هاستینگ در هر ریجن نصب جداگانه دارد. ریجن با هدر Arianet-Region انتخاب میشود و بدون آن درخواست به ریجن پیشفرض میرود:
curl -s $BASE/accounts -H "$AUTH" -H "Arianet-Region: iran-1"
هر اکانت فقط در ریجنی که در آن ساخته شده دیده میشود. ریجن ناشناخته پاسخ 404 region_not_found میگیرد.
منابع
| متد و مسیر | کاربرد |
|---|---|
GET /datacenters | دیتاسنترهای ریجن |
GET /plans | پلنهای قابل فروش (datacenter، kind=shared|reseller) |
GET /accounts ، POST /accounts | فهرست و سفارش اکانت |
GET /accounts/{id} ، PATCH /accounts/{id} ، DELETE /accounts/{id} | جزئیات، تمدید خودکار (auto_renew)، حذف |
POST /accounts/{id}/actions/{op} | change_plan ({"plan_id":4})، renew، reset ({"password":"..."}) |
POST /accounts/{id}/password | تغییر رمز پنل، FTP و SSH |
POST /accounts/{id}/login | لینک یکبارمصرف ورود به پنل |
GET /accounts/{id}/usage ، /nameservers ، /traffic ، /alerts | مصرف، نیمسرورها، ترافیک، هشدارها |
/accounts/{id}/dns-records | رکوردهای DNS (GET، POST، PUT /{record}، DELETE /{record}) |
/accounts/{id}/email-accounts | صندوقهای ایمیل |
/accounts/{id}/databases ، /database-users | دیتابیسها و کاربرانشان |
/accounts/{id}/ssh-keys ، /shell | کلیدهای SSH و دسترسی شل |
/accounts/{id}/php ، /redis ، /traffic/settings | PHP، ردیس، پرداخت ترافیک مازاد |
GET /actions ، GET /actions/{id} | عملیات ناهمگام |
جزئیات بدنه و پاسخ هر endpoint در مرجع تعاملی آمده است.
نمایندگی هاست (reseller)
اکانت نمایندگی (kind=reseller) میتواند برای مشتریهای خودش، روی پکیجهایی که در کنترل پنل تعریف کرده، اکانت بسازد و آنها را مدیریت کند. همه این مسیرها زیر /accounts/{id}/reseller هستند و {id} شناسه اکانت نمایندگی است؛ اکانت مشتری با username آن مشخص میشود.
| متد و مسیر | کاربرد |
|---|---|
GET /accounts/{id}/reseller/usage | تعداد اکانتها، دیسک و پهنای باند مصرفشده در برابر سقف پلن، و اینکه oversell مجاز است یا نه |
GET /accounts/{id}/reseller/packages | پکیجهای تعریفشده و تعداد اکانت روی هر کدام |
GET /accounts/{id}/reseller/accounts ، POST /accounts/{id}/reseller/accounts | فهرست اکانتهای مشتری؛ ساخت اکانت روی یکی از پکیجها در محدوده پلن |
DELETE /accounts/{id}/reseller/accounts/{username} | حذف اکانت مشتری و دادههایش |
POST /accounts/{id}/reseller/accounts/{username}/package | انتقال به پکیج دیگر |
POST /accounts/{id}/reseller/accounts/{username}/password | تغییر رمز پنل، FTP و SSH |
POST /accounts/{id}/reseller/accounts/{username}/login | لینک یکبارمصرف ورود به پنل مشتری |
POST /accounts/{id}/reseller/accounts/{username}/suspend ، /unsuspend | تعلیق و رفع تعلیق |
POST /accounts/{id}/reseller/accounts/{username}/reset | بازگرداندن اکانت به حالت تازه (همان نام کاربری، دامنه و پکیج؛ فایلها، ایمیل، دیتابیس و DNS پاک میشوند) |
برای عضو تیم، این مسیرها علاوه بر scope توکن به دسترسی IAM hosting:reseller:manage نیاز دارند.
خطاها
خطاها JSON به شکل {"error": "...", "code": "..."} هستند؛ بر اساس code تصمیم بگیرید، نه متن پیام.
| HTTP | code |
|---|---|
| 400 | invalid_input، invalid_region |
| 401 | unauthorized |
| 402 | موجودی کافی نیست |
| 403 | forbidden، insufficient_scope (توکن دسترسی هاستینگ ندارد) |
| 404 | not_found، region_not_found |
| 409 | وضعیت اکانت الان اجازه نمیدهد |
| 429 | rate_limit_exceeded (همراه Retry-After) |
| 503 | hosting_unavailable، region_unavailable (همراه Retry-After در صورت امکان) |
| 504 | gateway_timeout: ریجن بهموقع پاسخ نداد؛ ممکن است درخواست اجرا شده باشد، قبل از تکرار وضعیت را بررسی کنید |
هدرهای RateLimit-Limit، RateLimit-Remaining و RateLimit-Reset در هر پاسخ میآیند.