OpenVPNManager
v3.0.0 Stable (Multi-Protocol)

مستندات فنی API Technical API Docs

راهنمای کامل نسخه 3.۰.۰ با پشتیبانی از چند پروتکل (OpenVPN, L2TP, Cisco, WireGuard AnyConnect). کنترل کامل بر روی کاربران، نودهای توزیع شده، پورت‌های اختصاصی و سیستم نمایندگی پیشرفته.

Complete guide for v3.0.0 supporting Multi-Protocols (OpenVPN, L2TP, Cisco, WireGuard AnyConnect). Full control over users, distributed nodes, custom ports, and advanced reseller system.

Base URL
https://your-domain.com:PORT
Protocols
OVPN / L2TP / CISCO / WG1

احراز هویتAuthentication

تمام درخواست‌ها نیازمند هدر X-API-KEY هستند.

All requests require the X-API-KEY header.

X-API-KEY: y0ur_s3cur3_ap1_k3y_h3r3
Content-Type: application/json
GET/api/v1/status
{ "success": true, "message": "Panel is online", "timestamp": "2024-01-01T12:00:00.000000" }

مدیریت کاربرانUser Management

GET /api/v1/users/list_all
API Key

لیست کامل کاربران. اگر کلید شما ادمین اصلی باشد، علاوه‌بر کاربران، ساختار نمایندگان (sub-admins) هم برگردانده می‌شود. اگر کلید شما متعلق به نماینده باشد، فقط کاربران همان نماینده برگردانده می‌شوند. List users. With a main admin key, it returns main-admin users plus sub-admins structure. With a sub-admin key, it returns only that sub-admin’s users.

سطح دسترسی: هر دو نقش (main_admin / sub_admin) — خروجی بر اساس نقش متفاوت است. Access: both roles (main_admin / sub_admin) — response shape differs by role.

پارامترهای ورودی Input Parameters

این اندپوینت پارامتر ورودی ندارد (به‌جز هدر X-API-KEY و پارامترهای مسیر). This endpoint has no input parameters (except X-API-KEY header and path params).

مثال‌های cURL (۳ نمونه) cURL Examples (3)

(Main Admin) دریافت لیست کامل (Main Admin) Full list
cURL
curl -s "http://YOUR_PANEL_DOMAIN/api/v1/users/list_all" \
  -H "X-API-KEY: YOUR_MAIN_ADMIN_API_KEY" 
Response
{
  "success": true,
  "main_admin": {
    "users": [
      {
        "username": "user1"
      }
    ]
  },
  "sub_admins": [
    {
      "id": 1,
      "username": "sa1",
      "users": [
        {
          "username": "sa_user1"
        }
      ]
    }
  ]
}
(Sub-Admin) فقط کاربران همان نماینده (Sub-Admin) Only sub-admin users
cURL
curl -s "http://YOUR_PANEL_DOMAIN/api/v1/users/list_all" \
  -H "X-API-KEY: YOUR_SUB_ADMIN_API_KEY" 
Response
{
  "success": true,
  "users": [
    {
      "username": "sa_user1"
    },
    {
      "username": "sa_user2"
    }
  ]
}
خطای نبودن API Key Missing API key error
cURL
curl -s "http://YOUR_PANEL_DOMAIN/api/v1/users/list_all" 
Response
{
  "success": false,
  "message": "API key is missing"
}
POST /api/v1/users
API Key

ایجاد کاربر (تکی یا گروهی/Bulk). در حالت Bulk با ارسال bulk_count چند کاربر با نام‌های رند ساخته می‌شود. اگر کلید sub-admin باشد، محدودیت تعداد کاربران و سهمیه ترافیک نماینده اعمال می‌شود و sub_admin_id نادیده گرفته می‌شود. Create user(s) (Single or Bulk). In Bulk mode, send bulk_count to create random usernames. With a sub-admin key, user-count and quota limits apply and sub_admin_id is ignored.

سطح دسترسی: main_admin و sub_admin (با محدودیت‌های sub_admin). Access: main_admin and sub_admin (sub_admin has limits).

پارامترهای ورودی Input Parameters

username
String
Conditional
نام کاربری برای حالت تکی. اگر bulk_count ارسال نشده باشد، اجباری است. Username for single mode. Required if bulk_count is not provided.
bulk_count
Integer
Optional
تعداد کاربران برای ساخت گروهی. اگر > 0 باشد حالت Bulk فعال می‌شود. Number of users to create in bulk. If > 0, bulk mode is used.
sub_admin_id
Integer
Optional
فقط برای main_admin: انتساب کاربر(ها) به یک نماینده. با کلید sub-admin نادیده گرفته می‌شود. Main-admin only: assign user(s) to a sub-admin. Ignored for sub-admin keys.
max_clients
Integer
Optional
حداکثر اتصال همزمان. پیش‌فرض: 1 Max simultaneous clients. Default: 1
data_limit
Integer
Optional
سقف ترافیک عددی. اگر ارسال نشود یا عدد نباشد، نامحدود در نظر گرفته می‌شود. Traffic limit (number). If missing or non-numeric, treated as unlimited.
data_limit_unit
String
Optional
واحد سقف ترافیک. پیش‌فرض: GB Data limit unit. Default: GB
notes
String
Optional
یادداشت داخلی. Internal notes.
nodes
Array[String|Int]
Optional
لیست شناسه/نام نودهای مجاز (در دیتابیس به‌صورت CSV ذخیره می‌شود). Allowed node identifiers list (stored as CSV in DB).
activation_type
String
Optional
نوع فعال‌سازی: fixed_date (پیش‌فرض) یا flexible_days. Activation type: fixed_date (default) or flexible_days.
pending_activation_days
Integer
Conditional
فقط برای flexible_days: تعداد روز بعد از اولین اتصال. Only for flexible_days: days after first connection.
expiry_date_str
String
Optional
برای fixed_date: تاریخ انقضا (YYYY-MM-DD). For fixed_date: expiry date (YYYY-MM-DD).
expiry_days
Integer
Optional
برای fixed_date: تعداد روز از الان (اگر expiry_date_str نبود). For fixed_date: days from now (if expiry_date_str not set).
enable_l2tp
Boolean
Optional
فعال‌سازی L2TP برای کاربر. پیش‌فرض: false Enable L2TP for user. Default: false
l2tp_password
String
Optional
رمز L2TP (در صورت فعال بودن). (در کد الزام سخت وجود ندارد، اما توصیه می‌شود) L2TP password (when enabled). (Not strictly enforced, but recommended).
enable_cisco
Boolean
Optional
فعال‌سازی Cisco برای کاربر. پیش‌فرض: false Enable Cisco for user. Default: false
cisco_password
String
Optional
رمز Cisco (در صورت فعال بودن). Cisco password (when enabled).
enable_wg1
Boolean
Optional
فعال‌سازی WireGuard (wg1). پیش‌فرض: false Enable WireGuard (wg1). Default: false

نکات مهم Important Notes

در حالت Bulk نام کاربری‌ها به‌صورت رند ساخته می‌شوند. در پاسخ، لیست کاربران ساخته‌شده برمی‌گردد و همگام‌سازی سنگین با نودها در پس‌زمینه انجام می‌شود. In bulk mode usernames are random. Response includes created users; heavy node sync runs in background.

