---
title: "Table data model"
url: "https://docs.unified.to/commerce/table/model"
description: "The Table data model object in Unified's Table API: 17 fields, including created_at, updated_at and name, with types and enum values."
date: "2026-11-07T22:11:38.370Z"
updated: "2026-11-07T22:11:38.370Z"
---
# Table data model

Updated: November 7, 2026

 View field support, webhooks, and list parameters for each integration on the [Supported Integrations](https://docs.unified.to/commerce/integrations.md) page. 

| Field                     | Type                 | Required | Description                                                                                                                                                                                                                                              |
| ------------------------- | -------------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| id                        | string               | No       |                                                                                                                                                                                                                                                          |
| created\_at               | string (date-time)   | No       | (ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)                                                                                                                                                                                                                 |
| updated\_at               | string (date-time)   | No       | (ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)                                                                                                                                                                                                                 |
| name                      | string               | No       | display label of the table, e.g. "Table 1" or "Patio 4"                                                                                                                                                                                                  |
| number                    | string               | No       | human-facing table number shown on the POS (string, as some systems use alphanumeric labels)                                                                                                                                                             |
| description               | string               | No       |                                                                                                                                                                                                                                                          |
| is\_active                | boolean              | No       |                                                                                                                                                                                                                                                          |
| capacity                  | number               | No       | number of seats/guests the table is set up for                                                                                                                                                                                                           |
| location\_id              | string               | No       | reference to a commerce\_location (the restaurant/site) (reference to CommerceLocation)                                                                                                                                                                  |
| floorplan\_name           | string               | No       | floorplan, section or dining area the table belongs to                                                                                                                                                                                                   |
| floorplan\_identifier     | string               | No       | the provider's identifier of that floorplan/section                                                                                                                                                                                                      |
| layout                    | object               | No       | position and shape of the table on its floorplan                                                                                                                                                                                                         |
| layout.x                  | number               | No       | horizontal position on the floorplan, in the provider's floorplan units                                                                                                                                                                                  |
| layout.y                  | number               | No       | vertical position on the floorplan, in the provider's floorplan units                                                                                                                                                                                    |
| layout.width              | number               | No       |                                                                                                                                                                                                                                                          |
| layout.height             | number               | No       |                                                                                                                                                                                                                                                          |
| layout.rotation           | number               | No       | degrees                                                                                                                                                                                                                                                  |
| layout.shape              | enum                 | No       | Values: ROUND, SQUARE, RECTANGLE, OVAL, OTHER                                                                                                                                                                                                            |
| status                    | enum                 | No       | current occupancy Values: AVAILABLE, OCCUPIED, RESERVED, INACTIVE, OTHER                                                                                                                                                                                 |
| guest\_count              | number               | No       | number of guests currently seated                                                                                                                                                                                                                        |
| occupied\_at              | string (date-time)   | No       | when the current party was seated (earliest open order) (ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)                                                                                                                                                         |
| salesorder\_ids           | string\[\]           | No       | open orders/checks currently on the table; references accounting\_salesorder                                                                                                                                                                             |
| metadata                  | CommerceMetadata\[\] | No       |                                                                                                                                                                                                                                                          |
| metadata\[\].id           | string               | No       | The ID of the custom field definition (from the metadata/metadata endpoint).                                                                                                                                                                             |
| metadata\[\].value        | object               | No       | The field's value, typed by format: DATE as ISO-8601 (YYYY-MM-DD, or YYYY-MM-DDTHH:MM:SSZ for date-times); NUMBER, PRICE and CURRENCY as a number; BOOLEAN and YES\_NO as true/false; MULTIPLE\_SELECT as an array of option values; otherwise a string. |
| metadata\[\].namespace    | string               | No       |                                                                                                                                                                                                                                                          |
| metadata\[\].format       | enum                 | No       | The data type of the custom field, which determines how value is formatted. Values: TEXT, NUMBER, DATE, BOOLEAN, FILE, TEXTAREA, SINGLE\_SELECT, MULTIPLE\_SELECT, MEASUREMENT, PRICE, YES\_NO, CURRENCY, URL                                            |
| metadata\[\].extra\_data  | object               | No       |                                                                                                                                                                                                                                                          |
| metadata\[\].slug         | string               | No       | The integration's API name (key) of an existing custom field. List valid slugs for this object with the metadata/metadata endpoint; unknown slugs are rejected by the integration.                                                                       |
| metadata\[\].description  | string               | No       |                                                                                                                                                                                                                                                          |
| metadata\[\].is\_required | boolean              | No       |                                                                                                                                                                                                                                                          |

## TypeScript

```typescript
export type CommerceTable = {
	id?: string;
	created_at?: string-time; // (ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)
	updated_at?: string-time; // (ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)
	name?: string; // display label of the table, e.g. "Table 1" or "Patio 4"
	number?: string; // human-facing table number shown on the POS (string, as some systems use alphanumeric labels)
	description?: string;
	is_active?: boolean;
	capacity?: number; // number of seats/guests the table is set up for
	location_id?: string; // reference to a commerce_location (the restaurant/site) (reference to CommerceLocation)
	floorplan_name?: string; // floorplan, section or dining area the table belongs to
	floorplan_identifier?: string; // the provider's identifier of that floorplan/section
	layout?: {
		x?: number; // horizontal position on the floorplan, in the provider's floorplan units 
		y?: number; // vertical position on the floorplan, in the provider's floorplan units 
		width?: number; 
		height?: number; 
		rotation?: number; // degrees 
		shape?: 'ROUND' | 'SQUARE' | 'RECTANGLE' | 'OVAL' | 'OTHER'; 
	}; // position and shape of the table on its floorplan
	status?: 'AVAILABLE' | 'OCCUPIED' | 'RESERVED' | 'INACTIVE' | 'OTHER'; // current occupancy
	guest_count?: number; // number of guests currently seated
	occupied_at?: string-time; // when the current party was seated (earliest open order) (ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)
	salesorder_ids?: string[]; // open orders/checks currently on the table; references accounting_salesorder
	metadata?: [];
	raw?: any;
} 
```

## Zod

```typescript
import { z } from 'zod';

export const ZodCommerceTable = z.object({
	id: z.string().optional(),
	created_at: z.string-time().optional().describe("(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)"),
	updated_at: z.string-time().optional().describe("(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)"),
	name: z.string().optional().describe("display label of the table, e.g. "Table 1" or "Patio 4""),
	number: z.string().optional().describe("human-facing table number shown on the POS (string, as some systems use alphanumeric labels)"),
	description: z.string().optional(),
	is_active: z.boolean().optional(),
	capacity: z.number().optional().describe("number of seats/guests the table is set up for"),
	location_id: z.string().optional().describe("reference to a commerce_location (the restaurant/site) (reference to CommerceLocation)"),
	floorplan_name: z.string().optional().describe("floorplan, section or dining area the table belongs to"),
	floorplan_identifier: z.string().optional().describe("the provider's identifier of that floorplan/section"),
	layout: z.object({
			x: z.number().optional().describe("horizontal position on the floorplan, in the provider's floorplan units"),
			y: z.number().optional().describe("vertical position on the floorplan, in the provider's floorplan units"),
			width: z.number().optional(),
			height: z.number().optional(),
			rotation: z.number().optional().describe("degrees"),
			shape: z.enum("ROUND", "SQUARE", "RECTANGLE", "OVAL", "OTHER").optional()
}).optional().describe("position and shape of the table on its floorplan"),
	status: z.enum("AVAILABLE", "OCCUPIED", "RESERVED", "INACTIVE", "OTHER").optional().describe("current occupancy"),
	guest_count: z.number().optional().describe("number of guests currently seated"),
	occupied_at: z.string-time().optional().describe("when the current party was seated (earliest open order) (ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)"),
	salesorder_ids: z.array().optional().describe("open orders/checks currently on the table; references accounting_salesorder"),
	metadata: z.array().optional(),

});
```

## Python

```python
import dataclasses

@dataclasses.dataclass
class CommerceTableStatus(str, Enum):
	AVAILABLE = 'AVAILABLE'
	OCCUPIED = 'OCCUPIED'
	RESERVED = 'RESERVED'
	INACTIVE = 'INACTIVE'
	OTHER = 'OTHER'

@dataclasses.dataclass
class CommerceTableLayoutShape(str, Enum):
	ROUND = 'ROUND'
	SQUARE = 'SQUARE'
	RECTANGLE = 'RECTANGLE'
	OVAL = 'OVAL'
	OTHER = 'OTHER'

@dataclasses.dataclass
class PropertyCommerceTableLayout:
	"""horizontal position on the floorplan, in the provider's floorplan units"""
	x: Optional[int]
	"""vertical position on the floorplan, in the provider's floorplan units"""
	y: Optional[int]
	width: Optional[int]
	height: Optional[int]
	"""degrees"""
	rotation: Optional[int]
	shape: Optional[CommerceTableLayoutShape]

@dataclasses.dataclass
class CommerceTable:
	id: Optional[str]
	"""(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)"""
	created_at: Optional[str]
	"""(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)"""
	updated_at: Optional[str]
	"""display label of the table, e.g. "Table 1" or "Patio 4""""
	name: Optional[str]
	"""human-facing table number shown on the POS (string, as some systems use alphanumeric labels)"""
	number: Optional[str]
	description: Optional[str]
	is_active: Optional[bool]
	"""number of seats/guests the table is set up for"""
	capacity: Optional[int]
	"""reference to a commerce_location (the restaurant/site) (reference to CommerceLocation)"""
	location_id: Optional[str]
	"""floorplan, section or dining area the table belongs to"""
	floorplan_name: Optional[str]
	"""the provider's identifier of that floorplan/section"""
	floorplan_identifier: Optional[str]
	"""position and shape of the table on its floorplan"""
	layout: Optional[PropertyCommerceTableLayout]
	"""current occupancy"""
	status: Optional[CommerceTableStatus]
	"""number of guests currently seated"""
	guest_count: Optional[int]
	"""when the current party was seated (earliest open order) (ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)"""
	occupied_at: Optional[str]
	"""open orders/checks currently on the table; references accounting_salesorder"""
	salesorder_ids: Optional[List[List[str]]]
	metadata: Optional[PropertyCommerceTableMetadata]

```
