# Изменения API: 7 октября 2026

[← Журнал изменений](/docs/changelog) · [Октябрь 2026](/docs/changelog/2026-10)

### FIX-1007-1: повторное удаление сервера, пока первое ещё идёт, больше не отвечает успехом

**Было**

`DELETE /v1/infra/servers/{id}` для сервера с `kind`, отличным от `GALAXY_APP`, пришедший пока другой вызов ещё удаляет ту же машину, отвечал успехом.

**Стало**

Удаление такого сервера, которое выполнил этот вызов, по-прежнему отвечает HTTP 200. Вызов, который этот сервер уже не удалял, отвечает `404 NOT_FOUND`, как повторный запрос к уже удалённому серверу. Для `kind=GALAXY_APP` коды этого маршрута не меняются. Ответ по-прежнему HTTP 200, когда удаление выполнил этот вызов.

### NEW-1007-2: Правка содержимого и публикация отдельного блока страницы

Добавлены подресурсы `/v1/pages/:pageId/blocks/:blockId`: `PATCH /nodes`, `/styles`, `/attrs`, `/tags`, `PUT /anchor`, `POST /files`, `/publication`. Нужен скоуп `landing`; query `scope` выбирает контекст страницы. Неизвестный селектор или индекс и пустой набор правок дают 400. Замена классов сохраняет все классы адресации манифеста. Неприменимое значение текстового узла получает 400. Ответы записи содержат перечитанный HTML; Б24 может фильтровать текст и атрибуты. Файлы загружаются только как base64-картинки, лимит JSON 40 MiB. Публикация блока оставляет остальные изменения страницы черновиком.

### NEW-1007-3: Привязки баз знаний к меню и рабочим группам

Добавлены `GET /v1/sites/menu-bindings` и `GET /v1/sites/group-bindings` с необязательными фильтрами `menuCode` и `groupId`, без пагинации. `POST /v1/sites/:id/menu-bindings` и `DELETE /v1/sites/:id/menu-bindings/:menuCode` меняют меню для всех сотрудников; нужен тип KNOWLEDGE. Двоеточие в коде меню в пути URL-кодируется. `POST /v1/sites/:id/group-binding` меняет тип сайта на GROUP, `DELETE /v1/sites/:id/group-binding/:groupId` — на KNOWLEDGE. Для страниц привязанной базы нужен `scope=GROUP`. Ответы записей перечитывают привязки; групповые действия также возвращают сайт с новым типом. Нужен скоуп ключа `landing`; READONLY запрещает запись. Нет сайта — `404 ENTITY_NOT_FOUND`, неподходящий тип — `409 SITE_BINDING_TYPE_MISMATCH`, отказ Б24 без причины — `422 BITRIX_ERROR`.

### NEW-1007-4: Карточки блока и сохранённые шаблоны

Карточки блока: `POST /v1/pages/:pageId/blocks/:blockId/cards/clone`, `POST /v1/pages/:pageId/blocks/:blockId/cards`, `DELETE /v1/pages/:pageId/blocks/:blockId/cards/:index` с query `selector`, `PUT /v1/pages/:pageId/blocks/:blockId/cards`. Запись возвращает перечитанные `cards`: словарь селекторов с массивами `{index,content}`. Индексы меняются после записи. Пересборка всего набора принимает `selector`, непустой `source` и `values`; неизвестные селекторы и индексы дают 400 до записи.

`POST /v1/pages/:pageId/blocks/:blockId/favorite` с `{name,sections?}` сохраняет шаблон в каталоге аккаунта Битрикс24, доступный всем редакторам. Возвращает `{blockId,code}`; `preview` не поддерживается. `DELETE /v1/block-repository/favorites/:blockId` физически удаляет шаблон текущего пользователя. Отсутствующие карточки и шаблоны дают 404. Все маршруты требуют `landing`, принимают query `scope` и запрещают запись READONLY-ключу.

### BC-1007-5: общие методы жизненного цикла закрыты для серверов агента и бота

> Поддержка старого формата до: 06.10.2026

