[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"docs-openlines\u002Foperators":3,"docs-tabs-openlines\u002Foperators":6},{"content":4,"lastmod":5},"## Операторы (real-time)\n\n> ⚠️ **Метод выходит в обновлении `imopenlines 26.700.0` и доступен пока не на всех порталах Битрикс24.** Если обновление на ваш портал ещё не пришло, API вернёт `422 METHOD_NOT_YET_AVAILABLE` — это признак того, что метод на портале ещё не выпущен, а не ошибка интеграции.\n\n`GET \u002Fv1\u002Fopenlines\u002Foperators`\n\nСписок операторов линии с текущим статусом и нагрузкой — для real-time виджетов мониторинга контакт-центра.\n\nДанные почти real-time: статус и счётчик активных сессий читаются раздельно, без единой транзакции. Для виджета опрашивайте метод не чаще одного раза в 30 секунд.\n\n## Поля запроса (query)\n\n| Параметр | Тип | Обяз. | Описание |\n|------|-----|:-----:|---------|\n| `configId` | number | нет | Идентификатор линии. Источник: [`GET \u002Fv1\u002Fopenline-configs`](\u002Fdocs\u002Fopenlines\u002Fconfig\u002Flist) |\n| `configIdList` | number[] | нет | Список линий. Форма — `configIdList=3,5` или `configIdList[]=3&configIdList[]=5` |\n| `userId` | number | нет | Идентификатор оператора. Источник: [`GET \u002Fv1\u002Fusers`](\u002Fdocs\u002Fentities\u002Fusers) |\n| `userIdList` | number[] | нет | Список операторов, те же две формы |\n| `status` | string | нет | Статус: `online`, `offline` или `pause` |\n| `hasFreeSlots` | boolean | нет | Только операторы со свободными слотами. Принимает `true`\u002F`false` и `Y`\u002F`N` |\n| `limit` | number | нет | Размер страницы, 1..200 (по умолчанию 50) |\n| `offset` | number | нет | Смещение для пагинации (по умолчанию 0) |\n\nСписочные параметры принимают либо строку через запятую (`configIdList=3,5`), либо повторяющуюся скобочную форму (`configIdList[]=3&configIdList[]=5`). Голое повторение параметра без скобок (`configIdList=3&configIdList=5`) не поддерживается.\n\n## Примеры\n\n### curl — личный ключ\n\n```bash\ncurl \"https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Fopenlines\u002Foperators?configId=3&status=online\" \\\n  -H \"X-Api-Key: YOUR_API_KEY\"\n```\n\n### curl — OAuth-приложение\n\n```bash\ncurl \"https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Fopenlines\u002Foperators?configId=3&status=online\" \\\n  -H \"X-Api-Key: YOUR_APP_KEY\" \\\n  -H \"Authorization: Bearer USER_SESSION_TOKEN\"\n```\n\n### JavaScript — личный ключ\n\n```javascript\nconst res = await fetch('https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Fopenlines\u002Foperators?configId=3&status=online', {\n  headers: { 'X-Api-Key': 'YOUR_API_KEY' },\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\u002Foperators?configId=3&status=online', {\n  headers: {\n    'X-Api-Key': 'YOUR_APP_KEY',\n    'Authorization': 'Bearer USER_SESSION_TOKEN',\n  },\n})\nconst { data } = await res.json()\n```\n\n## Поля ответа\n\nОтвет — `{ \"success\": true, \"data\": { \"operators\": [...], \"hasNextPage\": bool } }`.\n\n| Ключ | Описание |\n|---|---|\n| `operators` | Массив операторов |\n| `operators[].userId` | Идентификатор пользователя-оператора |\n| `operators[].configId` | Идентификатор линии |\n| `operators[].status` | Статус: `online` \u002F `offline` \u002F `pause` |\n| `operators[].activeSessions` | Количество активных (незакрытых) сессий прямо сейчас |\n| `operators[].maxChat` | Лимит чатов оператора (из настроек линии) |\n| `operators[].freeSlots` | Свободные слоты (`maxChat − activeSessions`) |\n| `operators[].lastActivityDate` | Дата последней активности оператора в линии |\n| `hasNextPage` | Есть ли следующая страница |\n\n## Пример ответа\n\n```json\n{\n  \"success\": true,\n  \"data\": {\n    \"operators\": [\n      { \"userId\": 42, \"configId\": 3, \"status\": \"online\", \"activeSessions\": 2, \"maxChat\": 5, \"freeSlots\": 3, \"lastActivityDate\": \"2026-06-15T15:01:00+03:00\" },\n      { \"userId\": 51, \"configId\": 3, \"status\": \"pause\", \"activeSessions\": 0, \"maxChat\": 5, \"freeSlots\": 5, \"lastActivityDate\": \"2026-06-15T14:20:00+03:00\" }\n    ],\n    \"hasNextPage\": false\n  }\n}\n```\n\n## Пример ответа при ошибке\n\n`422` — недопустимое значение `status` (значение уходит в Битрикс24, тот отклоняет фильтр):\n\n```json\n{\n  \"success\": false,\n  \"error\": { \"code\": \"BITRIX_ERROR\", \"message\": \"Недопустимое значение фильтра\", \"b24Code\": \"INVALID_FILTER\" }\n}\n```\n\n## Ошибки\n\n| HTTP | Код | Когда |\n|---|---|---|\n| 403 | `B24_TARIFF_RESTRICTION` | Тариф не включает статистику Открытых линий (`report_open_lines`) |\n| 400 | `INVALID_PARAMS` | Нечисловое значение в `limit`\u002F`offset` или элементе списка |\n| 422 | `BITRIX_ERROR` (`error.b24Code: INVALID_FILTER`) | Недопустимое значение `status` |\n| 422 | `BITRIX_ERROR` (`error.b24Code: OFFSET_TOO_LARGE`) | `offset` превышает максимум при фильтре `status`\u002F`hasFreeSlots` — сузьте фильтры |\n| 422 | `METHOD_NOT_YET_AVAILABLE` | Обновление `imopenlines 26.700.0` ещё не приехало на портал |\n\nПолный список системных кодов — [Ошибки API](\u002Fdocs\u002Ferrors).\n\n## Смотрите также\n\n- [Агрегаты по линии за период](\u002Fdocs\u002Fopenlines\u002Fstats)\n- [Статистика Открытых линий](\u002Fdocs\u002Fopenlines)\n","2026-07-21",{}]