مثال‌های cURL (۳ نمونه) cURL Examples (3)

ساخت تکی با تاریخ ثابت Single create (fixed date)
cURL
curl -s "http://YOUR_PANEL_DOMAIN/api/v1/users" \
  -H "X-API-KEY: YOUR_MAIN_ADMIN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "username": "test_user",
  "max_clients": 2,
  "activation_type": "fixed_date",
  "expiry_date_str": "2026-12-31",
  "data_limit": 50,
  "data_limit_unit": "GB",
  "enable_wg1": true
}'
Response
{
  "success": true,
  "message": "Users created successfully.",
  "created_users": [
    "test_user"
  ]
}
ساخت گروهی (Bulk) Bulk create
cURL
curl -s "http://YOUR_PANEL_DOMAIN/api/v1/users" \
  -H "X-API-KEY: YOUR_MAIN_ADMIN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "bulk_count": 3,
  "activation_type": "flexible_days",
  "pending_activation_days": 30,
  "enable_l2tp": true,
  "l2tp_password": "P@ss1234"
}'
Response
{
  "success": true,
  "message": "Users created successfully.",
  "created_users": [
    "user1234",
    "user5678",
    "user9012"
  ]
}
خطای ورودی (بدون username در حالت تکی) Input error (missing username)
cURL
curl -s "http://YOUR_PANEL_DOMAIN/api/v1/users" \
  -H "X-API-KEY: YOUR_MAIN_ADMIN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "max_clients": 1
}'
Response
{
  "success": false,
  "message": "Username is required."
}
GET /api/v1/users/<username>
API Key

دریافت اطلاعات کامل کاربر + وضعیت آنلاین + ترافیک + پروتکل‌ها (OpenVPN/L2TP/Cisco/WireGuard) و لیست سرورهای مربوط. اگر کلید sub-admin باشد فقط به کاربران خودش دسترسی دارد. Get full user details + online status + traffic + protocols (OpenVPN/L2TP/Cisco/WireGuard) and related server lists. Sub-admin keys can access only their own users.

سطح دسترسی: main_admin و sub_admin (با محدودیت مالکیت). Access: main_admin and sub_admin (ownership restricted).

پارامترهای ورودی Input Parameters

username (path)
String
Required
نام کاربری داخل URL. Username in path.

مثال‌های cURL (۳ نمونه) cURL Examples (3)

دریافت اطلاعات کاربر Get user info
cURL
curl -s "http://YOUR_PANEL_DOMAIN/api/v1/users/test_user" \
  -H "X-API-KEY: YOUR_MAIN_ADMIN_API_KEY" 
Response
{
  "success": true,
  "username": "test_user",
  "is_active": true,
  "is_online": false,
  "active_connections": 0,
  "data_limit": 50,
  "data_limit_unit": "GB",
  "total_traffic_bytes": 123456,
  "openvpn_servers": [
    {
      "name": "Main Server",
      "is_tunnel": false
    }
  ]
}
خطای عدم دسترسی/عدم وجود کاربر Not found / permission denied
cURL
curl -s "http://YOUR_PANEL_DOMAIN/api/v1/users/unknown_user" \
  -H "X-API-KEY: YOUR_SUB_ADMIN_API_KEY" 
Response
{
  "success": false,
  "message": "User not found or permission denied"
}
خطای نبودن API Key Missing API key error
cURL
curl -s "http://YOUR_PANEL_DOMAIN/api/v1/users/test_user" 
Response
{
  "success": false,
  "message": "API key is missing"
}
PUT /api/v1/users/<username>
API Key

ویرایش کاربر. ورودی‌ها به منطق مرکزی به‌صورت فرم‌گونه تبدیل می‌شوند. این اندپوینت هم nodes و هم نام قدیمی‌تر allowed_nodes را می‌پذیرد. همچنین expiry_date_str به‌عنوان ورودی قدیمی پشتیبانی می‌شود. Edit a user. Input is converted into the internal update logic (form-like). Accepts both nodes and legacy allowed_nodes. Also supports legacy expiry_date_str.

سطح دسترسی: main_admin و sub_admin (مالکیت کاربر چک می‌شود). Access: main_admin and sub_admin (ownership checked).

پارامترهای ورودی Input Parameters

username (path)
String
Required
نام کاربری داخل URL. Username in path.
max_clients
Integer
Optional
حداکثر اتصال همزمان. Max simultaneous clients.
data_limit
Integer
Optional
سقف ترافیک عددی. Traffic limit number.
data_limit_unit
String
Optional
واحد سقف ترافیک (GB/MB/...). Traffic limit unit (GB/MB/...).
notes
String
Optional
یادداشت. Notes.
reset_activation
Boolean
Optional
ریست فعال‌سازی/انقضا طبق منطق داخلی (رفتار دقیق در منطق مرکزی). Reset activation/expiry via internal logic.
activation_type
String
Optional
fixed_date یا flexible_days (تغییر حالت فعال‌سازی). fixed_date or flexible_days (change activation mode).
pending_activation_days
Integer
Optional
روزهای فعال‌سازی بعد از اولین اتصال (برای flexible_days). Days after first connection (for flexible_days).
expiry_date
String
Optional
تاریخ انقضا (YYYY-MM-DD). Expiry date (YYYY-MM-DD).
expiry_date_str
String
Optional
ورودی قدیمی تاریخ انقضا (اگر expiry_date نبود). Legacy expiry date input (if expiry_date not provided).
nodes
Array[String|Int]
Optional
لیست نودهای مجاز. Allowed nodes list.
allowed_nodes
Array[String|Int]
Optional
نام قدیمی پارامتر nodes (اگر nodes ارسال نشد). Legacy name for nodes (used if nodes not present).
enable_l2tp
Boolean
Optional
فعال/غیرفعال کردن L2TP. Enable/disable L2TP.
l2tp_password
String
Optional
رمز L2TP. L2TP password.
enable_cisco
Boolean
Optional
فعال/غیرفعال کردن Cisco. Enable/disable Cisco.
cisco_password
String
Optional
رمز Cisco. Cisco password.
enable_wg1
Boolean
Optional
فعال/غیرفعال کردن WireGuard (wg1). Enable/disable WireGuard (wg1).

مثال‌های cURL (۳ نمونه) cURL Examples (3)

ویرایش سقف ترافیک و تعداد اتصال Update data limit and max clients
cURL
curl -s -X PUT "http://YOUR_PANEL_DOMAIN/api/v1/users/test_user" \
  -H "X-API-KEY: YOUR_MAIN_ADMIN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "max_clients": 3,
  "data_limit": 100,
  "data_limit_unit": "GB",
  "notes": "VIP user"
}'
Response
{
  "success": true,
  "message": "User updated successfully."
}
فعال‌سازی WireGuard و محدود کردن نودها Enable WireGuard and restrict nodes
cURL
curl -s -X PUT "http://YOUR_PANEL_DOMAIN/api/v1/users/test_user" \
  -H "X-API-KEY: YOUR_MAIN_ADMIN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "enable_wg1": true,
  "nodes": [
    "main",
    "node_1"
  ]
}'
Response
{
  "success": true,
  "message": "User updated successfully."
}
خطای بدنه خالی Empty body error
cURL
curl -s -X PUT "http://YOUR_PANEL_DOMAIN/api/v1/users/test_user" \
  -H "X-API-KEY: YOUR_MAIN_ADMIN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
