Skip to main content
PUT
Import the menu
Build the menu in your POS and send it to XFaster. You don’t map items by hand: every section, add-on and item is matched by your own external_id.

How lines are matched

  • A line that is already up to date counts as unchanged and changes nothing.
  • A new item follows available (on when you leave it out).
  • A plain text name is the Hebrew name. Send {"he", "ar", "en"} for more languages. Empty texts never erase a translation.
  • option_groups and addon_external_ids replace the item’s groups and add-ons. Option groups are for restaurants only.
  • Deals are never changed from the POS. They follow the items inside them.

Full or partial

  • mode: "partial" (default) changes only the lines you send.
  • mode: "full" also switches off your mapped items, add-ons and sections that are missing from the call. Nothing is deleted, and XFaster items you never mapped are left alone. A full menu with no items is refused.
  • Up to 1000 lines per list in one call. A bigger menu goes in parts with mode: "partial".
Send "dry_run": true first. You get the same counts and errors, and nothing changes.

Errors

The answer always lists the lines that were skipped in errors, with a code and a message. The other lines were saved. Fix the line and send it again: re-sending the same menu is safe.
If the store already has a menu on XFaster, link it first (Get the menu and Map your codes). Otherwise the import creates new items next to the old ones.

Authorizations

Authorization
string
header
required

The store's API key (xfp_test_… on the sandbox, xfp_live_… on live). XFaster creates it and shows it once. An integrator key (one key for a POS company) also sends X-XFaster-Store.

Headers

Idempotency-Key
string

Any unique string. Repeating a request with the same key within 24 hours returns the first answer instead of acting twice.

Example:

"5f0c3d1e-8b6a-4e1f-9c2d-7a1b0e4f6d21"

Body

application/json
mode
enum<string>
default:partial

partial: only the lines you send. full: also switches OFF your mapped items, add-ons and sections that are missing (never deletes; XFaster items you never mapped are left alone).

Available options:
partial,
full
dry_run
boolean
default:false

Check everything and return the counts, change nothing.

categories
object[]
Maximum array length: 1000
addons
object[]
Maximum array length: 1000
items
object[]
Maximum array length: 1000

Response

What was done (or, with dry_run, what would be done)

dry_run
boolean
created
object
updated
object
switched_off
object
unchanged
integer

Lines that were already up to date

errors
object[]

Lines that were skipped. The rest was saved.