API / Довідник методів / Бекапи й розклад
Бекапи й розклад
Бекапи й завдання за розкладом.
Адреса:
https://sourhost.net/api/v1·Авторизація: Authorization: Bearer sh_live_…GET
/projects/:id/services/:serviceId/backups— Список бекапівPOST/projects/:id/services/:serviceId/backups— Створити бекапPOST/projects/:id/services/:serviceId/backups/:backupId/restore— Відновити бекапGET/projects/:id/services/:serviceId/backups/:backupId/download— Посилання на завантаженняPOST/projects/:id/services/:serviceId/backups/:backupId/lock— Закріпити / відкріпитиPUT/projects/:id/services/:serviceId/backups/:backupId/rename— Перейменувати бекапDELETE/projects/:id/services/:serviceId/backups/:backupId— Видалити бекапGET/projects/:id/services/:serviceId/cron— Завдання за розкладомPOST/projects/:id/services/:serviceId/cron— Створити завданняPATCH/projects/:id/services/:serviceId/cron/:cronId— Змінити завданняDELETE/projects/:id/services/:serviceId/cron/:cronId— Видалити завдання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 · string | ID бекапу (зі списку бекапів) |
Приклад запиту
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 · string | ID бекапу (зі списку бекапів) |
Приклад запиту
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 · string | ID бекапу (зі списку бекапів) |
Приклад запиту
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 · string | ID бекапу (зі списку бекапів) |
Приклад запиту
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 · string | ID бекапу (зі списку бекапів) |
Приклад запиту
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 · string | start, stop, restart або command |
command | body · string | Команда в консоль, якщо action = command |
minute / hour / dayOfMonth / month / dayOfWeekобовʼязковий | body · string | Поля cron у часовому поясі акаунта; * — будь-яке |
isActive / onlyWhenOnline | body · 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 · string | ID завдання (зі списку завдань) |
nameобовʼязковий | body · string | Назва завдання |
actionобовʼязковий | body · string | start, stop, restart або command |
command | body · string | Команда в консоль, якщо action = command |
minute / hour / dayOfMonth / month / dayOfWeekобовʼязковий | body · string | Поля cron у часовому поясі акаунта; * — будь-яке |
isActive / onlyWhenOnline | body · 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 · string | ID завдання (зі списку завдань) |
Приклад запиту
curl -X DELETE "https://sourhost.net/api/v1/projects/12/services/34/cron/5" \
-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 | Панель або нода не відповіли — повторіть пізніше |