Response
{
  "success": false,
  "message": "Request body must be JSON and not empty"
}

عملیات کاربران User Actions

API Key
POST /api/v1/users/<username>/toggle
API Key

فعال/غیرفعال کردن کاربر (روی تمام پروتکل‌ها اثر می‌گذارد). Enable/disable a user (affects all protocols).

پارامترهای ورودی Input Parameters

username (path)
String
Required
نام کاربری داخل URL. Username in path.

مثال‌های cURL (۳ نمونه) cURL Examples (3)

تغییر وضعیت کاربر Toggle user
cURL
curl -s -X POST "http://YOUR_PANEL_DOMAIN/api/v1/users/test_user/toggle" \
  -H "X-API-KEY: YOUR_MAIN_ADMIN_API_KEY" 
Response
{
  "success": true,
  "message": "User toggled"
}
عدم وجود/عدم دسترسی Not found / permission denied
cURL
curl -s -X POST "http://YOUR_PANEL_DOMAIN/api/v1/users/unknown_user/toggle" \
  -H "X-API-KEY: YOUR_SUB_ADMIN_API_KEY" 
Response
{
  "success": false,
  "message": "User not found or permission denied"
}
خطای نبودن API Key Missing API key
cURL
curl -s -X POST "http://YOUR_PANEL_DOMAIN/api/v1/users/test_user/toggle" 
Response
{
  "success": false,
  "message": "API key is missing"
}
POST /api/v1/users/<username>/revoke
API Key

باطل‌سازی توکن اشتراک و صدور/ساخت مجدد گواهی (کار سنگین در پس‌زمینه). لینک اشتراک قدیمی فوراً باطل می‌شود و لینک جدید در پاسخ برمی‌گردد. Revoke subscription token and re-issue certificate (heavy task in background). Old subscription link is invalidated instantly; new link is returned.

پارامترهای ورودی Input Parameters

username (path)
String
Required
نام کاربری داخل URL. Username in path.

مثال‌های cURL (۳ نمونه) cURL Examples (3)

شروع revoke و دریافت لینک جدید Start revoke and get new link
cURL
curl -s -X POST "http://YOUR_PANEL_DOMAIN/api/v1/users/test_user/revoke" \
  -H "X-API-KEY: YOUR_MAIN_ADMIN_API_KEY" 
Response
{
  "success": true,
  "message": "Token revoked instantly. Certificate generation running in background.",
  "new_subscription_url": "http://YOUR_PANEL_DOMAIN/sub/test_user?token=NEW..."
}
عدم دسترسی sub-admin به کاربر دیگر Sub-admin cannot revoke other users
cURL
curl -s -X POST "http://YOUR_PANEL_DOMAIN/api/v1/users/other_user/revoke" \
  -H "X-API-KEY: YOUR_SUB_ADMIN_API_KEY" 
Response
{
  "success": false,
  "message": "User not found or permission denied."
}
کاربر ناموجود User not found
cURL
curl -s -X POST "http://YOUR_PANEL_DOMAIN/api/v1/users/unknown_user/revoke" \
  -H "X-API-KEY: YOUR_MAIN_ADMIN_API_KEY" 
Response
{
  "success": false,
  "message": "User not found or permission denied."
}
POST /api/v1/users/<username>/reset_traffic
API Key

ریست ترافیک کاربر (download/upload) به صفر. در صورت امکان ممکن است کاربر دوباره فعال شود (در پاسخ فیلد user_re_enabled). Reset user's traffic (download/upload) to zero. May re-enable the user when possible (see user_re_enabled).

پارامترهای ورودی Input Parameters

username (path)
String
Required
نام کاربری داخل URL. Username in path.

مثال‌های cURL (۳ نمونه) cURL Examples (3)

ریست ترافیک Reset traffic
cURL
curl -s -X POST "http://YOUR_PANEL_DOMAIN/api/v1/users/test_user/reset_traffic" \
  -H "X-API-KEY: YOUR_MAIN_ADMIN_API_KEY" 
Response
{
  "success": true,
  "message": "Traffic reset for 'test_user'.",
  "user_re_enabled": false
}
عدم دسترسی/عدم وجود Not found / permission denied
cURL
curl -s -X POST "http://YOUR_PANEL_DOMAIN/api/v1/users/unknown_user/reset_traffic" \
  -H "X-API-KEY: YOUR_SUB_ADMIN_API_KEY" 
Response
{
  "success": false,
  "message": "User not found or permission denied"
}
خطای داخلی نمونه Sample server error
cURL
curl -s -X POST "http://YOUR_PANEL_DOMAIN/api/v1/users/test_user/reset_traffic" \
  -H "X-API-KEY: YOUR_MAIN_ADMIN_API_KEY" 
Response
{
  "success": false,
  "message": "An internal error occurred."
}

حذف کاربر Delete User

API Key
DELETE /api/v1/users/<username>
API Key

حذف کاربر. اگر کلید sub-admin باشد فقط می‌تواند کاربران خودش را حذف کند. Delete a user. Sub-admin keys can delete only their own users.

سطح دسترسی: main_admin و sub_admin (مالکیت چک می‌شود). Access: main_admin and sub_admin (ownership checked).

پارامترهای ورودی Input Parameters

username (path)
String
Required
نام کاربری داخل URL. Username in path.

مثال‌های cURL (۳ نمونه) cURL Examples (3)

حذف موفق Successful delete
cURL
curl -s -X DELETE "http://YOUR_PANEL_DOMAIN/api/v1/users/test_user" \
  -H "X-API-KEY: YOUR_MAIN_ADMIN_API_KEY" 
Response
{
  "success": true,
  "message": "User 'test_user' deleted successfully."
}
عدم وجود/عدم دسترسی Not found / permission denied
cURL
curl -s -X DELETE "http://YOUR_PANEL_DOMAIN/api/v1/users/unknown_user" \
  -H "X-API-KEY: YOUR_SUB_ADMIN_API_KEY" 
Response
{
  "success": false,
  "message": "User not found or permission denied"
}
API Key نامعتبر/غیرفعال Invalid/inactive API key
cURL
curl -s -X DELETE "http://YOUR_PANEL_DOMAIN/api/v1/users/test_user" \
  -H "X-API-KEY: INVALID_KEY" 
Response
{
  "success": false,
  "message": "Invalid or inactive API key"
}

لینک اشتراک کاربر User Subscription URL

API Key
GET /api/v1/users/<username>/sub
API Key

دریافت لینک اشتراک (Subscription URL) کاربر. برای sub-admin فقط کاربران خودش قابل مشاهده است. Get user's subscription URL. Sub-admin keys can access only their own users.

سطح دسترسی: main_admin و sub_admin (مالکیت چک می‌شود). Access: main_admin and sub_admin (ownership checked).

پارامترهای ورودی Input Parameters

username (path)
String
Required
نام کاربری داخل URL. Username in path.

مثال‌های cURL (۳ نمونه) cURL Examples (3)

دریافت لینک Get subscription URL
cURL
curl -s "http://YOUR_PANEL_DOMAIN/api/v1/users/test_user/sub" \
  -H "X-API-KEY: YOUR_MAIN_ADMIN_API_KEY" 
