## Получить конфигурацию конструктора

`GET /v1/crm-forms/configuration`

Возвращает справочные данные конструктора CRM-форм на портале. Вызывайте перед созданием или изменением формы, чтобы выбрать схему сущностей, язык, воронку и проверить лимит активных форм.

## Примеры

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

```bash
curl "https://vibecode.bitrix24.tech/v1/crm-forms/configuration" \
  -H "X-Api-Key: YOUR_API_KEY"
```

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

```bash
curl "https://vibecode.bitrix24.tech/v1/crm-forms/configuration" \
  -H "X-Api-Key: YOUR_APP_KEY" \
  -H "Authorization: Bearer USER_SESSION_TOKEN"
```

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

```javascript
const res = await fetch('https://vibecode.bitrix24.tech/v1/crm-forms/configuration', {
  headers: {
    'X-Api-Key': 'YOUR_API_KEY',
  },
})

const { success, data } = await res.json()
console.log('Активных форм:', data.limits.activeForms.current, 'из', data.limits.activeForms.maximum)
```

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

```javascript
const res = await fetch('https://vibecode.bitrix24.tech/v1/crm-forms/configuration', {
  headers: {
    'X-Api-Key': 'YOUR_APP_KEY',
    'Authorization': 'Bearer USER_SESSION_TOKEN',
  },
})

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

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

| Поле | Тип | Описание |
|------|-----|---------|
| `success` | boolean | Всегда `true` при успехе |
| `data` | object | Конфигурация конструктора с сохранением возвращённых свойств |
| `data.entitySchemes` | array | Схемы сущностей CRM, которые создаёт форма |
| `data.entitySchemes[].id` | number | Идентификатор схемы. Значение для `crm.entityScheme` при [создании формы](/docs/entities/crm-forms/create) |
| `data.entitySchemes[].name` | string | Название схемы |
| `data.entitySchemes[].description` | string | Какие сущности создаются по схеме |
| `data.entitySchemes[].entityNames` | array | Имена сущностей схемы, например `LEAD`, `COMPANY`, `CONTACT` |
| `data.entitySchemes[].mainEntityName` | string \| null | Основная сущность схемы. `null` у схемы без основной сущности, например «Клиент» |
| `data.entitySchemes[].hasInvoice` | boolean | Создаёт ли схема счёт |
| `data.entitySchemes[].dynamic` | boolean | `true` у схем смарт-процессов |
| `data.duplicateModes` | array | Режимы обработки дублей |
| `data.duplicateModes[].id` | string | Код режима: `MERGE` или `REPLACE`. Значение для `crm.duplicateMode` |
| `data.duplicateModes[].name` | string | Название режима |
| `data.lead.enabled` | boolean | Включены ли лиды на портале |
| `data.dealCategories` | array | Воронки сделок |
| `data.dealCategories[].id` | number | Идентификатор воронки. Значение для `crm.dealCategoryId` |
| `data.dealCategories[].name` | string | Название воронки |
| `data.smartProcesses` | array | Смарт-процессы портала |
| `data.smartProcesses[].entityTypeId` | number | Идентификатор типа смарт-процесса |
| `data.smartProcesses[].entityName` | string | Имя сущности смарт-процесса в виде `DYNAMIC_<entityTypeId>` |
| `data.smartProcesses[].name` | string | Название смарт-процесса |
| `data.smartProcesses[].categories` | array | Воронки смарт-процесса |
| `data.smartProcesses[].categories[].id` | number | Идентификатор воронки. Значение для `crm.smartProcessCategoryId` |
| `data.smartProcesses[].categories[].name` | string | Название воронки |
| `data.languages` | array | Языки формы |
| `data.languages[].id` | string | Код языка. Значение для `languageId` формы |
| `data.languages[].name` | string | Название языка |
| `data.currencies` | array | Валюты портала |
| `data.currencies[].id` | string | Код валюты, например `RUB` |
| `data.currencies[].fullName` | string | Краткое обозначение валюты |
| `data.currencies[].formatString` | string | Шаблон вывода суммы. `#` заменяется суммой |
| `data.fieldTypes` | array | Типы полей формы |
| `data.fieldTypes[].id` | string | Код типа. Значение для `fields[].type` формы |
| `data.fieldTypes[].name` | string | Название типа |
| `data.fieldTypes[].parameters` | array | Настройки, которые принимает поле этого типа: `label`, `required`, `multiple`, `placeholder`, `valueType`, `value` |
| `data.paySystems` | array | Платёжные системы портала |
| `data.paySystems[].id` | number | Идентификатор платёжной системы |
| `data.paySystems[].name` | string | Название платёжной системы |
| `data.permissions.canRead` | boolean | Может ли пользователь ключа читать формы |
| `data.permissions.canEdit` | boolean | Может ли пользователь ключа изменять формы |
| `data.limits.activeForms.current` | number | Сколько форм включено сейчас |
| `data.limits.activeForms.maximum` | number | Сколько форм можно включить на портале |
| `data.product.isCloud` | boolean | `true` для облачного Битрикс24 |
| `data.product.isRegionRussian` | boolean | `true` для портала российского региона |
| `data.region` | string | Код региона портала, например `ru` |

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

