
## Список конфигураций открытых линий

`GET /v1/openline-configs`

Возвращает список конфигураций открытых линий с поддержкой фильтрации, сортировки и пагинации.

## Параметры

| Параметр | Тип | По умолч. | Допустимые значения | Описание |
|----------|-----|-----------|---------------------|---------|
| `limit` | number | `50` | `1`–`200` | Количество записей на запрос |
| `offset` | number | `0` | `0` и больше | Пропустить N записей |
| `sort` | string | — | `id`, `name`, `active`, `queueType`, `workTimeFrom`, `workTimeTo` | Поле сортировки |
| `order` | string | `asc` | `asc`, `desc` | Направление сортировки |
| `filter` | object | — | ключи — те же 6 полей, что и в `sort`; значения — по типу поля | Фильтрация по полям схемы.<br>[Синтаксис фильтрации](/docs/filtering). Пример: `?filter[active]=false`, `?filter[queueType]=evenly` |

## Примеры

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

```bash
curl "https://vibecode.bitrix24.tech/v1/openline-configs?limit=10&sort=id&order=asc&filter[active]=true" \
  -H "X-Api-Key: YOUR_API_KEY"
```

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

```bash
curl "https://vibecode.bitrix24.tech/v1/openline-configs?limit=10&sort=id&order=asc&filter[active]=true" \
  -H "X-Api-Key: YOUR_APP_KEY" \
  -H "Authorization: Bearer USER_SESSION_TOKEN"
```

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

```javascript
const res = await fetch('https://vibecode.bitrix24.tech/v1/openline-configs?limit=10&sort=id&order=asc&filter[active]=true', {
  headers: {
    'X-Api-Key': 'YOUR_API_KEY',
  },
})

const { success, data, total, hasMore } = await res.json()
console.log(`Получено ${data.length} конфигураций, всего в окне: ${total}`)
```

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

```javascript
const res = await fetch('https://vibecode.bitrix24.tech/v1/openline-configs?limit=10&sort=id&order=asc&filter[active]=true', {
  headers: {
    'X-Api-Key': 'YOUR_APP_KEY',
    'Authorization': 'Bearer USER_SESSION_TOKEN',
  },
})

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

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

Ответ содержит поля метаданных на верхнем уровне (не вложены в `meta`):

| Поле | Тип | Описание |
|------|-----|---------|
| `success` | boolean | Всегда `true` при успехе |
| `data` | array | Массив конфигураций (все поля — см. [Поля конфигурации](/docs/openlines/config/fields)) |
| `total` | number | Количество записей в текущем окне (не общий счётчик портала) |
| `limit` | number | Размер страницы |
| `offset` | number | Смещение |
| `hasMore` | boolean | Есть ли ещё записи за пределами `limit` |

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

Показаны основные поля. Полный список: [Поля конфигурации](/docs/openlines/config/fields).

```json
{
  "success": true,
  "data": [
    {
      "id": 1,
      "active": true,
      "name": "Открытая линия",
      "queueType": "all",
      "workTimeFrom": "8",
      "workTimeTo": "17",
      "crm": "Y",
      "crmCreate": "deal",
      "queueTime": "60",
      "noAnswerTime": "180",
      "welcomeMessage": "Y",
      "workTimeEnable": "Y",
      "workTimeTimezone": "Europe/Kaliningrad",
      "dateCreate": {},
      "dateModify": {}
    },
    {
      "id": 3,
      "active": true,
      "name": "Wix",
      "queueType": "all",
      "workTimeFrom": "9",
      "workTimeTo": "18.30",
      "crm": "Y",
      "crmCreate": "deal",
      "queueTime": "60",
      "noAnswerTime": "180",
      "welcomeMessage": "Y",
      "workTimeEnable": "N",
      "workTimeTimezone": "Europe/Moscow",
      "dateCreate": {},
      "dateModify": {}
    }
  ],
  "total": 10,
  "limit": 10,
  "offset": 0,
  "hasMore": false
}
```

> В примере показаны 2 записи из 10 — остальные 8 опущены для краткости. Каждый элемент содержит ещё около 75 полей помимо показанных.

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

400 — логический оператор `$or` / `$and` в фильтре (Битрикс24 не поддерживает OR/AND для этого метода):

```json
{
  "success": false,
  "error": {
    "code": "INVALID_FILTER_OPERATOR",
    "message": "'$or' is not supported. OR/AND logic cannot be expressed in a single openline-configs filter. For same-field OR use { field: { $in: [v1, v2] } }. For cross-field OR run parallel requests. AND is the default — combine conditions as sibling keys in one filter object."
  }
}
```

## Ошибки

| HTTP | Код | Описание |
|------|-----|---------|
| 400 | `INVALID_FILTER_OPERATOR` | В фильтре передан логический оператор `$or` / `$and` / `$not` / `LOGIC`. Для OR по одному полю используйте `{ поле: { $in: [...] } }` |
| 401 | `TOKEN_MISSING` | API-ключ не имеет настроенных токенов |
| 403 | `SCOPE_DENIED` | API-ключ не имеет скоупа `imopenlines` |
| 422 | `BITRIX_ERROR` | Передано имя поля, которого нет в сущности `imopenlines.config` Битрикс24 (например `createdAt`, опечатка или не-фильтруемое поле). Используйте 6 документированных camelCase-полей схемы |

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

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

**`total` — счётчик текущего окна, а не общий.** Битрикс24 не возвращает общее количество конфигураций для метода списка, поэтому `total` содержит число записей только в текущей странице. Для проверки наличия следующей страницы используйте поле `hasMore`.

**Фильтрация и сортировка — 6 camelCase-полей схемы.** Параметры `filter` и `sort` работают по всем 6 документированным именам: `id`, `name`, `active`, `queueType`, `workTimeFrom`, `workTimeTo` (обёртка переводит их в реальные имена Битрикс24 на стороне запроса).

**Другие поля тоже принимаются (escape hatch).** Если нужно отфильтровать/отсортировать по полю вне этих шести (например `crmCreate`, `languageId`), передайте его camelCase-имя из [Поля конфигурации](/docs/openlines/config/fields) — canonical. B24-native UPPER_SNAKE-имена также принимаются для обратной совместимости. Валидность проверяет Битрикс24: неизвестное поле вернёт `422 BITRIX_ERROR`.

**OR/AND в фильтре не поддерживаются.** `imopenlines.config.list.get` не умеет выражать логику OR/AND в одном фильтре — операторы `$or` / `$and` / `$not` / `LOGIC` отклоняются с `400 INVALID_FILTER_OPERATOR`. Для OR по одному полю используйте `{ "id": { "$in": [1, 3] } }` (в querystring — `filter[id][$in]=1,3`).

**Поля `queue`, `queueFull`, `queueUsersFields`, `queueOnline` в списке не возвращаются** — они доступны только в [Получить конфигурацию](/docs/openlines/config/get).

**camelCase и пустые даты.** Каждая запись содержит ~91 поле, все в camelCase; `dateCreate` и `dateModify` приходят пустыми объектами `{}`. `/fields` описывает каждое поле с `label` и `description` — полный реестр и пояснения — [Поля конфигурации](/docs/openlines/config/fields).

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

- [Получить конфигурацию](/docs/openlines/config/get)
- [Создать конфигурацию](/docs/openlines/config/create)
- [Поля конфигурации](/docs/openlines/config/fields)
- [Синтаксис фильтрации](/docs/filtering)
- [Entity API](/docs/entity-api)
- [Лимиты и оптимизация](/docs/optimization)
