Skip to content

Item List Fetch Process

The item list editor can request the live item list from a restaurant cash register. This is an asynchronous process: the browser asks the backend to create a fetch command, the restaurant integration processes that command, and the backend merges the response into the selected configuration.

::: note Where to use this: Admin → Item list editor → Fetch configuration. :::

Process

  1. Select the restaurant location in the Fetch configuration component.
  2. Click Fetch configuration.
  3. The backend creates a FETCH_REMOTE_MENU command for that location and the current configuration.
  4. The restaurant integration receives the command as an order-like message with exportMainData set to true.
  5. The restaurant integration fetches master data from the cash register.
  6. The integration posts the fetched JSON back to the backend command response endpoint.
  7. The backend converts the response to reference data, merges the items into the selected configuration, and notifies open sessions that the configuration changed.

Command Sent to the Restaurant Integration

The fetch command is exposed to the integration as an external order with exportMainData set to true.

json
{
  "number": 12345,
  "orderTime": "12:00:00",
  "state": "PLACED",
  "exportMainData": true
}

Expected Response Format

The integration should post a master data JSON response with items, paymentTypes, and optionally users and timestamp.

json
{
  "items": [
    {
      "itemNumber": "101",
      "name": "Tomato Soup",
      "numberOfItems": 1,
      "price": 6.5,
      "station": "KITCHEN",
      "displayName": "Tomato soup with basil",
      "itemGroup": 10
    }
  ],
  "paymentTypes": [
    {
      "id": "1",
      "name": "Cash"
    }
  ],
  "users": [
    {
      "number": "1",
      "name": "Service",
      "password": "1234"
    }
  ],
  "timestamp": "2026-05-25T12:00:00"
}

Response Fields

FieldRequiredDescription
itemsYesArray of cash register items.
items[].itemNumberYesCash register item number. This becomes the internal item number.
items[].nameYesItem name.
items[].displayNameNoDisplay text from the cash register. This becomes the internal item description.
items[].priceNoDecimal item price, using a dot as the decimal separator.
items[].numberOfItemsNoQuantity factor for the item. Defaults to 1 when omitted.
items[].stationNoCash register station. This becomes the internal printer group.
items[].itemGroupNoAccepted by the response parser, but not currently mapped to the internal item.
paymentTypesYesArray of payment type objects.
paymentTypes[].idYesCash register payment type identifier.
paymentTypes[].nameYesPayment type name. The backend stores payment types as name to id.
usersNoAccepted by the response parser. The current item merge uses item and payment type data.
timestampNoTimestamp from the integration.

WARNING

Important: The fetched data is merged into the selected configuration. Existing items with matching numbers are updated, new item numbers are added, and payment types are updated from the response.