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

Места встраивания

Место встраивания — точка интерфейса Битрикс24, в которой открывается ваше приложение: вкладка в карточке сделки, пункт левого меню, кнопка на панели списка, панель в чате. Привязка регистрирует приложение в такой точке на аккаунте, отвязка убирает его оттуда.

Скоуп: placement | Базовый URL: https://vibecode.bitrix24.tech/v1 | Авторизация: X-Api-Key (ключ авторизации приложения)

Привязанные места

GET /v1/placements

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

Предусловия вызова — что нужно до привязки.

Примеры

Личный ключ vibe_api_… получает 400 OAUTH_APP_REQUIRED. Используйте ключ OAuth-приложения vibe_app_….

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

Terminal
curl https://vibecode.bitrix24.tech/v1/placements \
  -H "X-Api-Key: YOUR_APP_KEY" \
  -H "Authorization: Bearer USER_SESSION_TOKEN"

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

javascript
const res = await fetch('https://vibecode.bitrix24.tech/v1/placements', {
  headers: {
    'X-Api-Key': 'YOUR_APP_KEY',
    'Authorization': 'Bearer USER_SESSION_TOKEN',
  },
})
const { data } = await res.json()
console.log('Подтверждено аккаунтом:', data.handlers)

Поля ответа

Поле Тип Описание
Полеsuccess Типboolean ОписаниеВсегда true при успехе
Полеdata Типobject ОписаниеСохранённые места приложения и результат сверки с аккаунтом
Полеdata.placements Типstring[] ОписаниеКоды мест встраивания, привязанных приложением
Полеdata.appId Типstring ОписаниеИдентификатор приложения. Список приложений — GET /v1/apps
Полеdata.appTitle Типstring ОписаниеНазвание приложения
Полеdata.handlers Типobject[] ОписаниеДанные обработчиков, полученные от аккаунта. Поле отсутствует, если ответ аккаунта не прочитан. Пустой массив означает, что ответ получен, но привязанные коды в нём не найдены. Исход сверки читайте по data.portalSync, а не по наличию или длине этого массива
Полеdata.handlers[].placement Типstring ОписаниеКод места встраивания
Полеdata.handlers[].handler Типstring ОписаниеАдрес обработчика, зарегистрированный на аккаунте
Полеdata.handlers[].misbound Типboolean Описаниеtrue, когда обработчик зарегистрирован на технический адрес сервера приложения. Такое место не пройдёт авторизацию внутри Битрикс24
Полеdata.handlers[].title Типstring ОписаниеПодпись места. Приходит, если аккаунт вернул её строкой
Полеdata.handlers[].options Типarray | object ОписаниеНастройки места, если аккаунт их вернул. Пустой массив — настроек нет
Полеdata.handlers[].langAll Типobject | array ОписаниеПодписи места по языкам, если аккаунт их вернул. У объекта ключ — код языка, значение — объект с полями TITLE, DESCRIPTION, GROUP_NAME
Полеdata.portalSync Типstring ОписаниеИсход сверки с аккаунтом. ok — аккаунт вернул все привязанные коды, drift — часть кодов аккаунт не вернул, unknown — сверка не выполнялась. Приходит в каждом успешном ответе
Полеdata.portalSyncReason Типstring ОписаниеПочему portalSync не равен ok. no_oauth_session — токен сессии не передан, empty_vibe_list — у приложения нет привязанных мест, b24_unreachable — ответ аккаунта получить не удалось, unpublished — приложение снято с каталога, снятые места расхождением не считаются, missing_on_portal — аккаунт не вернул часть кодов. Отсутствует при ok
Полеdata.missingOnPortal Типstring[] ОписаниеКоды, которые числятся привязанными в Вайбкод и не вернулись от аккаунта. Приходит только при portalSync равном drift
Полеwarnings Типstring[] ОписаниеПоявляется, когда хотя бы у одного места misbound равен true или когда portalSync равен drift

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

Токен сессии передан, аккаунт вернул оба привязанных кода — portalSync равен ok:

