Waitwhile API v1 API Reference

The Waitwhile API is organized around the REST methodology, and it uses resource-oriented URLs, and common HTTP response codes. JSON is returned by all API responses, including errors.

All requests are authenticated using an API key which can be obtained from your Integration Settings page. Provide your API key as value for the header "apikey" with each request.

All API requests must be made over HTTPS. Calls made over plain HTTP will fail. API requests without authentication will also fail.

Webhooks use the same schema definitions as the API.

API Endpoint
https://api.waitwhile.com/v1
Terms of Service: https://waitwhile.com/terms/
Contact: hello@waitwhile.com
Request Content-Types: application/json
Response Content-Types: application/json
Schemes: https
Version: 2018-04-08

Authentication

APIKeyHeader

type
apiKey
name
apikey
in
header

Errors

The API uses conventional HTTP response codes to indicate the success or failure of an API request. In general, codes in the 2xx range indicate success, codes in the 4xx range indicate an error that failed given the information provided e.g., a required parameter was omitted, and codes in the 5xx range indicate an error with Waitwhile's servers.

Webhooks

Waitwhile supports setting up webhooks for guest events and waitlist status events. This can be done on the Integration Settings page. For each webhook URL you can choose to receive all events or specific events.

The following event types are supported:

  • Guest waiting
  • Guest serving
  • Guest completed
  • Guest no-showed
  • Guest cancelled
  • Guest removed
  • Guest booked
  • Message send
  • Waitlist status updated

Webhooks use the same schema definitions as the API for representing objects.

To acknowledge receipt of a webhook, your endpoint should return a 2xx HTTP status code. All response codes outside this range, including 3xx codes, will indicate to that you did not receive the webhook. Failed webhook calls will be retried up to three times. If your endpoint consistently fails for more than three days the webhook will be paused.

Waitwhile will sign the webhook events it sends to your endpoints. We do so by including a signature in each event’s X-Waitwhile-Signature header. This allows you to validate that the events were sent by Waitwhile and not by a third party.

Before you can verify signatures, you need to retrieve your endpoint’s secret from the settings. Each secret is unique to the endpoint to which it corresponds.

The signature is created by concatenating webhook URL and payload as a UTF-8 string, and then creating a hash-based message authentication code (HMAC) with SHA-256, encoded using Base64. See example code below:

function verifyWebhookSignature(signature, url, payload, secret) {
  return signature == crypto.createHmac('sha256', secret).update(new Buffer(url + payload, 'utf-8')).digest('base64');
}

Waitlists

Waitlists contain operations relating to waitlists.

List all waitlists

GET /waitlists

Returns a list of your waitlists.

200 OK

A list of Waitlists

400 Bad Request

Bad request - Invalid or missing parameter

401 Unauthorized

Unauthorized - No valid API key provided.

500 Internal Server Error

Unexpected server error - Something went wrong on Waitwhile's end.

Response Example (200 OK)
[
  {
    "id": "string ([a-z0-9])",
    "name": "string",
    "businessName": "string",
    "phone": "string ([+0-9])",
    "email": "email",
    "currency": "string ([A-Z])",
    "timezone": "string",
    "businessHours": {
      "mon": {
        "isOpen": "boolean",
        "periods": [
          {
            "to": "integer (int32)",
            "from": "integer (int32)"
          }
        ]
      }
    },
    "waitlistHours": {
      "mon": {
        "isOpen": "boolean",
        "periods": [
          {
            "to": "integer (int32)",
            "from": "integer (int32)"
          }
        ]
      }
    },
    "bookingHours": {
      "mon": {
        "isOpen": "boolean",
        "periods": [
          {
            "to": "integer (int32)",
            "from": "integer (int32)"
          }
        ]
      }
    },
    "accountId": "string ([a-z0-9])"
  }
]
Response Example (400 Bad Request)
{
  "type": "string",
  "code": "integer (int32)",
  "message": "string"
}
Response Example (401 Unauthorized)
{
  "type": "string",
  "code": "integer (int32)",
  "message": "string"
}
Response Example (500 Internal Server Error)
{
  "type": "string",
  "code": "integer (int32)",
  "message": "string"
}

Create waitlist

POST /waitlists

Returns a waitlist object if the call succeeded.

The Waitlist to create.

Request Example
{
  "name": "string",
  "businessName": "string",
  "phone": "string ([+0-9])",
  "email": "email",
  "currency": "string ([A-Z])",
  "timezone": "string"
}
201 Created

A Waitlist

400 Bad Request

Bad request - Invalid or missing parameter

401 Unauthorized

Unauthorized - No valid API key provided.

404 Not Found

Not Found - The requested resource doesn't exist.

500 Internal Server Error

Unexpected server error - Something went wrong on Waitwhile's end.

Response Example (201 Created)
{
  "id": "string ([a-z0-9])",
  "name": "string",
  "businessName": "string",
  "phone": "string ([+0-9])",
  "email": "email",
  "currency": "string ([A-Z])",
  "timezone": "string",
  "businessHours": {
    "mon": {
      "isOpen": "boolean",
      "periods": [
        {
          "to": "integer (int32)",
          "from": "integer (int32)"
        }
      ]
    }
  },
  "waitlistHours": {
    "mon": {
      "isOpen": "boolean",
      "periods": [
        {
          "to": "integer (int32)",
          "from": "integer (int32)"
        }
      ]
    }
  },
  "bookingHours": {
    "mon": {
      "isOpen": "boolean",
      "periods": [
        {
          "to": "integer (int32)",
          "from": "integer (int32)"
        }
      ]
    }
  },
  "accountId": "string ([a-z0-9])"
}
Response Example (400 Bad Request)
{
  "type": "string",
  "code": "integer (int32)",
  "message": "string"
}
Response Example (401 Unauthorized)
{
  "type": "string",
  "code": "integer (int32)",
  "message": "string"
}
Response Example (404 Not Found)
{
  "type": "string",
  "code": "integer (int32)",
  "message": "string"
}
Response Example (500 Internal Server Error)
{
  "type": "string",
  "code": "integer (int32)",
  "message": "string"
}

Retrieve a waitlist

GET /waitlists/{waitlistId}

Retrieves the details of an existing waitlist.

waitlistId
in path
string ([a-z0-9])

Identifier of waitlist

200 OK

A Waitlist

400 Bad Request

Bad request - Invalid or missing parameter

401 Unauthorized

Unauthorized - No valid API key provided.

404 Not Found

Not Found - The requested resource doesn't exist.

500 Internal Server Error

Unexpected server error - Something went wrong on Waitwhile's end.

