
## Список справочников

`GET /v1/statuses`

Возвращает записи справочников CRM. Используйте `filter[entityId]` для выбора конкретного типа.

## Параметры

| Параметр | Тип | По умолч. | Описание |
|----------|-----|-----------|---------|
| `limit` | number | `50` | Количество записей (до 5000). При `limit > 50` авто-пагинация |
| `offset` | number | `0` | Пропустить N записей |
| `select` | string | — | Выборка полей: `?select=id,name,entityId` |
| `order` | object | — | Сортировка: `?order[sort]=asc` |
| `filter` | object | — | Только точное равенство по одному значению — по полям `id`, `entityId`, `statusId`, `name`, `sort`, `semantics`, `categoryId`. Список значений (`$in` или массив) не поддерживается ни по одному полю: метод справочника его не принимает, поэтому такой фильтр отклоняется сразу с `400 UNSUPPORTED_FILTER` — передавайте одно значение, а несколько значений запрашивайте отдельными вызовами или через `POST /v1/batch`. Операторы (`>`, `>=`, `<`, `<=`, `!`, `%`, `$ne`, `$contains`, `$nin`) и другие поля (например `color`) не поддерживаются — тоже `400 UNSUPPORTED_FILTER`.<br>[Синтаксис фильтрации](/docs/filtering). Пример: `?filter[entityId]=DEAL_STAGE` |

## Примеры

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

```bash
curl "https://vibecode.bitrix24.tech/v1/statuses?filter[entityId]=DEAL_STAGE&order[sort]=asc" \
  -H "X-Api-Key: YOUR_API_KEY"
```

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

```bash
curl "https://vibecode.bitrix24.tech/v1/statuses?filter[entityId]=DEAL_STAGE&order[sort]=asc" \
  -H "X-Api-Key: YOUR_APP_KEY" \
  -H "Authorization: Bearer USER_SESSION_TOKEN"
```

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

```javascript
const res = await fetch('https://vibecode.bitrix24.tech/v1/statuses?filter[entityId]=DEAL_STAGE&order[sort]=asc', {
  headers: { 'X-Api-Key': 'YOUR_API_KEY' },
})
const { success, data, meta } = await res.json()
```

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

```javascript
const res = await fetch('https://vibecode.bitrix24.tech/v1/statuses?filter[entityId]=DEAL_STAGE&order[sort]=asc', {
  headers: {
    'X-Api-Key': 'YOUR_APP_KEY',
    'Authorization': 'Bearer USER_SESSION_TOKEN',
  },
})
const { success, data, meta } = await res.json()
```

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

| Поле | Тип | Описание |
|------|-----|---------|
| `data[].id` | number | ID записи |
| `data[].entityId` | string | Тип справочника (DEAL_STAGE, SOURCE, CONTACT_TYPE и др.) |
| `data[].statusId` | string | Символьный код значения |
| `data[].name` | string | Название |
| `data[].nameInit` | string/null | Исходное название |
| `data[].sort` | number | Сортировка |
| `data[].system` | boolean | Системное значение. Только для чтения |
| `data[].categoryId` | number/null | ID воронки. Заполняется для справочников вида `DEAL_STAGE_N`, иначе `0` или `null` |
| `data[].color` | string/null | Цвет в HEX с ведущей `#` |
| `data[].semantics` | string/null | Семантика: `S` — успех, `F` — провал. `null` — стадия «в работе» или справочник без семантики |
| `data[].extra` | object/null | Дополнительные данные справочников со стадиями — `STATUS`, `DEAL_STAGE`, `DEAL_STAGE_N`, `QUOTE_STATUS`. Вложенные ключи `SEMANTICS` и `COLOR`, значения `SEMANTICS` — в [Полях справочника](/docs/entities/statuses/fields). Только для чтения, у остальных справочников отсутствует |

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

```json
{
  "success": true,
  "data": [
    {
      "id": 101,
      "entityId": "DEAL_STAGE",
      "statusId": "NEW",
      "name": "Новая",
      "nameInit": "Новая",
      "sort": 10,
      "system": true,
      "categoryId": null,
      "color": "#39A8EF",
      "semantics": null,
      "extra": { "SEMANTICS": "process", "COLOR": "#39A8EF" }
    },
    {
      "id": 111,
      "entityId": "DEAL_STAGE",
      "statusId": "WON",
      "name": "Сделка успешна",
      "nameInit": "Сделка успешна",
      "sort": 60,
      "system": true,
      "categoryId": null,
      "color": "#7BD500",
      "semantics": "S",
      "extra": { "SEMANTICS": "success", "COLOR": "#7BD500" }
    }
  ],
  "meta": { "total": 12, "hasMore": false }
}
```

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

400 — оператор или неподдерживаемое поле в фильтре:

```json
{
  "success": false,
  "error": {
    "code": "UNSUPPORTED_FILTER",
    "message": "UNSUPPORTED_FILTER: 'color' is not filterable on 'statuses'. Its Bitrix24 method (crm.status.list) filters by exact match only. Filterable: id, entityId, statusId, name, sort, semantics, categoryId."
  }
}
```

## Ошибки

| HTTP | Код | Описание |
|------|-----|---------|
| 400 | `UNSUPPORTED_FILTER` | Оператор, неподдерживаемое поле или список значений. Фильтруйте точным равенством по одному значению — по полям `id`, `entityId`, `statusId`, `name`, `sort`, `semantics`, `categoryId` |
| 403 | `SCOPE_DENIED` | API-ключ не имеет скоупа `crm` |
| 401 | `TOKEN_MISSING` | Не передан API-ключ |

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

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

- [Справочники CRM](/docs/entities/statuses)
- [Создать запись](/docs/entities/statuses/create)
- [Синтаксис фильтрации](/docs/filtering)
- [Batch](/docs/batch)
