# مستندات API پنل 3x-ui

## Base Endpoints

### `/xui/API/inbounds` - مدیریت Inbound ها

| Method | Path | Action |
|--------|------|--------|
| GET | `/` | دریافت تمام inbound ها |
| GET | `/get/:id` | دریافت inbound با id مشخص |
| POST | `/add` | افزودن inbound جدید |
| POST | `/del/:id` | حذف inbound |
| POST | `/update/:id` | به‌روزرسانی inbound |
| POST | `/addClient/` | افزودن کلاینت به inbound |
| POST | `/:id/delClient/:clientId` | حذف کلاینت با clientId* |
| POST | `/updateClient/:clientId` | به‌روزرسانی کلاینت با clientId* |
| GET | `/getClientTraffics/:email` | دریافت ترافیک کلاینت با email |
| GET | `/getClientTrafficsById/:id` | دریافت ترافیک کلاینت با ID |
| POST | `/:id/resetClientTraffic/:email` | ریست ترافیک کلاینت |
| POST | `/resetAllTraffics` | ریست ترافیک تمام inbound ها |
| POST | `/resetAllClientTraffics/:id` | ریست ترافیک کلاینت‌های یک inbound (-1: همه) |
| POST | `/delDepletedClients/:id` | حذف کلاینت‌های تمام شده یک inbound (-1: همه) |
| POST | `/onlines` | دریافت لیست کاربران آنلاین (لیست email ها) |

**نکته**: فیلد `clientId` باید با یکی از موارد زیر پر شود:
- `client.id` برای VMess و VLESS
- `client.password` برای Trojan
- `client.email` برای Shadowsocks

### `/xui/API/server` - مدیریت سرور

| Method | Path | Action |
|--------|------|--------|
| GET | `/status` | دریافت وضعیت سرور |
| GET | `/getDb` | دریافت backup دیتابیس |
| GET | `/createbackup` | ارسال backup به ادمین‌ها از طریق Telegram bot |
| GET | `/getConfigJson` | دریافت config.json |
| GET | `/getXrayVersion` | دریافت آخرین نسخه xray |
| GET | `/getNewVlessEnc` | دریافت encryption جدید vless |
| GET | `/getNewX25519Cert` | دریافت گواهی x25519 جدید |
| GET | `/getNewmldsa65` | دریافت mldsa65 جدید |
| POST | `/getNewEchCert` | دریافت گواهی ECH جدید |
| POST | `/importDB` | Import دیتابیس به x-ui |
| POST | `/stopXrayService` | توقف سرویس xray |
| POST | `/restartXrayService` | راه‌اندازی مجدد سرویس xray |
| POST | `/installXray/:version` | نصب نسخه مشخص xray |
| POST | `/logs/:count` | دریافت لاگ‌های پنل/xray |

## Environment Variables

این متغیرهای محیطی برای تنظیمات داخلی پنل استفاده می‌شوند:

| Variable | Type | Default | توضیحات |
|----------|------|---------|---------|
| `XUI_LOG_LEVEL` | "debug" \| "info" \| "warn" \| "error" | "info" | سطح لاگ |
| `XUI_DEBUG` | boolean | false | حالت دیباگ |
| `XUI_BIN_FOLDER` | string | "bin" | پوشه باینری‌ها |
| `XUI_DB_FOLDER` | string | "/etc/x-ui" | پوشه دیتابیس |

**نکته**: این متغیرها مستقیماً روی API تأثیری ندارند و برای تنظیمات داخلی پنل هستند.

## ساختار پاسخ API

پنل 3x-ui معمولاً پاسخ‌های JSON با ساختار زیر برمی‌گرداند:

```json
{
  "success": true,
  "msg": "پیام",
  "obj": { ... }
}
```

یا ممکن است پاسخ یک آرایه مستقیم باشد:

```json
[
  { "id": 1, "remark": "...", ... },
  { "id": 2, "remark": "...", ... }
]
```

## احراز هویت

پنل 3x-ui از cookie-based authentication استفاده می‌کند. پس از login موفق، cookie ها ذخیره می‌شوند و در درخواست‌های بعدی استفاده می‌شوند.

## مثال استفاده

### دریافت تمام inbound ها
```
GET /xui/API/inbounds/
```

### افزودن کلاینت
```
POST /xui/API/inbounds/addClient/
Body: {
  "id": inboundId,
  "client": {
    "id": "uuid",
    "email": "user@example.com",
    ...
  }
}
```

### حذف کلاینت
```
POST /xui/API/inbounds/:id/delClient/:clientId
```

## نکات مهم

1. تمام endpoint ها با base_path ترکیب می‌شوند (مثلاً `/mute/xui/API/inbounds/`)
2. اگر base_path وجود ندارد، endpoint مستقیماً استفاده می‌شود
3. سیستم به صورت خودکار endpoint های مختلف را امتحان می‌کند
4. Cookie ها باید در تمام درخواست‌ها ارسال شوند
