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