Response
{
  "success": true,
  "sub_url": "http://YOUR_PANEL_DOMAIN/sub/test_user?token=..."
}
کاربر ناموجود/عدم دسترسی Not found / permission denied
cURL
curl -s "http://YOUR_PANEL_DOMAIN/api/v1/users/unknown_user/sub" \
  -H "X-API-KEY: YOUR_SUB_ADMIN_API_KEY" 
Response
{
  "success": false,
  "message": "User not found or permission denied"
}
خطای نبودن API Key Missing API key error
cURL
curl -s "http://YOUR_PANEL_DOMAIN/api/v1/users/test_user/sub" 
Response
{
  "success": false,
  "message": "API key is missing"
}

اطلاعات کامل اتصال (OpenVPN/L2TP/Cisco/WireGuard) All Connection Info (OpenVPN/L2TP/Cisco/WireGuard)

API Key
GET /api/v1/users/<username>/all_ovpn_links
API Key

دریافت همه لینک‌های دانلود/کانفیگ OpenVPN مربوط به کاربر. برای sub-admin فقط کاربران خودش. Get all OpenVPN download/config links for a user. Sub-admin keys can access only their own users.

سطح دسترسی: main_admin و sub_admin (مالکیت چک می‌شود). Access: main_admin and sub_admin (ownership checked).

پارامترهای ورودی Input Parameters

username (path)
String
Required
نام کاربری داخل URL. Username in path.

مثال‌های cURL (۳ نمونه) cURL Examples (3)

دریافت لینک‌ها Get links
cURL
curl -s "http://YOUR_PANEL_DOMAIN/api/v1/users/test_user/all_ovpn_links" \
  -H "X-API-KEY: YOUR_MAIN_ADMIN_API_KEY" 
Response
{
  "success": true,
  "username": "test_user",
  "links": [
    {
      "name": "main_udp",
      "url": "http://YOUR_PANEL_DOMAIN/download/test_user/main_udp.ovpn"
    }
  ]
}
عدم دسترسی sub-admin به کاربر دیگر Sub-admin cannot access other users
cURL
curl -s "http://YOUR_PANEL_DOMAIN/api/v1/users/other_user/all_ovpn_links" \
  -H "X-API-KEY: YOUR_SUB_ADMIN_API_KEY" 
Response
{
  "success": false,
  "message": "User not found or permission denied"
}
API Key نامعتبر Invalid API key
cURL
curl -s "http://YOUR_PANEL_DOMAIN/api/v1/users/test_user/all_ovpn_links" \
  -H "X-API-KEY: INVALID_KEY" 
Response
{
  "success": false,
  "message": "Invalid or inactive API key"
}

مدیریت نودهاNode Management

کنترل سرورهای فرعی و زیرساخت (Async Provisioning)Manage slave servers and infrastructure (Async Provisioning)

سطح دسترسی: ادمین اصلیAccess Level: Main Admin Only

مدیریت نودها فقط با کلید ادمین اصلی امکان‌پذیر است. نمایندگان (Sub-Admins) دسترسی به این بخش ندارند. Node management is restricted to the Main Admin Key. Sub-Admins do not have access to infrastructure settings.

GET /api/v1/nodes
API Key

لیست تمام نودها به‌همراه وضعیت و ترافیک تجمیعی (از حافظه/STATE). List all nodes including status and aggregated traffic (from memory/STATE).

سطح دسترسی: در کد فعلی فقط API Key لازم است (محدودیت نقش برای این متد اعمال نشده). Access: API key required only (no role restriction in current code).

پارامترهای ورودی Input Parameters

این اندپوینت پارامتر ورودی ندارد (به‌جز هدر X-API-KEY و پارامترهای مسیر). This endpoint has no input parameters (except X-API-KEY header and path params).

مثال‌های cURL (۳ نمونه) cURL Examples (3)

لیست نودها List nodes
cURL
curl -s "http://YOUR_PANEL_DOMAIN/api/v1/nodes" \
  -H "X-API-KEY: YOUR_MAIN_ADMIN_API_KEY" 
Response
{
  "success": true,
  "nodes": [
    {
      "id": 1,
      "name": "Node A",
      "ip_address": "1.2.3.4",
      "status": "active",
      "total_traffic_bytes": 123456
    }
  ]
}
با کلید sub-admin (در کد مجاز است) With sub-admin key (allowed by code)
cURL
curl -s "http://YOUR_PANEL_DOMAIN/api/v1/nodes" \
  -H "X-API-KEY: YOUR_SUB_ADMIN_API_KEY" 
Response
{
  "success": true,
  "nodes": [
    {
      "id": 1,
      "name": "Node A",
      "status": "active"
    }
  ]
}
API Key نامعتبر Invalid API key
cURL
curl -s "http://YOUR_PANEL_DOMAIN/api/v1/nodes" \
  -H "X-API-KEY: INVALID_KEY" 
Response
{
  "success": false,
  "message": "Invalid or inactive API key"
}
POST /api/v1/nodes
API Key

ایجاد نود جدید و شروع نصب/Provision در پس‌زمینه (پاسخ 202). این متد فقط برای main_admin مجاز است. Create a new node and start provisioning in background (returns 202). Main-admin only.

سطح دسترسی: فقط main_admin Access: main_admin only

پارامترهای ورودی Input Parameters

name
String
Required
نام نمایشی نود. Node display name.
ip_address
String
Required
آی‌پی نود. Node IP address.
ssh_password
String
Required
پسورد SSH نود. Node SSH password.
openvpn_port
Integer|String
Optional
پورت OpenVPN. پیش‌فرض: 1194 OpenVPN port. Default: 1194
protocol
String
Optional
udp یا tcp. پیش‌فرض: udp udp or tcp. Default: udp
sync_all_users
Boolean
Optional
اگر true باشد همه کاربران با نود همگام‌سازی می‌شوند. If true, sync all users to the node.
show_main_config
Boolean
Optional
نمایش/استفاده از کانفیگ سرور اصلی در نود. پیش‌فرض: true Show/use main server config on node. Default: true
communication_method
String
Optional
روش ارتباط: wireguard (پیش‌فرض) یا direct_tcp. Communication method: wireguard (default) or direct_tcp.
cisco_port
Integer
Optional
پورت سرویس Cisco روی نود. Cisco service port on node.
main_server_endpoint
String
Optional
آدرس سرور اصلی برای برخی سناریوها (مثلاً direct_tcp). Main server endpoint for some scenarios (e.g., direct_tcp).

نکات مهم Important Notes

در صورت موفقیت، پاسخ 202 به‌همراه node_id برمی‌گردد و نصب در پس‌زمینه ادامه پیدا می‌کند. اگر اتصال SSH تست اولیه را پاس نکند، خطا می‌گیرید. On success returns 202 with node_id; provisioning continues in background. SSH preflight failures return errors.

مثال‌های cURL (۳ نمونه) cURL Examples (3)

