+22
@@ -55,6 +55,20 @@ Sync semantics:
|
||||
The response lists `acknowledgedEventIds` (stored, including events already stored by an earlier sync)
|
||||
and `rejectedEvents` (`[{ id, reason }]`, invalid and never stored). The terminal removes both from its
|
||||
outbox. An invalid event never fails the sync. At most 1000 events per sync.
|
||||
- `products` (optional) is the terminal's **complete** product catalog:
|
||||
`[{ id, name, category?, priceInCents, stock }]`, where `stock` is an integer (may be negative) or `null` when
|
||||
the terminal doesn't track stock for that product. Products left out are removed from the dashboard. When the
|
||||
field is omitted (older app versions) the stored products are left alone. An invalid product is skipped and
|
||||
logged, never failing the sync. At most 2000 products.
|
||||
- `stockAdjustments` in the response lists **every** pending stock change requested from the dashboard
|
||||
for the venue, oldest first: `[{ id, productId, type, quantity, note, requestedBy, createdAt }]`.
|
||||
`type: "add"` changes the stock by `quantity` (negative takes stock out); `type: "set"` makes the stock
|
||||
`quantity` (a count, ≥ 0, and starts tracking an untracked product). They are re-sent on every sync until the
|
||||
terminal reports an outcome, so the terminal must apply each id only once.
|
||||
- `stockAdjustmentResults` (optional) reports outcomes: `[{ id, status: "applied" | "rejected", stockAfter?, reason? }]`
|
||||
(`stockAfter` is required for `applied`). The response lists `acknowledgedStockAdjustmentResultIds` and
|
||||
`rejectedStockAdjustmentResults` (`[{ id, reason }]`); the terminal drops both from its outbox. The terminal's
|
||||
outcome is recorded even if the adjustment was cancelled on the dashboard in the meantime.
|
||||
|
||||
### Tabs
|
||||
`GET /venues/:venueId/tabs` - List open tabs
|
||||
@@ -75,6 +89,14 @@ Names match case-insensitively and keep their existing spelling; `replace` also
|
||||
`GET /venues/:venueId/reminders?customerName=` - Reminder history, optionally for one customer
|
||||
`POST /venues/:venueId/reminders/test/:plannedTabId` - Send a test email (admin)
|
||||
|
||||
### Stock
|
||||
`GET /venues/:venueId/stock` - The terminal's products with stock, low stock level and pending adjustments
|
||||
`GET /venues/:venueId/stock/adjustments?productId=&limit=&offset=` - Stock adjustment history, newest first
|
||||
`POST /venues/:venueId/stock/adjustments` - Request stock changes (admins and viewers): `{ adjustments: [{ productId, type: 'add' | 'set', quantity, note? }] }`.
|
||||
`add` takes a non-zero quantity (negative for breakage) and needs a tracked product; `set` takes 0 or more.
|
||||
`POST /venues/:venueId/stock/adjustments/:id/cancel` - Cancel an adjustment the terminal hasn't received yet (admins and viewers)
|
||||
`PUT /venues/:venueId/stock/products/:productId` - Set `{ lowStockThreshold: number | null }` (admin, dashboard only)
|
||||
|
||||
### Commands
|
||||
`POST /venues/:venueId/commands` - Create a command
|
||||
`GET /venues/:venueId/commands` - List command history
|
||||
|
||||
Reference in New Issue
Block a user