
## Поля типа цены

`GET /v1/catalog-price-types/fields`

Возвращает справочник полей типа цены с типами. Все поля доступны только для чтения.

## Примеры

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

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

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

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

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

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

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

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

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

`data.fields` — объект, ключ которого совпадает с именем поля, а значение содержит `type` (тип поля), `readonly` (`true` — поле нельзя передать при создании и обновлении), `label` (отображаемое название) и `description` (краткое описание). Значения `label`/`description` приходят на русском языке. Заголовками запроса язык не переключается. У полей, которые могут прийти без значения, стоит `nullable: true`. Список `data.batch` пуст: операций записи в пакетном режиме у типов цен нет.

| Поле | Тип | RO | Описание |
|------|-----|:--:|---------|
| `id` | number | да | Идентификатор типа цены. Это значение передаётся в `catalogGroupId` при работе с [ценами каталога](/docs/entities/catalog-prices) |
| `name` | string | да | Название типа цены, как оно задано на портале |
| `base` | string | да | `Y` у базового типа цены портала, `N` у остальных |
| `xmlId` | string | да | Внешний код интеграций импорта и выгрузки. Может быть `null` |
| `sort` | number | да | Порядок сортировки в интерфейсе Битрикс24 |
| `createdBy` | number | да | ID пользователя, создавшего тип цены. Может быть `null` |
| `modifiedBy` | number | да | ID пользователя, последним изменившего тип цены. Может быть `null` |
| `dateCreate` | datetime | да | Дата и время создания типа цены. Может быть `null` |
| `timestampX` | datetime | да | Дата и время последнего изменения типа цены. Может быть `null` |

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

```json
{
  "success": true,
  "data": {
    "fields": {
      "id": { "type": "number", "readonly": true, "label": "ID", "description": "Идентификатор типа цены. Именно это значение /v1/catalog-prices ждёт в catalogGroupId." },
      "name": { "type": "string", "readonly": true, "label": "Название", "description": "Название типа цены, заданное на портале." },
      "base": { "type": "string", "readonly": true, "label": "Базовый тип цены", "description": "Y у базового типа цены портала, N у остальных. Значение Y несёт ровно один тип, и его id зависит от портала — он не обязан быть равен 1." },
      "xmlId": { "type": "string", "readonly": true, "nullable": true, "label": "Внешний код", "description": "Внешний идентификатор, используемый интеграциями импорта и экспорта." },
      "sort": { "type": "number", "readonly": true, "label": "Сортировка", "description": "Порядок сортировки типа цены в интерфейсе Bitrix24." },
      "createdBy": { "type": "number", "readonly": true, "nullable": true, "label": "Кем создан", "description": "ID пользователя, создавшего тип цены." },
      "modifiedBy": { "type": "number", "readonly": true, "nullable": true, "label": "Кем изменён", "description": "ID пользователя, последним изменившего тип цены." },
      "dateCreate": { "type": "datetime", "readonly": true, "nullable": true, "label": "Дата создания", "description": "Дата и время создания типа цены." },
      "timestampX": { "type": "datetime", "readonly": true, "nullable": true, "label": "Дата изменения", "description": "Дата и время последнего изменения типа цены." }
    },
    "batch": []
  }
}
```

Все поля помечены `readonly: true` — завести или изменить тип цены через API нельзя, это делается в интерфейсе Битрикс24.

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

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

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

## Ошибки

| HTTP | Код | Описание |
|------|-----|---------|
| 403 | `SCOPE_DENIED` | API-ключ не имеет скоупа `catalog` |
| 401 | `MISSING_API_KEY` | Не передан заголовок `X-Api-Key` |
| 429 | `RATE_LIMITED` | Превышен лимит запросов: 300 в минуту на портал, все API-ключи портала делят один лимит. Точное значение — в заголовке `x-ratelimit-limit` (потолок делится на реплики). Повторите после срока из заголовка `Retry-After` |

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

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

- [Список типов цен](/docs/entities/catalog-price-types/list)
- [Получить тип цены](/docs/entities/catalog-price-types/get)
- [Цены каталога](/docs/entities/catalog-prices)
- [Справочник API](/docs/api-reference)
