> ## Documentation Index
> Fetch the complete documentation index at: https://docs.craveup.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Read a location's published catering menu



## OpenAPI

````yaml /generated/storefront.openapi.json get /locations/{locationId}/catering/menu
openapi: 3.0.3
info:
  title: Crave Storefront API
  version: 2.0.0
  description: >-
    Direct public Storefront API. Anonymous catalog reads require no API key.
    Protected resources use purpose-limited cart, checkout, receipt, or customer
    credentials.
  contact:
    name: Crave Support
    email: hello@craveup.com
servers:
  - url: https://api.craveup.com/api/v1/storefront
    description: Production Storefront API
  - url: https://sandbox-api.craveup.com/api/v1/storefront
    description: Sandbox Storefront API
security: []
tags:
  - name: Customer Auth
  - name: Catering
  - name: Loyalty
  - name: Merchants
  - name: Locations
  - name: Ordering Sessions
  - name: Menus
  - name: Products
  - name: Carts
  - name: Analytics
  - name: Checkout
  - name: Cart Items
  - name: Discounts
  - name: Customers
  - name: Orders
paths:
  /locations/{locationId}/catering/menu:
    get:
      tags:
        - Catering
      summary: Read a location's published catering menu
      operationId: storefrontGetPublishedCateringMenu
      parameters:
        - name: locationId
          in: path
          required: true
          schema:
            type: string
            minLength: 1
            maxLength: 128
      responses:
        '200':
          description: >-
            The published catering menu at its catalog revision: items, groups
            and options by canonical ID with their printed price and serving
            facts, and the location's public catering terms. 404
            CATERING_MENU_UNAVAILABLE when catering is off or nothing is
            published for it.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublishedCateringMenuResponse'
        '400':
          description: The request is invalid.
          headers:
            X-Request-Id:
              description: Opaque request identifier for support and telemetry correlation.
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CommerceErrorEnvelope'
        '404':
          description: The requested resource was not found.
          headers:
            X-Request-Id:
              description: Opaque request identifier for support and telemetry correlation.
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CommerceErrorEnvelope'
        '429':
          description: The request was rate limited.
          headers:
            X-Request-Id:
              description: Opaque request identifier for support and telemetry correlation.
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CommerceErrorEnvelope'
        '500':
          description: An unexpected error occurred.
          headers:
            X-Request-Id:
              description: Opaque request identifier for support and telemetry correlation.
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CommerceErrorEnvelope'
        '503':
          description: A required dependency is temporarily unavailable.
          headers:
            X-Request-Id:
              description: Opaque request identifier for support and telemetry correlation.
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CommerceErrorEnvelope'
      security: []
