Skip to content
innovorder
⌘K

Service operations

Rooms

Rooms represent physical dining areas within a table layout. Each room can contain multiple tables arranged on a 2D canvas. Rooms are used by the POS and reception interfaces to visually manage seating and table assignments.

Access flag required: Creating, updating, and deleting rooms requires the CAN_EDIT_TABLE_LAYOUT access flag in addition to role-based authorization.
Polling on updatedAt: creating, updating or deleting a room now moves the updatedAt of the table layout that contains it, and updating a room also moves the room's own updatedAt, even when only its tables changed. Tables are stored as their own records, so both timestamps previously stayed frozen when a table was moved, added or removed, and an integration diffing them saw no change. An updatedAt that moved forward is now a reliable signal to re-read the floor plan.

GET/rooms/{roomUuid}Get Room

Retrieve a specific room by its UUID, including its list of tables with their positions and dimensions.

Parameters

NameTypeRequiredDescription
roomUuidstring (UUID)YesThe UUID of the room.

Response

json
{
  "status": 200,
  "code": "room_succeed",
  "message": "Room was successfully found.",
  "data": {
    "roomId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "name": "Main Dining Hall",
    "tableLayoutId": "f0e1d2c3-b4a5-6789-0fed-cba987654321",
    "position": 0,
    "tables": [
      {
        "tableId": "11112222-3333-4444-5555-666677778888",
        "name": "T1",
        "roomId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
        "positionX": 100,
        "positionY": 200,
        "height": 80,
        "width": 80
      },
      {
        "tableId": "99998888-7777-6666-5555-444433332222",
        "name": "T2",
        "roomId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
        "positionX": 300,
        "positionY": 200,
        "height": 80,
        "width": 120
      }
    ]
  }
}
Response Properties

Every field in the example is listed below. Explicit requiredness is shown when the endpoint contract defines it.

PropertyTypeExampleDescription
statusinteger200HTTP status code returned by the API.
codestring"room_succeed"Machine-readable application code for the result.
messagestring"Room was successfully found."Human-readable result message. Do not use this value for program logic.
dataobject{…}Endpoint-specific response payload.
data.roomIdstring"a1b2c3d4-e5f6-7890-abcd-ef1234567890"Identifier of the associated room.
data.namestring"Main Dining Hall"The name value.
data.tableLayoutIdstring"f0e1d2c3-b4a5-6789-0fed-cba987654321"Identifier of the associated table layout.
data.positioninteger0The position value.
data.tablesarray[…]List of tables entries.
data.tables[]object{…}Object containing tables fields.
data.tables[].tableIdstring"11112222-3333-4444-5555-666677778888"Identifier of the associated table.
data.tables[].namestring"T1"The name value.
data.tables[].roomIdstring"a1b2c3d4-e5f6-7890-abcd-ef1234567890"Identifier of the associated room.
data.tables[].positionXinteger100The position x value.
data.tables[].positionYinteger200The position y value.
data.tables[].heightinteger80The height value.
data.tables[].widthinteger80The width value.

POST/roomsCreate Room

Create a new room within a table layout, optionally including an initial set of tables. Each table requires a name and 2D positioning (positionX, positionY, height, width).

Request Body

json
{
  "name": "Terrace",
  "tableLayoutId": "f0e1d2c3-b4a5-6789-0fed-cba987654321",
  "position": 1,
  "tables": [
    {
      "name": "T10",
      "positionX": 50,
      "positionY": 50,
      "height": 80,
      "width": 80
    },
    {
      "name": "T11",
      "positionX": 200,
      "positionY": 50,
      "height": 80,
      "width": 80
    }
  ]
}
Request Body Properties

Every field in the example is listed below. Explicit requiredness is shown when the endpoint contract defines it.

PropertyTypeExampleDescription
namestring"Terrace"The name value.
tableLayoutIdstring"f0e1d2c3-b4a5-6789-0fed-cba987654321"Identifier of the associated table layout.
positioninteger1The position value.
tablesarray[…]List of tables entries.
tables[]object{…}Object containing tables fields.
tables[].namestring"T10"The name value.
tables[].positionXinteger50The position x value.
tables[].positionYinteger50The position y value.
tables[].heightinteger80The height value.
tables[].widthinteger80The width value.

Response

json
{
  "status": 200,
  "code": "room_created",
  "message": "Room was successfully created.",
  "data": {
    "roomId": "dd445566-7788-99aa-bbcc-ddeeff001122",
    "name": "Terrace",
    "tableLayoutId": "f0e1d2c3-b4a5-6789-0fed-cba987654321",
    "position": 1,
    "tables": [
      {
        "tableId": "aabb1122-3344-5566-7788-99aabbccddee",
        "name": "T10",
        "positionX": 50,
        "positionY": 50,
        "height": 80,
        "width": 80
      },
      {
        "tableId": "ffeeddcc-bbaa-9988-7766-554433221100",
        "name": "T11",
        "positionX": 200,
        "positionY": 50,
        "height": 80,
        "width": 80
      }
    ]
  }
}
Response Properties

