Для AI-агентов: markdown этой страницы — /docs-content/entities/invoices/products-update.md индекс документации — /llms.txt

Обновить товар счёта

PATCH /v1/invoices/:id/products/:rowId

Обновляет товарную позицию счёта. Передайте только изменяемые поля.

Имена полей проверяются. Поле, которого нет среди записываемых, не отбрасывается молча: запрос отклоняется с 400 INVALID_PARAMS, и в тексте ошибки перечислены записываемые имена. Поля только для чтения, которые приходят в ответах товарных позиций — priceAccount, ownerId, storeId и другие, — принимаются и игнорируются, поэтому объект, прочитанный через GET, можно отправить обратно без чистки.

Параметры

Параметр Тип Обяз. Описание
id (path) number да ID счёта
rowId (path) number да ID товарной позиции (из ответа list или add, не productId из каталога)

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

Поле Тип Описание
price number Цена за единицу
quantity number Количество
productId number ID товара. Каталог: GET /v1/products
discountTypeId number Как задана скидка: 1 — суммой в поле discount, 2 — процентом в поле discountRate. Опущенное поле сохраняет прежнее значение позиции — чтобы сменить режим скидки, передайте его явно
discount number Сумма скидки. Учитывается только при discountTypeId равном 1
discountRate number Процент скидки. Учитывается только при discountTypeId равном 2
taxRate number Ставка налога (%)
taxIncluded boolean Налог включён в цену
sort number Сортировка

Примеры

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

Terminal
curl -X PATCH "https://vibecode.bitrix24.tech/v1/invoices/741/products/1471" \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "price": 9999, "quantity": 10 }'

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

Terminal
curl -X PATCH "https://vibecode.bitrix24.tech/v1/invoices/741/products/1471" \
  -H "X-Api-Key: YOUR_APP_KEY" \
  -H "Authorization: Bearer USER_SESSION_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "price": 9999, "quantity": 10 }'

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

javascript
const res = await fetch('https://vibecode.bitrix24.tech/v1/invoices/741/products/1471', {
  method: 'PATCH',
  headers: {
    'X-Api-Key': 'YOUR_API_KEY',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({ price: 9999, quantity: 10 }),
})

const { success, data } = await res.json()
console.log('Обновлено:', data.price, 'x', data.quantity)

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

javascript
const res = await fetch('https://vibecode.bitrix24.tech/v1/invoices/741/products/1471', {
  method: 'PATCH',
  headers: {
    'X-Api-Key': 'YOUR_APP_KEY',
    'Authorization': 'Bearer USER_SESSION_TOKEN',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({ price: 9999, quantity: 10 }),
})

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

Поля ответа

Поле Тип Описание
success boolean Всегда true при успехе
data object Обновлённая товарная позиция целиком. Все поля — см. Поля товаров

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

JSON
{
  "success": true,
  "data": {
    "id": 1471,
    "productId": 1,
    "productName": "Серверное оборудование",
    "price": 9999,
    "quantity": 10,
    "discount": 0,
    "taxRate": null,
    "taxIncluded": false
  }
}

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

404 — позиция не найдена:

JSON
{
  "success": false,
  "error": {
    "code": "ENTITY_NOT_FOUND",
    "message": "Элемент не найден"
  }
}

Ошибки

HTTP Код Описание
400 INVALID_PARAMS Тело содержит имя, которого нет среди записываемых полей — см. Поля товаров
404 ENTITY_NOT_FOUND Позиция не найдена
400 INVALID_ROW_ID rowId в адресе не целое положительное число
403 SCOPE_DENIED API-ключ не имеет скоупа crm
401 TOKEN_MISSING API-ключ не имеет настроенных токенов

Полный список общих ошибок API — Ошибки.

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