API / Справочник методов / Управление сервером
Управление сервером
Состояние, питание, консоль, игроки, параметры, доступы.
Адрес:
https://sourhost.net/api/v1·Авторизация: Authorization: Bearer sh_live_…GET
/projects/:id/services/:serviceId/stats— Состояние и нагрузкаPOST/projects/:id/services/:serviceId/power— Старт, стоп, рестартPOST/projects/:id/services/:serviceId/command— Команда в консольGET/projects/:id/services/:serviceId/console/log— Лог консолиGET/projects/:id/services/:serviceId/players— Игроки онлайнGET/projects/:id/services/:serviceId/variables— Параметры запускаPATCH/projects/:id/services/:serviceId/variables— Изменить параметры запускаPATCH/projects/:id/services/:serviceId— ПереименоватьPOST/projects/:id/services/:serviceId/port— Сменить портPOST/projects/:id/services/:serviceId/reinstall— ПереустановитьGET/projects/:id/services/:serviceId/console— Подключение к консолиGET/projects/:id/services/:serviceId/sftp— Данные SFTPGET/projects/:id/services/:serviceId/access— Кто имеет доступPOST/projects/:id/services/:serviceId/access— Выдать доступDELETE/projects/:id/services/:serviceId/access/:memberId— Забрать доступGET
/projects/:id/services/:serviceId/statsСостояние и нагрузка
Право:
servers:readПараметры
idобязательный | path · string | Номер проекта (из GET /projects) или тикета |
serviceIdобязательный | path · string | Номер услуги (из GET /projects/:id/services) |
Пример запроса
curl "https://sourhost.net/api/v1/projects/12/services/34/stats" \
-H "Authorization: Bearer $SOURHOST_TOKEN"Ответ
HTTP
HTTP/2 200 OK
{
"powerState": "running",
"cpuPercent": 37.5,
"memoryBytes": 2147483648,
"diskBytes": 8589934592,
"uptimeMs": 5400000
}POST
/projects/:id/services/:serviceId/powerСтарт, стоп, рестарт
Право:
servers:powerПараметры
idобязательный | path · string | Номер проекта (из GET /projects) или тикета |
serviceIdобязательный | path · string | Номер услуги (из GET /projects/:id/services) |
signalобязательный | body · string | start, stop, restart или kill |
Пример запроса
curl -X POST "https://sourhost.net/api/v1/projects/12/services/34/power" \
-H "Authorization: Bearer $SOURHOST_TOKEN" \
-H "Content-Type: application/json" \
-d '{"signal":"restart"}'Ответ
204 Пустой ответ
POST
/projects/:id/services/:serviceId/commandКоманда в консоль
Право:
servers:consoleПараметры
idобязательный | path · string | Номер проекта (из GET /projects) или тикета |
serviceIdобязательный | path · string | Номер услуги (из GET /projects/:id/services) |
commandобязательный | body · string | Одна строка до 512 символов |
Пример запроса
curl -X POST "https://sourhost.net/api/v1/projects/12/services/34/command" \
-H "Authorization: Bearer $SOURHOST_TOKEN" \
-H "Content-Type: application/json" \
-d '{"command":"changelevel de_dust2"}'Ответ
204 Пустой ответ
Ошибки метода
| 409 | server_offline | Сервер не запущен |
| 400 | command_invalid | Пустая, многострочная или длиннее 512 |
GET
/projects/:id/services/:serviceId/console/logЛог консоли
Право:
servers:consoleПараметры
idобязательный | path · string | Номер проекта (из GET /projects) или тикета |
serviceIdобязательный | path · string | Номер услуги (из GET /projects/:id/services) |
lines | query · number | Сколько последних строк, 1–500 (по умолчанию 100) |
Пример запроса
curl "https://sourhost.net/api/v1/projects/12/services/34/console/log?lines=50" \
-H "Authorization: Bearer $SOURHOST_TOKEN"Ответ
HTTP
HTTP/2 200 OK
{
"lines": [
"Server is hibernating",
"Player alice connected",
"changelevel de_dust2"
]
}GET
/projects/:id/services/:serviceId/playersИгроки онлайн
Тот же запрос, что делает браузер серверов. Ответ кешируется на 10 секунд.
Право:
servers:readПараметры
idобязательный | path · string | Номер проекта (из GET /projects) или тикета |
serviceIdобязательный | path · string | Номер услуги (из GET /projects/:id/services) |
Пример запроса
curl "https://sourhost.net/api/v1/projects/12/services/34/players" \
-H "Authorization: Bearer $SOURHOST_TOKEN"Ответ
HTTP
HTTP/2 200 OK
{
"info": {
"name": "Retake #1",
"map": "de_dust2",
"players": 2,
"maxPlayers": 16,
"bots": 0,
"password": false,
"vac": true,
"version": "1.40.0.0"
},
"players": [
{
"name": "alice",
"score": 12,
"durationSeconds": 1830
}
],
"pingMs": 14
}Ошибки метода
| 409 | server_offline | Сервер не запущен |
GET
/projects/:id/services/:serviceId/variablesПараметры запуска
Право:
servers:readПараметры
idобязательный | path · string | Номер проекта (из GET /projects) или тикета |
serviceIdобязательный | path · string | Номер услуги (из GET /projects/:id/services) |
Пример запроса
curl "https://sourhost.net/api/v1/projects/12/services/34/variables" \
-H "Authorization: Bearer $SOURHOST_TOKEN"Ответ
204 Пустой ответ
PATCH
/projects/:id/services/:serviceId/variablesИзменить параметры запуска
Применяются при следующем запуске.
Право:
servers:manageПараметры
idобязательный | path · string | Номер проекта (из GET /projects) или тикета |
serviceIdобязательный | path · string | Номер услуги (из GET /projects/:id/services) |
Пример запроса
curl -X PATCH "https://sourhost.net/api/v1/projects/12/services/34/variables" \
-H "Authorization: Bearer $SOURHOST_TOKEN" \
-H "Content-Type: application/json" \
-d '{"variables":{"MAXPLAYERS":"24","MAP":"de_mirage"}}'Ответ
204 Пустой ответ
PATCH
/projects/:id/services/:serviceIdПереименовать
Право:
servers:manageПараметры
idобязательный | path · string | Номер проекта (из GET /projects) или тикета |
serviceIdобязательный | path · string | Номер услуги (из GET /projects/:id/services) |
Пример запроса
curl -X PATCH "https://sourhost.net/api/v1/projects/12/services/34" \
-H "Authorization: Bearer $SOURHOST_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"Retake #2"}'Ответ
204 Пустой ответ
POST
/projects/:id/services/:serviceId/portСменить порт
Только на сервере со своим выделенным IP.
Право:
servers:manageПараметры
idобязательный | path · string | Номер проекта (из GET /projects) или тикета |
serviceIdобязательный | path · string | Номер услуги (из GET /projects/:id/services) |
Пример запроса
curl -X POST "https://sourhost.net/api/v1/projects/12/services/34/port" \
-H "Authorization: Bearer $SOURHOST_TOKEN" \
-H "Content-Type: application/json" \
-d '{"port":27016}'Ответ
204 Пустой ответ
POST
/projects/:id/services/:serviceId/reinstallПереустановить
Удаляет все файлы сервера и ставит игру заново.
Право:
servers:manageПараметры
idобязательный | path · string | Номер проекта (из GET /projects) или тикета |
serviceIdобязательный | path · string | Номер услуги (из GET /projects/:id/services) |
Пример запроса
curl -X POST "https://sourhost.net/api/v1/projects/12/services/34/reinstall" \
-H "Authorization: Bearer $SOURHOST_TOKEN"Ответ
204 Пустой ответ
GET
/projects/:id/services/:serviceId/consoleПодключение к консоли
Адрес websocket консоли ноды и токен к нему (живёт ~10 минут).
Право:
servers:consoleПараметры
idобязательный | path · string | Номер проекта (из GET /projects) или тикета |
serviceIdобязательный | path · string | Номер услуги (из GET /projects/:id/services) |
Пример запроса
curl "https://sourhost.net/api/v1/projects/12/services/34/console" \
-H "Authorization: Bearer $SOURHOST_TOKEN"Ответ
HTTP
HTTP/2 200 OK
{
"token": "eyJ0eXAiOiJKV1Qi…",
"socket": "wss://de-n3.sourhost.net:8080/api/servers/1a2b3c4d/ws"
}GET
/projects/:id/services/:serviceId/sftpДанные SFTP
Право:
servers:accessПараметры
idобязательный | path · string | Номер проекта (из GET /projects) или тикета |
serviceIdобязательный | path · string | Номер услуги (из GET /projects/:id/services) |
Пример запроса
curl "https://sourhost.net/api/v1/projects/12/services/34/sftp" \
-H "Authorization: Bearer $SOURHOST_TOKEN"Ответ
HTTP
HTTP/2 200 OK
{
"host": "de-n3.sourhost.net",
"port": 2022,
"username": "you.1a2b3c4d",
"access": true
}GET
/projects/:id/services/:serviceId/accessКто имеет доступ
Право:
servers:readПараметры
idобязательный | path · string | Номер проекта (из GET /projects) или тикета |
serviceIdобязательный | path · string | Номер услуги (из GET /projects/:id/services) |
Пример запроса
curl "https://sourhost.net/api/v1/projects/12/services/34/access" \
-H "Authorization: Bearer $SOURHOST_TOKEN"Ответ
204 Пустой ответ
POST
/projects/:id/services/:serviceId/accessВыдать доступ
Право:
servers:accessПараметры
idобязательный | path · string | Номер проекта (из GET /projects) или тикета |
serviceIdобязательный | path · string | Номер услуги (из GET /projects/:id/services) |
Пример запроса
curl -X POST "https://sourhost.net/api/v1/projects/12/services/34/access" \
-H "Authorization: Bearer $SOURHOST_TOKEN" \
-H "Content-Type: application/json" \
-d '{"email":"[email protected]"}'Ответ
204 Пустой ответ
DELETE
/projects/:id/services/:serviceId/access/:memberIdЗабрать доступ
Право:
servers:accessПараметры
idобязательный | path · string | Номер проекта (из GET /projects) или тикета |
serviceIdобязательный | path · string | Номер услуги (из GET /projects/:id/services) |
memberIdобязательный | path · string | ID участника (из списка) |
Пример запроса
curl -X DELETE "https://sourhost.net/api/v1/projects/12/services/34/access/9" \
-H "Authorization: Bearer $SOURHOST_TOKEN"Ответ
204 Пустой ответ
Общие ошибки
Любой метод может ответить так. Подробнее об ошибках
| 400 | bad_request | Неверное тело или параметры |
| 401 | token_invalid | Токен неверный, отозван или просрочен |
| 403 | token_scope_missing | У токена нет нужного права |
| 403 | token_project_forbidden | Проект или услуга вне ограничений токена |
| 404 | not_found | Нет такого проекта, услуги или объекта |
| 429 | token_rate_limited | Слишком много запросов, см. Retry-After |
| 503 | upstream_unavailable | Панель или нода не ответили — повторите позже |