## Поля ставки НДС

`GET /v1/catalog-vat-rates/fields`

Возвращает метаданные полей ставки НДС торгового каталога. Используйте их для проверки имён, типов и допустимых значений перед записью.

## Примеры

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

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

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

```bash
curl "https://vibecode.bitrix24.tech/v1/catalog-vat-rates/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-vat-rates/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/catalog-vat-rates/fields', {
  headers: {
    'X-Api-Key': 'YOUR_APP_KEY',
    'Authorization': 'Bearer USER_SESSION_TOKEN',
  },
})

const { success, data } = await res.json()
console.log(Object.keys(data.fields))
```

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

| Поле | Тип | Описание |
|------|------|------|
| `success` | boolean | Всегда `true` при успехе. |
| `data.fields` | object | Карта метаданных. Ключ — имя поля, значение — его описание. |
| `data.batch` | array | Действия записи через `POST /v1/catalog-vat-rates/batch`: `create`, `update`, `delete`. |
| `meta.warnings` | array | При недоступности полных метаданных содержит предупреждение `fields_partial`. Статические поля доступны в `data.fields`. |

Каждая запись в `fields` содержит `type` и `readonly`. При наличии возвращаются `label`, `description`, `required`, `nullable` и `enum`. `required: true` у `name` и `rate` означает обязательность при создании. `nullable: true` у `rate` описывает ответ, а не разрешение записать `null`. У `active` перечень `enum` содержит `Y` и `N`, подписи `label` и `labelRu`.

Поля объекта ставки:

| Поле | Тип | RO | Описание |
|------|------|------|------|
| `id` | number | да | Идентификатор ставки. Список: [`GET /v1/catalog-vat-rates`](/docs/entities/catalog-vat-rates/list). Его передают в поле `vatId` товара. |
| `name` | string |  | Название ставки. Обязательно при создании. |
| `rate` | number \| null |  | Процент НДС. Обязателен при создании, `null` при записи не принимается. У существующих ставок в ответе может быть `null`. |
| `active` | string |  | Активность ставки: `Y` — активна, `N` — неактивна. |
| `sort` | number |  | Порядок сортировки, целое число не меньше `1`. |
| `timestampX` | datetime | да | Дата и время изменения в формате ISO 8601. Заполняется Битрикс24. |

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

```json
{
  "success": true,
  "data": {
    "fields": {
      "id": {
        "type": "number",
        "readonly": true,
        "label": "ID",
        "description": "Идентификатор ставки НДС."
      },
      "name": {
        "type": "string",
        "readonly": false,
        "required": true,
        "label": "Название",
        "description": "Название ставки НДС."
      },
      "rate": {
        "type": "number",
        "readonly": false,
        "required": true,
        "nullable": true,
        "label": "Ставка",
        "description": "Процент НДС. У существующих записей «Без НДС» может приходить null; Битрикс24 отклоняет null при создании и изменении."
      },
      "active": {
        "type": "string",
        "readonly": false,
        "label": "Активна",
        "description": "Y, если ставка активна; иначе N.",
        "enum": [
          {
            "value": "Y",
            "label": "Active",
            "labelRu": "Активна"
          },
          {
            "value": "N",
            "label": "Inactive",
            "labelRu": "Неактивна"
          }
        ]
      },
      "sort": {
        "type": "number",
        "readonly": false,
        "label": "Сортировка",
        "description": "Порядок сортировки."
      },
      "timestampX": {
        "type": "datetime",
        "readonly": true,
        "label": "Дата изменения",
        "description": "Битрикс24 сам проставляет это время; переданное значение игнорирует."
      },
      "vat": {
        "type": "string",
        "readonly": false,
        "label": "vat"
      }
    },
    "batch": [
      "create",
      "update",
      "delete"
    ]
  }
}
```

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

401 — не передан API-ключ:

```json
{
  "success": false,
  "error": {
    "code": "MISSING_API_KEY",
    "message": "API key required. Pass via X-Api-Key header."
  }
}
```

## Ошибки

| HTTP | Код | Описание |
|------|------|------|
| 403 | `SCOPE_DENIED` | У ключа нет скоупа `catalog`. |
| 401 | `MISSING_API_KEY` | Не передан заголовок `X-Api-Key`. |
| 401 | `TOKEN_MISSING` | У ключа нет настроенных токенов Битрикс24. Для ключа OAuth-приложения проверьте пользовательскую сессию. |

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

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

**Метаданные могут содержать дополнительную запись `vat`.** В проверенном ответе она имеет `type: "string"` и `label: "vat"`. Она не входит в шесть полей объекта ставки, перечисленных выше. Для фильтрации и сортировки используйте поля объекта ставки.

**Поле `readonly` определяет возможность записи.** В описании `timestampX` может быть сказано, что переданное значение игнорируется. Запрос Вайбкод с `id` или `timestampX` в теле отклоняется с `400 READONLY_FIELD`.

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

- [Создать ставку НДС](/docs/entities/catalog-vat-rates/create)
- [Обновить ставку НДС](/docs/entities/catalog-vat-rates/update)
- [Список ставок НДС](/docs/entities/catalog-vat-rates/list)
- [Получить ставку НДС](/docs/entities/catalog-vat-rates/get)
- [Товары каталога](/docs/entities/catalog-products)
- [Entity API](/docs/entity-api)
