
## Поля комментария

`GET /v1/timelines/fields`

Возвращает схему полей комментария таймлайна.

## Примеры

### curl — личный ключ

```bash
curl "https://vibecode.bitrix24.tech/v1/timelines/fields" \
  -H "X-Api-Key: YOUR_API_KEY"
```

### curl — OAuth-приложение

```bash
curl "https://vibecode.bitrix24.tech/v1/timelines/fields" \
  -H "X-Api-Key: YOUR_APP_KEY" \
  -H "Authorization: Bearer USER_SESSION_TOKEN"
```

### JavaScript — личный ключ

```javascript
const res = await fetch('https://vibecode.bitrix24.tech/v1/timelines/fields', {
  headers: {
    'X-Api-Key': 'YOUR_API_KEY',
  },
})

const { success, data } = await res.json()
console.log('Поля:', Object.keys(data.fields))
```

### JavaScript — OAuth-приложение

```javascript
const res = await fetch('https://vibecode.bitrix24.tech/v1/timelines/fields', {
  headers: {
    'X-Api-Key': 'YOUR_APP_KEY',
    'Authorization': 'Bearer USER_SESSION_TOKEN',
  },
})

const { success, data } = await res.json()
```

## Поля ответа

Подписи полей `label` и `description` приходят на русском языке, а те, что платформа берёт напрямую с портала, — на языке портала. Заголовками запроса язык не переключается.

| Поле | Битрикс24 | Тип | RO | Описание |
|------|----------|-----|:--:|---------|
| `id` | `ID` | number | да | ID комментария |
| `entityType` | `ENTITY_TYPE` | string | | Тип родительской записи CRM: `deal`, `lead`, `contact`, `company` или `DYNAMIC_<entityTypeId>` для смарт-процессов (например, `DYNAMIC_174`). В ответе приходит в нижнем регистре (`dynamic_174`). Доступно только при создании, изменить нельзя |
| `entityId` | `ENTITY_ID` | number | | ID родительской записи. Доступно только при создании, изменить нельзя. Источник: `GET /v1/deals`, `GET /v1/leads`, `GET /v1/contacts`, `GET /v1/companies`, `GET /v1/items/:entityTypeId` (элементы смарт-процессов) |
| `comment` | `COMMENT` | string | | Текст комментария. Обязателен при создании |
| `authorId` | `AUTHOR_ID` | number | да | ID автора комментария. Автора Битрикс24 берёт из учётных данных вызова — задать его нельзя ни при обновлении, ни при создании. Данные пользователя по ID: `GET /v1/users/:id` |
| `createdAt` | `CREATED` | datetime | да | Дата создания, ISO 8601 в UTC |
| `FILES` | `FILES` | attached_diskfile | | Вложения. На запись — массив пар `[[имяФайла, base64Содержимое]]`, на чтение — объект, где ключ это ID файла на Диске. Подробнее: [Добавить комментарий](/docs/entities/timelines/create) |

## Пример ответа

`GET /v1/timelines/fields` возвращает описания полей под ключом `data.fields`, где каждое поле — `{ type, readonly, label, description }`. Подпись `label` у поля `FILES` приходит от Битрикс24 и зависит от языка портала.

```json
{
  "success": true,
  "data": {
    "fields": {
      "id": { "type": "number", "readonly": true, "label": "ID", "description": "Уникальный числовой идентификатор комментария таймлайна." },
      "entityType": { "type": "string", "readonly": false, "createOnly": true, "label": "Тип сущности", "description": "Тип родительской записи CRM: deal, lead, contact, company или DYNAMIC_<entityTypeId> для смарт-процессов. Задаётся только при создании." },
      "entityId": { "type": "number", "readonly": false, "createOnly": true, "label": "ID сущности", "description": "ID родительской записи CRM, к которой относится комментарий. Задаётся только при создании." },
      "comment": { "type": "string", "readonly": false, "label": "Комментарий", "description": "Текст комментария. Обязателен при создании." },
      "authorId": { "type": "number", "readonly": true, "label": "Автор", "description": "ID пользователя, написавшего комментарий. Только для чтения: автора Битрикс24 берёт из учётных данных вызова." },
      "createdAt": { "type": "datetime", "readonly": true, "label": "Создан", "description": "Дата и время создания комментария (ISO 8601, UTC)." },
      "FILES": { "type": "attached_diskfile", "readonly": false, "label": "Список файлов", "description": "Файлы, приложенные к комментарию. На запись передаётся массив пар [имя файла, содержимое файла в base64], на чтение приходит объект, ключ которого — ID файла на Диске." }
    }
  }
}
```

Три поля комментария изменить нельзя, и в ответе `/fields` у них разные пометки, потому что причины разные. `entityType` и `entityId` помечены `createOnly: true`: комментарий привязывается к записи в момент создания, перенести его на другую запись нельзя. `authorId` помечен `readonly: true`: автора Битрикс24 берёт из учётных данных, которыми сделан вызов, поэтому задать его нельзя ни при обновлении, ни при создании — чтобы комментарий вышел от нужного пользователя, сделайте вызов от его имени. [`PATCH /v1/timelines/:id`](/docs/entities/timelines/update) с любым из трёх отвечает `400 READONLY_FIELD`. Изменяемым остаётся `comment`.

## Пример ответа при ошибке

403 — нет скоупа:

```json
{
  "success": false,
  "error": {
    "code": "SCOPE_DENIED",
    "message": "This endpoint requires 'crm' scope"
  }
}
```

## Ошибки

| HTTP | Код | Описание |
|------|-----|---------|
| 403 | `SCOPE_DENIED` | API-ключ не имеет скоупа `crm` |
| 401 | `TOKEN_MISSING` | API-ключ не имеет настроенных токенов |

Полный список общих ошибок API — [Ошибки](/docs/errors).

## Смотрите также

- [Добавить комментарий](/docs/entities/timelines/create)
- [Список комментариев](/docs/entities/timelines/list)
- [Entity API](/docs/entity-api)
- [Лимиты и оптимизация](/docs/optimization)
