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