[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"docs-entities\u002Ftask-comments\u002Flist":3,"docs-tabs-entities\u002Ftask-comments\u002Flist":6},{"content":4,"lastmod":5},"\n## Список комментариев\n\n`GET \u002Fv1\u002Ftasks\u002F:taskId\u002Fcomments`\n\nВозвращает комментарии конкретной задачи. На новой карточке задачи список читается из чата (системные сообщения отфильтрованы); на старой — из блока комментариев в самой карточке.\n\n## Параметры\n\n| Параметр | Тип | Обяз. | По умолч. | Описание |\n|----------|-----|:-----:|-----------|---------|\n| `taskId` (path) | number | да | — | ID родительской задачи |\n| `limit` (query) | number | | `50` | Размер страницы (до 200) |\n| `sort` (query) | string | | `id:desc` | Сортировка: `id:asc` или `id:desc` |\n| `filter` (query) | object | | — | Фильтр для старой карточки. Передаётся как JSON: `?filter={\"AUTHOR_ID\":1}`. На новой карточке передача параметра переключает чтение в режим старой карточки |\n\n## Примеры\n\n### curl — личный ключ\n\n```bash\ncurl \"https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Ftasks\u002F289\u002Fcomments?limit=20&sort=id:desc\" \\\n  -H \"X-Api-Key: YOUR_API_KEY\"\n```\n\n### curl — OAuth-приложение\n\n```bash\ncurl \"https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Ftasks\u002F289\u002Fcomments?limit=20&sort=id:desc\" \\\n  -H \"X-Api-Key: YOUR_APP_KEY\" \\\n  -H \"Authorization: Bearer USER_SESSION_TOKEN\"\n```\n\n### JavaScript — личный ключ\n\n```javascript\nconst url = 'https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Ftasks\u002F289\u002Fcomments?limit=20&sort=id:desc'\nconst res = await fetch(url, {\n  headers: {\n    'X-Api-Key': 'YOUR_API_KEY',\n  },\n})\n\nconst { success, data, meta } = await res.json()\nconsole.log(`Получено ${data.length} комментариев`)\n```\n\n### JavaScript — OAuth-приложение\n\n```javascript\nconst url = 'https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Ftasks\u002F289\u002Fcomments?limit=20&sort=id:desc'\nconst res = await fetch(url, {\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 | Массив комментариев |\n| `data[].id` | number | Идентификатор комментария |\n| `data[].taskId` | number | ID родительской задачи |\n| `data[].authorId` | number | Автор. Профиль: `GET \u002Fv1\u002Fusers\u002F:authorId` |\n| `data[].message` | string | Текст комментария (поддерживает BB-код) |\n| `data[].createdAt` | datetime | Дата создания (UTC ISO 8601) |\n| `meta.total` | number | Оценка количества комментариев |\n| `meta.hasMore` | boolean | Есть ли ещё комментарии за пределами `limit` |\n\n## Пример ответа\n\n```json\n{\n  \"success\": true,\n  \"data\": [\n    {\n      \"id\": 36559,\n      \"taskId\": 289,\n      \"authorId\": 1,\n      \"message\": \"Добавил черновик отчёта в комментарии — посмотри, пожалуйста.\",\n      \"createdAt\": \"2026-05-13T12:30:58.000Z\"\n    },\n    {\n      \"id\": 36557,\n      \"taskId\": 289,\n      \"authorId\": 79,\n      \"message\": \"[USER=99]Зуля[\u002FUSER], готово, спасибо.\",\n      \"createdAt\": \"2026-05-12T15:11:04.000Z\"\n    }\n  ],\n  \"meta\": {\n    \"total\": 2,\n    \"hasMore\": false\n  }\n}\n```\n\n## Пример ответа при ошибке\n\n400 — `taskId` не положительное целое:\n\n```json\n{\n  \"success\": false,\n  \"error\": {\n    \"code\": \"INVALID_PARAMS\",\n    \"message\": \"taskId must be a positive integer\"\n  }\n}\n```\n\n## Ошибки\n\n| HTTP | Код | Описание |\n|------|-----|---------|\n| 400 | `INVALID_PARAMS` | `taskId` некорректен (не целое положительное число) |\n| 400 | `INVALID_SORT_FIELD` | Сортировка по неподдерживаемому полю или направлению. Поддерживаются `ID`, `AUTHOR_ID`, `AUTHOR_NAME`, `AUTHOR_EMAIL`, `POST_DATE` с направлением `asc` или `desc` |\n| 400 | `INVALID_FILTER` | Параметр `filter` не является корректным JSON |\n| 400 | `UNKNOWN_FILTER_FIELD` | Фильтр по неподдерживаемому полю. Поддерживаются `ID`, `AUTHOR_ID`, `AUTHOR_NAME`, `POST_DATE` |\n| 403 | `SCOPE_DENIED` | API-ключ не имеет скоупа `task` |\n| 401 | `TOKEN_MISSING` | API-ключ не имеет настроенных токенов |\n\nПолный список общих ошибок API — [Ошибки](\u002Fdocs\u002Ferrors).\n\n## Известные особенности\n\n**Пустая страница при `meta.hasMore: true`.** Системные уведомления (постановка задачи, смена срока, назначение исполнителя) отфильтровываются на стороне API. Если их много в текущем срезе, `data` может прийти пустым при `meta.hasMore: true` — запросите следующую страницу или увеличьте `limit`.\n\n## Смотрите также\n\n- [Получить комментарий](.\u002Fget.md) — одна запись по `id`\n- [Создать комментарий](.\u002Fcreate.md) — добавить новый\n- [Пакет операций](.\u002Fcomments-batch.md) — добавить несколько за один вызов\n- [Задачи](\u002Fdocs\u002Fentities\u002Ftasks) — родительская сущность\n- [Лимиты и оптимизация](\u002Fdocs\u002Foptimization) — rate limits\n","2026-07-01",{}]