Sync menu for an outlet

View as MarkdownOpen in Claude
Sync a full menu for a specific outlet. The outlet is identified by `{outletId}` (store UUID). The POS adapter resolves its own store identifier to the outlet UUID before calling this endpoint. The request body is a **JSON array** of menu objects (one outlet can have multiple menus, e.g. delivery menu + pickup menu). The endpoint processes synchronously within a single transaction: upserts menus, items, modifiers, bundle sections, operating hours, and store links. **Idempotent:** calling with the same payload again updates existing records.

Authentication

X-Api-Keystring
API Key authentication via header

Path parameters

outletIdstringRequired
Outlet UUID

Headers

X-Tenant-IDstringOptional
Tenant identifier
X-ProviderstringOptional

POS provider name (validated against tenant settings)

Request

This endpoint expects a list of objects.
menuIdstringRequired
menustringRequired
menuTypeintegerRequired
availabilitieslist of objectsRequired
categorieslist of objectsRequired
productsobjectRequired
modifierGroupsobjectRequired
modifiersobjectRequired
snoozedProductsobjectRequired

Response

OK
statusstring
summaryobject
menuslist of objects

Errors

400
Bad Request Error
403
Forbidden Error
404
Not Found Error