پرش به مطلب اصلی

وب سرویس هاستینگ

وب سرویس هاستینگ، هاست اشتراکی آریانت (cPanel و DirectAdmin) را مدیریت می‌کند: سفارش اکانت، تمدید و تغییر پلن، رکوردهای DNS، صندوق‌های ایمیل، دیتابیس‌ها و کاربرانشان، کلیدهای SSH، PHP، ردیس و ترافیک. دستورهای arianet hosting روی همین وب سرویس ساخته شده‌اند. نمایندگی هاست هم از همین وب سرویس مدیریت می‌شود (نمایندگی هاست).

شروع سریع​

  1. در پنل، در cloud.ariaservice.net/users/api-tokens توکنی با دسترسی‌های hosting:accounts:read و hosting:accounts:write بسازید.
  2. وب سرویس را صدا بزنید:
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/settingsPHP، ردیس، پرداخت ترافیک مازاد
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 تصمیم بگیرید، نه متن پیام.

HTTPcode
400invalid_input، invalid_region
401unauthorized
402موجودی کافی نیست
403forbidden، insufficient_scope (توکن دسترسی هاستینگ ندارد)
404not_found، region_not_found
409وضعیت اکانت الان اجازه نمی‌دهد
429rate_limit_exceeded (همراه Retry-After)
503hosting_unavailable، region_unavailable (همراه Retry-After در صورت امکان)
504gateway_timeout: ریجن به‌موقع پاسخ نداد؛ ممکن است درخواست اجرا شده باشد، قبل از تکرار وضعیت را بررسی کنید

هدرهای RateLimit-Limit، RateLimit-Remaining و RateLimit-Reset در هر پاسخ می‌آیند.