Response Example (200 OK)
{
  "id": "string ([a-z0-9])",
  "name": "string",
  "businessName": "string",
  "phone": "string ([+0-9])",
  "email": "email",
  "currency": "string ([A-Z])",
  "timezone": "string",
  "businessHours": {
    "mon": {
      "isOpen": "boolean",
      "periods": [
        {
          "to": "integer (int32)",
          "from": "integer (int32)"
        }
      ]
    }
  },
  "waitlistHours": {
    "mon": {
      "isOpen": "boolean",
      "periods": [
        {
          "to": "integer (int32)",
          "from": "integer (int32)"
        }
      ]
    }
  },
  "bookingHours": {
    "mon": {
      "isOpen": "boolean",
      "periods": [
        {
          "to": "integer (int32)",
          "from": "integer (int32)"
        }
      ]
    }
  },
  "accountId": "string ([a-z0-9])"
}
Response Example (400 Bad Request)
{
  "type": "string",
  "code": "integer (int32)",
  "message": "string"
}
Response Example (401 Unauthorized)
{
  "type": "string",
  "code": "integer (int32)",
  "message": "string"
}
Response Example (404 Not Found)
{
  "type": "string",
  "code": "integer (int32)",
  "message": "string"
}
Response Example (500 Internal Server Error)
{
  "type": "string",
  "code": "integer (int32)",
  "message": "string"
}

Retrieve waitlist status

GET /waitlists/{waitlistId}/status

Return waitlist status information for a particular waitlist, like current wait time and number of guests.

waitlistId
in path
string ([a-z0-9])

Identifier of waitlist

A WaitlistStatus

400 Bad Request

Bad request - Invalid or missing parameter

401 Unauthorized

Unauthorized - No valid API key provided.

404 Not Found

Not Found - The requested resource doesn't exist.

500 Internal Server Error

Unexpected server error - Something went wrong on Waitwhile's end.

Response Example (200 OK)
{
  "id": "string ([a-z0-9])",
  "name": "string",
  "numberOfWaiting": "integer (int64)",
  "numberOfServing": "integer (int64)",
  "isBookingOpen": "boolean",
  "isOpen": "boolean",
  "isFull": "boolean",
  "estimatedWait": "integer (int64)",
  "estimatedWaitByStaff": {
    "staffId": "integer (int64)"
  },
  "estimatedWaitByResource": {
    "categoryId": {
      "resourceId": "integer (int64)"
    }
  },
  "estimatedWaitByService": {
    "serviceId": "integer (int64)"
  }
}
Response Example (400 Bad Request)
{
  "type": "string",
  "code": "integer (int32)",
  "message": "string"
}
Response Example (401 Unauthorized)
{
  "type": "string",
  "code": "integer (int32)",
  "message": "string"
}
Response Example (404 Not Found)
{
  "type": "string",
  "code": "integer (int32)",
  "message": "string"
}
Response Example (500 Internal Server Error)
{
  "type": "string",
  "code": "integer (int32)",
  "message": "string"
}

Guests

Guests contain operations relating to waitlist guests.

List waiting guests

GET /waitlists/{waitlistId}/waiting

Returns a list of waiting guests on a waitlist. The guests are returned sorted by position. If no guests are found, the resulting array will be empty.

waitlistId
in path
string ([a-z0-9])

Identifier of waitlist

200 OK

A list of Guests

400 Bad Request

Bad request - Invalid or missing parameter

401 Unauthorized

Unauthorized - No valid API key provided.

404 Not Found

Not Found - The requested resource doesn't exist.

500 Internal Server Error

Unexpected server error - Something went wrong on Waitwhile's end.

Response Example (200 OK)
[
  {
    "id": "string ([a-z0-9])",
    "name": "string",
    "email": "string (email)",
    "phone": "string ([+0-9])",
    "customerId": "string",
    "partySize": "integer (int64)",
    "notes": "string",
    "serviceIds": [
      "string"
    ],
    "resourceIds": [
      "string"
    ],
    "quotedWaitDuration": "integer (int64)",
    "waitlistTime": "integer (int64)",
    "serveTime": "integer (int64)",
    "waitlistId": "string ([a-z0-9])",
    "state": "string",
    "position": "integer (int64)",
    "originalPosition": "integer (int64)",
    "estWaitDuration": "integer (int64)",
    "options": {
      "optionId": [
        "string"
      ]
    }
  }
]
Response Example (400 Bad Request)
{
  "type": "string",
  "code": "integer (int32)",
  "message": "string"
}
Response Example (401 Unauthorized)
{
  "type": "string",
  "code": "integer (int32)",
  "message": "string"
}
Response Example (404 Not Found)
{
  "type": "string",
  "code": "integer (int32)",
  "message": "string"
}
Response Example (500 Internal Server Error)
{
  "type": "string",
  "code": "integer (int32)",
  "message": "string"
}

Create waiting guest

POST /waitlists/{waitlistId}/waiting

Returns a guest object if the call succeeded. If no position is provided the guest will be placed last. The returned object will have information about staff, services, custom options if that information has been provided.

The Guest to create.

waitlistId
in path
string ([a-z0-9])

Identifier of waitlist

Request Example
{
  "id": "string ([a-z0-9])",
  "name": "string",
  "email": "string (email)",
  "phone": "string ([+0-9])",
  "customerId": "string",
  "partySize": "integer (int64)",
  "notes": "string",
  "serviceIds": [
    "string"
  ],
  "resourceIds": [
    "string"
  ],
  "quotedWaitDuration": "integer (int64)",
  "state": "string",
  "options": {
    "optionId": [
      "string"
    ]
  }
}
201 Created

A Guest

400 Bad Request

Bad request - Invalid or missing parameter

401 Unauthorized

Unauthorized - No valid API key provided.

404 Not Found

Not Found - The requested resource doesn't exist.

500 Internal Server Error

Unexpected server error - Something went wrong on Waitwhile's end.

Response Example (201 Created)
{
  "id": "string ([a-z0-9])",
  "name": "string",
  "email": "string (email)",
  "phone": "string ([+0-9])",
  "customerId": "string",
  "partySize": "integer (int64)",
  "notes": "string",
  "serviceIds": [
    "string"
  ],
  "resourceIds": [
    "string"
  ],
  "quotedWaitDuration": "integer (int64)",
  "waitlistTime": "integer (int64)",
  "serveTime": "integer (int64)",
  "waitlistId": "string ([a-z0-9])",
  "state": "string",
  "position": "integer (int64)",
  "originalPosition": "integer (int64)",
  "estWaitDuration": "integer (int64)",
  "options": {
    "optionId": [
      "string"
    ]
  }
}
Response Example (400 Bad Request)
{
  "type": "string",
  "code": "integer (int32)",
  "message": "string"
}
Response Example (401 Unauthorized)
{
  "type": "string",
  "code": "integer (int32)",
  "message": "string"
}
Response Example (404 Not Found)
{
  "type": "string",
  "code": "integer (int32)",
  "message": "string"
}
Response Example (500 Internal Server Error)
{
  "type": "string",
  "code": "integer (int32)",
  "message": "string"
}

List guests

GET /waitlists/{waitlistId}/guests

Returns a list of guests associated with waitlist. The guests are returned sorted by position. Passing an optional state will result in filtering to guests in only that state. If no guests are found, the resulting array will be empty.

waitlistId
in path
string ([a-z0-9])

Identifier of waitlist

state
in query
string waiting, serving

State of guests

200 OK

A list of Guests

400 Bad Request

Bad request - Invalid or missing parameter

401 Unauthorized

Unauthorized - No valid API key provided.

404 Not Found

Not Found - The requested resource doesn't exist.

500 Internal Server Error

Unexpected server error - Something went wrong on Waitwhile's end.

