Booking v1
This API is Live and ready to use in production.
The Booking API is used to book reservations directly into TableCheck's inventory backend. The Booking API is available by special arrangement with TableCheck. In most cases, the Web Booking API should be used instead. This API has a number of limitations, including:
Payments are not supported.
Menu item (dining experience) booking is not supported. As a workaround, free text can be added to a memo field.
If you are a booking aggregator site (i.e. not a restaurant/hospitality brand), TableCheck must approve each venue individually for access.
Target Audience
The Booking API may be useful in the following cases:
Merchant-owned booking sites or brand apps.
Pre-paid voucher systems, i.e. where payments are not necessary.
Endpoint
The Booking API allows the implementer to modify data. Please request the TableCheck API Team to prepare test data to facilitate your development.
https://api.tablecheck.com/api/booking/v1/...
Interactive API console
https://api.tablecheck.com/api/booking/v1/docs
Refer to Using the API Console for help.
Rate Limits
Implementation Workflow
The following is a general outline of how to implement this API:
Please request access for specific Shops by contacting api@tablecheck.com. (Access requests will be moved to an API in the future.)
Search for available booking times across Shops using the Availability API.
(Optional but recommend) If you are doing a checkout process, before creating a reservation, use the
POST /blockages
endpoint to make a "Blockage" object which locks the table until the end user completes checkout. This Blockage will expire after 5 minutes, however you can doPUT /blockage/{id}
to renew the 5-minute expiry.Use
POST /reservations
to make a reservation. You must pass the Blockage ID to the reservation in this API call.To amend an existing reservation use
PUT /reservations/{id}
. If you are changing the time or party size, you must first create a Blockage.To cancel the reservation, use
PUT /reservations/{id}/cancel
. You may optionally specify cancel reason.Get updates to reservations using the Sync API.
To fetch a list of all reservations, use
GET /reservations/
with various query parameters.
Creating a Blockage
Before creating a reservation, you must first create a Blockage object which locks the table for booking based on time and party size. Creating blockages should be integrated into your end-user's reservation workflow. We recommend to create the blockage when the user arrives at the "Confirmation Page" (i.e. when date, time, and party size are known), and then finalize the reservation when the user clicks "Confirm".
POST /ts_api/booking/v1/blockages
{
"shop_id": "chez-vesper",
"start_at": "2020-02-12T19:00:00+0900",
"pax": 2
}
Amending Blockage and/or Extending Blockage Lifetime
By default Blockages will expire after 5 minutes, however you can update the Blockage to renew the 5-minute expiry. You may also amend a Blockage with a new time and party size, however, this amendment may be rejected if no table is available for the new values.
PUT /ts_api/booking/v1/blockages/5e4014ae801a0a5efc000137
{
"start_at": "2020-02-12T19:30:00+0900",
"pax": 3
}
Creating/Finalizing a Reservation
The API will try to create a Reservation even if the Blockage has expired, but is not guaranteed to succeed in this case.
POST /ts_api/booking/v1/reservations
{
"shop_id": "chez-vesper",
"blockage_id": "5e4014ae801a0a5efc000137",
"start_at": "2020-02-12T19:30:00+0900",
"pax": 3
}
Amending a Reservation
Only a subset of the parameters can be amended.
PUT /ts_api/booking/v1/reservations/ae801a0a55e4014efc000137
{
"blockage_id": "5e4014ae801a0a5efc000137",
"start_at": "2020-02-12T19:30:00+0900",
"pax": 3
}
Cancelling a Reservation
PUT /ts_api/booking/v1/reservations/ae801a0a55e4014efc000137/cancel
{
"cancel_reason_type": "mistake",
"cancel_reason": "Cancelled due to weather"
}
Reservation Cancellation Limitations
When using PUT /ts_api/booking/v1/reservations/{id}/cancel
, be aware of the following limitations:
Reservations cannot be cancelled if they are in the past (i.e., the reservation time has already passed)
Reservations cannot be cancelled if they are in "seated" status (e.g., when customers have already arrived at the venue)
If a cancellation is attempted under these conditions, the API will respond with an error code reservation_cannot_be_cancelled_by_user
and provide specific validation messages explaining why the cancellation failed.
{
"error": {
"code": "reservation_cannot_be_cancelled_by_user",
"message": "Reservation cancellation failed: reservation is in the past"
}
}
Fetching a List of Reservations
The following query will fetch all reservations for one day. The result will be paginated. Refer to API Console for full list of available query parameters.
GET /ts_api/booking/v1/reservations?start_at_min=2020-01-01T0:00:00Z&start_at_max=2020-01-02T0:00:00Z&page=3
For further inquiries and assistance, please contact api@tablecheck.com