🎮 ZarPlay DAPI

Developer API Documentation

🔐 احراز هویت
POST https://zarplay.ir/dapi/v1/user/login
ورود کاربر با نام کاربری و رمز عبور. در صورت موفقیت، توکن JWT و اطلاعات کاربر بازگردانده می‌شود. این توکن برای دسترسی به برخی API‌های مدیریتی (مانند مدیریت بازی‌ها) استفاده می‌شود.

پارامترهای فرم

پارامترنوعالزامیتوضیح
usernamestringبلهنام کاربری
passwordstringبلهرمز عبور

✅ پاسخ موفق (۲۰۰)

{
  "success": true,
  "message": "Login successful",
  "data": {
    "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
    "user": {
      "uuid": "550e8400-e29b-41d4-a716-446655440000",
      "username": "john_doe",
      "vault": "26" <-- موجودی کیف پول (واحد T)
    }
  }
}

❌ خطاها

// ۴۰۰ – پارامترهای
{ "success": false, "error": "Required parameters are missing.", "details": { "missing_parameters": ["username", "password"] } }
// ۴۰۱ – اطلاعات نادرست
{ "success": false, "error": "Invalid username or password." }
POST https://zarplay.ir/dapi/v1/user/register
ثبت‌نام کاربر جدید. ایمیل و نام کاربری باید یکتا باشند.

پارامترهای فرم

پارامترنوعالزامیتوضیح
emailstringبلهایمیل کاربر
usernamestringبلهنام کاربری یکتا (۳ تا ۵۰ کاراکتر)
passwordstringبلهرمز عبور (حداقل ۶ کاراکتر)
first_namestringبلهنام (حداکثر ۱۰۰ کاراکتر)
last_namestringبلهنام خانوادگی (حداکثر ۱۰۰ کاراکتر)

✅ پاسخ موفق

{
  "success": true,
  "message": "Registration successful",
  "data": {
    "token": "...",
    "user": { "uuid": "...", "username": "john_doe", "vault": "26" }
  }
}

❌ خطاها

// ۴۰۰ – کاربر تکراری
{ "success": false, "error": "User with this username already exists" }
// ۴۰۹ – خطای سرور
{ "success": false, "error": "Server Error" }
POST https://zarplay.ir/dapi/v1/user/vault/get
دریافت محتوای والت کاربر (داده‌های حساس).

پارامترهای فرم

پارامترنوعالزامیتوضیح
user_uuidstringبلهشناسه یکتای کاربر (UUID)

✅ پاسخ موفق

{ "success": true, "data": { "vault": "26" } }

❌ خطا

{ "success": false, "error": "User not found" }
POST https://zarplay.ir/dapi/v1/user/games/verify
بررسی مالکیت کاربر بر یک بازی مشخص.

پارامترهای فرم

پارامترنوعالزامیتوضیح
user_uuidstringبلهشناسه کاربر
game_uuidstringبلهشناسه بازی

✅ پاسخ موفق

{ "success": true, "data": { "owns": true } }
🛒 فروشگاه درون‌بازی
🔑 همه endpoints این بخش نیازمند کلید API معتبر (Bearer Token) هستند
GET https://zarplay.ir/dapi/v1/games/{game_uuid}/items
دریافت لیست آیتم‌های قابل خرید برای یک بازی (با پشتیبانی از صفحه‌بندی).

پارامترها

پارامترنوعالزامیتوضیح
game_uuid (مسیر)stringبلهشناسه بازی
page (query)intخیرشماره صفحه (پیش‌فرض ۱)
limit (query)intخیرتعداد آیتم در هر صفحه (حداکثر ۱۰۰، پیش‌فرض ۲۰)

✅ پاسخ موفق (۲۰۰)

{
  "success": true,
  "data": {
    "total": 45,
    "page": 1,
    "limit": 20,
    "data": [
      {
        "uuid": "item-123",
        "name": "پتال سلامت",
        "description": "۵۰ جان به بازیکن اضافه می‌کند",
        "price": 100,
        "currency": "in_game"
      }
    ]
  }
}
POST https://zarplay.ir/dapi/v1/user/purchase/item
خرید آیتم با ارز درون‌بازی (پشتیبانی از خرید واقعی در آینده).

پارامترهای فرم