Response Example (200 OK)
[
  {
    "id": "string ([a-z0-9])",
    "name": "string",
    "email": "string (email)",
    "phone": "string ([+0-9])",
    "customerId": "string",
    "partySize": "integer (int64)",
    "notes": "string",
    "serviceIds": [
      "string"
    ],
    "resourceIds": [
      "string"
    ],
    "quotedWaitDuration": "integer (int64)",
    "waitlistTime": "integer (int64)",
    "serveTime": "integer (int64)",
    "waitlistId": "string ([a-z0-9])",
    "state": "string",
    "position": "integer (int64)",
    "originalPosition": "integer (int64)",
    "estWaitDuration": "integer (int64)",
    "options": {
      "optionId": [
        "string"
      ]
    }
  }
]
Response Example (400 Bad Request)
{
  "type": "string",
  "code": "integer (int32)",
  "message": "string"
}
Response Example (401 Unauthorized)
{
  "type": "string",
  "code": "integer (int32)",
  "message": "string"
}
Response Example (404 Not Found)
{
  "type": "string",
  "code": "integer (int32)",
  "message": "string"
}
Response Example (500 Internal Server Error)
{
  "type": "string",
  "code": "integer (int32)",
  "message": "string"
}

Create a guest

POST /waitlists/{waitlistId}/guests

Returns a guest object if the call succeeded. If no state is provided the guest will be added as waiting. If no position is provided the guest will be placed last. The returned object will have information about staff, services, custom options if that information has been provided.

The Guest to create.

waitlistId
in path
string ([a-z0-9])

Identifier of waitlist

state
in query
string waiting, serving

State of guests

Request Example
{
  "id": "string ([a-z0-9])",
  "name": "string",
  "email": "string (email)",
  "phone": "string ([+0-9])",
  "customerId": "string",
  "partySize": "integer (int64)",
  "notes": "string",
  "serviceIds": [
    "string"
  ],
  "resourceIds": [
    "string"
  ],
  "quotedWaitDuration": "integer (int64)",
  "state": "string",
  "options": {
    "optionId": [
      "string"
    ]
  }
}
201 Created

A Guest

400 Bad Request

Bad request - Invalid or missing parameter

401 Unauthorized

Unauthorized - No valid API key provided.

404 Not Found

Not Found - The requested resource doesn't exist.

500 Internal Server Error

Unexpected server error - Something went wrong on Waitwhile's end.

Response Example (201 Created)
{
  "id": "string ([a-z0-9])",
  "name": "string",
  "email": "string (email)",
  "phone": "string ([+0-9])",
  "customerId": "string",
  "partySize": "integer (int64)",
  "notes": "string",
  "serviceIds": [
    "string"
  ],
  "resourceIds": [
    "string"
  ],
  "quotedWaitDuration": "integer (int64)",
  "waitlistTime": "integer (int64)",
  "serveTime": "integer (int64)",
  "waitlistId": "string ([a-z0-9])",
  "state": "string",
  "position": "integer (int64)",
  "originalPosition": "integer (int64)",
  "estWaitDuration": "integer (int64)",
  "options": {
    "optionId": [
      "string"
    ]
  }
}
Response Example (400 Bad Request)
{
  "type": "string",
  "code": "integer (int32)",
  "message": "string"
}
Response Example (401 Unauthorized)
{
  "type": "string",
  "code": "integer (int32)",
  "message": "string"
}
Response Example (404 Not Found)
{
  "type": "string",
  "code": "integer (int32)",
  "message": "string"
}
Response Example (500 Internal Server Error)
{
  "type": "string",
  "code": "integer (int32)",
  "message": "string"
}

Retrieve a guest

GET /waitlists/{waitlistId}/guests/{guestId}

Retrieves the details of an existing guest. You need to supply the unique guest identifier that was returned upon guest creation.

waitlistId
in path
string ([a-z0-9])

Identifier of waitlist

guestId
in path
string ([a-z0-9])

Identifier of guest

200 OK

A Guest

400 Bad Request

Bad request - Invalid or missing parameter

401 Unauthorized

Unauthorized - No valid API key provided.

404 Not Found

Not Found - The requested resource doesn't exist.

500 Internal Server Error

Unexpected server error - Something went wrong on Waitwhile's end.

Response Example (200 OK)
{
  "id": "string ([a-z0-9])",
  "name": "string",
  "email": "string (email)",
  "phone": "string ([+0-9])",
  "customerId": "string",
  "partySize": "integer (int64)",
  "notes": "string",
  "serviceIds": [
    "string"
  ],
  "resourceIds": [
    "string"
  ],
  "quotedWaitDuration": "integer (int64)",
  "waitlistTime": "integer (int64)",
  "serveTime": "integer (int64)",
  "waitlistId": "string ([a-z0-9])",
  "state": "string",
  "position": "integer (int64)",
  "originalPosition": "integer (int64)",
  "estWaitDuration": "integer (int64)",
  "options": {
    "optionId": [
      "string"
    ]
  }
}
Response Example (400 Bad Request)
{
  "type": "string",
  "code": "integer (int32)",
  "message": "string"
}
Response Example (401 Unauthorized)
{
  "type": "string",
  "code": "integer (int32)",
  "message": "string"
}
Response Example (404 Not Found)
{
  "type": "string",
  "code": "integer (int32)",
  "message": "string"
}
Response Example (500 Internal Server Error)
{
  "type": "string",
  "code": "integer (int32)",
  "message": "string"
}

Update a guest

POST /waitlists/{waitlistId}/guests/{guestId}

Updates the specified guest by setting the values of the parameters passed. Any parameters not provided will be left unchanged. By updating a guest's state you can serve or mark the guest as waiting, serving, noshow, cancelled or completed. You can also move a guest within a waitlist by passing the position parameter. You need to supply the unique guest identifier that was returned upon guest creation.

The Guest to update.

waitlistId
in path
string ([a-z0-9])

Identifier of waitlist

guestId
in path
string ([a-z0-9])

Identifier of guest

Request Example
{
  "id": "string ([a-z0-9])",
  "name": "string",
  "email": "string (email)",
  "phone": "string ([+0-9])",
  "customerId": "string",
  "partySize": "integer (int64)",
  "notes": "string",
  "serviceIds": [
    "string"
  ],
  "resourceIds": [
    "string"
  ],
  "quotedWaitDuration": "integer (int64)",
  "state": "string",
  "options": {
    "optionId": [
      "string"
    ]
  }
}
201 Created

A Guest

400 Bad Request

Bad request - Invalid or missing parameter

401 Unauthorized

Unauthorized - No valid API key provided.

404 Not Found

Not Found - The requested resource doesn't exist.

500 Internal Server Error

Unexpected server error - Something went wrong on Waitwhile's end.

