Next Inventory 6.1.0: App Manager, dark mode, and more Joomla 6.1 "Nyota" Is Here Building the Future of Joomla Extensions
NextSoftware
Next Restaurant — Documentation

Get Menu

GET /v1/nextrestaurant/locations/{locationId}/menu

The live, orderable menu for a location

Categories of items, in the order arranged in the admin, reflecting live availability for this branch: unpublished items, items switched off for the location and 86'd items are absent, and price is the branch's price where one overrides the base.

Each item carries everything needed to order it — its variations, its modifier_groups with the per-item min/max overrides already applied, and its declared allergens.

Request

GET https://your-site.example/api/index.php/v1/nextrestaurant/locations/{locationId}/menu

Parameters

Name Type In Required Description
locationId integer path Yes A published location's id. (min 1, int64)

Responses

200 — The menu.

{
    "data": {
        "location_id": 2,
        "categories": [
            {
                "id": 5,
                "title": "Pizza",
                "items": [
                    {
                        "id": 16,
                        "title": "Margherita Pizza",
                        "description": "San Marzano tomato, fior di latte and fresh basil.",
                        "price": 13,
                        "has_variations": 1,
                        "image": "images/nextrestaurant/items/16/gallery/ca98f3a212f1aac0.jpg",
                        "prep_time_minutes": 23,
                        "calories": null,
                        "spice_level": 0,
                        "is_alcohol": 0,
                        "variations": [
                            {
                                "id": 1,
                                "title": "Regular",
                                "price": 13,
                                "is_default": 1
                            },
                            {
                                "id": 2,
                                "title": "Large",
                                "price": 17,
                                "is_default": 0
                            }
                        ],
                        "modifier_groups": [
                            {
                                "id": 2,
                                "title": "Extra Toppings",
                                "selection_type": "multiple",
                                "is_required": 0,
                                "min_select": 0,
                                "max_select": 4,
                                "free_quantity": 0,
                                "modifiers": [
                                    {
                                        "id": 5,
                                        "title": "Extra Cheese",
                                        "price": 1.5,
                                        "is_default": 0,
                                        "max_quantity": 1
                                    },
                                    {
                                        "id": 6,
                                        "title": "Mushrooms",
                                        "price": 1,
                                        "is_default": 0,
                                        "max_quantity": 1
                                    }
                                ]
                            }
                        ],
                        "allergens": [
                            {
                                "id": 5,
                                "title": "Fish",
                                "presence": "contains"
                            }
                        ]
                    }
                ]
            }
        ]
    }
}
Field Type Meaning
data.location_id integer (int64)
data.categories[].id integer (int64)
data.categories[].title string
data.categories[].items[].id integer (int64)
data.categories[].items[].title string
data.categories[].items[].description string\|null
data.categories[].items[].price number The branch price for the item ordered with no variation. When variations is non-empty the chosen variation's price replaces this — it is not added to it.
data.categories[].items[].has_variations integer 1 when the item is sold in sizes or versions. One of 0, 1.
data.categories[].items[].image string\|null Path relative to the site root. Prefix with your site URL to display it.
data.categories[].items[].prep_time_minutes integer\|null
data.categories[].items[].calories integer\|null
data.categories[].items[].spice_level integer\|null
data.categories[].items[].is_alcohol integer One of 0, 1.
data.categories[].items[].variations[] object[] Sizes or versions. Empty when the item has none. When it is non-empty, pick one and send its id — submitting the item without a variation_id is accepted and charged at the base price with no size recorded, which is almost never what a customer meant.
data.categories[].items[].variations[].id integer (int64)
data.categories[].items[].variations[].title string
data.categories[].items[].variations[].price number Replaces the item's price; not added to it.
data.categories[].items[].variations[].is_default integer One of 0, 1.
data.categories[].items[].modifier_groups[].id integer (int64)
data.categories[].items[].modifier_groups[].title string
data.categories[].items[].modifier_groups[].selection_type string One of single, multiple.
data.categories[].items[].modifier_groups[].is_required integer One of 0, 1.
data.categories[].items[].modifier_groups[].min_select integer Per-item overrides are already applied — use as given.
data.categories[].items[].modifier_groups[].max_select integer Per-item overrides are already applied — use as given.
data.categories[].items[].modifier_groups[].free_quantity integer How many are included before the per-modifier price applies.
data.categories[].items[].modifier_groups[].modifiers[].id integer (int64)
data.categories[].items[].modifier_groups[].modifiers[].title string
data.categories[].items[].modifier_groups[].modifiers[].price number Added to the line.
data.categories[].items[].modifier_groups[].modifiers[].is_default integer One of 0, 1.
data.categories[].items[].modifier_groups[].modifiers[].max_quantity integer\|null How many times this modifier may be repeated on one line.
data.categories[].items[].allergens[].id integer (int64)
data.categories[].items[].allergens[].title string
data.categories[].items[].allergens[].presence string One of contains, may_contain.

Errors

Status Code When
401 INVALID_TOKEN The token is missing, wrong, or none has been generated.
403 MODULE_DISABLED This module is disabled.
403 API_DISABLED API is disabled
404 UNKNOWN_LOCATION No such published location.

Examples

curl

curl -s "https://your-site.example/api/index.php/v1/nextrestaurant/locations/2/menu" \
  -H "Authorization: Bearer $API_TOKEN"

All Extensions