
## Список полей шаблона

`GET /v1/requisite-presets/:presetId/fields`

Возвращает список полей, входящих в шаблон реквизитов. Поля описывают состав реквизита: ИНН, ОГРН, директор, КПП и другие.

## Параметры

| Параметр | Тип | Обяз. | По умолч. | Описание |
|----------|-----|:-----:|-----------|---------|
| `presetId` (path) | number | да | — | ID шаблона реквизитов. Получить список шаблонов: `GET /v1/requisite-presets` |
| `limit` | number | нет | `50` | Количество записей (до 5000) |
| `offset` | number | нет | `0` | Пропустить N записей |
| `filter` | object | нет | — | Фильтр по точному равенству поля, например `filter[fieldName]=RQ_INN`. Доступные поля: `id`, `fieldName`, `fieldTitle`, `inShortList`, `sort`. Неизвестное поле возвращает `400 UNKNOWN_FILTER_FIELD` |
| `sort` | string | нет | — | Поле сортировки: `id`, `fieldName`, `fieldTitle`, `inShortList`, `sort`. Направление задаётся в `order` |
| `order` | string | нет | `asc` | Направление сортировки: `asc` или `desc` |

## Примеры

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

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

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

```bash
curl "https://vibecode.bitrix24.tech/v1/requisite-presets/1/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/requisite-presets/1/fields', {
  headers: {
    'X-Api-Key': 'YOUR_API_KEY',
  },
})

const { success, data, meta } = await res.json()
console.log(`Полей в шаблоне: ${meta.total}`)
```

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

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

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

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

| Поле | Тип | Описание |
|------|-----|---------|
| `success` | boolean | Всегда `true` при успехе |
| `data` | array | Массив строк полей шаблона |
| `data[].id` | number | Идентификатор строки поля в шаблоне |
| `data[].fieldName` | string | Системное имя поля реквизита: `RQ_INN`, `RQ_COMPANY_NAME` и др. |
| `data[].fieldTitle` | string | Пользовательский заголовок поля. Пустая строка означает, что используется заголовок по умолчанию |
| `data[].inShortList` | boolean | Отображается ли поле в кратком списке реквизитов |
| `data[].sort` | number | Порядок сортировки поля в шаблоне |
| `meta.total` | number | Количество записей в наборе: с `filter` — после фильтрации, без `filter` — все поля шаблона |
| `meta.hasMore` | boolean | Есть ли ещё записи за пределами `limit` в этом наборе |

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

```json
{
  "success": true,
  "data": [
    {
      "id": 1,
      "fieldName": "RQ_INN",
      "fieldTitle": "",
      "inShortList": true,
      "sort": 500
    },
    {
      "id": 2,
      "fieldName": "RQ_COMPANY_NAME",
      "fieldTitle": "",
      "inShortList": true,
      "sort": 510
    },
    {
      "id": 3,
      "fieldName": "RQ_COMPANY_FULL_NAME",
      "fieldTitle": "",
      "inShortList": false,
      "sort": 520
    }
  ],
  "meta": {
    "total": 13,
    "hasMore": false
  }
}
```

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

404 — шаблон не найден:

```json
{
  "success": false,
  "error": {
    "code": "ENTITY_NOT_FOUND",
    "message": "The Preset with ID '999999' is not found"
  }
}
```

## Ошибки

| HTTP | Код | Описание |
|------|-----|---------|
| 400 | `INVALID_PRESET_ID` | Переданный `presetId` не является положительным целым числом |
| 400 | `UNKNOWN_FILTER_FIELD` | В `filter` указано поле вне списка `id`, `fieldName`, `fieldTitle`, `inShortList`, `sort` |
| 400 | `UNKNOWN_SORT_FIELD` | В `sort` указано поле вне того же списка |
| 400 | `INVALID_FILTER_OPERATOR` | В `filter` передан оператор — поддерживается только точное равенство |
| 404 | `ENTITY_NOT_FOUND` | Шаблон с указанным `presetId` не найден |
| 403 | `SCOPE_DENIED` | API-ключ не имеет скоупа `crm` |
| 401 | `TOKEN_MISSING` | API-ключ не имеет настроенных токенов |

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

## Известные особенности

**Идентификатор поля позиционный — не полагайтесь на сохранённое значение между операциями записи.** `data[].id` — позиционный идентификатор строки поля в шаблоне. После изменения состава шаблона — добавления или удаления полей — он может измениться. Для обновления или удаления перечитывайте список и находите нужную строку по `fieldName`, а не по ранее сохранённому `id`.

**Флаг `inShortList` — булев.** Поле приходит со значением `true` или `false`, а не `Y`/`N`.

**`fieldTitle` в списке пуст, пока заголовок не переопределён.** Название по умолчанию — «ИНН» для `RQ_INN`, «Контактное лицо» для `RQ_CONTACT` — возвращает чтение одной записи: [`GET /v1/requisite-presets/:presetId/fields/:id`](/docs/entities/requisite-presets/preset-fields/get). В списке то же поле придёт с `fieldTitle: ""`.

**Пагинация применяется на стороне Вайбкод.** Параметры `limit` и `offset` обрабатываются Вайбкод после получения всего списка от Битрикс24. Если шаблон содержит более 50 полей, передавайте `limit` с нужным значением — по умолчанию возвращается 50 записей.

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

- [Получить поле шаблона](/docs/entities/requisite-presets/preset-fields/get)
- [Добавить поле в шаблон](/docs/entities/requisite-presets/preset-fields/create)
- [Поля, доступные для добавления](/docs/entities/requisite-presets/preset-fields/available)
- [Получить шаблон](/docs/entities/requisite-presets/get)
- [Список шаблонов реквизитов](/docs/entities/requisite-presets/list)
