[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"docs-infra\u002Flifecycle\u002Fsleep":3,"docs-tabs-infra\u002Flifecycle\u002Fsleep":6},{"content":4,"lastmod":5},"\n## Настроить авто-сон\n\n`PATCH \u002Fv1\u002Finfra\u002Fservers\u002F:id\u002Fsleep`\n\nНастраивает таймер автоматического засыпания BLACKHOLE-сервера. При отсутствии HTTP-запросов или SSH-активности в течение `sleepAfterMinutes` минут сервер автоматически останавливается. При следующем обращении просыпается сам. Передача `null` отключает авто-сон.\n\n`null` отключает только наш авто-сон по бездействию. Если сервер стоит на **вытесняемом (preemptible)** тарифе (`bc-agent`, `bc-micro` — см. [Тарифы](\u002Fdocs\u002Finfra\u002Fproviders\u002Fplans)), облако всё равно принудительно перезапускает такую машину примерно раз в сутки, с коротким окном недоступности; платформа автоматически будит её обратно. Для по-настоящему непрерывной 24\u002F7-нагрузки выбирайте **невытесняемый** тариф (`bc-small` и выше) — на нём `null` действительно означает работу до ручной остановки.\n\n## Параметры\n\n| Параметр | В | Тип | Обяз. | Описание |\n|----------|---|-----|:-----:|----------|\n| `id` | path | string (UUID) | да | ID сервера в режиме BLACKHOLE |\n\n## Поля запроса (body)\n\n| Поле | Тип | Обяз. | Описание |\n|------|-----|:-----:|----------|\n| `sleepAfterMinutes` | number \\| null | **да** | Таймаут простоя в минутах. Допустимые значения: `15`, `30`, `60`, `240`, или `null` (для отключения авто-сна). Другие значения отклоняются с `VALIDATION_ERROR` |\n\n## Примеры\n\n### curl — личный ключ\n\n```bash\n# Включить авто-сон через 60 минут простоя\ncurl -X PATCH https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Finfra\u002Fservers\u002FSERVER_ID\u002Fsleep \\\n  -H \"X-Api-Key: YOUR_API_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"sleepAfterMinutes\": 60}'\n\n# Отключить авто-сон\ncurl -X PATCH https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Finfra\u002Fservers\u002FSERVER_ID\u002Fsleep \\\n  -H \"X-Api-Key: YOUR_API_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"sleepAfterMinutes\": null}'\n```\n\n### curl — OAuth-приложение\n\n```bash\ncurl -X PATCH https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Finfra\u002Fservers\u002FSERVER_ID\u002Fsleep \\\n  -H \"X-Api-Key: YOUR_APP_KEY\" \\\n  -H \"Authorization: Bearer USER_SESSION_TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"sleepAfterMinutes\": 60}'\n```\n\n### JavaScript — личный ключ\n\n```javascript\nconst res = await fetch(\n  `https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Finfra\u002Fservers\u002F${serverId}\u002Fsleep`,\n  {\n    method: 'PATCH',\n    headers: {\n      'X-Api-Key': 'YOUR_API_KEY',\n      'Content-Type': 'application\u002Fjson',\n    },\n    body: JSON.stringify({ sleepAfterMinutes: 60 }),\n  }\n)\nconst { data } = await res.json()\nconsole.log(`Авто-сон через ${data.sleepAfterMinutes} мин`)\n```\n\n### JavaScript — OAuth-приложение\n\n```javascript\nawait fetch(\n  `https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Finfra\u002Fservers\u002F${serverId}\u002Fsleep`,\n  {\n    method: 'PATCH',\n    headers: {\n      'X-Api-Key': 'YOUR_APP_KEY',\n      'Authorization': 'Bearer USER_SESSION_TOKEN',\n      'Content-Type': 'application\u002Fjson',\n    },\n    body: JSON.stringify({ sleepAfterMinutes: null }),\n  }\n)\n```\n\n## Поля ответа\n\n| Поле | Тип | Описание |\n|------|-----|----------|\n| `success` | boolean | Всегда `true` при успехе |\n| `data.sleepAfterMinutes` | number \\| null | Актуальное значение таймаута (эхо переданного) |\n\n## Пример ответа\n\n```json\n{\n  \"success\": true,\n  \"data\": {\n    \"sleepAfterMinutes\": 60\n  }\n}\n```\n\n## Пример ответа при ошибке\n\n400 — некорректное значение `sleepAfterMinutes`:\n\n```json\n{\n  \"success\": false,\n  \"error\": {\n    \"code\": \"VALIDATION_ERROR\",\n    \"message\": \"sleepAfterMinutes must be 15, 30, 60, 240, or null\"\n  }\n}\n```\n\n400 — сервер не в BLACKHOLE:\n\n```json\n{\n  \"success\": false,\n  \"error\": {\n    \"code\": \"BLACKHOLE_ONLY\",\n    \"message\": \"Sleep settings are only available for BLACKHOLE servers\"\n  }\n}\n```\n\n400 — переход в «Всегда онлайн» при включённых окнах пробуждения:\n\n```json\n{\n  \"success\": false,\n  \"error\": {\n    \"code\": \"ALWAYS_ON_CONFLICT\",\n    \"message\": \"The server has enabled wake-schedule windows, which conflict with always-on (24\u002F7) mode. Delete or disable the wake windows first, or keep a sleep timeout.\"\n  }\n}\n```\n\n## Ошибки\n\n| HTTP | Код | Описание |\n|------|-----|----------|\n| 400 | `VALIDATION_ERROR` | `sleepAfterMinutes` не в списке `[15, 30, 60, 240, null]` |\n| 400 | `BLACKHOLE_ONLY` | Сервер в режиме `OPEN` — авто-сон недоступен |\n| 400 | `ALWAYS_ON_CONFLICT` | `null` на невытесняемом тарифе при включённых [окнах пробуждения](\u002Fdocs\u002Fchangelog) — сначала удалите или отключите окна |\n| 401 | `MISSING_API_KEY` | Не передан заголовок `X-Api-Key` |\n| 401 | `INVALID_API_KEY` | Неверный или просроченный API-ключ |\n| 404 | `NOT_FOUND` | Сервер не существует, удалён или принадлежит другому API-ключу |\n| 429 | `RATE_LIMITED` | Превышен общий лимит запросов платформы |\n\nПолный список общих ошибок API — [Ошибки](\u002Fdocs\u002Ferrors).\n\n## Известные особенности\n\n- **Что считается активностью и сбрасывает таймер.** HTTP-обращения к приложению через туннель, активность на порту 22 (для OPEN-серверов) и exec-сессии Deploy API. Реальная активность проверяется раз в несколько минут через Gateway-метрики.\n- **Авто-пробуждение сохраняется.** Сервер, заснувший по таймеру, автоматически просыпается при следующем HTTP-запросе к HTTPS-субдомену или при вызове [`\u002Fdeploy`](\u002Fdocs\u002Finfra\u002Fdeploy\u002Fdeploy)\u002F[`\u002Fwake`](.\u002Fwake.md)\u002F[`\u002Fstart`](.\u002Fstart.md).\n- **Значение по умолчанию для новых серверов** — 60 минут. Текущее значение — в поле [`GET \u002Fv1\u002Finfra\u002Fservers\u002F:id`](\u002Fdocs\u002Finfra\u002Fservers\u002Fget).\n- **Агенты и managed-боты** создают свои серверы с `sleepAfterMinutes: null` — они должны оставаться в сети круглосуточно, чтобы отвечать на сообщения. Для обычных приложений такая настройка тоже допустима, но приведёт к постоянному списанию по рабочему тарифу. По умолчанию агент\u002Fбот создаётся на вытесняемом тарифе (дешевле), который облако перезапускает ~раз в сутки; для непрерывной работы включите опцию «Всегда онлайн» при создании — она ставит агента\u002Fбота на невытесняемый тариф.\n- **Взаимное исключение с расписанием пробуждения.** `sleepAfterMinutes: null` на невытесняемом тарифе означает «Всегда онлайн» — такой сервер несовместим с включёнными [окнами пробуждения](\u002Fdocs\u002Fchangelog): запрос отклоняется с `ALWAYS_ON_CONFLICT`. Верно и обратное — окно нельзя объявить на сервере «Всегда онлайн». Сначала удалите или отключите окна, либо оставьте числовой таймаут.\n- **Эндпоинт не меняет статус** — только обновляет конфигурацию. Чтобы усыпить сервер сразу, используйте [`POST \u002Fsleep-now`](.\u002Fsleep-now.md).\n\n## Смотрите также\n\n- [Усыпить сейчас](.\u002Fsleep-now.md) — немедленная остановка, не дожидаясь таймера.\n- [Запустить сервер](.\u002Fstart.md) — пробудить из `sleeping`.\n- [Тарифы провайдера](\u002Fdocs\u002Finfra\u002Fproviders\u002Fplans) — поле `sleepPriceMonthly` показывает тариф в режиме сна.\n- [Получить сервер](\u002Fdocs\u002Finfra\u002Fservers\u002Fget) — проверить текущее значение `sleepAfterMinutes`.\n","2026-07-10",{}]