
## Загрузить шаблон

`POST /v1/bizproc-templates`

Загружает шаблон бизнес-процесса из файла BPT и привязывает его к типу документа. Поля передаются плоско в корне JSON, без обёртки fields.

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

| Поле | Тип | Обяз. | Описание |
|------|-----|:-----:|---------|
| `templateData` | array | да | Файл шаблона из двух элементов — имя файла и его содержимое в base64. Пример: `["process.bpt", "eNrlWNtO41YUfe..."]` |
| `documentType` | array | да | Тип документа `[модуль, объект, тип]`. Значения:<br>`["crm", "CCrmDocumentLead", "LEAD"]` — лиды<br>`["crm", "CCrmDocumentContact", "CONTACT"]` — контакты<br>`["crm", "CCrmDocumentCompany", "COMPANY"]` — компании<br>`["crm", "CCrmDocumentDeal", "DEAL"]` — сделки<br>`["crm", "Bitrix\\Crm\\Integration\\BizProc\\Document\\Quote", "QUOTE"]` — предложения<br>`["crm", "Bitrix\\Crm\\Integration\\BizProc\\Document\\SmartInvoice", "SMART_INVOICE"]` — счета<br>`["crm", "Bitrix\\Crm\\Integration\\BizProc\\Document\\Dynamic", "DYNAMIC_<entityTypeId>"]` — смарт-процессы, `<entityTypeId>` из поля `entityTypeId` в [GET /v1/smart-processes](/docs/entities/smart-processes/list)<br>`["lists", "BizprocDocument", "iblock_<id>"]` — процессы в ленте новостей<br>`["lists", "Bitrix\\Lists\\BizprocDocumentLists", "iblock_<id>"]` — списки в группах<br>`["disk", "Bitrix\\Disk\\BizProcDocument", "STORAGE_<id>"]` — документы Диска |
| `name` | string | да | Название шаблона. Пустое значение Битрикс24 отклоняет |
| `description` | string | нет | Описание шаблона |
| `autoExecute` | number | нет | Условие автозапуска: `0` — без автозапуска, `1` — при создании документа, `2` — при изменении, `3` — при создании и изменении. По умолчанию `0` |

## Примеры

Загружать шаблоны можно только ключом авторизации — оба примера отправляют ключ авторизации и заголовок `Authorization: Bearer`. Токен сессии выдаёт OAuth-авторизация и живёт 24 часа без продления — [Передача ключа](/docs/keys-auth#передача-ключа).

### curl — ключ авторизации

```bash
curl -X POST "https://vibecode.bitrix24.tech/v1/bizproc-templates" \
  -H "X-Api-Key: YOUR_APP_KEY" \
  -H "Authorization: Bearer USER_SESSION_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "documentType": ["crm", "CCrmDocumentDeal", "DEAL"],
    "name": "Согласование сделки",
    "description": "Загружен из приложения",
    "autoExecute": 0,
    "templateData": ["approval.bpt", "eNrlWNtO41YUfe..."]
  }'
```

### JavaScript — ключ авторизации

```javascript
import { readFile } from 'node:fs/promises'

const file = await readFile('approval.bpt')

const res = await fetch('https://vibecode.bitrix24.tech/v1/bizproc-templates', {
  method: 'POST',
  headers: {
    'X-Api-Key': 'YOUR_APP_KEY',
    'Authorization': 'Bearer USER_SESSION_TOKEN',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    documentType: ['crm', 'CCrmDocumentDeal', 'DEAL'],
    name: 'Согласование сделки',
    description: 'Загружен из приложения',
    autoExecute: 0,
    templateData: ['approval.bpt', file.toString('base64')],
  }),
})

const { success, data } = await res.json()
console.log(`Идентификатор шаблона: ${data.id}`)
```

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

| Поле | Тип | Описание |
|------|-----|---------|
| `success` | boolean | Всегда `true` при успехе |
| `data.id` | number | Идентификатор созданного шаблона. Указывается в путях обновления и удаления |

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

```json
{
  "success": true,
  "data": {
    "id": 1215
  }
}
```

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

400 — не передан файл шаблона:

```json
{
  "success": false,
  "error": {
    "code": "MISSING_REQUIRED_FIELDS",
    "message": "Body field \"templateData\" is required to create bizprocTemplate."
  }
}
```

## Ошибки

| HTTP | Код | Описание |
|------|-----|----------|
| 400 | `MISSING_REQUIRED_FIELDS` | Не передано поле `templateData` |
| 422 | `BITRIX_ERROR` | Не передан `name` — сообщение `Empty template name!`, `b24Code` содержит `ERROR_TEMPLATE_VALIDATION_FAILURE` |
| 422 | `BITRIX_ERROR` | Не передан `documentType` или указан неизвестный тип — сообщение `Incorrect field DOCUMENT_TYPE!`, `b24Code` содержит `ERROR_TEMPLATE_VALIDATION_FAILURE` |
| 422 | `BITRIX_ERROR` | Содержимое файла не распознано как шаблон. Текст `message` приходит от Битрикс24 на языке аккаунта, на русском — `Некорректный шаблон бизнес-процесса` |
| 403 | `OAUTH_REQUIRED` | Запрос отправлен API-ключом. Загружать шаблоны можно только ключом авторизации |
| 401 | `TOKEN_MISSING` | Ключ авторизации без заголовка `Authorization: Bearer` |
| 401 | `WRONG_AUTH_SCHEME` | Ключ авторизации отправлен в заголовке `Authorization: Bearer`. Сам ключ передаётся в `X-Api-Key`, а `Authorization: Bearer` несёт токен сессии |
| 401 | `INVALID_SESSION` | Токен сессии истёк или недействителен — пройдите авторизацию заново |
| 403 | `SCOPE_DENIED` | Ключу не хватает скоупа `bizproc` |

При ошибке на стороне Битрикс24 объект `error` дополняется полем `b24Code` — машинным кодом причины.

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

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

**Файл `.bpt` готовится в Битрикс24.** Настройте процесс в конструкторе бизнес-процессов и выгрузите его в файл — этот файл и передаётся в `templateData`. Собрать содержимое `.bpt` через API нельзя, поэтому подготовка файла остаётся ручным шагом.

**Ответ не показывает, что записалось.** Приходит только `id`, поэтому применённые значения проверяйте чтением записи через [`GET /v1/bizproc-templates`](./list.md) с фильтром по `id`.

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

- [Список шаблонов](/docs/entities/bizproc-templates/list)
- [Поиск шаблонов](/docs/entities/bizproc-templates/search)
- [Поля шаблона](/docs/entities/bizproc-templates/fields)
- [Обновить шаблон](/docs/entities/bizproc-templates/update)
- [Удалить шаблон](/docs/entities/bizproc-templates/delete)
- [Ключи и авторизация](/docs/keys-auth)