Response Example (201 Created)
{
  "id": "string ([a-z0-9])",
  "name": "string",
  "email": "string (email)",
  "phone": "string ([+0-9])",
  "customerId": "string",
  "partySize": "integer (int64)",
  "notes": "string",
  "serviceIds": [
    "string"
  ],
  "resourceIds": [
    "string"
  ],
  "quotedWaitDuration": "integer (int64)",
  "waitlistTime": "integer (int64)",
  "serveTime": "integer (int64)",
  "waitlistId": "string ([a-z0-9])",
  "state": "string",
  "position": "integer (int64)",
  "originalPosition": "integer (int64)",
  "estWaitDuration": "integer (int64)",
  "options": {
    "optionId": [
      "string"
    ]
  }
}
Response Example (400 Bad Request)
{
  "type": "string",
  "code": "integer (int32)",
  "message": "string"
}
Response Example (401 Unauthorized)
{
  "type": "string",
  "code": "integer (int32)",
  "message": "string"
}
Response Example (404 Not Found)
{
  "type": "string",
  "code": "integer (int32)",
  "message": "string"
}
Response Example (500 Internal Server Error)
{
  "type": "string",
  "code": "integer (int32)",
  "message": "string"
}

Remove a guest

DELETE /waitlists/{waitlistId}/guests/{guestId}

Removes a guest from a waitlist regardless of state. You need to supply the unique guest identifier that was returned upon guest creation.

waitlistId
in path
string ([a-z0-9])

Identifier of waitlist

guestId
in path
string ([a-z0-9])

Identifier of guest

200 OK

Success - Guest removed

400 Bad Request

Bad request - Invalid or missing parameter

401 Unauthorized

Unauthorized - No valid API key provided.

404 Not Found

Not Found - The requested resource doesn't exist.

500 Internal Server Error

Unexpected server error - Something went wrong on Waitwhile's end.

Response Example (200 OK)
{
  "type": "string",
  "code": "integer (int32)",
  "message": "string"
}
Response Example (400 Bad Request)
{
  "type": "string",
  "code": "integer (int32)",
  "message": "string"
}
Response Example (401 Unauthorized)
{
  "type": "string",
  "code": "integer (int32)",
  "message": "string"
}
Response Example (404 Not Found)
{
  "type": "string",
  "code": "integer (int32)",
  "message": "string"
}
Response Example (500 Internal Server Error)
{
  "type": "string",
  "code": "integer (int32)",
  "message": "string"
}

Bookings

Bookings contain operations relating to waitlist bookings.

List bookings

GET /waitlists/{waitlistId}/bookings

Returns a list of bookings associated with waitlist. The bookings are returned sorted by booking time. If no bookings are found, the resulting array will be empty.

fromTime
in query
int64

Filter bookings greater than specified time

toTime
in query
int64

Filter bookings lesser than specified time

waitlistId
in path
string ([a-z0-9])

Identifier of waitlist

200 OK

A list of Bookings

400 Bad Request

Bad request - Invalid or missing parameter

401 Unauthorized

Unauthorized - No valid API key provided.

404 Not Found

Not Found - The requested resource doesn't exist.

500 Internal Server Error

Unexpected server error - Something went wrong on Waitwhile's end.

Response Example (200 OK)
[
  {
    "id": "string ([a-z0-9])",
    "time": "integer (int64)",
    "duration": "integer (int64)",
    "name": "string",
    "email": "string (email)",
    "phone": "string ([+0-9])",
    "customerId": "string",
    "partySize": "integer (int64)",
    "notes": "string",
    "serviceIds": [
      "string"
    ],
    "resourceIds": [
      "string"
    ],
    "waitlistId": "string ([a-z0-9])",
    "state": "string",
    "options": {
      "optionId": [
        "string"
      ]
    }
  }
]
Response Example (400 Bad Request)
{
  "type": "string",
  "code": "integer (int32)",
  "message": "string"
}
Response Example (401 Unauthorized)
{
  "type": "string",
  "code": "integer (int32)",
  "message": "string"
}
Response Example (404 Not Found)
{
  "type": "string",
  "code": "integer (int32)",
  "message": "string"
}
Response Example (500 Internal Server Error)
{
  "type": "string",
  "code": "integer (int32)",
  "message": "string"
}

Create a booking

POST /waitlists/{waitlistId}/bookings

Returns a booking object if the call succeeded. If no state is provided the booking will be added as booked. The returned object will have information about staff, services, custom options if that information has been provided.

The Booking to create.

waitlistId
in path
string ([a-z0-9])

Identifier of waitlist

Request Example
{
  "id": "string ([a-z0-9])",
  "time": "integer (int64)",
  "duration": "integer (int64)",
  "name": "string",
  "email": "string (email)",
  "phone": "string ([+0-9])",
  "customerId": "string",
  "partySize": "integer (int64)",
  "notes": "string",
  "serviceIds": [
    "string"
  ],
  "resourceIds": [
    "string"
  ],
  "state": "string",
  "options": {
    "optionId": [
      "string"
    ]
  }
}
201 Created

A Booking

400 Bad Request

Bad request - Invalid or missing parameter

401 Unauthorized

Unauthorized - No valid API key provided.

404 Not Found

Not Found - The requested resource doesn't exist.

500 Internal Server Error

Unexpected server error - Something went wrong on Waitwhile's end.

Response Example (201 Created)
{
  "id": "string ([a-z0-9])",
  "time": "integer (int64)",
  "duration": "integer (int64)",
  "name": "string",
  "email": "string (email)",
  "phone": "string ([+0-9])",
  "customerId": "string",
  "partySize": "integer (int64)",
  "notes": "string",
  "serviceIds": [
    "string"
  ],
  "resourceIds": [
    "string"
  ],
  "waitlistId": "string ([a-z0-9])",
  "state": "string",
  "options": {
    "optionId": [
      "string"
    ]
  }
}
Response Example (400 Bad Request)
{
  "type": "string",
  "code": "integer (int32)",
  "message": "string"
}
Response Example (401 Unauthorized)
{
  "type": "string",
  "code": "integer (int32)",
  "message": "string"
}
Response Example (404 Not Found)
{
  "type": "string",
  "code": "integer (int32)",
  "message": "string"
}
Response Example (500 Internal Server Error)
{
  "type": "string",
  "code": "integer (int32)",
  "message": "string"
}

Retrieve a booking

GET /waitlists/{waitlistId}/bookings/{bookingId}

Retrieves the details of an existing booking. You need to supply the unique booking identifier that was returned upon booking creation.

waitlistId
in path
string ([a-z0-9])

Identifier of waitlist

bookingId
in path
string ([a-z0-9])

Identifier of booking

200 OK

A Booking

400 Bad Request

Bad request - Invalid or missing parameter

401 Unauthorized

Unauthorized - No valid API key provided.

404 Not Found

Not Found - The requested resource doesn't exist.

500 Internal Server Error

Unexpected server error - Something went wrong on Waitwhile's end.

Response Example (200 OK)
{
  "id": "string ([a-z0-9])",
  "time": "integer (int64)",
  "duration": "integer (int64)",
  "name": "string",
  "email": "string (email)",
  "phone": "string ([+0-9])",
  "customerId": "string",
  "partySize": "integer (int64)",
  "notes": "string",
  "serviceIds": [
    "string"
  ],
  "resourceIds": [
    "string"
  ],
  "waitlistId": "string ([a-z0-9])",
  "state": "string",
  "options": {
    "optionId": [
      "string"
    ]
  }
}
Response Example (400 Bad Request)
{
  "type": "string",
  "code": "integer (int32)",
  "message": "string"
}
Response Example (401 Unauthorized)
{
  "type": "string",
  "code": "integer (int32)",
  "message": "string"
}
Response Example (404 Not Found)
{
  "type": "string",
  "code": "integer (int32)",
  "message": "string"
}
Response Example (500 Internal Server Error)
{
  "type": "string",
  "code": "integer (int32)",
  "message": "string"
}

