Leafly Menu API

The Menu API from Leafly — 2 operation(s) for menu.

OpenAPI Specification

leafly-menu-api-openapi.yml Raw ↑
openapi: 3.0.0
info:
  title: Leafly Integration Menu API
  version: '2.0'
  description: 'Near-real-time menu integration API for keeping a dispensary''s Leafly menu in sync with its system of record (POS). When menu items are edited or inventory levels change, the system of record makes HTTP requests to the menu integration URL with a JSON payload of menu items. Every call is scoped by a Leafly-issued menu_integration_key path parameter. V2 authenticates with OAuth2 client credentials.

    This OpenAPI document was authored by API Evangelist from Leafly''s public ReDoc documentation (https://docs.leafly.io/menu-integration-docs/v2.html) for cataloging purposes. It reflects the documented endpoints and the item schema; it is not the vendor''s own distributed specification.'
  contact:
    name: Leafly API Support
    email: api-support@leafly.com
    url: https://docs.leafly.io/menu-integration-docs/v2.html
servers:
- url: https://api.leafly.com/v2/menu_integration
  description: Production
- url: https://api-sandbox.leafly.io/v2/menu_integration
  description: Sandbox
security:
- OAuth2ClientCredentials: []
tags:
- name: Menu
paths:
  /{menu_integration_key}/menu:
    get:
      summary: Get Menu
      description: Retrieve the current menu Leafly holds for the integration.
      operationId: getMenu
      parameters:
      - $ref: '#/components/parameters/MenuIntegrationKey'
      responses:
        '200':
          description: The current menu.
      tags:
      - Menu
  /{menu_integration_key}/menu/items:
    post:
      summary: Synchronize Menu
      description: Full menu synchronization by id - submit the complete set of items. Full syncs are recommended once per day (or, in an alternate profile, several times per hour).
      operationId: syncMenuItems
      parameters:
      - $ref: '#/components/parameters/MenuIntegrationKey'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MenuItems'
      responses:
        '200':
          description: Menu accepted for synchronization.
      tags:
      - Menu
    put:
      summary: Upsert Menu Items
      description: Create or update individual items or batches of items.
      operationId: upsertMenuItems
      parameters:
      - $ref: '#/components/parameters/MenuIntegrationKey'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MenuItems'
      responses:
        '200':
          description: Items upserted.
      tags:
      - Menu
    delete:
      summary: Delete Menu Items
      description: Remove items from the Leafly menu.
      operationId: deleteMenuItems
      parameters:
      - $ref: '#/components/parameters/MenuIntegrationKey'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MenuItems'
      responses:
        '200':
          description: Items deleted.
      tags:
      - Menu
components:
  schemas:
    MenuItem:
      type: object
      description: A single menu item. Strain and cannabinoid values should be set to null when absent; variants carry the inventory and pricing.
      properties:
        id:
          type: string
          description: Stable identifier for the item in the system of record; must be used consistently.
        type:
          type: string
        name:
          type: string
        strain:
          type:
          - string
          - 'null'
        brand:
          type: string
        description:
          type: string
        availableForPickup:
          type: boolean
        imageUrl:
          type:
          - string
          - 'null'
    MenuItems:
      type: object
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/MenuItem'
  parameters:
    MenuIntegrationKey:
      name: menu_integration_key
      in: path
      required: true
      description: Leafly-issued key that scopes the request to a single dispensary integration.
      schema:
        type: string
  securitySchemes:
    OAuth2ClientCredentials:
      type: oauth2
      flows:
        clientCredentials:
          tokenUrl: https://api.leafly.com/oauth/token
          scopes: {}