Multi-hotel Avail Shopping API
Modified on: 2024-03-22 13:46
As part of our design update, the screenshots are currently being revised.
TABLE OF CONTENTS
BTS Multi-hotel Availability Shopping is a fast shopping API for distributors to query availability of multiple hotels from ARI cache or supplier CRS. It provides high performance, high accuracy and high TPS.
POST
URL: {endpoint}//shopping/multihotelsRequest Example
{
"header": {
"distributorId": "string",
"version": "v1",
"token": "be5b09acd91b45988f3f9dff595563f0"
},
"hotels": [
{
"supplierId": "HILTON",
"hotelId": "GATHI"
}
],
"corpCode": "string",
"stayRange": {
"checkin": "2024-01-01",
"checkout": "2024-01-04"
},
"roomCriteria": {
"roomCount": 2,
"adultCount": 1,
"childCount": 2,
"childAges": [
4,
8
]
},
"iata": "string",
"extensions": {
"key1": "value1",
"key2": "value2"
}
}Request 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 the distributor in DerbySoft's system | MOCK_DISTRIBUTOR |
@version | string | Yes | MaxLength: 20 Version of API | v1.0.0 |
@token | string | Yes | MaxLength: 64 A unique ID to identify request and response, normally it should be UUID. | 18393849028490234 |
hotelId | string | Yes | Hotel ID in supplier's system | GATHI |
stayRange | object | Yes | / | / |
@checkin | string | Yes | Check-in, format with yyyy-MM-dd | 2024-01-01 |
@checkout | string | Yes | Check out, format with yyyy-MM-dd | 2024-01-04 |
roomCriteria | object | Yes | / | / |
@roomCount | integer | Yes | Total room count per request | 2 |
@adultCount | integer | Yes | Adult count per room | 1 |
@childCount | integer | No | Child count per room | 2 |
@childAges | array | No | Child ages for each child, array size MUST be the same as a child count. | [ 4, 8 ] |
corpCode | string | No | Corp ID in distributor’s system | DIS |
iata | string | No | IATA of distributor | / |
| extensions | object | No | Optional: Additional agreed-upon attributes between suppliers and distributors (DerbySoft will provide the specified format). Please don't transmit sensitive information through this field. For more information refer to: Sensitive Information | / |
Response Example
{
"header": {
"distributorId": "string",
"version": "v1",
"token": "be5b09acd91b45988f3f9dff595563f0"
},
"stayRange": {
"checkin": "2024-01-01",
"checkout": "2024-01-04"
},
"iata": "string",
"availHotels": [
{
"supplierId": "HILTON",
"hotelId": "GATHI",
"availRoomRates": [
{
"roomCriteria": {
"roomCount": 2,
"adultCount": 1,
"childCount": 2,
"childAges": [
4,
8
]
},
"inventory": 2,
"roomId": "K1D",
"rateId": "ODAD01",
"rateFlag": "Corporate",
"currency": "USD",
"amountBeforeTax": [
100,
100,
120
],
"amountAfterTax": [
110,
110,
130
],
"mealPlan": "RO",
"paymentType": "PayNow",
"guarantee": {
"guaranteeType": "CCG"
},
"fees": [
{
"dateRange": {
"startDate": "2024-01-01",
"endDate": "2024-01-04"
},
"fee": {
"name": "Service Charge",
"type": "Exclusive",
"amount": 10,
"amountType": "Percent",
"chargeType": "PerRoomPerNight",
"paymentType": "PayNow",
"effectivePerson": 0
}
}
],
"cancelPolicy": {
"code": "AD100P_100P",
"description": "Non Refundable",
"cancelPenalties": [
{
"noShow": true,
"cancellable": true,
"cancelDeadline": {
"offsetTimeDropType": "BeforeArrival",
"offsetTimeUnit": "D",
"offsetTimeValue": 999,
"deadline": "string"
},
"penaltyCharge": {
"chargeBase": "FullStay",
"nights": 0,
"amount": 0,
"percent": 0
}
}
]
}
}
]
}
]
}Error Response(HTTP Status 401)
{
"errorCode": "string",
"supplierErrorCode": "string",
"errorMessage": "string"
}Error Response(HTTP Status 500)
{
"errorCode": "string",
"supplierErrorCode": "string",
"errorMessage": "string"
}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 the distributor in DerbySoft's system | MOCK_DISTRIBUTOR |
@version | string | Yes | MaxLength: 20 Version of API | v1.0.0 |
@token | string | Yes | MaxLength: 64 A unique ID to identify request and response, normally it should be UUID. | 18393849028490234 |
hotelId | string | Yes | Hotel ID in supplier's system | GATHI |
stayRange | object | Yes | / | / |
@checkin | string | Yes | Check-in, format with yyyy-MM-dd | 2024-01-01 |
@checkout | string | Yes | Check out, format with yyyy-MM-dd | 2024-01-04 |
roomCriteria | object | Yes | / | / |
@roomCount | integer | Yes | Total room count per request | 2 |
@adultCount | integer | Yes | Adult count per room | 1 |
@childCount | integer | No | Child count per room | 2 |
@childAges | array | No | Child ages for each child, array size MUST be the same as the child count/ | [ 4, 8 ] |
iata | string | No | IATA of distributor | / |
roomRates |
| Yes | Meal plan, fee, and cancel policy are optional fields as some distributors do not support these in the API. | / |
@inventory | integer | Yes | Available inventory count according to request criteria | 1 |
@promoteCode | string | No | the code for the promotion applied to this rate, It's required when isAfterPromotion = true. | discount001 |
@roomId | string | Yes | Room ID in supplier system | 10000101 |
@rateId | string | Yes | Rate ID in supplier system | 123456 |
@currency | string | Yes | Currency code [ISO-4217] | USD |
@amountBeforeTax | array[number] | No | The daily amount of rate without tax & fee | [ 100, 100, 120 ] |
@amountAfterTax | array[number] | No | The daily amount of rate with tax & fee | [ 110, 110, 130 ] |
@mealPlan | string | No | meal plan code list. | RO |
@paymentType | enum | No | Indicates the product is prepaid to the hotel (PayNow) or pay at the hotel (PayLater) | PayNow |
roomRates / guarantee | object | No | Guarantee information for this room rate. | / |
@guaranteeType | string | Yes | guarantee type list. | CCG |
roomRates.fees | array[object] | No | Fee or tax by date range. | / |
fees.dateRange | object | Yes | / | / |
@startDate | string | Yes | Start date of date range, format with yyyy-MM-dd | 2024-01-01 |
@endDate | string | Yes | End date of date range, format with yyyy-MM-dd | 2024-01-04 |
fees.fee |
| Yes | / | / |
@name | string | Yes | Pattern: \w[\w\d]+ | Service Charge |
@type | enum | Yes | The fee or tax is included in the amount before tax or not. Enum: [ Inclusive, Exclusive ] | Exclusive |
@amount | number | Yes | Amount value of fee or tax | 10 |
@amountType | string | Yes | Indicates how to charge the tax, 10% per room per night in this example Enum: [ Fix, Percent ] | Percent |
@chargeType | string | Yes | Enum: [ PerRoomPerNight, PerPersonPerNight, PerRoomPerStay, PerPersonPerStay ] | PerRoomPerNight |
@paymentType | enum | No | Indicates the fee is prepaid to the hotel (PayNow) or pay at the hotel (PayLater) Enum: [ PayLater, PayNow ] | PayNow |
@effectivePerson | number | No | This means the fee that will be charged based on how many persons, like extra person charge, usually applied from 3, so the 1 adult, 2 adults will be same, 3 adults will be charged an extra fee. | / |
roomRates.cancelPolicy | object | No | Cancellation Policy" | / |
@code | string | Yes | Max Length: 128 Code of cancel policy | AD100P_100P |
@description | string | No | Max Length: 1024 cancel policy | Non Refundable |
cancelPolicy. cancelPenalties |
| Yes | Detail about the cancel Penalty | / |
@noShow | boolean | Yes | If true, it means the penaltyCharge applied for No-Show, and the cancellable, cancelDeadline will NOT exist. | / |
@cancellable | boolean | No | Indicates cancel is allowed or not. If false, it cannot be canceled. If true, the cancelDeadline will exist. | / |
cancelPenalties. cancelDeadline |
| No | / | / |
@offsetTimeDropType | enum | No | Enum: [ BeforeArrival ] An enumerated type indicates when the deadline drop time goes into effect. | / |
@offsetTimeUnit | enum | No | Enum: [ D, H ]
| / |
@offsetTimeValue | number | No | The number of offset times with the time unit. | / |
@deadline | string | No | local deadline time allowed for cancellation, like 4 PM, or 6 PM. | / |
cancelPenalties. penaltyCharge | / | / | / | / |
@chargeBase | enum | No | Enum: [ FullStay, NightBase ] if FullStay, it will be a percentage or amount, if NightBase, the nights are required. | / |
@nights | number | No | Exists if the penalty charge is based on the night, like the first night. | / |
@amount | number | No | Exists if the penalty charge is a flat charge, like USD 30.00. | / |
@percent | number | No | Exists if the penalty charge is percent, like 15.5 means 15.5%. | / |
| extensions | object | No | Optional: Additional agreed-upon attributes between suppliers and distributors (DerbySoft will provide the specified format). Please don't transmit sensitive information through this field. For more information refer to: Sensitive Information | / |
Did you find it helpful? Yes No
Send feedback