Products & Menus 101

Getting menus, categories, and products

A location's catalog is split into menus, categories in a menu, and products in each category.
Products will only show up in a single category, but categories may show up on multiple menus.

In typical situations you may only want to retrieve available menus, available categories, and available products. For example, menus, categories, and products that are enabled and in-schedule. A simple query for a single location might look like this:

You might also choose to limit this query by a specific menu via the menuUuid or by using the (not implemented) availableMenu if you happen to have a dedicated menu for the integration.

query ($locationUuid: String!) {
  location(locationUuid: $locationUuid) {
    name
    available
    availableMenusList {
      name
      availableCategoriesList {
        label
        availableProductsList {
          productId
          productUuid
          name
          description
          shortName
          hasVariants
          
          variantsList {
            name
            price
            sku
          }
          # options
          modifiers {
            name
            type
            enabled
            required
            rank
            product
            allowOptionQuantities
            options {
              key
              name
              type
              enabled
              allowOptionQuantities
              price
              product
            }
          }
        }
      }
    }
  }
}