🔐 احراز هویت
POST
https://zarplay.ir/dapi/v1/user/login
ورود کاربر با نام کاربری و رمز عبور. در صورت موفقیت، توکن JWT و اطلاعات کاربر بازگردانده میشود. این توکن برای دسترسی به برخی APIهای مدیریتی (مانند مدیریت بازیها) استفاده میشود.
پارامترهای فرم
| پارامتر | نوع | الزامی | توضیح |
|---|---|---|---|
username | string | بله | نام کاربری |
password | string | بله | رمز عبور |
✅ پاسخ موفق (۲۰۰)
{
"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
ثبتنام کاربر جدید. ایمیل و نام کاربری باید یکتا باشند.
پارامترهای فرم
| پارامتر | نوع | الزامی | توضیح |
|---|---|---|---|
email | string | بله | ایمیل کاربر |
username | string | بله | نام کاربری یکتا (۳ تا ۵۰ کاراکتر) |
password | string | بله | رمز عبور (حداقل ۶ کاراکتر) |
first_name | string | بله | نام (حداکثر ۱۰۰ کاراکتر) |
last_name | string | بله | نام خانوادگی (حداکثر ۱۰۰ کاراکتر) |
✅ پاسخ موفق
{
"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_uuid | string | بله | شناسه یکتای کاربر (UUID) |
✅ پاسخ موفق
{ "success": true, "data": { "vault": "26" } }❌ خطا
{ "success": false, "error": "User not found" }
POST
https://zarplay.ir/dapi/v1/user/games/verify
بررسی مالکیت کاربر بر یک بازی مشخص.
پارامترهای فرم
| پارامتر | نوع | الزامی | توضیح |
|---|---|---|---|
user_uuid | string | بله | شناسه کاربر |
game_uuid | string | بله | شناسه بازی |
✅ پاسخ موفق
{ "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_uuid | string | بله | شناسه کاربر |
game_uuid | string | بله | شناسه بازی |
item_uuid | string | بله | شناسه آیتم |
quantity | int | بله | تعداد (بزرگتر از ۰) |
✅ پاسخ موفق
{ "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_uuid | string | بله | شناسه کاربر |
game_uuid | string | بله | شناسه بازی |
amount | int | بله | مبلغ (واحد ارز درونبازی) |
✅ پاسخ موفق
{ "success": true, "message": "Wallet topped up (simulated)", "data": { "new_balance": 1500 } }🏆 دستاوردها
🔑 نیازمند کلید API معتبر
POST
https://zarplay.ir/dapi/v1/user/achievements/unlock
باز کردن یک دستاورد برای کاربر.
پارامترهای فرم
| پارامتر | نوع | الزامی | توضیح |
|---|---|---|---|
user_uuid | string | بله | شناسه کاربر |
game_uuid | string | بله | شناسه بازی |
achievement_id | string | بله | شناسه دستاورد (مثلاً "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_uuid | string | بله | شناسه کاربر |
game_uuid | string | بله | شناسه بازی |
leaderboard_id | string | بله | شناسه رتبهبندی (مثلاً "global_score") |
score | int | بله | امتیاز |
✅ پاسخ موفق
{ "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_uuid | string | بله | شناسه بازی |
✅ پاسخ موفق
{
"success": true,
"data": [
{ "uuid": "dlc-123", "name": "بسته الحاقی: دنیای یخزده", "description": "مناطق جدید و دشمنان یخی", "price": 9.99 }
]
}
POST
https://zarplay.ir/dapi/v1/user/dlc/purchase
خرید DLC توسط کاربر (فقط رایگان فعلاً).
پارامترهای فرم
| پارامتر | نوع | الزامی | توضیح |
|---|---|---|---|
user_uuid | string | بله | شناسه کاربر |
dlc_uuid | string | بله | شناسه 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_uuid | string | بله | شناسه کاربر |
saveFile | file | بله | فایل ذخیرهسازی (حداکثر ۴ مگابایت) |
version | string | خیر | نسخه ذخیره (پیشفرض "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_uuid | string | بله | شناسه کاربر |
✅ پاسخ موفق
فایل با 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 مربوط به آن بازی را فراهم میکند.
نحوه دریافت کلید:
- وارد پنل توسعهدهنده ZarPlay شوید.
- بازی خود را انتخاب کنید.
- در بخش "API Keys" یک کلید جدید ایجاد کنید.
- کلید تولیدشده را در برنامه خود ذخیره کرده و در تمام درخواستها به سرور ارسال نمایید.