What Mozrest Provides
Mozrest provides two things for the POS integration:
- A REST endpoint to query POS table data — uses the standard Partner API (
api-sandbox.mozrest.com/api.mozrest.com). - Webhook endpoints where your RMS sends reservation events — Mozrest receives them and creates/updates orders in the POS.
REST API: Get POS Tables
Retrieve the list of tables configured in the POS for a given venue. Use this for table matching on your side.
This is a standard Partner API call.
- Method:
GET - Base URL:
https://api-sandbox.mozrest.com(Sandbox) /https://api.mozrest.com(Production) - Path:
/venues/{venueId}/pos-tables - Authentication: Bearer token (Partner API key)
Response
{
"venueId": "abc-123",
"tables": [
{ "id": "T12", "name": "Table 12", "area": "Terrace" },
{ "id": "T15", "name": "Table 15", "area": null }
],
"count": 2
}
| Field | Type | Description |
|---|---|---|
id | String | Table identifier in the POS |
name | String | Table display name |
area | String / null | Area the table belongs to, if available |
Webhooks: Sending Reservation Events to the POS
When a reservation changes state (guest seated, table moved, party size updated), your RMS sends a webhook to Mozrest. Mozrest then creates or updates the corresponding order in the POS.
Webhook Endpoints
| Environment | URL |
|---|---|
| Sandbox | https://webhooks.pos.sandbox.mozrest.com/rms |
| Production | https://webhooks.pos.mozrest.com/rms |
- Method:
POST - Authentication: Bearer token
When to Send
| Scenario | What to do |
|---|---|
| Guest is seated | Send the reservation payload → Mozrest opens an order in the POS (or links to an existing open order on that table) |
| Reservation changes (table move, party size, etc.) | Re-send the payload with the same bookingId and updated fields → Mozrest forwards changes to the POS |
Payload
{
"bookingId": "60e890aca5f07b6ee5b950b1",
"venueId": "60e890aca5f07b6ee5b950b1",
"partySize": 4,
"status": "seated",
"tables": ["28c3ce8b-8c10-4a64-8099-f0dffcc549a8"],
"date": 1639578600,
"prepayment": 50.00,
"contact": {
"firstname": "John",
"lastname": "Doe",
"email": "john.doe@mail.com",
"telephone": "34646223399",
"locale": "en"
},
"notes": "I am allergic to peanuts"
}
Field Reference
| Field | Type | Description |
|---|---|---|
bookingId | String | Your reservation identifier (RMS-side ID, not a Mozrest ID) |
venueId | String | Your venue identifier (RMS-side ID) |
partySize | Integer | Number of guests |
status | String | Reservation status (e.g. seated) |
tables[] | Array | RMS table IDs assigned to the reservation |
date | Integer | Reservation time (UTC Unix) |
prepayment | Number | Prepaid amount, if any |
contact | Object | Guest contact details |
notes | String | Special requests or dietary notes |
items[] | Array | Pre-ordered items selected through the RMS at booking time. See Pre-ordered items (beta) below. Omit the field entirely when there are no pre-orders. |
For updates, send the full reservation state with updated values using the same bookingId. Mozrest determines what changed and forwards it to the POS.
Pre-ordered items (beta)
Pre-ordered items are currently in beta. The contract below is stable for partners to start adopting, but rollout to all POS partners is in progress — Mozrest will only forward items to a POS that has confirmed support. Coordinate with Mozrest before relying on this in production. The shape, status, and any error semantics may evolve while the feature stabilises.
When the guest pre-selects menu items as part of the reservation (e.g. fixed menu, pre-paid courses, drinks pack), include them on the webhook so Mozrest can carry them through to the POS. Each item is { sku, quantity, notes? }:
{
"bookingId": "60e890aca5f07b6ee5b950b1",
"venueId": "60e890aca5f07b6ee5b950b1",
"partySize": 2,
"status": "seated",
"tables": ["28c3ce8b-8c10-4a64-8099-f0dffcc549a8"],
"date": 1639578600,
"contact": {
"firstname": "John",
"lastname": "Doe",
"email": "john.doe@mail.com",
"telephone": "34646223399",
"locale": "en"
},
"items": [
{ "sku": "PIZZA-001", "quantity": 2 },
{ "sku": "WINE-012", "quantity": 1, "notes": "no ice" }
]
}
| Field | Type | Required | Description |
|---|---|---|---|
items[].sku | String | Yes | Product code as known to the venue's POS. Must match a SKU configured for the venue in the POS — Mozrest does not validate the SKU; the POS does. |
items[].quantity | Integer | Yes | Strictly positive integer. |
items[].notes | String | No | Free-text guest note (e.g. allergens, "no ice"). |
Behaviour
- Omit the
itemsfield entirely when no pre-order exists. Sending an empty array is treated the same as omitting it. - Mozrest forwards items to the POS at order creation. If the POS reports an unknown SKU (
422 Unknown SKU(s)), Mozrest surfaces the error back through the standard POS monitoring trace so you can react. - For updates after seating, resend the full set of items alongside the rest of the payload using the same
bookingId. Mozrest treats the new array as the desired state. Omitting the field on an update leaves the previously-stored items untouched.