Getting Started

Introduction

Restaurant reservation API for online booking systems

eTender Connect is a restaurant reservation platform for third party booking systems.

Your booking system can access the real time availability of restaurants and create/modify online table reservations - using an access key (token). Please contact the restaurant to get an access key. In order to use a single access key for multiple restaurants, please contact us.







Documentation

API

Our HATEOAS (Hypermedia As The Engine Of Application State) RESTful API uses HTTP-verbs with UTF-8 encoding and URL encoded values.

Structured data following Schema.org > Thing > Intangible > Reservation > FoodEstablishmentReservation


Design

SWAGGER 2.0

Download swagger file here

RAML 1.0

Download RAML file here


Authorization

API Authorization framework

Access keys are provided by restaurants.


Payload

JSON

Request and response payloads are formatted as JSON.


End point

https://eTender-connect.com/v1

IP address

Requests from our platform originate from 193.93.173.20 - 193.93.173.24.


Resources and methods

GET
/restaurants

Restaurant details of all restaurants (by AccessKey)

GET
/restaurants /{restaurantId}

Restaurant details of a specific restaurant

GET
/restaurants /{restaurantId} /availability

Full availability by date

GET
/restaurants /{restaurantId} /availability /{year}

Availability of the year by date

GET
/restaurants /{restaurantId} /availability /2017 /{month}

Availability of the year and month by date

GET
/restaurants /{restaurantId} /availability /2017 /12 /{day}

Availability of the date by time (15 minutes)

GET
/restaurants /{restaurantId} /reservations /{reservationId}

Reservation details

POST
/restaurant /{restaurantId} /reservations

Reservation details

PATCH
/restaurant /{restaurantId} /reservations /{reservationId}

Reservation details

DELETE
/restaurant /{restaurantId} /reservations /{reservationId}

Reservation details


Restaurant object

This is an example object of the restaurant.

{
  "id": 10000,
  "name": "Restaurant l'Exemple",
  "phone": "+31 (0) 20-7793839",
  "email": "reservations@restaurantlexemple.nl",
  "address": "Keizersgracht 188",
  "postalCode": "1016 DW",
  "city": "Amsterdam",
  "state": "Noord-Holland",
  "country": "Nederland",
  "website": "www.restaurantlexemple.nl",
  "facebook": "restaurantlexemple",
  "timeZone": "Europe/Amsterdam",
  "links": [
    {
      "href": "https://eTender-connect.com/v1/restaurants/10000",
      "rel": "self",
      "method": "GET"
    },
    {
      "href": "https://eTender-connect.com/v1/restaurants/10000/availability",
      "rel": "availability",
      "method": "GET"
    },
    {
      "href": "https://eTender-connect.com/v1/restaurants/10000/reservations",
      "rel": "create-reservation",
      "method": "POST"
    }
  ]
}
	  

Availability object

This is an example object of the availability by date.

[
  {
    "localDate": "2017-01-24",
    "isAvailable": false,
    "isOpen": true,
    "links": [
      {
        "href": "https://eTender-connect.com/v1/restaurants/10000/availability/2017/1/24",
        "rel": "self",
        "method": "GET"
      }
    ]
  },
  {
    "localDate": "2017-01-25",
    "isAvailable": false,
    "isOpen": false,
    "links": [
      {
        "href": "https://eTender-connect.com/v1/restaurants/10000/availability/2017/1/25",
        "rel": "self",
        "method": "GET"
      }
    ]
  },
  {
    "localDate": "2017-01-26",
    "isAvailable": true,
    "isOpen": true,
    "links": [
      {
        "href": "https://eTender-connect.com/v1/restaurants/10000/availability/2017/1/26",
        "rel": "self",
        "method": "GET"
      }
    ]
  },

...

]
	  

This is an example object of the availability by time (15 minutes).

[
  {
    "localTime": "00:00",
    "minPartySize": 1,
    "maxPartySize": 0,
    "isOpen": false,
    "isAvailable": false
  },
  {
    "localTime": "00:15",
    "minPartySize": 1,
    "maxPartySize": 0,
    "isOpen": false,
    "isAvailable": false
  },
  {
    "localTime": "00:30",
    "minPartySize": 1,
    "maxPartySize": 0,
    "isOpen": false,
    "isAvailable": false
  },
  {
    "localTime": "00:45",
    "minPartySize": 1,
    "maxPartySize": 0,
    "isOpen": false,
    "isAvailable": false
  },
  {
    "localTime": "01:00",
    "minPartySize": 1,
    "maxPartySize": 0,
    "isOpen": false,
    "isAvailable": false
  },

...

]
	  

Reservation object

This is an example object of the reservation.

Sorry, not available
	  

Triggers

A trigger consists of one or more actions performed when a reservation is created or updated. The actions are performed only if certain conditions are met. For example, a trigger can notify your booking system when the status of a reservation is cancelled. Or when the availability of the restaurant is changed.

Please contact us
	  

Error codes

HTTP status code 400

Error 2001, "Timeslot {reservationDate} is not available for table reservation."
	  
Error 2002, "Party size {partySize} exceeds the available party size."
Error 2003, "Party size {partySize} is too small."
Error 2004, "No time specified."
Error 2005, "No date specified."
Error 2006, "Date {date}, or time {time} are not in a valid format, should be yyyy-MM-dd and HH:mm."

Error 2101, "Reservation has no contact information."
Error 2102, "Contact should have a title."
Error 2103, "Contact should have a name."
Error 2104, "Contact should have a phone number."
Error 2105, "Contact should have an email address."
Error 2106, "Contact should have a valid email address, email address is {email}."
Error 2107, "Contact should have a gender."

Error 6001, "Invalid date: {year}/{month}/({day}). Dates should be formatted as yyyy/MM/(dd)."
Error 6002, "Invalid date: {year}/{month}/({day}). Dates should not be in the past."

HTTP status code 401

Error 3001, "No authorization header."
	  
Error 3002, "No AccessKey present in authorization header."
Error 3003, "AccessKey {apiKey} is not a valid AccessKey."

HTTP status code 404

Error 4001, "Restaurant {restaurantId} not found."
	  
Error 4002, "Reservation {reservationId} not found."

HTTP status code 500

Error 9999, "Internal server error."