API / Справочник методов / Бэкапы и расписание

Бэкапы и расписание

Бэкапы и задачи по расписанию.

GET/projects/:id/services/:serviceId/backups

Список бэкапов

Право: servers:read
Параметры
idобязательныйpath · stringНомер проекта (из GET /projects) или тикета
serviceIdобязательныйpath · stringНомер услуги (из GET /projects/:id/services)
Пример запроса
curl "https://sourhost.net/api/v1/projects/12/services/34/backups" \
  -H "Authorization: Bearer $SOURHOST_TOKEN"
Ответ
HTTP
HTTP/2 200 OK
{
  "items": [
    {
      "id": "2f6c1a9e-4b7d-4c1e-9a3b-6d5e8f7a1b2c",
      "name": "Перед турниром",
      "isSuccessful": true,
      "isLocked": true,
      "bytes": 734003200,
      "createdAt": "2026-11-10T02:00:00Z",
      "completedAt": "2026-11-10T02:03:12Z"
    }
  ]
}
POST/projects/:id/services/:serviceId/backups

Создать бэкап

Создаётся в фоне. При лимите заменяется самый старый незакреплённый.

Право: servers:backups
Параметры
idобязательныйpath · stringНомер проекта (из GET /projects) или тикета
serviceIdобязательныйpath · stringНомер услуги (из GET /projects/:id/services)
Пример запроса
curl -X POST "https://sourhost.net/api/v1/projects/12/services/34/backups" \
  -H "Authorization: Bearer $SOURHOST_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name":"Перед обновлением","isLocked":false}'
Ответ
204 Пустой ответ
POST/projects/:id/services/:serviceId/backups/:backupId/restore

Восстановить бэкап

Текущие файлы сервера заменяются файлами бэкапа.

Право: servers:backups
Параметры
idобязательныйpath · stringНомер проекта (из GET /projects) или тикета
serviceIdобязательныйpath · stringНомер услуги (из GET /projects/:id/services)
backupIdобязательныйpath · stringID бэкапа (из списка бэкапов)
Пример запроса
curl -X POST "https://sourhost.net/api/v1/projects/12/services/34/backups/2f6c1a9e-4b7d-4c1e-9a3b-6d5e8f7a1b2c/restore" \
  -H "Authorization: Bearer $SOURHOST_TOKEN"
Ответ
204 Пустой ответ
GET/projects/:id/services/:serviceId/backups/:backupId/download

Ссылка на скачивание

Право: servers:backups
Параметры
idобязательныйpath · stringНомер проекта (из GET /projects) или тикета
serviceIdобязательныйpath · stringНомер услуги (из GET /projects/:id/services)
backupIdобязательныйpath · stringID бэкапа (из списка бэкапов)
Пример запроса
curl "https://sourhost.net/api/v1/projects/12/services/34/backups/2f6c1a9e-4b7d-4c1e-9a3b-6d5e8f7a1b2c/download" \
  -H "Authorization: Bearer $SOURHOST_TOKEN"
Ответ
HTTP
HTTP/2 200 OK
{
  "url": "https://de-n3.sourhost.net:8080/download/backup?token=…"
}
POST/projects/:id/services/:serviceId/backups/:backupId/lock

Закрепить / открепить

Право: servers:backups
Параметры
idобязательныйpath · stringНомер проекта (из GET /projects) или тикета
serviceIdобязательныйpath · stringНомер услуги (из GET /projects/:id/services)
backupIdобязательныйpath · stringID бэкапа (из списка бэкапов)
Пример запроса
curl -X POST "https://sourhost.net/api/v1/projects/12/services/34/backups/2f6c1a9e-4b7d-4c1e-9a3b-6d5e8f7a1b2c/lock" \
  -H "Authorization: Bearer $SOURHOST_TOKEN"
Ответ
204 Пустой ответ
PUT/projects/:id/services/:serviceId/backups/:backupId/rename

Переименовать бэкап

Право: servers:backups
Параметры
idобязательныйpath · stringНомер проекта (из GET /projects) или тикета
serviceIdобязательныйpath · stringНомер услуги (из GET /projects/:id/services)
backupIdобязательныйpath · stringID бэкапа (из списка бэкапов)
Пример запроса
curl -X PUT "https://sourhost.net/api/v1/projects/12/services/34/backups/2f6c1a9e-4b7d-4c1e-9a3b-6d5e8f7a1b2c/rename" \
  -H "Authorization: Bearer $SOURHOST_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name":"Финал"}'
