Upgrade rooms

When you want to upgrade a reservation, you have to retrieve all alternative offers for this one reservation and find the offer that matches best. Find the one with the same cancellation policies and guarantees, or anything else that makes sense to you. This is your expertise, not ours. You can override the prices for each night based on any upselling rules defined in your app. When getting the offers, be sure not to change any of the core parameters, but set the requote flag to true. As you do not want to offer lower value rooms, you can use the rank of the unit groups in apaleo, if the hotel sets them up. You can also use the prices of the offers or use any hierarchy or upselling models in your application.

GET /booking/v1/reservations/{id}/offers

Example

{
    "property":{
        "id":"LND",
        "code":"LND",
        "name":"Hotel London",
        "description":"Located in a quiet side street with a beautiful garden in the backyard, Hotel London is prefect for relaxing after a day of shopping or a night of partying."
    },
    "offers":[
        {
            "arrival":"2020-09-24T16:00:00+01:00",
            "departure":"2020-09-27T10:00:00+01:00",
            "minGuaranteeType":"Prepayment",
            "availableUnits":1,
            "totalGrossAmount":{
                "amount":356,
                "currency":"GBP"
            },
            "cancellationFee":{
                "code":"STR",
                "name":"Strict",
                "description":"No free cancellation.",
                "dueDateTime":"2020-09-23T08:24:53.092124+01:00",
                "fee":{
                    "amount":266,
                    "currency":"GBP"
                }
            },
            "noShowFee":{
                "code":"NONREF",
                "fee":{
                    "amount":266,
                    "currency":"GBP"
                }
            },
            "timeSlices":[
                {
                    "from":"2020-09-24T16:00:00+01:00",
                    "to":"2020-09-25T09:00:00+01:00",
                    "ratePlan":{
                        "id":"LND-NONREF-SGL",
                        "code":"NONREF",
                        "name":"Non Refundable",
                        "description":"Pay in advance and safe. If you cancel we well keep the amount of the full stay.",
                        "isSubjectToCityTax":true
                    },
                    "unitGroup":{
                        "id":"LND-SGL",
                        "code":"SGL",
                        "name":"Single",
                        "description":"Nice and comfortable room with shower and single bed.",
                        "maxPersons":1
                    },
                    "baseAmount":{
                        "grossAmount":94,
                        "netAmount":89.52,
                        "vatType":"Reduced",
                        "currency":"GBP"
                    },
                    "totalGrossAmount":{
                        "amount":94,
                        "currency":"GBP"
                    }
                },
                {
                    "from":"2020-09-25T09:00:00+01:00",
                    "to":"2020-09-26T09:00:00+01:00",
                    "ratePlan":{
                        "id":"LND-NONREF-SGL",
                        "code":"NONREF",
                        "name":"Non Refundable",
                        "description":"Pay in advance and safe. If you cancel we well keep the amount of the full stay.",
                        "isSubjectToCityTax":true
                    },
                    "unitGroup":{
                        "id":"LND-SGL",
                        "code":"SGL",
                        "name":"Single",
                        "description":"Nice and comfortable room with shower and single bed.",
                        "maxPersons":1
                    },
                    "baseAmount":{
                        "grossAmount":81,
                        "netAmount":77.14,
                        "vatType":"Reduced",
                        "currency":"GBP"
                    },
                    "totalGrossAmount":{
                        "amount":81,
                        "currency":"GBP"
                    }
                },
             .............
                {
                    "vatType":"Without",
                    "vatPercent":0,
                    "net":{
                        "amount":0,
                        "currency":"GBP"
                    },
                    "tax":{
                        "amount":0,
                        "currency":"GBP"
                    }
                }
            ],
            "isCorporate":false
        }
    ]
}

Next, you amend the reservation by calling the following endpoint.

PUT /booking/v1/reservation-actions/{id}/amend

Example

{
    "arrival":"2020-09-24T17:00:00+02:00",
    "departure":"2020-09-27T11:00:00+02:00",
    "adults":1,
    "requote":true,
    "timeSlices":[
        {
            "ratePlanId":"LND-NONREF-DBL",
            "totalGrossAmount":{
                "amount":124.00,
                "currency":"GBP"
            }
        },
        {
            "ratePlanId":"LND-NONREF-DBL",
            "totalGrossAmount":{
                "amount":111.00,
                "currency":"GBP"
            }
        },
        {
            "ratePlanId":"LND-NONREF-DBL",
            "totalGrossAmount":{
                "amount":121.00,
                "currency":"GBP"
            }
        }
    ]
}

You can also ask to get offers which would typically not be available (for example, because the advanced booking or other restrictions are violated). Add the parameter IncludeUnavailable to true. If you do this, be sure to check the validation messages in the offer response and ensure that you do not overbook the hotel. To book an offer with validation messages, you need to force the system to accept it by using the $force endpoint.

GET /booking/v1/reservations/{id}/offers?includeUnavailabe=true
PUT /booking/v1/reservation-actions/{id}/amend/$force

Late check-out or early check-in

Late check-out or early check-in can be modelled by changing the departure or arrival time of a reservation and increasing the price. Ask for alternative offers for the reservation you want to adjust and specify the desired departure or arrival time. Use the response to construct the payload for the amend and add the additional price for the late check-out or early check-in to the last or first time night, respectively. You could also instead of increasing the price book a pre-defined extra for the respective night.

Bid on room upgrades or set your own price

Similar to the late check-out, setting your price can be done by amending a reservation and passing prices in the time slice/nights. Just like above, you can also add extra services instead of changing the price. It is not possible to set a price for the entire reservation; you always must adjust each and every time slice/night.