**Было**

`POST /v1/infra/servers/{id}/start`, `/stop` и `/wake` могли запускать и останавливать сервер управляемого агента или бота через общий серверный API.

**Стало**

Для таких серверов методы отвечают `409 MANAGED_SERVER_LIFECYCLE` без обращения к облаку. Управляйте агентом или ботом через его карточку в кабинете. Для обычных серверов и Galaxy App поведение методов не изменилось.

**Что делать интеграторам**

Не вызывайте общие методы Start/Stop/Wake для серверов управляемых агентов и ботов. Предложите пользователю управлять ими в кабинете.

### FIX-1007-6: боты восстанавливаются после смены адреса портала

**Было**

После смены адреса портала регистрация бота могла остаться привязанной к прежнему адресу. Для восстановления требовался ручной API-вызов, а повторная регистрация с новым ID могла оставить Открытые линии и `WELCOME_BOT` привязанными к старому боту.

**Стало**

Платформа Вайбкод автоматически восстанавливает регистрацию после смены адреса. Сначала она пытается сохранить ID; если это невозможно, переносит ссылки Открытых линий на новый ID, включая `WELCOME_BOT`. При временном сбое восстановление продолжится автоматически. Запрос владельца со старым ID получает `BOT_ID_REPLACED` с актуальным `error.details.botId`.

**Влияние на интеграторов**

Действий не требуется. Клиент может использовать `error.details.botId`, если сохранил прежний числовой ID бота.

### BC-1007-7: ключ сотрудника, отмеченного уволенным, отвечает 403 OWNER_BLOCKED

> Поддержка старого формата до: 21.10.2026

**Было**

Когда проверка сотрудников портала находила, что владелец ключа уволен в Битрикс24, ключ мог продолжать работать: вызовы V1 с ним проходили, включая ИИ, поиск, хранилище, серверы и расход кредитов портала.

**Стало**

Пока сотрудник отмечен уволенным, любой вызов V1 с его ключом получает `403 OWNER_BLOCKED` — тот же код и текст, что у заблокированного владельца. Ключ не отзывается: как только Битрикс24 снова показывает сотрудника активным, ключ работает без перевыпуска. Отказ получают все ключи этого человека на портале: личные ключи, ключи его OAuth-приложений и ключи, которые он передал задеплоенным приложениям, — у всех пользователей портала. Агенты и боты, созданные на его ключах, перестают отвечать. Ключ устройства Cowork/Code, который простоял под отметкой больше 60 дней, после снятия отметки может понадобиться выпустить заново.

**Что делать интеграторам**