Update a booking

POST /waitlists/{waitlistId}/bookings/{bookingId}

Updates the specified booking by setting the values of the parameters passed. Any parameters not provided will be left unchanged. By updating a booking's state you can serve or mark the booking as waiting, serving, noshow, cancelled or completed. You need to supply the unique booking identifier that was returned upon booking creation.

The Booking to update.

waitlistId
in path
string ([a-z0-9])

Identifier of waitlist

bookingId
in path
string ([a-z0-9])

Identifier of booking

Request Example
{
  "id": "string ([a-z0-9])",
  "time": "integer (int64)",
  "duration": "integer (int64)",
  "name": "string",
  "email": "string (email)",
  "phone": "string ([+0-9])",
  "customerId": "string",
  "partySize": "integer (int64)",
  "notes": "string",
  "serviceIds": [
    "string"
  ],
  "resourceIds": [
    "string"
  ],
  "state": "string",
  "options": {
    "optionId": [
      "string"
    ]
  }
}
201 Created

A Booking

400 Bad Request

Bad request - Invalid or missing parameter

401 Unauthorized

Unauthorized - No valid API key provided.

404 Not Found

Not Found - The requested resource doesn't exist.

500 Internal Server Error

Unexpected server error - Something went wrong on Waitwhile's end.

Response Example (201 Created)
{
  "id": "string ([a-z0-9])",
  "time": "integer (int64)",
  "duration": "integer (int64)",
  "name": "string",
  "email": "string (email)",
  "phone": "string ([+0-9])",
  "customerId": "string",
  "partySize": "integer (int64)",
  "notes": "string",
  "serviceIds": [
    "string"
  ],
  "resourceIds": [
    "string"
  ],
  "waitlistId": "string ([a-z0-9])",
  "state": "string",
  "options": {
    "optionId": [
      "string"
    ]
  }
}
Response Example (400 Bad Request)
{
  "type": "string",
  "code": "integer (int32)",
  "message": "string"
}
Response Example (401 Unauthorized)
{
  "type": "string",
  "code": "integer (int32)",
  "message": "string"
}
Response Example (404 Not Found)
{
  "type": "string",
  "code": "integer (int32)",
  "message": "string"
}
Response Example (500 Internal Server Error)
{
  "type": "string",
  "code": "integer (int32)",
  "message": "string"
}

Remove a booking

DELETE /waitlists/{waitlistId}/bookings/{bookingId}

Removes a booking from a waitlist regardless of state. You need to supply the unique booking identifier that was returned upon booking creation.

waitlistId
in path
string ([a-z0-9])

Identifier of waitlist

bookingId
in path
string ([a-z0-9])

Identifier of booking

200 OK

Success - Booking removed

400 Bad Request

Bad request - Invalid or missing parameter

401 Unauthorized

Unauthorized - No valid API key provided.

404 Not Found

Not Found - The requested resource doesn't exist.

500 Internal Server Error

Unexpected server error - Something went wrong on Waitwhile's end.

Response Example (200 OK)
{
  "type": "string",
  "code": "integer (int32)",
  "message": "string"
}
Response Example (400 Bad Request)
{
  "type": "string",
  "code": "integer (int32)",
  "message": "string"
}
Response Example (401 Unauthorized)
{
  "type": "string",
  "code": "integer (int32)",
  "message": "string"
}
Response Example (404 Not Found)
{
  "type": "string",
  "code": "integer (int32)",
  "message": "string"
}
Response Example (500 Internal Server Error)
{
  "type": "string",
  "code": "integer (int32)",
  "message": "string"
}

Resources

Resources contain operations relating to account resources.

List resources

GET /resources

Return a list of resources associated with the account.

200 OK

A list of Resources

400 Bad Request

Bad request - Invalid or missing parameter

401 Unauthorized

Unauthorized - No valid API key provided.

500 Internal Server Error

Unexpected server error - Something went wrong on Waitwhile's end.

Response Example (200 OK)
[
  {
    "id": "string ([A-Za-z0-9_-])",
    "name": "string",
    "categoryId": "string ([A-Za-z0-9_-])",
    "isCategory": "boolean",
    "userId": "string ([A-Za-z0-9_-])",
    "isAway": "boolean",
    "waitlistIds": [
      "string"
    ]
  }
]
Response Example (400 Bad Request)
{
  "type": "string",
  "code": "integer (int32)",
  "message": "string"
}
Response Example (401 Unauthorized)
{
  "type": "string",
  "code": "integer (int32)",
  "message": "string"
}
Response Example (500 Internal Server Error)
{
  "type": "string",
  "code": "integer (int32)",
  "message": "string"
}

Retrieve a resource

GET /resources/{resourceId}

Retrieves the details of an existing resource. You need to supply the unique resource identifier that was returned upon resource creation.

resourceId
in path
string ([A-Za-z0-9_-])

Identifier of resource

200 OK

A Resource

400 Bad Request

Bad request - Invalid or missing parameter

401 Unauthorized

Unauthorized - No valid API key provided.

404 Not Found

Not Found - The requested resource doesn't exist.

500 Internal Server Error

Unexpected server error - Something went wrong on Waitwhile's end.

Response Example (200 OK)
{
  "id": "string ([A-Za-z0-9_-])",
  "name": "string",
  "categoryId": "string ([A-Za-z0-9_-])",
  "isCategory": "boolean",
  "userId": "string ([A-Za-z0-9_-])",
  "isAway": "boolean",
  "waitlistIds": [
    "string"
  ]
}
Response Example (400 Bad Request)
{
  "type": "string",
  "code": "integer (int32)",
  "message": "string"
}
Response Example (401 Unauthorized)
{
  "type": "string",
  "code": "integer (int32)",
  "message": "string"
}
Response Example (404 Not Found)
{
  "type": "string",
  "code": "integer (int32)",
  "message": "string"
}
Response Example (500 Internal Server Error)
{
  "type": "string",
  "code": "integer (int32)",
  "message": "string"
}

Update a resource

POST /resources/{resourceId}

Updates the specified resource by setting the values of the parameters passed. Any parameters not provided will be left unchanged. Currently only isAway and waitlists are supported. You need to supply the unique resource identifier that was returned upon resource creation.

The Resource to update.

resourceId
in path
string ([A-Za-z0-9_-])

Identifier of resource

Request Example
{
  "name": "string",
  "categoryId": "string ([A-Za-z0-9_-])",
  "userId": "string ([A-Za-z0-9_-])",
  "isAway": "boolean",
  "waitlistIds": [
    "string"
  ]
}
201 Created

A Resource

400 Bad Request

Bad request - Invalid or missing parameter

401 Unauthorized

Unauthorized - No valid API key provided.

404 Not Found

Not Found - The requested resource doesn't exist.

500 Internal Server Error

Unexpected server error - Something went wrong on Waitwhile's end.

