Для AI-агентов: markdown этой страницы — /docs-content/entities/recurring-deals/batch.md индекс документации — /llms.txt
Пакетные операции
POST /v1/recurring-deals/batch
Выполняет несколько операций одного типа над настройками регулярных сделок.
Параметры
Параметров пути нет. Данные пакета передаются в теле запроса.
Поля запроса (body)
| Поле | Тип | Обяз. | Описание |
|---|---|---|---|
Полеaction |
Типstring | Обяз.да | ОписаниеОперация для всего пакета: create, update, delete, list, get или fields |
Полеitems |
Типobject[] | Обяз.нет | ОписаниеОбязателен для create и update. Непустой массив объектов с полями создания или изменения |
Полеitems[].id |
Типnumber / string | Обяз.нет | ОписаниеОбязателен для update. ID настройки из списка регулярных сделок |
Полеids |
Типarray | Обяз.нет | ОписаниеОбязателен для delete. Непустой массив ID настроек из списка регулярных сделок |
Полеcalls |
Типobject[] | Обяз.нет | ОписаниеОбязателен для list, get и fields. Непустой массив подзапросов |
Полеcalls[].params |
Типobject | Обяз.нет | ОписаниеПараметры подзапроса. Для list — параметры списка, для get — ID настройки, для fields можно передать {} |
Полеcalls[].params.id |
Типnumber / string | Обяз.нет | ОписаниеОбязателен для get. ID настройки из списка регулярных сделок |
Размер пакета ограничен настройками платформы. По умолчанию — до 500 элементов для create, update, delete и до 50 подзапросов для list, get, fields.
В пакетах записи null не передаётся для active, startDate, categoryId, limitRepeat, limitDate и вложенных полей params. Для явной передачи null используйте создание одной настройки или изменение одной настройки.
Примеры
curl — личный ключ
curl -X POST "https://vibecode.bitrix24.tech/v1/recurring-deals/batch" \
-H "X-Api-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"action":"update","items":[{"id":11,"active":false}]}'
curl — OAuth-приложение
curl -X POST "https://vibecode.bitrix24.tech/v1/recurring-deals/batch" \
-H "X-Api-Key: YOUR_APP_KEY" \
-H "Authorization: Bearer USER_SESSION_TOKEN" \
-H "Content-Type: application/json" \
-d '{"action":"update","items":[{"id":11,"active":false}]}'
JavaScript — личный ключ
const response = await fetch('https://vibecode.bitrix24.tech/v1/recurring-deals/batch', {
method: 'POST',
headers: { 'X-Api-Key': 'YOUR_API_KEY', 'Content-Type': 'application/json' },
body: JSON.stringify({"action":"update","items":[{"id":11,"active":false}]}),
})
const result = await response.json()
if (!result.success) throw new Error(result.error.message)
console.log(result.data)
JavaScript — OAuth-приложение
const response = await fetch('https://vibecode.bitrix24.tech/v1/recurring-deals/batch', {
method: 'POST',
headers: { 'X-Api-Key': 'YOUR_APP_KEY', 'Authorization': 'Bearer USER_SESSION_TOKEN', 'Content-Type': 'application/json' },
body: JSON.stringify({"action":"update","items":[{"id":11,"active":false}]}),
})
const result = await response.json()
if (!result.success) throw new Error(result.error.message)
console.log(result.data)
Поля ответа
Создание, изменение и удаление
| Поле | Тип | Обяз. | Описание |
|---|---|---|---|
Полеsuccess |
Типboolean | Обяз.да | Описаниеtrue, если пакет обработан. Результат каждого элемента проверяйте отдельно |
Полеdata |
Типobject | Обяз.да | ОписаниеРезультаты пакета |
Полеdata.results |
Типobject[] | Обяз.да | ОписаниеРезультаты в порядке элементов запроса |
Полеdata.results[].index |
Типnumber | Обяз.да | ОписаниеИндекс элемента в исходном массиве, начиная с нуля |
Полеdata.results[].success |
Типboolean | Обяз.да | ОписаниеУспешна ли операция над этим элементом |
Полеdata.results[].id |
Типnumber / string | Обяз.нет | ОписаниеID созданной настройки или исходный ID при изменении и удалении. Получить настройку: по ID |
Полеdata.results[].error |
Типstring | Обяз.нет | ОписаниеКод отказа элемента. Может быть пустой строкой, поэтому проверяйте success |
Полеdata.results[].message |
Типstring | Обяз.нет | ОписаниеСообщение об отказе элемента |
Полеdata.summary |
Типobject | Обяз.да | ОписаниеСводка по пакету |
Полеdata.summary.total |
Типnumber | Обяз.да | ОписаниеКоличество обработанных элементов |
Полеdata.summary.succeeded |
Типnumber | Обяз.да | ОписаниеКоличество успешных операций |
Полеdata.summary.failed |
Типnumber | Обяз.да | ОписаниеКоличество операций с отказом |
Ошибка отдельной операции возвращается в data.results, а HTTP-статус пакета остаётся 200.
Чтение
| Поле | Тип | Обяз. | Описание |
|---|---|---|---|
Полеsuccess |
Типboolean | Обяз.да | Описаниеtrue, если пакет обработан |
Полеdata |
Типobject[] | Обяз.да | ОписаниеРезультаты в порядке подзапросов |
Полеdata[].data |
Типobject / array / null | Обяз.нет | ОписаниеУспешный результат: для list — массив настроек, для get — настройка или null, для fields — карта метаданных полей. Поля настройки: Поля регулярной сделки |
Полеdata[].total |
Типnumber | Обяз.нет | ОписаниеОбщее количество записей для list |
Полеdata[].hasMore |
Типboolean | Обяз.нет | ОписаниеЕсть ли следующая страница для list |
Полеdata[].meta |
Типobject | Обяз.нет | ОписаниеПредупреждения списка |
Полеdata[].error |
Типobject | Обяз.нет | ОписаниеОтказ отдельного подзапроса вместо data |
Полеdata[].error.code |
Типstring | Обяз.нет | ОписаниеКод отказа подзапроса |
Полеdata[].error.message |
Типstring | Обяз.нет | ОписаниеСообщение об отказе подзапроса |
Для fields ключи карты сохраняют исходные имена полей Битрикс24, например ID и DEAL_ID. Для list и get поля настроек имеют имена API Вайбкод.
Отказ одного подзапроса чтения не останавливает остальные. HTTP-статус пакета остаётся 200.
Пример ответа
200 — настройка из примера изменена:
{
"success": true,
"data": {
"results": [
{
"index": 0,
"success": true,
"id": 11
}
],
"summary": {
"total": 1,
"succeeded": 1,
"failed": 0
}
}
}
Для чтения структура другая. Тело запроса: {"action":"list","calls":[{"params":{"filter":{"id":11},"select":["id","active"]}}]}.
{
"success": true,
"data": [
{
"data": [
{
"id": 11,
"active": false
}
],
"total": 1,
"hasMore": false
}
]
}
Пример ответа при ошибке
400 — передана неизвестная операция:
{
"success": false,
"error": {
"code": "INVALID_BATCH_ACTION",
"message": "Action must be one of: create, update, delete, list, get, fields"
}
}
Ошибки
Таблица описывает отказы всего запроса. Отказы отдельных операций находятся в результатах пакета.
Пакет записи выполняется без отката. При общем отказе после отправки команд, например 502 BITRIX_UNAVAILABLE или 503 BITRIX_TIMEOUT, часть операций могла уже выполниться, а результат других может быть неизвестен. Накопленные результаты успешных операций в такой ответ не попадают. Перед повтором проверьте состояние записей: повторное создание может привести к дубликатам.
| HTTP | Код | Описание |
|---|---|---|
| HTTP400 | КодINVALID_BATCH_ACTION |
ОписаниеОтсутствует action или передана неизвестная операция |
| HTTP400 | КодBATCH_ITEM_VALIDATION |
ОписаниеНет непустого массива для выбранной операции, обязательного поля элемента, либо элемент содержит некорректное значение или поле только для чтения |
| HTTP400 | КодBATCH_LIMIT_EXCEEDED |
ОписаниеПревышен размер пакета. Текущий предел указан в error.message |
| HTTP403 | КодMANAGEMENT_KEY_NO_ENTITY_ACCESS |
ОписаниеКлюч управления не имеет доступа к данным сущностей |
| HTTP403 | КодWRITE_BLOCKED_READONLY_KEY |
ОписаниеКлюч прошёл проверку скоупа, но его режим запрещает create, update или delete |
| HTTP401 | КодMISSING_API_KEY |
ОписаниеНе передан заголовок X-Api-Key |
| HTTP401 | КодTOKEN_MISSING |
ОписаниеНет настроенных токенов доступа к Битрикс24 |
| HTTP403 | КодSCOPE_DENIED |
ОписаниеКлючу не хватает скоупа crm |
| HTTP403 | КодBITRIX_ACCESS_DENIED |
ОписаниеБитрикс24 отказал в доступе ко всему пакету |
| HTTP422 | КодBITRIX_ERROR |
ОписаниеБизнес-отказ Битрикс24 на уровне всего пакета. Причина — в error.message |
| HTTP503 | КодBITRIX_TIMEOUT |
ОписаниеБитрикс24 не ответил вовремя |
| HTTP502 | КодBITRIX_UNAVAILABLE |
ОписаниеСетевой сбой или ошибка сервера Битрикс24 с HTTP-статусом 500 и выше |
| HTTP429 | КодRATE_LIMITED |
ОписаниеПревышен лимит запросов. Срок ожидания — в заголовке Retry-After |
Полный список общих ошибок API — Коды ошибок.