Reservations Retrieval

This method allows WuBook to read the hotel reservations from the channel extranet. The service should returned all reservation created, modified or canceled after the timestamp specified in the request.

Request from WooDoo

{
"action":"get_bookings",
"data":{
    "start_time":"2014-04-25 15:00:00"
    }
}
Field Mandatory Type Description
start_time Yes String The date and time (UTC+0 timezone) for filtering reservations. Format: YYYY-MM-DD hh24:mm:ss

Response from channel

{
 "code": 200,
 "data": {
 "bookings": [
  {
   "booking_id": "496",
   “booking_modification_id”: “1001”,
   "status": "new",
   "created": "2014-04-27 01:12:28",
   "modified": "2014-04-27 01:12:28",
   “utc_offset”: '0200',
   "hotel_id": "100",
   "currency": "EUR",
   "arrival_date": "2014-05-01",
   "departure_date": "2014-05-03",
   “arrival_hour”: “11:00”,
   “departure_hour”: “10:00”,
   "rooms": [
     {
     "room_id": "1",
     “occupancy”: “occupancy_id1”,
     "daily_prices": {
             "2014-05-01": {“price”: 150.00, “rate_id”:”111”}
             "2014-05-02": {“price”: 140.00, “rate_id”:”111”}
             }
     "adults_number": 2,
     "children_number": 1,
     "guests": ["John Doe", "Mary Doe",”Kevin Doe”],
     },
     {
     "room_id": "2",
     “occupancy”: “occupancy_id2”,
     "daily_prices": {
             "2014-05-01": {“price”: 150.00, “rate_id”:”111”}
             "2014-05-02": {“price”: 120.00, “rate_id”:”112”}
             }
     "adults_number": 1,
     "children_number": 0,
     "guests": ["Jack Smith"],
     },
     ],
     "already_payed": false,
     "customer": {
       "first_name": "John",
       "last_name": "Doe",
       "email": "johndoe@gmail.com",
       "phone": "12345678",
       “country”: “IT”,
       “city”: “Milan”,
       “address”: “Viale Vittoria, 3”,
       “zip”: “20133”
       },
     "credit_card": {
        "owner": "John Doe",
        "type": "VISA",
        "number": "1234567890",
        "cvc": "123",
        "expiring": "06/2015"
        },
     "notes": "No smoking room, please",
     "total_price": 600.00,
     “ancillary”: { “custom_key1”: “custom_value1”,
     },
    ]
  }
}
Field Mandatory Type Description
booking_id Yes String Identifier of the reservation
booking_modification_id No String Identifier of reservation event. A reservation that is created, then modified and then canceled has 1 booking_id but a different booking_modification_id for each one of these 3 events. This element can be useful only if the OTA needs a booking confirmation call (see paragraph “Reservations Confirmation”)
created Yes String Date and time when the reservation was created
modified Yes String Date and time when the reservation was modified last time. For newly created reservation it will be the same with “created” field. For canceled reservation it will represent the date and time of the cancellation. Format YYYY-MM-DD hh24:mm:ss
utc_offset Yes String The offset between all dates/times in the booking and the corresponding UTC+0 date. Format: + or - followed by 4 digits HHMM (hours, minutes). I.e. +0000, +0330, -0200
status Yes String new - new reservation. modified - previously existed reservation was modified. canceled - previously existed reservation was canceled.
hotel_id Yes String Univoque identifier for the property
currency Yes String Currency Code (ISO 4217)
arrival_date Yes String Check-in date. Format: YYYY-MM-DD
departure_date Yes String Check-out date. Format: YYYY-MM-DD
arrival_hour No String Check-in time. Format: HH:MM (hotel timezone)
departure_hour No String Check-out time. Format: HH:MM (hotel timezone)
rooms Yes List List of booked rooms
room_id Yes String Room_id – the identifier of booked room. It is one of the identifier returned by get_rooms service.
occupancy No String Only in case of “advanced occupancy model” (see paragraph “Occupancy model”), this field can be (not mandatory) filled with the occupancy ID involved in the booking
daily_prices Yes Dictionary (Object) List of prices for appropriate booked room for each day of stay
rate_id No** String Identifier of booked rate for the specified room-day. It is one of the identifier returned by get_rates service
price Yes Float Price for the specified room-day
adults_number Yes Integer Number of adults for the booked room
children_number No Integer Number of children for the booked room. If channel doesn’t manage separately adults and children, the total number of guests can be specified in the field adults_number
guests No List List of guests names for the booked room
already_payed No Boolean If the reservation was already payed by guest
customer Yes Dictionary The customer contact data
first_name Yes String First name
last_name Yes String Last name
email No String Email
phone No String Phone
country No String Standard ISO 3166, Alpha-2 Code
city No String City
address No String Address
zip No String Zip
credit_card* No Dictionary (Object) Optional structure for credit card data
type No String Possible values: “VISA”, “MASTERCARD”, “DINERS”, “DISCOVER”,“AMERICAN_EXPRESS”,“ENROUTE”, “JCB”, “MAESTRO”, “BLANCHE” (Carte Blanche),“AUSTRALIAN” (Australian BankCard), “EUROCARD”, “UNIONPAY” If you manage other credit card types, please notify us: we’ll add it to our list and provide you the corresponding
expiring No String Credit card expiring date. Format MM/YYYY
owner No String Credit card owner
number No String Credit card number
cvc No String Credit card CVC
notes No String Notes from customer
total_price Yes Float Total price for the reservation
ancillary No
Dictionary
(Object)
Key-value pairs that channel is free to set in order to report additional information about reservation that aren’t already mentioned in the other fields. It can also be a nested structure.
* The channel should notify WuBook whether credit card is never returned.
If credit card data can be present the channel endpoint API URL should use secure protocol (HTTPS).
** The rate_id field is mandatory if the channel manages availability at room-rate level. In this case, the
rate_id MUST be the same for all days of a booked room.

SPLIT RESERVATIONS

The json structure for every booking described above is designed to only support reservations in which all involved rooms have the same checkin and checkout dates. If your system can also generate reservations with different checkin and checkout dates for the rooms involved, you can return all the reservations as a list of splitted reservations , where every single one has homogeneous checkin and checkout dates for involved rooms.

For example, booking retrieval returning 2 bookings

Booking ID: 10001

Room 1

Booking ID: 10002

Room 1: checkin 01/01/2016, Checkout 03/01/2016 Room 2: checkin 01/01/2016, Checkout 03/01/2016 Room 3: checkin 01/01/2016, Checkout 04/01/2016

The second reservation can be split in two blocks, one for rooms 1 and 2, the other for room 3 Reservation retrieval response will be

{
 "code": 200,
 "data": {
   "bookings": [
     [
       {"booking_id": "10002", ...},  → for room 1 and 2
       {"booking_id": "10002", ...}    → for room 3
     ]
    ]
  }
}

Note

  • If one of the split is modified, the json returned by booking retrieval MUST contain the complete information of the reservation, not only the part regarding the modified split
  • If a previously split reservation is cancelled, it is sufficient to return one dictionary (object) for the booking, with status canceled.
  • The total_price field for each split reservation must regard only the part of reservation of the split (it is not the total amount of the full original reservation)