Для 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 — личный ключ

Terminal
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-приложение

Terminal
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 — личный ключ

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-приложение

javascript
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.

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

JSON
{
  "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 — окно не найдено:

JSON
{
  "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.

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