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

Обновить расписание

PATCH /v1/work-schedules/:id

Меняет название, часовой пояс или окна своего расписания. Библиотека общая на портал, поэтому новые окна сразу действуют у всех серверов, назначенных на расписание, а правка несёт номер версии, чтобы не затереть чужую.

Параметры

Параметр В Тип Обяз. Описание
Параметрid Вpath Типstring Обяз.да ОписаниеID своего расписания. Источник — data[].id из списка расписаний

Поля запроса (body)

Поле Тип Обяз. Описание
Полеversion Типnumber Обяз.да ОписаниеВерсия, которую вы прочитали. Источник — version в списке или в получении расписания
Полеname Типstring Обяз.нет ОписаниеНовое название, от 1 до 80 символов
Полеtimezone Типstring Обяз.нет ОписаниеНовый часовой пояс IANA
Полеwindows Типarray Обяз.нет ОписаниеНовые окна { isoDay, start, end } — заменяют прежние целиком. Правила окон — в индексе раздела

Примеры

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

Terminal
curl -X PATCH https://vibecode.bitrix24.tech/v1/work-schedules/WORK_SCHEDULE_ID \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "version": 2,
    "windows": [
      { "isoDay": 1, "start": "08:00", "end": "17:00" },
      { "isoDay": 2, "start": "08:00", "end": "17:00" }
    ]
  }'

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

Terminal
curl -X PATCH https://vibecode.bitrix24.tech/v1/work-schedules/WORK_SCHEDULE_ID \
  -H "X-Api-Key: YOUR_APP_KEY" \
  -H "Authorization: Bearer USER_SESSION_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "version": 2,
    "windows": [
      { "isoDay": 1, "start": "08:00", "end": "17:00" },
      { "isoDay": 2, "start": "08:00", "end": "17:00" }
    ]
  }'

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

javascript
const res = await fetch(
  `https://vibecode.bitrix24.tech/v1/work-schedules/${workScheduleId}`,
  {
    method: 'PATCH',
    headers: {
      'X-Api-Key': 'YOUR_API_KEY',
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({
      version: 2,
      windows: [
        { isoDay: 1, start: '08:00', end: '17:00' },
        { isoDay: 2, start: '08:00', end: '17:00' },
      ],
    }),
  }
)
const body = await res.json()
console.log(`Версия ${body.data.version}, затронуто серверов: ${body.affectedServers}`)

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

javascript
const res = await fetch(
  `https://vibecode.bitrix24.tech/v1/work-schedules/${workScheduleId}`,
  {
    method: 'PATCH',
    headers: {
      'X-Api-Key': 'YOUR_APP_KEY',
      'Authorization': 'Bearer USER_SESSION_TOKEN',
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({
      version: 2,
      windows: [
        { isoDay: 1, start: '08:00', end: '17:00' },
        { isoDay: 2, start: '08:00', end: '17:00' },
      ],
    }),
  }
)
const body = await res.json()

Поля ответа

Поле Тип Описание
Полеsuccess Типboolean ОписаниеВсегда true при успехе
Полеdata Типobject ОписаниеРасписание после правки — та же форма, что в получении расписания
Полеdata.version Типnumber ОписаниеНовая версия: каждая успешная правка увеличивает её на единицу
ПолеaffectedServers Типnumber ОписаниеСколько серверов портала работает по расписанию после правки, включая серверы других сотрудников

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

JSON
{
  "success": true,
  "data": {
    "id": "cmfp4r0q2000a1ocg7h2k9x3d",
    "kind": "CUSTOM",
    "name": "Смены склада",
    "presetKey": null,
    "timezone": "Europe/Moscow",
    "windows": [
      { "isoDay": 1, "start": "08:00", "end": "17:00" },
      { "isoDay": 2, "start": "08:00", "end": "17:00" }
    ],
    "version": 3,
    "canEdit": true,
    "assignedCount": 1,
    "defaultForNewMachines": true,
    "defaultForNewAgents": false
  },
  "affectedServers": 1
}

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

409 — расписание успели изменить после вашего чтения:

JSON
{
  "success": false,
  "error": {
    "code": "WORK_SCHEDULE_STALE",
    "message": "The work schedule was changed by someone else — reload it and repeat the edit"
  }
}

Ошибки

HTTP Код Описание
HTTP400 КодVALIDATION_ERROR ОписаниеТело не подходит под схему — нет version, неизвестное поле, неизвестный часовой пояс — либо окна нарушают правила недели. При нарушении схемы в message — путь к полю и причина. При нарушении правил недели в message — день и границы окна в минутах от начала суток
HTTP400 КодWORK_SCHEDULE_EMPTY ОписаниеПередан пустой windows: серверы на таком расписании не работали бы никогда
HTTP400 КодRUN_MODE_UNAVAILABLE ОписаниеРежимы работы ещё не включены для портала
HTTP401 КодMISSING_API_KEY ОписаниеНе передан заголовок X-Api-Key
HTTP401 КодINVALID_API_KEY ОписаниеКлюч не опознан: такой строки на платформе нет
HTTP403 КодWORK_SCHEDULE_PRESET_READONLY ОписаниеРасписание готовое — оно не правится. Для другой недели создайте своё
HTTP403 КодWORK_SCHEDULE_EDIT_FORBIDDEN ОписаниеПравить расписание может только его автор или администратор портала
HTTP403 КодWRITE_BLOCKED_READONLY_KEY ОписаниеКлюч в режиме «только чтение» — правка ему закрыта
HTTP403 КодINFRA_SCOPE_REQUIRED ОписаниеУ ключа нет скоупа vibe:infra
HTTP403 КодINFRA_FORBIDDEN_FOR_COWORK_KEY ОписаниеВызов сделан ключом Cowork/Code — библиотека расписаний такому ключу закрыта. Что делать — Проектный ключ для деплоя
HTTP404 КодNOT_FOUND ОписаниеРасписания с таким id нет в портале ключа, либо ключ не привязан к порталу Битрикс24
HTTP409 КодWORK_SCHEDULE_STALE ОписаниеВерсия в запросе устарела: расписание изменили после вашего чтения. Прочитайте его заново и повторите правку с новой version
HTTP429 КодRATE_LIMITED ОписаниеПревышен лимит 30 запросов в минуту на ключ. Действующее значение — в заголовке x-ratelimit-limit

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

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

  • Правка окон или пояса перестраивает пробуждения всех назначенных серверов. Замена окон, пересчёт пробуждений у каждого сервера на расписании и новая версия записываются одной операцией: при отказе не меняется ничего. Правка одного названия пробуждений не касается.
  • Счёт серверов меняется вместе с окнами. Сервер на расписании работает в его окна, поэтому более длинная неделя увеличивает счёт за каждый назначенный сервер, включая серверы других сотрудников — их число приходит в affectedServers.

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