Upload menu to delivery app

Currently this endpoint does not work for rappi

post
Upload menu

https://integrations.mipos.shop/api/v1/menus/upload
Request
Response
Request
Headers
Authorization
required
string
Bearer {access_token}
Body Parameters
store_id
required
string
Id store on the platform
integration_id
required
string
Id of the integration in the platform
menus
required
array
Menu[] - Store menus
categories
required
array
Category[] - Store menu categories
items
required
array
Item[] - Store items
modifier_groups
required
array
ModifierGroup[] - Store modifier groups
Response
200: OK
{
"message": "Menu successfully uploaded.",
"data": null
}
401: Unauthorized
"Unauthorized."
409: Conflict
{
"message": [
"User not authenticated.",
"User not found.",
"You don't have this store available.",
// menus body param errors
"The menu must have a name.",
"The menu name must be a string.",
"The menu must have categories external ids.",
"The menu categories external ids must be an array.",
"The menu description must be a string.",
"The menu must have schedules.",
"The menu schedules must be an array.",
"The menu schedule must have a day of week.",
"The menu schedule day of week must be a string.",
"The day of the week of this menu schedule is not valid: ...",
"The menu schedule must have periods.",
"The menu schedule periods must be an array.",
"The menu schedule period must have a start time.",
"The menu schedule period start time must be a string."
"The menu schedule period start time does not have a valid format.",
"The menu schedule period must have an end time.",
"The menu schedule period end time must be a string.",
"The menu schedule period end time does not have a valid format.",
"The menu schedule period start time cannot be less than the end time, start(...) - end(...)",
"Collisions were found between the periods defined for the menu schedule",
"The menu must have an identifier.",
"The menu identifier must be a string.",
// categories body param errors
"The category must have an external id.",
"The category external id must be a string.",
"The category must have a name.",
"The category name must be a string.",
"The category description must be a string.",
"The category must have data items.",
"The category data items must be an array.",
"The category data item must have an extenal id.",
"The category data item external id must be a string.",
"The category data item price must have a value.",
"The category data item price value must be a string.",
"The category data item price value must be greater than 0.",
"The category data item promotion price value must be a string.",
"The category data item promotion price value must be greater than 0.",
// items body param errors
"The item must have an external id.",
"The item external id must be a string.",
"The item must have a name.",
"The item name must be a string.",
"The item description must be a string.",
"The item image url must be a string.",
"The item schedules must be an array.",
"The item schedule must have a day of week.",
"The item schedule day of week must be a string.",
"The day of the week of this item schedule is not valid: ...",
"The item schedule must have periods.",
"The item schedule periods must be an array.",
"The item schedule period must have a start time.",
"The item schedule period start time must be a string."
"The item schedule period start time does not have a valid format.",
"The item schedule period must have an end time.",
"The item schedule period end time must be a string.",
"The item schedule period end time does not have a valid format.",
"The item schedule period start time cannot be less than the end time, start(...) - end(...)",
"Collisions were found between the periods defined for the item schedule",
"The item must have a price data.",
"The item price must have a value.",
"The item price value must be a string.",
"The item price value must be greater than 0.",
"The item promotion price value must be a string.",
"The item promotion price value must be greater than 0.",
"The item must have data modifier groups.",
"The item data modifier groups must be an array.",
"The item data modifier group must have an extenal id.",
"The item data modifier group external id must be a string.",
"The item modifier group quantity must have a min quantity value.",
"The item modifier group quantity must have a max quantity value.",
"The item modifier group quantity min value must be a string.",
"The item modifier group quantity min value must be greater than 0.",
"The item modifier group quantity must have a value.",
"The item modifier group quantity max value must be a string.",
"The item modifier group quantity max value must be greater than 0.",
"The item modifier group quantity max value must be greater than quantity min value.",
// modifier_groups body param errors
"The modifier group must have an external id.",
"The modifier group external id must be a string.",
"The modifier group must have a name.",
"The modifier group name must be a string.",
"The modifier group must have a quantity.",
"The modifier group quantity must have a value.",
"The modifier group quantity min value must be a string.",
"The modifier group quantity min value must be greater than 0.",
"The modifier group quantity must have a value.",
"The modifier group quantity max value must be a string.",
"The modifier group quantity max value must be greater than 0.",
"The modifier group quantity max value must be greater than quantity min value.",
"The modifier group must have data options.",
"The data options must be an array.",
"The data option must have an item extenal id.",
"The item data modifier group external id must be a string.",
"The item price must have a value.",
"The item price value must be a string.",
"The item price value must be greater than 0.",
"The item promotion price value must be a string.",
"The item promotion price value must be greater than 0.",
"The option modifier group quantity must have a min quantity value.",
"The option modifier group quantity must have a max quantity value.",
"The option modifier group quantity min value must be a string.",
"The option modifier group quantity min value must be greater than 0.",
"The option modifier group quantity must have a value.",
"The option modifier group quantity max value must be a string.",
"The option modifier group quantity max value must be greater than 0.",
"The option modifier group quantity max value must be greater than quantity min value.",
// Service integration errors
"Integration not available.",
"This store does not have a token for this delivery.",
"Microservice does not have this integration configured.",
"Unable to get token.",
"This store does not have the store delivery id.",
"Could not upload menu to delivery system."
],
"data": null
}
422: Unprocessable Entity
{
"store_id": [
"The store id field is required.",
"The selected store id is invalid."
],
"integration_id": [
"The integration id field is required."
],
"menus": [
"The menus field is required."
],
"categories": [
"The categories field is required."
],
"items": [
"The items field is required."
],
"modifier_groups": [
"The modifier groups field is required."
]
}

