Skip to main content

What Mozrest Provides

Mozrest provides two things for the POS integration:

  1. A REST endpoint to query POS table data — uses the standard Partner API (api-sandbox.mozrest.com / api.mozrest.com).
  2. 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
}
FieldTypeDescription
idStringTable identifier in the POS
nameStringTable display name
areaString / nullArea 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

EnvironmentURL
Sandboxhttps://webhooks.pos.sandbox.mozrest.com/rms
Productionhttps://webhooks.pos.mozrest.com/rms
  • Method: POST
  • Authentication: Bearer token

When to Send

ScenarioWhat to do
Guest is seatedSend 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

FieldTypeDescription
bookingIdStringYour reservation identifier (RMS-side ID, not a Mozrest ID)
venueIdStringYour venue identifier (RMS-side ID)
partySizeIntegerNumber of guests
statusStringReservation status (e.g. seated)
tables[]ArrayRMS table IDs assigned to the reservation
dateIntegerReservation time (UTC Unix)
prepaymentNumberPrepaid amount, if any
contactObjectGuest contact details
notesStringSpecial requests or dietary notes
items[]ArrayPre-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)

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" }
]
}
FieldTypeRequiredDescription
items[].skuStringYesProduct 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[].quantityIntegerYesStrictly positive integer.
items[].notesStringNoFree-text guest note (e.g. allergens, "no ice").

Behaviour

  • Omit the items field 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.