# API Настройка API предоставляет API-интерфейсы на основе [gRPC](https://grpc.io/) для удаленного вызова. Интерфейсы можно включить с помощью модуля конфигурации api. Когда API включен, Xray создает исходящее подключение с тем же тегом, что и тег API. Необходимо вручную направить все входящие API-подключения на это исходящее подключение с помощью [правил маршрутизации](./routing.md). См. раздел [Связанные настройки](#связанные-настройки) в этом документе. Начиная с версии [v1.8.12](https://github.com/XTLS/Xray-core/releases/tag/v1.8.12) поддерживается упрощенный режим настройки, в котором достаточно указать только ApiObject, без необходимости настройки inbounds и routing. Однако при использовании упрощенной настройки статистика трафика не учитывает трафик входящих API-подключений. ::: warning Большинству пользователей не нужен этот API, новички могут просто пропустить этот раздел. ::: ## ApiObject `ApiObject` соответствует полю `api` в конфигурационном файле. ```json { "api": { "tag": "api", "listen": "127.0.0.1:8080", "services": ["HandlerService", "LoggerService", "StatsService", "RoutingService"] } } ``` > `tag`: string Тег исходящего подключения. > `listen`: string IP-адрес и порт, на котором прослушивает API-сервер. Это необязательный параметр. Если этот параметр опущен, необходимо добавить настройки inbounds и routing, как показано в примере в разделе [Связанные настройки](#связанные-настройки). > `services`: \[string\] Список включенных API. Доступные значения см. в разделе [Список API](#список-поддерживаемых-api). ## Связанные настройки Можно добавить входящее подключение api в раздел inbounds: ```json "inbounds": [ { "listen": "127.0.0.1", "port": 10085, "protocol": "dokodemo-door", "settings": { "address": "127.0.0.1" }, "tag": "api" } ] ``` Добавить правило маршрутизации для входящего подключения api в раздел routing: ```json "routing": { "rules": [ { "inboundTag": [ "api" ], "outboundTag": "api", "type": "field" } ] } ``` Добавить api в основные настройки: ```json "api": { "tag": "api", "services": [ "StatsService" ] } ``` ## Список поддерживаемых API ### HandlerService API для изменения входящих и исходящих подключений. Доступны следующие функции: - Добавление нового входящего подключения; - Добавление нового исходящего подключения; - Удаление существующего входящего подключения; - Удаление существующего исходящего подключения; - Добавление пользователя к входящему подключению (поддерживается только для VMess, VLESS, Trojan, Shadowsocks (v1.3.0+)); - Удаление пользователя из входящего подключения (поддерживается только для VMess, VLESS, Trojan, Shadowsocks (v1.3.0+)); ### RoutingService API для добавления, удаления, замены правил маршрутизации и запроса статистики балансировщика. Доступны следующие функции: - adrules - добавление или замена правил маршрутизации; - rmrules - удаление правил маршрутизации; - sib - разрыв соединений с указанного IP-адреса; - bi - запрос статистики балансировщика; - bo - принудительное переключение балансировщика на указанный outboundTag. Конкретное использование можно узнать с помощью команды `./xray help api bi`. ### LoggerService Поддержка перезапуска встроенного логгера. Можно использовать совместно с logrotate для управления файлами журналов. ### StatsService Встроенная служба статистики данных. См. [Статистика](./stats.md). ### ReflectionService Позволяет gRPC-клиентам получать список API сервера. ```bash $ grpcurl -plaintext localhost:10085 list grpc.reflection.v1alpha.ServerReflection v2ray.core.app.proxyman.command.HandlerService v2ray.core.app.stats.command.StatsService xray.app.proxyman.command.HandlerService xray.app.stats.command.StatsService ``` ## Примеры вызова API [Xray-API-documents](https://github.com/XTLS/Xray-API-documents) @crossfw