پارامترنوعالزامیتوضیح
user_uuidstringبلهشناسه کاربر
game_uuidstringبلهشناسه بازی
item_uuidstringبلهشناسه آیتم
quantityintبلهتعداد (بزرگتر از ۰)

✅ پاسخ موفق

{ "success": true, "message": "Purchase successful", "data": { "item_name": "پتال سلامت", "quantity": 1 } }

❌ خطاها

// ۴۰۰ – موجودی ناکافی
{ "success": false, "error": "Insufficient in-game currency" }
// ۴۰۰ – آیتم نامعتبر
{ "success": false, "error": "Invalid item" }
GET https://zarplay.ir/dapi/v1/user/inventory/{game_uuid}
لیست آیتم‌های خریداری‌شده کاربر برای یک بازی (با صفحه‌بندی).

پارامترها

پارامترنوعالزامیتوضیح
game_uuid (مسیر)stringبلهشناسه بازی
user_uuid (فرم)stringبلهشناسه کاربر
page (query)intخیرشماره صفحه
limit (query)intخیرتعداد آیتم در هر صفحه

✅ پاسخ موفق

{
  "success": true,
  "data": {
    "total": 5,
    "page": 1,
    "limit": 20,
    "data": [
      {
        "item_uuid": "item-123",
        "name": "پتال سلامت",
        "description": "۵۰ جان به بازیکن اضافه می‌کند",
        "quantity": 3,
        "purchased_at": "2025-03-27T12:00:00Z"
      }
    ]
  }
}
💰 کیف پول مجازی
🔑 نیازمند کلید API معتبر
GET https://zarplay.ir/dapi/v1/user/wallet/{game_uuid}
مشاهده موجودی ارز درون‌بازی کاربر برای یک بازی.

پارامترها

پارامترنوعالزامیتوضیح
game_uuid (مسیر)stringبلهشناسه بازی
user_uuid (فرم)stringبلهشناسه کاربر

✅ پاسخ موفق

{ "success": true, "data": { "balance": 1250 } }
POST https://zarplay.ir/dapi/v1/user/wallet/topup
افزایش موجودی کیف پول (شبیه‌سازی‌شده – در آینده با درگاه پرداخت واقعی).

پارامترهای فرم

پارامترنوعالزامیتوضیح
user_uuidstringبلهشناسه کاربر
game_uuidstringبلهشناسه بازی
amountintبلهمبلغ (واحد ارز درون‌بازی)

✅ پاسخ موفق

{ "success": true, "message": "Wallet topped up (simulated)", "data": { "new_balance": 1500 } }
🏆 دستاوردها
🔑 نیازمند کلید API معتبر
POST https://zarplay.ir/dapi/v1/user/achievements/unlock
باز کردن یک دستاورد برای کاربر.

پارامترهای فرم

پارامترنوعالزامیتوضیح
user_uuidstringبلهشناسه کاربر
game_uuidstringبلهشناسه بازی
achievement_idstringبلهشناسه دستاورد (مثلاً "kill_100")

✅ پاسخ موفق

{ "success": true, "message": "Achievement unlocked" }

❌ خطا

{ "success": false, "error": "Achievement not found" }
GET https://zarplay.ir/dapi/v1/user/achievements/{game_uuid}
دریافت وضعیت دستاوردهای کاربر برای یک بازی (با صفحه‌بندی).

پارامترها

پارامترنوعالزامیتوضیح
game_uuid (مسیر)stringبلهشناسه بازی
user_uuid (فرم)stringبلهشناسه کاربر
page (query)intخیرشماره صفحه
limit (query)intخیرتعداد آیتم در هر صفحه

✅ پاسخ موفق

{
  "success": true,
  "data": {
    "total": 10,
    "page": 1,
    "limit": 20,
    "data": [
      {
        "achievement_id": "kill_100",
        "name": "قاتل حرفه‌ای",
        "description": "۱۰۰ دشمن را بکش",
        "points": 50,
        "unlocked": true,
        "unlocked_at": "2025-03-27T10:00:00Z"
      }
    ]
  }
}
📊 رتبه‌بندی‌ها
🔑 نیازمند کلید API معتبر
POST https://zarplay.ir/dapi/v1/leaderboard/submit
ثبت امتیاز کاربر در یک رتبه‌بندی.

پارامترهای فرم

