Для AI-агентов: markdown этой страницы — /docs-content/infra/database/prepare.md индекс документации — /llms.txt

Подготовить хост

POST /v1/infra/servers/:id/app-db/prepare

Запускает подготовку хоста галактики для работы с базой приложения: ставит недостающие пакеты и служебный образ для чтения базы. Подготовка идёт в фоне, её ход показывает статус подготовки хоста.

Параметры

Параметр Тип Обяз. Описание
Параметрid (path) Типstring (UUID) Обяз.да ОписаниеID приложения с kind равным GALAXY_APP. Список: GET /v1/infra/servers

Тело запроса может быть пустым или {}, не больше 4096 байт. Любое поле тела и любой параметр строки запроса отклоняются с 400 VALIDATION_ERROR.

Примеры

curl — личный ключ

Terminal
curl -X POST "https://vibecode.bitrix24.tech/v1/infra/servers/APP_ID/app-db/prepare" \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'

curl — OAuth-приложение

Terminal
curl -X POST "https://vibecode.bitrix24.tech/v1/infra/servers/APP_ID/app-db/prepare" \
  -H "X-Api-Key: YOUR_APP_KEY" \
  -H "Authorization: Bearer USER_SESSION_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{}'

JavaScript — личный ключ

javascript
const res = await fetch(
  `https://vibecode.bitrix24.tech/v1/infra/servers/${appId}/app-db/prepare`,
  {
    method: 'POST',
    headers: { 'X-Api-Key': 'YOUR_API_KEY', 'Content-Type': 'application/json' },
    body: '{}',
  }
)
const { success, data, error } = await res.json()
if (!success) throw new Error(error.code)
// 202 — подготовка идёт, опрашивайте GET по тому же адресу. 200 — хост уже готов
console.log(res.status, data.state)

JavaScript — OAuth-приложение

javascript
const res = await fetch(
  `https://vibecode.bitrix24.tech/v1/infra/servers/${appId}/app-db/prepare`,
  {
    method: 'POST',
    headers: {
      'X-Api-Key': 'YOUR_APP_KEY',
      'Authorization': 'Bearer USER_SESSION_TOKEN',
      'Content-Type': 'application/json',
    },
    body: '{}',
  }
)
const { success, data, error } = await res.json()

Поля ответа

Поле Тип Описание
Полеsuccess Типboolean Описаниеtrue, если подготовка запущена, уже идёт или не нужна
Полеdata.state Типstring Описаниеpreparing — подготовка запущена этим вызовом или уже шла, HTTP 202. ready — хост уже готов, HTTP 200
Полеdata.steps Типarray ОписаниеСемь шагов в фиксированном порядке: disk, python3, zstd, age, curl, image, verify
Полеdata.steps[].id Типstring ОписаниеШаг. Значения — в статусе подготовки
Полеdata.steps[].state Типstring Описаниеpending, running, done, present или failed. В ответе на запуск компоненты, которые уже есть на хосте, отмечены present, остальные шаги — pending
Полеdata.missing Типstring[] ОписаниеКомпоненты, которых нет на хосте: python3, zstd, age, curl, image. При ready массив пуст
Полеdata.freeBytes Типinteger ОписаниеМеньшее из свободного места на корневом разделе и на разделе образов Docker, в байтах. Приходит, когда подготовка уже шла и замер был

Пример ответа

Подготовка запущена, HTTP 202:

JSON
{
  "success": true,
  "data": {
    "state": "preparing",
    "missing": ["image"],
    "steps": [
      { "id": "disk", "state": "pending" },
      { "id": "python3", "state": "present" },
      { "id": "zstd", "state": "present" },
      { "id": "age", "state": "present" },
      { "id": "curl", "state": "present" },
      { "id": "image", "state": "pending" },
      { "id": "verify", "state": "pending" }
    ]
  }
}

Хост уже готов, HTTP 200:

JSON
{
  "success": true,
  "data": {
    "state": "ready",
    "steps": [
      { "id": "disk", "state": "done" },
      { "id": "python3", "state": "present" },
      { "id": "zstd", "state": "present" },
      { "id": "age", "state": "present" },
      { "id": "curl", "state": "present" },
      { "id": "image", "state": "present" },
      { "id": "verify", "state": "done" }
    ],
    "missing": []
  }
}

Пример ответа при ошибке

400 — в теле передано поле:

JSON
{
  "success": false,
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "Invalid preparation parameters"
  }
}

Ошибки

HTTP Код Описание
HTTP400 КодVALIDATION_ERROR ОписаниеВ теле есть поле, или передан параметр строки запроса
HTTP400 КодAPP_DB_UNSUPPORTED_PLACEMENT ОписаниеПриложение размещено не в Галактике
HTTP401 КодMISSING_API_KEY ОписаниеНе передан заголовок X-Api-Key
HTTP401 КодINVALID_API_KEY ОписаниеКлюч не опознан
HTTP402 КодBILLING_FROZEN ОписаниеСчёт портала заморожен
HTTP403 КодINFRA_SCOPE_REQUIRED ОписаниеУ ключа нет скоупа vibe:infra
HTTP403 КодAPP_DB_DISABLED ОписаниеРабота с базой приложения не включена для портала
HTTP403 КодAPP_DB_READONLY_KEY ОписаниеКлюч в режиме только чтения
HTTP403 КодSERVER_WAKE_BLOCKED ОписаниеХост галактики спит, а его пробуждение запрещено
HTTP404 КодNOT_FOUND ОписаниеПриложение или его хост не найдены, удалены или недоступны этому ключу
HTTP409 КодAPP_DB_BUSY ОписаниеХост не успел проснуться за 10 секунд или занят другой операцией. Повторите после паузы из Retry-After
HTTP413 КодPAYLOAD_TOO_LARGE ОписаниеТело больше 4096 байт
HTTP429 КодRATE_LIMITED ОписаниеПревышен лимит запросов на запись для портала — Лимиты. Пауза — в заголовке Retry-After
HTTP503 КодAPP_DB_TOOL_UNAVAILABLE ОписаниеСлужебный канал к хосту недоступен, или хост вернул некорректное состояние. Повторите после паузы из Retry-After
HTTP503 Кодuser_self_deletion_pending ОписаниеВладелец ключа удаляет свой аккаунт на портале

Причина неудачи самой подготовки приходит не ошибкой этого вызова, а в состоянии failed с data.errorCode в статусе подготовки.

Полный список общих ошибок API — Ошибки.

Известные особенности

  • Что ставится на хост. Только отсутствующие python3, zstd, age, curl и закреплённый служебный образ для чтения базы. Пакеты ставятся из настроенных на хосте репозиториев Ubuntu с проверкой подписи. План установки проверяется перед каждым пакетом: обновлять и удалять уже установленные пакеты запрещено. Пакеты не запускают и не перезапускают службы, хост не перезагружается, приложение и Docker не перезапускаются. Нужно не меньше 6 ГиБ свободного места на корневом разделе и на разделе образов Docker. Подготовка ограничена 15 минутами.
  • Подготовку выполняет платформа. Команды идут к хосту через служебный канал платформы. Ни вам, ни приложению доступ к хосту для этого не нужен.
  • Повторный вызов. Пока подготовка идёт, вызов ничего не запускает и возвращает текущее состояние с HTTP 202. После failed вызов запускает подготовку заново, уже установленные компоненты пропускаются. Если ответ на запуск потерялся, сначала проверьте статус подготовки, а не повторяйте запуск автоматически.
  • Подготовка запускается и без этого вызова. Новый хост галактики запускает её сам при первой загрузке. Создание копии базы — ручной, ежедневной или защитной — тоже запускает подготовку на неготовом хосте, если прошлая подготовка не закончилась кодом LOW_DISK, DPKG_BROKEN, APT_PLAN_UNSAFE или UNSUPPORTED_HOST. Этот вызов запускает её и после таких кодов.
  • Длительность. На тестовом хосте, где пакеты уже стояли и загружался только служебный образ, подготовка заняла меньше 10 секунд.

Смотрите также