ایجاد نود و شروع نصب Create node and start provisioning
cURL
curl -s -X POST "http://YOUR_PANEL_DOMAIN/api/v1/nodes" \
  -H "X-API-KEY: YOUR_MAIN_ADMIN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Node A",
  "ip_address": "1.2.3.4",
  "ssh_password": "pass",
  "openvpn_port": 1194,
  "protocol": "udp",
  "sync_all_users": false,
  "communication_method": "wireguard"
}'
Response
{
  "success": true,
  "message": "Node created and installation started in background.",
  "node_id": 1
}
خطای دسترسی (کلید sub-admin) Permission denied (sub-admin key)
cURL
curl -s -X POST "http://YOUR_PANEL_DOMAIN/api/v1/nodes" \
  -H "X-API-KEY: YOUR_SUB_ADMIN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Node B",
  "ip_address": "2.3.4.5",
  "ssh_password": "pass"
}'
Response
{
  "success": false,
  "message": "Permission denied: Main admin API key required."
}
خطای کمبود فیلدهای اجباری Missing required fields
cURL
curl -s -X POST "http://YOUR_PANEL_DOMAIN/api/v1/nodes" \
  -H "X-API-KEY: YOUR_MAIN_ADMIN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Node C"
}'
Response
{
  "success": false,
  "message": "Missing required fields: name, ip_address, ssh_password"
}
PUT /api/v1/nodes/<node_id>
API Key

ویرایش نود و تریگر همگام‌سازی فقط برای سرویس‌هایی که تغییر کرده‌اند. (در کد فعلی محدودیت نقش برای PUT/DELETE نود اعمال نشده — فقط API key لازم است.) Edit node and trigger sync only for changed services. (Current code does not restrict role for node PUT/DELETE — only API key is required.)

سطح دسترسی: API key لازم (بدون محدودیت نقش در کد فعلی). Access: API key required (no role restriction in current code).

پارامترهای ورودی Input Parameters

node_id (path)
Integer
Required
شناسه نود. Node id.
name
String
Optional
نام جدید نود. New node name.
ip_address
String
Optional
آی‌پی جدید نود. New node IP.
openvpn_port
Integer|String
Optional
پورت OpenVPN. OpenVPN port.
protocol
String
Optional
udp یا tcp. udp or tcp.
cisco_port
Integer
Optional
پورت Cisco. Cisco port.
wg1_port
Integer
Optional
پورت WireGuard (wg1). WireGuard port (wg1).
ssh_password
String
Optional
اگر ارسال شود، پسورد SSH ذخیره/آپدیت می‌شود. If provided, updates stored SSH password.

مثال‌های cURL (۳ نمونه) cURL Examples (3)

ویرایش پورت و پروتکل Update port and protocol
cURL
curl -s -X PUT "http://YOUR_PANEL_DOMAIN/api/v1/nodes/1" \
  -H "X-API-KEY: YOUR_MAIN_ADMIN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "openvpn_port": 443,
  "protocol": "tcp"
}'
Response
{
  "success": true,
  "message": "Node updated. Sync triggered only for changed services."
}
ویرایش نام و آی‌پی Update name and IP
cURL
curl -s -X PUT "http://YOUR_PANEL_DOMAIN/api/v1/nodes/1" \
  -H "X-API-KEY: YOUR_MAIN_ADMIN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Node A (EU)",
  "ip_address": "5.6.7.8"
}'
Response
{
  "success": true,
  "message": "Node updated. Sync triggered only for changed services."
}
نود ناموجود Node not found
cURL
curl -s -X PUT "http://YOUR_PANEL_DOMAIN/api/v1/nodes/999999" \
  -H "X-API-KEY: YOUR_MAIN_ADMIN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "protocol": "udp"
}'
Response
{
  "success": false,
  "message": "Node not found"
}
DELETE /api/v1/nodes/<node_id>
API Key

حذف نود (غیرهمزمان). اگر حذف قبلاً شکست خورده باشد، حالت force فعال می‌شود. اگر حذف در جریان باشد کد 423 برمی‌گردد. (نکته: در کد اگر نود وجود نداشته باشد پیام success:true ولی status=404 برمی‌گردد.) Delete node (async). Force mode is used if previous deletion failed. Returns 423 if deletion is already in progress. (Note: if node not found, code returns success:true with HTTP 404.)

سطح دسترسی: API key لازم (بدون محدودیت نقش در کد فعلی). Access: API key required (no role restriction in current code).

پارامترهای ورودی Input Parameters

node_id (path)
Integer
Required
شناسه نود. Node id.

مثال‌های cURL (۳ نمونه) cURL Examples (3)

شروع حذف Start deletion
cURL
curl -s -X DELETE "http://YOUR_PANEL_DOMAIN/api/v1/nodes/1" \
  -H "X-API-KEY: YOUR_MAIN_ADMIN_API_KEY" 
Response
{
  "success": true,
  "message": "Deletion started"
}
حذف در حال انجام (423) Deletion in progress (423)
cURL
curl -s -X DELETE "http://YOUR_PANEL_DOMAIN/api/v1/nodes/1" \
  -H "X-API-KEY: YOUR_MAIN_ADMIN_API_KEY" 
Response
{
  "success": false,
  "message": "Deletion in progress..."
}
نود ناموجود (404 با success:true) Node not found (404 with success:true)
cURL
curl -s -X DELETE "http://YOUR_PANEL_DOMAIN/api/v1/nodes/999999" \
  -H "X-API-KEY: YOUR_MAIN_ADMIN_API_KEY" 
Response
{
  "success": true,
  "message": "Node not found"
}

مدیریت پورت‌هاPort Management

مدیریت پورت‌های ورودی (TCP/UDP) و اختصاص به سرورهاManage inbound ports (TCP/UDP) and server assignments

GET /api/v1/public/ports
API Key

لیست پورت‌های پیش‌فرض و پورت‌های سفارشی اختصاص‌داده‌شده به سرورها. فقط main_admin. List default ports and custom port assignments per server. Main-admin only.

سطح دسترسی: فقط main_admin Access: main_admin only

پارامترهای ورودی Input Parameters

این اندپوینت پارامتر ورودی ندارد (به‌جز هدر X-API-KEY و پارامترهای مسیر). This endpoint has no input parameters (except X-API-KEY header and path params).

مثال‌های cURL (۳ نمونه) cURL Examples (3)

دریافت پورت‌ها Get ports
cURL
curl -s "http://YOUR_PANEL_DOMAIN/api/v1/public/ports" \
  -H "X-API-KEY: YOUR_MAIN_ADMIN_API_KEY" 
Response
{
  "success": true,
  "default_ports": [
    {
      "is_default": true,
      "name": "Main Server",
      "public_port": 1194,
      "protocol": "udp"
    }
  ],
  "custom_ports": [
    {
      "port_id": 2,
      "server_identifier": "node_1",
      "public_port": 443,
      "protocol": "tcp",
      "server_name": "Node: Node A"
    }
  ]
}
عدم دسترسی با کلید sub-admin Denied with sub-admin key
cURL
curl -s "http://YOUR_PANEL_DOMAIN/api/v1/public/ports" \
  -H "X-API-KEY: YOUR_SUB_ADMIN_API_KEY" 
Response
{
  "success": false,
  "message": "Permission denied: Main admin API key required."
}
API Key نامعتبر Invalid API key
cURL
curl -s "http://YOUR_PANEL_DOMAIN/api/v1/public/ports" \
  -H "X-API-KEY: INVALID_KEY" 