Response Example (201 Created)
{
  "id": "string ([A-Za-z0-9_-])",
  "name": "string",
  "categoryId": "string ([A-Za-z0-9_-])",
  "isCategory": "boolean",
  "userId": "string ([A-Za-z0-9_-])",
  "isAway": "boolean",
  "waitlistIds": [
    "string"
  ]
}
Response Example (400 Bad Request)
{
  "type": "string",
  "code": "integer (int32)",
  "message": "string"
}
Response Example (401 Unauthorized)
{
  "type": "string",
  "code": "integer (int32)",
  "message": "string"
}
Response Example (404 Not Found)
{
  "type": "string",
  "code": "integer (int32)",
  "message": "string"
}
Response Example (500 Internal Server Error)
{
  "type": "string",
  "code": "integer (int32)",
  "message": "string"
}

Customers

Customers contain operations relating to account customers.

List all customers

GET /customers

Return a list of customers associated with an account. If no customers are found, the resulting array will be empty.

200 OK

A list of Customers

400 Bad Request

Bad request - Invalid or missing parameter

401 Unauthorized

Unauthorized - No valid API key provided.

404 Not Found

Not Found - The requested resource doesn't exist.

500 Internal Server Error

Unexpected server error - Something went wrong on Waitwhile's end.

Response Example (200 OK)
[
  {
    "id": "string ([a-z0-9])",
    "name": "string",
    "firstName": "string",
    "lastName": "string",
    "email": "string (email)",
    "phone": "string ([+0-9])",
    "customerId": "string",
    "notes": "string",
    "waitlistStates": {
      "waitlistId": [
        "string"
      ]
    },
    "lastVisit": "integer (int64)",
    "waitlistLastVisits": {
      "waitlistId": [
        "integer (int64)"
      ]
    },
    "numVisits": "integer (int64)"
  }
]
Response Example (400 Bad Request)
{
  "type": "string",
  "code": "integer (int32)",
  "message": "string"
}
Response Example (401 Unauthorized)
{
  "type": "string",
  "code": "integer (int32)",
  "message": "string"
}
Response Example (404 Not Found)
{
  "type": "string",
  "code": "integer (int32)",
  "message": "string"
}
Response Example (500 Internal Server Error)
{
  "type": "string",
  "code": "integer (int32)",
  "message": "string"
}

Create customers

POST /customers

Returns an array of customers if the call succeeded.

The Customers to create.

Request Example
[
  {
    "name": "string",
    "firstName": "string",
    "lastName": "string",
    "email": "string (email)",
    "phone": "string ([+0-9])",
    "customerId": "string",
    "notes": "string"
  }
]
201 Created

A list of Customers

400 Bad Request

Bad request - Invalid or missing parameter

401 Unauthorized

Unauthorized - No valid API key provided.

404 Not Found

Not Found - The requested resource doesn't exist.

500 Internal Server Error

Unexpected server error - Something went wrong on Waitwhile's end.

Response Example (201 Created)
[
  {
    "id": "string ([a-z0-9])",
    "name": "string",
    "firstName": "string",
    "lastName": "string",
    "email": "string (email)",
    "phone": "string ([+0-9])",
    "customerId": "string",
    "notes": "string",
    "waitlistStates": {
      "waitlistId": [
        "string"
      ]
    },
    "lastVisit": "integer (int64)",
    "waitlistLastVisits": {
      "waitlistId": [
        "integer (int64)"
      ]
    },
    "numVisits": "integer (int64)"
  }
]
Response Example (400 Bad Request)
{
  "type": "string",
  "code": "integer (int32)",
  "message": "string"
}
Response Example (401 Unauthorized)
{
  "type": "string",
  "code": "integer (int32)",
  "message": "string"
}
Response Example (404 Not Found)
{
  "type": "string",
  "code": "integer (int32)",
  "message": "string"
}
Response Example (500 Internal Server Error)
{
  "type": "string",
  "code": "integer (int32)",
  "message": "string"
}

Retrieve a customer

GET /customers/{customerId}

Retrieves the details of an existing customer. You need to supply the unique customer identifier that was returned upon customer creation.

customerId
in path
string ([a-z0-9])

Identifier of customer

200 OK

A Customer

400 Bad Request

Bad request - Invalid or missing parameter

401 Unauthorized

Unauthorized - No valid API key provided.

404 Not Found

Not Found - The requested resource doesn't exist.

500 Internal Server Error

Unexpected server error - Something went wrong on Waitwhile's end.

Response Example (200 OK)
{
  "id": "string ([a-z0-9])",
  "name": "string",
  "firstName": "string",
  "lastName": "string",
  "email": "string (email)",
  "phone": "string ([+0-9])",
  "customerId": "string",
  "notes": "string",
  "waitlistStates": {
    "waitlistId": [
      "string"
    ]
  },
  "lastVisit": "integer (int64)",
  "waitlistLastVisits": {
    "waitlistId": [
      "integer (int64)"
    ]
  },
  "numVisits": "integer (int64)"
}
Response Example (400 Bad Request)
{
  "type": "string",
  "code": "integer (int32)",
  "message": "string"
}
Response Example (401 Unauthorized)
{
  "type": "string",
  "code": "integer (int32)",
  "message": "string"
}
Response Example (404 Not Found)
{
  "type": "string",
  "code": "integer (int32)",
  "message": "string"
}
Response Example (500 Internal Server Error)
{
  "type": "string",
  "code": "integer (int32)",
  "message": "string"
}

Update a customer

POST /customers/{customerId}

Updates the specified customer by setting the values of the parameters passed. Any parameters not provided will be left unchanged. You need to supply the unique customer identifier that was returned upon customer creation.

The Customer to update.

customerId
in path
string ([a-z0-9])

Identifier of customer

Request Example
{
  "name": "string",
  "firstName": "string",
  "lastName": "string",
  "email": "string (email)",
  "phone": "string ([+0-9])",
  "customerId": "string",
  "notes": "string"
}
201 Created

A Customer

400 Bad Request

Bad request - Invalid or missing parameter

401 Unauthorized

Unauthorized - No valid API key provided.

404 Not Found

Not Found - The requested resource doesn't exist.

500 Internal Server Error

Unexpected server error - Something went wrong on Waitwhile's end.

Response Example (201 Created)
{
  "id": "string ([a-z0-9])",
  "name": "string",
  "firstName": "string",
  "lastName": "string",
  "email": "string (email)",
  "phone": "string ([+0-9])",
  "customerId": "string",
  "notes": "string",
  "waitlistStates": {
    "waitlistId": [
      "string"
    ]
  },
  "lastVisit": "integer (int64)",
  "waitlistLastVisits": {
    "waitlistId": [
      "integer (int64)"
    ]
  },
  "numVisits": "integer (int64)"
}
Response Example (400 Bad Request)
{
  "type": "string",
  "code": "integer (int32)",
  "message": "string"
}
Response Example (401 Unauthorized)
{
  "type": "string",
  "code": "integer (int32)",
  "message": "string"
}
Response Example (404 Not Found)
{
  "type": "string",
  "code": "integer (int32)",
  "message": "string"
}
Response Example (500 Internal Server Error)
{
  "type": "string",
  "code": "integer (int32)",
  "message": "string"
}

