GET Categories and their Subcategories

Fetch Categories with their Subcategories (and their Serving Times).

This call should be used as a starting point in displaying/listing the given Venue's Menu. It returns all Categories and Subcategories in the given Menu with Serving Times (for each Subcategory) and/or Menu Items and/or Menu Combo Meals (Clusters).

If there are no Menu Items and Menu Combo Meals (represented always as an empty array) in some of the listed Subcategories it means this Subcategory shouldn't be displayed to the customer (and if all Subcategories in one Category have this situation, don't display Category as well).

Not valid, aka empty Subcategories are returned on purpose because there can be a situation where you can have a Menu Item as part of a Combo Item which is from different Subcategory than the Menu Combo Meal/Combo Meal (aka Combos, as Upsell) to which this Combo Item belongs to. That different Subcategory can be empty and actually not displayed to the customer (which is fine, as that could mean that its content is being used as part of the other Clusters/Combos) and you would be needing its Serving Times probably to see if it is available to serve that Combo Item at the first place.

Path Parameters
  • venue_id
    Type: string
    required

    Venue ID

  • menu_id
    Type: string
    required

    Venue's Menu ID

Query Parameters
  • include
    Type: string
    required

    Include query param for Menu's Categories. For simplified response (without Category's info and Subcategories' Images) use this value: subcategories|name;introduction;translations

  • sort[position]
    enum

    Sort Categories by "position" property

    values
    • asc
    • desc
  • sort[subcategories.position]
    enum

    Sort Subcategories by "position" property

    values
    • asc
    • desc
  • order_type_id
    Type: integer
    min:  
    1
    max:  
    9
    enum
    required

    Type ID for the given Order Type. 1 - Dine-In (Full service), 4 - Dine-In (Quick service - Preorder), 6 - Takeout, 7 - Delivery, 8 - Curbside pickup, 9 - Foodspot

    values
    • 1
    • 4
    • 6
    • 7
    • 8
    • 9
Headers
  • Accept
    Type: string
    required

    Type of content accepted by the API (application/json in most cases)

  • Application
    Type: string
    required

    Application key for specific client app

  • API-VERSION
    Type: string
    required

    Version of the API to be used

  • X-QB-Enabled
    enum
    required

    Header which if sent with value 'true' will allow usage of the query building feature in response (through the request's query params). It is mandatory for this part of the documentation.

    values
    • true
    • false
  • Content-Language
    Type: string
    required

    Local language code (in format xx-XX, or simpler xx) for translation purposes

  • X-Request-ID
    Type: string
    required

    Unique request identifier

Responses
  • application/json
  • 400

    Bad Request

  • 403

    Forbidden

  • 404

    Not Found

  • 500

    Internal Server Error

Request Example for get/venues/{venue_id}/menus/{menu_id}/categories
curl 'https://api-public-demo.menu.app/api/venues/{venue_id}/menus/{menu_id}/categories?include=name%2Ctranslations%2Csubcategories%7Cname%3Bintroduction%3Btranslations%2Csubcategories.image%7Cthumbnail_small%2Csubcategories.serving_times%7Ctype_id%3Btime_from%3Btime_to%3Bdays%2Csubcategories.menu_items%2Csubcategories.menu_combo_meals&order_type_id=1' \
  --header 'Accept: application/json' \
  --header 'Application: application-key' \
  --header 'API-VERSION: ' \
  --header 'X-QB-Enabled: true' \
  --header 'Content-Language: en' \
  --header 'X-Request-ID: c10b4a70-6274-490d-80a0-03e7bb826937'
{
  "status": "OK",
  "code": 200,
  "method": "GET",
  "data": {
    "categories": [
      {
        "id": "8556a36c-0864-454d-b21f-204500ce2440",
        "name": "Category",
        "translations": {
          "name": "Category"
        },
        "subcategories": [
          {
            "id": "1ff46ba9-7006-419d-83ba-e12d11d9cf56",
            "category_id": "8556a36c-0864-454d-b21f-204500ce2440",
            "name": "Subcategory",
            "introduction": "Subcategory's Description",
            "translations": {
              "name": "Subcategory",
              "introduction": "Subcategory's Description"
            },
            "image": {
              "thumbnail_small": null
            },
            "serving_times": [
              {
                "id": "ff9c1042-370b-47f1-a8e2-6d20a6aa412f",
                "type_id": 2,
                "time_from": "07:00",
                "time_to": "22:00",
                "days": [
                  1
                ]
              }
            ],
            "menu_items": [
              {
                "id": "3eac2d29-1df5-42d9-9e1b-1cd41ac17d74",
                "subcategory_id": "1ff46ba9-7006-419d-83ba-e12d11d9cf56"
              }
            ],
            "menu_combo_meals": [
              {
                "id": "3d4dce7a-c0ff-4edd-81de-c69a3936b145",
                "subcategory_id": "1ff46ba9-7006-419d-83ba-e12d11d9cf56"
              }
            ]
          }
        ]
      }
    ]
  }
}