TABLE OF CONTENTS

Introduction

All these enhanced features are disabled by default. Please get in touch with our Client Manager or GO Help first to evaluate if it's feasible and suitable for your connections.


Features

#IDFeatures Features DescriptionApplicable Version
1Push Cancellation based on LOSIncluding cancellation policy codes when pushing ARI to distributorsGO Distributor v4 Push
2Multiple Languages for Static InformationSupports multiple languages for hotel static informationAll GO v4
3Respond Room/Rate Name when ARI ShoppingProvides name and description of room types and rate plans within room rates when distributors shop ARI from GOGO Distributor v4 Pull
4
Pending Booking ProcessAdd pending process in the book flowAll GO v4


Push Cancellation based on LOS

Notes:
Our system provides two options for authentication and authorization: Access Token and JWT Authorization. 
① Currently available for Hilton Connection but can be extended for other suppliers if needed.
② Enable the feature will increase the push message size when push ARI to distirbutors' system.

In default, cancellation policy information is based on the hotel, date, and product level. However, Hilton provides it based on the hotel, date, product, and length of stay (LOS). To accommodate the case, GO added a new field "cancelPolicies" in the ARI Push request to provide cancellation policies based on LOS to distributors. If hotel suppliers do not provide cancellation policies in ARI totally, GO won’t push the information to distributors either. However, GO will fill in a default code "AD100P_100P," which means non-refundable to ensure the data is complete in case the cancel policy is missing from hotel suppliers for a few days.


LOS Pricing with Cancellation policies based on LOS:

{
    "header": {
        "supplierId": "HILTON",
        "distributorId": "GTA",
        "version": "v4",
        "token": "18393849028490234"
    },
    "messageType": "Delta",
    "hotelId": "GATHI",
    "dateRange": {
        "startDate": "2018-01-01",
        "endDate": "2018-01-04"
    },
    "currency": "USD",
    "losAris": [
        {
            "roomId": "K1",
            "rateId": "BARB",
            "los": 1,
            "mealPlans": [
                "BB",
                "BB",
                "RO",
                "BB"
            ],
            "inventories": [
                9,
                0,
                9,
                9
            ],
            "cancelPolicies": [
                "4PM0D1N_100P",
                "4PM0D1N_100P",
                "4PM0D1N_100P",
                "4PM0D1N_100P"
            ],
            "rates": {
                "type": "OccupancyRate",
                "rates": [
                    {
                        "adultCount": 1,
                        "childCount": 0,
                        "amountBeforeTax": [
                            502.19,
                            502.19,
                            502.19,
                            502.19
                        ],
                        "amountAfterTax": [
                            623.23,
                            623.23,
                            623.23,
                            623.23
                        ]
                    }
                ]
            }
        }
    ]
}

Multiple Languages for Static Information    

Notes:
Our system provides two options for authentication and authorization: Access Token and JWT Authorization. 
① Only a few Chinese suppliers support both Chinese(zh) and English(en)
② The data will be sent in the requested language only if it is available in that language. If not, GO will send the data in the default available language, which is English. This logic will be applied at an individual field level. For example, if the hotel description is available in both English and Chinese but the cancellation policy is only in English, and the distributor makes a request for data in Chinese, then the response payload will have the hotel description in Chinese but the cancellation policy and fee information always in English on Hotel API.

GO added an optional parameter called "lang" to the header of Hotel API. This parameter will allow distributors to specify the language for the content in the response whenever multiple languages are available.


Request message snippet:

"header": {
    "distributorId": "GTA",
    "version": "v4",
    "lang": "en",
    "token": "18393849028490234"
}

For APIs that use the GET method, GO provides an optional request parameter named "lang". This parameter is used to specify the language of the content in the response.


Request URL Pattern for BookingUSB - Hotel Products: 

GET /hotel/{supplierId}/{hotelId}?distributorId={distributorId}&lang={language} 


Returning content in Chinese

URL: https://xxx.xxx.xxx/api/go/bookingusb/v4/hotel/XXX/CNSZVABC?distributorId=XX&lang=zh


Response:

