Для AI-агентов: markdown этой страницы — /docs-content/entities/crm-payments/available-products.md индекс документации — /llms.txt
Доступные товарные строки для оплаты CRM
GET /v1/crm-payments/available-products
Возвращает товарные строки объекта CRM, например сделки, с количеством, которое ещё не вошло в оплаты.
ID строки отсюда передаётся как rowId при добавлении позиции в оплату.
Параметры
| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
entityTypeId (query) |
number | да | Тип объекта CRM. Для сделки — 2 |
entityId (query) |
number | да | ID объекта CRM. Для сделки — ID из GET /v1/deals |
Примеры
curl — личный ключ
curl "https://vibecode.bitrix24.tech/v1/crm-payments/available-products?entityTypeId=2&entityId=8761" \
-H "X-Api-Key: YOUR_API_KEY"
curl — OAuth-приложение
curl "https://vibecode.bitrix24.tech/v1/crm-payments/available-products?entityTypeId=2&entityId=8761" \
-H "X-Api-Key: YOUR_APP_KEY" \
-H "Authorization: Bearer USER_SESSION_TOKEN"
JavaScript — личный ключ
const res = await fetch('https://vibecode.bitrix24.tech/v1/crm-payments/available-products?entityTypeId=2&entityId=8761', {
headers: {
'X-Api-Key': 'YOUR_API_KEY',
},
})
const { data } = await res.json()
for (const row of data.productRows) {
console.log(`${row.id}: ${row.productName} — доступно ${row.quantity} ${row.measureName}`)
}
JavaScript — OAuth-приложение
const res = await fetch('https://vibecode.bitrix24.tech/v1/crm-payments/available-products?entityTypeId=2&entityId=8761', {
headers: {
'X-Api-Key': 'YOUR_APP_KEY',
'Authorization': 'Bearer USER_SESSION_TOKEN',
},
})
const { data } = await res.json()
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
success |
boolean | true при успехе |
data.productRows |
array | Товарные строки объекта |
data.productRows[].id |
number | ID товарной строки объекта. Передаётся как rowId в POST /v1/crm-payments/:id/products |
data.productRows[].ownerId |
number | ID объекта CRM |
data.productRows[].ownerType |
string | Тип объекта CRM буквенным кодом, для сделки — D |
data.productRows[].productId |
number | ID товара. Каталог: GET /v1/products. 0 — строка без товара из каталога |
data.productRows[].productName |
string | Название товара |
data.productRows[].price |
number | Цена |
data.productRows[].priceAccount |
number | Цена в валюте отчёта |
data.productRows[].priceExclusive |
number | Цена без налога со скидкой |
data.productRows[].priceNetto |
number | Цена нетто |
data.productRows[].priceBrutto |
number | Цена брутто |
data.productRows[].quantity |
number | Количество, которое ещё не вошло в оплаты объекта |
data.productRows[].discountTypeId |
number | Как задана скидка: 1 — суммой, 2 — процентом |
data.productRows[].discountRate |
number | Процент скидки |
data.productRows[].discountSum |
number | Сумма скидки |
data.productRows[].taxRate |
number | null | Налог в процентах. null — налог не задан |
data.productRows[].taxIncluded |
string | Налог включён в цену: Y или N |
data.productRows[].customized |
string | Строка изменена вручную: Y или N |
data.productRows[].measureCode |
number | Код единицы измерения |
data.productRows[].measureName |
string | Единица измерения |
data.productRows[].sort |
number | Сортировка |
data.productRows[].xmlId |
string | Внешний код строки |
data.productRows[].type |
number | Тип товара |
data.productRows[].taxName |
string | Название налога |
Пример ответа
{
"success": true,
"data": {
"productRows": [
{
"id": 2355,
"ownerId": 8761,
"ownerType": "D",
"productId": 0,
"productName": "TEST позиция для оплаты",
"price": 1500,
"priceAccount": 1500,
"priceExclusive": 1500,
"priceNetto": 1500,
"priceBrutto": 1500,
"quantity": 1,
"discountTypeId": 2,
"discountRate": 0,
"discountSum": 0,
"taxRate": null,
"taxIncluded": "N",
"customized": "Y",
"measureCode": 796,
"measureName": "шт",
"sort": 0,
"xmlId": "",
"type": 1,
"taxName": "Без НДС"
}
]
}
}
Пример ответа при ошибке
400 — в entityTypeId неизвестный тип объекта CRM:
{
"success": false,
"error": {
"code": "INVALID_ENTITY_TYPE",
"message": "This CRM entity type has no payable product rows."
}
}
Ошибки
| HTTP | Код | Описание |
|---|---|---|
| 400 | MISSING_REQUIRED_FIELDS |
Не передан entityTypeId или entityId, либо значение не положительное целое |
| 400 | INVALID_ENTITY_TYPE |
entityTypeId не тип объекта CRM, например 999 |
| 404 | ENTITY_NOT_FOUND |
Объекта CRM с таким entityTypeId и entityId нет |
| 422 | BITRIX_ERROR |
Битрикс24 отклонил запрос, причина — в error.message |
| 403 | BITRIX_ACCESS_DENIED |
У пользователя ключа нет доступа к объекту CRM или оплате в Битрикс24 |
| 403 | SCOPE_DENIED |
API-ключ не имеет скоупа crm |
| 401 | TOKEN_MISSING |
API-ключ не имеет настроенных токенов |
| 401 | MISSING_API_KEY |
Не передан X-Api-Key |
Полный список общих ошибок API — Ошибки.
Известные особенности
Остаток считается по всем оплатам объекта. В строке с количеством 3, из которых 2 уже добавлены в оплату, quantity равен 1. После удаления такой оплаты остаток снова становится 3.