زیرمجموعهای از API مدیریت سرور 9Craft که برای استفادهی کاربران بیرونی با API key منتشر شده است. فقط عملیات مدیریتی روی سرورهای موجود را پوشش میدهد: روشن و خاموش کردن، ریاستارت، اجرای دستور و گرفتن وضعیت. ساخت، حذف و تغییر تنظیمات سرور در این API در دسترس نیست. خروجی `/servers` شامل همهی سرورهای کاربر (ماینکرفت، تراریا، هایتیل و ...) است، ولی `/server/data` و `/minecraft/server/cmd` فقط روی سرورهای ماینکرفت کار میکنند.
همهی درخواستها به یک API key نیاز دارند. کلید را در هدر Authorization بفرستید.
Authorization: api_key <YOUR_API_KEY>فرمت هدر: `Authorization: api_key <token>` فاصلهی بین `api_key` و توکن الزامی است. توجه کنید که این فرمت با schemeهای استاندارد Bearer و ApiKey یکی نیست.
تصمیمگیری کلاینت باید بر اساس فیلد error_code باشد، نه متن پیام.
INVALID_AUTH_HEADERاحراز هویت انجام نشد
WORLD_NAME_REQUIREDworld_name ارسال نشده، یا سرور در حال جابهجایی بین هاستهاست
SERVICE_UNAVAILABLEهاست میزبان سرور در دسترس نیست؛ درخواست بعداً دوباره تلاش شود
SERVER_NOT_FOUNDسروری با این world_name برای این کاربر پیدا نشد
/server/startworld_namestringالزامینام یکتای سرور که هنگام ساخت آن تعیین شده است
messagestringپیام وضعیت برای لاگ و دیباگ. منطق کلاینت نباید به متن دقیق این فیلد وابسته باشد؛ موفق بودن درخواست را از روی کد وضعیت ۲۰۰ تشخیص دهید.
سرور با موفقیت روشن شد
{
"world_name": "myworld"
}/server/stopworld_namestringالزامینام یکتای سرور که هنگام ساخت آن تعیین شده است
messagestringپیام وضعیت برای لاگ و دیباگ. منطق کلاینت نباید به متن دقیق این فیلد وابسته باشد؛ موفق بودن درخواست را از روی کد وضعیت ۲۰۰ تشخیص دهید.
سرور با موفقیت خاموش شد
{
"world_name": "myworld"
}/server/restartworld_namestringالزامینام یکتای سرور که هنگام ساخت آن تعیین شده است
messagestringپیام وضعیت برای لاگ و دیباگ. منطق کلاینت نباید به متن دقیق این فیلد وابسته باشد؛ موفق بودن درخواست را از روی کد وضعیت ۲۰۰ تشخیص دهید.
سرور با موفقیت ریاستارت شد
{
"world_name": "myworld"
}/server/force_restartکانتینر سرور kill و دوباره start میشود؛ مخصوص سرورهای فریزشده که ریاستارت معمولی روی آنها اثری ندارد.
world_namestringالزامینام یکتای سرور که هنگام ساخت آن تعیین شده است
messagestringپیام وضعیت برای لاگ و دیباگ. منطق کلاینت نباید به متن دقیق این فیلد وابسته باشد؛ موفق بودن درخواست را از روی کد وضعیت ۲۰۰ تشخیص دهید.
سرور با موفقیت ریاستارت شد
{
"world_name": "myworld"
}/minecraft/server/cmdدستور از طریق RCON یا کنسول کانتینر اجرا میشود. دستورهایی مثل whitelist، ban، banip و op هم از همین مسیر قابل اجرا هستند.
world_namestringالزامیcmdstringالزامیدستور کنسول ماینکرفت؛ اسلش ابتدایی اختیاری است — مثل `whitelist add player` یا `op player`
use_rconbooleandefault: true`true` (پیشفرض): دستور با RCON اجرا میشود و خروجی واقعی آن در `result` برمیگردد. `false`: دستور مستقیم در کنسول کانتینر نوشته میشود؛ خروجی در دسترس نیست و همیشه `ok` برمیگردد.
resultstringخروجی متنی دستور. فقط در حالت پیشفرض (`use_rcon: true`) روی سرورهای Java خروجی واقعی برمیگردد؛ با `use_rcon: false`، روی سرورهای Bedrock، یا وقتی RCON وصل نشود و دستور به کنسول fallback شود مقدار `ok` است. اگر اجرای دستور شکست بخورد، پاسخ همچنان ۲۰۰ است و مقدار این فیلد `error` میشود.
خروجی اجرای دستور
{
"world_name": "myworld",
"cmd": "whitelist add player",
"use_rcon": true
}/serversworldsobject[]world_namestringgamestringminecraftterrariahytaledstcs16memoryintegerمگابایت
diskintegerگیگابایت
is_bedrockbooleanremaining_timeintegerثانیههای باقیمانده؛ -1 یعنی منقضی/نیازمند شارژ
is_tmodbooleanفقط برای سرورهای تراریا معنا دارد
renewal_discountnumberدرصد تخفیف تمدید؛ اگر تخفیفی فعال نباشد این فیلد اصلاً در پاسخ نمیآید
remaining_conversions_this_monthintegerconvert_monthly_limitintegerلیست سرورها
/server/dataworld_namestringالزامینام یکتای سرور که هنگام ساخت آن تعیین شده است
world_namestringportintegerپورت اصلی بازی
hoststringهاستنیم قابل اتصال، مثلاً de1.9craft.ir
ipstringآیپی همان هاست
ftp_hoststringنام میزبان داخلی FTP؛ فقط برای فایلمنیجر خودِ 9Craft کاربرد دارد و از بیرون قابل اتصال نیست
filemanager_base_urlstringremaining_timeintegerثانیههای باقیمانده؛ -1 یعنی منقضی شده و نیاز به شارژ دارد
is_fullinteger01۱ یعنی دیسک سرور پر است
is_migratingbooleanتا وقتی true است عملیات start/stop/restart/cmd با خطای SERVER_MIGRATING رد میشود
diskintegerگیگابایت
memoryintegerمگابایت
versionstring | nullنسخهی ماینکرفت
javastring | nullنسخهی جاوا؛ برای سرورهای Bedrock مقدارش null است
softwarestringpaper, purpur, spigot, leaf, fabric, forge, ...
is_bedrockbooleanadditional_portinteger | nullپورت کمکی؛ اگر فعال نباشد null است
listen_portsstring[]پورتهای اضافهی بازشده توسط ادمین، به شکل "ip:port" (مثلاً ["0.0.0.0:6669"]) — اگر چیزی باز نشده باشد لیست خالی است
subdomainstring | nullدامنهی اختصاصی سرور؛ اگر ثبت نشده باشد null است
renewal_discountnumberدرصد تخفیف تمدید؛ اگر تخفیفی فعال نباشد این فیلد اصلاً در پاسخ نمیآید
اطلاعات سرور
/public/error-codesنگاشت هر `error_code` به متن فارسی قابل نمایش به کاربر. این تنها منبع درست برای ساختن پیام خطاست؛ فیلدهای `message`/`error`/`msg` در پاسخها متن انگلیسی برای لاگ و دیباگاند و نباید به کاربر نشان داده شوند. خروجی فقط شامل کدهایی است که همین API عمومی برمیگرداند (در حال حاضر ۱۰ کد)، نه کل جدول داخلی. آن را کش کنید و هر چند وقت یکبار تازه کنید؛ اگر کدی در جدول نبود، یک پیام عمومی نشان دهید.
نگاشت کد خطا به متن فارسی