Response
{
  "success": false,
  "message": "Invalid or inactive API key"
}
GET /api/v1/public/servers_for_ports
API Key

لیست سرورها (Main + Nodeها) برای مدیریت پورت‌ها. خروجی شامل idهای لازم مثل main و node_<id> است. فقط main_admin. List servers (Main + Nodes) for port management. Returns IDs like main and node_<id>. Main-admin only.

سطح دسترسی: فقط main_admin Access: main_admin only

پارامترهای ورودی Input Parameters

این اندپوینت پارامتر ورودی ندارد (به‌جز هدر X-API-KEY و پارامترهای مسیر). This endpoint has no input parameters (except X-API-KEY header and path params).

مثال‌های cURL (۳ نمونه) cURL Examples (3)

دریافت لیست سرورها Get servers list
cURL
curl -s "http://YOUR_PANEL_DOMAIN/api/v1/public/servers_for_ports" \
  -H "X-API-KEY: YOUR_MAIN_ADMIN_API_KEY" 
Response
{
  "success": true,
  "servers": [
    {
      "id": "main",
      "name": "Main Server"
    },
    {
      "id": "node_1",
      "name": "Node: Node A"
    }
  ]
}
عدم دسترسی با کلید sub-admin Denied with sub-admin key
cURL
curl -s "http://YOUR_PANEL_DOMAIN/api/v1/public/servers_for_ports" \
  -H "X-API-KEY: YOUR_SUB_ADMIN_API_KEY" 
Response
{
  "success": false,
  "message": "Permission denied: Main admin API key required."
}
خطای داخلی نمونه Sample internal error
cURL
curl -s "http://YOUR_PANEL_DOMAIN/api/v1/public/servers_for_ports" \
  -H "X-API-KEY: YOUR_MAIN_ADMIN_API_KEY" 
Response
{
  "success": false,
  "message": "An internal error occurred."
}
POST /api/v1/public/ports
API Key

ایجاد/ثبت پورت و اختصاص آن به سرورهای انتخاب‌شده (server_ids). اگر پورت/پروتکل قبلاً وجود داشته باشد، فقط Assignmentها اضافه می‌شوند. فقط main_admin. Create/register a port and assign it to selected servers (server_ids). If the port/protocol already exists, only assignments are added. Main-admin only.

سطح دسترسی: فقط main_admin Access: main_admin only

پارامترهای ورودی Input Parameters

public_port
Integer|String
Required
پورت عمومی. Public port.
protocol
String
Required
udp یا tcp. udp or tcp.
server_ids
Array[String]
Required
لیست سرورها: مانند main, node_1, node_2 ... Server identifiers like main, node_1, node_2 ...

مثال‌های cURL (۳ نمونه) cURL Examples (3)

ایجاد پورت TCP روی main و یک نود Create TCP port on main and a node
cURL
curl -s -X POST "http://YOUR_PANEL_DOMAIN/api/v1/public/ports" \
  -H "X-API-KEY: YOUR_MAIN_ADMIN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "public_port": 443,
  "protocol": "tcp",
  "server_ids": [
    "main",
    "node_1"
  ]
}'
Response
{
  "success": true,
  "message": "Port configured on selected servers."
}
خطای ورودی (server_ids خالی) Input error (empty server_ids)
cURL
curl -s -X POST "http://YOUR_PANEL_DOMAIN/api/v1/public/ports" \
  -H "X-API-KEY: YOUR_MAIN_ADMIN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "public_port": 443,
  "protocol": "tcp",
  "server_ids": []
}'
Response
{
  "success": false,
  "message": "Missing info."
}
عدم دسترسی sub-admin Denied for sub-admin
cURL
curl -s -X POST "http://YOUR_PANEL_DOMAIN/api/v1/public/ports" \
  -H "X-API-KEY: YOUR_SUB_ADMIN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "public_port": 443,
  "protocol": "tcp",
  "server_ids": [
    "main"
  ]
}'
Response
{
  "success": false,
  "message": "Permission denied"
}
DELETE /api/v1/public/ports/assignment
API Key

حذف یک assignment از پورت روی یک سرور مشخص. ورودی شامل port_id و server_identifier است. فقط main_admin. Delete a port assignment on a specific server. Input includes port_id and server_identifier. Main-admin only.

سطح دسترسی: فقط main_admin Access: main_admin only

پارامترهای ورودی Input Parameters

port_id
Integer
Required
شناسه رکورد PortProtocol. PortProtocol id.
server_identifier
String
Required
شناسه سرور: main یا node_<id>. Server id: main or node_<id>.

مثال‌های cURL (۳ نمونه) cURL Examples (3)

حذف assignment از یک نود Delete assignment from a node
cURL
curl -s -X DELETE "http://YOUR_PANEL_DOMAIN/api/v1/public/ports/assignment" \
  -H "X-API-KEY: YOUR_MAIN_ADMIN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "port_id": 2,
  "server_identifier": "node_1"
}'
Response
{
  "success": true,
  "message": "Port assignment deleted."
}
خطای نبودن اطلاعات Missing info
cURL
curl -s -X DELETE "http://YOUR_PANEL_DOMAIN/api/v1/public/ports/assignment" \
  -H "X-API-KEY: YOUR_MAIN_ADMIN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "port_id": 2
}'
Response
{
  "success": false,
  "message": "Missing info."
}
عدم دسترسی sub-admin Denied for sub-admin
cURL
curl -s -X DELETE "http://YOUR_PANEL_DOMAIN/api/v1/public/ports/assignment" \
  -H "X-API-KEY: YOUR_SUB_ADMIN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "port_id": 2,
  "server_identifier": "main"
}'
Response
{
  "success": false,
  "message": "Permission denied"
}

مدیریت نمایندگانSub-Admin Management

فقط ادمین اصلیMain Admin Only

GET /api/v1/sub_admins
API Key

لیست تمام نمایندگان (Sub-Admins). فقط main_admin. List all sub-admins. Main-admin only.

سطح دسترسی: فقط main_admin Access: main_admin only

پارامترهای ورودی Input Parameters

این اندپوینت پارامتر ورودی ندارد (به‌جز هدر X-API-KEY و پارامترهای مسیر). This endpoint has no input parameters (except X-API-KEY header and path params).

مثال‌های cURL (۳ نمونه) cURL Examples (3)

لیست نمایندگان List sub-admins
cURL
curl -s "http://YOUR_PANEL_DOMAIN/api/v1/sub_admins" \
  -H "X-API-KEY: YOUR_MAIN_ADMIN_API_KEY" 
Response
{
  "success": true,
  "sub_admins": [
    {
      "id": 1,
      "username": "sa1",
      "subscription_port": 2096,
      "panel_port": 8888,
      "max_users_limit": 100,
      "total_usage_quota_gb": 500
    }
  ]
}
عدم دسترسی sub-admin Denied for sub-admin
cURL
curl -s "http://YOUR_PANEL_DOMAIN/api/v1/sub_admins" \
  -H "X-API-KEY: YOUR_SUB_ADMIN_API_KEY" 
Response
{
  "success": false,
  "message": "Permission denied"
}
API Key نامعتبر Invalid API key
cURL
curl -s "http://YOUR_PANEL_DOMAIN/api/v1/sub_admins" \
  -H "X-API-KEY: INVALID_KEY" 