{
    "longitude": "120.49",
    "latitude": "31.12",
    "city": "CN-32-5",
    "country": "CN",
    "state": "CN-32",
    "address": [
        "苏州工业园区思安街 1888号 协鑫广场"
    ],
    "phone": {
        "phoneNumber": "86-512-11111111"
    },
    "ariType": "Daily",
    "timezone": "Etc/GMT-8",
    "rateType": "Both",
    "maxChildAge": 11,
    "products": [
        {
            "roomId": "SUITE",
            "rateId": "NEGIBS",
            "status": "Actived",
            "roomName": "行政套房及豪华客房连通房",
            "occupancy": {
                "maxAdult": 4,
                "maxChild": 2,
                "maxOccupancy": 
            }
        },
        {
            "roomId": "VEK",
            "rateId": "NEGHSB-Z",
            "status": "Actived",
            "roomName": "180度景观行政套房",
            "roomDescription": "180度景观行政套房-K",
            "occupancy": {
                "maxAdult": 3,
                "maxChild": 2,
                "maxOccupancy": 4
            }
        }
    ],
    "hotelId": "CNSZABC",
    "hotelName": "苏州园区XX酒店",
    "supplierId": "XXX",
    "status": "Actived"
}

Returning content in English

URL: https://xxx.xxx.xxx/api/go/bookingusb/v4/hotel/XXX/CNSZABC?distributorId=XX&lang=en

Response:

{
  "longitude": "120.49",
  "latitude": "31.12",
  "city": "CN-32-5",
  "country": "CN",
  "state": "CN-32",
  "address": [
    "Tower 2 of GCL Plaza, 1888 Si’an Street, Suzhou Industrial Park, Jiangsu Province, 215028, China"
  ],
  "phone": {
    "phoneNumber": "86-512-11111111"
  },
  "ariType": "Daily",
  "timezone": "Etc/GMT-8",
  "rateType": "Both",
  "maxChildAge": 11,
  "products": [
    {
      "roomId": "SUITE",
      "rateId": "NEGIBS",
      "status": "Actived",
      "roomName": "Suite room",
      "occupancy": {
        "maxAdult": 4,
        "maxChild": 2,
        "maxOccupancy": 6
      }
    },
    {
      "roomId": "VEK",
      "rateId": "NEGHSB-Z",
      "status": "Actived",
      "roomName": "Executive Suite",
      "roomDescription": "Executive Suite-K",
      "occupancy": {
        "maxAdult": 3,
        "maxChild": 2,
        "maxOccupancy": 4
      }
    }
  ],
  "hotelId": "CNSZABC",
  "hotelName": "XX Hotel, Yuanqu, Suzhou ",
  "supplierId": "XXX",
  "status": "Actived"
}

Responding to Room/Rate Name when ARI Shopping

Notes:
The description fields can be very long. The max length of roomDescription and rateDescription is 500 characters and roomName and rateName is 100 characters. Any data larger than that will be truncated.

The response of ShoppingEngine - Shopping API supports providing rate plan name, rate plan description, room type name, and room type description if the distributor passes an extra parameter in the request using the extensions field. This is intended for those distributors that don’t want to rely on stored HotelAPI data to display room details to their customers.

Add an extra parameter in the request:

{
    "header": {
        "distributorId": "GTA",
        "version": "v4",
        "token": "18393849028490234"
    },
    "hotels": [
        {
            "supplierId": "HILTON",
            "hotelId": "GATHI",
            "status": "Actived",
            "isAfterPromotion": false,
            "promoteCode": "string"
        }
    ],
    "stayRange": {
        "checkin": "2018-01-01",
        "checkout": "2018-01-04"
    },
    "roomCriteria": {
        "roomCount": 2,
        "adultCount": 1,
        "childCount": 2,
        "childAges": [
            4,
            8
        ]
    },
    "iata": "string",
    "extensions": {
        "key1": "key1",
        "key2": "key2",
        "sendProductInformation": "true"
    }
}

Response example:

