Lunchbox Stores API

Store configuration, hours, menus, and discounts.

OpenAPI Specification

lunchbox-stores-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Lunchbox Core Customer Stores API
  description: 'The Lunchbox 2.0 Core API is used for interfacing with Lunchbox ordering functions and building frontend interfaces that interact with the variety of Lunchbox integrations: POS, Last Mile, Loyalty, Marketing, Gift Card and more. It exposes customer (guest) account management, store and menu data, order creation and item management, discounts, payments, group ordering, and order webhooks. The API uses standard HTTP status codes and all schemas are in JSON format.'
  version: '2.0'
  contact:
    name: Lunchbox Support
    email: support@lunchbox.io
    url: https://docs.lunchbox.io/
  termsOfService: https://lunchbox.io/
servers:
- url: https://{chain_name}.lunchbox.io/api/v2
  description: Per-chain Lunchbox 2.0 Core API base URL
  variables:
    chain_name:
      default: chain
      description: The restaurant chain's Lunchbox subdomain
security:
- tokenAuth: []
tags:
- name: Stores
  description: Store configuration, hours, menus, and discounts.
paths:
  /stores/configuration:
    get:
      tags:
      - Stores
      summary: Lunchbox Get Chain Configuration
      operationId: getChainConfiguration
      responses:
        '200':
          description: Chain-level configuration.
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /stores:
    get:
      tags:
      - Stores
      summary: Lunchbox Get Store Info
      operationId: getStore
      parameters:
      - name: store_id
        in: query
        required: true
        schema:
          type: string
        example: '123456'
      responses:
        '200':
          description: Store information.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Store'
              examples:
                GetStore200Example:
                  summary: Default getStore 200 response
                  x-microcks-default: true
                  value: {}
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /stores/{store_id}/hours:
    parameters:
    - $ref: '#/components/parameters/StoreId'
    get:
      tags:
      - Stores
      summary: Lunchbox Get Store Hours
      operationId: getStoreHours
      responses:
        '200':
          description: Store operating hours.
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /stores/{store_id}/payment-methods:
    parameters:
    - $ref: '#/components/parameters/StoreId'
    get:
      tags:
      - Stores
      summary: Lunchbox Get Store Payment Methods
      operationId: getStorePaymentMethods
      parameters:
      - name: service_type_id
        in: query
        schema:
          type: integer
        example: 1234
      responses:
        '200':
          description: Payment methods supported by the store.
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /stores/{store_id}/delivery-info:
    parameters:
    - $ref: '#/components/parameters/StoreId'
    post:
      tags:
      - Stores
      summary: Lunchbox Get Store Delivery Info
      operationId: getStoreDeliveryInfo
      responses:
        '200':
          description: Delivery availability and quote for an address.
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /stores/{store_id}/menus:
    parameters:
    - $ref: '#/components/parameters/StoreId'
    get:
      tags:
      - Stores
      summary: Lunchbox Get Store Menus
      operationId: getStoreMenus
      parameters:
      - name: service_type_id
        in: query
        schema:
          type: integer
        example: 1234
      responses:
        '200':
          description: Menus for the store.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Menu'
              examples:
                GetStoreMenus200Example:
                  summary: Default getStoreMenus 200 response
                  x-microcks-default: true
                  value: {}
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /stores/{store_id}/menus/{menu_id}/categories:
    parameters:
    - $ref: '#/components/parameters/StoreId'
    - $ref: '#/components/parameters/MenuId'
    get:
      tags:
      - Stores
      summary: Lunchbox Get Menu Categories
      operationId: getMenuCategories
      responses:
        '200':
          description: Categories within the menu.
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /stores/{store_id}/menus/{menu_id}/categories/{category_id}/items:
    parameters:
    - $ref: '#/components/parameters/StoreId'
    - $ref: '#/components/parameters/MenuId'
    - $ref: '#/components/parameters/CategoryId'
    get:
      tags:
      - Stores
      summary: Lunchbox Get Category Items
      operationId: getCategoryItems
      responses:
        '200':
          description: Items within the category.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/MenuItem'
              examples:
                GetCategoryItems200Example:
                  summary: Default getCategoryItems 200 response
                  x-microcks-default: true
                  value: {}
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /stores/{store_id}/menus/{menu_id}/categories/{category_id}/items/{item_id}:
    parameters:
    - $ref: '#/components/parameters/StoreId'
    - $ref: '#/components/parameters/MenuId'
    - $ref: '#/components/parameters/CategoryId'
    - $ref: '#/components/parameters/ItemId'
    get:
      tags:
      - Stores
      summary: Lunchbox Get a Menu Item
      operationId: getMenuItem
      responses:
        '200':
          description: The requested menu item.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MenuItem'
              examples:
                GetMenuItem200Example:
                  summary: Default getMenuItem 200 response
                  x-microcks-default: true
                  value: {}
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /stores/{store_id}/menus/item-search:
    parameters:
    - $ref: '#/components/parameters/StoreId'
    get:
      tags:
      - Stores
      summary: Lunchbox Search Menu Items
      operationId: searchMenuItems
      parameters:
      - name: barcode
        in: query
        schema:
          type: string
        example: string
      responses:
        '200':
          description: Matching menu items.
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /stores/{store_id}/promos:
    parameters:
    - $ref: '#/components/parameters/StoreId'
    get:
      tags:
      - Stores
      summary: Lunchbox Get Store Promos
      operationId: getStorePromos
      parameters:
      - name: customer_id
        in: query
        schema:
          type: integer
        example: 1234
      responses:
        '200':
          description: Promotions for the store.
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /stores/{store_id}/menus/{menu_id}/categories/{category_id}/items/{item_id}/reviews:
    parameters:
    - $ref: '#/components/parameters/StoreId'
    - $ref: '#/components/parameters/MenuId'
    - $ref: '#/components/parameters/CategoryId'
    - $ref: '#/components/parameters/ItemId'
    get:
      tags:
      - Stores
      summary: Lunchbox Get Item Reviews
      operationId: getItemReviews
      responses:
        '200':
          description: Reviews for the menu item.
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
    post:
      tags:
      - Stores
      summary: Lunchbox Create an Item Review
      operationId: createItemReview
      responses:
        '200':
          description: Review created.
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /stores/{store_id}/available_memberships:
    parameters:
    - $ref: '#/components/parameters/StoreId'
    get:
      tags:
      - Stores
      summary: Lunchbox Get Available Memberships
      operationId: getAvailableMemberships
      responses:
        '200':
          description: Memberships available at the store.
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /stores/{store_id}/menu:
    parameters:
    - $ref: '#/components/parameters/StoreId'
    get:
      tags:
      - Stores
      summary: Lunchbox Get External Ordering Menu
      operationId: getExternalOrderingMenu
      responses:
        '200':
          description: Read-only menu for external ordering providers.
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /stores/{store_id}/orders:
    parameters:
    - $ref: '#/components/parameters/StoreId'
    post:
      tags:
      - Stores
      summary: Lunchbox Submit External Ordering Order
      operationId: submitExternalOrder
      responses:
        '200':
          description: Order submitted by an external ordering provider.
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /management/stores:
    get:
      tags:
      - Stores
      summary: Lunchbox Get Stores
      operationId: managementGetStores
      parameters:
      - name: limit
        in: query
        schema:
          type: integer
        example: 1
      - name: page
        in: query
        schema:
          type: integer
        example: 1
      - name: search
        in: query
        schema:
          type: string
        example: string
      - name: rest_id
        in: query
        schema:
          type: integer
        example: 1234
      - name: promise_date
        in: query
        schema:
          type: string
          format: date
        example: '1990-05-21'
      responses:
        '200':
          description: Paginated list of managed stores.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StorePage'
              examples:
                ManagementGetStores200Example:
                  summary: Default managementGetStores 200 response
                  x-microcks-default: true
                  value: {}
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /management/stores/{store_id}:
    parameters:
    - $ref: '#/components/parameters/StoreId'
    get:
      tags:
      - Stores
      summary: Lunchbox Get Store by ID
      operationId: managementGetStore
      responses:
        '200':
          description: Detailed store record.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedStore'
              examples:
                ManagementGetStore200Example:
                  summary: Default managementGetStore 200 response
                  x-microcks-default: true
                  value: {}
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /pos/stores:
    get:
      tags:
      - Stores
      summary: Lunchbox Get Stores
      operationId: posGetStores
      responses:
        '200':
          description: List of POS store identifiers.
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    pos_store_id:
                      type: string
              examples:
                PosGetStores200Example:
                  summary: Default posGetStores 200 response
                  x-microcks-default: true
                  value: {}
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /pos/stores/{store_id}:
    parameters:
    - name: store_id
      in: path
      required: true
      schema:
        type: string
    get:
      tags:
      - Stores
      summary: Lunchbox Get Store Details
      operationId: posGetStoreDetails
      responses:
        '200':
          description: Detailed POS store record.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PosStore'
              examples:
                PosGetStoreDetails200Example:
                  summary: Default posGetStoreDetails 200 response
                  x-microcks-default: true
                  value: {}
      callbacks:
        storeUpdated:
          '{$request.body#/lunchbox_webhook_url}':
            post:
              summary: Store Updated Webhook
              description: The POS provider triggers this webhook to notify Lunchbox that a store has been added or updated. Lunchbox then calls Get Store Details using the provided pos_store_id.
              requestBody:
                content:
                  application/json:
                    schema:
                      $ref: '#/components/schemas/StoreUpdateEvent'
              responses:
                '200':
                  description: Webhook acknowledged.
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
components:
  schemas:
    Store:
      type: object
      properties:
        store_id:
          type: string
          example: '123456'
        rest_id:
          type: integer
          example: 1234
        rest_name:
          type: string
          example: Sample
        address1:
          type: string
          example: 1216 Broadway
        city:
          type: string
          example: New York
        state_code:
          type: string
          example: NY
        zip_code:
          type: string
          example: '10001'
        timezone:
          type: string
          example: string
        latitude:
          type: number
          example: 40.74661
        longitude:
          type: number
          example: -73.98833
        enable_loyalty:
          type: boolean
          example: true
    PosLocation:
      type: object
      properties:
        hours:
          type: array
          items:
            $ref: '#/components/schemas/PosHours'
          example: []
    StorePage:
      type: object
      properties:
        current_page:
          type: integer
          example: 1
        next_page:
          type: integer
          nullable: true
          example: 1
        previous_page:
          type: integer
          nullable: true
          example: 1
        results:
          type: array
          items:
            $ref: '#/components/schemas/ManagedStoreSummary'
          example: []
    PosContact:
      type: object
      properties:
        active:
          type: boolean
          example: true
        address1:
          type: string
          example: 1216 Broadway
        address2:
          type: string
          nullable: true
          example: string
        address3:
          type: string
          nullable: true
          example: string
        city:
          type: string
          example: New York
        state:
          type: string
          example: NY
        postal_code:
          type: string
          example: '10001'
        country:
          type: string
          example: US
        phone:
          type: string
          example: '2125551411'
        latitude:
          type: number
          example: 40.74661
        longitude:
          type: number
          example: -73.98833
    Menu:
      type: object
      properties:
        menu_id:
          type: integer
          example: 1234
        name:
          type: string
          example: Sample
        service_type_id:
          type: integer
          example: 1234
    ManagedStore:
      type: object
      properties:
        enable_loyalty:
          type: boolean
          example: true
        driver_management:
          type: boolean
          example: true
        global_disable_group_order:
          type: boolean
          example: true
        restaurant_data:
          type: object
          additionalProperties: true
          example: {}
    ManagedStoreSummary:
      type: object
      properties:
        store_id:
          type: string
          example: '123456'
        rest_id:
          type: integer
          example: 1234
        rest_name:
          type: string
          example: Sample
        status:
          type: string
          example: string
        setup_type:
          type: string
          example: string
        address1:
          type: string
          example: 1216 Broadway
        city:
          type: string
          example: New York
        state_name:
          type: string
          example: NY
        state_code:
          type: string
          example: NY
        state_id:
          type: integer
          example: 1234
        zip_code:
          type: string
          example: '10001'
        timezone:
          type: string
          example: string
    MenuItem:
      type: object
      properties:
        item_id:
          type: integer
          example: 1234
        category_id:
          type: integer
          example: 1234
        menu_id:
          type: integer
          example: 1234
        name:
          type: string
          example: Sample
        description:
          type: string
          example: string
        price_cents:
          type: integer
          example: 100
        is_available:
          type: boolean
          example: true
    PosStore:
      type: object
      properties:
        pos_store_id:
          type: string
          example: '123456'
        store_id:
          type: string
          example: '123456'
        name:
          type: string
          example: Sample
        contact:
          $ref: '#/components/schemas/PosContact'
        location:
          $ref: '#/components/schemas/PosLocation'
    PosHours:
      type: object
      properties:
        iso_day_of_week:
          type: integer
          example: 1
        start_time:
          type: string
          example: string
        end_time:
          type: string
          example: string
    StoreUpdateEvent:
      type: object
      required:
      - event_type
      - pos_store_id
      properties:
        event_type:
          type: string
          enum:
          - store_update
          example: store_update
        pos_store_id:
          type: string
          example: '123456'
  parameters:
    MenuId:
      name: menu_id
      in: path
      required: true
      schema:
        type: integer
    CategoryId:
      name: category_id
      in: path
      required: true
      schema:
        type: integer
    StoreId:
      name: store_id
      in: path
      required: true
      schema:
        type: string
    ItemId:
      name: item_id
      in: path
      required: true
      schema:
        type: integer
  securitySchemes:
    tokenAuth:
      type: apiKey
      in: header
      name: Authorization
      description: 'Team token passed as: Authorization: Token <team_token>'