[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"docs-keys-auth\u002Faccess-mode":3,"docs-tabs-keys-auth\u002Faccess-mode":6},{"content":4,"lastmod":5},"# Режим доступа\n\nУ каждого ключа есть поле `accessMode` — оно определяет, разрешает ли ключ запись, или ограничивает его операциями чтения. Это настройка, независимая от скоупов: скоупы определяют, к каким разделам данных у ключа есть доступ, а режим доступа — может ли ключ менять эти данные.\n\n## Два режима\n\n| Режим | Значение в API | Что разрешено |\n|-------|----------------|---------------|\n| **Чтение и запись** | `READWRITE` | Все операции — чтение и запись. Значение по умолчанию для новых ключей. |\n| **Только чтение** | `READONLY` | Чтение разрешено. Запись возвращает `403 WRITE_BLOCKED_READONLY_KEY` — кроме двух исключений в разделе «Приложения»: таким ключом можно создать приложение в режиме `READONLY` и изменить у приложения поля, не затрагивающие набор скоупов. |\n\n## Что блокируется в режиме «только чтение»\n\n- **API-ключи и ключи авторизации (`vibe_api_`, `vibe_app_`)** — блокируется любой запрос, который выполняет операцию записи: создание, обновление, удаление, действия над сущностями. Запросы чтения и агрегация (`POST \u002Fv1\u002F\u003Centity>\u002Faggregate`) выполняются без ограничений, несмотря на метод `POST`.\n- **Менеджмент-ключи (`vibe_live_`)** — блокировка идёт по HTTP-методу: `POST`, `PATCH`, `PUT` и `DELETE` отклоняются, `GET` и `HEAD` проходят. Это значит, что менеджмент-ключ в режиме «только чтение» не может создавать новые ключи, менять портал или отправлять обратную связь, но может читать настройки и журнал событий.\n\n## Как узнать режим ключа\n\nДействующий режим возвращает `GET \u002Fv1\u002Fme` в поле `data.accessMode`:\n\n```bash\ncurl -H \"X-Api-Key: YOUR_API_KEY\" \\\n  https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Fme\n```\n\n```json\n{\n  \"success\": true,\n  \"data\": {\n    \"type\": \"personal\",\n    \"portal\": \"mycompany.bitrix24.ru\",\n    \"accessMode\": \"READONLY\",\n    \"scopes\": [\"crm\", \"tasks\"]\n  }\n}\n```\n\nПоказана часть полей ответа. Полное описание — [Самоописание ключа](\u002Fdocs\u002Fkeys-auth\u002Fme).\n\nТот же ответ показывает последствия режима до вызова: у ключа в режиме «только чтение» шесть слотов блока `capabilities` — `apps.create`, `apps.publish`, `apps.bindPlacements`, `servers.create`, `agents.create`, `managedBots.create` — приходят с `available: false` и `reason: \"WRITE_BLOCKED_READONLY_KEY\"`. Сверяйтесь с этим блоком перед запросом. Он покрывает перечисленные шесть слотов, а не каждый эндпоинт: два исключения по приложениям описаны выше.\n\n## Изменение режима\n\nВладелец ключа меняет режим в личном кабинете в разделе [Ключи API](\u002Fkeys):\n\n1. Откройте карточку нужного ключа.\n2. В блоке **Режим доступа** выберите «Только чтение» или «Чтение и запись».\n3. Сохраните изменения — режим применяется к следующему запросу.\n\nПеревыпуск не нужен — режим меняется у действующего ключа без замены значения. При создании нового ключа режим задаётся отдельным переключателем в форме.\n\nАдминистратор портала видит чужие ключи в общем списке и может изменить режим любого ключа на портале. После сохранения владелец получает сообщение от Companion-бота с информацией о том, что режим его ключа был изменён администратором.\n\n## Политика портала по умолчанию\n\nАдминистратор задаёт режим, который применяется ко всем новым ключам портала. Настройка живёт в разделе [Ключи API](\u002Fkeys) в блоке «Политика портала по умолчанию» и видна только администраторам.\n\nВозможные значения:\n\n- **Чтение и запись (`READWRITE`)** — значение по умолчанию для портала. Любой пользователь создаёт ключи с любым режимом на своё усмотрение.\n- **Только чтение (`READONLY`)** — обычные участники портала могут создавать только ключи с режимом «только чтение». Попытка выпустить ключ с режимом `READWRITE` отклоняется с кодом `403 KEY_POLICY_READONLY_REQUIRED`. Администратор портала под это ограничение не подпадает и при необходимости создаёт ключи с записью или меняет режим чужого ключа в его карточке.\n\nСуществующие ключи политика портала не затрагивает — она применяется только в момент создания нового ключа. Для уже выпущенных ключей администратор меняет режим вручную в карточке ключа.\n\n## Пример ответа при блокировке записи\n\n`POST \u002Fv1\u002Fleads` с ключом в режиме `READONLY` возвращает `403`:\n\n```json\n{\n  \"success\": false,\n  \"error\": {\n    \"code\": \"WRITE_BLOCKED_READONLY_KEY\",\n    \"message\": \"Key is in read-only mode. Switch to read+write in \u002Fkeys to enable writes.\",\n    \"details\": {\n      \"method\": \"crm.item.add\",\n      \"keyName\": \"Ключ интеграции\",\n      \"currentMode\": \"READONLY\",\n      \"switchUrl\": \"\u002Fkeys\"\n    }\n  }\n}\n```\n\nЗапрос отклоняется до обращения к порталу, поэтому запись не выполняется даже частично.\n\n## Ошибки\n\n| HTTP | Код | Когда возвращается |\n|------|-----|---------------------|\n| 403 | `WRITE_BLOCKED_READONLY_KEY` | У ключа режим `READONLY`, а вызов выполняет запись |\n| 403 | `KEY_POLICY_READONLY_REQUIRED` | На портале действует политика «только чтение», а участник пытается выпустить ключ с записью |\n\nПолный справочник кодов — [Коды ошибок](\u002Fdocs\u002Ferrors).\n\n## Известные особенности\n\n**Незнакомая операция считается записью.** Классификатор относит операцию к чтению или записи по её типу. Если операция ему неизвестна, она трактуется как запись и блокируется. Ключ в режиме «только чтение» никогда не пропустит запись из-за пробела в классификаторе.\n\n**Поле `details.method` присутствует не всегда.** Оно приходит при блокировке запроса, адресованного порталу, и содержит имя операции, которая была бы выполнена. При блокировке менеджмент-ключа поля нет: там решение принимается по HTTP-методу запроса, а не по операции.\n\n**Ключ без названия отображается как `unnamed`.** Поле `details.keyName` показывает название ключа из личного кабинета. Если название пустое, в ответе приходит `unnamed`.\n\n**Сообщение приходит на английском языке.** Поле `error.message` не локализуется — блокировка срабатывает в точке, где язык пользователя ещё не определён. Интерфейсы переводят по коду `error.code`.\n\n## Смотрите также\n\n- [Создание и использование ключа](\u002Fdocs\u002Fkeys-auth)\n- [Самоописание ключа](\u002Fdocs\u002Fkeys-auth\u002Fme)\n- [Менеджмент-ключи](\u002Fdocs\u002Fmanagement-keys)\n- [Коды ошибок](\u002Fdocs\u002Ferrors)\n","2026-07-21",{}]