Skip to main content

Table

Pay at Table integrations are currently standalone from Pay at Counter and Online payments. This is because the current version of the Tables API uses an asynchronous WebSocket protocol for its messaging.

The Table object is used to represent physical tables in your EPOS system.

info

Multiple sessions can be associated with a single table. A session can only belong to a single table, and payments are associated with the session - specifically with the sessionId. A restaurant with long tables and bench-seating may have several sessions attached to a single table.

Operations

Because Tables is a WebSockets Async API, each of these table operations has both a SUB (subscribe) as well as a PUB (publish) message. The subscribe messages are the requests, while the publish messages are the responses.

There are three table operations included in the Tables API:

  • GetTable retrieves detailed information about a specific table.
  • ListTables provides a list of tables as specified by the parameters. If no parameters are set, a listTablesRequest will return a list of all tables.

Name

The tableName is a human-readable, unique identifier, stored on the EPOS level.

It is essential that the table name does not contain the sequence of characters: ' - ' (whitespace, hyphen, whitespace). This restriction ensures compatibility with Dojo's card terminals, which use the format of "${Table.name} - ${Session.name}" to represent any session with a table.

info

Ensure that when you assign a Session to a Table that the Table.name matches the Session.tableName.

Covers

The EPOS should accurately report the maximum amount of covers available on a table, so that there is always a full picture of maximum capacity.

Status

The status of a table allows consumers of the Tables API to understand the currently available cover count at any given time:

  • TABLE_STATUS_NOT_IN_USE - The table is currently not in use, such as when a restaurant's terrace space is closed for the winter.
  • TABLE_STATUS_AVAILABLE - The table is prepared and available for new customers.
  • TABLE_STATUS_OCCUPIED - The table is currently occupied by a customer or group of customers who are dining at it.
  • TABLE_STATUS_PENDING_AVAILABLE - The table is unoccupied but not yet fully ready for customers to be seated, potentially requiring cleaning or other preparations.