Public API
  • Overview
  • Authentication
    • Create a developer account
    • Generate account access token
    • Refresh access token
  • Store management
    • Countries
    • Create store
    • User stores
  • Integration management
    • Information of delivery integrations
    • Enable delivery integration
    • Disable delivery integration
  • Delivery Orders For POS
    • Webhook management
    • Webhook Content
    • Retreive Delivery Orders
    • Successful order creation
    • Order Creation failed
  • Menu Management
    • Upload menu to delivery app
  • Third Party Market Apps
    • Third Party Webhook Management
    • Third Party Send Order
    • Third Party Webhooks Content
  • Inventory
    • Inventory system management
    • POS sync inventory
  • Logistic
    • Logistic integrations management
    • POS integrations management
    • Available services
Powered by GitBook
On this page
  • Upload menu
  • Menu content
  • Json Menu example

Was this helpful?

  1. Menu Management

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

Name
Type
Description

Authorization

string

Bearer {access_token}

Request Body

Name
Type
Description

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"
					}
				}	
			]
		}
	]
}
PreviousOrder Creation failedNextThird Party Webhook Management

Last updated 4 years ago

Was this helpful?