Показаны первые элементы массивов. Состав массивов зависит от портала.

```json
{
  "success": true,
  "data": {
    "entitySchemes": [
      {
        "id": 1,
        "name": "Лид",
        "description": "лид",
        "entityNames": ["LEAD", "COMPANY", "CONTACT"],
        "mainEntityName": "LEAD",
        "hasInvoice": false,
        "dynamic": false
      },
      {
        "id": 1770,
        "name": "Закупка оборудования",
        "description": "Смарт-процесс, контакт или компания",
        "entityNames": ["DYNAMIC_177", "COMPANY", "CONTACT"],
        "mainEntityName": "DYNAMIC_177",
        "hasInvoice": false,
        "dynamic": true
      }
    ],
    "duplicateModes": [
      { "id": "MERGE", "name": "Объединять" },
      { "id": "REPLACE", "name": "Заменять" }
    ],
    "lead": { "enabled": true },
    "dealCategories": [
      { "id": 0, "name": "Общая" },
      { "id": 1, "name": "Newest" }
    ],
    "smartProcesses": [
      {
        "entityTypeId": 177,
        "entityName": "DYNAMIC_177",
        "name": "Закупка оборудования",
        "categories": [
          { "id": 7, "name": "Общее" },
          { "id": 9, "name": "Вторая воронка" }
        ]
      }
    ],
    "languages": [
      { "id": "en", "name": "English" },
      { "id": "ru", "name": "Русский" }
    ],
    "currencies": [
      { "id": "RUB", "fullName": "руб.", "formatString": "# &#8381;" }
    ],
    "fieldTypes": [
      { "id": "section", "name": "Раздел", "parameters": ["label"] },
      { "id": "string", "name": "Строка", "parameters": ["label", "required", "multiple", "placeholder", "valueType", "value"] }
    ],
    "paySystems": [
      { "id": 1, "name": "Банковский перевод (Компании)" },
      { "id": 11, "name": "Наличные" }
    ],
    "permissions": { "canRead": true, "canEdit": true },
    "limits": { "activeForms": { "current": 4, "maximum": 99999 } },
    "product": { "isCloud": true, "isRegionRussian": true },
    "region": "ru"
  }
}
```

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

400 — передан параметр запроса:

```json
{
  "success": false,
  "error": {
    "code": "INVALID_PARAMS",
    "message": "Unknown query parameter"
  }
}
```

## Ошибки

| HTTP | Код | Описание |
|------|-----|----------|
| 400 | `INVALID_PARAMS` | Эндпоинт не принимает параметры строки запроса |
| 403 | `BITRIX_ACCESS_DENIED` | У пользователя Битрикс24 нет прав на формы |
| 403 | `BITRIX_INSUFFICIENT_SCOPE` | У токена Битрикс24 нет необходимого скоупа |
| 404 | `ENTITY_NOT_FOUND` | Портал не нашёл запрошенную сущность или описание поля. Исходный код — `error.b24Code` |
| 409 | `CRM_FORM_REST_NOT_ENABLED` | REST-методы CRM-форм недоступны на этом портале Битрикс24. Это не означает отсутствие отдельной формы |
| 400–599 | `CRM_FORM_*` | Отказ по правилам форм. Код и HTTP-статус сохранены, исходный код — в `error.b24Code` |
| 422 | `BITRIX_ERROR` | Другой отказ Битрикс24. Причина — в `error.message`, исходный код — в `error.b24Code` |
| 429 | `RATE_LIMITED` | Превышена частота запросов. Учитывайте заголовок `Retry-After` |
| 502 | `BITRIX_UNAVAILABLE` | Битрикс24 вернул ответ в неожиданном виде |
| 502 | `BITRIX_UNAVAILABLE` | Битрикс24 недоступен: ошибка сервера или разрыв соединения |
| 503 | `BITRIX_TIMEOUT` | Битрикс24 не ответил вовремя. Чтение можно повторить |
| 401 | `MISSING_API_KEY` | Не передан заголовок `X-Api-Key` |
| 401 | `TOKEN_MISSING` | У ключа не настроен доступ к Битрикс24 |
| 403 | `SCOPE_DENIED` | У API-ключа Вайбкод нет скоупа `crm` |

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

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

- **Идентификатор схемы смарт-процесса не равен `entityTypeId`.** Для смарт-процесса `177` в `entitySchemes` приходит схема с `id: 1770`. В `crm.entityScheme` передавайте `id` схемы, а не `entityTypeId`.

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

- [Создать форму](/docs/entities/crm-forms/create)
- [Включить форму](/docs/entities/crm-forms/activate)
- [Поля контракта формы](/docs/entities/crm-forms/fields)
- [Список полей сущностей](/docs/entities/crm-forms/entity-fields)
- [CRM-формы](/docs/entities/crm-forms)
