Добавил АПИ функцию которая возвращает информацию о версии сервера и о том что он работает
5.3 KiB
5.3 KiB
API для разработчиков: Технические запросы
Этот файл описывает технические запросы, которые не требуют авторизации и нужны для служебной работы клиента с сервером.
Сейчас здесь два метода:
Ping— keep-alive запрос для поддержания живого WebSocket-соединения;GetServerInfo— запрос базовой публичной информации о сервере для выбора узла в децентрализованной сети.
Логика раздела такая:
Pingнужен для регулярной проверки, что соединение всё ещё живо;GetServerInfoнужен до авторизации и до работы с данными, чтобы клиент понял, что сервер доступен, и показал пользователю краткую карточку этого узла.
Ниже сначала описаны назначение методов, затем точные форматы запросов и ответов.
1. Ping
Назначение
Служебный keep-alive запрос.
Клиент может отправлять его периодически, чтобы:
- поддерживать активное WebSocket-соединение;
- понимать, что сервер отвечает;
- при необходимости получать текущее серверное время.
Запрос
{
"op": "Ping",
"requestId": "ping-001",
"payload": {
"ts": 1774700000123
}
}
Поле ts в запросе необязательно для логики сервера. Сервер его не валидирует и не использует для принятия решения.
Успешный ответ
{
"op": "Ping",
"requestId": "ping-001",
"status": 200,
"ok": true,
"payload": {
"ts": 1774700000456
}
}
Специфические коды ошибок Ping
- У
Pingнет специальных прикладных ошибок. - Если произойдёт непредвиденная проблема, сервер вернёт общую ошибку из раздела
00, обычно500 / INTERNAL_ERROR.
2. GetServerInfo
Назначение
Запрос публичной информации о сервере.
Он нужен клиенту для выбора сервера в децентрализованной сети. По этому запросу клиент может:
- проверить, что сервер вообще доступен;
- показать URL и версию сервера;
- показать физический регион или адрес размещения;
- показать описание сервера;
- показать поле
originкак комментарий о природе этого узла; - показать дополнительную текстовую информацию.
Этот запрос доступен без авторизации.
Источник данных
versionберётся из Gradle build и подставляется вapplication.properties;- остальные поля читаются из настроек сервера;
- если значение в конфиге не задано, сервер возвращает пустую строку.
Запрос
{
"op": "GetServerInfo",
"requestId": "srv-001",
"payload": {
}
}
Успешный ответ
{
"op": "GetServerInfo",
"requestId": "srv-001",
"status": 200,
"ok": true,
"payload": {
"url": "wss://node.example.org/ws",
"version": "1.0",
"physicalRegion": "Грузия, Тбилиси",
"description": "Public community SHiNE node",
"origin": "Community-operated node",
"extraInfo": "IPv4 + IPv6; test federation enabled"
}
}
Поля ответа
url— публичный URL сервера.version— версия сервера из Gradle build.physicalRegion— физический регион или адрес размещения сервера.description— человекочитаемое описание сервера.origin— комментарий о том, какой это сервер.extraInfo— любая дополнительная информация о сервере.
Специфические коды ошибок GetServerInfo
- У
GetServerInfoнет специальных прикладных ошибок при штатной работе. - Если произойдёт непредвиденная проблема, сервер вернёт общую ошибку из раздела
00, обычно500 / INTERNAL_ERROR.
3. Короткое резюме
Pingнужен для keep-alive и проверки, что WebSocket-соединение живо.GetServerInfoнужен для выбора сервера в сети и показа публичной информации об узле.- Оба запроса доступны без авторизации.