{
    "header": {
        "distributorId": "GTA",
        "version": "v4",
        "token": "18393849028490234"
    },
    "iata": "string",
    "availHotels": [
        {
            "supplierId": "HILTON",
            "hotelId": "GATHI",
            "status": "Actived",
            "stayRange": {
                "checkin": "2018-01-01",
                "checkout": "2018-01-04"
            },
            "iata": "string",
            "availRoomRates": [
                {
                    "roomId": "K1D",
                    "rateId": "ODAD01", 
                    "roomName": "King Deluxe",
                    "roomDescription": "Large room with a King bed and desk",
                    "rateName": "Standard Rate",
                    "rateDescription": "Standard Rate Includes Breakfast",
                    "currency": "USD",
                    "amountBeforeTax": [
                        100,
                        100,
                        120
                    ],
                    "amountAfterTax": [
                        110,
                        110,
                        130
                    ],
                    "mealPlan": "RO",
                    "paymentType": "PayNow",
                    "guarantee": {
                        "guaranteeType": "CCG"
                    },
                    "fees": [
                        {
                            "dateRange": {
                                "startDate": "2018-01-01",
                                "endDate": "2018-01-04"
                            },
                            "fee": {
                                "name": "Service Charge",
                                "type": "Exclusive",
                                "amount": 10,
                                "amountType": "Percent",
                                "chargeType": "PerRoomPerNight",
                                "effectivePerson": 2
                            }
                        }
                    ],
                    "cancelPolicy": {
                        "code": "12AM2D1N_1N",
                        "description": "48 hrs prior to arrival ",
                        "cancelPenalties": [
                            {
                                "noShow": false,
                                "cancellable": true,
                                "cancelDeadline": {
                                    "offsetTimeDropType": "BeforeArrival",
                                    "offsetTimeUnit": "D",
                                    "offsetTimeValue": 2,
                                    "deadline": "12AM"
                                },
                                "penaltyCharge": {
                                    "chargeBase": "NightBase",
                                    "nights": 1
                                }
                            },
                            {
                                "noShow": true,
                                "penaltyCharge": {
                                    "chargeBase": "NightBase",
                                    "nights": 1
                                }
                            }
                        ]
                    },
                    "roomCriteria": {
                        "roomCount": 2,
                        "adultCount": 1,
                        "childCount": 2,
                        "childAges": [
                            4,
                            8
                        ]
                    },
                    "inventory": 2,
                    "isAfterPromotion": false,
                    "promoteCode": "string"
                }
            ]
        }
    ]
}

Pending Booking Process

GO has encountered a situation where some hotel suppliers cannot confirm a reservation within a specific timeframe due to the need to process the reservation on their internal systems. To address this, GO added a new reservation status called "Processing" to accommodate cases where the hotel supplier indicates success without providing a confirmation reservation ID. This change will impact two APIs: the Booking API and the Reservation Query API. When a reservation response from a supplier is successful but lacks a supplier reservation ID, GO will mark the reservation status as "Processing". 

Please refer to the following workflow diagram for more details:



How It works

  • BookingUSB - Book API: GO will add the 'Processing' status into the extensions element when responding to distributors.

{
    "header": {
        "supplierId": "HILTON",
        "distributorId": "GTA",
        "version": "v4",
        "token": "18393849028490234"
    },
    "reservationIds": {
        "distributorResId": "C2084DFL0",
        "derbyResId": "D15F893D34DF",
    },
    "extensions": {
        "reservationStatus": "Processing"
    }
}
  • BookingUSB - Query Reservation API: When distributors query for a pending reservation, GO will respond with "Processing" as the initial status. It's important to note that if the reservation status isn't Success, then distributors query the reservation from GO, and GO will hit the hotel suppliers system to retrieve the latest status and return it to distributors, for instance, if the reservation is confirmed success on hotel suppliers system, GO will return reservation success with a reservation confirmation number.

Response Example(HTTP Status 200)

{
    "header": {
        "supplierId": "HILTON",
        "distributorId": "GTA",
        "version": "v4",
        "token": "18393849028490234"
    },
    "reservations": [
        {
            /* elements have been omitted*/
            "status": "Confirmed",
            "result": "Successful"
            }
        }
    ]
}
  • BookingUSB - Modify/Cancel API:

If distributors query for a reservation that is pending or fails on hotel suppliers’ CRS/PMS. An error will be returned.

Response Example (HTTP Status 500)

{
    "errorCode": "StatusPending",
    "errorMessage": "The reservation is being processed by the hotel and cannot be modified or canceled at this time"
}
  • GO Console - GO added a new status named 'Processing' to present the status of a reservation.
    • GO added "Confirm Processing" status on Operation>>Reservation>>Distributor Reservation page.
    • GO added “Processing” status in the reservation report.