Import a seating plan by pasting JSON
The Restaurant Reservations seating plan JSON format: a venue's sections, tables, table combinations and maps, in one pasted document.
A venue's seating plan can be written as one JSON document and pasted into Magpie. On Seating plan, a team admin chooses Import JSON… and Magpie adds every section, table and combination in the document to the venue the page shows. The document can also say where each table stands on its section's map, how big the room is, and where the walls, the bar, the doors and the host stand are.
An import only adds. A section whose name the venue already has gets the new tables and fixtures; a table or combination is never changed or removed. A table whose name the venue already has, archived ones included, is refused. An import never places or moves a table the venue already has: drag those on the section's map on Seating plan.
Use Copy the prompt in the import box to copy these instructions for an assistant you use. The assistant will ask you about your rooms, your tables, the tables you push together, and for photos or a sketch of each room, then write the document. Magpie writes no text itself.
Importing is all or nothing. Magpie will check the whole document before it saves anything, and will name a mistake by its place in the document, such as "sections[0].tables[3].maxParty" must be between 1 and 99. A field that is not in the format is refused.
The document
{
"units": "cm",
"sections": [
{
"name": "Main room",
"room": { "width": 1200, "height": 800 },
"tables": [
{ "name": "1", "minParty": 1, "maxParty": 2, "x": 150, "y": 150 },
{ "name": "2", "minParty": 1, "maxParty": 2, "x": 350, "y": 150 },
{ "name": "3", "minParty": 2, "maxParty": 4, "shape": "round", "x": 550, "y": 200 },
{ "name": "4", "minParty": 2, "maxParty": 4, "x": 750, "y": 200 },
{ "name": "5", "minParty": 4, "maxParty": 6, "shape": "rectangle", "x": 1000, "y": 200, "width": 150, "height": 90 },
{ "name": "Bar", "minParty": 1, "maxParty": 4, "shape": "bar", "x": 950, "y": 660 }
],
"fixtures": [
{ "kind": "wall", "x": 600, "y": 8, "width": 1200, "height": 15 },
{ "kind": "half_wall", "x": 600, "y": 400, "width": 400, "height": 15 },
{ "kind": "bar", "x": 950, "y": 600, "width": 300, "height": 60, "text": "Bar" },
{ "kind": "door", "x": 150, "y": 792, "width": 90, "height": 15, "text": "Entrance" },
{ "kind": "host_stand", "x": 300, "y": 720 },
{ "kind": "label", "x": 600, "y": 60, "text": "Kitchen pass" }
]
},
{
"name": "Terrace",
"onlineBookable": false,
"tables": [
{ "name": "T1", "minParty": 2, "maxParty": 6, "shape": "rectangle" }
]
}
],
"combinations": [
{ "tables": ["1", "2"], "minParty": 3, "maxParty": 4 },
{ "name": "Big table", "tables": ["3", "4"], "maxParty": 8 }
]
}
Fields
The document is an object with sections, a list of 1 to 30 sections, optionally combinations, a list of up to 100, and optionally units.
units:cmorin, the unit of every length and position in the document. It iscmwhen left out. A length may also be written as text with its unit, such as"90 cm","36 in"or"3 ft 6 in".
A section has:
name: the section's name, up to 80 characters, such as "Main room" or "Terrace".onlineBookable:falsewhen diners cannot reserve its tables online. It istruewhen left out.tables: its tables, in the order the book shows them. The whole document holds up to 200 tables.room: optional, the room'swidthandheight, each from 1 m to 100 m. When left out, the room is drawn as big as its tables and fixtures need, and at least 12 by 8 m.fixtures: optional, up to 60 things on the map that are not tables.
A table has:
name: its name or number, up to 40 characters. Two tables of a venue cannot share a name.minPartyandmaxParty: the fewest and most people it seats, from 1 to 99. They are 1 and 2 when left out.shape:square,round,rectangle,boothorbar(a row of bar seats, one stool for each seat). It issquarewhen left out. Bar seats are for walk-ins: they are never offered online, so theironlineBookableis not used. Without awidth, they are 60 cm long for each seat.onlineBookable:falsewhen diners cannot reserve it online.xandy: optional, where the centre of the table stands in the room. Give both or neither. A table without them is drawn in a grid on its section's map, marked as not placed yet.widthandheight: optional, the table's size, each from 20 cm to 20 m. When left out, the table is drawn at the usual size for its shape and seats, such as 75 cm for a two-seat square and 90 cm for a four-seat round table. One side given alone on a round or square table is used for both.rotation: optional, in whole degrees clockwise. It is 0 when left out.
A fixture has:
kind:wall,half_wall,bar,door,host_stand,window,pillar,stairs,plantorlabel.xandy: where its centre stands in the room.widthandheight: optional, each from 5 cm to 20 m. When left out, each kind has its own size, such as 300 by 15 cm for a wall and 90 by 15 cm for a door.rotation: optional, in whole degrees clockwise.text: up to 80 characters, shown on the map. Alabelneeds it; abar, adoor, ahost_standandstairsmay have it; other kinds have none. Abar, ahost_standandstairswithout it show their name, such as Bar.
A combination joins tables for larger parties:
tables: the names of 2 to 12 tables in the same section, from this document or already in the venue.name: optional, such as "Big table", up to 80 characters. Magpie names it after its tables when left out ("1+2").minPartyandmaxParty: optional. When left out, it seats from the largest of its tables'minPartyup to its tables' seats added together.onlineBookable:falsewhen diners cannot reserve it online.
Positions on the map
Each section is drawn as a rectangle seen from above. x is measured from the room's left edge to the right and y from its top edge down, in the document's units. A position is from 0 to 100 m.
Two tables of one section whose outlines overlap are refused, naming both, such as "sections[0].tables[3]" overlaps "sections[0].tables[1]". Chairs are not counted. A table may overlap a fixture, so bar seats can stand at the bar.
Positions do not need to be exact. After the import, tables and fixtures can be moved and resized on the map on Seating plan.
Writing a plan from photos
An assistant writing this document from photos or a sketch of the rooms works this way:
- Ask for photos or a sketch of each room and roughly how big it is, where the entrance and the host stand are, and how the restaurant numbers its tables.
- Describe each room as a rectangle seen from above, with the entrance at the bottom.
- Give every table a centre in that rectangle. Where the person has given no sizes, use ordinary ones: 75 cm for a two-seat square, 90 cm for a four-seat table, 120 cm for a six-seat round table. Leave at least 90 cm between tables for an aisle.
- Put the walls, the bar, the doors and the host stand in as fixtures.
If an import is refused for a reason this page does not explain, Contact support.
Ask Magpie support
Send Magpie staff a question about anything this article does not answer.