Reservation Diary API
This document helps you to build your own reservation frontend or integrate with 3rd party by using Reservation Diary API
For development purposes please use sandbox endpoint: redi-api-dev.azurewebsites.net/
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]"
}Get places
Get
http://api.reservationdiary.eu/Service/Place.svc/[API_KEY]Response
[
{
"ID": "[PLACE_ID]",
"Name": "Test restoran",
"City": "Tallinn",
"Country": "Estonia"
}
]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]/categoriesResponse
[
{
"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]/PersonResponse
[
{
"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=60Response
[
{
"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=enResponse
[
{
"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]/PlaceResponse
[
{
"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 clientResponse
{
"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]"
}