[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"docs-openlines\u002Fstats":3,"docs-tabs-openlines\u002Fstats":6},{"content":4,"lastmod":5},"## Агрегаты по линии за период\n\n> ⚠️ **Метод выходит в обновлении `imopenlines 26.700.0` и доступен пока не на всех порталах Битрикс24.** Если обновление на ваш портал ещё не пришло, API вернёт `422 METHOD_NOT_YET_AVAILABLE` — это признак того, что метод на портале ещё не выпущен, а не ошибка интеграции.\n\n`POST \u002Fv1\u002Fopenlines\u002Fstats`\n\nСводные показатели Открытых линий за период — счётчики сессий, средние времена, CSAT и разбивки по каналам, часам и операторам. Основной метод для верхнеуровневых виджетов дашборда. Тяжёлый: запрашивайте не чаще одного раза в 30–60 секунд и кэшируйте результат.\n\n## Поля запроса (body)\n\n| Поле | Тип | Обяз. | Описание |\n|------|-----|:-----:|---------|\n| `dateFrom` | string | да | Начало периода, ISO 8601. Период `dateFrom`..`dateTo` — не больше 1 года |\n| `dateTo` | string | да | Конец периода, ISO 8601 |\n| `configId` | number | нет | Идентификатор линии. Источник: [`GET \u002Fv1\u002Fopenline-configs`](\u002Fdocs\u002Fopenlines\u002Fconfig\u002Flist) |\n| `configIdList` | number[] | нет | Список идентификаторов линий |\n| `source` | string | нет | Код канала (connector id), например `livechat` |\n| `sourceList` | string[] | нет | Список кодов каналов |\n| `operatorId` | number | нет | Идентификатор оператора. Источник: [`GET \u002Fv1\u002Fusers`](\u002Fdocs\u002Fentities\u002Fusers) |\n| `operatorIdList` | number[] | нет | Список идентификаторов операторов |\n\nЕсли не задан ни один из `configId*`\u002F`source*`\u002F`operatorId*`, агрегаты считаются по всем линиям, доступным текущему пользователю.\n\n## Примеры\n\n### curl — личный ключ\n\n```bash\ncurl -X POST \"https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Fopenlines\u002Fstats\" \\\n  -H \"X-Api-Key: YOUR_API_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"dateFrom\": \"2026-06-01T00:00:00+03:00\",\n    \"dateTo\": \"2026-06-30T23:59:59+03:00\",\n    \"configId\": 3\n  }'\n```\n\n### curl — OAuth-приложение\n\n```bash\ncurl -X POST \"https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Fopenlines\u002Fstats\" \\\n  -H \"X-Api-Key: YOUR_APP_KEY\" \\\n  -H \"Authorization: Bearer USER_SESSION_TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"dateFrom\": \"2026-06-01T00:00:00+03:00\",\n    \"dateTo\": \"2026-06-30T23:59:59+03:00\",\n    \"configId\": 3\n  }'\n```\n\n### JavaScript — личный ключ\n\n```javascript\nconst res = await fetch('https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Fopenlines\u002Fstats', {\n  method: 'POST',\n  headers: {\n    'X-Api-Key': 'YOUR_API_KEY',\n    'Content-Type': 'application\u002Fjson',\n  },\n  body: JSON.stringify({\n    dateFrom: '2026-06-01T00:00:00+03:00',\n    dateTo: '2026-06-30T23:59:59+03:00',\n    configId: 3,\n  }),\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\u002Fstats', {\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    dateFrom: '2026-06-01T00:00:00+03:00',\n    dateTo: '2026-06-30T23:59:59+03:00',\n    configId: 3,\n  }),\n})\nconst { data } = await res.json()\n```\n\n## Поля ответа\n\nОтвет — `{ \"success\": true, \"data\": {...} }`. Все числовые метрики при отсутствии данных за период возвращаются как `0` (или `0.0`), никогда как `null`.\n\n| Ключ | Описание |\n|---|---|\n| `totalSessions` \u002F `closedSessions` \u002F `spamSessions` | Счётчики сессий за период |\n| `avgWaitAnswer` \u002F `avgSessionDuration` | Средние показатели, секунды |\n| `likeCount` \u002F `dislikeCount` \u002F `votedSessions` \u002F `positiveRate` | CSAT: клиентская оценка — лайк\u002Fдизлайк, `positiveRate` — доля лайков |\n| `kpiFirstAnswerOk` \u002F `kpiFirstAnswerFail` | Счётчики по SLA первого ответа |\n| `sessionsBySource` | Разбивка по каналам, `[{ source, count }]` |\n| `sessionsByHour` | Ровно 24 записи (часы 0–23, часовой пояс сервера портала) |\n| `sessionsByOperator` | Разбивка по операторам, `[{ operatorId, count, avgWaitAnswer, positiveRate }]` |\n\n## Пример ответа\n\n```json\n{\n  \"success\": true,\n  \"data\": {\n    \"totalSessions\": 340,\n    \"closedSessions\": 318,\n    \"spamSessions\": 4,\n    \"avgWaitAnswer\": 42.7,\n    \"avgSessionDuration\": 612.3,\n    \"likeCount\": 210,\n    \"dislikeCount\": 15,\n    \"votedSessions\": 225,\n    \"positiveRate\": 0.9333,\n    \"kpiFirstAnswerOk\": 300,\n    \"kpiFirstAnswerFail\": 18,\n    \"sessionsBySource\": [\n      { \"source\": \"livechat\", \"count\": 200 },\n      { \"source\": \"whatsapp\", \"count\": 140 }\n    ],\n    \"sessionsByHour\": [0,0,0,0,0,0,2,10,25,40,38,30,28,22,20,25,30,20,15,10,8,5,3,1],\n    \"sessionsByOperator\": [\n      { \"operatorId\": 42, \"count\": 120, \"avgWaitAnswer\": 38.1, \"positiveRate\": 0.95 },\n      { \"operatorId\": 51, \"count\": 90, \"avgWaitAnswer\": 51.4, \"positiveRate\": 0.88 }\n    ]\n  }\n}\n```\n\n## Пример ответа при ошибке\n\n`400` — не передан период:\n\n```json\n{\n  \"success\": false,\n  \"error\": { \"code\": \"MISSING_PARAMS\", \"message\": \"Required: dateFrom, dateTo (ISO 8601 strings)\" }\n}\n```\n\n## Ошибки\n\n| HTTP | Код | Когда |\n|---|---|---|\n| 403 | `B24_TARIFF_RESTRICTION` | Тариф не включает статистику Открытых линий (`report_open_lines`) |\n| 400 | `MISSING_PARAMS` | Не передан `dateFrom` и\u002Fили `dateTo` |\n| 422 | `BITRIX_ERROR` (`error.b24Code: PERIOD_REQUIRED`) | Период не распознан Битрикс24 |\n| 422 | `BITRIX_ERROR` (`error.b24Code: INVALID_FILTER`) | Недопустимое значение фильтра или формат даты |\n| 422 | `BITRIX_ERROR` (`error.b24Code: PERIOD_TOO_LARGE`) | Период превышает 1 год |\n| 422 | `METHOD_NOT_YET_AVAILABLE` | Обновление `imopenlines 26.700.0` ещё не приехало на портал |\n\nПолный список системных кодов — [Ошибки API](\u002Fdocs\u002Ferrors).\n\n## Смотрите также\n\n- [Операторы (real-time)](\u002Fdocs\u002Fopenlines\u002Foperators)\n- [Список сессий](\u002Fdocs\u002Fopenlines\u002Fsessions)\n- [Статистика Открытых линий](\u002Fdocs\u002Fopenlines)\n","2026-07-21",{}]