پارامترنوعالزامیتوضیح
user_uuidstringبلهشناسه کاربر
game_uuidstringبلهشناسه بازی
leaderboard_idstringبلهشناسه رتبه‌بندی (مثلاً "global_score")
scoreintبلهامتیاز

✅ پاسخ موفق

{ "success": true, "message": "Score submitted" }
GET https://zarplay.ir/dapi/v1/leaderboard/{game_uuid}/{leaderboard_id}
دریافت جدول رتبه‌بندی با پشتیبانی از صفحه‌بندی.

پارامترها

پارامترنوعالزامیتوضیح
game_uuid (مسیر)stringبلهشناسه بازی
leaderboard_id (مسیر)stringبلهشناسه رتبه‌بندی
page (query)intخیرشماره صفحه (پیش‌فرض ۱)
limit (query)intخیرتعداد رکوردها در هر صفحه (حداکثر ۱۰۰، پیش‌فرض ۱۰۰)

✅ پاسخ موفق

{
  "success": true,
  "data": {
    "total": 500,
    "page": 1,
    "limit": 100,
    "data": [
      { "username": "john_doe", "score": 9999, "updated_at": "2025-03-27T11:00:00Z" },
      { "username": "jane_doe", "score": 8500, "updated_at": "2025-03-27T10:30:00Z" }
    ]
  }
}
🎮 محتوای قابل دانلود (DLC)
🔑 نیازمند کلید API معتبر
GET https://zarplay.ir/dapi/v1/games/{game_uuid}/dlc
لیست DLCهای موجود برای یک بازی.

پارامتر مسیر

پارامترنوعالزامیتوضیح
game_uuidstringبلهشناسه بازی

✅ پاسخ موفق

{
  "success": true,
  "data": [
    { "uuid": "dlc-123", "name": "بسته الحاقی: دنیای یخزده", "description": "مناطق جدید و دشمنان یخی", "price": 9.99 }
  ]
}
POST https://zarplay.ir/dapi/v1/user/dlc/purchase
خرید DLC توسط کاربر (فقط رایگان فعلاً).

پارامترهای فرم

پارامترنوعالزامیتوضیح
user_uuidstringبلهشناسه کاربر
dlc_uuidstringبلهشناسه DLC

✅ پاسخ موفق

{ "success": true, "message": "DLC purchased", "data": { "dlc_name": "بسته الحاقی: دنیای یخزده" } }

❌ خطاها

// ۴۰۰ – عدم مالکیت بازی پایه
{ "success": false, "error": "You must own the base game to purchase this DLC" }
GET https://zarplay.ir/dapi/v1/user/dlc/{dlc_uuid}/download
دریافت لینک دانلود DLC (فقط برای مالکان).

پارامترها

پارامترنوعالزامیتوضیح
dlc_uuid (مسیر)stringبلهشناسه DLC
user_uuid (فرم)stringبلهشناسه کاربر

✅ پاسخ موفق

{ "success": true, "data": { "download_url": "https://zarplay.ir/api/files/dlc/path/to/file.zip" } }

❌ خطاها

// ۴۰۳ – عدم دسترسی
{ "success": false, "error": "You don't own this DLC" }
👥 جلسات بازی (اتاق‌ها)
🔑 نیازمند کلید API معتبر
POST https://zarplay.ir/dapi/v1/games/{game_uuid}/sessions
ایجاد یک جلسه جدید (اتاق) برای بازی.

پارامترها

پارامترنوعالزامیتوضیح
game_uuid (مسیر)stringبلهشناسه بازی
user_uuid (فرم)stringبلهشناسه کاربر (میزبان)
session_id (فرم)stringخیرشناسه دلخواه (تولید خودکار در صورت عدم ارسال)
max_players (فرم)intخیرحداکثر بازیکنان (پیش‌فرض ۴)

✅ پاسخ موفق

{ "success": true, "message": "Session created", "data": { "session_id": "room123" } }
POST https://zarplay.ir/dapi/v1/games/{game_uuid}/sessions/{session_id}/join
پیوستن کاربر به یک جلسه موجود.

پارامترها

پارامترنوعالزامیتوضیح
game_uuid (مسیر)stringبلهشناسه بازی
session_id (مسیر)stringبلهشناسه جلسه
user_uuid (فرم)stringبلهشناسه کاربر

