Restaurant table management
List staff for a location
List retailer_users with access to a location. Powers the POS table-map Staff sidebar. Returns a minimal projection (id, name, color).
Permissions: 🔵 tables.read
path Parameters
locationIdLocation ID
List staff for a location › Responses
Default Response
statusUpdate a staff member's color
Set or clear the hex color used on the POS table-map staff badge. The target retailer_user must have access to the caller's active location.
Permissions: 🟠 tables.update
path Parameters
retailerUserIdRetailer user ID
Update a staff member's color › Request Body
color^#[0-9a-fA-F]{6}$ · requiredHex color (#RRGGBB) or null to clear.
Update a staff member's color › Responses
Default Response
statusList tables
List tables with optional filtering
Permissions: 🔵 tables.read
query Parameters
locationIdFilter by location ID
statusFilter by status
tableGroupIdFilter by table group ID
searchSearch by name or description
pagePage number
limitItems per page
List tables › Responses
Default Response
statusCreate table
Create a new table
Permissions: 🟢 tables.create
Create table › Request Body
nameTable name/number
locationIdLocation ID
descriptionTable description
tableGroupIdTable group ID
costCenterIdCost center ID
Custom context parameters
Create table › Responses
Default Response
statusUpdate table
Update an existing table
Permissions: 🟠 tables.update
path Parameters
idTable UUID
Update table › Request Body
namedescriptiontableGroupIdcostCenterIdCost center ID
statusisBookableminCapacitymaxCapacityseatingDurationMinutesnewTabPerGuestForce a new tab on every scan (theme parks, festivals, shared kiosks).
requireGuestCountPrompt POS staff for guest count when seating an empty table.
assignedRetailerUserIdServer (retailer_user) to assign to this table. Pass null to clear. Must reference an active retailer_user with access to this location.
Update table › Responses
Default Response
statusBulk update tables
Update multiple tables in a single request. Apply the same changes to all specified tables.
Permissions: 🟠 tables.update
Bulk update tables › Request Body
tableIdsArray of table UUIDs to update
tableGroupIdTable group ID to assign (null to remove from group)
Context parameters to merge into existing params
contextParamsToDeleteContext parameter keys to delete
statusStatus to set on all tables
Bulk update tables › Responses
Tables updated successfully
statusUpdated tables
Webhook: Table state changed
Generic catch-all fired when anything connected to a table changes (tab opened/closed, balance changes, items added). reason describes what changed; additional fields may be present.
This is an outbound webhook event. Karma POSTs this payload to the URL you registered via POST /api/v1/webhooks/subscriptions. Your endpoint should respond 2xx within 30 seconds to acknowledge delivery.
Webhook: Table state changed › Request Body
idUnique webhook delivery ID
eventresourceresourceIdString ID of the affected resource
timestampISO 8601 timestamp when the event was emitted
apiVersionWebhook: Table state changed › Responses
Acknowledged. Karma considers any 2xx response a successful delivery; non-2xx triggers retry with exponential backoff.