Reservation Diary API

This document helps you to build your own reservation frontend or integrate with 3rd party by using Reservation Diary API

Acquire API Key

In order to consume API, you will need to register in a system. As a result, you will have your unique API key. Every call will require to use this API key.

Post

http://api.reservationdiary.eu/Service/User.svc

{"Email":"catkin@catzsoft.ee","Source":null}

Response

{

"ID": "[API_KEY]"

}

Setup

Place setup

Create place

Post

http://api.reservationdiary.eu/Service/Place.svc/[API_KEY]

{"place":{"Name":"Test restoran","City":"Tallinn","Country":"Estonia","Address":"Taludevahe 96/1","Email":"catkin@catzsoft.ee","WebAddress":"www.ee","Phone":"14234234","MinTimeBeforeReservation":24,"DescriptionShort":null,"DescriptionFull":null,"Lang":null,"Catalog":null,"DateFormat":"dd/MM/yyyy","MaxTimeBeforeReservation":null,"EmailCC":null, "Active":true, "ManualReservationLevel":0,"TimeStep":15, "CustomData":null, "ReservationDuration":null }}

Response

{

"ID": "[PLACE_ID]"

}

Update place

Put

http://api.reservationdiary.eu/Service/Place.svc/[API_KEY]/[PLACE_ID]

{"place":{"Name":"Test\u0027s restoran \u0026 test \\","City":"Tallinn","Country":"Estonia","Address":"Taludevahe 96/1","Email":"catkin@catzsoft.ee","WebAddress":"www.ee","Phone":"14234234","MinTimeBeforeReservation":3,"DescriptionShort":"Short description","DescriptionFull":"Full description","Lang":"ru-RU","Catalog":true,"DateFormat":"","MaxTimeBeforeReservation":null,"EmailCC":"sergei.prokopov@catzsoft.ee,info@catzsoft.ee","Active":true, "ManualReservationLevel":0,"TimeStep":15, "CustomData":null, "ReservationDuration":null }}

Response

{

"ID": "[PLACE_ID]"

}

Delete place

NOTE: This call will delete place with all settings and reservations.

Delete

http://api.reservationdiary.eu/Service/Place.svc/[API_KEY]/[PLACE_ID]

Response

{

"ID": "[PLACE_ID]"

}

 

Category setup

Create category

Post

http://api.reservationdiary.eu/Service/Category.svc/[API_KEY]/[PLACE_ID]

{"category":{"Name":"Restaurant"}}

Response

{

"ID": "[CATEGORY_ID]"

}

 

Get categories

http://api.reservationdiary.eu/service/place.svc/[API_KEY]/[PLACE_ID]/categories

Response

[

{

"ID": "[CATEGORY_ID]",

"Name": "Restaurant",

"TimeSet": {

"Friday": {

"CloseTime": "00:00",

"OpenTime": "12:00"

},

"Monday": {

"CloseTime": "00:00",

"OpenTime": "12:00"

},

"Saturday": {

"CloseTime": "00:00",

"OpenTime": "12:00"

},

"Sunday": {

"CloseTime": "22:00",

"OpenTime": "19:00"

},

"Thursday": {

"CloseTime": "00:00",

"OpenTime": "12:00"

},

"Tuesday": {

"CloseTime": "00:00",

"OpenTime": "12:00"

},

"Wednesday": {

"CloseTime": "00:00",

"OpenTime": "12:00"

}

}

}

]

 

 

Services setup

Create services

Post

http://api.reservationdiary.eu/Service/Service.svc/[API_KEY]/[CATEGORY_ID]

{"service":{"Name":"Person","Quantity":10}}

Response

[

{

"ID": "[SERVICE_ID]"

},

{

"ID": "[SERVICE_ID]"

},

]

Get the list of services

Get

http://api.reservationdiary.eu/Service/Service.svc/[API_KEY]/[CATEGORY_ID]/Person

Response

[

{

"ID": "[SERVICE_ID]"

"Name": "Person"

},

{

"ID": "[SERVICE_ID]"

"Name": "Person"

},

]

Delete services by ID

This method will delete all services associated with service reservations.

Delete

http://api.reservationdiary.eu/Service/Service.svc/[API_KEY]?serviceID=[SERVICE_ID’s]

Response

[

{

"ID": "[SERVICE_ID’s]"

}

]

Delete services by quantity

This call will delete services but it will keep reservations untouched.

Delete

http://api.reservationdiary.eu/Service/Service.svc/[API_KEY]/[CATEGORY_ID]/[SERVICE_NAME]/delete?quantity=[NUMBER_OF_SERVICES_TO_DELETE]

Response

[

{

"ID": "[SERVICE_ID’s]"

}

]

 

Working time setup

Set working time

Put

http://api.reservationdiary.eu/Service/Category.svc/[API_KEY]/[CATEGORY_ID]/time

{"timeSet":{"Monday":{"OpenTime":"12:00","CloseTime":"13:00"},"Tuesday":null,"Wednesday":null,"Thursday":null,"Friday":null,"Saturday":null,"Sunday":null}}

Response

{

"ID": "[CATEGORY_ID]"

}

 

Custom Fields setup

Create custom fields

Post

http://api.reservationdiary.eu/Service/CustomFields.svc/[lang]/[API_KEY]/place/[PLACE_ID]

{"customfield":{"Message":"", "Required":false, "Name":"Do you want to receive news from us?","Type":"checkbox"}}

Response

