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

`POST /v1/openline-configs/search`

Возвращает список конфигураций открытых линий с фильтрацией, сортировкой и пагинацией. Параметры передаются в теле запроса — удобнее для сложных условий, чем query-строка.

## Поля запроса (body)

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

Пустое тело запроса возвращает все конфигурации — эквивалент `GET /v1/openline-configs` без параметров.

## Примеры

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

```bash
curl -X POST "https://vibecode.bitrix24.tech/v1/openline-configs/search" \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "filter": { "active": true },
    "limit": 3,
    "sort": "id",
    "order": "desc"
  }'
```

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

```bash
curl -X POST "https://vibecode.bitrix24.tech/v1/openline-configs/search" \
  -H "X-Api-Key: YOUR_APP_KEY" \
  -H "Authorization: Bearer USER_SESSION_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "filter": { "active": true },
    "limit": 3,
    "sort": "id",
    "order": "desc"
  }'
```

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

```javascript
const res = await fetch('https://vibecode.bitrix24.tech/v1/openline-configs/search', {
  method: 'POST',
  headers: {
    'X-Api-Key': 'YOUR_API_KEY',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    filter: { active: true },
    limit: 3,
    sort: 'id',
    order: 'desc',
  }),
})

const { success, data, total } = await res.json()
console.log('Найдено:', total, 'записей, возвращено:', data.length)
```

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

```javascript
const res = await fetch('https://vibecode.bitrix24.tech/v1/openline-configs/search', {
  method: 'POST',
  headers: {
    'X-Api-Key': 'YOUR_APP_KEY',
    'Authorization': 'Bearer USER_SESSION_TOKEN',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    filter: { active: true },
    limit: 3,
    sort: 'id',
    order: 'desc',
  }),
})

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

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

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

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

```json
{
  "success": true,
  "data": [
    {
      "id": 21,
      "active": true,
      "name": "Открытая линия 12",
      "queueType": "all",
      "workTimeFrom": "9",
      "workTimeTo": "18.30",
      "crm": "Y",
      "crmCreate": "lead",
      "queueTime": "60",
      "noAnswerTime": "60",
      "welcomeMessage": "Y",
      "dateCreate": {},
      "dateModify": {}
    }
  ],
  "total": 10,
  "limit": 3,
  "offset": 0,
  "hasMore": true
}
```

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

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

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

```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` |
| 401 | `TOKEN_MISSING` | Не передан `X-Api-Key` |
| 403 | `SCOPE_DENIED` | API-ключ не имеет скоупа `imopenlines` |
| 422 | `BITRIX_ERROR` | Имя поля отсутствует в сущности `imopenlines.config` Битрикс24 (опечатка или не-фильтруемое поле) |

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

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

**Пустое тело возвращает все записи** — эквивалент `GET /v1/openline-configs` без параметров.

Остальные особенности — те же, что и у списка (`total` как счётчик текущей страницы; фильтр и сортировка по 6 camelCase-полям схемы, прочие camelCase-имена как escape hatch; OR/AND через `$or`/`$and` не поддерживаются — используйте `$in`; отсутствие полей очереди операторов): подробности — [Известные особенности списка](/docs/openlines/config/list).

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

- [Список конфигураций](/docs/openlines/config/list)
- [Поля конфигурации](/docs/openlines/config/fields)
- [Синтаксис фильтрации](/docs/filtering)
