[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"docs-entities\u002Factivities\u002Fconfigurable":3,"docs-tabs-entities\u002Factivities\u002Fconfigurable":6},{"content":4,"lastmod":5},"# Конфигурируемые дела\n\nКонфигурируемое дело — запись в таймлайне CRM-сущности с собственным оформлением: иконкой, заголовком, блоками тела и кнопками. Внешний вид задаёт структура `layout`. Подходит для интеграций, которые показывают в таймлайне сделки, лида, контакта или компании карточку звонка, заявки, доставки или другого внешнего события.\n\nРаздел содержит только создание, чтение и обновление. Удаление и список — через общий API дел: [`DELETE \u002Fv1\u002Factivities\u002F:id`](\u002Fdocs\u002Fentities\u002Factivities) и [`GET \u002Fv1\u002Factivities`](\u002Fdocs\u002Fentities\u002Factivities).\n\nБитрикс24 API: `crm.activity.configurable.*`\nСкоуп: `crm`\n\n## Операции\n\n- [Создать дело](.\u002Fconfigurable\u002Fcreate.md) — `POST \u002Fv1\u002Factivity-configurable`\n- [Получить дело](.\u002Fconfigurable\u002Fget.md) — `GET \u002Fv1\u002Factivity-configurable\u002F:id`\n- [Обновить дело](.\u002Fconfigurable\u002Fupdate.md) — `PATCH \u002Fv1\u002Factivity-configurable\u002F:id`\n\n## Когда использовать\n\n- Звонок из внешней телефонии показывается в таймлайне сделки карточкой с кнопкой действия.\n- Заявка из внешнего сервиса отображается с действиями «Подтвердить» и «Отклонить».\n- Доставка или внешнее событие появляется в карточке лида с собственной иконкой и ссылкой.\n\n## Требования к OAuth-приложению\n\nМетоды работают только в контексте приложения: нужен ключ авторизации `vibe_app_*` с токеном сессии в заголовке `Authorization: Bearer`. Персональный API-ключ `vibe_api_*` Битрикс24 отклоняет с `ERROR_WRONG_CONTEXT`. Изменить дело может только то приложение, которое его создало.\n\nПользовательские типы дел `crm.activity.type.*` регистрируются в Битрикс24 — отдельного эндпоинта в API Вайбкод для них нет. Без своего типа дело создаётся с типом `CONFIGURABLE`.\n\n## Смотрите также\n\n- [Дела](\u002Fdocs\u002Fentities\u002Factivities)\n- [Привязки дел](\u002Fdocs\u002Fentities\u002Factivities\u002Fbindings)\n- [Лог таймлайна](\u002Fdocs\u002Ftimeline-logs)\n- [Ключи и авторизация](\u002Fdocs\u002Fkeys-auth)\n","2026-06-24",{"configurable\u002Fcreate.md":7,"configurable\u002Fget.md":8,"configurable\u002Fupdate.md":9},"\n## Создать дело\n\n`POST \u002Fv1\u002Factivity-configurable`\n\nСоздаёт конфигурируемое дело в таймлайне CRM-сущности. Набор полей дела задаёт `fields`, внешний вид — `layout`.\n\n## Поля запроса (body)\n\n| Поле | Тип | Обяз. | Описание |\n|------|-----|:-----:|---------|\n| **`ownerTypeId`** | number | да | Тип CRM-сущности:\u003Cbr>1 — лид\u003Cbr>2 — сделка\u003Cbr>3 — контакт\u003Cbr>4 — компания\u003Cbr>7 — предложение\u003Cbr>31 — счёт\u003Cbr>≥128 — смарт-процесс, id типа — в [`GET \u002Fv1\u002Fsmart-processes`](\u002Fdocs\u002Fentities\u002Fsmart-processes\u002Flist) |\n| **`ownerId`** | number | да | ID сущности, в таймлайне которой создаётся дело |\n| **`fields`** | object | да | Поля дела |\n| `fields.typeId` | string | нет | Тип дела. По умолчанию `CONFIGURABLE`. Свой тип регистрируется в Битрикс24 как конфигурируемый в контексте того же приложения |\n| `fields.completed` | boolean | нет | Дело закрыто. Принимает `true`\u002F`false`, `1`\u002F`0`, `Y`\u002F`N` |\n| `fields.deadline` | string | нет | Крайний срок исполнения, ISO 8601. Несовместим с `fields.isIncomingChannel` |\n| `fields.pingOffsets` | number[] | нет | Смещения в минутах относительно `fields.deadline`, в которые формируются напоминания |\n| `fields.isIncomingChannel` | boolean | нет | Дело создано из входящего канала. Принимает `true`\u002F`false`, `1`\u002F`0`, `Y`\u002F`N` |\n| `fields.responsibleId` | number | нет | ID ответственного сотрудника. Список: `GET \u002Fv1\u002Fusers` |\n| `fields.badgeCode` | string | нет | Код значка дела на канбане |\n| `fields.originatorId` | string | нет | ID внешнего источника данных |\n| `fields.originId` | string | нет | ID записи во внешнем источнике |\n| **`layout`** | object | да | Оформление дела в таймлайне |\n| `layout.icon.code` | string | да | Код иконки дела |\n| `layout.header.title` | string | да | Заголовок дела |\n| `layout.body.logo.code` | string | да | Код логотипа в теле. Тело без `logo` Битрикс24 отклоняет |\n| `layout.body.blocks` | object | нет | Именованные блоки тела |\n| `layout.footer.buttons` | object | нет | Кнопки футера |\n\nБлок в `layout.body.blocks` имеет `type` и `properties`. Основные типы блоков:\n\n- `text` — значение\n- `link` — ссылка с действием\n- `lineOfBlocks` — строка из вложенных блоков\n- `withTitle` — блок с подписью\n\nДействие у ссылок и кнопок задаёт поле `type`:\n\n- `redirect` — переход по адресу из поля `uri`\n- `openRestApp` — открытие приложения с параметрами `actionParams`\n- `restEvent` — событие приложению по `id`, для пунктов меню\n\n## Примеры\n\nПримеры приведены только для OAuth-приложения.\n\n### curl — OAuth-приложение\n\n```bash\ncurl -X POST https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Factivity-configurable \\\n  -H \"X-Api-Key: YOUR_APP_KEY\" \\\n  -H \"Authorization: Bearer USER_SESSION_TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"ownerTypeId\": 1,\n    \"ownerId\": 999,\n    \"fields\": { \"typeId\": \"CONFIGURABLE\", \"completed\": true, \"responsibleId\": 1, \"badgeCode\": \"CUSTOM\" },\n    \"layout\": {\n      \"icon\": { \"code\": \"call-completed\" },\n      \"header\": { \"title\": \"Входящий звонок\" },\n      \"body\": {\n        \"logo\": { \"code\": \"call-incoming\" },\n        \"blocks\": {\n          \"phone\": { \"type\": \"text\", \"properties\": { \"value\": \"+7 999 888 7777\" } }\n        }\n      },\n      \"footer\": {\n        \"buttons\": {\n          \"startCall\": {\n            \"title\": \"О клиенте\",\n            \"type\": \"primary\",\n            \"action\": { \"type\": \"openRestApp\", \"actionParams\": { \"clientId\": 456 } }\n          }\n        }\n      }\n    }\n  }'\n```\n\n### JavaScript — OAuth-приложение\n\n```javascript\nconst res = await fetch('https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Factivity-configurable', {\n  method: 'POST',\n  headers: {\n    'X-Api-Key': 'YOUR_APP_KEY',\n    'Authorization': 'Bearer USER_SESSION_TOKEN',\n    'Content-Type': 'application\u002Fjson',\n  },\n  body: JSON.stringify({\n    ownerTypeId: 1,\n    ownerId: 999,\n    fields: { typeId: 'CONFIGURABLE', completed: true, responsibleId: 1, badgeCode: 'CUSTOM' },\n    layout: {\n      icon: { code: 'call-completed' },\n      header: { title: 'Входящий звонок' },\n      body: {\n        logo: { code: 'call-incoming' },\n        blocks: {\n          phone: { type: 'text', properties: { value: '+7 999 888 7777' } },\n        },\n      },\n      footer: {\n        buttons: {\n          startCall: {\n            title: 'О клиенте',\n            type: 'primary',\n            action: { type: 'openRestApp', actionParams: { clientId: 456 } },\n          },\n        },\n      },\n    },\n  }),\n})\n\nconst { data } = await res.json()\nconsole.log('Activity ID:', data.activity.id)\n```\n\n## Поля ответа\n\n| Поле | Тип | Описание |\n|------|-----|---------|\n| `success` | boolean | Всегда `true` при успехе |\n| `data.activity.id` | number | ID созданного дела |\n\n## Пример ответа\n\n```json\n{\n  \"success\": true,\n  \"data\": { \"activity\": { \"id\": 8053 } }\n}\n```\n\n## Пример ответа при ошибке\n\n422 — не заполнен `logo` в теле:\n\n```json\n{\n  \"success\": false,\n  \"error\": {\n    \"code\": \"BITRIX_ERROR\",\n    \"message\": \"Поле logo в BodyDto должно быть заполнено.\"\n  }\n}\n```\n\n## Ошибки\n\n| HTTP | Код | Описание |\n|------|-----|---------|\n| 400 | `VALIDATION_ERROR` | Не передан `ownerTypeId`, `ownerId`, `fields` или `layout` |\n| 422 | `BITRIX_ERROR` | Битрикс24 отклонил запрос: пустой `layout`, не заполнен `layout.body.logo`, вызов вне контекста приложения, входящее дело с `deadline` |\n| 403 | `SCOPE_DENIED` | Ключу не хватает скоупа `crm` |\n| 401 | `TOKEN_MISSING` | Ключ авторизации передан без токена сессии в заголовке `Authorization: Bearer` |\n\nПолный список общих ошибок API — [Ошибки](\u002Fdocs\u002Ferrors).\n\n## Известные особенности\n\n**Только в контексте приложения.** Нужен ключ авторизации `vibe_app_*` с токеном сессии в заголовке `Authorization: Bearer`. Персональный API-ключ `vibe_api_*` Битрикс24 отклоняет с `ERROR_WRONG_CONTEXT`.\n\n## Смотрите также\n\n- [Получить дело](\u002Fdocs\u002Fentities\u002Factivities\u002Fconfigurable\u002Fget)\n- [Обновить дело](\u002Fdocs\u002Fentities\u002Factivities\u002Fconfigurable\u002Fupdate)\n- [Конфигурируемые дела](\u002Fdocs\u002Fentities\u002Factivities\u002Fconfigurable)\n- [Дела](\u002Fdocs\u002Fentities\u002Factivities)\n","\n## Получить дело\n\n`GET \u002Fv1\u002Factivity-configurable\u002F:id`\n\nВозвращает конфигурируемое дело по ID: его поля и структуру оформления.\n\n## Параметры\n\n| Параметр | Тип | Обяз. | Описание |\n|----------|-----|:-----:|---------|\n| `id` (path) | number | да | ID дела. Получен при создании |\n\n## Примеры\n\nПримеры приведены только для OAuth-приложения.\n\n### curl — OAuth-приложение\n\n```bash\ncurl https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Factivity-configurable\u002F8053 \\\n  -H \"X-Api-Key: YOUR_APP_KEY\" \\\n  -H \"Authorization: Bearer USER_SESSION_TOKEN\"\n```\n\n### JavaScript — OAuth-приложение\n\n```javascript\nconst res = await fetch('https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Factivity-configurable\u002F8053', {\n  headers: {\n    'X-Api-Key': 'YOUR_APP_KEY',\n    'Authorization': 'Bearer USER_SESSION_TOKEN',\n  },\n})\n\nconst { data } = await res.json()\nconsole.log(data.activity.fields.typeId, data.activity.layout)\n```\n\n## Поля ответа\n\n| Поле | Тип | Описание |\n|------|-----|---------|\n| `success` | boolean | Всегда `true` при успехе |\n| `data.activity.id` | number | ID дела |\n| `data.activity.ownerTypeId` | number | Тип CRM-сущности:\u003Cbr>1 — лид\u003Cbr>2 — сделка\u003Cbr>3 — контакт\u003Cbr>4 — компания\u003Cbr>7 — предложение\u003Cbr>31 — счёт\u003Cbr>≥128 — смарт-процесс, id типа — в [`GET \u002Fv1\u002Fsmart-processes`](\u002Fdocs\u002Fentities\u002Fsmart-processes\u002Flist) |\n| `data.activity.ownerId` | number | ID сущности-владельца |\n| `data.activity.fields.typeId` | string | Тип дела. Для дел без своего типа — `CONFIGURABLE` |\n| `data.activity.fields.completed` | boolean | Дело закрыто |\n| `data.activity.fields.deadline` | string | Крайний срок исполнения, ISO 8601. `null`, если не задан |\n| `data.activity.fields.pingOffsets` | number[] | Смещения в минутах относительно `deadline`, в которые сформированы напоминания. Пустой массив, если напоминаний нет |\n| `data.activity.fields.isIncomingChannel` | boolean | Дело создано из входящего канала |\n| `data.activity.fields.responsibleId` | number | ID ответственного сотрудника |\n| `data.activity.fields.badgeCode` | string | Код значка дела на канбане. Пустая строка, если не задан |\n| `data.activity.fields.originatorId` | string | ID внешнего источника данных. `null`, если не задан |\n| `data.activity.fields.originId` | string | ID записи во внешнем источнике. `null`, если не задан |\n| `data.activity.layout.icon` | object | Иконка дела — поле `code` |\n| `data.activity.layout.header` | object | Шапка — `title`. Битрикс24 может добавить пометки `tags` |\n| `data.activity.layout.body` | object | Тело — логотип `logo` и именованные блоки `blocks` |\n| `data.activity.layout.footer` | object | Футер — кнопки `buttons` и меню `menu` |\n\n## Пример ответа\n\n```json\n{\n  \"success\": true,\n  \"data\": {\n    \"activity\": {\n      \"id\": 8053,\n      \"ownerTypeId\": 1,\n      \"ownerId\": 2975,\n      \"fields\": {\n        \"typeId\": \"CONFIGURABLE\",\n        \"completed\": false,\n        \"deadline\": \"2025-02-01T01:00:00+03:00\",\n        \"pingOffsets\": [],\n        \"isIncomingChannel\": false,\n        \"responsibleId\": 1,\n        \"badgeCode\": \"\",\n        \"originatorId\": null,\n        \"originId\": null\n      },\n      \"layout\": {\n        \"icon\": { \"code\": \"call-completed\" },\n        \"header\": { \"title\": \"Входящий звонок\" },\n        \"body\": { \"logo\": { \"code\": \"call-incoming\" }, \"blocks\": {} },\n        \"footer\": { \"buttons\": {} }\n      }\n    }\n  }\n}\n```\n\n## Пример ответа при ошибке\n\n404 — дело не найдено:\n\n```json\n{\n  \"success\": false,\n  \"error\": {\n    \"code\": \"ENTITY_NOT_FOUND\",\n    \"message\": \"Элемент не найден\"\n  }\n}\n```\n\n## Ошибки\n\n| HTTP | Код | Описание |\n|------|-----|---------|\n| 400 | `VALIDATION_ERROR` | `id` в пути не является числом |\n| 404 | `ENTITY_NOT_FOUND` | Дела с указанным `id` не существует |\n| 403 | `SCOPE_DENIED` | Ключу не хватает скоупа `crm` |\n| 401 | `TOKEN_MISSING` | Ключ авторизации передан без токена сессии в заголовке `Authorization: Bearer` |\n\nПолный список общих ошибок API — [Ошибки](\u002Fdocs\u002Ferrors).\n\n## Известные особенности\n\n**Только в контексте приложения.** Нужен ключ авторизации `vibe_app_*` с токеном сессии в заголовке `Authorization: Bearer`. Персональный API-ключ `vibe_api_*` Битрикс24 отклоняет с `ERROR_WRONG_CONTEXT`.\n\n## Смотрите также\n\n- [Создать дело](\u002Fdocs\u002Fentities\u002Factivities\u002Fconfigurable\u002Fcreate)\n- [Обновить дело](\u002Fdocs\u002Fentities\u002Factivities\u002Fconfigurable\u002Fupdate)\n- [Конфигурируемые дела](\u002Fdocs\u002Fentities\u002Factivities\u002Fconfigurable)\n","\n## Обновить дело\n\n`PATCH \u002Fv1\u002Factivity-configurable\u002F:id`\n\nПерезаписывает конфигурируемое дело. `fields` и `layout` передаются целиком — метод заменяет дело, а не обновляет отдельные поля. Незаданные значения сбрасываются.\n\n## Параметры\n\n| Параметр | Тип | Обяз. | Описание |\n|----------|-----|:-----:|---------|\n| `id` (path) | number | да | ID дела. Получен при создании |\n\n## Поля запроса (body)\n\n| Поле | Тип | Обяз. | Описание |\n|------|-----|:-----:|---------|\n| **`fields`** | object | да | Поля дела |\n| `fields.typeId` | string | нет | Тип дела. По умолчанию `CONFIGURABLE` |\n| `fields.completed` | boolean | нет | Дело закрыто. Принимает `true`\u002F`false`, `1`\u002F`0`, `Y`\u002F`N` |\n| `fields.deadline` | string | нет | Крайний срок исполнения, ISO 8601. Несовместим с `fields.isIncomingChannel` |\n| `fields.pingOffsets` | number[] | нет | Смещения в минутах относительно `fields.deadline`, в которые формируются напоминания |\n| `fields.isIncomingChannel` | boolean | нет | Дело создано из входящего канала. Принимает `true`\u002F`false`, `1`\u002F`0`, `Y`\u002F`N` |\n| `fields.responsibleId` | number | нет | ID ответственного сотрудника. Список: `GET \u002Fv1\u002Fusers` |\n| `fields.badgeCode` | string | нет | Код значка дела на канбане |\n| `fields.originatorId` | string | нет | ID внешнего источника данных |\n| `fields.originId` | string | нет | ID записи во внешнем источнике |\n| **`layout`** | object | да | Оформление дела |\n| `layout.icon.code` | string | да | Код иконки дела |\n| `layout.header.title` | string | да | Заголовок дела |\n| `layout.body.logo.code` | string | да | Код логотипа в теле. Тело без `logo` Битрикс24 отклоняет |\n| `layout.body.blocks` | object | нет | Именованные блоки тела |\n| `layout.footer.buttons` | object | нет | Кнопки футера |\n\nБлок в `layout.body.blocks` имеет `type` и `properties`. Основные типы блоков:\n\n- `text` — значение\n- `link` — ссылка с действием\n- `lineOfBlocks` — строка из вложенных блоков\n- `withTitle` — блок с подписью\n\nДействие у ссылок и кнопок задаёт поле `type`:\n\n- `redirect` — переход по адресу из поля `uri`\n- `openRestApp` — открытие приложения с параметрами `actionParams`\n- `restEvent` — событие приложению по `id`, для пунктов меню\n\n## Примеры\n\nПримеры приведены только для OAuth-приложения.\n\n### curl — OAuth-приложение\n\n```bash\ncurl -X PATCH https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Factivity-configurable\u002F8053 \\\n  -H \"X-Api-Key: YOUR_APP_KEY\" \\\n  -H \"Authorization: Bearer USER_SESSION_TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"fields\": { \"typeId\": \"CONFIGURABLE\", \"completed\": true, \"responsibleId\": 5 },\n    \"layout\": {\n      \"icon\": { \"code\": \"call-completed\" },\n      \"header\": { \"title\": \"Звонок обработан\" },\n      \"body\": { \"logo\": { \"code\": \"call-incoming\" }, \"blocks\": {} },\n      \"footer\": { \"buttons\": {} }\n    }\n  }'\n```\n\n### JavaScript — OAuth-приложение\n\n```javascript\nconst res = await fetch('https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Factivity-configurable\u002F8053', {\n  method: 'PATCH',\n  headers: {\n    'X-Api-Key': 'YOUR_APP_KEY',\n    'Authorization': 'Bearer USER_SESSION_TOKEN',\n    'Content-Type': 'application\u002Fjson',\n  },\n  body: JSON.stringify({\n    fields: { typeId: 'CONFIGURABLE', completed: true, responsibleId: 5 },\n    layout: {\n      icon: { code: 'call-completed' },\n      header: { title: 'Звонок обработан' },\n      body: { logo: { code: 'call-incoming' }, blocks: {} },\n      footer: { buttons: {} },\n    },\n  }),\n})\n\nconst { data } = await res.json()\n```\n\n## Поля ответа\n\n| Поле | Тип | Описание |\n|------|-----|---------|\n| `success` | boolean | Всегда `true` при успехе |\n| `data.activity.id` | number | ID обновлённого дела |\n\n## Пример ответа\n\n```json\n{\n  \"success\": true,\n  \"data\": { \"activity\": { \"id\": 8053 } }\n}\n```\n\n## Пример ответа при ошибке\n\n404 — дело не найдено:\n\n```json\n{\n  \"success\": false,\n  \"error\": {\n    \"code\": \"ENTITY_NOT_FOUND\",\n    \"message\": \"Элемент не найден\"\n  }\n}\n```\n\n## Ошибки\n\n| HTTP | Код | Описание |\n|------|-----|---------|\n| 400 | `VALIDATION_ERROR` | `id` в пути не число, либо не передан `fields` или `layout` |\n| 404 | `ENTITY_NOT_FOUND` | Дела с указанным `id` не существует |\n| 422 | `BITRIX_ERROR` | Битрикс24 отклонил запрос: дело создано другим приложением `ERROR_WRONG_APPLICATION`, не заполнен `layout.body.logo`, пустой `layout` |\n| 403 | `SCOPE_DENIED` | Ключу не хватает скоупа `crm` |\n| 401 | `TOKEN_MISSING` | Ключ авторизации передан без токена сессии в заголовке `Authorization: Bearer` |\n\nПолный список общих ошибок API — [Ошибки](\u002Fdocs\u002Ferrors).\n\n## Известные особенности\n\n**Только в контексте приложения.** Нужен ключ авторизации `vibe_app_*` с токеном сессии в заголовке `Authorization: Bearer`. Персональный API-ключ `vibe_api_*` Битрикс24 отклоняет с `ERROR_WRONG_CONTEXT`.\n\n**Обновляет только приложение-автор.** Изменить дело может лишь то приложение, которое его создало. Чужое дело Битрикс24 отклоняет с `ERROR_WRONG_APPLICATION`.\n\n## Смотрите также\n\n- [Создать дело](\u002Fdocs\u002Fentities\u002Factivities\u002Fconfigurable\u002Fcreate)\n- [Получить дело](\u002Fdocs\u002Fentities\u002Factivities\u002Fconfigurable\u002Fget)\n- [Конфигурируемые дела](\u002Fdocs\u002Fentities\u002Factivities\u002Fconfigurable)\n"]