[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"docs-entities\u002Ftimelines\u002Flist":3,"docs-tabs-entities\u002Ftimelines\u002Flist":6},{"content":4,"lastmod":5},"\n## Список комментариев\n\n`GET \u002Fv1\u002Ftimelines`\n\nВозвращает комментарии таймлайна, привязанные к конкретной записи CRM. Фильтр по `entityType` и `entityId` обязателен — без них запрос возвращает `400 MISSING_REQUIRED_FILTER`.\n\n## Параметры\n\n| Параметр | Тип | Обяз. | По умолч. | Описание |\n|----------|-----|:-----:|-----------|---------|\n| `filter[entityType]` | string | да | — | Тип родительской записи CRM: `deal`, `lead`, `contact`, `company` или `DYNAMIC_\u003CentityTypeId>` для смарт-процессов (например, `DYNAMIC_174`) |\n| `filter[entityId]` | number | да | — | ID родительской записи. Источник зависит от типа: `GET \u002Fv1\u002Fdeals`, `GET \u002Fv1\u002Fleads`, `GET \u002Fv1\u002Fcontacts`, `GET \u002Fv1\u002Fcompanies`, `GET \u002Fv1\u002Fitems\u002F:entityTypeId` (элементы смарт-процессов) |\n| `limit` | number | нет | `50` | Количество записей (до 5000). При `limit > 50` Вайбкод автоматически запрашивает несколько страниц у Битрикс24 |\n| `offset` | number | нет | `0` | Пропустить N записей. При `offset > 0` рекомендуется `limit ≤ 500` |\n| `select` | string | нет | — | Выборка полей: `?select=id,comment,authorId` |\n\n## Примеры\n\n### curl — личный ключ\n\n```bash\ncurl \"https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Ftimelines?filter[entityType]=deal&filter[entityId]=741\" \\\n  -H \"X-Api-Key: YOUR_API_KEY\"\n```\n\n### curl — OAuth-приложение\n\n```bash\ncurl \"https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Ftimelines?filter[entityType]=deal&filter[entityId]=741\" \\\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\u002Ftimelines?filter[entityType]=deal&filter[entityId]=741', {\n  headers: {\n    'X-Api-Key': 'YOUR_API_KEY',\n  },\n})\n\nconst { success, data, meta } = await res.json()\nconsole.log(`Найдено ${meta.total} комментариев`)\n```\n\n### JavaScript — OAuth-приложение\n\n```javascript\nconst res = await fetch('https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Ftimelines?filter[entityType]=deal&filter[entityId]=741', {\n  headers: {\n    'X-Api-Key': 'YOUR_APP_KEY',\n    'Authorization': 'Bearer USER_SESSION_TOKEN',\n  },\n})\n\nconst { success, data, meta } = await res.json()\n```\n\n## Поля ответа\n\n| Поле | Тип | Описание |\n|------|-----|---------|\n| `success` | boolean | Всегда `true` при успехе |\n| `data` | array | Массив комментариев (все поля — см. [Поля комментария](\u002Fdocs\u002Fentities\u002Ftimelines\u002Ffields)) |\n| `meta.total` | number | Общее количество записей, соответствующих фильтру |\n| `meta.hasMore` | boolean | Есть ли ещё записи за пределами `limit` |\n\n## Пример ответа\n\n```json\n{\n  \"success\": true,\n  \"data\": [\n    {\n      \"id\": 66309,\n      \"entityId\": 741,\n      \"entityType\": \"deal\",\n      \"comment\": \"Первый контакт: клиент заинтересовался предложением\",\n      \"authorId\": 1,\n      \"createdAt\": \"2026-04-24T12:39:28.000Z\"\n    },\n    {\n      \"id\": 66311,\n      \"entityId\": 741,\n      \"entityType\": \"deal\",\n      \"comment\": \"Уточнение: клиент готов подписать договор на следующей неделе\",\n      \"authorId\": 1,\n      \"createdAt\": \"2026-04-24T12:39:30.000Z\"\n    }\n  ],\n  \"meta\": {\n    \"total\": 2,\n    \"hasMore\": false\n  }\n}\n```\n\n## Пример ответа при ошибке\n\n400 — не передан обязательный фильтр:\n\n```json\n{\n  \"success\": false,\n  \"error\": {\n    \"code\": \"MISSING_REQUIRED_FILTER\",\n    \"message\": \"GET \u002Fv1\u002Ftimelines requires filter fields: entityType, entityId. Example: GET \u002Fv1\u002Ftimelines?filter[entityType]=...&filter[entityId]=...\"\n  }\n}\n```\n\n## Ошибки\n\n| HTTP | Код | Описание |\n|------|-----|---------|\n| 400 | `MISSING_REQUIRED_FILTER` | Не переданы обязательные `filter[entityType]` и `filter[entityId]` |\n| 422 | `BITRIX_ERROR` | Неверное значение `entityType` (например, числовой код CRM вместо строки) |\n| 403 | `SCOPE_DENIED` | API-ключ не имеет скоупа `crm` |\n| 401 | `TOKEN_MISSING` | API-ключ не имеет настроенных токенов |\n\nПолный список общих ошибок API — [Ошибки](\u002Fdocs\u002Ferrors).\n\n## Известные особенности\n\n**`entityType` — строка.** Используйте строковые идентификаторы CRM-типов: `deal`, `lead`, `contact`, `company`. Для смарт-процессов — `DYNAMIC_\u003CentityTypeId>` (например, `DYNAMIC_174`). В ответе значение приходит в нижнем регистре (`dynamic_174`). Числовые коды CRM в `entityType` не работают — возвращается `422 BITRIX_ERROR Access denied.`.\n\n**Фильтрация только по `entityType` + `entityId`.** Битрикс24 игнорирует любые дополнительные поля в фильтре (`authorId`, `comment`, диапазоны `>=createdAt` и т. п.) — ответ возвращается тот же, что и без них. Если нужен отбор по автору или тексту — получите все комментарии записи и отфильтруйте на стороне клиента.\n\n**Порядок результатов — по `id` ASC.** Список возвращается в порядке создания: самые ранние комментарии первыми. Если нужен обратный порядок — переверните массив на клиенте (`data.reverse()`). Параметры сортировки (`order[...]`, `sort=`) для этого эндпоинта не применяются.\n\n**Авто-пагинация.** При `limit > 50` Вайбкод автоматически запрашивает несколько страниц у Битрикс24 и возвращает все записи в одном ответе.\n\n## Смотрите также\n\n- [Получить комментарий](\u002Fdocs\u002Fentities\u002Ftimelines\u002Fget) — получение одной записи по ID\n- [Добавить комментарий](\u002Fdocs\u002Fentities\u002Ftimelines\u002Fcreate) — создание нового\n- [Поля комментария](\u002Fdocs\u002Fentities\u002Ftimelines\u002Ffields) — полный список полей\n- [Синтаксис фильтрации](\u002Fdocs\u002Ffiltering)\n- [Entity API](\u002Fdocs\u002Fentity-api) — select, пагинация\n- [Batch](\u002Fdocs\u002Fbatch) — объединение нескольких list-запросов\n- [Лимиты и оптимизация](\u002Fdocs\u002Foptimization) — rate limits\n","2026-06-24",{}]