Having multiple menus is only supported by Uber, the rest of deliveries can only handle 1 menu

Menu content

Menu
Schedule
Period
Menu

Menu

name

string

required

Menu name to be displayed

description

string

optional

An optional description for the menu

category_external_ids

string[]

required

Ids of the menu categories on the POS

schedules

Schedule[]

required

Availability of all menu items on a specified day of week

identifier

string

required

Menu identifier to be used in cases of overriding (may be the id in the POS)

Schedule

The schedules set for Didi Food are for every day(Does not support schedule per day).

Therefore if for didi it is detected that the hours of each day are different, the time set for Monday will be chosen (or the day closest to the start of the week if there is no time for Monday)

Schedule

day_of_week

enum(string)

required

Day of week: monday, tuesday, wednesday, thursday, friday, saturday, sunday

periods

Period[]

required

Sale time periods per day

Example (Didi menu):
[
...
"menu": {
...
"schedules": [
{
"day_of_week": "monday",
"periods": [
{
"start": "07:00",
"end": "11:30"
},
{
"start": "15:30",
"end": "21:00"
}
]
},
{
"day_of_week": "thursday",
"periods": [
{
"start": "08:00",
"end": "17:30"
}
]
},
...
...
{
"day_of_week": "sunday",
"periods": [
{
"start": "07:30",
"end": "22:00"
}
]
}
]
}
...
]
This case for Didi the Menu schedule
will be: 07:30 - 11:30 and
15:30 - 21:00 every day.
Period

Period

start

string

required

Menu availability start time (hh:mm)

end

string

required

Menu availability end time (hh:mm)

Category
DataItem
Category

Category

external_id

string

required

Id category on the POS

name

string

required

Category name to be displayed

description

string

optional

An optional description for the category

data_items

DataItem[]

required

Data of the items(products) of this category in the POS

DataItem

The price of the item will only be replaced at this level when the categories are in different menus. If the item has different prices in several categories within the same menu, only the first value found will be chosen.

DataItem

item_external_id

string

required

Id item on the POS (this must be the same defined in the external_id of the Item)

price

Price

optional

Override the price of the item when it is present in different menus.

Item
Price
DataModifierGroup
Item

Uber Eats has these requirements for the item image:

  • Hosted on a secure connection (SSL).

  • File size must be less than 10MB.

  • Image must be in JPEG, PNG or GIF format.

  • Both width and height must be between 320px and 1144px.

Schedule menu override doesn't work for Uber Eats.

Item

external_id

string

required

