Salta ai contenuti

Schema reference

Questi contenuti non sono ancora disponibili nella tua lingua.

This page lists every field in the ORDER 0.1 schema, entity by entity. The canonical, machine-readable schema is schema.json — this page is a human-readable index of it, not a replacement for it.

Every object below rejects properties it does not list, with one standing exception: a property named x_<vendor> (matching `^x_[a-z0-9_]+$`) is always allowed on every object, and is never listed again per-entity below. See The specification for what a vendor extension is for.

The root object.

Field Type Required Notes
order_version string Yes Pattern `^0\.\d+$` (MAJOR.MINOR).
modules array<string> Yes At least one entry, unique. Open list — not an enum.
generator object Yes See Generator.
restaurant object Yes See Restaurant.
rooms array<Room> No
tables array<Table> No
table_groups array<TableGroup> No
service_periods array<ServicePeriod> No
closures array<Closure> No
menus array<Menu> No
labels array<Label> No
reservations array<Reservation> No Requires "reservations" in modules. Contains personal data.

Identifies what produced the document.

Field Type Required Notes
name string Yes Non-empty.
version string No
exported_at string Yes Date-time.
Field Type Required Notes
ref string Yes Document-scoped identifier, 1–128 characters.
name string Yes Non-empty.
timezone string Yes An IANA tz-database identifier. The reference validator checks real existence (via the platform’s Intl timezone database, canonical and alias names both accepted), not just shape.
currency string Yes ISO 4217, pattern `^[A-Z]{3}$`.
description string No
default_language string Yes At least 2 characters.
supported_languages array<string> Yes At least one entry.
contact object No See Restaurant profile objects.
address object No See Restaurant profile objects.
branding object No See Restaurant profile objects.
public_hours array<HoursSpec> No Display/marketing hours: `{ days, opens, closes, ends_next_day? }` per entry. MAY differ from service_periods — see The specification.

Contact — all fields optional: phone (string), email (string, email format), website (string, URI format).

Address — all fields optional: street, city, region, postal_code (string), country (string, ISO 3166-1 alpha-2, pattern `^[A-Z]{2}$`), coordinates (`{ lat, lng }`, lat in [-90, 90], lng in [-180, 180]).

Branding — all fields optional: logo (Media — `{ url, path? }`), colors (`{ primary?, secondary?, text? }`, each a `#RRGGBB` color string), font_family (string), social_links (a map of platform name to URI; keys match `^[a-z][a-z0-9_]*$`).