JSON
{
  "success": true,
  "data": {
    "placements": ["LEFT_MENU", "CRM_DEAL_DETAIL_TAB"],
    "appId": "3d5f7a91-2b4c-4e8f-9a01-6c7d8e9f0a1b",
    "appTitle": "Дашборд продаж",
    "handlers": [
      {
        "placement": "CRM_DEAL_DETAIL_TAB",
        "handler": "https://example.com/tab",
        "misbound": false,
        "title": "Документы по сделке",
        "options": [],
        "langAll": {
          "en": { "TITLE": "Документы по сделке", "DESCRIPTION": "", "GROUP_NAME": "" },
          "ru": { "TITLE": "Документы по сделке", "DESCRIPTION": "", "GROUP_NAME": "" }
        }
      },
      {
        "placement": "LEFT_MENU",
        "handler": "https://example.com/menu",
        "misbound": false,
        "title": "Дашборд продаж",
        "options": [],
        "langAll": {}
      }
    ],
    "portalSync": "ok"
  }
}

Аккаунт не вернул привязанный код — расхождение, код назван в missingOnPortal:

JSON
{
  "success": true,
  "data": {
    "placements": ["LEFT_MENU"],
    "appId": "3d5f7a91-2b4c-4e8f-9a01-6c7d8e9f0a1b",
    "appTitle": "Дашборд продаж",
    "handlers": [],
    "portalSync": "drift",
    "portalSyncReason": "missing_on_portal",
    "missingOnPortal": ["LEFT_MENU"]
  },
  "warnings": [
    "Placements LEFT_MENU are listed as bound but were not returned by the Bitrix24 account; re-bind via POST /v1/placements/bind to restore them on the portal."
  ]
}

Токен сессии не передан — сверки не было, handlers отсутствует:

JSON
{
  "success": true,
  "data": {
    "placements": ["LEFT_MENU"],
    "appId": "3d5f7a91-2b4c-4e8f-9a01-6c7d8e9f0a1b",
    "appTitle": "Дашборд продаж",
    "portalSync": "unknown",
    "portalSyncReason": "no_oauth_session"
  }
}

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

400 — запрос выполнен личным ключом:

JSON
{
  "success": false,
  "error": {
    "code": "OAUTH_APP_REQUIRED",
    "message": "Placement management is only available for OAuth app keys"
  }
}

Ошибки

HTTP Код Описание
HTTP400 КодOAUTH_APP_REQUIRED ОписаниеЗапрос выполнен личным ключом vibe_api_
HTTP401 КодMISSING_API_KEY ОписаниеНе передан заголовок X-Api-Key
HTTP401 КодINVALID_API_KEY ОписаниеКлюч не опознан: такой строки на платформе нет
HTTP404 КодAPP_NOT_FOUND ОписаниеК ключу не привязано приложение

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

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

  • unknown не равнозначно ok. Значение говорит, что привязка не подтверждена, и распадается на два случая. Аккаунт не читался — причины no_oauth_session, empty_vibe_list, b24_unreachable, поля handlers в ответе нет. Аккаунт прочитан, но его состояние не сопоставляется с нашим списком — причина unpublished, и тогда handlers в ответе есть.
  • Снятое с каталога приложение расхождением не считается. При unpublished вердикт подавлен: снятые места — ожидаемое следствие операции. Аккаунт при этом всё равно опрашивается, потому что снятие с публикации не гарантирует, что все места действительно ушли, — поэтому handlers и признак misbound в ответе остаются. Что остаётся в placements после снятия и как убрать остаток, разобрано на странице самой операции.
  • Расхождение восстанавливается повторной привязкой. Коды из missingOnPortal возвращаются на аккаунт вызовом Привязать место.
  • Коды, которых нет в data.placements, расхождением не считаются. Аккаунт может держать места других приложений, и на portalSync это не влияет.
  • Место с misbound равным true — отдельное состояние, не расхождение. Аккаунт такое место вернул, поэтому в missingOnPortal он не попадает, а portalSync остаётся ok — либо unknown с причиной unpublished, если приложение снято с каталога. Вызов Привязать место подставит платформенный адрес обработчика вместо технического адреса сервера приложения.

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