Response
{
  "success": false,
  "message": "Invalid or inactive API key"
}
POST /api/v1/sub_admins
API Key

ایجاد نماینده جدید با اعتبارسنجی پورت‌ها و تنظیم فایروال. فقط main_admin. Create a new sub-admin with port validation and firewall setup. Main-admin only.

سطح دسترسی: فقط main_admin Access: main_admin only

پارامترهای ورودی Input Parameters

username
String
Required
نام کاربری نماینده. Sub-admin username.
password
String
Required
رمز نماینده. Sub-admin password.
subscription_port
Integer
Optional
پورت سرویس Subscription نماینده. اگر ارسال شود باید آزاد باشد. Sub-admin subscription port. Must be available if provided.
panel_port
Integer
Optional
پورت پنل نماینده. اگر ارسال شود باید آزاد باشد. Sub-admin panel port. Must be available if provided.
max_users_limit
Integer
Optional
سقف تعداد کاربران نماینده. Max users limit.
total_usage_quota_gb
Integer|Float
Optional
سقف سهمیه مصرف ترافیک نماینده (GB). Total usage quota (GB).
expiry_date
String
Optional
تاریخ انقضای نماینده (YYYY-MM-DD). Expiry date (YYYY-MM-DD).
is_active
Boolean
Optional
فعال/غیرفعال بودن نماینده. پیش‌فرض: true Enable/disable sub-admin. Default: true
notes
String
Optional
یادداشت نماینده. Sub-admin notes.
allowed_servers
Array[Object|String]
Optional
لیست سرورهای مجاز برای نماینده (به‌صورت JSON ذخیره می‌شود). Allowed servers list (stored as JSON).

مثال‌های cURL (۳ نمونه) cURL Examples (3)

ساخت نماینده با پورت‌ها Create sub-admin with ports
cURL
curl -s -X POST "http://YOUR_PANEL_DOMAIN/api/v1/sub_admins" \
  -H "X-API-KEY: YOUR_MAIN_ADMIN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "username": "sa1",
  "password": "pass",
  "subscription_port": 2096,
  "panel_port": 8888,
  "max_users_limit": 100,
  "total_usage_quota_gb": 500,
  "is_active": true,
  "notes": "Reseller A",
  "allowed_servers": [
    "main",
    "node_1"
  ]
}'
Response
{
  "success": true,
  "message": "Sub-admin created successfully and ports configured.",
  "sub_admin": {
    "id": 1,
    "username": "sa1"
  }
}
خطای تکراری بودن نام کاربری Username already exists
cURL
curl -s -X POST "http://YOUR_PANEL_DOMAIN/api/v1/sub_admins" \
  -H "X-API-KEY: YOUR_MAIN_ADMIN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "username": "sa1",
  "password": "pass"
}'
Response
{
  "success": false,
  "message": "A sub-admin with this username already exists."
}
خطای ورودی (بدون پسورد) Input error (missing password)
cURL
curl -s -X POST "http://YOUR_PANEL_DOMAIN/api/v1/sub_admins" \
  -H "X-API-KEY: YOUR_MAIN_ADMIN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "username": "sa2"
}'
Response
{
  "success": false,
  "message": "Username and password are required."
}
PUT /api/v1/sub_admins/<sub_admin_id>
API Key

ویرایش نماینده با منطق مدیریت پورت‌ها (در صورت تغییر) و به‌روزرسانی فایروال. فقط main_admin. Edit sub-admin with port management (if changed) and firewall updates. Main-admin only.

سطح دسترسی: فقط main_admin Access: main_admin only

پارامترهای ورودی Input Parameters

sub_admin_id (path)
Integer
Required
شناسه نماینده. Sub-admin id.
username
String
Optional
نام کاربری جدید. New username.
password
String
Optional
رمز جدید. New password.
subscription_port
Integer
Optional
پورت Subscription جدید (باید آزاد باشد). New subscription port (must be available).
panel_port
Integer
Optional
پورت پنل جدید (باید آزاد باشد). New panel port (must be available).
max_users_limit
Integer
Optional
سقف تعداد کاربران. Max users limit.
total_usage_quota_gb
Integer|Float
Optional
سقف سهمیه ترافیک (GB). Total usage quota (GB).
expiry_date
String
Optional
تاریخ انقضا (YYYY-MM-DD). Expiry date (YYYY-MM-DD).
is_active
Boolean
Optional
فعال/غیرفعال بودن. Active flag.
notes
String
Optional
یادداشت. Notes.
allowed_servers
Array[Object|String]
Optional
لیست سرورهای مجاز. Allowed servers list.

مثال‌های cURL (۳ نمونه) cURL Examples (3)

ویرایش سقف کاربران و سهمیه Update limits and quota
cURL
curl -s -X PUT "http://YOUR_PANEL_DOMAIN/api/v1/sub_admins/1" \
  -H "X-API-KEY: YOUR_MAIN_ADMIN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "max_users_limit": 200,
  "total_usage_quota_gb": 1000,
  "notes": "Upgraded"
}'
Response
{
  "success": true,
  "message": "Sub-admin updated successfully.",
  "sub_admin": {
    "id": 1
  }
}
تغییر پورت‌ها (با اعتبارسنجی) Change ports (validated)
cURL
curl -s -X PUT "http://YOUR_PANEL_DOMAIN/api/v1/sub_admins/1" \
  -H "X-API-KEY: YOUR_MAIN_ADMIN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "subscription_port": 2097,
  "panel_port": 8890
}'
Response
{
  "success": true,
  "message": "Sub-admin updated successfully.",
  "sub_admin": {
    "id": 1
  }
}
نماینده ناموجود Sub-admin not found
cURL
curl -s -X PUT "http://YOUR_PANEL_DOMAIN/api/v1/sub_admins/999999" \
  -H "X-API-KEY: YOUR_MAIN_ADMIN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "notes": "x"
}'
Response
{
  "success": false,
  "message": "Sub-admin not found"
}
POST /api/v1/sub_admins/<sub_admin_id>/reset_usage
API Key

ریست مصرف ترافیک نماینده به صفر و تلاش برای فعال‌سازی مجدد کاربران نماینده. فقط main_admin. Reset sub-admin total usage to zero and attempt to re-enable their users. Main-admin only.

سطح دسترسی: فقط main_admin Access: main_admin only

پارامترهای ورودی Input Parameters

sub_admin_id (path)
Integer
Required
شناسه نماینده. Sub-admin id.

مثال‌های cURL (۳ نمونه) cURL Examples (3)

ریست موفق Successful reset
cURL
curl -s -X POST "http://YOUR_PANEL_DOMAIN/api/v1/sub_admins/1/reset_usage" \
  -H "X-API-KEY: YOUR_MAIN_ADMIN_API_KEY" 
Response
{
  "success": true,
  "message": "Total data usage reset successfully. 5 user(s) were re-enabled."
}
نماینده ناموجود Sub-admin not found
cURL
curl -s -X POST "http://YOUR_PANEL_DOMAIN/api/v1/sub_admins/999999/reset_usage" \
  -H "X-API-KEY: YOUR_MAIN_ADMIN_API_KEY" 