Field Type Required Notes
ref string Yes
name string Yes Non-empty.
floor_plan object No See Floor plan.
Field Type Required Notes
coordinate_system object Yes See Coordinate system.
area_sqm number No Greater than 0.
background_image_url string No URI format.
outline array<OutlineSegment> No The room’s boundary. Each segment is `{ type: "polygon" | "rectangle" | "circle", ... } ` with the fields its type requires (points for a polygon, x/y/width/height for a rectangle, cx/cy/radius for a circle). Points are absolute in the room’s coordinate_system — contrast with a table’s shape, whose points are centre-relative.
unusable_areas array<UnusableArea> No A region that cannot seat guests (bar, kitchen pass, pillar): the same shape as outline’s segments, plus a required ref and an optional label. Points are absolute, as for outline.
Field Type Required Notes
units string Yes meters or pixels.
origin string Yes Constant: top_left.
x_axis string Yes Constant: right.
y_axis string Yes Constant: down.
pixels_per_meter number No (SHOULD when units is pixels) Greater than 0. Absent means the plan is unscaled; readers MUST NOT infer real-world distance. Triggers the floor_plan_unscaled warning.
Field Type Required Notes
ref string Yes
source_id string No Informational only — not for cross-document identity.
number string Yes Non-empty.
display_name string No
room_ref string No
seats object Yes `{ min: integer ≥ 1, max: integer ≥ 1 }`. min <= max is enforced by the reference validator (not expressible in JSON Schema itself).
status string Yes active, inactive, or maintenance.
geometry object No `{ position, rotation_deg?, shape }`. position is the table’s centre. rotation_deg is degrees clockwise, [0, 360). shape.points (for a polygon) are relative to position — the opposite convention from a floor outline’s absolute points. A rectangle shape requires width/height; a circle requires radius.
Field Type Required Notes
ref string Yes
table_refs array<string> Yes At least 2 entries, unique.
seats object Yes Same `{ min, max }` shape as Table.seats.
Field Type Required Notes
ref string Yes
name string Yes Non-empty.
description string No
days array<string> Yes At least one entry, unique. Values: mondaysunday.
opens string Yes Wall-clock HH:MM in restaurant.timezone.
closes string Yes Wall-clock HH:MM.
ends_next_day boolean No, default false Cross-midnight flag. A reader MUST NOT infer it from closes < opens; a producer translating its own source, where end < start is deliberate, may set it.
max_covers integer or null No At least 1.
turns array<Turn> No See Turn.
Field Type Required Notes
ref string Yes
opens string Yes Wall-clock HH:MM.
closes string Yes Wall-clock HH:MM.
ends_next_day boolean No, default false Cross-midnight flag — a turn opening 23:30 and closing 01:00. Same reader-binding rule as service_period.ends_next_day.
duration_minutes integer Yes 1–480.
party_size object No `{ min: integer ≥ 1, max: integer ≥ 1 }`. min <= max is enforced by the reference validator.
Field Type Required Notes
ref string Yes
date string Yes YYYY-MM-DD, calendar-checked (not just shape).
table_refs array<string> No Empty or absent means the closure applies to the whole restaurant.
turn_ref string or null No null means a whole-day closure.
reason string Yes Non-empty.
notes string No
Field Type Required Notes
ref string Yes
source_id string No
name string Yes Non-empty.
description string No
image object No Media: `{ url, path? }`.
sections array<MenuSection> No
notes array<MenuNote> No
translations object No Keyed by BCP-47 tag — see The specification.

Recursive: a section can hold subsections.

Field Type Required Notes
ref string Yes
name string Yes Non-empty.
description string No
image object No Media.
sections array<MenuSection> No Subcategories, nested arbitrarily deep.
items array<MenuItem> No
translations object No
Field Type Required Notes
ref string Yes
source_id string No
name string Yes Non-empty.
description string No
prices array<Price> Yes At least one entry — always an array, even for a single price.
allergens array<string> No Unique. The EU FIC Reg. 1169/2011 Annex II enum — see The specification.
label_refs array<string> No Unique. Free-form, restaurant-defined — distinct from allergens.
available boolean No, default true
frozen boolean No, default false
pairs_with array<Pairing> No `{ item_ref, note? }` per entry.
image object No Media.
translations object No
Field Type Required Notes
label string or null No For example Glass / Bottle on a wine.
amount string Yes Decimal string, pattern `^-?\d+(\.\d{1,4})?$` — never a float. The minor-unit count is governed by restaurant.currency, not fixed at two: `"1200"` (JPY), `"6.00"` (EUR), `"0.500"` (KWD) are all well-formed.
translations object No
Field Type Required Notes
ref string Yes
name string Yes Non-empty.
color string No `#RRGGBB`.
icon string No
translations object No
Field Type Required Notes
ref string Yes
anchor object Yes `{ type: "menu" | "section" | "item", ref }`.
position string Yes header or footer.
kind string Yes info, warning, or tip.
title string No Up to 100 characters.
body string Yes 1–1000 characters.
color string No `#RRGGBB`.
show_icon boolean No
translations object No

Requires the reservations module. Contains personal data — see ORDER overview § Modules.

Field Type Required Notes
ref string Yes
source_id string No
date string Yes YYYY-MM-DD.
starts_at string Yes RFC 3339 with a mandatory offset.
ends_at string No RFC 3339 with a mandatory offset.
party_size integer Yes At least 1.
table_refs array<string> No Empty means unassigned.
turn_ref string or null No
status string Yes pending, confirmed, seated, completed, cancelled, or no_show.
source string No landing_page, crm, phone, walk_in, or api.
guest object No See Guest. Personal data.
special_requests string No
notes string No
cancellation_reason string No
locale string No

Personal data. Present only within the reservations module.

Field Type Required Notes
name string Yes Non-empty.
email string No Email format.
phone string No