✅ پاسخ موفق

{ "success": true, "message": "Joined session" }

❌ خطاها

// ۴۰۰ – جلسه پر است
{ "success": false, "error": "Session is full" }
// ۴۰۴ – جلسه یافت نشد
{ "success": false, "error": "Session not found" }
GET https://zarplay.ir/dapi/v1/games/{game_uuid}/sessions/{session_id}/participants
لیست شرکت‌کنندگان جلسه (با صفحه‌بندی).

پارامترها

پارامترنوعالزامیتوضیح
game_uuid (مسیر)stringبلهشناسه بازی
session_id (مسیر)stringبلهشناسه جلسه
page (query)intخیرشماره صفحه
limit (query)intخیرتعداد شرکت‌کنندگان در هر صفحه

✅ پاسخ موفق

{
  "success": true,
  "data": {
    "total": 4,
    "page": 1,
    "limit": 20,
    "data": [
      { "username": "john_doe", "joined_at": "2025-03-27T12:00:00Z" },
      { "username": "jane_doe", "joined_at": "2025-03-27T12:01:00Z" }
    ]
  }
}
☁️ ذخیره‌سازی ابری (Cloud Saves)
🔑 نیازمند کلید API معتبر
POST https://zarplay.ir/dapi/v1/games/{game_uuid}/save
آپلود فایل ذخیره‌سازی بازی (حداکثر ۴ مگابایت). در صورت وجود ذخیره قبلی، جایگزین می‌شود.

پارامترهای فرم

پارامترنوعالزامیتوضیح
game_uuid (مسیر)stringبلهشناسه بازی
user_uuidstringبلهشناسه کاربر
saveFilefileبلهفایل ذخیره‌سازی (حداکثر ۴ مگابایت)
versionstringخیرنسخه ذخیره (پیش‌فرض "1.0")

✅ پاسخ موفق

{ "success": true, "message": "Game save uploaded successfully" }

❌ خطاها

// ۴۰۰ – حجم فایل بیش از ۴MB
{ "success": false, "error": "File size exceeds the limit of 4 MB" }
GET https://zarplay.ir/dapi/v1/games/{game_uuid}/save
دانلود آخرین ذخیره‌سازی بازی کاربر.

پارامترهای query

پارامترنوعالزامیتوضیح
game_uuid (مسیر)stringبلهشناسه بازی
user_uuidstringبلهشناسه کاربر

✅ پاسخ موفق

فایل با Content-Type application/octet-stream و نام save_{user_uuid}_{game_uuid}.dat برگردانده می‌شود.

❌ خطاها

{ "success": false, "error": "No saved game found" }
📌 ساختار خطاهای استاندارد

تمامی پاسخ‌های خطا دارای فرمت ثابت زیر هستند:

{
  "success": false,
  "error": "پیام خطا",
  "details": { ... }   // اطلاعات تکمیلی (اختیاری)
}

برای پارامترهای از جزئیات زیر استفاده می‌شود:

{
  "success": false,
  "error": "Required parameters are missing.",
  "details": {
    "missing_parameters": ["field1", "field2"]
  }
}

خطاهای داخلی سرور (۵۰۰): شامل فیلد correlation_id برای ردیابی خطا می‌باشند.

{
  "success": false,
  "error": "An internal error occurred.",
  "correlation_id": "550e8400-e29b-41d4-a716-446655440000"
}
🔑 مدیریت کلید API

برای استفاده از endpoints مخصوص بازی‌ها، باید کلید API معتبر خود را در هدر Authorization به صورت Bearer YOUR_API_KEY ارسال کنید.

توسعه‌دهندگان می‌توانند کلیدهای API را برای هر بازی منتشرشده خود از طریق پنل کاربری ZarPlay ایجاد و مدیریت کنند. هر کلید تنها به یک بازی اختصاص دارد و دسترسی به تمام endpoints مربوط به آن بازی را فراهم می‌کند.

نحوه دریافت کلید:

  1. وارد پنل توسعه‌دهنده ZarPlay شوید.
  2. بازی خود را انتخاب کنید.
  3. در بخش "API Keys" یک کلید جدید ایجاد کنید.
  4. کلید تولیدشده را در برنامه خود ذخیره کرده و در تمام درخواست‌ها به سرور ارسال نمایید.