Remove a customer

DELETE /customers/{customerId}

Removes a customer from an account with all associated information like visits and messages. You need to supply the unique customer identifier that was returned upon guest creation.

customerId
in path
string ([a-z0-9])

Identifier of customer

200 OK

Success - Guest removed

400 Bad Request

Bad request - Invalid or missing parameter

401 Unauthorized

Unauthorized - No valid API key provided.

404 Not Found

Not Found - The requested resource doesn't exist.

500 Internal Server Error

Unexpected server error - Something went wrong on Waitwhile's end.

Response Example (200 OK)
{
  "type": "string",
  "code": "integer (int32)",
  "message": "string"
}
Response Example (400 Bad Request)
{
  "type": "string",
  "code": "integer (int32)",
  "message": "string"
}
Response Example (401 Unauthorized)
{
  "type": "string",
  "code": "integer (int32)",
  "message": "string"
}
Response Example (404 Not Found)
{
  "type": "string",
  "code": "integer (int32)",
  "message": "string"
}
Response Example (500 Internal Server Error)
{
  "type": "string",
  "code": "integer (int32)",
  "message": "string"
}

Data Export

Export customer data

POST /export/customers

Returns a JSON or CSV file of customer data associated with the account. The customers can be filtered on waitlist identifier and creation time. If no customers are found, the resulting file will be empty.

type
in query
string json, csv

Type of data format desired

waitlistId
in query
string

Filter customers associated with a particular waitlist

fromTime
in query
int64

Filter customers created after or equal to specified time

toTime
in query
int64

Filter customers created before or equal to specified time

200 OK

A JSON or CSV file

400 Bad Request

Bad request - Invalid or missing parameter

401 Unauthorized

Unauthorized - No valid API key provided.

404 Not Found

Not Found - The requested resource doesn't exist.

500 Internal Server Error

Unexpected server error - Something went wrong on Waitwhile's end.

Response Example (400 Bad Request)
{
  "type": "string",
  "code": "integer (int32)",
  "message": "string"
}
Response Example (401 Unauthorized)
{
  "type": "string",
  "code": "integer (int32)",
  "message": "string"
}
Response Example (404 Not Found)
{
  "type": "string",
  "code": "integer (int32)",
  "message": "string"
}
Response Example (500 Internal Server Error)
{
  "type": "string",
  "code": "integer (int32)",
  "message": "string"
}

Export visit data

POST /export/visits

Returns a JSON or CSV file of visit data associated with the account. The visits can be filtered on waitlist identifier and creation time. If no visits are found, the resulting file will be empty.

type
in query
string json, csv

Type of data format desired

waitlistId
in query
string

Filter visits associated with a particular waitlist

fromTime
in query
int64

Filter visits created after or equal to specified time

toTime
in query
int64

Filter visits created before or equal to specified time

200 OK

A JSON or CSV file

400 Bad Request

Bad request - Invalid or missing parameter

401 Unauthorized

Unauthorized - No valid API key provided.

404 Not Found

Not Found - The requested resource doesn't exist.

500 Internal Server Error

Unexpected server error - Something went wrong on Waitwhile's end.

Response Example (400 Bad Request)
{
  "type": "string",
  "code": "integer (int32)",
  "message": "string"
}
Response Example (401 Unauthorized)
{
  "type": "string",
  "code": "integer (int32)",
  "message": "string"
}
Response Example (404 Not Found)
{
  "type": "string",
  "code": "integer (int32)",
  "message": "string"
}
Response Example (500 Internal Server Error)
{
  "type": "string",
  "code": "integer (int32)",
  "message": "string"
}

Schema Definitions

Waitlist: object

An object representing a list of guests. The guests can be in different states primarily waiting and serving.

id: string ([a-z0-9])
name: string
businessName: string
phone: string ([+0-9])
email: email
currency: string ([A-Z]) 3 ≤ x ≤ 3
timezone: string
businessHours: Hours
waitlistHours: Hours
bookingHours: Hours
accountId: string ([a-z0-9])
Example
{
  "id": "string ([a-z0-9])",
  "name": "string",
  "businessName": "string",
  "phone": "string ([+0-9])",
  "email": "email",
  "currency": "string ([A-Z])",
  "timezone": "string",
  "businessHours": {
    "mon": {
      "isOpen": "boolean",
      "periods": [
        {
          "to": "integer (int32)",
          "from": "integer (int32)"
        }
      ]
    }
  },
  "waitlistHours": {
    "mon": {
      "isOpen": "boolean",
      "periods": [
        {
          "to": "integer (int32)",
          "from": "integer (int32)"
        }
      ]
    }
  },
  "bookingHours": {
    "mon": {
      "isOpen": "boolean",
      "periods": [
        {
          "to": "integer (int32)",
          "from": "integer (int32)"
        }
      ]
    }
  },
  "accountId": "string ([a-z0-9])"
}

Waitlists: array

A list of Waitlist objects.

Waitlist
Example
[
  {
    "id": "string ([a-z0-9])",
    "name": "string",
    "businessName": "string",
    "phone": "string ([+0-9])",
    "email": "email",
    "currency": "string ([A-Z])",
    "timezone": "string",
    "businessHours": {
      "mon": {
        "isOpen": "boolean",
        "periods": [
          {
            "to": "integer (int32)",
            "from": "integer (int32)"
          }
        ]
      }
    },
    "waitlistHours": {
      "mon": {
        "isOpen": "boolean",
        "periods": [
          {
            "to": "integer (int32)",
            "from": "integer (int32)"
          }
        ]
      }
    },
    "bookingHours": {
      "mon": {
        "isOpen": "boolean",
        "periods": [
          {
            "to": "integer (int32)",
            "from": "integer (int32)"
          }
        ]
      }
    },
    "accountId": "string ([a-z0-9])"
  }
]

WaitlistStatus: object

An object representing status information of a waitlist like number of waiting and estimated wait time.

id: string ([a-z0-9])
name: string
numberOfWaiting: integer (int64) x ≥ 0
numberOfServing: integer (int64) x ≥ 0
isBookingOpen: boolean
isOpen: boolean
isFull: boolean
estimatedWait: integer (int64) x ≥ 0
estimatedWaitByStaff: object
staffId: integer (int64) x ≥ 0
estimatedWaitByResource: object
categoryId: object
resourceId: integer (int64) x ≥ 0
estimatedWaitByService: object
serviceId: integer (int64) x ≥ 0
Example
{
  "id": "string ([a-z0-9])",
  "name": "string",
  "numberOfWaiting": "integer (int64)",
  "numberOfServing": "integer (int64)",
  "isBookingOpen": "boolean",
  "isOpen": "boolean",
  "isFull": "boolean",
  "estimatedWait": "integer (int64)",
  "estimatedWaitByStaff": {
    "staffId": "integer (int64)"
  },
  "estimatedWaitByResource": {
    "categoryId": {
      "resourceId": "integer (int64)"
    }
  },
  "estimatedWaitByService": {
    "serviceId": "integer (int64)"
  }
}

Guest: object

An object representing a customer's state on a waitlist.

