Для AI-агентов: markdown этой страницы — /docs-content/infra/wake-schedules/update.md индекс документации — /llms.txt
Обновить окно пробуждения
PATCH /v1/infra/servers/:id/wake-schedules/:scheduleId
Заменяет окно целиком — несмотря на метод PATCH, семантика как у полной замены (PUT). Непереданные необязательные поля сбрасываются к значениям по умолчанию, а не сохраняют прежнее значение: enabled → true, label/lead → пусто. Передавайте полный объект окна, а не только изменившееся поле.
Параметры
| Параметр | В | Тип | Обяз. | Описание |
|---|---|---|---|---|
Параметрid |
Вpath | Типstring (UUID) | Обяз.да | ОписаниеID BLACKHOLE-сервера |
ПараметрscheduleId |
Вpath | Типstring | Обяз.да | ОписаниеID окна. Источник — data[].id из списка окон или data.id из создания |
Поля запроса (body)
Тот же набор полей, что и при создании окна. Не переданные необязательные поля не сохраняют старое значение, а сбрасываются к значению по умолчанию.
| Поле | Тип | Обяз. | По умолч. при пропуске | Описание |
|---|---|---|---|---|
ПолеcronExpr |
Типstring | Обяз.да | По умолч. при пропуске— | Описание5-польное cron-выражение, от 9 до 120 символов |
Полеtimezone |
Типstring | Обяз.да | По умолч. при пропуске— | Описаниечасовой пояс окна в формате IANA |
Полеlabel |
Типstring | Обяз.нет | По умолч. при пропускесбрасывается в пусто | ОписаниеМетка окна, до 80 символов |
Полеlead |
Типnumber | Обяз.нет | По умолч. при пропускесбрасывается в пусто (используется запас сервера или платформы) | ОписаниеЗапас в секундах перед моментом cronExpr. От 0 до 3600. Значение меньше платформенного запаса поднимается до него |
Полеenabled |
Типboolean | Обяз.нет | По умолч. при пропускесбрасывается в true |
ОписаниеАктивно ли окно |
Примеры
curl — личный ключ
curl -X PATCH "https://vibecode.bitrix24.tech/v1/infra/servers/SERVER_ID/wake-schedules/SCHEDULE_ID" \
-H "X-Api-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"cronExpr": "0 10 * * 1-5",
"timezone": "Europe/Moscow",
"label": "daily report",
"enabled": true
}'
curl — OAuth-приложение
curl -X PATCH "https://vibecode.bitrix24.tech/v1/infra/servers/SERVER_ID/wake-schedules/SCHEDULE_ID" \
-H "X-Api-Key: YOUR_APP_KEY" \
-H "Authorization: Bearer USER_SESSION_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"cronExpr": "0 10 * * 1-5",
"timezone": "Europe/Moscow",
"label": "daily report",
"enabled": true
}'
JavaScript — личный ключ
const res = await fetch(
`https://vibecode.bitrix24.tech/v1/infra/servers/${serverId}/wake-schedules/${scheduleId}`,
{
method: 'PATCH',
headers: {
'X-Api-Key': 'YOUR_API_KEY',
'Content-Type': 'application/json',
},
// Полный объект окна — поля, пропущенные здесь, сбросятся к значениям по умолчанию
body: JSON.stringify({
cronExpr: '0 10 * * 1-5',
timezone: 'Europe/Moscow',
label: 'daily report',
enabled: true,
}),
}
)
JavaScript — OAuth-приложение
const res = await fetch(
`https://vibecode.bitrix24.tech/v1/infra/servers/${serverId}/wake-schedules/${scheduleId}`,
{
method: 'PATCH',
headers: {
'X-Api-Key': 'YOUR_APP_KEY',
'Authorization': 'Bearer USER_SESSION_TOKEN',
'Content-Type': 'application/json',
},
body: JSON.stringify({
cronExpr: '0 10 * * 1-5',
timezone: 'Europe/Moscow',
label: 'daily report',
enabled: true,
}),
}
)
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
Полеsuccess |
Типboolean | ОписаниеВсегда true при успехе |
Полеdata.id |
Типstring | ОписаниеID окна |
Полеdata.serverId |
Типstring (UUID) | ОписаниеID сервера-владельца |
Полеdata.cronExpr |
Типstring | ОписаниеОбновлённое cron-выражение |
Полеdata.timezone |
Типstring | ОписаниеОбновлённый часовой пояс |
Полеdata.label |
Типstring | null | ОписаниеМетка окна |
Полеdata.lead |
Типnumber | null | ОписаниеЗапас в секундах |
Полеdata.enabled |
Типboolean | ОписаниеАктивно ли окно после обновления |
Полеdata.source |
Типstring | ОписаниеКак создано окно. Не меняется обновлением |
Полеdata.lastFiredAt |
Типstring (ISO 8601) | null | ОписаниеМомент последнего подтверждённого срабатывания. Обновление окна это поле не трогает |
Полеdata.wakeAttemptStartedAt |
Типstring (ISO 8601) | null | ОписаниеСлужебная метка планировщика, в норме null |
Полеdata.lastWakeLateAt |
Типstring (ISO 8601) | null | ОписаниеМомент последнего опоздавшего пробуждения |
Полеdata.createdAt |
Типstring (ISO 8601) | ОписаниеДата создания записи |
Полеdata.updatedAt |
Типstring (ISO 8601) | ОписаниеДата этого обновления |
ПолеtzWarning |
Типstring | null | ОписаниеПредупреждение о расхождении часового пояса — текстом. null, если у сервера не осталось активных окон после этой мутации |
ПолеtzWarningCode |
Типstring | null | ОписаниеМашиночитаемый код того же предупреждения: "SINGLE_ZONE", "MULTI_ZONE" или null |
ПолеpreemptibleAdvisoryCode |
Типstring | null | Описание"PREEMPTIBLE_BEST_EFFORT", если сервер работает на вытесняемом тарифе — иначе null |
ПолеpreemptibleAdvisory |
Типstring | null | ОписаниеПояснение того же предупреждения текстом (на английском, для не-UI-клиентов API). null, если сервер на невытесняемом тарифе |
tzWarning, tzWarningCode, preemptibleAdvisoryCode и preemptibleAdvisory — поля верхнего уровня ответа, не вложены в data.
Пример ответа
{
"success": true,
"data": {
"id": "cm38x02qp0001ml08g7k3h2a",
"serverId": "e765edfc-ba0a-43de-b8ea-838dd872c522",
"cronExpr": "0 10 * * 1-5",
"timezone": "Europe/Moscow",
"label": "daily report",
"lead": null,
"enabled": true,
"source": "MANUAL",
"lastFiredAt": "2026-07-10T06:00:04.000Z",
"wakeAttemptStartedAt": null,
"lastWakeLateAt": null,
"createdAt": "2026-07-03T08:12:00.000Z",
"updatedAt": "2026-07-10T09:30:00.000Z"
},
"tzWarning": "The VM may have been deployed with a different timezone (or not redeployed since this window was declared) — verify the in-VM cron or redeploy the app so TZ is re-injected.",
"tzWarningCode": "SINGLE_ZONE",
"preemptibleAdvisoryCode": null,
"preemptibleAdvisory": null
}
Сервер на вытесняемом тарифе получил бы "preemptibleAdvisoryCode": "PREEMPTIBLE_BEST_EFFORT" и непустой preemptibleAdvisory вместо null в тех же двух полях — остальная форма ответа не меняется.
Пример ответа при ошибке
404 — окно не найдено:
{
"success": false,
"error": {
"code": "NOT_FOUND",
"message": "Wake window not found"
}
}
Ошибки
| HTTP | Код | Описание |
|---|---|---|
| HTTP400 | КодVALIDATION_ERROR |
ОписаниеНарушена валидация тела — отсутствует cronExpr/timezone, timezone не входит в список часовых поясов IANA, label длиннее 80 символов, lead вне диапазона 0–3600 или в теле лишнее поле |
| HTTP400 | КодBLACKHOLE_ONLY |
ОписаниеСервер не в режиме BLACKHOLE |
| HTTP400 | КодGALAXY_NOT_SUPPORTED |
ОписаниеСервер — хост галактики (kind: "GALAXY"). Хост окон не держит вовсе: расписание объявляется на приложении внутри галактики, а не на самом хосте |
| HTTP400 | КодALWAYS_ON_CONFLICT |
ОписаниеСервер работает в режиме «Всегда онлайн» — на невытесняемом тарифе и без авто-сна. Приложению в галактике этот код не приходит: тариф оно наследует от галактики, и режимом «Всегда онлайн» платформа его не считает. Не приходит он и серверу в режиме работы SCHEDULE: сон у него объявлен владельцем, и окно становится дополнительным пробуждением поверх расписания |
| HTTP400 | КодCADENCE_TOO_LOW |
ОписаниеИнтервал между соседними срабатываниями cronExpr меньше минимального, заданного на платформе — сейчас 5 минут |
| HTTP401 | КодMISSING_API_KEY |
ОписаниеНе передан заголовок X-Api-Key |
| HTTP401 | КодINVALID_API_KEY |
ОписаниеКлюч не опознан: такой строки на платформе нет |
| HTTP403 | КодWAKE_SCHEDULE_DISABLED |
ОписаниеПробуждение по расписанию не включено для этого портала |
| HTTP403 | КодWAKE_SCHEDULE_GALAXY_DISABLED |
ОписаниеСервер — приложение в галактике (kind: "GALAXY_APP"). Окна такое приложение держать умеет, но на платформе выключена возможность для приложений галактики. Её включают отдельно от обычных серверов, поэтому сервер kind: "STANDALONE" этот код не получает |
| HTTP403 | КодINFRA_SCOPE_REQUIRED |
ОписаниеУ ключа нет скоупа vibe:infra |
| HTTP403 | КодINFRA_FORBIDDEN_FOR_COWORK_KEY |
ОписаниеВызов сделан ключом Cowork/Code — такой ключ работает только с данными, изменяющие операции ему закрыты. Что делать — Проектный ключ для деплоя |
| HTTP403 | КодSERVER_ROLE_FORBIDDEN |
ОписаниеВы состоите в команде разработки этого сервера с ролью «Разработчик», а операция открыта роли «Администратор». В error.hint придут ваша роль, требуемый порог и перечень открытых вам вызовов. Разбор ролей — Список серверов |
| HTTP404 | КодNOT_FOUND |
ОписаниеОкно с таким scheduleId у этого сервера не найдено, либо сам сервер не найден, удалён или привязан к другому API-ключу, и вы не состоите в его команде разработки |
| HTTP429 | КодRATE_LIMITED |
ОписаниеПревышен лимит 10 запросов в минуту на этот эндпоинт. Действующее значение — в заголовке x-ratelimit-limit |
Полный список общих ошибок API — Ошибки.
Известные особенности
PATCHзаменяет окно целиком. Это отклонение от общего стандарта частичногоPATCHв API Вайбкод — сравните с обновлением сделки, где непереданные поля сохраняют прежнее значение. Отправка только изменившегося поля молча обнулит остальные необязательные поля —enabledстанетtrue,labelиleadочистятся. Формируйте тело из последнего известного состояния окна, а не только из изменившихся полей.preemptibleAdvisoryCode/preemptibleAdvisory— не гейт, а предупреждение. Окно обновляется независимо от значения этих полей — на вытесняемом тарифе платформа не запрещает расписание, а лишь честно сообщает, что подъём к моменту окна best-effort. Локализуйте по кодуpreemptibleAdvisoryCode, не по строкеpreemptibleAdvisory— она фиксированная и на английском, для не-UI-клиентов.- Существование окна проверяется раньше остальных гейтов. На несуществующий
scheduleIdвернётся404 NOT_FOUND, даже если запрос заодно нарушаетBLACKHOLE_ONLYили другой гейт режима сервера. - Два разных отказа по галактике.
GALAXY_NOT_SUPPORTEDотносится к хосту галактики: он окон не держит вовсе.WAKE_SCHEDULE_GALAXY_DISABLEDотносится к приложению внутри галактики: окна оно держать умеет, но пока на платформе выключена возможность для таких приложений, этим кодом отвечает и обновление уже созданного окна. Первый приходит со статусом400, второй — с403.