Skip to main content

Endpoints the POS Must Expose

These endpoints must be implemented by the POS system so Mozrest can retrieve table data and manage orders.

Get Tables

Retrieve the list of tables for a venue. Mozrest uses this to match POS tables with RMS reservations.

GET /venue/{venueId}/tables
Authorization: Bearer {api_key}

Response

[
{ "id": "T12", "name": "Table 12" },
{ "id": "T15", "name": "Table 15" }
]
FieldTypeDescription
idStringUnique table identifier in the POS
nameStringHuman-readable table label

Create Order

When a guest is seated, Mozrest creates an order in the POS. Orders are only opened when the guest has arrived — the date field represents the seating/arrival time.

POST /venue/{venueId}/orders
Authorization: Bearer {api_key}
Content-Type: application/json

Payload

FieldTypeRequiredDescription
idStringNoMozrest internal order ID. Can be stored for reconciliation purposes.
tablesArrayYesPOS table IDs (e.g. ["T12"] or ["T12","T13"] for merged tables)
guestNameStringNoGuest name
guestEmailStringNoGuest email
guestTelephoneStringNoGuest phone
partySizeIntegerNoParty size
prepaymentNumberNoPrepaid amount
dateStringNoSeating time (Y-m-d H:i:s). If omitted, treat as current time.

tableId (string) is deprecated — use tables instead.

Example

{
"id": "fd30c18b-71fb-43f7-b895-34ab0b9ceced",
"tables": ["T12"],
"guestName": "John Doe",
"guestEmail": "john.doe@mail.com",
"guestTelephone": "34646883377",
"partySize": 4,
"prepayment": 50.00,
"date": "2025-02-15 14:30:00"
}

Response

{
"id": "98765",
"checkNumber": "232323233"
}

List Orders

Return orders for a venue, optionally filtered by status and time window.

GET /venue/{venueId}/orders
Authorization: Bearer {api_key}

Query parameters

ParameterTypeDescription
statusStringFilter: open or closed. If omitted, return all.
fromStringStart of time window (ISO 8601, e.g. 2025-02-01T00:00:00Z)
untilStringEnd of time window

Response

Each order must include: id, status, tables, partySize, guestName, checks (array), and timestamps (createdAt, updatedAt, closedAt).

Each check must include: checkNumber, status, totalAmount, tax, tip, discount, paymentMethod, and items.

[
{
"id": "62ebe5e7210c83a0f3adf9d1",
"status": "open",
"tables": ["T12"],
"partySize": 2,
"guestName": "John Doe",
"createdAt": "2025-02-15T14:30:00Z",
"updatedAt": "2025-02-15T15:00:00Z",
"closedAt": null,
"checks": [
{
"checkNumber": "98765",
"status": "open",
"totalAmount": 150.00,
"tax": 12.00,
"tip": 20.00,
"discount": 10.00,
"paymentMethod": "card",
"items": [
{ "id": 1, "name": "Steak", "price": 40.00, "quantity": 2 },
{ "id": 2, "name": "Wine", "price": 70.00, "quantity": 1 }
]
}
]
}
]

Get Order by ID

Retrieve a single order with all its checks.

GET /venue/{venueId}/orders/{orderId}
Authorization: Bearer {api_key}

The response uses the same structure as a single item in the List Orders response.


Closed Orders Retention

Closed orders must remain accessible via GET for 45 days after closure. This allows for reconciliation and billing cycle alignment. After 45 days, you may archive or remove them per your own policy.