id: string ([a-z0-9])
name: string
email: string (email)
phone: string ([+0-9])
customerId: string
partySize: integer (int64)
notes: string
serviceIds: string[]
string
resourceIds: string[]
string
quotedWaitDuration: integer (int64) x ≥ 0
waitlistTime: integer (int64) x ≥ 0
serveTime: integer (int64) x ≥ 0
waitlistId: string ([a-z0-9])
state: string waiting, serving, noshow, completed, cancelled, removed
position: integer (int64) x ≥ 1
originalPosition: integer (int64) x ≥ 1
estWaitDuration: integer (int64) x ≥ 0
options: object
optionId: string[]
string
Example
{
  "id": "string ([a-z0-9])",
  "name": "string",
  "email": "string (email)",
  "phone": "string ([+0-9])",
  "customerId": "string",
  "partySize": "integer (int64)",
  "notes": "string",
  "serviceIds": [
    "string"
  ],
  "resourceIds": [
    "string"
  ],
  "quotedWaitDuration": "integer (int64)",
  "waitlistTime": "integer (int64)",
  "serveTime": "integer (int64)",
  "waitlistId": "string ([a-z0-9])",
  "state": "string",
  "position": "integer (int64)",
  "originalPosition": "integer (int64)",
  "estWaitDuration": "integer (int64)",
  "options": {
    "optionId": [
      "string"
    ]
  }
}

Guests: array

A list of Guests.

Guest
Example
[
  {
    "id": "string ([a-z0-9])",
    "name": "string",
    "email": "string (email)",
    "phone": "string ([+0-9])",
    "customerId": "string",
    "partySize": "integer (int64)",
    "notes": "string",
    "serviceIds": [
      "string"
    ],
    "resourceIds": [
      "string"
    ],
    "quotedWaitDuration": "integer (int64)",
    "waitlistTime": "integer (int64)",
    "serveTime": "integer (int64)",
    "waitlistId": "string ([a-z0-9])",
    "state": "string",
    "position": "integer (int64)",
    "originalPosition": "integer (int64)",
    "estWaitDuration": "integer (int64)",
    "options": {
      "optionId": [
        "string"
      ]
    }
  }
]

Booking: object

An object representing a customer's booking on a waitlist.

id: string ([a-z0-9])
time: integer (int64)
duration: integer (int64)
name: string
email: string (email)
phone: string ([+0-9])
customerId: string
partySize: integer (int64)
notes: string
serviceIds: string[]
string
resourceIds: string[]
string
waitlistId: string ([a-z0-9])
state: string booked, waiting, serving, noshow, completed, cancelled, removed
options: object
optionId: string[]
string
Example
{
  "id": "string ([a-z0-9])",
  "time": "integer (int64)",
  "duration": "integer (int64)",
  "name": "string",
  "email": "string (email)",
  "phone": "string ([+0-9])",
  "customerId": "string",
  "partySize": "integer (int64)",
  "notes": "string",
  "serviceIds": [
    "string"
  ],
  "resourceIds": [
    "string"
  ],
  "waitlistId": "string ([a-z0-9])",
  "state": "string",
  "options": {
    "optionId": [
      "string"
    ]
  }
}

Bookings: array

A list of Bookings.

Booking
Example
[
  {
    "id": "string ([a-z0-9])",
    "time": "integer (int64)",
    "duration": "integer (int64)",
    "name": "string",
    "email": "string (email)",
    "phone": "string ([+0-9])",
    "customerId": "string",
    "partySize": "integer (int64)",
    "notes": "string",
    "serviceIds": [
      "string"
    ],
    "resourceIds": [
      "string"
    ],
    "waitlistId": "string ([a-z0-9])",
    "state": "string",
    "options": {
      "optionId": [
        "string"
      ]
    }
  }
]

Customer: object

An object representing a customer for an account. A customer that is on a waitlist is called a Guest.

id: string ([a-z0-9])
name: string
firstName: string
lastName: string
email: string (email)
phone: string ([+0-9])
customerId: string
notes: string
waitlistStates: object
waitlistId: string[]
string
lastVisit: integer (int64) x ≥ 0
waitlistLastVisits: object
waitlistId: integer[]
integer (int64) x ≥ 0
numVisits: integer (int64) x ≥ 0
Example
{
  "id": "string ([a-z0-9])",
  "name": "string",
  "firstName": "string",
  "lastName": "string",
  "email": "string (email)",
  "phone": "string ([+0-9])",
  "customerId": "string",
  "notes": "string",
  "waitlistStates": {
    "waitlistId": [
      "string"
    ]
  },
  "lastVisit": "integer (int64)",
  "waitlistLastVisits": {
    "waitlistId": [
      "integer (int64)"
    ]
  },
  "numVisits": "integer (int64)"
}

Customers: array

A list of Customers.

Customer
Example
[
  {
    "id": "string ([a-z0-9])",
    "name": "string",
    "firstName": "string",
    "lastName": "string",
    "email": "string (email)",
    "phone": "string ([+0-9])",
    "customerId": "string",
    "notes": "string",
    "waitlistStates": {
      "waitlistId": [
        "string"
      ]
    },
    "lastVisit": "integer (int64)",
    "waitlistLastVisits": {
      "waitlistId": [
        "integer (int64)"
      ]
    },
    "numVisits": "integer (int64)"
  }
]

Resource: object

An object representing a resource for an account. A resource can be staff, rooms, tables or other items used by guests.

id: string ([A-Za-z0-9_-])
name: string
categoryId: string ([A-Za-z0-9_-])
isCategory: boolean
userId: string ([A-Za-z0-9_-])
isAway: boolean
waitlistIds: string[]
string
Example
{
  "id": "string ([A-Za-z0-9_-])",
  "name": "string",
  "categoryId": "string ([A-Za-z0-9_-])",
  "isCategory": "boolean",
  "userId": "string ([A-Za-z0-9_-])",
  "isAway": "boolean",
  "waitlistIds": [
    "string"
  ]
}

Resources: array

A list of Resources.

Resource
Example
[
  {
    "id": "string ([A-Za-z0-9_-])",
    "name": "string",
    "categoryId": "string ([A-Za-z0-9_-])",
    "isCategory": "boolean",
    "userId": "string ([A-Za-z0-9_-])",
    "isAway": "boolean",
    "waitlistIds": [
      "string"
    ]
  }
]

Hours: object

An object representing opening/business/operating hours. Each attribute is a weekday abbreviated as mon, tue, wed, thu, fri, sat and sun. Each weekday can contain periods specified as from/to milliseconds from midnight. If a weekday is closed the whole day, isOpen will be false and the periods will not be taken into account.

mon: object
isOpen: boolean
periods: object[]
object
to: integer (int32) 0 ≤ x ≤ 86400000
from: integer (int32) 0 ≤ x ≤ 86400000
Example
{
  "mon": {
    "isOpen": "boolean",
    "periods": [
      {
        "to": "integer (int32)",
        "from": "integer (int32)"
      }
    ]
  }
}

Response: object

A generic response object for requests that do not return any of the other objects.

type: string
code: integer (int32)
message: string
Example
{
  "type": "string",
  "code": "integer (int32)",
  "message": "string"
}