{

"ID": "[CUSTOM_FIELD_ID]"

}

Get custom fields

Get

http://api.reservationdiary.eu/Service/CustomFields.svc/[lang]/ [API_KEY]/place/[PLACE_ID]

Response

[

{

"Id": [CUSTOM_FIELD_ID],

"Message": "",

"Name": "Do you want to receive news from us?",

"Required": false,

"Type": "checkbox"

}

]

Update custom fields

Put

http://api.reservationdiary.eu/Service/CustomFields.svc/[lang]/ [API_KEY]/place/[PLACE_ID]/customfield/[CUSTOM_FIELD_ID]

{"customfield":{"Message":"", "Required":false, "Name":"Do you want to receive news from us?","Type":"checkbox"}}

Response

{

"ID": "[CUSTOM_FIELD_ID]"

}

Delete custom fields

Delete

http://api.reservationdiary.eu/Service/CustomFields.svc/[lang]/ [API_KEY]/place/[PLACE_ID]/customfield/[CUSTOM_FIELD_ID]

Response

{

"ID": "[CUSTOM_FIELD_ID]"

}

 

Reservations

Get available time by Day

Get

http://api.reservationdiary.eu/Service/Reservation.svc/[API_KEY]/[CATEGORY_ID]/availabilityByDay/Person?StartTime=2017-05-15 00:00&Quantity=1&CurrentTime=2017-01-15 00:00&Lang=en-gb&EndTime=2017-06-15 00:00&AlternativeTimeStep=60&ReservationDuration=60

Response

[

{

"Availability": [

{

"Available": true,

"EndTime": "2017-02-15 01:00",

"Reason": null,

"StartTime": "2017-02-15 00:00"

},

{

"Available": true,

"EndTime": "2017-02-15 02:00",

"Reason": null,

"StartTime": "2017-02-15 01:00"

},

]

 

Get available time

Get

http://api.reservationdiary.eu/Service/Reservation.svc/[API_KEY]/[CATEGORY_ID]/Person?StartTime=2013-11-15 09:00&EndTime=2013-11-15 18:00&Quantity=2&Alternatives=2&CurrentTime=2013-11-10 09:00&AlternativeTimeStep=&Lang=en

Response

[

{

"Available": true,

"EndTime": "2013-11-15 17:00",

"Reason": null,

"StartTime": "2013-11-15 08:00"

},

{

"Available": true,

"EndTime": "2013-11-15 17:30",

"Reason": null,

"StartTime": "2013-11-15 08:30"

}

]

Create reservation

Post

http://api.reservationdiary.eu/Service/Reservation.svc/[API_KEY]/[CATEGORY_ID]

{"reservation":{"UserName":"Sergei","UserEmail":"catkin@catzsoft.ee","UserComments":"Test","StartTime":"2017-01-25 14:00","EndTime":"2017-01-25 16:00","CurrentTime":"2017-01-23 22:29","UserPhone":"234234234234","Lang":null,"AreaID":0,"Version":null,"DontNotifyClient":false,"ManualConfirmationLevel":0,"Parameters":null,"Name":"Person","Quantity":5,AllowOverbooking:false}}

Response

{

"ID": "[RESERVATION_ID]"

}

Get place reference id

Get

http://upcomingapi.reservationdiary.eu/en-US/[API_KEY]/Place

Response

[

{

"ReferenceID": "[PLACE_REFERENCE_ID]"

}

]

Get reservations

Get

http://upcomingapi.reservationdiary.eu/en-US/[API_KEY]/Reservation?From=2023-10-22T21:00:00&To=2023-10-24T00:00:00&placeReferenceID=[PLACE_REFERENCE_ID]&states=RESERVED&flag=&email=

Response

[

{

"ID": [RESERVATION_ID],

"Start": "2023-10-23T09:00:00",

"End": "2023-10-23T18:00:00",

"Name": "Test1",

"Quantity": 1,

"Phone": "",

"Email": "",

"Comments": "Test1Comments",

"Area": "",

"InernalNotes": "",

"ServiceName": "Person",

"Status": "RESERVED"

},

{

"ID": [RESERVATION_ID],

"Start": "2023-10-23T09:30:00",

"End": "2023-10-23T12:00:00",

"Name": "Test2",

"Quantity": 2,

"Phone": "",

"Email": "",

"Comments": "",

"Area": "",

"InernalNotes": "",

"ServiceName": "Person",

"Status": "RESERVED"

}

]

Cancel reservation

Delete

http://api.reservationdiary.eu/Service/Reservation.svc/[API_KEY]/cancelByClient?email=catkin@catzsoft.ee&id=[RESERVATION_ID]&reason=Test reservation canceled by client

Response

{

"ID": "[RESERVATION_ID]"

}

Update reservation

Put

http://api.reservationdiary.eu/Service/Reservation.svc/[API_KEY]/update/[RESERVATION_ID]?CurrentTime=2013-10-20 09:00&Lang=en&DontNotifyClient=False

{"UserName":"Sergei","UserEmail":"catkin@catzsoft.ee","UserComments":"","StartTime":"2014-10-21 12:00","EndTime":"2014-10-22 22:00","CurrentTime":"2013-10-20 09:00","UserPhone":"9999","Lang":"en","AreaID":0,"Version":"15.1224","DontNotifyClient":false,"ManualConfirmationLevel":0,"Parameters":null,"Name":"Person","Quantity":2}

Response

{

"ID": "[RESERVATION_ID]"

}