Переместить привязку

POST /v1/activities/:activityId/bindings/move

Переносит привязку дела с одной CRM-сущности на другую того же типа: старая привязка снимается, новая создаётся одним вызовом.

Параметры

Параметр Тип Обяз. Описание
activityId (path) number да ID дела. Список: GET /v1/activities

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

Поле Тип Обяз. Описание
sourceEntityTypeId number да Числовой код типа исходной сущности:
1 — лид
2 — сделка
3 — контакт
4 — компания
7 — предложение
31 — счёт
≥128 — смарт-процесс, его код — в `GET /v1/smart-processes`
sourceEntityId number да ID исходной сущности
targetEntityTypeId number да Числовой код типа целевой сущности. Должен совпадать с sourceEntityTypeId
targetEntityId number да ID целевой сущности

Примеры

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

Terminal
curl -X POST https://vibecode.bitrix24.tech/v1/activities/3631/bindings/move \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "sourceEntityTypeId": 3, "sourceEntityId": 9, "targetEntityTypeId": 3, "targetEntityId": 17 }'

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

Terminal
curl -X POST https://vibecode.bitrix24.tech/v1/activities/3631/bindings/move \
  -H "X-Api-Key: YOUR_APP_KEY" \
  -H "Authorization: Bearer USER_SESSION_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "sourceEntityTypeId": 3, "sourceEntityId": 9, "targetEntityTypeId": 3, "targetEntityId": 17 }'

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

javascript
const res = await fetch('https://vibecode.bitrix24.tech/v1/activities/3631/bindings/move', {
  method: 'POST',
  headers: {
    'X-Api-Key': 'YOUR_API_KEY',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    sourceEntityTypeId: 3,
    sourceEntityId: 9,
    targetEntityTypeId: 3,
    targetEntityId: 17,
  }),
})

const { data } = await res.json()

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

javascript
const res = await fetch('https://vibecode.bitrix24.tech/v1/activities/3631/bindings/move', {
  method: 'POST',
  headers: {
    'X-Api-Key': 'YOUR_APP_KEY',
    'Authorization': 'Bearer USER_SESSION_TOKEN',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    sourceEntityTypeId: 3,
    sourceEntityId: 9,
    targetEntityTypeId: 3,
    targetEntityId: 17,
  }),
})

const { data } = await res.json()

Поля ответа

Поле Тип Описание
success boolean Всегда true при успехе
data.activityId number ID дела
data.sourceEntityTypeId number Числовой код типа исходной сущности
data.sourceEntityId number ID исходной сущности
data.targetEntityTypeId number Числовой код типа целевой сущности
data.targetEntityId number ID целевой сущности
data.moved boolean Всегда true — подтверждение переноса

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

JSON
{
  "success": true,
  "data": {
    "activityId": 3631,
    "sourceEntityTypeId": 3,
    "sourceEntityId": 9,
    "targetEntityTypeId": 3,
    "targetEntityId": 17,
    "moved": true
  }
}

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

422 — исходная и целевая сущности разного типа:

JSON
{
  "success": false,
  "error": {
    "code": "BITRIX_ERROR",
    "message": "Source and target entity types are not equal"
  }
}

Ошибки

HTTP Код Описание
400 INVALID_PARAMS activityId или любое из полей source* / target* не положительное целое число
404 ENTITY_NOT_FOUND Дела с указанным activityId не существует
422 BITRIX_ERROR Тип исходной сущности не совпадает с типом целевой
403 SCOPE_DENIED Ключу не хватает скоупа crm
401 TOKEN_MISSING У ключа нет настроенных токенов

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

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

Перенос работает только в пределах одного типа. Чтобы перенести дело на сущность другого типа, move не подходит — сделайте это в два шага:

  1. Привяжите дело ко второй сущности — `POST /v1/activities/:activityId/bindings`.
  2. Снимите привязку к первой — `DELETE /v1/activities/:activityId/bindings`.

Такой порядок не нарушает запрет на снятие последней привязки — дело всё время остаётся привязанным минимум к одной сущности.

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