Menu
A list of Menus that are available for an organization.
See currencies for more information on providing and using currency values. All values are in lowest denomination.
Get a location Menu
This endpoint allows developers to get menus for a specific store
get /organizations/{organizationId}/locations/{locationId}/menu
Parameters
Name | Type | In | Description |
---|---|---|---|
organizationId | string | path | Organization ID |
locationId | string | path | Location ID |
Responses
{
"categories": [
{
"id": "C001",
"productIds": [
"P001",
"P002"
],
"title": "Specials"
},
{
"id": "C001",
"productIds": [
"P001",
"P002"
],
"title": "Specials"
},
{
"id": "C001",
"productIds": [
"P001",
"P002"
],
"title": "Specials"
}
],
"currency": "NZD",
"menus": [
{
"categoryIds": [
"C001",
"C002"
],
"fulfillmentType": [
"DELIVERY",
"PICK_UP",
"SERVICE"
],
"id": "M001",
"serviceAvailability": [
{
"dayOfTheWeek": "MONDAY",
"end": "23:59",
"start": "09:30"
},
{
"dayOfTheWeek": "MONDAY",
"end": "23:59",
"start": "09:30"
},
{
"dayOfTheWeek": "MONDAY",
"end": "23:59",
"start": "09:30"
}
],
"title": "Breakfast"
},
{
"categoryIds": [
"C001",
"C002"
],
"fulfillmentType": [
"DELIVERY",
"PICK_UP",
"SERVICE"
],
"id": "M001",
"serviceAvailability": [
{
"dayOfTheWeek": "MONDAY",
"end": "23:59",
"start": "09:30"
},
{
"dayOfTheWeek": "MONDAY",
"end": "23:59",
"start": "09:30"
},
{
"dayOfTheWeek": "MONDAY",
"end": "23:59",
"start": "09:30"
}
],
"title": "Breakfast"
}
],
"products": [
{
"available": true,
"description": "Contains beef, lettuce, tomato topped with our special LOKE sauce",
"id": "P001",
"imageUrl": "https://example.com/title.png",
"modifiers": [
{
"id": "M001",
"maxSelect": 3,
"minSelect": 1,
"optionIds": [
"OP001",
"OP002"
],
"title": "Extras"
},
{
"id": "M001",
"maxSelect": 3,
"minSelect": 1,
"optionIds": [
"OP001",
"OP002"
],
"title": "Extras"
}
],
"plu": "HOTFOOD-001",
"price": {
"amount": 2300,
"taxIncluded": 250
},
"priceOverrides": [
{
"contextType": "MENU",
"contextValue": "3",
"price": {
"amount": 2300,
"taxIncluded": 250
}
},
{
"contextType": "MENU",
"contextValue": "3",
"price": {
"amount": 2300,
"taxIncluded": 250
}
},
{
"contextType": "MENU",
"contextValue": "3",
"price": {
"amount": 2300,
"taxIncluded": 250
}
},
{
"contextType": "MENU",
"contextValue": "3",
"price": {
"amount": 2300,
"taxIncluded": 250
}
}
],
"tags": [
"gluten free",
"vegan"
],
"title": "LOKE's Burger",
"visibility": [
{
"dayOfTheWeek": "MONDAY",
"end": "23:59",
"start": "09:30"
},
{
"dayOfTheWeek": "MONDAY",
"end": "23:59",
"start": "09:30"
},
{
"dayOfTheWeek": "MONDAY",
"end": "23:59",
"start": "09:30"
},
{
"dayOfTheWeek": "MONDAY",
"end": "23:59",
"start": "09:30"
}
]
},
{
"available": true,
"description": "Contains beef, lettuce, tomato topped with our special LOKE sauce",
"id": "P001",
"imageUrl": "https://example.com/title.png",
"modifiers": [
{
"id": "M001",
"maxSelect": 3,
"minSelect": 1,
"optionIds": [
"OP001",
"OP002"
],
"title": "Extras"
},
{
"id": "M001",
"maxSelect": 3,
"minSelect": 1,
"optionIds": [
"OP001",
"OP002"
],
"title": "Extras"
}
],
"plu": "HOTFOOD-001",
"price": {
"amount": 2300,
"taxIncluded": 250
},
"priceOverrides": [
{
"contextType": "MENU",
"contextValue": "3",
"price": {
"amount": 2300,
"taxIncluded": 250
}
},
{
"contextType": "MENU",
"contextValue": "3",
"price": {
"amount": 2300,
"taxIncluded": 250
}
},
{
"contextType": "MENU",
"contextValue": "3",
"price": {
"amount": 2300,
"taxIncluded": 250
}
},
{
"contextType": "MENU",
"contextValue": "3",
"price": {
"amount": 2300,
"taxIncluded": 250
}
}
],
"tags": [
"gluten free",
"vegan"
],
"title": "LOKE's Burger",
"visibility": [
{
"dayOfTheWeek": "MONDAY",
"end": "23:59",
"start": "09:30"
},
{
"dayOfTheWeek": "MONDAY",
"end": "23:59",
"start": "09:30"
},
{
"dayOfTheWeek": "MONDAY",
"end": "23:59",
"start": "09:30"
},
{
"dayOfTheWeek": "MONDAY",
"end": "23:59",
"start": "09:30"
}
]
}
],
"timeZone": "Australia/Melbourne"
}
Update a location Menu
This endpoint allows developers to set the entire menu for a specific store
put /organizations/{organizationId}/locations/{locationId}/menu
Parameters
Name | Type | In | Description |
---|---|---|---|
organizationId | string | path | Organization ID |
locationId | string | path | Location ID |
Request Body
{
"categories": [
{
"id": "C001",
"productIds": [
"P001",
"P002"
],
"title": "Specials"
},
{
"id": "C001",
"productIds": [
"P001",
"P002"
],
"title": "Specials"
},
{
"id": "C001",
"productIds": [
"P001",
"P002"
],
"title": "Specials"
},
{
"id": "C001",
"productIds": [
"P001",
"P002"
],
"title": "Specials"
}
],
"currency": "SGD",
"menus": [
{
"categoryIds": [
"C001",
"C002"
],
"fulfillmentType": [
"DELIVERY",
"PICK_UP",
"SERVICE"
],
"id": "M001",
"serviceAvailability": [
{
"dayOfTheWeek": "MONDAY",
"end": "23:59",
"start": "09:30"
},
{
"dayOfTheWeek": "MONDAY",
"end": "23:59",
"start": "09:30"
},
{
"dayOfTheWeek": "MONDAY",
"end": "23:59",
"start": "09:30"
}
],
"title": "Breakfast"
},
{
"categoryIds": [
"C001",
"C002"
],
"fulfillmentType": [
"DELIVERY",
"PICK_UP",
"SERVICE"
],
"id": "M001",
"serviceAvailability": [
{
"dayOfTheWeek": "MONDAY",
"end": "23:59",
"start": "09:30"
},
{
"dayOfTheWeek": "MONDAY",
"end": "23:59",
"start": "09:30"
},
{
"dayOfTheWeek": "MONDAY",
"end": "23:59",
"start": "09:30"
}
],
"title": "Breakfast"
},
{
"categoryIds": [
"C001",
"C002"
],
"fulfillmentType": [
"DELIVERY",
"PICK_UP",
"SERVICE"
],
"id": "M001",
"serviceAvailability": [
{
"dayOfTheWeek": "MONDAY",
"end": "23:59",
"start": "09:30"
},
{
"dayOfTheWeek": "MONDAY",
"end": "23:59",
"start": "09:30"
},
{
"dayOfTheWeek": "MONDAY",
"end": "23:59",
"start": "09:30"
}
],
"title": "Breakfast"
},
{
"categoryIds": [
"C001",
"C002"
],
"fulfillmentType": [
"DELIVERY",
"PICK_UP",
"SERVICE"
],
"id": "M001",
"serviceAvailability": [
{
"dayOfTheWeek": "MONDAY",
"end": "23:59",
"start": "09:30"
},
{
"dayOfTheWeek": "MONDAY",
"end": "23:59",
"start": "09:30"
},
{
"dayOfTheWeek": "MONDAY",
"end": "23:59",
"start": "09:30"
}
],
"title": "Breakfast"
}
],
"products": [
{
"available": true,
"description": "Contains beef, lettuce, tomato topped with our special LOKE sauce",
"id": "P001",
"imageUrl": "https://example.com/title.png",
"modifiers": [
{
"id": "M001",
"maxSelect": 3,
"minSelect": 1,
"optionIds": [
"OP001",
"OP002"
],
"title": "Extras"
},
{
"id": "M001",
"maxSelect": 3,
"minSelect": 1,
"optionIds": [
"OP001",
"OP002"
],
"title": "Extras"
},
{
"id": "M001",
"maxSelect": 3,
"minSelect": 1,
"optionIds": [
"OP001",
"OP002"
],
"title": "Extras"
},
{
"id": "M001",
"maxSelect": 3,
"minSelect": 1,
"optionIds": [
"OP001",
"OP002"
],
"title": "Extras"
}
],
"plu": "HOTFOOD-001",
"price": {
"amount": 2300,
"taxIncluded": 250
},
"priceOverrides": [
{
"contextType": "MENU",
"contextValue": "3",
"price": {
"amount": 2300,
"taxIncluded": 250
}
},
{
"contextType": "MENU",
"contextValue": "3",
"price": {
"amount": 2300,
"taxIncluded": 250
}
},
{
"contextType": "MENU",
"contextValue": "3",
"price": {
"amount": 2300,
"taxIncluded": 250
}
}
],
"tags": [
"gluten free",
"vegan"
],
"title": "LOKE's Burger",
"visibility": [
{
"dayOfTheWeek": "MONDAY",
"end": "23:59",
"start": "09:30"
},
{
"dayOfTheWeek": "MONDAY",
"end": "23:59",
"start": "09:30"
},
{
"dayOfTheWeek": "MONDAY",
"end": "23:59",
"start": "09:30"
},
{
"dayOfTheWeek": "MONDAY",
"end": "23:59",
"start": "09:30"
}
]
},
{
"available": true,
"description": "Contains beef, lettuce, tomato topped with our special LOKE sauce",
"id": "P001",
"imageUrl": "https://example.com/title.png",
"modifiers": [
{
"id": "M001",
"maxSelect": 3,
"minSelect": 1,
"optionIds": [
"OP001",
"OP002"
],
"title": "Extras"
},
{
"id": "M001",
"maxSelect": 3,
"minSelect": 1,
"optionIds": [
"OP001",
"OP002"
],
"title": "Extras"
},
{
"id": "M001",
"maxSelect": 3,
"minSelect": 1,
"optionIds": [
"OP001",
"OP002"
],
"title": "Extras"
},
{
"id": "M001",
"maxSelect": 3,
"minSelect": 1,
"optionIds": [
"OP001",
"OP002"
],
"title": "Extras"
}
],
"plu": "HOTFOOD-001",
"price": {
"amount": 2300,
"taxIncluded": 250
},
"priceOverrides": [
{
"contextType": "MENU",
"contextValue": "3",
"price": {
"amount": 2300,
"taxIncluded": 250
}
},
{
"contextType": "MENU",
"contextValue": "3",
"price": {
"amount": 2300,
"taxIncluded": 250
}
},
{
"contextType": "MENU",
"contextValue": "3",
"price": {
"amount": 2300,
"taxIncluded": 250
}
}
],
"tags": [
"gluten free",
"vegan"
],
"title": "LOKE's Burger",
"visibility": [
{
"dayOfTheWeek": "MONDAY",
"end": "23:59",
"start": "09:30"
},
{
"dayOfTheWeek": "MONDAY",
"end": "23:59",
"start": "09:30"
},
{
"dayOfTheWeek": "MONDAY",
"end": "23:59",
"start": "09:30"
},
{
"dayOfTheWeek": "MONDAY",
"end": "23:59",
"start": "09:30"
}
]
}
],
"timeZone": "Australia/Melbourne"
}
Responses
Get a Menu Product
This endpoint allows you to get a product by ID
get /organizations/{organizationId}/locations/{locationId}/menu/products/{productId}
Parameters
Name | Type | In | Description |
---|---|---|---|
organizationId | string | path | Organization ID |
locationId | string | path | Location ID |
productId | string | path |
Responses
{
"available": true,
"description": "Contains beef, lettuce, tomato topped with our special LOKE sauce",
"id": "P001",
"imageUrl": "https://example.com/title.png",
"modifiers": [
{
"id": "M001",
"maxSelect": 3,
"minSelect": 1,
"optionIds": [
"OP001",
"OP002"
],
"title": "Extras"
},
{
"id": "M001",
"maxSelect": 3,
"minSelect": 1,
"optionIds": [
"OP001",
"OP002"
],
"title": "Extras"
},
{
"id": "M001",
"maxSelect": 3,
"minSelect": 1,
"optionIds": [
"OP001",
"OP002"
],
"title": "Extras"
},
{
"id": "M001",
"maxSelect": 3,
"minSelect": 1,
"optionIds": [
"OP001",
"OP002"
],
"title": "Extras"
}
],
"plu": "HOTFOOD-001",
"price": {
"amount": 2300,
"taxIncluded": 250
},
"priceOverrides": [
{
"contextType": "MENU",
"contextValue": "3",
"price": {
"amount": 2300,
"taxIncluded": 250
}
},
{
"contextType": "MENU",
"contextValue": "3",
"price": {
"amount": 2300,
"taxIncluded": 250
}
},
{
"contextType": "MENU",
"contextValue": "3",
"price": {
"amount": 2300,
"taxIncluded": 250
}
}
],
"tags": [
"gluten free",
"vegan"
],
"title": "LOKE's Burger",
"visibility": [
{
"dayOfTheWeek": "MONDAY",
"end": "23:59",
"start": "09:30"
},
{
"dayOfTheWeek": "MONDAY",
"end": "23:59",
"start": "09:30"
}
]
}
Update a Menu Product
This endpoint allows developers to set the entire menu for a specific store. If you need to patch a product, you need to GET and apply manually before calling PUT
put /organizations/{organizationId}/locations/{locationId}/menu/products/{productId}
Parameters
Name | Type | In | Description |
---|---|---|---|
organizationId | string | path | Organization ID |
locationId | string | path | Location ID |
productId | string | path |
Request Body
{
"available": true,
"description": "Contains beef, lettuce, tomato topped with our special LOKE sauce",
"imageUrl": "https://example.com/title.png",
"modifiers": [
{
"id": "M001",
"maxSelect": 3,
"minSelect": 1,
"optionIds": [
"OP001",
"OP002"
],
"title": "Extras"
},
{
"id": "M001",
"maxSelect": 3,
"minSelect": 1,
"optionIds": [
"OP001",
"OP002"
],
"title": "Extras"
},
{
"id": "M001",
"maxSelect": 3,
"minSelect": 1,
"optionIds": [
"OP001",
"OP002"
],
"title": "Extras"
},
{
"id": "M001",
"maxSelect": 3,
"minSelect": 1,
"optionIds": [
"OP001",
"OP002"
],
"title": "Extras"
}
],
"plu": "HOTFOOD-001",
"price": {
"amount": 2300,
"taxIncluded": 250
},
"priceOverrides": [
{
"contextType": "MENU",
"contextValue": "3",
"price": {
"amount": 2300,
"taxIncluded": 250
}
},
{
"contextType": "MENU",
"contextValue": "3",
"price": {
"amount": 2300,
"taxIncluded": 250
}
}
],
"tags": [
"gluten free",
"vegan"
],
"title": "LOKE's Burger",
"visibility": [
{
"dayOfTheWeek": "MONDAY",
"end": "23:59",
"start": "09:30"
},
{
"dayOfTheWeek": "MONDAY",
"end": "23:59",
"start": "09:30"
},
{
"dayOfTheWeek": "MONDAY",
"end": "23:59",
"start": "09:30"
},
{
"dayOfTheWeek": "MONDAY",
"end": "23:59",
"start": "09:30"
}
]
}
Responses
Models
MenuConfig
A stores root level menu configuration.
Name | Type | Description |
---|---|---|
currency | string(enum) | The currency used for purchases for this store "AUD", "SGD", "GBP", "NZD" |
timeZone | string | The time zone of the store in Location/Area format. |
categories | Category[] | List of the store's categories. |
menus | Menu[] | List of the store's menus |
products | Product[] | List of the store's products. |
Category
A grouping of products that are related.
Name | Type | Description |
---|---|---|
id | string | A unique ID for the category |
title | string | The displayed name for the category |
productIds | string[] | All of the IDs of products that will be available in this category |
Menu
A collection of products that are available for a specific store.
Name | Type | Description |
---|---|---|
id | string | A unique ID for the menu. |
title | string | The name of the menu to be displayed |
categoryIds | string[] | All of the IDs for the menu categories that will be available while this menu is active |
fulfillmentType | string[] | The delivery type. Must be of 'DELIVERY', 'PICK_UP' or 'SERVICE' |
serviceAvailability | Period[] | The days and times of the day at which this menu should be made available |
Period
Time span for an individual day (finishes at 23:59
Name | Type | Description |
---|---|---|
dayOfTheWeek | string(enum) | The day of the week which these hours will be applied. "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY" |
end | string | The time which the item ceases to be available, in 24-hour HH:MM format, e.g '09:30', '21:59' |
start | string | The time which the item becomes available, in 24-hour HH:MM format, e.g '09:30', '21:59' |
Product
An individual product that can be ordered at a store.
Name | Type | Description |
---|---|---|
id | string | A unique ID for the product |
title | string | The name of the product |
available | boolean | Indicates whether the product can be sold. |
description | string | (optional) Supplementary information of the product that will be shown to the customer |
imageUrl | string | (optional)
URL to an image of the product.
Image requirements:
- Hosted on a secure connection (HTTPS).
- Image must be in JPEG or PNG
|
plu | string | (optional) A PLU/SKU/etc for the product, used for discounting and loyalty. This may be the same as the product ID in some systems, and is not required to be unique. For example a chips may exist on the menu as a main item, and as a side with different IDs but the same PLU. |
price | Price | |
modifiers | Modifier[] | (optional) Specifies the modifier to be associated with the product, allowing the user to make choices or bundle extras with their product. |
priceOverrides | PriceOverride[] | (optional) Overrides the price of a product |
tags | string[] | (optional) Related tags of a product |
visibility | Period[] | (optional) Defines when a product is visible to the customer |
Modifier
Allowing the user to customize the product by making choices or bundling extras with their order.
Name | Type | Description |
---|---|---|
id | string | A unique ID of this modifer |
title | string | The name of the modifier |
maxSelect | integer | (optional) Maximum number of selectable modifiers |
minSelect | integer | Minimum number of selectable modifiers |
optionIds | string[] | List of Ids of options in this modifier |
Price
Specifies the price to charge for ordering a product.
Name | Type | Description |
---|---|---|
amount | integer |
Specifies the price to charge for ordering the product including tax.
Price is in cents.
Price should always be integer value (never decimals).
Price should always be set even if price is 0.
|
taxIncluded | integer | (optional)
Specifies the tax, in cents, that was added to the product.
This can be null if tax is unknown.
All price.taxIncluded fields on all products can either all be of type int or all be undefined/null.
|
PriceOverride
Overrides the product price.
Name | Type | Description |
---|---|---|
contextType | string(enum) | Type of context in which to override. "MENU", "PRODUCT" |
contextValue | string | Context Value |
price | Price | |
ProductPayload
An updated product, note that omitting a field is the same as setting it to null
Name | Type | Description |
---|---|---|
title | string | The name of the product |
available | boolean | Indicates whether the product can be sold. |
description | string | (optional) Supplementary information of the product that will be shown to the customer |
imageUrl | string | (optional)
URL to an image of the product.
Image requirements:
- Hosted on a secure connection (HTTPS).
- Image must be in JPEG or PNG
|
plu | string | (optional) A PLU/SKU/etc for the product, used for discounting and loyalty. This may be the same as the product ID in some systems, and is not required to be unique. For example a chips may exist on the menu as a main item, and as a side with different IDs but the same PLU. |
price | Price | |
modifiers | Modifier[] | (optional) Specifies the modifier to be associated with the product, allowing the user to make choices or bundle extras with their product. |
priceOverrides | PriceOverride[] | (optional) Overrides the price of a product |
tags | string[] | (optional) Related tags of a product |
visibility | Period[] | (optional) Defines when a product is visible to the customer |