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 | Панель або нода не відповіли — повторіть пізніше |