[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"docs-openlines\u002Fsessions\u002Ftransfers":3,"docs-tabs-openlines\u002Fsessions\u002Ftransfers":6},{"content":4,"lastmod":5},"## История переназначений\n\n> ⚠️ **Метод выходит в обновлении `imopenlines 26.700.0` и доступен пока не на всех порталах Битрикс24.** Если обновление на ваш портал ещё не пришло, API вернёт `422 METHOD_NOT_YET_AVAILABLE` — это признак того, что метод на портале ещё не выпущен, а не ошибка интеграции.\n\n`POST \u002Fv1\u002Fopenlines\u002Fsessions\u002Ftransfers`\n\nХронологический список переназначений (переводов) по конкретным сессиям — от кого к кому, между какими линиями, по какой причине. До 50 идентификаторов за один вызов.\n\n## Поля запроса (body)\n\n| Поле | Тип | Обяз. | Описание |\n|------|-----|:-----:|---------|\n| `sessionId` | number[] | да | Массив идентификаторов сессий, до 50 элементов. Источник: [`POST \u002Fv1\u002Fopenlines\u002Fsessions\u002Fsearch`](\u002Fdocs\u002Fopenlines\u002Fsessions). Одиночное число тоже принимается и оборачивается в массив |\n\nДубликаты в `sessionId` схлопываются. Несуществующий, чужой или недоступный `sessionId` не приводит к ошибке — для него просто не будет записей в `transfers`.\n\n## Примеры\n\n### curl — личный ключ\n\n```bash\ncurl -X POST \"https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Fopenlines\u002Fsessions\u002Ftransfers\" \\\n  -H \"X-Api-Key: YOUR_API_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{ \"sessionId\": [1024, 1025] }'\n```\n\n### curl — OAuth-приложение\n\n```bash\ncurl -X POST \"https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Fopenlines\u002Fsessions\u002Ftransfers\" \\\n  -H \"X-Api-Key: YOUR_APP_KEY\" \\\n  -H \"Authorization: Bearer USER_SESSION_TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{ \"sessionId\": [1024, 1025] }'\n```\n\n### JavaScript — личный ключ\n\n```javascript\nconst res = await fetch('https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Fopenlines\u002Fsessions\u002Ftransfers', {\n  method: 'POST',\n  headers: {\n    'X-Api-Key': 'YOUR_API_KEY',\n    'Content-Type': 'application\u002Fjson',\n  },\n  body: JSON.stringify({ sessionId: [1024, 1025] }),\n})\nconst { data } = await res.json()\n```\n\n### JavaScript — OAuth-приложение\n\n```javascript\nconst res = await fetch('https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Fopenlines\u002Fsessions\u002Ftransfers', {\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({ sessionId: [1024, 1025] }),\n})\nconst { data } = await res.json()\n```\n\n## Поля ответа\n\nОтвет — `{ \"success\": true, \"data\": { \"transfers\": [...] } }`. Переводы всех запрошенных сессий идут вперемешку, в хронологическом порядке (по `date` по возрастанию). Для группировки по сессиям используйте поле `transfers[].sessionId`.\n\n| Ключ | Описание |\n|---|---|\n| `sessionId` | Идентификатор сессии |\n| `date` | Дата и время переназначения |\n| `fromOperatorId` | Оператор, от которого ушло (`null`, если из очереди) |\n| `toOperatorId` | Оператор, которому пришло (`null`, если в очередь) |\n| `fromConfigId` | Линия-источник |\n| `toConfigId` | Линия-назначение (если перевод в другую линию) |\n| `reason` | Причина: `manual` \u002F `auto` |\n| `mode` | Режим: `MANUAL` \u002F `AUTO` |\n| `type` | Тип: `USER` \u002F `QUEUE` |\n| `initiatorId` | Инициатор перевода (`null`, если автоматически) |\n\n## Пример ответа\n\nСессия 1024 — авто-распределение из очереди, затем ручной перевод оператору; сессия 1025 — без переводов:\n\n```json\n{\n  \"success\": true,\n  \"data\": {\n    \"transfers\": [\n      { \"sessionId\": 1024, \"date\": \"2026-06-15T14:30:05+03:00\", \"fromOperatorId\": null, \"toOperatorId\": 42, \"fromConfigId\": 3, \"toConfigId\": null, \"reason\": \"auto\", \"mode\": \"AUTO\", \"type\": \"USER\", \"initiatorId\": null },\n      { \"sessionId\": 1024, \"date\": \"2026-06-15T14:40:00+03:00\", \"fromOperatorId\": 42, \"toOperatorId\": 51, \"fromConfigId\": 3, \"toConfigId\": null, \"reason\": \"manual\", \"mode\": \"MANUAL\", \"type\": \"USER\", \"initiatorId\": 42 }\n    ]\n  }\n}\n```\n\n## Пример ответа при ошибке\n\n`400` — в батче больше 50 идентификаторов:\n\n```json\n{\n  \"success\": false,\n  \"error\": { \"code\": \"BATCH_LIMIT_EXCEEDED\", \"message\": \"sessionId batch must not exceed 50 unique ids\" }\n}\n```\n\n## Ошибки\n\n| HTTP | Код | Когда |\n|---|---|---|\n| 403 | `B24_TARIFF_RESTRICTION` | Тариф не включает статистику Открытых линий (`report_open_lines`) |\n| 400 | `MISSING_PARAMS` | `sessionId` пустой массив или не передан |\n| 400 | `INVALID_PARAMS` | Нечисловой элемент в `sessionId` |\n| 400 | `BATCH_LIMIT_EXCEEDED` | Больше 50 уникальных идентификаторов (после схлопывания дублей) |\n| 422 | `METHOD_NOT_YET_AVAILABLE` | Обновление `imopenlines 26.700.0` ещё не приехало на портал |\n\nПолный список системных кодов — [Ошибки API](\u002Fdocs\u002Ferrors).\n\n## Смотрите также\n\n- [Метрики по сессиям](\u002Fdocs\u002Fopenlines\u002Fsessions\u002Fstats)\n- [Список сессий](\u002Fdocs\u002Fopenlines\u002Fsessions)\n- [Статистика Открытых линий](\u002Fdocs\u002Fopenlines)\n","2026-07-21",{}]