Upsert menus
Menus
Upsert menus
Create or update composed menus from your POS or RMS in Fire spark.
PUT
Upsert menus
Creates or updates one or more menus for the authenticated merchant. Use this endpoint to sync composed catalog structure, schedules, and overrides from your POS or RMS into Fire spark.
Each array element is matched by
Read-only fields such as
id. When no menu exists with that id for the merchant, Fire spark creates it. When one already exists, Fire spark updates the writable fields below. Omitted fields keep their current values on update.
Requires an access token with the
menus:write scope. See
Authorize to obtain a token.Headers
| Header | Required | Description |
|---|---|---|
x-brand-id | No | Scope the upsert to menus for this brand. External brand identifier — alphanumeric characters, _, and - only. 1–64 characters. When omitted, all menus for the merchant are eligible. |
Request
Send a JSON array. Each element represents one menu. Includeid on every element — it is the stable external identifier from your POS or RMS and the upsert key.
Writable fields
| Field | Required on create | Description |
|---|---|---|
id | Yes | External menu identifier. Upsert key. Immutable after creation. |
store_id | Yes | External store identifier. Must match a store synced via Upsert stores. |
store_uid | Yes | Fire spark store identifier. |
channel_id | Yes | External channel identifier. Must match a channel synced via List channels. |
channel_uid | Yes | Fire spark channel identifier. |
fulfillment_id | Yes | External fulfillment identifier. Must match fulfillment synced via List fulfillment. |
fulfillment_uid | Yes | Fire spark fulfillment identifier. |
name | Yes | Display name. 1–100 characters. |
description | No | Optional description. Up to 500 characters. |
schedules | No | Weekly hour maps. null when there is no schedule restriction. |
products | No | Products in this composed menu. |
categories | No | Categories in this composed menu. |
modifier_groups | No | Modifier groups in this composed menu. |
cms_template_id | No | CMS template UUID. null to clear. |
overrides | No | Scheduled menu changes. |
status | No | ACTIVE or INACTIVE. Defaults to ACTIVE. |
uid, organization_id, merchant_id, and cms are ignored on write.
Response
Returns the upserted menu objects indata, matching the shape described in List menus.
Error responses
| Status | Description |
|---|---|
400 | Validation error — invalid field values or missing required fields. |
401 | Missing or invalid access token. |
403 | Token does not include the menus:write scope. |
409 | Referenced store, channel, or fulfillment does not exist for this merchant. |