Интеграция с сайтом 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"
                        ]
                    ]
                }
            ]
        }
    ]
}

Получить меню (товары)

Адрес: /menu

Метод: 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г.