Response
{
  "success": false,
  "message": "Sub-admin not found."
}
عدم دسترسی sub-admin Denied for sub-admin
cURL
curl -s -X POST "http://YOUR_PANEL_DOMAIN/api/v1/sub_admins/1/reset_usage" \
  -H "X-API-KEY: YOUR_SUB_ADMIN_API_KEY" 
Response
{
  "success": false,
  "message": "Permission denied"
}
DELETE /api/v1/sub_admins/<sub_admin_id>
API Key

حذف نماینده و تمام کاربران وابسته با منطق مرکزی. فقط main_admin. Delete a sub-admin and all their users via central logic. Main-admin only.

سطح دسترسی: فقط main_admin Access: main_admin only

پارامترهای ورودی Input Parameters

sub_admin_id (path)
Integer
Required
شناسه نماینده. Sub-admin id.

مثال‌های cURL (۳ نمونه) cURL Examples (3)

حذف نماینده Delete sub-admin
cURL
curl -s -X DELETE "http://YOUR_PANEL_DOMAIN/api/v1/sub_admins/1" \
  -H "X-API-KEY: YOUR_MAIN_ADMIN_API_KEY" 
Response
{
  "success": true,
  "message": "Sub-admin deleted successfully."
}
نماینده ناموجود Not found
cURL
curl -s -X DELETE "http://YOUR_PANEL_DOMAIN/api/v1/sub_admins/999999" \
  -H "X-API-KEY: YOUR_MAIN_ADMIN_API_KEY" 
Response
{
  "success": false,
  "message": "Sub-admin not found"
}
عدم دسترسی sub-admin Denied for sub-admin
cURL
curl -s -X DELETE "http://YOUR_PANEL_DOMAIN/api/v1/sub_admins/1" \
  -H "X-API-KEY: YOUR_SUB_ADMIN_API_KEY" 
Response
{
  "success": false,
  "message": "Permission denied"
}

تنظیمات سرورServer Settings

مدیریت تنظیمات هسته VPN (مانند کلیدهای امنیتی)Manage Core VPN Settings (Security Keys)

GET /api/v1/server_settings
API Key

دریافت تنظیمات عمومی سرور (فعلاً PSK). فقط main_admin. Get server settings (currently PSK). Main-admin only.

سطح دسترسی: فقط main_admin Access: main_admin only

پارامترهای ورودی Input Parameters

این اندپوینت پارامتر ورودی ندارد (به‌جز هدر X-API-KEY و پارامترهای مسیر). This endpoint has no input parameters (except X-API-KEY header and path params).

مثال‌های cURL (۳ نمونه) cURL Examples (3)

دریافت PSK Get PSK
cURL
curl -s "http://YOUR_PANEL_DOMAIN/api/v1/server_settings" \
  -H "X-API-KEY: YOUR_MAIN_ADMIN_API_KEY" 
Response
{
  "success": true,
  "settings": {
    "ipsec_psk": "EylanPanelKey123"
  }
}
عدم دسترسی sub-admin Denied for sub-admin
cURL
curl -s "http://YOUR_PANEL_DOMAIN/api/v1/server_settings" \
  -H "X-API-KEY: YOUR_SUB_ADMIN_API_KEY" 
Response
{
  "success": false,
  "message": "Permission denied: Main admin API key required."
}
API Key نامعتبر Invalid API key
cURL
curl -s "http://YOUR_PANEL_DOMAIN/api/v1/server_settings" \
  -H "X-API-KEY: INVALID_KEY" 
Response
{
  "success": false,
  "message": "Invalid or inactive API key"
}
POST /api/v1/update_ipsec_psk
API Key

به‌روزرسانی PSK برای IPsec روی سرور اصلی و تلاش برای اعمال روی نودها. فقط main_admin. مقدار PSK نباید خالی باشد و نباید شامل کوتیشن دابل (") باشد. Update IPsec PSK on main server and attempt to apply on nodes. Main-admin only. PSK must be non-empty and must not contain double quotes (").

سطح دسترسی: فقط main_admin Access: main_admin only

پارامترهای ورودی Input Parameters

new_psk
String
Required
PSK جدید. New PSK.

مثال‌های cURL (۳ نمونه) cURL Examples (3)

آپدیت PSK Update PSK
cURL
curl -s -X POST "http://YOUR_PANEL_DOMAIN/api/v1/update_ipsec_psk" \
  -H "X-API-KEY: YOUR_MAIN_ADMIN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "new_psk": "MyNewSecurePSK_2026"
}'
Response
{
  "success": true,
  "message": "IPsec PSK updated locally and on 2 nodes."
}
خطای PSK نامعتبر (خالی یا شامل ") Invalid PSK (empty or contains ")
cURL
curl -s -X POST "http://YOUR_PANEL_DOMAIN/api/v1/update_ipsec_psk" \
  -H "X-API-KEY: YOUR_MAIN_ADMIN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "new_psk": ""
}'
Response
{
  "success": false,
  "message": "Invalid PSK. Cannot be empty or contain double quotes."
}
عدم دسترسی sub-admin Denied for sub-admin
cURL
curl -s -X POST "http://YOUR_PANEL_DOMAIN/api/v1/update_ipsec_psk" \
  -H "X-API-KEY: YOUR_SUB_ADMIN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "new_psk": "X"
}'
Response
{
  "success": false,
  "message": "Permission denied: Main admin API key required."
}

API مخصوص رباتBot Integration API

ابزارهای کمکی برای توسعه ربات‌های تلگرام و پنل‌های نمایندگی Helper tools for Telegram bots and Reseller panels development

GET /api/v1/public/all_selectable_servers
API Key

لیست کامل سرورهای قابل انتخاب برای نمایندگان (برای پر کردن فیلد allowed_servers). فقط main_admin. Return all selectable servers for sub-admin creation (used for allowed_servers). Main-admin only.

سطح دسترسی: فقط main_admin Access: main_admin only

پارامترهای ورودی Input Parameters

این اندپوینت پارامتر ورودی ندارد (به‌جز هدر X-API-KEY و پارامترهای مسیر). This endpoint has no input parameters (except X-API-KEY header and path params).

مثال‌های cURL (۳ نمونه) cURL Examples (3)

دریافت لیست سرورها Get selectable servers
cURL
curl -s "http://YOUR_PANEL_DOMAIN/api/v1/public/all_selectable_servers" \
  -H "X-API-KEY: YOUR_MAIN_ADMIN_API_KEY" 
Response
{
  "success": true,
  "servers": [
    {
      "id": "main",
      "name": "Main Server"
    },
    {
      "id": "node_1",
      "name": "Node: Node A"
    }
  ]
}
عدم دسترسی sub-admin Denied for sub-admin
cURL
curl -s "http://YOUR_PANEL_DOMAIN/api/v1/public/all_selectable_servers" \
  -H "X-API-KEY: YOUR_SUB_ADMIN_API_KEY" 
Response
{
  "success": false,
  "message": "Permission denied: Main admin API key required."
}
API Key نامعتبر Invalid API key
cURL
curl -s "http://YOUR_PANEL_DOMAIN/api/v1/public/all_selectable_servers" \
  -H "X-API-KEY: INVALID_KEY" 
Response
{
  "success": false,
  "message": "Invalid or inactive API key"
}