Доставки

Мы работаем только через POST-запросы
Обратите внимание, что цены в webhook доставки не передаются. При необходимости подсчетов ориентируйтесь на ваши идентификаторы товара.
IMSHOP.IO передаёт состав корзины, город (и страну), а также промокод и идентификатор пользователя, если они есть, в ответ IMSHOP.IO ожидает список доступных способов доставки.
Этот запрос отправляется не только в тех случаях, когда список доставок нужно вывести пользователю. Список доставок также нужен (повторно) перед финальным запросом оформления заказа.

Формат запроса и пример

Пример

POSThttps://api-imshop.store.ru/v1/deliveries
{
"staffId": "XXXXXXX",
"address": "ул Петергофское, д 57, кв 106",
"position": "deliveryWidget",
"city": "Санкт-Петербург",
"installId": "f4f0b9cb-fc44-49d5-8cfc-ff80a19e702d",
"country": "RU",
"skipPickupLocations": true,
"bonusesSpent": 0,
"addressData": {
"kladr": "78000000000104600",
"apt": "106",
"houseKladr": null,
"region": "Санкт-Петербург",
"fias": "146a0f57-9307-4805-8605-8189fa8510e7",
"value": "г Санкт-Петербург, Петергофское шоссе, д 57, кв 106",
"cityFias": "c2deb16a-0330-4f05-821f-1d09c93331e6",
"building": null,
"areaFias": null,
"streetKladr": "78000000000104600",
"regionKladr": "7800000000000",
"regionFias": "c2deb16a-0330-4f05-821f-1d09c93331e6",
"city_kladr": "7800000000000",
"streetFias": "146a0f57-9307-4805-8605-8189fa8510e7",
"zip": "198206",
"settlement": null,
"fiasCode": "7800000000000001046",
"settlementFias": null,
"beltwayDistance": null,
"lat": "59.848552",
"settlementKladr": null,
"house": "57",
"city": "Санкт-Петербург",
"cityKladr": "7800000000000",
"houseFias": null,
"beltwayHit": "IN_KAD",
"area": null,
"fias_code": "7800000000000001046",
"street": "Петергофское",
"areaKladr": null,
"lon": "30.136178",
"settlementWithType": null,
"fias_id": "146a0f57-9307-4805-8605-8189fa8510e7"
},
"outletId": "XXXXXXX",
"externalUserId": null,
"items": [
{
"discount": 0,
"quantity": 1,
"price": 190,
"name": "НазваниеТовара",
"subtotal": 190,
"configurationId": "216213",
"privateId": "216213",
"id": "216222"
}
],
"userData": null,
"selectedPromo": null
}

Описание формата

  • outletId — идентификатор магазина
  • staffId — идентификатор сотрудника
  • address — адрес магазина
  • city — город
  • installId — идентификатор установки приложения на устройстве (из системы imshop)
  • externalUserId — идентификатор покупателя на стороне клиента, если тот авторизован в мобильном приложении, null по умолчанию
  • country — ISO код страны, RU
  • bonusesSpent - списанные бонусы
  • position — источник вызова хука, (checkout, deliveryWidget), можно использовать для определения где вызван хук и передавать в карточку товара уменьшенную выборку или отсортировав по другому
  • skipPickupLocations — если этот параметр передан, и он равен true, то в ответе достаточно передать только способ самовывоза, и не передавать все доступные точки получения заказа
  • items - список товаров в корзине
    • id — идентификатор товара в IMSHOP.IO
    • configurationId — идентификатор товарного предложения в системе клиента (идентификатор из фида)
    • privateId — идентификатор товара в системе клиента (group_id из фида)
    • quantity — количество
    • price — изначальная цена товара
    • discount — скидка, если есть. по умолчанию 0
    • name — название товара
    • subtotal — итоговая стоимость с учетом скидок
  • addressData — полная информация о адресе, прошедшая валидацию DaData

    Формат ответа и пример

    Если в ответе не будут отданы ВСЕ
    обязательные поля - в приложении не отобразятся доставки

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

{
"deliveries": [
{
"price": 190,
"description": "Вы можете забрать свой заказ в постамате или пункте выдаче заказов",
"locations": [
{
"lon": "31.2884",
"min": 3,
"subway": "",
"time": "примерка\r\n\r\nПн-Пт 10:00-19:00",
"timeLabel": "",
"id": "191921",
"city": "Великий Новгород",
"mall": "",
"lat": "58.5213",
"title": "Пункт выдачи Boxberry",
"price": 190,
"address": "173000, Великий Новгород г, Большая Московская ул, д.11/11"
},
{
"mall": "",
"lon": "31.2943",
"subway": "",
"title": "Пункт выдачи Boxberry",
"time": "частичный выкуп\r\n\r\nПн-Вс 09:00-22:00",
"min": 3,
"lat": "58.5286",
"id": "210600",
"timeLabel": "",
"price": 190,
"address": "173004, Великий Новгород г, Большая Московская ул, д.64/11",
"city": "Великий Новгород"
}
],
"type": "pickup",
"title": "Забрать в пункте выдачи",
"timeLabel": "1-2 дней",
"min": 1,
"max": 2,
"id": "pickup_point"
},
{
"timeLabel": "4 дня",
"description": "Доставка курьерской службой",
"dateIntervals": [],
"price": 190,
"type": "delivery",
"id": "courier",
"title": "Курьерская доставка",
"min": 4,
"max": 4
}
]
}

Описание формата

  • deliveries — список доступных способов доставки, массив
    • id — идентификатор, строка (обязательное поле)
    • title — название, строка (обязательное поле)
    • description — описание, строка
    • type — тип (delivery, pickup — доставка или самовывоз) (обязательное поле)
    • hasPickupLocations — способ доставки требует выбора пункта самовывоза (особенно важно при ответе на запросы со skipPickupLocations = true)
    • price — минимальная цена, цифра (обязательное поле)
    • priceLabel — цена в свободной форме; строка; приоритетнее поля price
    • min — минимальный срок доставки (0 - сегодня, 1 - завтра, 2-послезавтра, 3- от 3 дней) (обязательное поле)
    • max — максимальный срок доставки (0 - сегодня, 1 - завтра итд)
    • timeLabel — время доставки в виде текста (отображается на экране выбора способа доставки)
    • locations — список ПВЗ (если type = pickup и требуется выбор пункта самовывоза, и в запросе не передан skipPickupLocations = true)
      • id — идентификатор самовывоза, строка (обязательное поле)
      • title — название, строка (обязательное поле)
      • address — адрес, строка (обязательное поле)
      • city — город, строка (обязательное поле)
      • time — расписание / время работы, строка
      • subway — ближайшая станция метро, строка
      • mall — название ТЦ, если не указывается в поле title
      • lat — широта для отображения на карте, строка (обязательное поле)
      • lon — долгота для отображения на карте, строка (обязательное поле)
      • price — цена доставки в этот ПВЗ, цифра (обязательное поле)
      • min — ожидаемое время доставки (0 - сегодня), цифра (обязательное поле)
      • timeLabel — время доставки в виде текста (отображается на экране выбора пункта получения заказа и на экране описания пункта самовывоза), строка
    • groupName — (опционально) идентификатор для группировки, строка (способы доставки, у которых значение группы совпадает, схлопываются в один пункт; после его выбора, пользователь увидит все пункты, входящие в эту группу)