Every field in the example is listed below. Explicit requiredness is shown when the endpoint contract defines it.

PropertyTypeExampleDescription
statusinteger200HTTP status code returned by the API.
codestring"room_created"Machine-readable application code for the result.
messagestring"Room was successfully created."Human-readable result message. Do not use this value for program logic.
dataobject{…}Endpoint-specific response payload.
data.roomIdstring"dd445566-7788-99aa-bbcc-ddeeff001122"Identifier of the associated room.
data.namestring"Terrace"The name value.
data.tableLayoutIdstring"f0e1d2c3-b4a5-6789-0fed-cba987654321"Identifier of the associated table layout.
data.positioninteger1The position value.
data.tablesarray[…]List of tables entries.
data.tables[]object{…}Object containing tables fields.
data.tables[].tableIdstring"aabb1122-3344-5566-7788-99aabbccddee"Identifier of the associated table.
data.tables[].namestring"T10"The name value.
data.tables[].positionXinteger50The position x value.
data.tables[].positionYinteger50The position y value.
data.tables[].heightinteger80The height value.
data.tables[].widthinteger80The width value.

PUT/rooms/{roomUuid}Update Room

Update a room and its tables. Provide the full list of tables in the room; tables not included will be removed, new entries will be created, and existing ones will be updated.

Parameters

NameTypeRequiredDescription
roomUuidstring (UUID)YesThe UUID of the room to update.

Request Body

json
{
  "name": "Main Dining Hall (Updated)",
  "tables": [
    {
      "tableId": "11112222-3333-4444-5555-666677778888",
      "name": "T1",
      "roomId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
      "positionX": 120,
      "positionY": 220,
      "height": 80,
      "width": 80
    },
    {
      "name": "T3",
      "roomId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
      "positionX": 500,
      "positionY": 200,
      "height": 100,
      "width": 100
    }
  ]
}
Request Body Properties

Every field in the example is listed below. Explicit requiredness is shown when the endpoint contract defines it.

PropertyTypeExampleDescription
namestring"Main Dining Hall (Updated)"The name value.
tablesarray[…]List of tables entries.
tables[]object{…}Object containing tables fields.
tables[].tableIdstring"11112222-3333-4444-5555-666677778888"Identifier of the associated table.
tables[].namestring"T1"The name value.
tables[].roomIdstring"a1b2c3d4-e5f6-7890-abcd-ef1234567890"Identifier of the associated room.
tables[].positionXinteger120The position x value.
tables[].positionYinteger220The position y value.
tables[].heightinteger80The height value.
tables[].widthinteger80The width value.

Response

json
{
  "status": 200,
  "code": "room_updated",
  "message": "Room was successfully updated.",
  "data": {
    "roomId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "name": "Main Dining Hall (Updated)",
    "tables": [
      {
        "tableId": "11112222-3333-4444-5555-666677778888",
        "name": "T1",
        "positionX": 120,
        "positionY": 220,
        "height": 80,
        "width": 80
      },
      {
        "tableId": "cc112233-4455-6677-8899-aabbccddeeff",
        "name": "T3",
        "positionX": 500,
        "positionY": 200,
        "height": 100,
        "width": 100
      }
    ]
  }
}
Response Properties

Every field in the example is listed below. Explicit requiredness is shown when the endpoint contract defines it.

PropertyTypeExampleDescription
statusinteger200HTTP status code returned by the API.
codestring"room_updated"Machine-readable application code for the result.
messagestring"Room was successfully updated."Human-readable result message. Do not use this value for program logic.
dataobject{…}Endpoint-specific response payload.
data.roomIdstring"a1b2c3d4-e5f6-7890-abcd-ef1234567890"Identifier of the associated room.
data.namestring"Main Dining Hall (Updated)"The name value.
data.tablesarray[…]List of tables entries.
data.tables[]object{…}Object containing tables fields.
data.tables[].tableIdstring"11112222-3333-4444-5555-666677778888"Identifier of the associated table.
data.tables[].namestring"T1"The name value.
data.tables[].positionXinteger120The position x value.
data.tables[].positionYinteger220The position y value.
data.tables[].heightinteger80The height value.
data.tables[].widthinteger80The width value.

DELETE/rooms/{roomUuid}Delete Room

Delete a room and all its associated tables. This action is irreversible.

Parameters

NameTypeRequiredDescription
roomUuidstring (UUID)YesThe UUID of the room to delete.

Response

json
{
  "status": 200,
  "code": "room_deleted",
  "message": "Room was successfully deleted.",
  "data": {}
}
Response Properties

Every field in the example is listed below. Explicit requiredness is shown when the endpoint contract defines it.

PropertyTypeExampleDescription
statusinteger200HTTP status code returned by the API.
codestring"room_deleted"Machine-readable application code for the result.
messagestring"Room was successfully deleted."Human-readable result message. Do not use this value for program logic.
dataobject{…}Endpoint-specific response payload.