Ответ
204 Пустой ответ
DELETE/projects/:id/services/:serviceId/backups/:backupId

Удалить бэкап

Право: servers:backups
Параметры
idобязательныйpath · stringНомер проекта (из GET /projects) или тикета
serviceIdобязательныйpath · stringНомер услуги (из GET /projects/:id/services)
backupIdобязательныйpath · stringID бэкапа (из списка бэкапов)
Пример запроса
curl -X DELETE "https://sourhost.net/api/v1/projects/12/services/34/backups/2f6c1a9e-4b7d-4c1e-9a3b-6d5e8f7a1b2c" \
  -H "Authorization: Bearer $SOURHOST_TOKEN"
Ответ
204 Пустой ответ
GET/projects/:id/services/:serviceId/cron

Задачи по расписанию

Право: servers:read
Параметры
idобязательныйpath · stringНомер проекта (из GET /projects) или тикета
serviceIdобязательныйpath · stringНомер услуги (из GET /projects/:id/services)
Пример запроса
curl "https://sourhost.net/api/v1/projects/12/services/34/cron" \
  -H "Authorization: Bearer $SOURHOST_TOKEN"
Ответ
HTTP
HTTP/2 200 OK
{
  "items": [
    {
      "id": "5",
      "name": "Ночной рестарт",
      "action": "restart",
      "command": "",
      "isActive": true,
      "onlyWhenOnline": false,
      "minute": "0",
      "hour": "5",
      "dayOfMonth": "*",
      "month": "*",
      "dayOfWeek": "*",
      "lastRunAt": "2026-11-11T05:00:00+02:00",
      "nextRunAt": "2026-11-12T05:00:00+02:00"
    }
  ]
}
POST/projects/:id/services/:serviceId/cron

Создать задачу

Право: servers:cron
Параметры
idобязательныйpath · stringНомер проекта (из GET /projects) или тикета
serviceIdобязательныйpath · stringНомер услуги (из GET /projects/:id/services)
nameобязательныйbody · stringНазвание задачи
actionобязательныйbody · stringstart, stop, restart или command
commandbody · stringКоманда в консоль, если action = command
minute / hour / dayOfMonth / month / dayOfWeekобязательныйbody · stringПоля cron в часовом поясе аккаунта; * — любое
isActive / onlyWhenOnlinebody · booleanВключена ли задача; только при запущенном сервере
Пример запроса
curl -X POST "https://sourhost.net/api/v1/projects/12/services/34/cron" \
  -H "Authorization: Bearer $SOURHOST_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name":"Ночной рестарт","action":"restart","command":"","isActive":true,"onlyWhenOnline":false,"minute":"0","hour":"5","dayOfMonth":"*","month":"*","dayOfWeek":"*"}'
Ответ
204 Пустой ответ
PATCH/projects/:id/services/:serviceId/cron/:cronId

Изменить задачу

Право: servers:cron
Параметры
idобязательныйpath · stringНомер проекта (из GET /projects) или тикета
serviceIdобязательныйpath · stringНомер услуги (из GET /projects/:id/services)
cronIdобязательныйpath · stringID задачи (из списка задач)
nameобязательныйbody · stringНазвание задачи
actionобязательныйbody · stringstart, stop, restart или command
commandbody · stringКоманда в консоль, если action = command
minute / hour / dayOfMonth / month / dayOfWeekобязательныйbody · stringПоля cron в часовом поясе аккаунта; * — любое
isActive / onlyWhenOnlinebody · booleanВключена ли задача; только при запущенном сервере
Пример запроса
curl -X PATCH "https://sourhost.net/api/v1/projects/12/services/34/cron/5" \
  -H "Authorization: Bearer $SOURHOST_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name":"Ночной рестарт","action":"restart","command":"","isActive":true,"onlyWhenOnline":false,"minute":"0","hour":"6","dayOfMonth":"*","month":"*","dayOfWeek":"*"}'
Ответ
204 Пустой ответ
DELETE/projects/:id/services/:serviceId/cron/:cronId

Удалить задачу

Право: servers:cron
Параметры
idобязательныйpath · stringНомер проекта (из GET /projects) или тикета
serviceIdобязательныйpath · stringНомер услуги (из GET /projects/:id/services)
cronIdобязательныйpath · stringID задачи (из списка задач)
Пример запроса
curl -X DELETE "https://sourhost.net/api/v1/projects/12/services/34/cron/5" \
  -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Панель или нода не ответили — повторите позже