
# Серверы

CRUD-операции для серверов: создание нового сервера, список своих серверов, детали одного сервера по ID, правка имени и описания, удаление. Созданный сервер всегда находится в режиме Black Hole — невидим из интернета, доступ к приложению только через HTTPS-субдомен.

Скоуп: `vibe:infra`

## Операции

- [Создать сервер](./servers/create.md) — `POST /v1/infra/servers`
- [Список серверов](./servers/list.md) — `GET /v1/infra/servers`
- [Получить сервер](./servers/get.md) — `GET /v1/infra/servers/:id`
- [Обновить имя и описание сервера](./servers/update.md) — `PATCH /v1/infra/servers/:id`
- [Удалить сервер](./servers/delete.md) — `DELETE /v1/infra/servers/:id`
- [Принудительно освободить канал](./servers/unstick.md) — `POST /v1/infra/servers/:id/unstick`
- [Опубликовать в каталоге Битрикс24](./servers/b24-catalog-publish.md) — `POST /v1/infra/servers/:id/b24-catalog/publish`

## Типовой сценарий

Полный цикл «создать → дождаться готовности → удалить». Сценарий описывает отдельную виртуальную машину — в ответе создания `kind` равен `STANDALONE`. Galaxy-приложение (`kind` равен `GALAXY_APP`) до `blackholeStatus: "CONNECTED"` не доходит, код в него загружают сразу после создания — [Galaxy-приложение](/docs/infra/galaxy).

```javascript
// Создать — получаем id, SSH-креды (при смене режима на OPEN), subdomain
const { data: server } = await api('POST', '/infra/servers', {
  provider: 'bitrix-cloud', name: 'my-app',
  plan: 'bc-small', region: 'ru-central1-b', image: 'fd83esfomhq25p2ono90',
})

// Опрашивать status каждые 10 секунд, пока не станет running + CONNECTED
let info
do {
  await new Promise(r => setTimeout(r, 10000))
  const res = await api('GET', `/infra/servers/${server.id}`)
  info = res.data
} while (info.status !== 'running' || info.blackholeStatus !== 'CONNECTED')

// … дальше Deploy API

// По окончании работы — удаляем. Виртуальная машина удаляется у провайдера
await api('DELETE', `/infra/servers/${server.id}`)
```

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

- [Жизненный цикл](/docs/infra/lifecycle)
- [Deploy API](/docs/infra/deploy)
- [Корневой раздел — Инфраструктура](/docs/infra)