components:
  schemas:
    PublishedCateringMenuResponse:
      type: object
      properties:
        location:
          type: object
          properties:
            locationId:
              type: string
              format: uuid
              pattern: >-
                ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
            displayName:
              type: string
            currency:
              type: string
              pattern: ^[A-Z]{3}$
            timezone:
              nullable: true
              type: string
          required:
            - locationId
            - displayName
            - currency
            - timezone
          additionalProperties: false
        menuReleases:
          maxItems: 1000
          type: array
          items:
            type: object
            properties:
              menuId:
                type: string
                format: uuid
                pattern: >-
                  ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
              locationId:
                type: string
                format: uuid
                pattern: >-
                  ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
              channel:
                type: string
                enum:
                  - online
                  - catering
              menuReleaseId:
                type: string
                format: uuid
                pattern: >-
                  ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
              targetRevision:
                type: integer
                minimum: 0
                exclusiveMinimum: true
                maximum: 9007199254740991
              contentHash:
                type: string
                pattern: ^[a-f0-9]{64}$
            required:
              - menuId
              - locationId
              - channel
              - menuReleaseId
              - targetRevision
              - contentHash
            additionalProperties: false
        categories:
          type: array
          items:
            type: object
            properties:
              source:
                type: object
                properties:
                  menuId:
                    type: string
                    format: uuid
                    pattern: >-
                      ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
                  locationId:
                    type: string
                    format: uuid
                    pattern: >-
                      ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
                  channel:
                    type: string
                    enum:
                      - catering
                  kind:
                    type: string
                    enum:
                      - released
                  menuReleaseId:
                    type: string
                    format: uuid
                    pattern: >-
                      ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
                required:
                  - menuId
                  - locationId
                  - channel
                  - kind
                  - menuReleaseId
                additionalProperties: false
              commercialPolicy:
                type: object
                properties:
                  servingRangeReading:
                    nullable: true
                    type: string
                    enum:
                      - plan_for_lower
                      - plan_for_higher
                  rangeQuotePolicy:
                    nullable: true
                    type: string
                    enum:
                      - quote_top
                      - quote_range
                  rules:
                    type: object
                    properties:
                      all:
                        type: object
                        properties:
                          minimumGuests:
                            type: integer
                            minimum: 0
                            exclusiveMinimum: true
                            maximum: 10000
                          maximumGuests:
                            type: integer
                            minimum: 0
                            exclusiveMinimum: true
                            maximum: 10000
                          minimumUnits:
                            type: string
                            pattern: ^(?:0|[1-9]\d{0,4})(?:\.\d{1,6})?$
                          maximumUnits:
                            type: string
                            pattern: ^(?:0|[1-9]\d{0,4})(?:\.\d{1,6})?$
                          minimumSpend:
                            type: object
                            properties:
                              amountCents:
                                type: integer
                                minimum: 0
                                maximum: 99999999
                              basis:
                                type: string
                                enum:
                                  - eligible_food_beverage_before_discounts
                            required:
                              - amountCents
                              - basis
                            additionalProperties: false
                          leadTimeHours:
                            type: integer
                            minimum: 0
                            maximum: 8760
                        additionalProperties: false
                      byServiceStyle:
                        type: object
                        additionalProperties:
                          type: object
                          properties:
                            minimumGuests:
                              type: integer
                              minimum: 0
                              exclusiveMinimum: true
                              maximum: 10000
                            maximumGuests:
                              type: integer
                              minimum: 0
                              exclusiveMinimum: true
                              maximum: 10000
                            minimumUnits:
                              type: string
                              pattern: ^(?:0|[1-9]\d{0,4})(?:\.\d{1,6})?$
                            maximumUnits:
                              type: string
                              pattern: ^(?:0|[1-9]\d{0,4})(?:\.\d{1,6})?$
                            minimumSpend:
                              type: object
                              properties:
                                amountCents:
                                  type: integer
                                  minimum: 0
                                  maximum: 99999999
                                basis:
                                  type: string
                                  enum:
                                    - eligible_food_beverage_before_discounts
                              required:
                                - amountCents
                                - basis
                              additionalProperties: false
                            leadTimeHours:
                              type: integer
                              minimum: 0
                              maximum: 8760
                          additionalProperties: false
                    additionalProperties: false
                required:
                  - servingRangeReading
                  - rangeQuotePolicy
                additionalProperties: false
              categoryId:
                type: string
                minLength: 1
                maxLength: 200
              name:
                type: string
              items:
                type: array
                items:
                  type: object
                  properties:
                    commercialPolicy:
                      type: object
                      properties:
                        servingRangeReading:
                          nullable: true
                          type: string
                          enum:
                            - plan_for_lower
                            - plan_for_higher
                        rangeQuotePolicy:
                          nullable: true
                          type: string
                          enum:
                            - quote_top
                            - quote_range
                        rules:
                          type: object
                          properties:
                            all:
                              type: object
                              properties:
                                minimumGuests:
                                  type: integer
                                  minimum: 0
                                  exclusiveMinimum: true
                                  maximum: 10000
                                maximumGuests:
                                  type: integer
                                  minimum: 0
                                  exclusiveMinimum: true
                                  maximum: 10000
                                minimumUnits:
                                  type: string
                                  pattern: ^(?:0|[1-9]\d{0,4})(?:\.\d{1,6})?$
                                maximumUnits:
                                  type: string
                                  pattern: ^(?:0|[1-9]\d{0,4})(?:\.\d{1,6})?$
                                minimumSpend:
                                  type: object
                                  properties:
                                    amountCents:
                                      type: integer
                                      minimum: 0
                                      maximum: 99999999
                                    basis:
                                      type: string
                                      enum:
                                        - eligible_food_beverage_before_discounts
                                  required:
                                    - amountCents
                                    - basis
                                  additionalProperties: false
                                leadTimeHours:
                                  type: integer
                                  minimum: 0
                                  maximum: 8760
                              additionalProperties: false
                            byServiceStyle:
                              type: object
                              additionalProperties:
                                type: object
                                properties:
                                  minimumGuests:
                                    type: integer
                                    minimum: 0
                                    exclusiveMinimum: true
                                    maximum: 10000
                                  maximumGuests:
                                    type: integer
                                    minimum: 0
                                    exclusiveMinimum: true
                                    maximum: 10000
                                  minimumUnits:
                                    type: string
                                    pattern: ^(?:0|[1-9]\d{0,4})(?:\.\d{1,6})?$
                                  maximumUnits:
                                    type: string
                                    pattern: ^(?:0|[1-9]\d{0,4})(?:\.\d{1,6})?$
                                  minimumSpend:
                                    type: object
                                    properties:
                                      amountCents:
                                        type: integer
                                        minimum: 0
                                        maximum: 99999999
                                      basis:
                                        type: string
                                        enum:
                                          - eligible_food_beverage_before_discounts
                                    required:
                                      - amountCents
                                      - basis
                                    additionalProperties: false
                                  leadTimeHours:
                                    type: integer
                                    minimum: 0
                                    maximum: 8760
                                additionalProperties: false
                          additionalProperties: false
                      required:
                        - servingRangeReading
                        - rangeQuotePolicy
                      additionalProperties: false
                    source:
                      type: object
                      properties:
                        menuId:
                          type: string
                          format: uuid
                          pattern: >-
                            ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
                        locationId:
                          type: string
                          format: uuid
                          pattern: >-
                            ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
                        channel:
                          type: string
                          enum:
                            - catering
                        kind:
                          type: string
                          enum:
                            - released
                        menuReleaseId:
                          type: string
                          format: uuid
                          pattern: >-
                            ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
                      required:
                        - menuId
                        - locationId
                        - channel
                        - kind
                        - menuReleaseId
                      additionalProperties: false
                    productId:
                      type: string
                      minLength: 1
                      maxLength: 200
                    name:
                      type: string
                    description:
                      nullable: true
                      type: string
                    priceBasis:
                      nullable: true
                      type: string
                      enum:
                        - per_person
                        - per_item
                        - per_dozen
                        - per_tray
                        - per_pack
                        - per_lb
                        - per_oz
                        - per_kg
                        - per_g
                        - per_gallon
                        - per_quart
                        - per_liter
                        - per_ml
                        - per_fl_oz
                    printedPrice:
                      nullable: true
                      oneOf:
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - exact
                            amountCents:
                              type: integer
                              minimum: 0
                              maximum: 99999999
                          required:
                            - kind
                            - amountCents
                          additionalProperties: false
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - range
                            minCents:
                              type: integer
                              minimum: 0
                              maximum: 99999999
                            maxCents:
                              type: integer
                              minimum: 0
                              maximum: 99999999
                          required:
                            - kind
                            - minCents
                            - maxCents
                          additionalProperties: false
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - quote_only
                          required:
                            - kind
                          additionalProperties: false
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - unknown
                            reason:
                              type: string
                              minLength: 1
                              maxLength: 2000
                          required:
                            - kind
                            - reason
                          additionalProperties: false
                    serves:
                      nullable: true
                      oneOf:
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - exact
                            guests:
                              type: integer
                              minimum: 0
                              exclusiveMinimum: true
                              maximum: 10000
                            sourceText:
                              type: string
                              minLength: 1
                              maxLength: 2000
                          required:
                            - kind
                            - guests
                            - sourceText
                          additionalProperties: false
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - range
                            minGuests:
                              type: integer
                              minimum: 0
                              exclusiveMinimum: true
                              maximum: 10000
                            maxGuests:
                              type: integer
                              minimum: 0
                              exclusiveMinimum: true
                              maximum: 10000
                            sourceText:
                              type: string
                              minLength: 1
                              maxLength: 2000
                          required:
                            - kind
                            - minGuests
                            - maxGuests
                            - sourceText
                          additionalProperties: false
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - up_to
                            maxGuests:
                              type: integer
                              minimum: 0
                              exclusiveMinimum: true
                              maximum: 10000
                            sourceText:
                              type: string
                              minLength: 1
                              maxLength: 2000
                          required:
                            - kind
                            - maxGuests
                            - sourceText
                          additionalProperties: false
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - approximate
                            minGuests:
                              nullable: true
                              type: integer
                              minimum: 0
                              exclusiveMinimum: true
                              maximum: 10000
                            maxGuests:
                              type: integer
                              minimum: 0
                              exclusiveMinimum: true
                              maximum: 10000
                            sourceText:
                              type: string
                              minLength: 1
                              maxLength: 2000
                          required:
                            - kind
                            - minGuests
                            - maxGuests
                            - sourceText
                          additionalProperties: false
                    quantityRules:
                      nullable: true
                      type: object
                      properties:
                        increment:
                          type: string
                          pattern: ^(?:0|[1-9]\d{0,4})(?:\.\d{1,6})?$
                        minimum:
                          type: string
                          pattern: ^(?:0|[1-9]\d{0,4})(?:\.\d{1,6})?$
                        maximum:
                          nullable: true
                          type: string
                          pattern: ^(?:0|[1-9]\d{0,4})(?:\.\d{1,6})?$
                      required:
                        - increment
                        - minimum
                        - maximum
                      additionalProperties: false
                    contents:
                      maxItems: 100
                      type: array
                      items:
                        type: object
                        properties:
                          name:
                            type: string
                            minLength: 1
                            maxLength: 2000
                          quantity:
                            type: string
                            pattern: ^(?:0|[1-9]\d{0,4})(?:\.\d{1,6})?$
                          unit:
                            type: string
                            enum:
                              - person
                              - item
                              - dozen
                              - tray
                              - pack
                              - lb
                              - oz
                              - kg
                              - g
                              - gallon
                              - quart
                              - liter
                              - ml
                              - fl_oz
                        required:
                          - name
                          - quantity
                          - unit
                        additionalProperties: false
                    planningYield:
                      anyOf:
                        - $ref: '#/components/schemas/CateringPlanningYield'
                        - type: string
                          nullable: true
                          enum:
                            - null
                    minimumSpendEligibility:
                      type: string
                      enum:
                        - food_beverage
                        - excluded
                        - unreviewed
                    allocationGroup:
                      nullable: true
                      type: object
                      properties:
                        groupId:
                          type: string
                          minLength: 1
                          maxLength: 200
                        minimumGuests:
                          type: integer
                          minimum: 0
                          exclusiveMinimum: true
                          maximum: 10000
                        maximumGuests:
                          type: integer
                          minimum: 0
                          exclusiveMinimum: true
                          maximum: 10000
                        minimumGuestsPerProduct:
                          type: integer
                          minimum: 0
                          exclusiveMinimum: true
                          maximum: 10000
                        maximumDistinctProducts:
                          type: integer
                          minimum: 0
                          exclusiveMinimum: true
                          maximum: 100
                        total:
                          type: string
                          enum:
                            - event_headcount
                      required:
                        - groupId
                        - minimumGuests
                        - maximumGuests
                        - minimumGuestsPerProduct
                        - maximumDistinctProducts
                        - total
                      additionalProperties: false
                    ruleLayers:
                      maxItems: 4
                      type: array
                      items:
                        type: object
                        properties:
                          scope:
                            type: string
                            enum:
                              - location
                              - menu
                              - category
                              - product
                          entityId:
                            type: string
                            minLength: 1
                            maxLength: 200
                          rules:
                            type: object
                            properties:
                              all:
                                type: object
                                properties:
                                  minimumGuests:
                                    type: integer
                                    minimum: 0
                                    exclusiveMinimum: true
                                    maximum: 10000
                                  maximumGuests:
                                    type: integer
                                    minimum: 0
                                    exclusiveMinimum: true
                                    maximum: 10000
                                  minimumUnits:
                                    type: string
                                    pattern: ^(?:0|[1-9]\d{0,4})(?:\.\d{1,6})?$
                                  maximumUnits:
                                    type: string
                                    pattern: ^(?:0|[1-9]\d{0,4})(?:\.\d{1,6})?$
                                  minimumSpend:
                                    type: object
                                    properties:
                                      amountCents:
                                        type: integer
                                        minimum: 0
                                        maximum: 99999999
                                      basis:
                                        type: string
                                        enum:
                                          - eligible_food_beverage_before_discounts
                                    required:
                                      - amountCents
                                      - basis
                                    additionalProperties: false
                                  leadTimeHours:
                                    type: integer
                                    minimum: 0
                                    maximum: 8760
                                additionalProperties: false
                              byServiceStyle:
                                type: object
                                additionalProperties:
                                  type: object
                                  properties:
                                    minimumGuests:
                                      type: integer
                                      minimum: 0
                                      exclusiveMinimum: true
                                      maximum: 10000
                                    maximumGuests:
                                      type: integer
                                      minimum: 0
                                      exclusiveMinimum: true
                                      maximum: 10000
                                    minimumUnits:
                                      type: string
                                      pattern: ^(?:0|[1-9]\d{0,4})(?:\.\d{1,6})?$
                                    maximumUnits:
                                      type: string
                                      pattern: ^(?:0|[1-9]\d{0,4})(?:\.\d{1,6})?$
                                    minimumSpend:
                                      type: object
                                      properties:
                                        amountCents:
                                          type: integer
                                          minimum: 0
                                          maximum: 99999999
                                        basis:
                                          type: string
                                          enum:
                                            - eligible_food_beverage_before_discounts
                                      required:
                                        - amountCents
                                        - basis
                                      additionalProperties: false
                                    leadTimeHours:
                                      type: integer
                                      minimum: 0
                                      maximum: 8760
                                  additionalProperties: false
                            additionalProperties: false
                        required:
                          - scope
                          - entityId
                          - rules
                        additionalProperties: false
                    reviewFacts:
                      maxItems: 200
                      type: array
                      items:
                        type: object
                        properties:
                          code:
                            type: string
                            enum:
                              - conflicting_lead_time
                              - unsupported_minimum_spend_basis
                              - unresolved_choice_scope
                              - ambiguous_category_scope
                              - staff_pricing
                          sourceText:
                            type: string
                            minLength: 1
                            maxLength: 2000
                          reason:
                            type: string
                            minLength: 1
                            maxLength: 2000
                        required:
                          - code
                          - sourceText
                          - reason
                        additionalProperties: false
                    foodFacts:
                      nullable: true
                      type: object
                      properties:
                        serving:
                          type: object
                          properties:
                            label:
                              type: string
                              minLength: 1
                              maxLength: 255
                            grams:
                              nullable: true
                              type: number
                              minimum: 0
                              exclusiveMinimum: true
                          required:
                            - label
                            - grams
                          additionalProperties: false
                        nutrients:
                          type: object
                          properties:
                            caloriesKcal:
                              nullable: true
                              type: number
                              minimum: 0
                            proteinGrams:
                              nullable: true
                              type: number
                              minimum: 0
                            carbohydrateGrams:
                              nullable: true
                              type: number
                              minimum: 0
                            fatGrams:
                              nullable: true
                              type: number
                              minimum: 0
                            fiberGrams:
                              nullable: true
                              type: number
                              minimum: 0
                            sugarGrams:
                              nullable: true
                              type: number
                              minimum: 0
                            saturatedFatGrams:
                              nullable: true
                              type: number
                              minimum: 0
                            sodiumMilligrams:
                              nullable: true
                              type: number
                              minimum: 0
                          required:
                            - caloriesKcal
                            - proteinGrams
                            - carbohydrateGrams
                            - fatGrams
                            - fiberGrams
                            - sugarGrams
                            - saturatedFatGrams
                            - sodiumMilligrams
                          additionalProperties: false
                        provenance:
                          oneOf:
                            - type: object
                              properties:
                                kind:
                                  type: string
                                  enum:
                                    - entered
                              required:
                                - kind
                              additionalProperties: false
                            - type: object
                              properties:
                                kind:
                                  type: string
                                  enum:
                                    - provider
                                provider:
                                  type: string
                                  enum:
                                    - square
                                    - clover
                                    - toast
                                revision:
                                  type: string
                                  minLength: 1
                                  maxLength: 128
                              required:
                                - kind
                                - provider
                                - revision
                              additionalProperties: false
                            - type: object
                              properties:
                                kind:
                                  type: string
                                  enum:
                                    - recipe
                                servingsYield:
                                  type: number
                                  minimum: 0
                                  exclusiveMinimum: true
                                components:
                                  minItems: 1
                                  maxItems: 100
                                  type: array
                                  items:
                                    type: object
                                    properties:
                                      entityId:
                                        type: string
                                        format: uuid
                                        pattern: >-
                                          ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
                                      fraction:
                                        type: object
                                        properties:
                                          numerator:
                                            type: number
                                            minimum: 0
                                          denominator:
                                            type: number
                                            minimum: 0
                                            exclusiveMinimum: true
                                        required:
                                          - numerator
                                          - denominator
                                        additionalProperties: false
                                    required:
                                      - entityId
                                      - fraction
                                    additionalProperties: false
                              required:
                                - kind
                                - servingsYield
                                - components
                              additionalProperties: false
                        includedComponentIds:
                          maxItems: 1000
                          type: array
                          items:
                            type: string
                            format: uuid
                            pattern: >-
                              ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
                        suitability:
                          type: object
                          properties:
                            vegetarian:
                              type: string
                              enum:
                                - suitable
                                - unsuitable
                                - unknown
                            vegan:
                              type: string
                              enum:
                                - suitable
                                - unsuitable
                                - unknown
                          required:
                            - vegetarian
                            - vegan
                          additionalProperties: false
                        ingredients:
                          maxItems: 100
                          type: array
                          items:
                            type: string
                            minLength: 1
                            maxLength: 255
                        allergens:
                          maxItems: 14
                          type: array
                          items:
                            type: object
                            properties:
                              allergenId:
                                type: string
                                enum:
                                  - milk
                                  - egg
                                  - fish
                                  - crustacean_shellfish
                                  - tree_nuts
                                  - peanut
                                  - wheat
                                  - soy
                                  - sesame
                                  - celery
                                  - mustard
                                  - lupin
                                  - molluscs
                                  - sulphites
                              status:
                                type: string
                                enum:
                                  - contains
                                  - may_contain
                                  - absent
                                  - unknown
                            required:
                              - allergenId
                              - status
                            additionalProperties: false
                        crossContact:
                          type: object
                          properties:
                            status:
                              type: string
                              enum:
                                - possible
                                - none_reported
                                - unknown
                            allergenIds:
                              maxItems: 14
                              type: array
                              items:
                                type: string
                                enum:
                                  - milk
                                  - egg
                                  - fish
                                  - crustacean_shellfish
                                  - tree_nuts
                                  - peanut
                                  - wheat
                                  - soy
                                  - sesame
                                  - celery
                                  - mustard
                                  - lupin
                                  - molluscs
                                  - sulphites
                            evidence:
                              nullable: true
                              type: string
                              minLength: 1
                              maxLength: 2000
                          required:
                            - status
                            - allergenIds
                            - evidence
                          additionalProperties: false
                      required:
                        - serving
                        - nutrients
                        - provenance
                        - includedComponentIds
                        - suitability
                        - ingredients
                        - allergens
                        - crossContact
                      additionalProperties: false
                    groups:
                      type: array
                      items:
                        $ref: '#/components/schemas/PublishedCateringMenuGroup'
                  required:
                    - commercialPolicy
                    - source
                    - productId
                    - name
                    - description
                    - priceBasis
                    - printedPrice
                    - serves
                    - quantityRules
                    - contents
                    - planningYield
                    - minimumSpendEligibility
                    - allocationGroup
                    - ruleLayers
                    - reviewFacts
                    - foodFacts
                    - groups
                  additionalProperties: false
            required:
              - source
              - commercialPolicy
              - categoryId
              - name
              - items
            additionalProperties: false
        policies:
          type: object
          properties:
            serviceStyles:
              type: array
              items:
                type: string
                enum:
                  - pickup
                  - drop_off
                  - drop_off_with_setup
            minimumHeadcount:
              nullable: true
              type: integer
              minimum: 0
              exclusiveMinimum: true
              maximum: 9007199254740991
            maximumHeadcount:
              nullable: true
              type: integer
              minimum: 0
              exclusiveMinimum: true
              maximum: 9007199254740991
          required:
            - serviceStyles
            - minimumHeadcount
            - maximumHeadcount
          additionalProperties: false
      required:
        - location
        - menuReleases
        - categories
        - policies
      additionalProperties: false
    CommerceErrorEnvelope:
      type: object
      properties:
        code:
          anyOf:
            - type: string
              enum:
                - VALIDATION_ERROR
                - UNAUTHORIZED
                - CUSTOMER_AUTH_CODE_REJECTED
                - FORBIDDEN
                - NOT_FOUND
                - RATE_LIMITED
                - CART_CONFLICT
                - REQUOTE_REQUIRED
                - RESOURCE_CONFLICT
                - CART_IMMUTABLE
                - IDEMPOTENCY_KEY_REQUIRED
                - IDEMPOTENCY_KEY_REUSED
                - IDEMPOTENCY_IN_PROGRESS
                - DEPENDENCY_UNAVAILABLE
                - INTERNAL_ERROR
            - type: string
              minLength: 1
        message:
          type: string
          minLength: 1
        requestId:
          type: string
          minLength: 8
        details:
          type: object
          additionalProperties: {}
      required:
        - code
        - message
        - requestId
      additionalProperties: false
    CateringPlanningYield:
      type: object
      properties:
        guests:
          type: string
          pattern: ^(?:0|[1-9]\d{0,4})(?:\.\d{1,6})?$
        quantity:
          type: string
          pattern: ^(?:0|[1-9]\d{0,4})(?:\.\d{1,6})?$
        reviewNote:
          type: string
          minLength: 1
          maxLength: 2000
      required:
        - guests
        - quantity
        - reviewNote
      additionalProperties: false
    PublishedCateringMenuGroup:
      type: object
      properties:
        groupId:
          type: string
          minLength: 1
          maxLength: 200
        name:
          type: string
        semanticRole:
          nullable: true
          type: string
          enum:
            - size
            - choice
        minSelections:
          type: integer
          minimum: 0
          maximum: 9007199254740991
        maxSelections:
          type: integer
          minimum: 0
          exclusiveMinimum: true
          maximum: 9007199254740991
        customerVisible:
          type: boolean
        selectionPath:
          minItems: 2
          maxItems: 40
          type: array
          items:
            type: string
            minLength: 1
            maxLength: 200
        defaultSelections:
          maxItems: 50
          type: array
          items:
            type: object
            properties:
              optionId:
                type: string
                minLength: 1
                maxLength: 200
              quantity:
                type: integer
                minimum: 0
                exclusiveMinimum: true
                maximum: 99
            required:
              - optionId
              - quantity
            additionalProperties: false
        fixedSelections:
          maxItems: 50
          type: array
          items:
            type: object
            properties:
              optionId:
                type: string
                minLength: 1
                maxLength: 200
              quantity:
                type: integer
                minimum: 0
                exclusiveMinimum: true
                maximum: 99
            required:
              - optionId
              - quantity
            additionalProperties: false
        options:
          type: array
          items:
            $ref: '#/components/schemas/PublishedCateringMenuOption'
      required:
        - groupId
        - name
        - semanticRole
        - minSelections
        - maxSelections
        - customerVisible
        - selectionPath
        - defaultSelections
        - fixedSelections
        - options
      additionalProperties: false
    PublishedCateringMenuOption:
      type: object
      properties:
        optionId:
          type: string
          minLength: 1
          maxLength: 200
        name:
          type: string
        priceSemantics:
          nullable: true
          type: string
          enum:
            - replaces_item
            - adds_to_item
        printedPrice:
          nullable: true
          oneOf:
            - type: object
              properties:
                kind:
                  type: string
                  enum:
                    - exact
                amountCents:
                  type: integer
                  minimum: 0
                  maximum: 99999999
              required:
                - kind
                - amountCents
              additionalProperties: false
            - type: object
              properties:
                kind:
                  type: string
                  enum:
                    - range
                minCents:
                  type: integer
                  minimum: 0
                  maximum: 99999999
                maxCents:
                  type: integer
                  minimum: 0
                  maximum: 99999999
              required:
                - kind
                - minCents
                - maxCents
              additionalProperties: false
            - type: object
              properties:
                kind:
                  type: string
                  enum:
                    - quote_only
              required:
                - kind
              additionalProperties: false
            - type: object
              properties:
                kind:
                  type: string
                  enum:
                    - unknown
                reason:
                  type: string
                  minLength: 1
                  maxLength: 2000
              required:
                - kind
                - reason
              additionalProperties: false
        serves:
          nullable: true
          oneOf:
            - type: object
              properties:
                kind:
                  type: string
                  enum:
                    - exact
                guests:
                  type: integer
                  minimum: 0
                  exclusiveMinimum: true
                  maximum: 10000
                sourceText:
                  type: string
                  minLength: 1
                  maxLength: 2000
              required:
                - kind
                - guests
                - sourceText
              additionalProperties: false
            - type: object
              properties:
                kind:
                  type: string
                  enum:
                    - range
                minGuests:
                  type: integer
                  minimum: 0
                  exclusiveMinimum: true
                  maximum: 10000
                maxGuests:
                  type: integer
                  minimum: 0
                  exclusiveMinimum: true
                  maximum: 10000
                sourceText:
                  type: string
                  minLength: 1
                  maxLength: 2000
              required:
                - kind
                - minGuests
                - maxGuests
                - sourceText
              additionalProperties: false
            - type: object
              properties:
                kind:
                  type: string
                  enum:
                    - up_to
                maxGuests:
                  type: integer
                  minimum: 0
                  exclusiveMinimum: true
                  maximum: 10000
                sourceText:
                  type: string
                  minLength: 1
                  maxLength: 2000
              required:
                - kind
                - maxGuests
                - sourceText
              additionalProperties: false
            - type: object
              properties:
                kind:
                  type: string
                  enum:
                    - approximate
                minGuests:
                  nullable: true
                  type: integer
                  minimum: 0
                  exclusiveMinimum: true
                  maximum: 10000
                maxGuests:
                  type: integer
                  minimum: 0
                  exclusiveMinimum: true
                  maximum: 10000
                sourceText:
                  type: string
                  minLength: 1
                  maxLength: 2000
              required:
                - kind
                - minGuests
                - maxGuests
                - sourceText
              additionalProperties: false
        planningYield:
          anyOf:
            - $ref: '#/components/schemas/CateringPlanningYield'
            - type: string
              nullable: true
              enum:
                - null
        charge:
          nullable: true
          type: object
          properties:
            chargeId:
              type: string
              minLength: 1
              maxLength: 200
            scope:
              type: string
              enum:
                - sold_unit
                - affected_person
                - order
            minimumSpendEligibility:
              type: string
              enum:
                - food_beverage
                - excluded
                - unreviewed
          required:
            - chargeId
            - scope
            - minimumSpendEligibility
          additionalProperties: false
        reviewFacts:
          maxItems: 50
          type: array
          items:
            type: object
            properties:
              code:
                type: string
                enum:
                  - conflicting_lead_time
                  - unsupported_minimum_spend_basis
                  - unresolved_choice_scope
                  - ambiguous_category_scope
                  - staff_pricing
              sourceText:
                type: string
                minLength: 1
                maxLength: 2000
              reason:
                type: string
                minLength: 1
                maxLength: 2000
            required:
              - code
              - sourceText
              - reason
            additionalProperties: false
        customerVisible:
          type: boolean
        selectionPath:
          minItems: 3
          maxItems: 41
          type: array
          items:
            type: string
            minLength: 1
            maxLength: 200
        maxQuantity:
          type: integer
          minimum: 0
          exclusiveMinimum: true
          maximum: 9007199254740991
        available:
          type: boolean
        foodFacts:
          nullable: true
          type: object
          properties:
            serving:
              type: object
              properties:
                label:
                  type: string
                  minLength: 1
                  maxLength: 255
                grams:
                  nullable: true
                  type: number
                  minimum: 0
                  exclusiveMinimum: true
              required:
                - label
                - grams
              additionalProperties: false
            nutrients:
              type: object
              properties:
                caloriesKcal:
                  nullable: true
                  type: number
                  minimum: 0
                proteinGrams:
                  nullable: true
                  type: number
                  minimum: 0
                carbohydrateGrams:
                  nullable: true
                  type: number
                  minimum: 0
                fatGrams:
                  nullable: true
                  type: number
                  minimum: 0
                fiberGrams:
                  nullable: true
                  type: number
                  minimum: 0
                sugarGrams:
                  nullable: true
                  type: number
                  minimum: 0
                saturatedFatGrams:
                  nullable: true
                  type: number
                  minimum: 0
                sodiumMilligrams:
                  nullable: true
                  type: number
                  minimum: 0
              required:
                - caloriesKcal
                - proteinGrams
                - carbohydrateGrams
                - fatGrams
                - fiberGrams
                - sugarGrams
                - saturatedFatGrams
                - sodiumMilligrams
              additionalProperties: false
            provenance:
              oneOf:
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - entered
                  required:
                    - kind
                  additionalProperties: false
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - provider
                    provider:
                      type: string
                      enum:
                        - square
                        - clover
                        - toast
                    revision:
                      type: string
                      minLength: 1
                      maxLength: 128
                  required:
                    - kind
                    - provider
                    - revision
                  additionalProperties: false
                - type: object
                  properties:
                    kind:
                      type: string
                      enum:
                        - recipe
                    servingsYield:
                      type: number
                      minimum: 0
                      exclusiveMinimum: true
                    components:
                      minItems: 1
                      maxItems: 100
                      type: array
                      items:
                        type: object
                        properties:
                          entityId:
                            type: string
                            format: uuid
                            pattern: >-
                              ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
                          fraction:
                            type: object
                            properties:
                              numerator:
                                type: number
                                minimum: 0
                              denominator:
                                type: number
                                minimum: 0
                                exclusiveMinimum: true
                            required:
                              - numerator
                              - denominator
                            additionalProperties: false
                        required:
                          - entityId
                          - fraction
                        additionalProperties: false
                  required:
                    - kind
                    - servingsYield
                    - components
                  additionalProperties: false
            includedComponentIds:
              maxItems: 1000
              type: array
              items:
                type: string
                format: uuid
                pattern: >-
                  ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
            suitability:
              type: object
              properties:
                vegetarian:
                  type: string
                  enum:
                    - suitable
                    - unsuitable
                    - unknown
                vegan:
                  type: string
                  enum:
                    - suitable
                    - unsuitable
                    - unknown
              required:
                - vegetarian
                - vegan
              additionalProperties: false
            ingredients:
              maxItems: 100
              type: array
              items:
                type: string
                minLength: 1
                maxLength: 255
            allergens:
              maxItems: 14
              type: array
              items:
                type: object
                properties:
                  allergenId:
                    type: string
                    enum:
                      - milk
                      - egg
                      - fish
                      - crustacean_shellfish
                      - tree_nuts
                      - peanut
                      - wheat
                      - soy
                      - sesame
                      - celery
                      - mustard
                      - lupin
                      - molluscs
                      - sulphites
                  status:
                    type: string
                    enum:
                      - contains
                      - may_contain
                      - absent
                      - unknown
                required:
                  - allergenId
                  - status
                additionalProperties: false
            crossContact:
              type: object
              properties:
                status:
                  type: string
                  enum:
                    - possible
                    - none_reported
                    - unknown
                allergenIds:
                  maxItems: 14
                  type: array
                  items:
                    type: string
                    enum:
                      - milk
                      - egg
                      - fish
                      - crustacean_shellfish
                      - tree_nuts
                      - peanut
                      - wheat
                      - soy
                      - sesame
                      - celery
                      - mustard
                      - lupin
                      - molluscs
                      - sulphites
                evidence:
                  nullable: true
                  type: string
                  minLength: 1
                  maxLength: 2000
              required:
                - status
                - allergenIds
                - evidence
              additionalProperties: false
          required:
            - serving
            - nutrients
            - provenance
            - includedComponentIds
            - suitability
            - ingredients
            - allergens
            - crossContact
          additionalProperties: false
        childGroups:
          type: array
          items:
            type: object
            properties:
              groupId:
                type: string
                minLength: 1
                maxLength: 200
              applyPerParentQuantity:
                type: boolean
              group:
                allOf:
                  - $ref: '#/components/schemas/PublishedCateringMenuGroup'
            required:
              - groupId
              - applyPerParentQuantity
              - group
            additionalProperties: false
      required:
        - optionId
        - name
        - priceSemantics
        - printedPrice
        - serves
        - planningYield
        - charge
        - reviewFacts
        - customerVisible
        - selectionPath
        - maxQuantity
        - available
        - foodFacts
        - childGroups
      additionalProperties: false

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.