Если интеграция ходит ключом уволенного сотрудника, выпустите ключ от имени активного сотрудника портала и замените его в интеграции. Если отметка ошибочна, исправьте статус сотрудника в Битрикс24 — после следующей проверки ключ снова заработает. Если после восстановления сотрудника в Битрикс24 ключ так и не заработал, обратитесь в поддержку. Разбор кода — [Авторизация, ключи и права](/docs/errors/auth#owner_blocked-403).

### BC-1007-8: Каталог инструментов и список баз 1С требуют доступа к 1С

> Поддержка старого формата до: не предусмотрена

**Было**

[GET /v1/onec/tools](/docs/onec/tools) и [GET /v1/onec/instances](/docs/onec/instances) отвечали `200` любому ключу со скоупом `vibe:onec`. Сопоставление владельца ключа с учётной записью 1С не проверялось, поэтому ключ, получивший скоуп раньше или сохранивший его после снятия доступа, продолжал читать каталог и список баз.

**Стало**

Оба адреса проверяют доступ владельца ключа к 1С так же, как выдача скоупа: действующее сопоставление с учётной записью 1С или назначение через подразделение. Каталог проверяет доступ к той базе, к которой обращается: доступ к другой базе не подходит. Список баз отдаётся, если доступ есть хотя бы к одной базе, а пустой список доступа не требует. Без доступа оба адреса отвечают `403 ONEC_USER_NOT_MAPPED` — тот же отказ, что у [POST /v1/onec/tools/{method}/call](/docs/onec/call). Если состав подразделений Битрикс24 проверить не удалось, ответ `503 ONEC_DIRECTORY_UNAVAILABLE` с заголовком `Retry-After`. Пока назначения пользователей 1С временно выключены, ответ `503 ONEC_ASSIGNMENTS_DISABLED`. Для сотрудников с доступом ответы не изменились.

**Что делать интеграторам**

Обрабатывайте `403 ONEC_USER_NOT_MAPPED` на каталоге и списке баз так же, как на постановке чтения: попросите администратора выдать сотруднику доступ к 1С в кабинете, раздел «Интеграция 1С». `503` повторяйте после паузы из `Retry-After`. Старое поведение не сохраняется: оно открывало каталог без доступа к 1С.

### FIX-1007-9: выдача ключа на неплатном тарифе отвечает 402 со ссылкой на покупку

**Было**

Если Битрикс24 отказывал в выдаче ключа из-за неплатного тарифа, выдача ключа (POST /v1/keys, POST /v1/apps) завершалась общей ошибкой выдачи.

**Стало**

Ответ — 402, в `error.details.upgradeUrl` — ссылка на покупку тарифа или лицензии, в `error.details.secondaryUpgradeUrl` — дополнительная, если Битрикс24 их передал.

### NEW-1007-10: Восстановление и окончательное удаление объектов Диска

Добавлены `POST /v1/files/:id/restore`, `POST /v1/folders/:id/restore`, `POST /v1/files/:id/purge` и `POST /v1/folders/:id/purge` со скоупом `disk`. Restore возвращает объект и `meta.restored`, `meta.renamedFrom`; уже живой объект возвращает `restored: false`. Purge безвозвратно удаляет объект, все версии и связанные вложения мимо корзины; для папки удаляется всё дерево, операция не транзакционна. Корень хранилища удалить нельзя. Обычный `DELETE` остаётся корзиной. Отказ удаления возвращает 422 `DISK_DELETE_REFUSED`, неподтверждённое восстановление — 422 `DISK_RESTORE_REFUSED`. Записи не повторяются автоматически; при 502 `DISK_OUTCOME_UNKNOWN` перечитайте объект после сетевого сбоя.

### NEW-1007-11: Полнотекстовый поиск Диска и операции хранилища

Поиск по всему доступному Диску через [POST /v1/files/fulltext-search](/docs/entities/files/fulltext-search): запрос по индексу, файлы и папки, фильтры области и типа файла, страницы по 50 записей до смещения 1000. Корзина исключена, индекс обновляется асинхронно, общего числа совпадений нет. [POST /v1/storages/:id/folders](/docs/entities/storages/folders) создаёт папку в корне хранилища без поиска parentId. [GET /v1/storages/types](/docs/entities/storages/types) возвращает неполный справочник типов Битрикс24.

### NEW-1007-12: История и содержимое версий файла на Диске

Добавлены [история версий](/docs/entities/files/versions), чтение, скачивание, восстановление и загрузка новой версии существующего файла. Требуется scope `disk`. Версия другого файла даёт 404. Ссылки скачивания ведут на авторизованный V1-маршрут. Повторная загрузка тем же автором за примерно пять минут может перезаписать последнюю версию; восстановление создаёт новую и может вытеснить старую. Записи автоматически не повторяются; после неизвестного исхода перечитайте файл.

### NEW-1007-13: публичные ссылки Диска и доступ к папке сотруднику

Добавлены `POST /v1/files/:id/public-link`, `POST /v1/folders/:id/public-link`, `POST /v1/folders/:id/shares` и `GET /v1/folders/access-levels` со скоупом `disk`. Публикация создаёт или возвращает секретную ссылку для любого пользователя без авторизации; корень хранилища публиковать нельзя. Ответ содержит `revocableViaApi:false` и `meta.inTrash`. Корзина приостанавливает ссылку, восстановление открывает снова, физическое удаление гасит её.

Выдача доступа принимает `userId` и `access:read|add|edit|full`, возвращает 201 и выдаёт права сразу, до «Принять». Со скоупом `user`, `user_basic` или `user_brief` получатель проверяется до записи; без него `meta.recipientVerified:false`, Б24 может принять несуществующий id. Владелец и повтор дают 409. Отзыв и смена уровня через REST отсутствуют. Справочник возвращает id/code/title, READONLY допускается только для чтения. Записи автоматически не повторяются; при неизвестном исходе сначала перечитайте состояние. [Файл](/docs/entities/files/public-link), [папка](/docs/entities/folders/public-link), [выдача доступа](/docs/entities/folders/shares), [уровни](/docs/entities/folders/access-levels).

### BC-1007-14: Стадия задачи проверяется по канбану целевой группы

> Поддержка старого формата до: не предусмотрена

**Было**

PATCH /v1/tasks/:id принимал stageId чужой группы или «Моего плана»; старые версии Битрикс24 могли ответить успехом и записать несовместимую стадию.

**Стало**

Такие запросы получают 400 INVALID_PARAMS до записи. При одновременной смене groupId проверяется канбан новой группы. Для «Моего плана» используйте POST /v1/tasks/:taskId/move-stage. Нулевой stageId сохраняет штатный выбор первой колонки группы.

**Что делать интеграторам**

Передавайте stageId из канбана целевой группы. Перенос в «Мой план» выполняйте отдельным действием move-stage.

### NEW-1007-15: Управление стадиями задач и чтение плана дня

Можно [создавать стадии канбана группы и «Моего плана»](/docs/tasks/stages), [изменять](/docs/task-stages/update) и [удалять пустые стадии](/docs/task-stages/delete), [переносить задачи с порядком](/docs/tasks/move-stage), [читать право сортировки](/docs/tasks/stages-can-move) и [план дня](/docs/tasks/day-plan). Создание без позиции добавляет колонку в конец. Явная первая позиция меняет стадию группы по умолчанию, перестановка может перенести задачи без записи в истории. Чтение плана дня сохраняет обрезку до 30 задач, как виджет Битрикс24. Фильтр stagesId показывает позицию в «Моём плане» отдельно от stageId задачи.

### NEW-1007-16: Управление пользовательскими полями задач

Добавлены `GET/POST /v1/userfields/tasks`, `GET /v1/userfields/tasks/types` и `GET/PATCH/DELETE /v1/userfields/tasks/:id` со скоупом `task`. Доступны схема, варианты списков с `xmlId`, создание и изменение подписей. Поле общее для всех задач портала; удаление необратимо стирает значения во всех задачах. Системные поля защищены от записи. PATCH отвергает неизменяемые свойства, пустые изменения и варианты списка без значения, сохраняя прежний `xmlId`, если он не передан.

### BC-1007-17: Остаток товара на складе и защита базовой валюты

> Поддержка старого формата до: не предусмотрена

**Было**

[PATCH /v1/currencies/:id](/docs/entities/currencies/update) принимал `base` и подтверждал обновление, хотя базовая валюта не менялась.

**Стало**

Поле `base` и его псевдоним `BASE` только для чтения: обновление возвращает `400 READONLY_FIELD`. Сменить базовую валюту можно в интерфейсе Битрикс24.

Добавлено чтение [GET /v1/warehouses/:id/stock/:recordId](/docs/entities/warehouses/stock-record). Строка другого склада, отсутствующая или недоступная строка возвращает `404 ENTITY_NOT_FOUND`. Остаток и резерв могут быть `null`, резерв может превышать остаток.

[GET /v1/warehouses/:id/stock](/docs/entities/warehouses/stock) принимает необязательный `productId` для выбора товара на складе. Некорректный идентификатор возвращает `400 INVALID_PARAMS`. Другие фильтры по-прежнему не поддерживаются.

**Что делать интеграторам**

Уберите `base` из тела обновления валюты. Для выбора товара передавайте `productId`, для чтения строки используйте её `recordId` из списка остатков.
