Запрос информации о товарах
Описание
POST /cart
Передает магазину список товаров в корзине покупателя и запрашивает актуальную информацию по товарам в корзине:
наличие товаров;
опции, даты и интервалы доставки, доступные для указанной корзины товаров и региона;
доступные способы оплаты.
URL ресурса:
https://<URL_запроса>/cart
Таймаут на получение ответа: 5,5 секунд.Передаваемые магазину данные
Структура данных в теле запроса приведена ниже. Порядок следования параметров не гарантируется.
{
"cart":
{
"businessId": {int64},
"currency": "{enum}",
"deliveryCurrency": "{enum}",
"delivery":
{
"estimated": {boolean},
"region":
{
"id": {int32},
"name": "{string}",
"type": "{enum}",
"parent":
{
"id": {int32},
"name": "{string}",
"type": "{enum}",
"parent":
{
...
}
}
},
"address":
{
"country": "{string}",
"city": "{string}",
"subway": "{string}",
"street": "{string}",
"house": "{string}",
"block": "{string}",
"floor": "{string}"
}
},
"items":
[
{
"feedId": {int64},
"offerId": "{string}",
"count": {int32},
"offerName": "{string}",
"feedCategoryId": "{string}",
"fulfilmentShopId": {int64}
},
...
]
}
}
Описание параметров:
Параметр | Тип | Значение |
---|---|---|
cart | Корзина. | |
Параметры, вложенные в cart | ||
businessId | Int64 | Идентификатор бизнеса-аккаунта. Объединяет внутри себя набор параметров partnerId. |
currency | Enum | Валюта, в которой выражены цены товаров в заказе:
|
deliveryCurrency | Enum | Валюта, в которой выражена цена доставки:
|
delivery | Информация о доставке. | |
items | Товары в корзине. | |
Параметры, вложенные в delivery | ||
region | Регион доставки. | |
address | Адрес доставки. Передается, если покупатель уже указал адрес на Маркете. | |
estimated | Boolean | Признак, показывающий, что дата доставки по заказу не подтверждена. Передается для товаров на заказ с долгим сроком доставки (31-60 дней). Окончательную дату доставки нужно передать Маркету в течение 7 дней с даты оформления заказа в запросе PUT /campaigns/{campaignId}/orders/{orderId}/delivery/date. |
Параметры, вложенные в region | ||
id | Int32 | Идентификатор региона. |
name | String | Название региона. |
type | Enum | Тип региона. Возможные значения:
|
parent | Родительский регион. Указываются родительские регионы до уровня страны включительно (type=COUNTRY). | |
Параметры, вложенные в parent | ||
id | Int32 | Идентификатор родительского региона. |
name | String | Название родительского региона. |
type | Enum | Тип родительского региона. Возможные значения:
|
parent | Рекурсивно вложенный элемент для указания родительских регионов более высокого уровня. | |
Параметры, вложенные в address | ||
country | String | Страна. |
city | String | Город или населенный пункт. |
subway | String | Станция метро. |
street | String | Улица. |
house | String | Дом или владение. |
block | String | Корпус или строение. |
floor | String | Этаж. |
floor | String | Этаж. |
lat | Double | Широта. Не гарантируем заполнение, так как это опциональное поле. |
lon | Double | Долгота. Не гарантируем заполнение, так как это опциональное поле. |
Параметры, вложенные в items | ||
feedId | Int64 | Идентификатор прайс-листа, содержащего предложение. |
offerId | String | Идентификатор предложения из прайс-листа. |
offerName | String | Название товара. |
feedCategoryId | String | Идентификатор категории, указанной в прайс-листе. |
fulfilmentShopId | Int64 | Идентификатор поставщика товара. Чтобы узнать его, войдите в личный кабинет магазина и нажмите на его название. Идентификатор указан в поле ID магазина в строке нужного склада. |
count | Int32 | Количество единиц товара. |
Параметр | Тип | Значение |
---|---|---|
cart | Корзина. | |
Параметры, вложенные в cart | ||
businessId | Int64 | Идентификатор бизнеса-аккаунта. Объединяет внутри себя набор параметров partnerId. |
currency | Enum | Валюта, в которой выражены цены товаров в заказе:
|
deliveryCurrency | Enum | Валюта, в которой выражена цена доставки:
|
delivery | Информация о доставке. | |
items | Товары в корзине. | |
Параметры, вложенные в delivery | ||
region | Регион доставки. | |
address | Адрес доставки. Передается, если покупатель уже указал адрес на Маркете. | |
estimated | Boolean | Признак, показывающий, что дата доставки по заказу не подтверждена. Передается для товаров на заказ с долгим сроком доставки (31-60 дней). Окончательную дату доставки нужно передать Маркету в течение 7 дней с даты оформления заказа в запросе PUT /campaigns/{campaignId}/orders/{orderId}/delivery/date. |
Параметры, вложенные в region | ||
id | Int32 | Идентификатор региона. |
name | String | Название региона. |
type | Enum | Тип региона. Возможные значения:
|
parent | Родительский регион. Указываются родительские регионы до уровня страны включительно (type=COUNTRY). | |
Параметры, вложенные в parent | ||
id | Int32 | Идентификатор родительского региона. |
name | String | Название родительского региона. |
type | Enum | Тип родительского региона. Возможные значения:
|
parent | Рекурсивно вложенный элемент для указания родительских регионов более высокого уровня. | |
Параметры, вложенные в address | ||
country | String | Страна. |
city | String | Город или населенный пункт. |
subway | String | Станция метро. |
street | String | Улица. |
house | String | Дом или владение. |
block | String | Корпус или строение. |
floor | String | Этаж. |
floor | String | Этаж. |
lat | Double | Широта. Не гарантируем заполнение, так как это опциональное поле. |
lon | Double | Долгота. Не гарантируем заполнение, так как это опциональное поле. |
Параметры, вложенные в items | ||
feedId | Int64 | Идентификатор прайс-листа, содержащего предложение. |
offerId | String | Идентификатор предложения из прайс-листа. |
offerName | String | Название товара. |
feedCategoryId | String | Идентификатор категории, указанной в прайс-листе. |
fulfilmentShopId | Int64 | Идентификатор поставщика товара. Чтобы узнать его, войдите в личный кабинет магазина и нажмите на его название. Идентификатор указан в поле ID магазина в строке нужного склада. |
count | Int32 | Количество единиц товара. |
Ответные данные от магазина
В ответе магазин должен передать актуальные данные для переданной корзины товаров и указанного региона доставки.
Особенности передачи данных по товарам
- В переданный регион или адрес покупателя магазин не доставляет заказы
-
Укажите пустые опции доставки:
"deliveryOptions": []
. В параметреitems
для каждого товара параметрdelivery
передавать необязательно. - В корзине присутствуют товары, которые магазин не доставляет в указанный регион либо по указанному адресу
-
Для таких товаров укажите
"delivery": false
в параметреitems
. - Товар отсутствует в продаже (товара нет в наличии и не поставляется на заказ)
-
Укажите для товара параметр
"count": 0
. Если все товары из корзины отсутствуют в продаже, передайте параметрitems
пустым.Внимание. При получении информации о том, что товар отсутствует в продаже, через 10–15 минут соответствующее предложение перестает отображаться на Маркете по модели DBS до следующего обновления данных на сервисе (индексация происходит каждые 4 часа). - Товара нет в наличии на данный момент, но он поставляется на заказ
-
Укажите в параметре count доступное для заказа количество товара.
Особенности передачи данных по пунктам самовывоза
Укажите в параметре outlets
идентификаторы всех пунктов самовывоза, в которых товар уже есть в наличии и в которые вы можете доставить товар, если его там еще нет. Нужно указать все подходящие пункты самовывоза в регионе, указанном в запросе в параметре region
(в том числе в случае, если параметр содержит неполный адрес: например, только город или район в области).
Если условия доставки для разных пунктов самовывоза отличаются (например, в одни пункты заказ будет доставлен завтра, а в другие — послезавтра), в параметре deliveryOptions
укажите по одному вложенному параметру для каждой группы пунктов с одинаковыми условиями и в каждом из них перечислите подходящие пункты. Подробнее см. в разделе Примеры.
Особенности передачи данных для цифровых заказов
В ответе на запрос от Маркета укажите следующие значения для параметров, вложенных в deliveryOptions
:
- Тип доставки
"type": "DIGITAL"
. Это единственный доступный тип доставки для цифровых товаров. - Дата доставки – текущий день. (Параметр
fromDate
, вложенный вdates
). - Наименование службы доставки – «Доставка на электронную почту». (Параметр
serviceName
). - Способ оплаты – предоплата (
YANDEX
,APPLE_PAY
,GOOGLE_PAY
).
Для удобства чтения пример кода приведен в сокращенном формате.
{
...
"deliveryOptions":
[
{
"id": "{string}",
"price": 0,
"serviceName": "Доставка на электронную почту",
"type": "DIGITAL",
"dates": {
"fromDate": "{date}",
},
"paymentMethods": [
"YANDEX",
"APPLE_PAY",
"GOOGLE_PAY",
"TINKOFF_CREDIT",
"TINKOFF_INSTALLMENTS",
"SBP"
]
}
],
...
}
Особенности передачи цены доставки
C 1 июля 2021 вводятся единые тарифы на доставку для покупателей. Стоимость доставки будет одинакова независимо от того, кто доставляет заказ: Маркет или сам продавец. Она подставится автоматически из единой тарифной сетки. Данные о стоимости доставки, переданные по API, не будут учитываться. При этом все так же необходимо передавать Маркету информацию о сроках доставки. Подробнее см. в Справке.
Особенности передачи данных по диапазону дат и интервалам доставки
Укажите в параметрах fromDate и toDate, вложенных в dates, самую раннюю и самую позднюю возможные даты доставки соответственно, а в параметре intervals — даты и (для курьерской доставки при возможности) интервалы доставки, между которыми сможет выбрать пользователь.
Набор параметров, вложенных в dates, зависит от способа доставки заказа:
- Для заказов со способом доставки курьером (
"type": "DELIVERY"
) следует передавать либо все три параметра (fromDate, toDate, intervals), либо только раннюю дату доставки (fromDate). - Для заказов со способом доставки самовывозом (
"type": "PICKUP"
) следует передавать только параметры fromDate и toDate. Параметр intervals для таких заказов передавать нельзя.
10 марта, 00:00–23:59
1 марта, 00:00 — 3 марта, 23:59
10 марта, 00:00–23:59
1 марта, 00:00 — 3 марта, 23:59
Для удобства чтения примеры кода приведены в сокращенном формате.
Что вы передадите в ответе на POST /cart | Что сможет выбрать пользователь |
---|---|
| |
| |
Что вы передадите в ответе на POST /cart | Что сможет выбрать пользователь |
---|---|
| |
| |
Структура ответных данных:
{
"cart":
{
"deliveryCurrency": "{enum}",
"deliveryOptions":
[
{
"id": "{string}",
"price": {double},
"serviceName": "{string}",
"type": "{enum}",
"dates":
{
"fromDate": "{date}",
"toDate": "{date}",
"intervals":
[
{
"date": "{date}",
"fromTime": "{time}",
"toTime": "{time}"
},
...
]
},
"outlets":
[
{
"code": "{string}"
},
...
],
"paymentMethods":
[
"{enum}",
...
]
},
...
],
"items":
[
{
"feedId": {int64},
"offerId": "{string}",
"delivery": {boolean},
"count": {int32}
"sellerInn": "{string}"
},
...
],
"paymentMethods":
[
"{enum}",
...
]
}
}
Описание параметров:
Параметр | Тип | Значение |
---|---|---|
cart | Корзина. Обязательный параметр. | |
Параметры, вложенные в cart | ||
deliveryCurrency | Enum | Валюта, в которой выражена цена доставки:
|
deliveryOptions | Опции доставки, доступные для корзины. | |
items | Товары в корзине. | |
paymentMethods | Способы оплаты, доступные для всех товаров в корзине:
| |
Параметры, вложенные в deliveryOptions | ||
id | String | Идентификатор опции доставки, присвоенный магазином. Если идентификатор указан, он будет передан обратно магазину в запросе POST /order/accept. Максимальная длина: 50 символов. |
price | Double | Стоимость доставки в валюте заказа. Для отделения целой части от дробной используется точка. C 1 июля 2021 вводятся единые тарифы на доставку для покупателей. Стоимость доставки будет одинакова независимо от того, кто доставляет заказ: Маркет или сам продавец. Она подставится автоматически из единой тарифной сетки. Данные о стоимости доставки, переданные по API, не будут учитываться. При этом все так же необходимо передавать Маркету информацию о сроках доставки. Подробнее см. в Справке. |
serviceName | String | Наименование службы доставки. Обязательный параметр. Максимальная длина: 50 символов. |
type | Enum | Способ доставки заказа. Возможные значения:
|
dates | Диапазон дат доставки. | |
outlets | Пункты самовывоза. Указывается, если выбран самовывоз ( | |
paymentMethods | Способы оплаты, доступные для указанного вида доставки:
| |
Параметры, вложенные в dates | ||
fromDate | Date | Ближайшая возможная дата доставки. Формат даты: ДД-ММ-ГГГГ. Дата должна быть не ранее текущей даты и не позднее 31 календарного дня от текущей даты. |
toDate | Date | Самая поздняя дата доставки. Формат: ДД-ММ-ГГГГ. Дата должна быть не ранее даты, указанной в параметре fromDate, и не позднее 31 календарного дня от текущей даты. Если параметр toDate не указан, то единственно возможной датой доставки считается дата, указанная в параметре fromDate. |
intervals | Список возможных дат и интервалов времени доставки в указанный день. В параметре можно указать до 5 интервалов для каждой даты. Параметр обязателен для курьерской доставки ( | |
Параметры, вложенные в intervals | ||
date | Date | Возможная дата доставки. Формат даты: ДД-ММ-ГГГГ. |
fromTime | Time | Начало интервала времени доставки. Обязательный параметр. Формат времени: 24-часовой, ЧЧ:ММ. В качестве минут всегда должно быть указано 00 (исключение — 23:59). Максимальное значение: 21:00. |
toTime | Time | Конец интервала времени доставки. Обязательный параметр. Формат времени: 24-часовой, ЧЧ:ММ. В качестве минут всегда должно быть указано 00 (исключение — 23:59). Максимальное значение: 23:59. |
Параметры, вложенные в outlets | ||
code | String | Идентификатор пункта самовывоза, присвоенный магазином. Примечание. Если указан несуществующий идентификатор, такой пункт самовывоза не выводится покупателю при оформлении заказа. |
Параметры, вложенные в items | ||
feedId | Int64 | Идентификатор прайс-листа, содержащего предложение. Нужно указать тот же идентификатор, что и в запросе от Маркета. |
offerId | String | Идентификатор предложения из прайс-листа. Нужно указать тот же идентификатор, что и в запросе от Маркета. |
delivery | Boolean | Возможность доставки товара в указанный в запросе регион либо по указанному в запросе адресу:
Значение по умолчанию — true. |
count | Int32 | Количество единиц товара, которое доступно для заказа. Необязательно указывать точное количество, но важно указать то количество, которое гарантированно доступно для заказа. Если товара нет в наличии, то необходимо указывать 0. |
sellerInn | String | ИНН продавца товара. |
Параметр | Тип | Значение |
---|---|---|
cart | Корзина. Обязательный параметр. | |
Параметры, вложенные в cart | ||
deliveryCurrency | Enum | Валюта, в которой выражена цена доставки:
|
deliveryOptions | Опции доставки, доступные для корзины. | |
items | Товары в корзине. | |
paymentMethods | Способы оплаты, доступные для всех товаров в корзине:
| |
Параметры, вложенные в deliveryOptions | ||
id | String | Идентификатор опции доставки, присвоенный магазином. Если идентификатор указан, он будет передан обратно магазину в запросе POST /order/accept. Максимальная длина: 50 символов. |
price | Double | Стоимость доставки в валюте заказа. Для отделения целой части от дробной используется точка. C 1 июля 2021 вводятся единые тарифы на доставку для покупателей. Стоимость доставки будет одинакова независимо от того, кто доставляет заказ: Маркет или сам продавец. Она подставится автоматически из единой тарифной сетки. Данные о стоимости доставки, переданные по API, не будут учитываться. При этом все так же необходимо передавать Маркету информацию о сроках доставки. Подробнее см. в Справке. |
serviceName | String | Наименование службы доставки. Обязательный параметр. Максимальная длина: 50 символов. |
type | Enum | Способ доставки заказа. Возможные значения:
|
dates | Диапазон дат доставки. | |
outlets | Пункты самовывоза. Указывается, если выбран самовывоз ( | |
paymentMethods | Способы оплаты, доступные для указанного вида доставки:
| |
Параметры, вложенные в dates | ||
fromDate | Date | Ближайшая возможная дата доставки. Формат даты: ДД-ММ-ГГГГ. Дата должна быть не ранее текущей даты и не позднее 31 календарного дня от текущей даты. |
toDate | Date | Самая поздняя дата доставки. Формат: ДД-ММ-ГГГГ. Дата должна быть не ранее даты, указанной в параметре fromDate, и не позднее 31 календарного дня от текущей даты. Если параметр toDate не указан, то единственно возможной датой доставки считается дата, указанная в параметре fromDate. |
intervals | Список возможных дат и интервалов времени доставки в указанный день. В параметре можно указать до 5 интервалов для каждой даты. Параметр обязателен для курьерской доставки ( | |
Параметры, вложенные в intervals | ||
date | Date | Возможная дата доставки. Формат даты: ДД-ММ-ГГГГ. |
fromTime | Time | Начало интервала времени доставки. Обязательный параметр. Формат времени: 24-часовой, ЧЧ:ММ. В качестве минут всегда должно быть указано 00 (исключение — 23:59). Максимальное значение: 21:00. |
toTime | Time | Конец интервала времени доставки. Обязательный параметр. Формат времени: 24-часовой, ЧЧ:ММ. В качестве минут всегда должно быть указано 00 (исключение — 23:59). Максимальное значение: 23:59. |
Параметры, вложенные в outlets | ||
code | String | Идентификатор пункта самовывоза, присвоенный магазином. Примечание. Если указан несуществующий идентификатор, такой пункт самовывоза не выводится покупателю при оформлении заказа. |
Параметры, вложенные в items | ||
feedId | Int64 | Идентификатор прайс-листа, содержащего предложение. Нужно указать тот же идентификатор, что и в запросе от Маркета. |
offerId | String | Идентификатор предложения из прайс-листа. Нужно указать тот же идентификатор, что и в запросе от Маркета. |
delivery | Boolean | Возможность доставки товара в указанный в запросе регион либо по указанному в запросе адресу:
Значение по умолчанию — true. |
count | Int32 | Количество единиц товара, которое доступно для заказа. Необязательно указывать точное количество, но важно указать то количество, которое гарантированно доступно для заказа. Если товара нет в наличии, то необходимо указывать 0. |
sellerInn | String | ИНН продавца товара. |
Описание ошибок
Магазин может вернуть следующие статусы ответов:
Описание | Пояснение |
---|---|
Ошибка | Если магазин считает запрос, поступающий от Маркета, некорректным, магазин должен вернуть статус ответа 400 с описанием причины ошибки в теле ответа. Такие ответы будут анализироваться на предмет нарушений и недоработок API со стороны Маркета. |
Ошибка | В случае технической ошибки на стороне магазина он должен вернуть статус ответа 500. Магазины с большим количеством таких ответов могут быть отключены от модели DBS. |
Описание | Пояснение |
---|---|
Ошибка | Если магазин считает запрос, поступающий от Маркета, некорректным, магазин должен вернуть статус ответа 400 с описанием причины ошибки в теле ответа. Такие ответы будут анализироваться на предмет нарушений и недоработок API со стороны Маркета. |
Ошибка | В случае технической ошибки на стороне магазина он должен вернуть статус ответа 500. Магазины с большим количеством таких ответов могут быть отключены от модели DBS. |
Примеры
Запрос от Маркета:
POST /cart
Тело POST-запроса:
{
"cart":
{
"businessId": 8085591,
"currency": "RUR",
"deliveryCurrency": "RUR",
"delivery":
{
"region":
{
"id": 213,
"name": "Москва",
"type": "CITY",
"parent":
{
"id": 1,
"name": "Москва и Московская область",
"type": "SUBJECT_FEDERATION",
"parent":
{
"id": 3,
"name": "Центральный федеральный округ",
"type": "COUNTRY_DISTRICT",
"parent":
{
"id": 225,
"name": "Россия",
"type": "COUNTRY"
}
}
}
},
"address":
{
"country": "Россия",
"city": "Москва",
"subway": "Проспект Вернадского",
"street": "Ленинский проспект",
"house": "90",
"floor": "6"
}
},
"items":
[
{
"feedId": 12345,
"offerId": "4609283881",
"offerName": "Чайник электрический 100 W",
"feedCategoryId": "35",
"fulfilmentShopId": 1234567,
"count": 1
},
{
"feedId": 12346,
"offerId": "4607632101",
"offerName": "Тостер",
"feedCategoryId": "35",
"fulfilmentShopId": 1234567,
"count": 1
}
]
}
}
Ответ магазина:
HTTP/1.1 200 OK
...
{
"cart":
{
"deliveryCurrency": "RUR",
"deliveryOptions":
[
{
"id": "1",
"price": 100,
"serviceName": "DPD",
"type": "DELIVERY",
"dates":
{
"fromDate": "15-09-2020",
"toDate": "17-09-2020",
"intervals":
[
{
"date": "15-09-2020",
"fromTime": "09:00",
"toTime": "21:00"
},
{
"date": "16-09-2020",
"fromTime": "09:00",
"toTime": "21:00"
},
{
"date": "17-09-2020",
"fromTime": "09:00",
"toTime": "21:00"
}
]
}
},
{
"price": 0,
"serviceName": "PickPoint",
"type": "PICKUP",
"dates":
{
"fromDate": "15-09-2020",
"toDate": "18-09-2020"
},
"outlets":
[
{
"code": "9"
},
{
"code": "10"
},
{
"code": "12"
}
]
},
{
"price": 0,
"serviceName": "PickPoint",
"type": "PICKUP",
"dates":
{
"fromDate": "16-09-2020",
"toDate": "19-09-2020"
},
"outlets":
[
{
"code": "11"
}
]
}
],
"items":
[
{
"feedId": 12345,
"offerId": "4609283881",
"delivery": true,
"count": 1,
"sellerInn ": "0123456789"
},
{
"feedId": 12346,
"offerId": "4607632101",
"delivery": true,
"count": 1,
"sellerInn ": "0123456789"
}
],
"paymentMethods":
[
"YANDEX",
"CARD_ON_DELIVERY",
"CASH_ON_DELIVERY",
"TINKOFF_CREDIT",
"TINKOFF_INSTALLMENTS",
"SBP"
]
}
}