API / Довідник методів / Керування сервером

Керування сервером

Стан, живлення, консоль, гравці, параметри, доступи.

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 · stringstart, 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 Порожня відповідь
Помилки методу
409server_offlineСервер не запущено
400command_invalidПорожня, багаторядкова або довша за 512
GET/projects/:id/services/:serviceId/console/log

Лог консолі

Право: servers:console
Параметри
idобовʼязковийpath · stringНомер проєкту (з GET /projects) або тікета
serviceIdобовʼязковийpath · stringНомер послуги (з GET /projects/:id/services)
linesquery · 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
}
Помилки методу
409server_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 · stringID учасника (зі списку)
Приклад запиту
curl -X DELETE "https://sourhost.net/api/v1/projects/12/services/34/access/9" \
  -H "Authorization: Bearer $SOURHOST_TOKEN"
Відповідь
204 Порожня відповідь

Загальні помилки

Будь-який метод може відповісти так. Докладніше про помилки

400bad_requestНевірне тіло чи параметри
401token_invalidТокен невірний, відкликаний або прострочений
403token_scope_missingУ токена немає потрібного права
403token_project_forbiddenПроєкт чи послуга поза обмеженнями токена
404not_foundНемає такого проєкту, послуги чи об’єкта
429token_rate_limitedЗабагато запитів, див. Retry-After
503upstream_unavailableПанель або нода не відповіли — повторіть пізніше