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: {}