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)