Upload menu to delivery app
Currently this endpoint does not work for rappi
Upload menu
POST
https://integrations.mipos.shop/api/v1/menus/upload
Headers
Authorization
string
Bearer {access_token}
Request Body
store_id
string
Id store on the platform
integration_id
string
Id of the integration in the platform
menus
array
Menu[]
- Store menus
categories
array
Category[]
- Store menu categories
items
array
Item[]
- Store items
modifier_groups
array
ModifierGroup[]
- Store modifier groups
{
"message": "Menu successfully uploaded.",
"data": null
}
"Unauthorized."
{
"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
}
{
"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
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)
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
start
string
required
Menu availability start time (hh:mm)
end
string
required
Menu availability end time (hh:mm)
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
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.
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 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
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
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
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
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"
}
}
]
}
]
}
Last updated
Was this helpful?