
## Создать конфигурацию открытой линии

`POST /v1/openline-configs`

Создаёт новую конфигурацию открытой линии. Для создания достаточно передать хотя бы одно распознанное записываемое поле — остальные параметры устанавливаются по умолчанию. Полная запись с идентификаторами и всеми полями доступна через `GET /v1/openline-configs/:id`.

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

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

**Имена полей.** Все поля передавайте в camelCase (`name`, `active`, `queueType`, `crmCreate`, `workTimeFrom` и т. д. — см. [Поля конфигурации](/docs/openlines/config/fields)) — это канонический регистр, как они приходят в ответе и в `GET /v1/openline-configs/fields`. B24-native UPPER_SNAKE_CASE-имена также принимаются для обратной совместимости и приводятся к нужному имени Битрикс24 автоматически. Пример ниже использует camelCase.

**Булевы поля** (`active`, `crm`, `workTimeEnable`, `welcomeMessage`, …) принимают `true` / `false` — значение приводится к ожидаемому Битрикс24 `"Y"`/`"N"` автоматически.

| Поле | Тип | Обяз. | Описание |
|------|-----|-------|---------|
| `name` | string | нет | Название открытой линии |
| `active` | boolean | нет | Активна ли линия (`true` / `false`) |
| `queueType` | string | нет | Распределение очереди: `all` — всем одновременно, `evenly` — равномерно, `strictly` — строго по порядку |
| `queueTime` | number | нет | Время ожидания в очереди (секунды) до перевода |
| `noAnswerTime` | number | нет | Время без ответа (секунды), после которого срабатывает правило `noAnswerRule` |
| `crm` | boolean | нет | Включить интеграцию с CRM |
| `crmCreate` | string | нет | Режим создания CRM-сущностей при новом обращении |
| `workTimeEnable` | boolean | нет | Включить расписание рабочего времени |
| `workTimeFrom` | string | нет | Начало рабочего дня (например `"9"` или `"9.30"`) |
| `workTimeTo` | string | нет | Конец рабочего дня (например `"18"` или `"18.30"`) |
| `workTimeTimezone` | string | нет | Часовой пояс расписания (например `"Europe/Moscow"`) |
| `welcomeMessage` | boolean | нет | Включить приветственное сообщение |
| `welcomeMessageText` | string | нет | Текст приветственного сообщения |
| `languageId` | string | нет | Язык линии (например `"ru"`, `"en"`) |

Полный список полей — [`GET /v1/openline-configs/fields`](/docs/openlines/config/fields).

## Примеры

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

```bash
curl -X POST https://vibecode.bitrix24.tech/v1/openline-configs \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Поддержка клиентов",
    "active": true,
    "queueType": "evenly",
    "workTimeEnable": true,
    "workTimeFrom": "9",
    "workTimeTo": "18"
  }'
```

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

```bash
curl -X POST https://vibecode.bitrix24.tech/v1/openline-configs \
  -H "X-Api-Key: YOUR_APP_KEY" \
  -H "Authorization: Bearer USER_SESSION_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Поддержка клиентов",
    "active": true,
    "queueType": "evenly",
    "workTimeEnable": true,
    "workTimeFrom": "9",
    "workTimeTo": "18"
  }'
```

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

```javascript
const res = await fetch('https://vibecode.bitrix24.tech/v1/openline-configs', {
  method: 'POST',
  headers: {
    'X-Api-Key': 'YOUR_API_KEY',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    name: 'Поддержка клиентов',
    active: true,
    queueType: 'evenly',
    workTimeEnable: true,
    workTimeFrom: '9',
    workTimeTo: '18',
  }),
})

const { success, data } = await res.json()
console.log('Новая конфигурация ID:', data)
```

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

```javascript
const res = await fetch('https://vibecode.bitrix24.tech/v1/openline-configs', {
  method: 'POST',
  headers: {
    'X-Api-Key': 'YOUR_APP_KEY',
    'Authorization': 'Bearer USER_SESSION_TOKEN',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    name: 'Поддержка клиентов',
    active: true,
    queueType: 'evenly',
    workTimeEnable: true,
    workTimeFrom: '9',
    workTimeTo: '18',
  }),
})

const { success, data } = await res.json()
console.log('Новая конфигурация ID:', data)
```

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

| Поле | Тип | Описание |
|------|-----|---------|
| `success` | boolean | Всегда `true` при успехе |
| `data` | number | Идентификатор созданной конфигурации |
| `meta.warnings` | string[] | Необязательное. Присутствует, если часть переданных полей не распознана — перечисляет ключи, которые Битрикс24 проигнорировал |

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

```json
{
  "success": true,
  "data": 29
}
```

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

400 — в теле нет ни одного распознанного поля:

```json
{
  "success": false,
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "No recognised openline-configs field in the body. Unrecognised: bogusField. Provide at least one known field (e.g. lineName, queueType, active) — see GET /v1/openline-configs/fields."
  }
}
```

## Ошибки

| HTTP | Код | Описание |
|------|-----|---------|
| 400 | `VALIDATION_ERROR` | Тело запроса пустое — не передано ни одного поля |
| 400 | `VALIDATION_ERROR` | В теле нет ни одного распознанного поля (все ключи неизвестны) — в сообщении перечислены нераспознанные поля |
| 400 | `READONLY_FIELD` | В теле передано поле только для чтения (`id`, `queue`, `dateCreate` и другие) |
| 401 | `TOKEN_MISSING` | Заголовок `X-Api-Key` не передан |
| 403 | `SCOPE_DENIED` | API-ключ не имеет скоупа `imopenlines` |

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

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

`data` в ответе — это число (идентификатор новой конфигурации), а не объект записи. Чтобы получить созданную конфигурацию со всеми полями, выполните отдельный запрос: `GET /v1/openline-configs/:id`.

**Нераспознанные поля.** Битрикс24 молча игнорирует незнакомые ключи метода `imopenlines.config.add`. Обёртка сверяет тело с полной схемой полей ([Поля конфигурации](/docs/openlines/config/fields)) и реагирует так:

- ни одно поле не распознано (например `{ "bogusField": "x" }`) — запрос отклоняется с `400 VALIDATION_ERROR` до вызова Битрикс24, в сообщении перечислены нераспознанные поля.
- распознано хотя бы одно поле, но часть ключей неизвестна — конфигурация создаётся, а в ответе возвращается `meta.warnings` со списком проигнорированных ключей.
- в теле передано поле только для чтения (`id`, `queue`, `dateCreate` и другие) — запрос отклоняется с `400 READONLY_FIELD`.

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

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