The Layout Automation API is a powerful new feature of the Social Tables API that allows you to set up your events without human intervention. By giving the API a few basic parameters, you can create a wide variety of events in your space in an instant. The following is a description of the JSON object you must post to our API.
POST http://api.socialtables.com/4.0/layout-automation/
The object must provide some basic fields about your event. These fields control the creation of the event, and are at the top level of the object you post (see examples):
field | type | required | description |
---|---|---|---|
name | string | yes* | The name your event will be called. |
category | string | yes* | The category of the event. Examples: gala, reception, conference, wedding, party, other |
start_time | string (ISO-8601 Date) | no | The date and time your event starts |
end_time | string (ISO-8601 Date) | no | The date and time your event ends |
user_email | string | no | Optional email address of another user who should own this event. This user must be on the requestor's team. |
uses_metric | boolean | no | Optional flag indicating the event should display metric units, and interpret units of length in the request payload as centimeters instead of inches. |
field | type | required | description |
---|---|---|---|
event_id | string | yes* | id of the event to update |
The object must contain a spaces array at the top level of the object, each space can contain:
field | type | required | description |
---|---|---|---|
name | string | yes* | The name of the space, this will be shown in the UI |
venue_id | string | yes* | The Social Tables bookable room id, which can be found using other parts of our API, must be prepended with an S |
wizard | object | yes* | Object containing the parameters to lay out your space. See wizard object documentation below. |
field | type | required | description |
---|---|---|---|
space_id | string | yes* | The name of the space, this will be shown in the UI |
wizard | object | yes | Object containing the parameters to lay out your space. See wizard object documentation below. |
field | type | required | description |
---|---|---|---|
attendees | number (integer) | yes | the number of attendees you want to seat at your event |
setup | string (enumerated) | yes | Setup Type. Allowed: aligned, staggered, classroom, conference, keynote, u-shape, reception, theatre, registration |
table | object | yes | (see Table Object documentation below) |
chevronAngle | number (integer) | no | angle for the theatre, aligned, and keynote setup type |
rotation | number (integer) | no | number of degrees to rotate the setup. Can be use to set the direction the setup faces. Applies to all setup types except for "reception" and "registration". |
field | type | required | description |
---|---|---|---|
chairs | number | no | Number of chairs to put at each table |
size | object | no | (see Size Object documentation below) |
spacing | object | no | (see Spacing Object documentation below) |
type | string (enumerated) | no | Table type. Allowed: circle, square, rectangle, theatre, crescent, oval, serpentine, high-boy, and chair |
position | string (enumerated) | no | Positions the setup in the room, where n means "north" or 0 degrees of a circle. Allowed: n, s, e, w, ne, nw, se, sw |
cullAdditionalTables | boolean | no | Specifies whether to remove tables from a template to exactly match the attendee count or leave them in to round out the layout (default is false) |
removedChairs | number | no | Specifies the number of chairs as empty spaces on a crescent table type. |
rotateCrescent | number | no | Specifies the angle of rotation for the crescent table. |
Example for adding a table of type Crescent.
{
"wizard": {
"attendees": 30,
"setup": "aligned",
"chevronAngle": 0,
"rotation": 0,
"table": {
"cullAdditionalTables": false,
"chairs": 6,
"removedChairs": 4,
"rotateCrescent": 50,
"size": {
"radius": 50
},
"type": "crescent"
}
}
}
field | type | required | description |
---|---|---|---|
width | number (integer) | no* | Width along the x axis (inches) |
length | number (integer) | no* | Length along the y axis (inches) |
radius | number (integer) | no* | Radius of the top of a table (inches) |
field | type | required | description |
---|---|---|---|
x | number (integer) | no | Spacing in inches along the x axis |
y | number (integer) | no | Spacing in inches along the y axis |
field | type | required | description |
---|---|---|---|
horizontal | object | no | Horizontal (runs along the x axis) aisle definition (see below) |
vertical | object | no | Vertical (runs along the y axis) aisle definition (see below) |
horizontal and vertical params have the following definition
field | type | required | description |
---|---|---|---|
floorElementsBetween | number (integer) | no | Number of elements (tables) in between aisles |
width | number (integer) | no | Width of the aisle in inches |
Full example:
{
"wizard": {
"attendees": 40,
"setup": "aligned",
"chevronAngle": 0,
"rotation": -20,
"table": {
"chairs": 4,
"size": {
"width": 72,
"length": 24
},
"spacing": {
"x": 0,
"y": 36
},
"type": "square"
},
"aisles": {
"horizontal": {
"floorElementsBetween": 0,
"width": 0
},
"vertical": {
"floorElementsBetween": 2,
"width": 36
}
}
}
}
There are currently 6 available setup types that the Layout Automation API can handle, specified by the setup property in the wizard object:
The setup type is very important as it controls the behavior of the API and which parameters are respected. Here is a rundown of the differences:
The aligned setup creates a set of tables aligned on both the x and y axes:
{ x: 72, y: 72 }
.Example:
{
"wizard": {
"attendees": 50,
"setup": "aligned",
"table": {
"chairs": 4,
"size": {
"radius": 60
},
"spacing": {
"x": 42,
"y": 42
},
"type": "circle"
}
}
}
The staggered setup creates a set of tables in staggered rows that are aligned on the y axis but offset on the x:
{ x: 72, y: 52 }
.Example:
{
"wizard": {
"attendees": 50,
"setup": "staggered",
"table": {
"chairs": 4,
"size": {
"radius": 60
},
"spacing": {
"x": 42,
"y": 42
},
"type": "circle"
}
}
}
The classroom setup creates an aligned layout with the chairs all set up along one side of a table, as you might see in a classroom with students facing a professor.
{ x: 0, y: 36 }
.Example:
{
"wizard": {
"attendees": 50,
"setup": "classroom",
"table": {
"chairs": 3,
"size": {
"width": 72,
"length": 18
},
"spacing": {
"x": 36,
"y": 36
},
"type": "square"
}
}
}
The theatre setup creates an rows of seats like you might want for a presentation or show.
{ x: 0, y: 16 }
.Example:
{
"wizard": {
"attendees": 200,
"setup": "theatre",
"chevronAngle": 35,
"table": {
"chairs": 1,
"spacing": {
"x": 5,
"y": 5
},
"size": {
"length": 16,
"width": 16
},
"type": "theatre"
},
"aisles": {
"horizontal": {
"floorElementsBetween": 0,
"width": 0
},
"vertical": {
"floorElementsBetween": 5,
"width": 36
}
}
}
}
The hollow-square setup creates tables lined up to create a box shape. Chairs are placed facing inwards towards the center of the box.
{ x: 0, y: 0 }
.Example:
{
"wizard": {
"attendees": 20,
"setup": "hollow-square",
"rotation": 0,
"chevronAngle": 10,
"table": {
"chairs": 2,
"size": {
"width": 36,
"length": 18
},
"type": "rectangle"
}
}
}
The u-shape setup creates tables lined up to create a box that is open on one side, creating a u-shape or horseshoe. Chairs are placed facing inwards towards the center of the U.
{ x: 0, y: 0 }
.Example:
{
"wizard": {
"attendees": 20,
"setup": "u-shape",
"rotation": 0,
"chevronAngle": 10,
"table": {
"chairs": 2,
"size": {
"width": 36,
"length": 18
},
"type": "rectangle"
}
}
}
The conference table layout creates a group of tables with chairs facing each other as you might have in a conference room.
{ x: 0, y: 0 }
.{
"wizard": {
"attendees": 30,
"setup": "conference-table",
"rotation": 0,
"chevronAngle": 0,
"table": {
"chairs": 2,
"size": {
"width": 36,
"length": 18
},
"spacing": {
"x": 0,
"y": 0
},
"type": "rectangle"
}
}
}
N. B. The following setups follow their own schemas for the wizard object that are separate from the rest.
The reception setup type behaves very differently from many of the previous setup types discussed.
When choosing this setup type, the API will attempt to fill the space by distributing cocktail tables
"high boys" mixed with round tables to fill a room space.
The Wizard Object is different in this case:
field | type | required | description |
---|---|---|---|
attendees | number (integer) | yes | the number of attendees you want to seat at your event, this differs from the other setups in that there is no maximum number, the api will do it's best to seat as many guests as possible |
As well as the Table Object:
field | type | required | description |
---|---|---|---|
spacing | number (integer) | no* | Minimum number of inches between tables. |
standing_coefficient | number (decimal) | no* | Coefficient* of guests who will be standing |
seating_coefficient | number (decimal) | no* | Coefficient* of guests who will be seated |
Coefficient (between 0 and 1) of guests which will be [seated][standing] at any given time. Used to map attendee count to number of [low tables or 5 foot rounds][high-boys]
Another behavior to note is that 5-foot rounds replace low tables when available space runs out in order to seat more guests
Example:
{
"wizard": {
"attendees": 60,
"setup": "reception",
"table": {
"spacing": 96,
"standing_coefficient": 0.3
}
}
}
The registration setup behaves very differently from many of the previous setup types discussed. When choosing this setup type, the API will attempt to fill the space by placing a registration table on one side of the room.
The Table Object
field | type | required | description |
---|---|---|---|
count | number (integer) | no* | Number of registration tables to place |
position | string (enumerated) | no* | Positions the tables in the room, where n means "north" or 0 degrees of a circle. Allowed: n, s, e, w, ne, nw, se, sw |
Example:
{
"wizard": {
"setup": "registration",
"table": {
"count": 2,
"position": "n"
}
}
}