Интеграция с сайтом HTTP API
Общая информация
URL API: https://jupiter.report/site-api/
Авторизация
Передайте токен авторизации в заголовке запроса X-Jup-Api-Key
Для получения API-Key обратитесь в техподдержку
Результаты обработки запроса
Если запрос успешно обработан, сервер вернет ответ с статусом 200.
Если при обработке запроса были ошибки, сервер вернет ответ со статусом ошибки (400, 401, 500) и описание ошибки.
{
"error": "Некорректный Api-Key" // Описание ошибки
}
Структура организации
Основным подразделением является торговая точка (ресторан). Каждая торговая точка имеет минимум один торговый зал.
В некоторых случаях торговая точка может быть разделена на несколько торговых залов. Например, ресторан принимает заказы на доставку круглосуточно, а заказы на вынос только с 11:00 до 23:00 и сборкой заказов занимаются разные сотрудники. Тогда торговая точка будет разделена на несколько торговых залов "Доставка" и "Самовывоз".
Концепции
Одна торговая точка может одновременно работать с разными концепциями, например "Лучшая пицца" и "Вкусные роллы". Каждая концепция может иметь свои зоны доставки и меню. Товары в разных концепциях могут пересекаться, но иметь разные цены.
Зоны доставки
Сайт может работать как с зонами доставки так и без них.
Определив зону доставки, сайт получает информацию какой ресторан будет выполнять заказ, минимальную стоимость заказа, время доставки, стоп-лист, юридическое лицо для приема онлайн платежей.
Если сайт работает без зон доставки, то он может просто передавать координаты адреса доставки. Юпитер сам определит зону доставки и ресторан, который будет выполнять заказ.
Справочник товаров
Для корректной работы интеграции необходимо выполнить сопоставление справочника товаров между Юпитером и сайтом.
Стоп-лист
Стоп-лист представляет собой список товаров, которые не доступны в данный момент для заказа на указанных торговых точках.
Настройки в Юпитере
Вызовы
Получить список торговых точек
Адрес: /restaurants
Метод: GET
Параметры:
- restaurant_id - Не обязательный. Идентификатор торговой точки
Тело ответа:
{
"tt": [ // Список торговых точек
{
"id": "000127", // Идентификатор торговой точки, используется для передачи в заказе restaurant_id
"name": "г. Москва, ул. Судостроительная, д. 3", // Название торговой точки
"address": "г. Москва, ул. Судостроительная, д. 3, к. 2; м. Коломенская", // Адрес
"email": "email@ya.ru", // Email
"ul": { // Информация о юридическом лице
"name": "ООО Быстрая доставка", // Название юр. лица
"inn": "7711111111", // ИНН юр. лица
"kpp": "770000001" // КПП юр. лица
},
"tz": [ // Торговые залы торговой точки, чаще всего торговая точка имеет один торговый зал
{
"name": "ТЗ г. Москва, ул. Судостроительная, д. 3", // Название торгового зала
"start_time": 32400, // Время начала работы в секундах, 9:00
"end_time": 82800, // Время завершения работы в секундах, 23:00
"phone": "89993332211", // Телефон для внутренней связи
"phone_web": "88005552211", // Телефон для отображения на сайте
"self_delivery": false // Есть самовывоз. false - нет, true - есть
}
]
},
{
"id": "000135",
"name": "г. Красногорск, Подмосковный б-р, д. 12",
"address": "г.Красногорск, Подмосковный бульв., 12;",
"email": "email2@ya.ru",
"ul": {
"name": "ИП Иванов Иван Иванович",
"inn": "501111111111",
"kpp": ""
},
"tz": [
{
"name": "ТЗ г. Красногорск, Подмосковный б-р, д. 12",
"start_time": 32400,
"end_time": 84600,
"phone": "89993332211",
"phone_web": "88005552211",
"self_delivery": true
}
]
}
]
}
Получить список зон доставки
Адрес: /delivery_zones
Метод: GET
Параметры:
- restaurant_id - Обязательный. Идентификатор торговой точки
Тело ответа:
{
"restaurant_id": "002040", // Идентификатор торговой точки
"concepts": [ // Список концепций
{
"id": "default",
"name": "default",
"zones": [
{
"id": "028270", // Идентификатор зоны доставки, передается в параметре заказа zone_id
"name": "Москва Зона 1 Сумма минимального заказа 600 руб. Стоимость доставки 125 руб. При заказе от 1200 р. ДОСТАВКА ОСУЩЕСТВЛЯЕТСЯ БЕСПЛАТНО. Время ожидания заказ 75 минут.",
"sum_min": 600, // Минимальная сумма заказа, в рублях
"time_min": 75, // Время доставки от, в минутах
"time_max": 75, // Время доставки до, в минутах
"delivery_price": 125, // Стоимость доставки, в рублях
"sum_for_free": 1200, // Сумма заказа для бесплатной доставки, в рублях
"coordinates": [ // Координаты вершин полигона
[
"37.52371234879848", // Долгота
"55.84410641903395" // Широта
],
[
"37.514442634443014",
"55.753211478836405"
],
[
"37.75142603657669",
"55.77257777343632"
],
[
"37.745595187258395",
"55.83994903702488"
],
[
"37.52371234879848",
"55.84410641903395"
]
]
},
{
"id": "028271",
"name": "Москва Зона 2. Сумма минимального заказа 1700 руб. Стоимость доставки 150 руб. При заказе от 2000 р. ДОСТАВКА ОСУЩЕСТВЛЯЕТСЯ БЕСПЛАТНО. Время ожидания заказа 90 минут",
"restaurant_id": "000127",
"sum_min": 1700,
"time_min": 90,
"time_max": 90,
"delivery_price": 150,
"sum_for_free": 2000,
"coordinates": [
[
"37.75149973910912",
"55.772131329742024"
],
[
"37.51447060676536",
"55.75311488559791"
],
[
"37.54090645881605",
"55.70749044235835"
],
[
"37.74621346565196",
"55.72880788699355"
],
[
"37.75149973910912",
"55.772131329742024"
]
]
}
]
}
]
}
Получить меню (товары)
Метод: GET
Параметры:
- restaurant_id - Обязательный. Идентификатор торговой точки
{
"restaurant_id": "000127", // Идентиификатор торговой точки
"concepts": [ // Список концепций
{
"id": "default", // Идентификатор концепции
"name": "default", // Название концепции
"menu": { // Меню торговой точки по концепции
"params": {
"mainGroup": "5:3:0:820821", // Идентификатор главной группы меню
"settingsDate": "2024-04-10 15:08:13" // Дата\время формирования данные
},
"lists": { // Справочники
"items": [ // Справочник товаров
{
"id": "3:3:0:2670", // Уникальный идентификатор товара
"name": "ФАХИТОС С КУРИЦЕЙ В ТОРТИЛЬЕ", // Название
"code": "Т20", // Код товара
"ei": " порция", // Единица измерения
"ves": "250", // Размер порции, может содержать символы
"price": "360.00", // Цена
"vat": 10, // Ставка НДС
"description": "", // Описание для меню
"show_modifiers_always": 0, // Всегда предлагать выбор модификаторов, 1 - да, 0 - нет
"max_weight_summ": "" // Максимальный вес модификаторов
},
{
"id": "3:3:0:2782",
"name": "ЛИМОНАД ТАРХУН 500МЛ",
"code": "Ш309",
"ei": " порция",
"ves": "500",
"price": "130.00",
"vat": 20,
"description": "",
"show_modifiers_always": 0,
"max_weight_summ": ""
},
{
"id": "3:3:0:2798",
"name": "МОРС В АССОРТИМ.1Л",
"code": "Ш306",
"ei": " порция",
"ves": "1000",
"price": "200.00",
"vat": 20,
"description": "",
"show_modifiers_always": 0,
"max_weight_summ": ""
},
{
"id": "3:3:0:2873",
"name": "СВИНИНА С РИСОМ",
"code": "В27",
"ei": " порция",
"ves": "300",
"price": "280.00",
"vat": 0,
"description": "",
"show_modifiers_always": 0,
"max_weight_summ": ""
},
{
"id": "3:3:0:2875",
"name": "ГОВЯДИНА С РИСОМ",
"code": "В25",
"ei": " порция",
"ves": "300",
"price": "290.00",
"vat": 0,
"description": "",
"show_modifiers_always": 0,
"max_weight_summ": ""
},
{
"id": "3:3:0:2876",
"name": "ЦЫПЛЕНОК С РИСОМ",
"code": "В26",
"ei": " порция",
"ves": "300",
"price": "240.00",
"vat": 0,
"description": "",
"show_modifiers_always": 0,
"max_weight_summ": ""
},
{
"id": "3:3:0:2914",
"name": "КРЕВЕТКИ С РИСОМ",
"code": "В28",
"ei": " порция",
"ves": "300",
"price": "430.00",
"vat": 0,
"description": "",
"show_modifiers_always": 0,
"max_weight_summ": ""
},
{
"id": "3:3:0:2915",
"name": "МОРЕПРОДУКТЫ С РИСОМ",
"code": "В30",
"ei": " порция",
"ves": "300",
"price": "280.00",
"vat": 0,
"description": "",
"show_modifiers_always": 0,
"max_weight_summ": ""
},
{
"id": "3:3:0:2918",
"name": "ОВОЩИ С РИСОМ",
"code": "В31",
"ei": " порция",
"ves": "300",
"price": "360.00",
"vat": 0,
"description": "",
"show_modifiers_always": 0,
"max_weight_summ": ""
},
{
"id": "3:3:0:3601",
"name": "ТОРТ НАПОЛЕОН",
"code": "Ш404",
"ei": " порция",
"ves": "150",
"price": "165.00",
"vat": 0,
"description": "",
"show_modifiers_always": 0,
"max_weight_summ": ""
},
{
"id": "3:3:0:3622",
"name": "ТОРТ ИДЕАЛ",
"code": "Ш405",
"ei": " порция",
"ves": "150",
"price": "150.00",
"vat": 0,
"description": "",
"show_modifiers_always": 0,
"max_weight_summ": ""
},
{
"id": "3:3:0:3682",
"name": "ЧИЗКЕЙК",
"code": "Ш407",
"ei": " порция",
"ves": "100",
"price": "230.00",
"vat": 10,
"description": "",
"show_modifiers_always": 0,
"max_weight_summ": ""
},
{
"id": "3:3:0:3683",
"name": "ТОРТ ШОКОЛАДНЫЙ",
"code": "Ш408",
"ei": " порция",
"ves": "650.",
"price": "320.00",
"vat": 20,
"description": "Очень вкусный тортик",
"show_modifiers_always": 0,
"max_weight_summ": ""
},
{
"id": "3:3:0:3684",
"name": "ТОРТ ТИРАМИСУ",
"code": "Ш409",
"ei": " порция",
"ves": "100",
"price": "260.00",
"vat": 0,
"description": "тест512",
"show_modifiers_always": 0,
"max_weight_summ": ""
},
{
"id": "3:3:0:3685",
"name": "БОНАКВА Б/Г 500 МЛ",
"code": "Ш304",
"ei": " порция",
"ves": "500",
"price": "90.00",
"vat": 20,
"description": "",
"show_modifiers_always": 0,
"max_weight_summ": ""
},
{
"id": "3:3:0:3686",
"name": "БОНАКВА ГАЗ. 500 МЛ",
"code": "Ш313",
"ei": " порция",
"ves": "500",
"price": "90.00",
"vat": 20,
"description": "",
"show_modifiers_always": 0,
"max_weight_summ": ""
},
{
"id": "3:3:0:3687",
"name": "КОКА-КОЛА 200МЛ",
"code": "Ш300",
"ei": " порция",
"ves": "200",
"price": "130.00",
"vat": 20,
"description": "",
"show_modifiers_always": 0,
"max_weight_summ": ""
},
{
"id": "3:3:0:3689",
"name": "СПРАЙТ 200 МЛ",
"code": "Ш302",
"ei": " порция",
"ves": "200",
"price": "130.00",
"vat": 20,
"description": "",
"show_modifiers_always": 0,
"max_weight_summ": ""
},
{
"id": "3:3:0:3690",
"name": "ЭНЕРГЕТИК ЭФФЕКТ 250МЛ",
"code": "Ш303",
"ei": " порция",
"ves": "250",
"price": "100.00",
"vat": 20,
"description": "",
"show_modifiers_always": 0,
"max_weight_summ": ""
},
{
"id": "3:3:0:3691",
"name": "СОКИ В АССОРТ.1Л",
"code": "Ш305",
"ei": " порция",
"ves": "1000",
"price": "230.00",
"vat": 20,
"description": "",
"show_modifiers_always": 0,
"max_weight_summ": ""
},
{
"id": "3:3:0:3981",
"name": "ЯБЛОКИ В КАРАМЕЛИ",
"code": "412",
"ei": " порция",
"ves": "200",
"price": "190.00",
"vat": 0,
"description": "",
"show_modifiers_always": 0,
"max_weight_summ": ""
},
{
"id": "3:3:0:9381",
"name": "БЛИНЧИКИ-ЛЯМА С КРЕВЕТКАМИ",
"code": "В72",
"ei": " порция",
"ves": "300",
"price": "140.00",
"vat": 10,
"description": "Блинчики которые имеют в своём составе креветки",
"show_modifiers_always": 0,
"max_weight_summ": ""
},
{
"id": "3:3:0:9382",
"name": "БЛИНЧИКИ-ЛЯМА СО СВИНИНОЙ",
"code": "В73",
"ei": " порция",
"ves": "300",
"price": "690.00",
"vat": 0,
"description": "",
"show_modifiers_always": 0,
"max_weight_summ": ""
},
{
"id": "3:3:0:9383",
"name": "БЛИНЧИКИ-ЛЯМА С ТЕЛЯТИНОЙ",
"code": "В74",
"ei": " порция",
"ves": "300",
"price": "480.00",
"vat": 0,
"description": "",
"show_modifiers_always": 0,
"max_weight_summ": ""
},
{
"id": "3:3:0:13325",
"name": "БЛИНЫ С ВИШНЕЙ",
"code": "ПП 700002",
"ei": " порция",
"ves": "200",
"price": "410.00",
"vat": 0,
"description": "",
"show_modifiers_always": 0,
"max_weight_summ": ""
}
],
"modif": [
{
"id": "3:3:0:2968",
"name": "СОУС СОЕВЫЙ",
"code": "В109",
"ei": " порция",
"ves": "50",
"price": "30.00",
"vat": 0,
"description": "",
"weight": 1
},
{
"id": "3:3:0:2970",
"name": "СОУС ТЕРИЯКИ",
"code": "В111",
"ei": " порция",
"ves": "50",
"price": "95.00",
"vat": 0,
"description": "",
"weight": 1
}
],
"groups": [ // Список групп
{
"id": "5:3:0:1187", // Идентификатор группы
"name": "Блины" // Название
},
{
"id": "5:3:0:1203",
"name": "Воки с рисом"
},
{
"id": "5:3:0:1207",
"name": "Десерты"
},
{
"id": "5:3:0:742904",
"name": "Напитки"
},
{
"id": "5:3:0:820801",
"name": "СЕТЫ"
},
{
"id": "5:3:0:820821",
"name": " ОСНОВНОЕ МЕНЮ"
}
],
"modifierGroups": [ // Группы модификаторов
{
"id": "5:3:0:801701", // Идентификатор группы модификаторов
"name": "СОУСЫ", // Название
"weight_min": "", // Минимальный вес модификаторов для выбора из группы
"weight_max": "", // Максимальный вес модификаторов для выбора из группы
"is_auto_modifier": 0 // Автоматически добавлять модификаторы из этой группы. 1 - да, 0 - нет
}
]
},
"structures": { // Структура меню
"groupItems": { // Вложенность групп
"5:3:0:820821": [ // Массив групп для одной группы
"5:3:0:1187",
"5:3:0:1207",
"5:3:0:742904",
"5:3:0:820801",
"5:3:0:1203"
]
},
"menuItems": { // Вложенность товаров в группы
"5:3:0:1187": [ // Массив товаров для одной группы
"3:3:0:9383",
"3:3:0:9382",
"3:3:0:9381",
"3:3:0:13325"
],
"5:3:0:1203": [
"3:3:0:2875",
"3:3:0:2914",
"3:3:0:2915",
"3:3:0:2918",
"3:3:0:2873",
"3:3:0:2876"
],
"5:3:0:1207": [
"3:3:0:3622",
"3:3:0:3601",
"3:3:0:3684",
"3:3:0:3683",
"3:3:0:2670",
"3:3:0:3682",
"3:3:0:3981"
],
"5:3:0:742904": [
"3:3:0:2798",
"3:3:0:3691",
"3:3:0:3689",
"3:3:0:3690",
"3:3:0:3687",
"3:3:0:2782",
"3:3:0:3685",
"3:3:0:3686"
],
"5:3:0:820801": [
"3:1:0:86",
"3:98:0:475072",
"3:1:0:81",
"3:1:0:79"
]
},
"modifItems": { // Вложенность модификаторов в группы модификаторов
"5:3:0:801701": [ // Массив модификаторов для одной группы модификаторов
"3:3:0:2970",
"3:3:0:2968"
]
},
"itemsModif": { // Привязка групп модификаторов к товарам
"3:3:0:2873": [ // Массив групп модификаторов для одного товара
"5:3:0:801701"
],
"3:3:0:2875": [
"5:3:0:801701"
],
"3:3:0:2876": [
"5:3:0:801701"
],
"3:3:0:2914": [
"5:3:0:801701"
],
"3:3:0:2915": [
"5:3:0:801701"
],
"3:3:0:2918": [
"5:3:0:801701"
]
}
}
}
}
]
}
Параметр "description": "", // Описание для меню
задается в настройках ТМЦ->вкладка "Касса"->поле "Описание для меню"
Получить стоп-лист
Адрес: /stop_list
Метод: GET
Параметры:
- restaurant_id - Обязательный. Идентификатор торговой точки
Тело ответа:
{
"restaurant_id": "000127", // Идентификатор торговой точки
"modified_date": "2024-04-09 18:00:43", // Дата\время последнего изменения в стоп-листе
"items": [ // Список товаров находящихся в стоп-листе
{
"id": "3:1:0:310", // Уникальный идентификатор товаров
"code": "238" // Код товара
},
{
"id": "3:98:0:320823",
"code": "923"
}
]
}
Создать заказ
Адрес: /order
Метод: POST
Тело запроса:
Если запрос успешно обработан, сервер вернет ответ с статусом 200. В теле ответа будет передан номер заказа.
{
"action": "new_order", // Всегда new_order
"body": { // Объект заказа
"number": "9400001", // Номер заказа на сайте
"restaurant_id": "000127", // Идентификатор торговой точки, которая будет выполнять заказ. Игнорируется если заданы коордианты или зона доставки
"date": "2024-04-08 15:21:03", // Дата\время оформления заказа
"delivery_method": "courier", // courier - доставка, pickup - самовывоз
"persons": 2, // Количество персон
"comment": "Всё без лука", // Комментарий к заказу
"date_preorder": "2024-04-08 17:00", // Дата\время к котрому нужно доставить\приготовить заказ
"status_url": "https://you-url?order_id=9400001", // Ссылка для callback обновления статуса заказа на сайте
"cart": { // Содержимое заказа
"items": [ // Товарная часть
{
"id": "3:3:0:2918", // Идентификатор товара (id или code)
"name": "ОВОЩИ С РИСОМ", // Название товара
"count": 1, // Количество
"cost": 500.00 // Цена
},
{
"id": "В27",
"name": "СВИНИНА С РИСОМ",
"count": 3,
"cost": 700.00,
"modifiers": [ // Массив вложенных модификаторов к этому товару
{
"id": "В111", // Идентификатор товара (id или code)
"name": "СОУС ТЕРИЯКИ", // Название товара
"count": 1, // Количество
"cost": 30.00 // Цена
},
{
"id": "3:3:0:2968",
"name": "СОУС СОЕВЫЙ",
"count": 1,
"cost": 50.00
}
]
}
],
"delivery": 100.00, // Стоимость доставки. 0 если доставка бесплатная
"total": 2940.00 // Итоговая сумма заказа с учётом стоимости доставки
},
"client": { // Информация о клиенте
"name": "Пётр", // Имя клиента
"phone": "+7(922)988-33-22" // Телефон клиента, в любом формате
},
"recipient_name": { // Информация о получателе заказа. Заполнять если заказывает один человек, а получает другой
"name": "Иван", // Имя получателя
"phone": "+7(987)654-32-10" // Телефон получателя, в любом формате
},
"address": { // Информация о адресе. Если заказ на вынос, то не заполнять
"name": "г. Москва, ул. Большая Садовая, д. 10, кв. 50", // Адрес одной строкой
"comment": "Стучать, звонок не работает", // Комметарий к адресу
"coords": { // Координаты дома. Если заданы, то имеют приоритет перед restaurant_id
"latitude": "55.767210", // Широта
"longitude": "37.593390" // Долгота
},
"zone_id": "028270" // Идентификатор зоны доставки. Если задан, то имеет приоритет перед coords и restaurant_id
},
"payment": { // Информация об оплате заказа
"method": "cash", // cash - наличные, card - картой курьеру, online - онлайн через приложение или сайт
"sum": 2940.00, // Сумма оплаты. Итоговая сумма заказа с учётом всех скидок и стоимости доставки
"change": 5000.00 // Сумма с которой приготовить сдачу
}
}
}
{
"order_id": "S9400001" // Номер заказа в Юпитере
}
Номер заказа может быть модифицирован и отличаться от номера заказа на сайте.
Успешное выполнение запроса не означает, что заказ окончательно принят. Результатом выполнения запроса является постановка заказа в очередь на загрузку. Гарантированный индикатор приёма заказа является получение callback запроса с изменением статуса заказа на "Новый"
Обновить статус заказа на сайте (Callback)
При изменении статуса заказов, Юпитер отправляет GET запрос на URL переданный сайтом в параметре status_url
при создании заказа.
К status_url
добавляется параметр status
, в котором передается код нового статуса
https://you-url?order_id=9400001&status=0
Возможные значения параметра status
:
Значение | Название статуса | Когда отправляется |
0 | Новый | При получении заказа с сайта\приложения, при ручном создании заказа в Юпитере |
10 | В работе (Готовится) | При печати заказа на кухню |
20 | Доставляется | При назначении курьера |
30 | Доставлен | При смене статуса на "Заказ доставлен" и при закрытии заказа |
5 | Отменён | При удалении заказа |
Результат запроса не контролируется, но протоколируется для решения возможных инцидентов. Предполагается, что сайт отвечает пустой страницей с статусом 200
Система JUPITER www.jupiter.systems (с) 2024г.
Нет комментариев