Поля позиции корзины
GET /v1/basket-items/fields
Возвращает схему полей позиции корзины: типы, флаги только-для-чтения, список агрегируемых полей.
Примеры
curl — личный ключ
curl "https://vibecode.bitrix24.tech/v1/basket-items/fields" \
-H "X-Api-Key: YOUR_API_KEY"
curl — OAuth-приложение
curl "https://vibecode.bitrix24.tech/v1/basket-items/fields" \
-H "X-Api-Key: YOUR_APP_KEY" \
-H "Authorization: Bearer USER_SESSION_TOKEN"
JavaScript — личный ключ
const res = await fetch('https://vibecode.bitrix24.tech/v1/basket-items/fields', {
headers: {
'X-Api-Key': 'YOUR_API_KEY',
},
})
const { data } = await res.json()
console.log('Поля позиции:', Object.keys(data.fields))
JavaScript — OAuth-приложение
const res = await fetch('https://vibecode.bitrix24.tech/v1/basket-items/fields', {
headers: {
'X-Api-Key': 'YOUR_APP_KEY',
'Authorization': 'Bearer USER_SESSION_TOKEN',
},
})
const { data } = await res.json()
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
id |
number | Идентификатор позиции (только чтение) |
orderId |
number | null | Идентификатор заказа. Источник: `GET /v1/orders`. У свободных позиций без заказа — null |
productId |
number | Идентификатор товара в каталоге. Источник: `GET /v1/catalog-products`. 0 — виртуальная позиция без привязки к каталогу |
name |
string | Название позиции |
price |
number | Цена за единицу с учётом скидки |
basePrice |
number | Базовая цена до скидки |
discountPrice |
number | Размер скидки за единицу |
customPrice |
boolean | Цена задана вручную и не пересчитывается при изменении товара в каталоге |
currency |
string | Валюта позиции. Список: `GET /v1/currencies` |
quantity |
number | Количество |
sort |
number | Порядок позиции в корзине. По умолчанию 100 |
weight |
number | null | Вес единицы в граммах. У позиций без веса — null |
dimensions |
string | null | Габариты в формате сериализации PHP. У позиций без габаритов — null |
measureCode |
number | null | Код единицы измерения. 796 — шт, 163 — г, 006 — м. Может быть null |
measureName |
string | null | Название единицы измерения. Может быть null |
canBuy |
boolean | Доступна ли позиция к покупке |
vatRate |
number | null | Ставка НДС в долях единицы. 0.20 = 20%. У позиций без НДС — null |
vatIncluded |
boolean | Включён ли НДС в цену |
xmlId |
string | Внешний идентификатор позиции |
productXmlId |
string | null | Внешний идентификатор товара. Может быть null |
catalogXmlId |
string | null | Внешний идентификатор каталога. Может быть null |
dateInsert |
datetime | Дата создания (только чтение) |
dateUpdate |
datetime | Дата последнего изменения (только чтение) |
barcodeMulti |
boolean | Позиция учитывается по нескольким штрихкодам |
type |
string | null | Тип позиции (только чтение). На живых порталах всегда null |
properties |
array | Свойства позиции, только чтение. Каждый элемент: {basketId, code, id, name, sort, value, xmlId}. Возвращается только GET /v1/basket-items/:id, в списке — нет |
reservations |
array | Резервы позиции на складах, только чтение. Возвращается только GET /v1/basket-items/:id, в списке — нет |
Пример ответа
{
"success": true,
"data": {
"fields": {
"id": { "type": "number", "readonly": true },
"orderId": { "type": "number", "readonly": false },
"productId": { "type": "number", "readonly": false },
"name": { "type": "string", "readonly": false },
"price": { "type": "number", "readonly": false },
"basePrice": { "type": "number", "readonly": false },
"discountPrice": { "type": "number", "readonly": false },
"customPrice": { "type": "boolean", "readonly": false },
"currency": { "type": "string", "readonly": false },
"quantity": { "type": "number", "readonly": false },
"sort": { "type": "number", "readonly": false },
"weight": { "type": "number", "readonly": false, "nullable": true },
"dimensions": { "type": "string", "readonly": false, "nullable": true },
"measureCode": { "type": "number", "readonly": false, "nullable": true },
"measureName": { "type": "string", "readonly": false, "nullable": true },
"canBuy": { "type": "boolean", "readonly": false },
"vatRate": { "type": "number", "readonly": false, "nullable": true },
"vatIncluded": { "type": "boolean", "readonly": false },
"xmlId": { "type": "string", "readonly": false },
"productXmlId": { "type": "string", "readonly": false, "nullable": true },
"catalogXmlId": { "type": "string", "readonly": false, "nullable": true },
"dateInsert": { "type": "datetime", "readonly": true },
"dateUpdate": { "type": "datetime", "readonly": true },
"barcodeMulti": { "type": "boolean", "readonly": false },
"type": { "type": "string", "readonly": true },
"properties": { "type": "array", "readonly": true },
"reservations": { "type": "array", "readonly": true }
},
"aggregatable": ["price", "quantity", "currency", "orderId", "productId"],
"batch": ["create", "update", "delete"]
}
}
Пример ответа при ошибке
403 — нет скоупа:
{
"success": false,
"error": {
"code": "SCOPE_DENIED",
"message": "This endpoint requires 'sale' scope"
}
}
Ошибки
| HTTP | Код | Описание |
|---|---|---|
| 403 | SCOPE_DENIED |
API-ключ не имеет скоупа sale |
| 401 | TOKEN_MISSING |
API-ключ не имеет настроенных токенов |
Полный список общих ошибок API — Ошибки.