Id item on the POS

name

string

required

Item name to be displayed

description

string

optional

An optional description for the item

image_url

string

optional

Url item image

schedules

Schedule[]

optional

Item availability on a specified day of week(override schedule menu)

price

Price

required

Specifies the price to charge for ordering the item.

data_modifier_groups

DataModifierGroup[]

required

Data of the modifier groups of this item in the POS

Price

Price should always be integer value (never decilmals), include decimals in the integer value.

Example: $10.30, it would be 1030

If your currency does not handle decimals, you must add 2 zeros to the end of the integer value.

Example: 12000 COP, it would be 1200000

Promotions only works with iFood, for other integrations this field(promotion_value) will be ignored.

Price

value

integer

required

Price of the item

promotion_value

integer

optional

Promotional price of the item

DataModifierGroup

DataModifierGroup

modifier_group_external_id

string

required

Id modifier group on the POS (this must be the same defined in the external_id of the Modifier Group)

quantity

Quantity

optional

Override the quantity rules of the modifer group in this context

ModifierGroup
Quantity
DataOption
ModifierGroup

ModifierGroup

external_id

string

required

Id modifier group on the POS

name

string

required

Modifier group name to be displayed

quantity

Quantity

required

Rules when selecting options in this modifier group

data_options

DataOption[]

required

Modifier group options

Quantity

If the minimum quantity is other than 0, the modifier group is required, which means that when making the order, the options in this modifier group must be selected.

Quantity

min_quantity

integer

required

Minimum quantity allowed (inclusive). Cannot be negative.

max_quantity

integer

required

Maximum quantity allowed (inclusive). Must be greater than the min_quantity

DataOption

quantity rules for item options only works with Uber Eats

DataOption

item_external_id

string

required

Id item on the POS (this must be the same defined in the external_id of the Item)

price

Price

optional

Override the price of the item in this context

quantity

Quantity

optional

Rules when selecting this item option.

Json Menu example

{
"store_id": 1,
"integration_id": "1",
"menus": [
{
"name": "Test menu Anton",
"category_external_ids": ["12"],
"schedules": [
{
"day_of_week": "monday",
"periods": [
{
"start": "00:00",
"end": "23:59"
}
]
},
{
"day_of_week": "sunday",
"periods": [
{
"start": "00:00",
"end": "23:59"
}
]
}
],
"identifier": "menu_anton"
},
{
"name": "Test menu Anton 2",
"category_external_ids": ["15"],
"schedules": [
{
"day_of_week": "monday",
"periods": [
{
"start": "00:00",
"end": "23:59"
}
]
},
{
"day_of_week": "sunday",
"periods": [
{
"start": "00:00",
"end": "23:59"
}
]
}
],
"identifier": "menu_anton_2"
}
],
"categories": [
{
"external_id": "12",
"name": "Cat test",
"data_items": [
{
"item_external_id": "item_1"
},
{
"item_external_id": "item_2",
"price": {
"value": "5000"
}
}
]
},
{
"external_id": "15",
"name": "Cat test 2",
"data_items": [
{
"item_external_id": "item_1"
},
{
"item_external_id": "item_2"
}
]
}
],
"items": [
{
"external_id": "item_1",
"name": "Producto 1",
"price": {
"value": "1250"
},
"data_modifier_groups": [
{
"modifier_group_external_id": "group_1"
}
]
},
{
"external_id": "item_2",
"name": "Producto 2",
"price": {
"value": "2000"
},
"data_modifier_groups": []
},
{
"external_id": "mod_1",
"name": "Modifier 1",
"price": {
"value": "2000"
},
"data_modifier_groups": [],
"schedules": [
{
"day_of_week": "sunday",
"periods": [
{
"start": "00:00",
"end": "23:59"
}
]
}
]
}
],
"modifier_groups": [
{
"external_id": "group_1",
"name": "Grupo 1",
"quantity": {
"min_quantity": "0",
"max_quantity": "5"
},
"data_options": [
{
"item_external_id": "mod_1",
"quantity": {
"min_quantity": "0",
"max_quantity": "3"
}
}
]
}
]
}