Table QR Ordering
When a customer scans a table QR code, OpenApp resolves the QR code to a restaurant location and POS table identifier. OpenApp then creates or joins a table session where customers can add selected products.
OpenApp asks the POS for the current table or open-check state when the session starts, when state must be refreshed, and before payment-sensitive actions. The POS returns either the current table state or a rejection reason.
Message types:
| Message type | Direction | Purpose |
|---|---|---|
| TableOrderSnapshotRequested | OpenApp -> POS | Request the current POS table or open-check state. |
| TableOrderSnapshotResolutionResult | POS -> OpenApp | Return resolved table state or rejection details. |
| OrderItemsSubmittedToPos | OpenApp -> POS | Submit selected table-session products to the POS order. |
| OrderMutationResult | POS -> OpenApp | Confirm accepted products or reject products with business reasons. |
Typical rejection reasons include out of stock, insufficient stock, delisted item, closed order, and price changed. See Mutation rejection reasons.
POS Order Changes
The POS should notify OpenApp about relevant POS-side changes to a table order. This includes waiter-added items, kitchen cancellations, delivered items, discounts, removed lines, and order closure.
OpenApp updates the customer-facing session and derives customer notifications internally. The POS does not need to target OpenApp users directly.
| Message type | Direction | Purpose |
|---|---|---|
| TableOrderSnapshotChanged | POS -> OpenApp | Notify OpenApp about POS-side order state changes. |
See Change types for the set of POS-side change reasons.