apeMenuV2

CommercePoint-of-SaleRetailRestaurantInventoryLoyaltyPaymentsE-CommerceOmnichannelCanada

Properties

Name Type Description
menuName string The name of the menu.
menuEntryGroups array Menu groups of this menu. The top-level entry will always be of type "group", representing a menu screen. Beneath each `menuEntryGroup` will be a `menuEntry` array containing any combination of one or
richDataMissing boolean Indicates whether or not rich item data is missing, if requested.
ikentooMenuId integer The unique identifier for the menu.
conditionalTaxRules boolean Warning that actual tax depends on a POS Account condition and may be different from what is provided in this API.
View JSON Schema on GitHub

JSON Schema

lightspeed-ape-menu-v2-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/lightspeed/main/json-schema/lightspeed-ape-menu-v2-schema.json",
  "title": "apeMenuV2",
  "x-generated": "2026-10-12",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/lightspeed-order-and-pay-api-openapi.yml#/components/schemas/apeMenuV2",
  "properties": {
    "menuName": {
      "description": "The name of the menu.",
      "type": "string"
    },
    "menuEntryGroups": {
      "description": "Menu groups of this menu. The top-level entry will always be of type \"group\", representing a menu screen. Beneath each `menuEntryGroup` will be a `menuEntry` array containing any combination of one or more menu entries:\n* A `menuItemEntry` represents an individual item and may include product modifier groups.\n* A `menuGroupEntry` represents a menu sub-screen.\n* A `menuDealEntry` represents a combo.\n* A `menuProductModifierEntry` represents a product modifier.",
      "items": {
        "$ref": "#/$defs/apeTopLevelMenuGroupEntryV2"
      },
      "type": "array"
    },
    "richDataMissing": {
      "description": "Indicates whether or not rich item data is missing, if requested.",
      "type": "boolean"
    },
    "ikentooMenuId": {
      "type": "integer",
      "description": "The unique identifier for the menu.",
      "format": "int64"
    },
    "conditionalTaxRules": {
      "description": "Warning that actual tax depends on a POS Account condition and may be different from what is provided in this API.",
      "type": "boolean"
    }
  },
  "type": "object",
  "$defs": {
    "apeItemRichData": {
      "type": "object",
      "properties": {
        "squareImageUrl": {
          "description": "A download link for the image associated with this item, as formatted for display in the POS.",
          "type": "string"
        },
        "rawImageUrl": {
          "description": "A download link for the image associated with this item.",
          "type": "string"
        },
        "previewImageUrl": {
          "description": "A download link for the preview image associated with this item.",
          "type": "string"
        },
        "containsAlcohol": {
          "description": "Flag to indicate if the item contains alcohol.",
          "type": "boolean"
        },
        "alcoholPercentage": {
          "description": "The percentage of alcohol in the item.",
          "type": "number"
        },
        "texts": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/apeItemTexts"
          }
        },
        "allergenCodes": {
          "description": "The allergen codes associated with this item.",
          "uniqueItems": true,
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "apeItemTexts": {
      "type": "object",
      "properties": {
        "locale": {
          "type": "string",
          "description": "The two letter language code associated with this item text."
        },
        "friendlyDisplayName": {
          "type": "string",
          "description": "The display name for this item in the configured language."
        },
        "description": {
          "type": "string",
          "description": "The descriptive text for this item in the configured language."
        }
      }
    },
    "apeMenuDealEntryV2": {
      "title": "menuDeal",
      "allOf": [
        {
          "type": "object",
          "properties": {
            "@type": {
              "type": "string",
              "description": "Indicates the item is a Combo.",
              "enum": [
                "menuDeal"
              ]
            },
            "items": {
              "description": "List of items to select from.",
              "type": "array",
              "items": {
                "$ref": "#/$defs/apeMenuItemEntryV2"
              }
            },
            "menuDealGroups": {
              "type": "array",
              "description": "Array of Items in the Combo",
              "items": {
                "$ref": "#/$defs/apeMenuDealGroupV2"
              }
            }
          }
        },
        {
          "$ref": "#/$defs/apeMenuItemEntryParentV2"
        }
      ]
    },
    "apeMenuDealGroupV2": {
      "type": "object",
      "properties": {
        "description": {
          "type": "string",
          "description": "Description of the combo item grouping."
        },
        "sku": {
          "type": "string",
          "description": "The SKU of the combo item grouping."
        },
        "mustSelectAnItem": {
          "type": "boolean",
          "description": "Whether or not this is a required selection."
        },
        "multiSelectionPermitted": {
          "type": "boolean",
          "description": "Whether or not multiple items can be selected from this item grouping."
        },
        "minimumSelection": {
          "type": "integer",
          "format": "int32",
          "description": "The minimum number of items that must be selected from this item grouping. If null then no minimum is set."
        },
        "maximumSelection": {
          "type": "integer",
          "format": "int32",
          "description": "The maximum number of items that can be selected from this item grouping. If null then no maximum is set."
        },
        "itemRichData": {
          "$ref": "#/$defs/apeItemRichData"
        },
        "items": {
          "description": "List of items to select from.",
          "type": "array",
          "items": {
            "$ref": "#/$defs/apeMenuItemEntryV2"
          }
        }
      },
      "description": "Collections of item groups within the combo to select from."
    },
    "apeMenuGroupEntryV2": {
      "title": "group",
      "allOf": [
        {
          "type": "object",
          "properties": {
            "@type": {
              "type": "string",
              "description": "Indicates this is a menu group.",
              "enum": [
                "group"
              ]
            },
            "id": {
              "type": "string",
              "description": "The menu group ID."
            },
            "name": {
              "type": "string",
              "description": "The menu group name."
            },
            "color": {
              "type": "string",
              "description": "The color of the button in the POS."
            },
            "menuEntry": {
              "type": "array",
              "description": "Array of menu entry objects.",
              "items": {
                "type": "object",
                "oneOf": [
                  {
                    "$ref": "#/$defs/apeMenuItemEntryV2"
                  },
                  {
                    "$ref": "#/$defs/apeMenuDealEntryV2"
                  },
                  {
                    "$ref": "#/$defs/apeMenuGroupEntryV2"
                  },
                  {
                    "$ref": "#/$defs/apeMenuProductModifierEntryV2"
                  }
                ]
              }
            }
          }
        }
      ]
    },
    "apeMenuItemEntryParentV2": {
      "properties": {
        "productName": {
          "type": "string",
          "description": "The name of the item."
        },
        "productPrice": {
          "type": "number",
          "description": "The price of the item."
        },
        "extraPrice": {
          "type": "number",
          "description": "Additional item price when selected in a combo group."
        },
        "color": {
          "type": "string",
          "description": "The color of the menu button for this item."
        },
        "sku": {
          "type": "string",
          "description": "The SKU of the item."
        },
        "customItemNameEnabled": {
          "type": "boolean",
          "description": "Whether the name of the item can be customized."
        },
        "pricingStrategy": {
          "type": "string",
          "description": "The pricing type of the item.",
          "enum": [
            "CUSTOMIZED_ITEM_PRICE_WILL_BE_NEGATIVE",
            "CUSTOMIZED_ITEM_PRICE_WILL_BE_POSTIVE",
            "CUSTOMIZED_ITEM_PRICE_WILL_BE_A_PERCENTAGE_OF_TOTAL",
            "PRICE_CANNOT_BE_CUSTOMIZED"
          ]
        },
        "itemRichData": {
          "$ref": "#/$defs/apeItemRichData"
        },
        "defaultTaxAmount": {
          "description": "The tax amount as calculated at the default tax rate (a sum for multiple taxes).",
          "type": "number"
        },
        "defaultTaxPercentage": {
          "description": "The default tax percentage for this item (a sum for multiple taxes).",
          "type": "number"
        },
        "taxIncludedInPrice": {
          "description": "Whether or not tax is included in the price of the item.",
          "type": "boolean"
        },
        "conditionalTaxRules": {
          "description": "Warning that actual tax depends on a POS Account condition and may be different from what is provided in this API.",
          "type": "boolean"
        },
        "taxes": {
          "description": "Detailed tax info",
          "items": {
            "$ref": "#/$defs/apeMenuItemTax"
          },
          "type": "array"
        }
      }
    },
    "apeMenuItemEntryV2": {
      "title": "menuItem",
      "allOf": [
        {
          "type": "object",
          "properties": {
            "@type": {
              "type": "string",
              "description": "Indicates this is an individual item.",
              "enum": [
                "menuItem"
              ]
            }
          }
        },
        {
          "$ref": "#/$defs/apeMenuItemEntryParentV2"
        },
        {
          "type": "object",
          "properties": {
            "asSubItem": {
              "type": "boolean",
              "description": "Indicates whether or not this product is a sub-item that cannot be sold alone. Note - when the item is nested under a `menuDeal` this will always be false."
            },
            "productionInstructionList": {
              "type": "array",
              "description": "Array of production instructions for this product",
              "items": {
                "$ref": "#/$defs/apeProductionInstruction"
              }
            },
            "menuModifierGroups": {
              "type": "array",
              "description": "Array of product modifier groups for this product",
              "items": {
                "$ref": "#/$defs/apeMenuModifierGroupV2"
              }
            }
          }
        }
      ]
    },
    "apeMenuItemTax": {
      "type": "object",
      "properties": {
        "description": {
          "type": "string",
          "description": "Tax description as it appears on a POS and receipt."
        },
        "amount": {
          "type": "number",
          "description": "The amount of Tax applied by default by this Tax, this can change dynamically at time of sale."
        },
        "percentage": {
          "type": "number",
          "description": "The percentage of Tax applied by default by this Tax, this can change dynamically at time of sale."
        }
      }
    },
    "apeMenuModifierGroupV2": {
      "type": "object",
      "description": "A product modifier group containing product modifiers to select from.",
      "properties": {
        "description": {
          "type": "string",
          "description": "Description of the modifier group."
        },
        "sku": {
          "type": "string",
          "description": "The SKU of the modifier group."
        },
        "mustSelectAnItem": {
          "type": "boolean",
          "description": "Whether or not this is a required selection."
        },
        "multiSelectionPermitted": {
          "type": "boolean",
          "description": "Whether or not multiple items can be selected from this modifier group."
        },
        "minimumSelection": {
          "type": "integer",
          "format": "int32",
          "description": "The minimum number of items that must be selected from this modifier group. If null then no minimum is set."
        },
        "maximumSelection": {
          "type": "integer",
          "format": "int32",
          "description": "The maximum number of items that can be selected from this modifier group. If null then no maximum is set."
        },
        "itemRichData": {
          "$ref": "#/$defs/apeItemRichData"
        },
        "productModifiers": {
          "description": "Array of product modifiers within this modifier group.",
          "type": "array",
          "items": {
            "$ref": "#/$defs/apeMenuProductModifierEntryV2"
          }
        }
      }
    },
    "apeMenuProductModifierEntryV2": {
      "title": "menuProductModifier",
      "allOf": [
        {
          "type": "object",
          "properties": {
            "@type": {
              "type": "string",
              "description": "Indicates this is a product modifier.",
              "enum": [
                "menuProductModifier"
              ]
            }
          }
        },
        {
          "$ref": "#/$defs/apeMenuItemEntryParentV2"
        },
        {
          "type": "object",
          "properties": {
            "productionInstructionList": {
              "type": "array",
              "description": "Array of production instructions for this modifier",
              "items": {
                "$ref": "#/$defs/apeProductionInstruction"
              }
            }
          }
        }
      ]
    },
    "apeProductionInstruction": {
      "type": "object",
      "properties": {
        "multiSelectionPermitted": {
          "type": "boolean",
          "description": "Specifies if more than one production instruction can be selected for this group."
        },
        "productionInstructionGroupName": {
          "type": "string",
          "description": "The group name for this production instruction."
        },
        "productionIntructionGroupId": {
          "type": "integer",
          "description": "The unique identifier for this production instruction group.",
          "format": "int64"
        },
        "productionInstructionList": {
          "type": "array",
          "description": "Array of production instructions for this group.",
          "items": {
            "$ref": "#/$defs/apeProductionInstructionEntry"
          }
        }
      }
    },
    "apeProductionInstructionEntry": {
      "type": "object",
      "properties": {
        "instruction": {
          "type": "string",
          "description": "The name of the production instruction."
        },
        "ikentooModifierId": {
          "description": "The unique identifier of this production instruction.",
          "type": "integer",
          "format": "int64"
        }
      },
      "description": "Array of production instructions for this group"
    },
    "apeTopLevelMenuGroupEntryV2": {
      "allOf": [
        {
          "type": "object",
          "properties": {
            "@type": {
              "type": "string",
              "description": "Indicates this is a menu group.",
              "enum": [
                "group"
              ]
            },
            "id": {
              "type": "string",
              "description": "The menu group ID."
            },
            "name": {
              "type": "string",
              "description": "The menu group name."
            },
            "color": {
              "type": "string",
              "description": "The color of the button in the POS."
            },
            "menuEntry": {
              "type": "array",
              "description": "Array of menu entry objects.",
              "items": {
                "type": "object",
                "oneOf": [
                  {
                    "$ref": "#/$defs/apeMenuItemEntryV2"
                  },
                  {
                    "$ref": "#/$defs/apeMenuDealEntryV2"
                  },
                  {
                    "$ref": "#/$defs/apeMenuGroupEntryV2"
                  },
                  {
                    "$ref": "#/$defs/apeMenuProductModifierEntryV2"
                  }
                ]
              }
            }
          }
        }
      ]
    }
  }
}

Work with this as data

Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for schemas

4 MCP tools reach this
  • find_json_schemasBrowse and filter every JSON Schema in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/lightspeed-ape-menu-v2"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.