پاسارگارد
نود

راهنمای API

راهنمای فعلی REST API و gRPC برای نود PasarGuard

معرفی API

نود PasarGuard هم REST API و هم gRPC ارائه می‌دهد. در REST، بدنه درخواست‌ها و پاسخ‌ها با Protocol Buffers سریال‌سازی می‌شوند؛ فقط استریم لاگ‌ها با Server-Sent Events ارسال می‌شود.

احراز هویت

همه درخواست‌ها به API_KEY نود نیاز دارند.

Authorization: Bearer <api_key>

در gRPC همین مقدار را به‌عنوان metadata بفرستید:

authorization: Bearer <api_key>

آدرس پایه

https://your-node-address:port/

نوع محتوا

Content-Type: application/x-protobuf

ساختارهای داده

enum BackendType {
  XRAY = 0;
  WIREGUARD = 1;
}

message Backend {
  BackendType type = 1;
  string config = 2;
  repeated User users = 3;
  uint64 keep_alive = 4;
  repeated string exclude_inbounds = 5;
}

message User {
  string email = 1;
  Proxy proxies = 2;
  repeated string inbounds = 3;
}

message Proxy {
  Vmess vmess = 1;
  Vless vless = 2;
  Trojan trojan = 3;
  Shadowsocks shadowsocks = 4;
  Wireguard wireguard = 5;
  Hysteria hysteria = 6;
}

مدیریت نود

عملیاتRESTgRPCبدنهپاسخ
شروع backendPOST /startStart(Backend)BackendBaseInfoResponse
توقف backendPUT /stopStop(Empty)نداردEmpty
اطلاعات پایهGET /infoGetBaseInfo(Empty)نداردBaseInfoResponse
message BaseInfoResponse {
  bool started = 1;
  string core_version = 2;
  string node_version = 3;
}

/start و /info قبل از اجرای backend هم در دسترس هستند. بقیه endpointهای REST به backend فعال نیاز دارند.

لاگ‌ها

عملیاتRESTgRPCپاسخ
استریم لاگ backendGET /logsGetLogs(Empty)استریم Log

در REST، لاگ‌ها با text/event-stream برگردانده می‌شوند.

آمارها

عملیاتRESTgRPCبدنهپاسخ
آمار ترافیکGET /stats/GetStats(StatRequest)StatRequestStatResponse
latency خروجی‌هاGET /stats/latencyGetOutboundsLatency(LatencyRequest)LatencyRequestLatencyResponse
تعداد اتصال آنلاین کاربرGET /stats/user/onlineGetUserOnlineStats(StatRequest)StatRequestOnlineStatResponse
لیست IPهای آنلاین کاربرGET /stats/user/online_ipGetUserOnlineIpListStats(StatRequest)StatRequestStatsOnlineIpListResponse
آمار runtime بک‌اندGET /stats/backendGetBackendStats(Empty)نداردBackendStatsResponse
آمار سیستمGET /stats/systemGetSystemStats(Empty)نداردSystemStatsResponse
message StatRequest {
  string name = 1;
  bool reset = 2;
  StatType type = 3;
}

message LatencyRequest {
  string name = 1;
}

StatRequest.name ایمیل کاربر یا تگ inbound/outbound است. اگر می‌خواهید شمارنده‌ها بعد از خواندن پاک شوند، reset را true بفرستید.

همگام‌سازی کاربران

عملیاتRESTgRPCبدنه
همگام‌سازی یک کاربرPUT /user/syncSyncUser(stream User)User
همگام‌سازی کاربرانPUT /users/syncSyncUsers(Users)Users
همگام‌سازی chunked کاربرانPUT /users/sync/chunkedSyncUsersChunked(stream UsersChunk)استریم UsersChunk
message Users {
  repeated User users = 1;
}

message UsersChunk {
  repeated User users = 1;
  uint64 index = 2;
  bool last = 3;
}

در REST chunked sync، هر پیام UsersChunk با طول uvarint و سپس payload پروتوباف ارسال می‌شود. chunkها با index مرتب می‌شوند و chunk دارای last = true پایان ارسال را مشخص می‌کند.

/users/sync کل لیست کاربران را جایگزین می‌کند. در chunked sync، batchهای بزرگ ممکن است بعد از به‌روزرسانی کاربران در حافظه، backend را restart کنند.

خطاها

REST خطاها را با status code مناسب HTTP برمی‌گرداند. gRPC از status codeهای استاندارد gRPC استفاده می‌کند.

کدمعنی
400بدنه protobuf یا داده درخواست نامعتبر است
401API_KEY وجود ندارد یا نامعتبر است
404هدف آماری پیدا نشد
500خطای backend یا سرور
503خطا در شروع backend یا listener