AvailabilityPeer(Push Model)
Modified on: 2024-10-21 16:35
As part of our design update, the screenshots are currently being revised.
TABLE OF CONTENTS
Introduction
AvailabilityPeer is a set of outbound APIs that allow distributors to receive the ARI (Availability, Rates, and Inventory) data of hotels. By using AvailabilityPeer - ARI Push APIs, distributors can receive the rates and availabilities of hotels and store them for customer searching. AvailabilityPeer supports two types of rate models: Daily and LOS. Distributors can receive corresponding rates based on the type of hotel rate model.
DerbySoft uses ping API to check whether the endpoint provided by distributors is working or not.
Meanwhile, the Hotel API is used by DerbySoft to get the list of active hotels and products from the distributor's system. DerbySoft will use this API to filter the ARI data push to distributors. Distributors should ensure the status of hotels and products are up to date.
Finally, the ARI Push API is used by DerbySoft to push ARI data to distributors periodically. Distributors can receive the ARI data of a hotel by using the Daily Push API (/ari/daily/push) for daily rates or the LOS Push API (/ari/los/push) for length of stay rates.
APIs marked with "☆" are mandatory for Distributors to implement, while those marked with "◎" are optional but recommended.
◎ Ping API
☆ Hotel API
Hotel List (/hotels/{supplierId})
Hotel Products (/hotel/{supplierId}/{hotelId})
☆ ARI Push API
Daily Push (/ari/daily/push)
LOS Push (/ari/los/push)
Ping
DerbySoft uses ping API to check whether the endpoint provided by distributors is working or not.
GET /ping HTTP/1.1 URL: {{endpoint}}/ping Authorization:Bearer 53ac07777cdffac2d53000002d698728ce964432d7167596bc005c5fc Accept-Encoding: gzip Content-Encoding: gzip Content-Type: application/json;charset=utf-8
Response Example
Success Response (HTTP Status 200)
"ok"
Error Response (HTTP Status 401)
{ "error": "Key not authorised" }
Error Response (HTTP Status 500)
{ "errorCode": "InvalidField", "errorMessage": "Invalid Message" }
Hotel List
Distributors should select the hotels they wish to activate from their suppliers and provide the list of active hotels for each supplier. DerbySoft uses this API to retrieve the list and push availabilities only for active hotels.
GET /hotels/{supplierId} HTTP/1.1 URL: {{endpoint}}/hotels/{supplierId} Authorization:Bearer 53ac07777cdffac2d53000002d698728ce964432d7167596bc005c5fc Accept-Encoding: gzip Content-Encoding: gzip Content-Type: application/json;charset=utf-8
Request Parameters
Name | Description | Required | Type | Example |
---|---|---|---|---|
supplierId | The ID of the supplier in DerbySoft's system | Yes | string | HILTON |
Response Example
Success Response (HTTP Status 200)
[ { "supplierId": "HILTON", "hotelId": "GATHI", "status": "Actived" } ]
Error Response (HTTP Status 401)
{ "error": "Key not authorised" }
Error Response (HTTP Status 500)
{ "errorCode": "InvalidField", "errorMessage": "Invalid Message" }
Response Specification
Attribute | Type | Required | Description | Example |
---|---|---|---|---|
supplierId | string | Yes | Supplier ID in DerbySoft's system | HILTON |
hotelId | string | Yes | Hotel ID in supplier‘s system | GATHI |
status | enum | Yes | Enum: [ Actived, Deactived ] Status in distributor's system | Actived |
Hotel Products
Distributors use this API to indicate hotel product lists that plan to sell or stop-sell with their status (Actived or Deactived) for each hotel. DerbySoft then retrieves this list to push ARI for only active products.
GET /hotel/{supplierId}/{hotelId} HTTP/1.1 URL: {{endpoint}}/hotel/{supplierId}/{hotelId} Authorization:Bearer 53ac07777cdffac2d53000002d698728ce964432d7167596bc005c5fc Accept-Encoding: gzip Content-Encoding: gzip Content-Type: application/json;charset=utf-8
Request Parameters
Name | Description | Required | Type | Example |
---|---|---|---|---|
supplierId | The ID of the supplier in DerbySoft's system | Yes | string | HILTON |
hotelId | The ID of a hotel in the supplier's system | Yes | string | GATHI |
Response Example
Success Response (HTTP Status 200)
{ "supplierId": "HILTON", "hotelId": "GATHI", "status": "Actived", "settings": { "additionalProp1": "string", "additionalProp2": "string", "additionalProp3": "string" }, "ariType": "Daily", "rateType": "AmountBeforeTax", "products": [ { "roomId": "K1", "rateId": "CBAR", "status": "Actived", "roomName": "Double Room", "rateName": "Bar Rate", "occupancy": { "maxAdult": 3, "maxChild": 2, "maxOccupancy": 3 } } ] }
Error Response (HTTP Status 401)
{ "error": "Key not authorised" }
Error Response (HTTP Status 500)
{ "errorCode": "InvalidField", "errorMessage": "Invalid Message" }
Response Specification
Attribute | Type | Required | Description | Example |
---|---|---|---|---|
supplierId | string | Yes | The ID of the supplier in DerbySoft's system. | HILTON |
hotelId | string | Yes | Hotel ID in supplier's system | GATHI |
status | enum | Yes | Enum: [ Actived, Deactived ] Status in supplier's system | Actived |
settings | object | No | A common extension object for extra attributes like account, extra setting required by a distributor, etc. | "settings": { |
ariType | enum | Yes | Emun:[ Daily, LOS ] Indicates which ARI model to be used for ARI API. | Daily |
rateType | enum | Yes | Emun: [ AmountBeforeTax, AmountAfterTax, Both ] Indicates which rate will be used in ARI and Reservation flow.
| AmountBeforeTax |
products | array | Yes | / | / |
@roomId | string | Yes | Room ID in supplier's system | King |
@rateId | string | Yes | Rate ID in supplier's system | BAR |
@status | enum | Yes | Enum: [ Actived, Deactived ] | Actived |
@roomName | string | No | Room type name | King Room |
@rateName | string | No | Rate plan name | Best Available Rate |
products/occupancy | object | Yes | / | / |
@maxAdult | integer | Yes | Max adult count | 3 |
@maxChild | integer | Yes | Max child count | 2 |
@maxOccupancy | integer | Yes | Max occupancy | 3 |
Daily Push
This API enables DerbySoft to send Daily ARI to Distributors for a hotel within a specified date range.
POST /ari/daily/push HTTP/1.1 URL: {{endpoint}}/ari/daily/push Authorization:Bearer 53ac07777cdffac2d53000002d698728ce964432d7167596bc005c5fc Accept-Encoding: gzip Content-Encoding: gzip Content-Type: application/json;charset=utf-8
Request Example
Occupancy Rate
{ "header": { "supplierId": "ABCDE", "distributorId": "GTA", "version": "v4", "token": "18393849028490234" }, "messageType": "Delta", "hotelId": "ABC123", "dateRange": { "startDate": "2018-01-01", "endDate": "2018-01-04" }, "currency": "USD", "dailyAris": [ { "roomId": "K1", "rateId": "BARB", "mealPlans": [ "BB", "BB", "BB", "BB" ], "inventories": [ 9, 0, 9, 9 ], "rates": { "type": "OccupancyRate", "rates": [ { "adultCount": 2, "childCount": 1, "amountBeforeTax": [ 502.19, 502.19, 502.19, 502.19 ], "amountAfterTax": [ 623.23, 623.23, 623.23, 623.23 ] } ] }, "availStatuses": { "close": [ false, false, false, false ], "minStayArrival": [ 0, 2, 0, 0 ], "maxStayArrival": [ 0, 2, 0, 0 ], "minStayThrough": [ 0, 2, 0, 0 ], "maxStayThrough": [ 0, 2, 0, 0 ], "minAdvanceDay": [ 0, 2, 0, 0 ], "maxAdvanceDay": [ 365, 365, 365, 365 ], "cta": [ false, false, false, true ], "ctd": [ false, false, false, true ], "fplos": [ "1111111", "1001111", "1000001", "0000000" ] }, "rateChangeIndicators": [ true, false, true, false ] } ] }
Occupancy Rate from Exchange Connection and Net Rate Model
{ "header": { "supplierId": "HILTON", "distributorId": "GTA", "version": "v4", "token": "18393849028490234" }, "messageType": "Delta", "hotelId": "GATHI", "dateRange": { "startDate": "2018-01-01", "endDate": "2018-01-04" }, "currency": "USD", "dailyAris": [ { "roomId": "K1", "rateId": "BARB", "connectionType": "Exchange", "mealPlans": [ "BB", "BB", "BB", "BB" ], "inventories": [ 9, 0, 9, 9 ], "rates": { "type": "OccupancyRate", "rates": [ { "adultCount": 2, "childCount": 1, "amountBeforeTax": [ 502.19, 502.19, 502.19, 502.19 ], "amountAfterTax": [ 623.23, 623.23, 623.23, 623.23 ], "suggestedSellingPriceBeforeTax": [ 100, 100, 120, 120 ], "suggestedSellingPriceAfterTax": [ 110, 110, 130, 130 ] } ] }, "availStatuses": { "close": [ false, false, false, false ], "minStayArrival": [ 0, 2, 0, 0 ], "maxStayArrival": [ 0, 2, 0, 0 ], "minStayThrough": [ 0, 2, 0, 0 ], "maxStayThrough": [ 0, 2, 0, 0 ], "minAdvanceDay": [ 0, 2, 0, 0 ], "maxAdvanceDay": [ 365, 365, 365, 365 ], "cta": [ false, false, false, true ], "ctd": [ false, false, false, true ], "fplos": [ "1111111", "1001111", "1000001", "0000000" ] }, "rateChangeIndicators": [ true, false, true, false ] } ] }
Occupancy Rate with Child Pricing based on age bands
{ "header": { "supplierId": "ABCDE", "distributorId": "GTA", "version": "v4", "token": "18393849028490234" }, "messageType": "Delta", "hotelId": "ABC123", "dateRange": { "startDate": "2018-01-01", "endDate": "2018-01-04" }, "currency": "USD", "dailyAris": [ { "roomId": "K1", "rateId": "BARB", "mealPlans": [ "BB", "BB", "BB", "BB" ], "inventories": [ 9, 0, 9, 9 ], "rates": { "extraChildRates": [ { "amountAfterTax": [ 50.00, 50.00, 50.00, 50.00 ], "amountBeforeTax": [ 40.00, 40.00, 40.00, 40.00 ], "maxAge": 2, "minAge": 0 }, { "amountAfterTax": [ 60.00, 60.00, 60.00, 60.00 ], "amountBeforeTax": [ 50.00, 50.00, 50.00, 50.00 ], "maxAge": 8, "minAge": 3 }, { "amountAfterTax": [ 70.00, 70.00, 70.00, 70.00 ], "amountBeforeTax": [ 60.00, 60.00, 60.00, 60.00 ], "maxAge": 17, "minAge": 9 } ], "type": "OccupancyRate", "rates": [ { "adultCount": 1, "amountBeforeTax": [ 502.19, 502.19, 502.19, 502.19 ], "amountAfterTax": [ 623.23, 623.23, 623.23, 623.23 ] }, { "adultCount": 2, "amountBeforeTax": [ 520.19, 520.19, 520.19, 520.19 ], "amountAfterTax": [ 641.23, 641.23, 641.23, 641.23 ] } ] }, "availStatuses": { "close": [ false, false, false, false ], "minStayArrival": [ 0, 2, 0, 0 ], "maxStayArrival": [ 0, 2, 0, 0 ], "minStayThrough": [ 0, 2, 0, 0 ], "maxStayThrough": [ 0, 2, 0, 0 ], "minAdvanceDay": [ 0, 2, 0, 0 ], "maxAdvanceDay": [ 365, 365, 365, 365 ], "cta": [ false, false, false, true ], "ctd": [ false, false, false, true ], "fplos": [ "1111111", "1001111", "1000001", "0000000" ] }, "rateChangeIndicators": [ true, false, true, false ] } ] }
- All possible occupancy combinations
Notes:
GO supports completing possible occupancy combinations up to the maximum occupancy supported by each hotel in cases children will be free of charge by hotel suppliers. Example as follow: Max occupancy = 4, max adult = 3, max children = 2, child pricing = 0. But suppliers don't provide occupancy rate for adult plus child combinations. GO supports to complele it for 3A1C, 3A0C, 2A2C, 2A1C, 2A0C, 1A1C and 1A0C.
*** The feature increases the ARI pushing traffic volume and is turned off as a default setting. If you wish to enable it, please reach out to your Client Manager for more details.
{ "header": { "supplierId": "ABCDE", "distributorId": "GTA", "version": "v4", "token": "18393849028490234" }, "messageType": "Delta", "hotelId": "ABC123", "dateRange": { "startDate": "2018-01-01", "endDate": "2018-01-04" }, "currency": "USD", "dailyAris": [ { "roomId": "K1", "rateId": "BARB", "mealPlans": [ "BB", "BB", "BB", "BB" ], "inventories": [ 9, 0, 9, 9 ], "rates": { "type": "OccupancyRate", "rates": [ { "adultCount": 1, "childCount": 0, "amountBeforeTax": [ 502.19, 502.19, 502.19, 502.19 ], "amountAfterTax": [ 523.23, 523.23, 523.23, 523.23 ] }, { "adultCount": 1, "childCount": 1, "amountBeforeTax": [ 502.19, 502.19, 502.19, 502.19 ], "amountAfterTax": [ 523.23, 523.23, 523.23, 523.23 ] }, { "adultCount": 2, "childCount": 0, "amountBeforeTax": [ 502.19, 502.19, 502.19, 502.19 ], "amountAfterTax": [ 523.23, 523.23, 523.23, 523.23 ] }, { "adultCount": 2, "childCount": 1, "amountBeforeTax": [ 502.19, 502.19, 502.19, 502.19 ], "amountAfterTax": [ 523.23, 523.23, 523.23, 523.23 ] }, { "adultCount": 2, "childCount": 2, "amountBeforeTax": [ 502.19, 502.19, 502.19, 502.19 ], "amountAfterTax": [ 523.23, 523.23, 523.23, 523.23 ] }, { "adultCount": 3, "childCount": 0, "amountBeforeTax": [ 502.19, 502.19, 502.19, 502.19 ], "amountAfterTax": [ 523.23, 523.23, 523.23, 523.23 ] }, { "adultCount": 3, "childCount": 1, "amountBeforeTax": [ 502.19, 502.19, 502.19, 502.19 ], "amountAfterTax": [ 523.23, 523.23, 523.23, 523.23 ] } ] }, "availStatuses": { "close": [ false, false, false, false ], "minStayArrival": [ 0, 2, 0, 0 ], "maxStayArrival": [ 0, 2, 0, 0 ], "minStayThrough": [ 0, 2, 0, 0 ], "maxStayThrough": [ 0, 2, 0, 0 ], "minAdvanceDay": [ 0, 2, 0, 0 ], "maxAdvanceDay": [ 365, 365, 365, 365 ], "cta": [ false, false, false, true ], "ctd": [ false, false, false, true ], "fplos": [ "1111111", "1001111", "1000001", "0000000" ] }, "rateChangeIndicators": [ true, false, true, false ] } ] }
Request Specification
Attribute | Type | Required | Description | Example |
---|---|---|---|---|
header | object | Yes | / | / |
@supplierId | string | Yes | MaxLength: 32 The ID of hotel suppliers in DerbySoft's system. | ABCDE |
@distributorId | string | Yes | MaxLength: 32 The ID of the distributor in DerbySoft's system | GTA |
@version | string | Yes | MaxLength: 20 Version of API | v4 |
@token | string | Yes | MaxLength: 64 A unique ID to identify request and response, normally it should be UUID. | 18393849028490234 |
messageType | enum | No | Enum: [ Delta, Overlay ] Omit the attributor means the Message Type is Overlay. Refer to Delta vs. Overlay for more information | Delta |
hotelId | string | Yes | ID of the hotel in the supplier's system | GATHI |
dateRange | object | Yes | / | / |
@startDate | string | Yes | Start date of date range, format with yyyy-MM-dd | 2018-01-01 |
@endDate | string | Yes | End date of date range, format with yyyy-MM-dd | 2018-01-04 |
currency | string | Yes | Currency code [ISO-4217] | USD |
dailyAris | array | Yes | Daily rate and inventory within a date range | / |
@roomId | string | Yes | Room ID in supplier's system | 10000101 |
@rateId | string | Yes | Rate ID in supplier's system | 123456 |
@connectionType | enum | No | Enum: [Exchange, Standard] Indicates the connection type of product. Notes: If the field is omitted, it means the Connection Type is Standard. | Standard |
@mealPlans | array[string] | No | Meal plan for each date | [ "BB", "BB", "BB", "BB" ] |
@inventories | array[integer] | Yes | Room inventory for each date | [ 9, 0, 9, 9 ] |
dailyAris/rates | / | Yes | / | / |
@type | enum | Yes | Enum: [ OccupancyRate, CommonRate ] Indicates which rate model to be used: OccupancyRate or CommonRate. refer to Occupancy Rate vs. Common Rate get to know the differences. | / |
rates/rates | array[object] | Yes | This node will not display if it’s the Common Rate Model. | / |
@adultCount | integer | No | The attribute will not display if it’s the Common Rate Model. | / |
@childCount | integer | No | The attribute will not display if it’s the Common Rate Model. | / |
@amountBeforeTax | array[number] | No | / | [ 502.19, 502.19, 502.19, 502.19 ] |
@amountAfterTax | array[number] | No | / | [ 623.23, 623.23, 623.23, 623.23 ] |
@suggestedSellingPriceBeforeTax | array[number] | No | Amount of rate without tax & fee for exchange Notes: If the connection type is "Exchange" and the "Net" Rate Model, the field will be visible; otherwise, it will not appear. | [100, 100, 100] |
@suggestedSellingPriceAfterTax | arry[number] | No | Amount of rate with tax & fee for exchange Notes: If the connection type is "Exchange" and the "Net" Rate Model, the field will be visible; otherwise, it will not appear. | [110, 110, 110] |
dailyAris/availStatuses | / | / | For more clarification on the following restrictions, please refer to the article. | / |
@close | array[boolean] | Yes | Closed or not for each date | [false, false, false, false] |
@minStayArrival | array[integer] | No | Minimum length of stay based on check-in for each date, zero means no restriction. | [ 0, 2, 0, 0 ] |
@maxStayArrival | array[integer] | No | Maximum length of stay based on check-in for each date, zero means no restriction. | [ 0, 2, 0, 0 ] |
@minStayThrough | array[integer] | No | Minimum length of stay based on a date through for each date, zero means no restriction. | [ 0, 2, 0, 0 ] |
@maxStayThrough | array[integer] | No | Maximum length of stay based on a date for each date, zero means no restriction. | [ 0, 2, 0, 0 ] |
@minAdvanceDay | array[integer] | No | Minimum days to book in advance for each date, zero means no restriction. | [ 0, 2, 0, 0 ] |
@maxAdvanceDay | array[integer] | No | Maximum days to book in advance for each date, zero means no restriction. | [ 365, 365, 365, 365 ] |
@cta | array[boolean] | No | Closed to arrival for each date | [ false, false, false, true ] |
@ctd | array[boolean] | No | Closed to departure for each date | [ false, false, false, true ] |
@fplos | array[string] | No | Full pattern length of stay to indicate if the stay is available. | [ "1111111", "1001111", "1000001", "0000000" ] |
dailyAris/rateChangeIndicators | array[boolean] | No | Rate change indicator of each date. For more information refer to Rate Change Indicator | [ true, false, true, false ] |
Response Example
Success Response (HTTP Status 200)
{ "header": { "supplierId": "ABCDE", "distributorId": "GTA", "version": "v4", "token": "18393849028490234" }, "hotelId": "ABC123", "updateDateRange": { "startDate": "2018-01-01", "endDate": "2018-01-04" } }
Error Response (HTTP Status 403)
{ "errorCode": "InvalidField", "errorMessage": " Unauthorized token" }
Error Response (HTTP Status 500)
{ "errorCode": "InvalidField", "errorMessage": "Invalid Message" }
Response Specification
Attribute | Type | Required | Description | Example |
---|---|---|---|---|
header | object | Yes | / | / |
@supplierId | string | Yes | MaxLength: 32 The ID of the hotel supplier in DerbySoft's system | ABCDE |
@distributorId | string | Yes | MaxLength: 32 The ID of the distributor in DerbySoft's system | GTA |
@version | string | Yes | MaxLength: 20 Version of API | v4 |
@token | string | Yes | MaxLength: 64 A unique ID to identify request and response, normally it should be UUID. | 18393849028490234 |
hotelId | string | Yes | The ID of a hotel in the supplier's system | ABC123 |
updateDateRange | object | Yes | / | / |
@startDate | string | Yes | start date of date range, format with yyyy-MM-dd | 2018-01-01 |
@endDate | string | Yes | end date of date range, format with yyyy-MM-dd | 2018-01-04 |
LOS Push
This API enables DerbySoft to send LOS ARI to Distributors for a hotel within a specified date range.
POST /ari/los/push HTTP/1.1 URL: {{endpoint}}/ari/los/push Authorization:Bearer 53ac07777cdffac2d53000002d698728ce964432d7167596bc005c5fc Accept-Encoding: gzip Content-Encoding: gzip Content-Type: application/json;charset=utf-8
Request Example
- Occupancy Rate
{ "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 ], "rates": { "type": "OccupancyRate", "rates": [ { "adultCount": 2, "childCount": 1, "amountBeforeTax": [ 502.19, 502.19, 502.19, 502.19 ], "amountAfterTax": [ 623.23, 623.23, 623.23, 623.23 ] } ] } } ] }
- Occupancy Rate from Exchange Connection and Net Rate Model
{ "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", "connectionType": "Exchange", "los": 1, "mealPlans": [ "BB", "BB", "RO", "BB" ], "inventories": [ 9, 0, 9, 9 ], "rates": { "type": "OccupancyRate", "rates": [ { "adultCount": 2, "childCount": 1, "amountBeforeTax": [ 502.19, 502.19, 502.19, 502.19 ], "amountAfterTax": [ 623.23, 623.23, 623.23, 623.23 ], "suggestedSellingPriceBeforeTax": [ 100, 100, 120, 120 ], "suggestedSellingPriceAfterTax": [ 110, 110, 130, 130 ] } ] } } ] }
- Occupancy Rate with Child Pricing based on age bands
{ "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 ], "rates": { "extraChildRates": [ { "minAge": 0, "maxAge": 2, "amountAfterTax": [ 50.00, 50.00, 50.00, 50.00 ], "amountBeforeTax": [ 40.00, 40.00, 40.00, 40.00 ] }, { "minAge": 3, "maxAge": 8, "amountAfterTax": [ 60.00, 60.00, 60.00, 60.00 ], "amountBeforeTax": [ 50.00, 50.00, 50.00, 50.00 ] }, { "minAge": 9, "maxAge": 17, "amountAfterTax": [ 70.00, 70.00, 70.00, 70.00 ], "amountBeforeTax": [ 60.00, 60.00, 60.00, 60.00 ] } ], "type": "OccupancyRate", "rates": [ { "adultCount": 2, "amountBeforeTax": [ 200.00, 200.00, 200.00, 200.00 ], "amountAfterTax": [ 220.00, 220.00, 220.00, 220.00 ] }, { "adultCount": 1, "amountBeforeTax": [ 160.00, 160.00, 160.00, 160.00 ], "amountAfterTax": [ 192.00, 192.00, 192.00, 192.00 ] } ] } }, { "roomId": "K1", "rateId": "BARB", "los": 2, "mealPlans": [ "BB", "BB", "RO", "BB" ], "inventories": [ 9, 0, 9, 9 ], "rates": { "extraChildRates": [ { "minAge": 0, "maxAge": 2, "amountAfterTax": [ 100.00, 100.00, 100.00, 100.00 ], "amountBeforeTax": [ 80.00, 80.00, 80.00, 80.00 ] }, { "minAge": 3, "maxAge": 8, "amountAfterTax": [ 120.00, 120.00, 120.00, 120.00 ], "amountBeforeTax": [ 100.00, 100.00, 100.00, 100.00 ] }, { "minAge": 9, "maxAge": 17, "amountAfterTax": [ 140.00, 140.00, 140.00, 140.00 ], "amountBeforeTax": [ 120.00, 120.00, 120.00, 120.00 ] } ], "type": "OccupancyRate", "rates": [ { "adultCount": 2, "amountBeforeTax": [ 400.00, 400.00, 400.00, 400.00 ], "amountAfterTax": [ 440.00, 440.00, 440.00, 440.00 ] }, { "adultCount": 1, "amountBeforeTax": [ 320.00, 320.00, 320.00, 320.00 ], "amountAfterTax": [ 384.00, 384.00, 384.00, 384.00 ] } ] } } ] }
- All possible occupancy combinations
Notes:
GO supports completing possible occupancy combinations up to the maximum occupancy supported by each hotel in cases children will be free of charge by hotel suppliers. Example as follow: Max occupancy = 4, max adult = 3, max children = 2, child pricing = 0. But suppliers don't provide occupancy rate for adult plus child combinations. GO supports to complele it for 3A1C, 3A0C, 2A2C, 2A1C, 2A0C, 1A1C and 1A0C.
*** The feature increases the ARI pushing traffic volume and is turned off as a default setting. If you wish to enable it, please reach out to your Client Manager for more details.
{ "header": { "supplierId": "HILTON", "distributorId": "GTA", "version": "v4", "token": "18393849028490234" }, "messageType": "Delta", "hotelId": "GATHI", "dateRange": { "startDate": "2018-01-01", "endDate": "2018-01-07" }, "currency": "USD", "losAris": [ { "roomId": "NCAA", "rateId": "LHGKX", "los": 1, "mealPlans": [ "BB", "BB", "BB", "BB", "BB", "BB", "BB" ], "inventories": [ 0, 0, 0, 0, 1, 1, 1 ], "rates": { "rates": [ { "adultCount": 1, "childCount": 0, "amountBeforeTax": [ 183.01, 141, 166, 176, 176, 158, 182 ] }, { "adultCount": 1, "childCount": 1, "amountBeforeTax": [ 183.01, 141, 166, 176, 176, 158, 182 ] }, { "adultCount": 2, "childCount": 0, "amountBeforeTax": [ 183.01, 141, 166, 176, 176, 158, 182 ] }, { "adultCount": 2, "childCount": 1, "amountBeforeTax": [ 183.01, 141, 166, 176, 176, 158, 182 ] }, { "adultCount": 2, "childCount": 2, "amountBeforeTax": [ 183.01, 141, 166, 176, 176, 158, 182 ] }, { "adultCount": 3, "childCount": 0, "amountBeforeTax": [ 191.85, 149.87, 175.07, 184.84, 184.84, 166.83, 190.84 ] }, { "adultCount": 3, "childCount": 1, "amountBeforeTax": [ 191.85, 149.87, 175.07, 184.84, 184.84, 166.83, 190.84 ] } ], "type": "OccupancyRate" } } ] }
Request Specification
Attribute | Type | Required | Description | Example |
---|---|---|---|---|
header | object | Yes | / | / |
@supplierId | string | Yes | max length: 32 The ID of hotel suppliers in DerbySoft's system | HILTON |
@distributorId | string | Yes | max length: 32 ID of distributor in DerbySoft's system | GTA |
@version | string | Yes | max length: 20 Version of API | v4 |
@token | string | Yes | max length: 64 A unique ID to identify requests and response, normally it should be UUID. | 18393849028490234 |
messageType | enum | No | Enum: [ Delta, Overlay ] Omit the attributor means the Message Type is Overlay. Refer to Delta vs. Overlay for more information | Delta |
hotelId | string | Yes | The ID of a hotel in the supplier's system | GATHI |
dateRange | object | Yes | / | / |
@startDate | string | Yes | Start date of date range, format with yyyy-MM-dd | 2018-01-01 |
@endDate | string | Yes | End date of date range, format with yyyy-MM-dd | 2018-01-04 |
currency | string | Yes | Currency code[ISO-4217] | USD |
losAris | array | Yes | Length of stay rate and inventory within a date range. If no available rates, it means the hotel was closed. If the available rates are only for certain room types, it means other room types are closed. | / |
@roomId | string | Yes | Room ID in supplier's system | 10000101 |
@rateId | string | Yes | Rate ID in supplier's system | 123456 |
@connectionType | enum | No | Enum: [Exchange, Standard] Indicates the connection type of product. Notes: If the field is omitted, it means the Connection Type is Standard. | Standard |
@los | integer | Yes | Length of stay | 1 |
@mealPlans | array[string] | No | Meal plan for each date | [ "BB", "BB", "BB", "BB" ] |
@inventories | array[integer] | Yes | Room inventory for each date | [ 9, 0, 9, 9 ] |
losAris/rates | / | Yes | / | / |
@type | enum | Yes | Enum: [ OccupancyRate, CommonRate ] Indicates which rate model to be used: OccupancyRate or CommonRate. | / |
rates/rates | array[object] | Yes | This node will not display if it’s the Common Rate Model. | / |
@adultCount | integer | No | This node will not display if it’s the Common Rate Model. | / |
@childCount | integer | No | The node will not display if it’s the Common Rate Model. | / |
@amountBeforeTax | array[number] | No | / | [ 502.19, 502.19, 502.19, 502.19 ] |
@amountAfterTax | array[number] | No | / | [ 623.23, 623.23, 623.23, 623.23 ] |
rates/extraChildRates | object | No | Extra child rate is only used with occupancy rate, max child age must be provided for available hotel product. | / |
@minAge | integer | Yes | Minimum child age is greater than or equal to zero. | 0 |
@maxAge | integer | Yes | Maximum child age is less than or equal to maxChildAge. | 2 |
@amountBeforeTax | array[number] | No | / | [ 40, 40 ] |
@amountAfterTax | array[number] | No | / | [ 40, 40 ] |
@suggestedSellingPriceBeforeTax | array[number] | No | Amount of rate without tax & fee for exchange Notes: If the connection type is "Exchange" and the "Net" Rate Model, the field will be visible; otherwise, it will not appear. | [100, 100, 100] |
@suggestedSellingPriceAfterTax | array[number] | No | Amount of rate with tax & fee for exchange Notes: If the connection type is "Exchange" and the "Net" Rate Model, the field will be visible; otherwise, it will not appear. | [110, 110, 110] |
extensions | object | No | A common extension object for extra attributes like account, extra setting required by a distributor, etc. | / |
Response Example
Success Response (HTTP Status 200)
{ "header": { "supplierId": "HILTON", "distributorId": "GTA", "version": "v4", "token": "18393849028490234" }, "hotelId": "GATHI", "updateDateRange": { "startDate": "2018-01-01", "endDate": "2018-01-04" } }
Error Response (HTTP Status 403)
{ "errorCode": "InvalidField", "errorMessage": " Unauthorized token" }
Error Response (HTTP Status 500)
{ "errorCode": "InvalidField", "errorMessage": "Invalid Message" }
Response Specification
Attribute | Type | Required | Description | Example |
---|---|---|---|---|
header | object | Yes | / | / |
@supplierId | string | Yes | MaxLength: 32 The ID of the hotel supplier in DerbySoft's system | HILTON |
@distributorId | string | Yes | MaxLength: 32 The ID of distributor in DerbySoft's system | GTA |
@version | string | Yes | MaxLength: 20 Version of API | v4 |
@token | string | Yes | MaxLength: 64 A unique ID to identify request and response, normally it should be UUID. | 18393849028490234 |
hotelId | string | Yes | ID of a hotel in supplier's system | GATHI |
updateDateRange | object | Yes | / | / |
@startDate | string | Yes | Start date of date range, format with yyyy-MM-dd | 2018-01-01 |
@endDate | string | Yes | End date of date range, format with yyyy-MM-dd | 2018-01-04 |
Did you find it helpful? Yes No
Send feedback