PasarGuard
Нод

Справочник API

Текущий справочник REST API и gRPC для PasarGuard Node

Обзор API

PasarGuard Node предоставляет интерфейсы REST API и gRPC. В REST тело запросов и ответов сериализуется через Protocol Buffers; поток логов возвращается как Server-Sent Events.

Аутентификация

Все запросы требуют API_KEY ноды.

Authorization: Bearer <api_key>

Для gRPC передайте то же значение как metadata:

authorization: Bearer <api_key>

Базовый URL

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. Остальные REST endpoint'ы требуют активного 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-статистика backendGET /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 — email пользователя или тег 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 и затем protobuf payload. Чанки собираются по index; чанк с last = true завершает передачу.

/users/sync заменяет весь набор пользователей. В chunked sync большие batch'и могут перезапустить backend после обновления пользователей в памяти.

Ошибки

REST возвращает обычные HTTP ошибки с подходящим status code. gRPC использует стандартные gRPC status code.

КодЗначение
400Неверное protobuf-тело или данные запроса
401API_KEY отсутствует или неверен
404Цель статистики не найдена
500Ошибка backend или сервера
503Ошибка запуска backend или listener