AgencyUSB-Hotel API
Modified on: 2026-04-21 16:50
TABLE OF CONTENTS
- Introduction
- Hotel List(Pull Mode)
- Hotel Products(Pull Mode)
- Hotel Products(Push Mode)
- Retrieve Hotel Products (Push Mode)
Introduction
Notes: Please note that Push Hotel Mode can only be used with Push ARI Mode. Therefore, if you select pushing ARI to the Go platform, you must choose Push Hotel Mode. Conversely, if you select Pull ARI Mode, only Pull Hotel Mode can be combined with it.
DerbySoft Go provides two methods for communicating hotel lists and product information between hotel suppliers and the DerbySoft Go platform.
PULL Hotel Mode:
In this mode, DerbySoft uses Pull APIs to periodically retrieve the list of hotels and products from the hotel provider. Hotel suppliers can manage the status of hotels and products through this API. This set includes two mandatory APIs (indicated by a "☆" symbol).
PUSH Hotel Mode:
In this mode, the hotel supplier proactively pushes hotel products to the DerbySoft Go platform. This set also includes two APIs: one for pushing hotel products to the Go platform and another for hotel suppliers to search for hotel products that are already saved on the Go platform. As in the Pull mode, APIs marked with a "☆" are mandatory to implement.
PULL Hotel APIs:
- ☆ Hotel List (/hotels) - Get all hotels for a specific distributor.
- ☆ Hotel Products (/hotel/{hotelId}) - Get all available products of one hotel to a specific distributor.
PUSH Hotel APIs:
- ☆ Hotel Products(/hotel/{distributorId}) - The Hotel Products API allows hotel suppliers to periodically push hotel information to DerbySoft, which updates this information in real-time.
- Retrieve Hotel Products(/hotel/{sourceId}/{hotelId}) - This API allows hotel suppliers to view activated products for one hotel on the DerbySoft Go platform.
Hotel List(Pull Mode)
This is an API for DerbySoft to call the Supplier's system to get all hotel summary information for a specific distributor.
GET /hotels HTTP/1.1
URL: {{endpoint}}/hotels?distributorId={{distributorId}}
Authorization: 53ac07777cdffac2d53000002d698728ce964432d7167596bc005c5fc
Accept-Encoding: gzip
Content-Encoding: gzip
Content-Type: application/json;charset=utf-8Request Parameters
Name | Description | Required | Type | Example |
|---|---|---|---|---|
distributorId | Distributor ID in DerbySoft‘s system | Yes | string | HOTELBEDS |
Response Example
- Success Response (HTTP Status 200)
[
{
"hotelId": "100001",
"hotelName": "This is a test hotel",
"distributorId": "GTA",
"status": "Actived"
}
]- Error Response (HTTP Status 500)
{
"errorCode": "InvalidField",
"errorMessage": "Invalid Message"
}Response Specification
| Attribute | Type | Required | Description | Example |
|---|---|---|---|---|
distributorId | string | Yes | Distributor ID in DerbySoft's system | GTA |
| hotelId | string | Yes | Hotel ID provided by hotel suppliers, only the following characters are allowed. 1. Digits (0-9) 2. Uppercase letters (A-Z) 3. Hyphen ('-') | 100001 NYABO 00016 PEP-B3T2 B8W7 |
| hotelName | string | No | Hotel Name | Test hotel |
| status | enum | Yes | Enum: [ Actived, Deactived ] Status in supplier's system | Actived |
Hotel Products(Pull Mode)
This is an API for DerbySoft to call the Supplier's system to get all products of one hotel to a specific distributor. Fee & Cancel Policy are optional fields because some distributors get this information offline instead of through the API.
GET /hotel/{hotelId} HTTP/1.1
URL: {{endpoint}}/hotel/{{hotelId}}?distributorId={{distributorId}}
Authorization: 53ac07777cdffac2d53000002d698728ce964432d7167596bc005c5fc
Accept-Encoding: gzip
Content-Encoding: gzip
Content-Type: application/json;charset=utf-8Request Parameters
| Name | Description | Required | Type | Example |
|---|---|---|---|---|
| hotelId | Hotel ID provided by hotel suppliers, only the following characters are allowed. 1. Digits (0-9) 2. Uppercase letters (A-Z) 3. Hyphen ('-') | Yes | string | 100001 NYABO 00016 PEP-B3T2 B8W7 |
| distributorId | Distributor ID in DerbySoft's system | Yes | string | HOTELBEDS |
Response Example
- Success Response (HTTP Status 200)
{
"hotelId": "100001",
"hotelName": "This is a test hotel",
"distributorId": "GTA",
"status": "Actived",
"hotelI18n": {
"en-US": {
"hotelName": "Best Western Plus Yacht Harbor Inn",
"address": [
"150 Marina Plz"
],
"country": "US",
"state": "FL",
"city": "Dunedin"
}
},
"chainCode": "Marriott",
"brandCode": "Courtyard",
"longitude": "41.40338",
"latitude": "2.17403",
"city": "string",
"country": "string",
"state": "string",
"currency": "USD",
"address": [
"AddressLine1",
"AddressLine2",
"AddressLine3",
"AddressLine4",
"AddressLine5"
],
"phone": {
"countryAccessCode": "string",
"areaCityCode": "string",
"phoneNumber": "string"
},
"settings": {
"key1": "value1",
"key2": "value2"
},
"ariType": "Daily",
"timezone": "America/Los_Angeles",
"rateType": "AmountBeforeTax",
"maxChildAge": 17,
"childRateType": "ByAge",
"products": [
{
"ratePlanI18n": {
"en": {
"name": "Standard Rate",
"description": "Best available rate with breakfast included"
},
"zh-CN": {
"name": "标准房价",
"description": "最优可用房价,含早餐"
}
},
"roomTypeI18n": {
"en": {
"name": "Deluxe Room",
"description": "Spacious room with city view"
},
"zh-CN": {
"name": "豪华房",
"description": "宽敞的房间,可欣赏城市景观"
}
},
"roomId": "10000101",
"roomDescription": "Soak in city views in our Deluxe room, which features a well-appointed ensuite bathroom and up-to-date entertainment offerings.",
"rateId": "123456",
"rateDescription": "Begin your day with a hearty meal.",
"stayType": "OverNightRoom",
"status": "Actived",
"roomName": "Double Room",
"rateName": "Bar Rate",
"occupancy": {
"maxAdult": 3,
"maxChild": 2,
"maxOccupancy": 3
},
"paymentType": "PayNow",
"guarantee": {
"guaranteeType": "CCG"
},
"cancelPolicies": [
{
"dateRange": {
"startDate": "2018-01-01",
"endDate": "2018-12-31"
},
"cancelPolicy": {
"code": "AD100P_100P",
"description": "Non Refundable"
},
"cancelPolicyI18n": {
"fr-FR": {
"description": "Non remboursable"
},
"zh-CN": {
"description": "不可退款"
}
}
}
],
"fees": [
{
"dateRange": {
"startDate": "2018-01-01",
"endDate": "2018-12-31"
},
"fee": {
"name": "Service Charge",
"type": "Exclusive",
"amount": 10,
"amountType": "Percent",
"chargeType": "PerRoomPerNight",
"paymentType": "PayNow",
"collectBy": "Distributor"
},
"feeI18n": {
"fr-FR": {
"name": "Frais de service"
},
"zh-CN": {
"name": "服务费"
}
}
},
{
"dateRange": {
"startDate": "2018-01-01",
"endDate": "2018-12-31"
},
"fee": {
"name": "City Tax",
"type": "Exclusive",
"amount": 5,
"amountType": "Fix",
"chargeType": "PerPersonPerNight",
"paymentType": "PayLater",
"collectBy": "Property"
},
"feeI18n": {
"fr-FR": {
"name": "Taxe municipale"
},
"zh-CN": {
"name": "城市税"
}
}
}
]
}
]
}- Error Response (HTTP Status 500)
{
"errorCode": "InvalidField",
"errorMessage": "Invalid Message"
}Response Specification
hotelId | string | Yes | Hotel ID provided by hotel suppliers, only the following characters are allowed. 1. Digits (0-9) 2. Uppercase letters (A-Z) 3. Hyphen ('-') | 100001 |
hotelName | string | No | Hotel name | This is a test hotel |
distributorId | string | Yes | Distributor ID in DerbySoft's system | GTA |
status | enum | Yes | Enum: [ Actived, Deactived ] Status in supplier's system | Actived |
| hotelI18n | object | No | Please find the specifications for internationalized hotel information below. Language codes must follow these format standards(Either one is okay): - ISO 639-1 (2-Letter) Codes: For example, "en" (English), "zh" (Chinese), or "fr" (Franch). - Combined Codes: A 2-letter ISO 639 language code followed by a hyphen and a 2-letter ISO 3166 country code (e.g., "en-US", "zh-CN", or "fr-FR"). | "hotelI18n": { "en-US": { "hotelName": "Best Western Plus Yacht Harbor Inn", "address": [ "150 Marina Plz" ], "country": "US", "state": "FL", "city": "Dunedin" } } |
| hotelI18n/{languageCode}/hotelName | string | Yes | The localized name of the hotel. | Best Western Plus Yacht Harbor Inn |
| hotelI18n/{languageCode}/address | array[string] | No | Localized address lines for the hotel. | [ "AddressLine1", "AddressLine2", "AddressLine3", "AddressLine4", "AddressLine5" ] |
| hotelI18n/{languageCode}/country | string | No | Country code (ISO 3166-1 alpha-2). | US |
| hotelI18n/{languageCode}/state | string | No | State or province code/name. | FL |
| hotelI18n/{languageCode}/city | string | No | City name | Dunedin |
chainCode | string | No | The chain code may identify a hotel chain or management group, e.g. Hyatt, Hilton. The hotel chain code is decided between suppliers and is optional if the hotel is an independent property that can be identified by the hotelId field alone. | Marriott |
brandCode | string | No | The brand code may identify the brand within a chain, e.g. Courtyard, Hampton Inn. This field is optional if the hotel is an independent property that can be identified by the hotelId field alone. | Courtyard |
longitude | string | No | The information for hotel location. | 41.40338 |
latitude | string | No | The information for hotel location. | 2.17403 |
city | string | No | The information for hotel location. |
|
country | string | No | The information for hotel location. |
|
state | string | No | The information for hotel location. |
|
| currency | string | No | The currency code of the hotel. | USD |
address | array[string] | No | Support up to five enumeration values | [ "AddressLine1", "AddressLine2", "AddressLine3", "AddressLine4", "AddressLine5" ] |
phone | object | No | / | / |
@countryAccessCode | string | Yes | / | / |
@areaCityCode | string | No | / | / |
@phoneNumber | string | Yes | / | / |
settings | object | Yes | 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 |
timezone | string | Yes | Timezone of property | America/Los_Angeles |
rateType | enum | Yes | Enum: [ AmountBeforeTax, AmountAfterTax, Both ]
| Both |
maxChildAge | integer | No | If childRateType is set as ByAge, max child age must be provided and greater than zero. | 17 |
childRateType | enum | No | Enum: [ Normal, ByAge, Free, AsAdult ] Indicates which child rate type will be used in ARI OccupancyRate.
| ByAge |
products | array[object] | Yes | / | / |
| products/roomTypeI18n | object | No | Please find the specifications for internationalized room type information below. Language codes must follow these format standards(Either one is okay): - ISO 639-1 (2-Letter) Codes: For example, "en" (English), "zh" (Chinese), or "fr" (Franch). - Combined Codes: A 2-letter ISO 639 language code followed by a hyphen and a 2-letter ISO 3166 country code (e.g., "en-US", "zh-CN", or "fr-FR"). | "roomTypeI18n": { "en": { "name": "Deluxe Room", "description": "Spacious room with city view" }, "zh-CN": { "name": "豪华房", "description": "宽敞的房间,可欣赏城市景观" } } |
| roomTypeI18n/{languageCode}/name | string | Yes | room type name | Deluxe Room |
| roomTypeI18n/{languageCode}/description | string | No | room type description | Spacious room with city view |
| products/ratePlanI18n | object | No | Please find the specifications for internationalized rate plan information below. Language codes must follow these format standards(Either one is okay): - ISO 639-1 (2-Letter) Codes: For example, "en" (English), "zh" (Chinese), or "fr" (Franch). - Combined Codes: A 2-letter ISO 639 language code followed by a hyphen and a 2-letter ISO 3166 country code (e.g., "en-US", "zh-CN", or "fr-FR"). | "ratePlanI18n": { "en": { "name": "Standard Rate", "description": "Best available rate with breakfast included" }, "zh-CN": { "name": "标准房价", "description": "最优可用房价,含早餐" } } |
| ratePlanI18n/{languageCode}/name | string | Yes | rate plan name | Standard Rate |
| ratePlanI18n/{languageCode}/description | string | No | rate plan description | Best available rate with breakfast included |
@roomId | string | Yes | Room ID in supplier's system | 10000101 |
@roomDescription | string | No | / | Soak in city views in our Deluxe room, which features a well-appointed ensuite bathroom and up-to-date entertainment offerings. |
@rateId | string | Yes | Rate ID in supplier's system | 123456 |
@rateDescription | string | No | / | Begin your day with a hearty meal. |
@stayType | enum | No | Enum: [ OverNightRoom, DayUseRoom ] Indicates if the product is specifically for day-use or regular overnight use. The default value is OverNightRoom. | OverNightRoom |
@status | enum | Yes | Enum: [ Actived, Deactived ] | Actived |
@roomName | string | No | Room type name | Double 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 |
@paymentType | enum | No | Enum: [ PayLater, PayNow ] Indicates the product is prepaid to the hotel(PayNow) or pay at the hotel(PayLater) | PayNow |
products/guarantee | object | No | / | / |
@guaranteeType | string | Yes | Guarantee information for this room rate. | CCG |
products/cancelPolicies | array[object] | No | / | / |
cancelPolicies/dateRange | object | No | / | / |
@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 |
cancelPolicies/cancelPolicy | object | No | / | / |
@code | string | Yes | Cancel policy maxLength: 128 | AD100P_100P |
@description | string | No | The description of the cancellation policy maxLength: 1024 | Non Refundable |
| cancelPolicies/cancelPolicyI18n | object | No | Localized cancel policy text keyed by BCP 47 locale tags (e.g. fr-FR, zh-CN); keys are not fixed. | { "fr-FR": { "description": "Non Refundable" }, "zh-CN": { "description": "不可退款" } } |
| cancelPolicyI18n/{languageCode}/description | string | Yes | Localized cancel policy summary for that locale. | Non Refundable |
products/fees | / | No | / | / |
fees/dateRange | / | No | / | / |
@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 |
fees/fee | object | No | / | / |
@name | string | Yes | The name of fee or tax | Service Charge |
@type | enum | Yes | Enum: [ Inclusive, Exclusive ] The fee or tax is included in the amount before tax or not. | Exclusive |
@amount | number | Yes | Amount value of fee or tax | 10 |
@amountType | enum | Yes | Enum: [ Fix, Percent ] Indicates how to charge the tax, 10% per room per night in this example. | Percent |
@chargeType | enum | Yes | Enum: [ PerRoomPerNight, PerPersonPerNight, PerRoomPerStay, PerPersonPerStay ] | PerRoomPerNight |
@paymentType | enum | No | Enum: [Distributor, Property] Indicates that the fee (e.g., City Tax, Tourist Tax) should be collected by the hotel(Property) at check-in or by distributors when guests make a reservation(Distributor). Note: The 'paymentType' field will be replaced by 'collectBy' and removed from the API in the future. | PayNow |
| @collectBy | enum | No | Enum: [Distributor, Property] Indicates that the fee (e.g., City Tax, Tourist Tax) should be collected by the hotel(Property) at check-in or by distributors when guests make a reservation(Distributor). | Distributor |
| fees/feeI18n | object | No | Localized fee names keyed by BCP 47 locale tags (e.g. fr-FR, zh-CN); keys are not fixed. | { "fr-FR": { "name": "Frais de resort" }, "zh-CN": { "name": "度假村费" } } |
| feeI18n/{languageCode}/name | string | Yes | Localized fee display name for that locale. | Resort Fee |
Hotel Products(Push Mode)
This is an API for suppliers to call the DerbySoft system to push hotel information to DerbySoft periodically. DerbySoft would update the hotel information in real-time.
POST /hotel/{distibutorId}HTTP/1.1
URL: {DerbySoft-Go-Endpoint}/hotel/{distibutorId}
Authorization: 53ac07777cdffac2d53000002d698728ce964432d7167596bc005c5fc
Accept-Encoding: gzip
Content-Encoding: gzip
Content-Type: application/json;charset=utf-8Request Example
{
"header": {
"sourceId": "HHBIJSOPLS",
"distributorId": "GTA",
"version": "v4",
"token": "18393849028490234"
},
"hotelId": "100001",
"hotelName": "This is a test hotel",
"status": "Actived",
"hotelI18n": {
"en-US": {
"hotelName": "Best Western Plus Yacht Harbor Inn",
"address": [
"150 Marina Plz"
],
"country": "US",
"state": "FL",
"city": "Dunedin"
}
},
"chainCode": "Marriott",
"brandCode": "Courtyard",
"longitude": "41.40338",
"latitude": "2.17403",
"city": "string",
"country": "string",
"state": "string",
"currency": "USD",
"address": [
"AddressLine1",
"AddressLine2",
"AddressLine3",
"AddressLine4",
"AddressLine5"
],
"phone": {
"countryAccessCode": "string",
"areaCityCode": "string",
"phoneNumber": "string"
},
"settings": {
"key": "value"
},
"ariType": "Daily",
"timezone": "America/Los_Angeles",
"rateType": "AmountBeforeTax",
"maxChildAge": 17,
"childRateType": "ByAge",
"products": [
{
"ratePlanI18n": {
"en": {
"name": "Standard Rate",
"description": "Best available rate with breakfast included"
},
"zh-CN": {
"name": "标准房价",
"description": "最优可用房价,含早餐"
}
},
"roomTypeI18n": {
"en": {
"name": "Deluxe Room",
"description": "Spacious room with city view"
},
"zh-CN": {
"name": "豪华房",
"description": "宽敞的房间,可欣赏城市景观"
}
},
"roomId": "10000101",
"roomDescription": "Soak in city views in our Deluxe room, which features a well-appointed ensuite bathroom and up-to-date entertainment offerings.",
"rateId": "123456",
"rateDescription": "Begin your day with a hearty meal.",
"stayType": "OverNightRoom",
"status": "Actived",
"roomName": "Double Room",
"rateName": "Bar Rate",
"occupancy": {
"maxAdult": 3,
"maxChild": 2,
"maxOccupancy": 3
},
"paymentType": "PayNow",
"guarantee": {
"guaranteeType": "CCG"
},
"cancelPolicies": [
{
"dateRange": {
"startDate": "2018-01-01",
"endDate": "2018-01-04"
},
"cancelPolicy": {
"code": "AD100P_100P",
"description": "Non Refundable"
},
"cancelPolicyI18n": {
"fr-FR": {
"description": "Non remboursable"
},
"zh-CN": {
"description": "不可退款"
}
}
}
],
"fees": [
{
"dateRange": {
"startDate": "2018-01-01",
"endDate": "2018-01-04"
},
"fee": {
"name": "Service Charge",
"type": "Exclusive",
"amount": 10,
"amountType": "Percent",
"chargeType": "PerRoomPerNight",
"paymentType": "PayNow",
"collectBy": "Distributor"
},
"feeI18n": {
"fr-FR": {
"name": "Frais de resort"
},
"zh-CN": {
"name": "度假村费"
}
}
}
]
}
]
}Request Specification
Attribute | Type | Required | Description | Example |
|---|---|---|---|---|
header | / | Yes | object | / |
| @sourceId | Supplier ID in DerbySoft's system Max Length: 32 | Yes | string | PEGASUA |
| @distributorId | Distributor ID in DerbySoft's system Max Length: 32 | Yes | string | TUI |
| @version | Version of API Max Length: 20 | Yes | string | v4 |
| @token | Echo Token Max Length: 64 | Yes | string | 18393849028490234 |
hotelId | string | Yes | Hotel IDs provided by hotel suppliers contain the following characters only: 1. Digits (0-9) 2. Uppercase letters (A-Z) 3. Hyphen ('-') | GATHI |
hotelName | string | No | Hotel name in supplier's system | This is a test hotel |
status | enum | Yes | Enum: [ Actived, Deactived ] Status in supplier's system | Actived |
| hotelI18n | object | No | Please find the specifications for internationalized hotel information below. Language codes must follow these format standards(Either one is okay): - ISO 639-1 (2-Letter) Codes: For example, "en" (English), "zh" (Chinese), or "fr" (Franch). - Combined Codes: A 2-letter ISO 639 language code followed by a hyphen and a 2-letter ISO 3166 country code (e.g., "en-US", "zh-CN", or "fr-FR"). | "hotelI18n": { "en-US": { "hotelName": "Best Western Plus Yacht Harbor Inn", "address": [ "150 Marina Plz" ], "country": "US", "state": "FL", "city": "Dunedin" } } |
| hotelI18n/{languageCode}/hotelName | string | Yes | The localized name of the hotel. | Best Western Plus Yacht Harbor Inn |
| hotelI18n/{languageCode}/address | array[string] | No | Localized address lines for the hotel. | [ "AddressLine1", "AddressLine2", "AddressLine3", "AddressLine4", "AddressLine5" ] |
| hotelI18n/{languageCode}/country | string | No | Country code (ISO 3166-1 alpha-2). | US |
| hotelI18n/{languageCode}/state | string | No | State or province code/name. | FL |
| hotelI18n/{languageCode}/city | string | No | City name | Dunedin |
chainCode | string | No | The chain code may identify a hotel chain or management group, e.g. Hyatt, Hilton. The hotel chain code is decided between suppliers and is optional if the hotel is an independent property that can be identified by the hotelId field alone. | Marriott |
brandCode | string | No | The brand code may identify the brand within a chain, e.g. Courtyard, Hampton Inn. This field is optional if the hotel is an independent property that can be identified by the hotelId field alone. | Waldorf |
longitude | string | No | The information for hotel location. | 41.40338 |
latitude | string | No | The information for hotel location. | 2.17403 |
city | string | No | / | / |
country | string | No | / | / |
state | string | No | / | / |
| currency | string | No | The currency code of the hotel. | USD |
address | array | No | Support up to five enumeration values | [ "AddressLine1", "AddressLine2", "AddressLine3", "AddressLine4", "AddressLine5" ] |
phone | object | No | / | / |
@countryAccessCode | string | Yes | / | / |
@areaCityCode | string | No | / | / |
@phoneNumber | string | Yes | / | / |
settings | object | No | An additional field is used for transmitting extra settings, accounts, etc that are required by Distributors | { "key": "value" } |
ariType | enum | Yes | Emun:[ Daily, LOS ] Indicates which ARI model be used for ARI API | Daily |
timezone | string | Yes | Timezone of property | America/Los_Angeles |
rateType | enum | Yes | Emun:[ AmountBeforeTax, AmountAfterTax, Both ] Indicates which rate will be used in ARI and Reservation.
| AmountBeforeTax |
maxChildAge | integer | No | maxChildAge will be provided If childRateType is ByAge. | / |
childRateType | enum | No | Enum: [ Normal, ByAge, Free, AsAdult ] Indicates which child rate type will be used in ARI OccupancyRate.
| ByAge |
products | array | Yes | / | / |
| products/roomTypeI18n | object | No | Please find the specifications for internationalized room type information below. Language codes must follow these format standards(Either one is okay): - ISO 639-1 (2-Letter) Codes: For example, "en" (English), "zh" (Chinese), or "fr" (Franch). - Combined Codes: A 2-letter ISO 639 language code followed by a hyphen and a 2-letter ISO 3166 country code (e.g., "en-US", "zh-CN", or "fr-FR"). | "roomTypeI18n": { "en": { "name": "Deluxe Room", "description": "Spacious room with city view" }, "zh-CN": { "name": "豪华房", "description": "宽敞的房间,可欣赏城市景观" } } |
| roomTypeI18n/{languageCode}/name | string | Yes | room type name | Deluxe Room |
| roomTypeI18n/{languageCode}/description | string | No | room type description | Spacious room with city view |
| products/ratePlanI18n | object | No | Please find the specifications for internationalized rate plan information below. Language codes must follow these format standards(Either one is okay): - ISO 639-1 (2-Letter) Codes: For example, "en" (English), "zh" (Chinese), or "fr" (Franch). - Combined Codes: A 2-letter ISO 639 language code followed by a hyphen and a 2-letter ISO 3166 country code (e.g., "en-US", "zh-CN", or "fr-FR"). | "ratePlanI18n": { "en": { "name": "Standard Rate", "description": "Best available rate with breakfast included" }, "zh-CN": { "name": "标准房价", "description": "最优可用房价,含早餐" } } |
| ratePlanI18n/{languageCode}/name | string | Yes | rate plan name | Standard Rate |
| ratePlanI18n/{languageCode}/description | string | No | rate plan description | Best available rate with breakfast included |
@roomId | string | Yes | Room ID in supplier's system | King |
@roomName | string | No | Room type name Max length: 256 | King Room |
@roomDescription | string | No | / | Soak in city views in our Deluxe room, which features a well-appointed ensuite bathroom and up-to-date entertainment offerings. |
@rateId | string | Yes | Rate ID in supplier's system | BAR |
@rateName | string | No | Rate plan name Max length: 256 | Best Available Rate |
@rateDescription | string | No | / | Begin your day with a hearty meal |
@stayType | enum | No | Enum: [ OverNightRoom, DayUseRoom ] This tag indicates if the product is specifically for day-use or regular overnight use. The default is OverNightRoom. | OverNightRoom |
@status | enum | Yes | Enum: [ Actived, Deactived ] | Actived |
products/occupancy | / | Yes | / | / |
@maxAdult | integer | Yes | Max adult count | 3 |
@maxChild | integer | Yes | Max child count | 2 |
@maxOccupancy | integer | Yes | Max occupancy | 3 |
@paymentType | enum | No | Enum: [ PayLater, PayNow ] Indicates the product is prepaid to the hotel(PayNow) or pay at the hotel(PayLater). | PayNow |
products/guarantee | / | No | / | / |
@guaranteeType | string | Yes | Guarantee information for this room rate. | CCG |
products/cancelPolicies | / | No | / | / |
cancelPolicies/dateRange | object | No | / | / |
@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 |
cancelPolicies/cancelPolicy | object | No | / | / |
@code | string | Yes | Code of cancel policy Max Length: 128 | AD100P_100P |
@description | string | No | The description of the cancellation policy Max Length: 1024 | Non Refundable |
| cancelPolicies/cancelPolicyI18n | object | No | Localized cancel policy text keyed by BCP 47 locale tags (e.g. fr-FR, zh-CN); keys are not fixed. | { "fr-FR": { "description": "Non Refundable" }, "zh-CN": { "description": "不可退款" } } |
| cancelPolicyI18n/{languageCode}/description | string | Yes | Localized cancel policy summary for that locale. | Non Refundable |
products/fees | / | No | / | / |
fees/dateRange | / | No | / | / |
@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 |
fees/fee | object | No | / | / |
@name | string | Yes | The name of the fee or tax | Service Charge |
@type | enum | Yes | Enum: [ Inclusive, Exclusive ] Indicates fees or tax is included in the amount before tax or not. | Exclusive |
@amount | number | Yes | The amount of fee or tax | 10 |
@amountType | enum | Yes | Enum: [ Fix, Percent ] Indicates how to charge the tax, 10% per room per night in this example. | Percent |
@chargeType | enum | Yes | Enum: [ PerRoomPerNight, PerPersonPerNight, PerRoomPerStay, PerPersonPerStay ] | PerRoomPerNight |
@paymentType | enum | No | Enum: [ PayLater, PayNow ] The paymentType will be deprecated and replaced by collectBy, indicates the fee is prepaid to hotel(PayNow) or pay at hotel(PayLater) | PayNow |
| @collectBy | enum | No | Enum: [Distributor, Property] Indicates that the fee (e.g., City Tax, Tourist Tax) should be collected by the hotel(Property) at check-in or by distributors when guests make a reservation(Distributor). | Distributor |
| fees/feeI18n | object | No | Localized fee names keyed by BCP 47 locale tags (e.g. fr-FR, zh-CN); keys are not fixed. | { "fr-FR": { "name": "Frais de resort" }, "zh-CN": { "name": "度假村费" } } |
| feeI18n/{languageCode}/name | string | Yes | Localized fee display name for that locale. | Resort Fee |
Response Example
- Success Response (HTTP Status 200)
{
"header": {
"sourceId": "HHBIJSOPLS",
"distributorId": "GTA",
"version": "v4",
"token": "18393849028490234"
},
"hotelId": "GATHI"
}- Error Response (HTTP Status 401)
{
"errorCode": "InvalidField",
"errorMessage": "Invalid token"
}- Error Response (HTTP Status 500)
{
"errorCode": "InvalidField",
"errorMessage": "Invalid Message"
}Response Specification
Name | Description | Required | Type | Example |
|---|---|---|---|---|
header | / | Yes | object | / |
| @sourceId | Supplier ID in DerbySoft's system Max Length: 32 | Yes | string | PEGASUA |
| @distributorId | Distributor ID in DerbySoft's system Max Length: 32 | Yes | string | TUI |
| @version | Version of API Max Length: 20 | Yes | string | v4 |
| @token | Echo Token Max Length: 64 | Yes | string | 18393849028490234 |
| hotelId | Hotel ID in Supplier's system | Yes | string | 10001 |
Retrieve Hotel Products (Push Mode)
This API will be used by the supplier to see what products have been activated on the DerbySoft side for one hotel.
GET /hotel/{sourceId}/{hotelId}?distributorId={distributorId} HTTP/1.1
URL: {DerbySoft-Go-Endpoint}/hotel/{sourceId}/{hotelId}?distributorId={distributorId}
Authorization: 53ac07777cdffac2d53000002d698728ce964432d7167596bc005c5fc
Accept-Encoding: gzip
Content-Encoding: gzip
Content-Type: application/json;charset=utf-8Request Parameters
| Attribute | Type | Required | Description | Example |
|---|---|---|---|---|
sourceId | string | Yes | Supplier ID in DerbySoft's system | TUI |
| hotelId | string | Yes | Hotel ID provided by hotel suppliers, only the following characters are allowed. 1. Digits (0-9) 2. Uppercase letters (A-Z) 3. Hyphen ('-') | 100001 NYABO 00016 PEP-B3T2 B8W7 |
| distributorId | string | Yes | Distributor ID in DerbySoft's system | Test hotel |
Response Example
- Success Response (HTTP Status 200)
{
"hotelId": "100001",
"hotelName": "This is a test hotel",
"distributorId": "GTA",
"status": "Actived",
"hotelI18n": {
"en-US": {
"hotelName": "Best Western Plus Yacht Harbor Inn",
"address": [
"150 Marina Plz"
],
"country": "US",
"state": "FL",
"city": "Dunedin"
}
},
"chainCode": "Marriott",
"brandCode": "Courtyard",
"longitude": "41.40338",
"latitude": "2.17403",
"city": "string",
"country": "string",
"state": "string",
"currency": "USD",
"address": [
"AddressLine1",
"AddressLine2",
"AddressLine3",
"AddressLine4",
"AddressLine5"
],
"phone": {
"countryAccessCode": "string",
"areaCityCode": "string",
"phoneNumber": "string"
},
"settings": {
"key": "value"
},
"ariType": "Daily",
"timezone": "America/Los_Angeles",
"rateType": "AmountBeforeTax",
"maxChildAge": 17,
"childRateType": "ByAge",
"products": [
{
"ratePlanI18n": {
"en": {
"name": "Standard Rate",
"description": "Best available rate with breakfast included"
},
"zh-CN": {
"name": "标准房价",
"description": "最优可用房价,含早餐"
}
},
"roomTypeI18n": {
"en": {
"name": "Deluxe Room",
"description": "Spacious room with city view"
},
"zh-CN": {
"name": "豪华房",
"description": "宽敞的房间,可欣赏城市景观"
}
},
"roomId": "10000101",
"roomDescription": "Soak in city views in our Deluxe room, which features a well-appointed ensuite bathroom and up-to-date entertainment offerings.",
"rateId": "123456",
"rateDescription": "Begin your day with a hearty meal.",
"stayType": "OverNightRoom",
"status": "Actived",
"roomName": "Double Room",
"rateName": "Bar Rate",
"occupancy": {
"maxAdult": 3,
"maxChild": 2,
"maxOccupancy": 3
},
"paymentType": "PayNow",
"guarantee": {
"guaranteeType": "CCG"
},
"cancelPolicies": [
{
"dateRange": {
"startDate": "2018-01-01",
"endDate": "2018-01-04"
},
"cancelPolicy": {
"code": "AD100P_100P",
"description": "Non Refundable"
},
"cancelPolicyI18n": {
"fr-FR": {
"description": "Non remboursable"
},
"zh-CN": {
"description": "不可退款"
}
}
}
],
"fees": [
{
"dateRange": {
"startDate": "2018-01-01",
"endDate": "2018-01-04"
},
"fee": {
"name": "Service Charge",
"type": "Exclusive",
"amount": 10,
"amountType": "Percent",
"chargeType": "PerRoomPerNight",
"paymentType": "PayNow",
"collectBy": "Distributor"
},
"feeI18n": {
"fr-FR": {
"name": "Frais de resort"
},
"zh-CN": {
"name": "度假村费"
}
}
}
]
}
]
}- Error Response (HTTP Status 401)
{
"errorCode": "InvalidField",
"errorMessage": "Invalid token"
}- Error Response (HTTP Status 500)
{
"errorCode": "InvalidField",
"errorMessage": "Invalid Message"
}Response Specification
Attribute | Type | Required | Description | Example |
|---|---|---|---|---|
hotelId | string | Yes | Hotel IDs provided by hotel suppliers contain the following characters only: 1. Digits (0-9) 2. Uppercase letters (A-Z) 3. Hyphen ('-') | GATHI |
hotelName | string | No | Hotel name in supplier's system | This is a test hotel |
| distributorId | string | Yes | Distributor ID in DerbySoft's system | GTA |
status | enum | Yes | Enum: [ Actived, Deactived ] Status in supplier's system | Actived |
| hotelI18n | object | No | Please find the specifications for internationalized hotel information below. Language codes must follow these format standards(Either one is okay): - ISO 639-1 (2-Letter) Codes: For example, "en" (English), "zh" (Chinese), or "fr" (Franch). - Combined Codes: A 2-letter ISO 639 language code followed by a hyphen and a 2-letter ISO 3166 country code (e.g., "en-US", "zh-CN", or "fr-FR"). | "hotelI18n": { "en-US": { "hotelName": "Best Western Plus Yacht Harbor Inn", "address": [ "150 Marina Plz" ], "country": "US", "state": "FL", "city": "Dunedin" } } |
| hotelI18n/{languageCode}/hotelName | string | Yes | The localized name of the hotel. | Best Western Plus Yacht Harbor Inn |
| hotelI18n/{languageCode}/address | array[string] | No | Localized address lines for the hotel. | [ "AddressLine1", "AddressLine2", "AddressLine3", "AddressLine4", "AddressLine5" ] |
| hotelI18n/{languageCode}/country | string | No | Country code (ISO 3166-1 alpha-2). | US |
| hotelI18n/{languageCode}/state | string | No | State or province code/name. | FL |
| hotelI18n/{languageCode}/city | string | No | City name | Dunedin |
chainCode | string | No | The chain code may identify a hotel chain or management group, e.g. Hyatt, Hilton. The hotel chain code is decided between suppliers and is optional if the hotel is an independent property that can be identified by the hotelId field alone. | Marriott |
brandCode | string | No | The brand code may identify the brand within a chain, e.g. Courtyard, Hampton Inn. This field is optional if the hotel is an independent property that can be identified by the hotelId field alone. | Waldorf |
longitude | string | No | The information for hotel location. | 41.40338 |
latitude | string | No | The information for hotel location. | 2.17403 |
city | string | No | / | / |
country | string | No | / | / |
state | string | No | / | / |
| currency | string | No | The currency code of the hotel. | USD |
address | array | No | Support up to five enumeration values | [ "AddressLine1", "AddressLine2", "AddressLine3", "AddressLine4", "AddressLine5" ] |
phone | object | No | / | / |
@countryAccessCode | string | Yes | / | / |
@areaCityCode | string | No | / | / |
@phoneNumber | string | Yes | / | / |
settings | object | No | An additional field is used for transmitting extra settings, accounts, etc that are required by Distributors | { "key": "value" } |
ariType | enum | Yes | Emun:[ Daily, LOS ] Indicates which ARI model be used for ARI API | Daily |
timezone | string | Yes | Timezone of property | America/Los_Angeles |
rateType | enum | Yes | Emun:[ AmountBeforeTax, AmountAfterTax, Both ] Indicates which rate will be used in ARI and Reservation.
| AmountBeforeTax |
maxChildAge | integer | No | maxChildAge will be provided If childRateType is ByAge. | / |
childRateType | enum | No | Enum: [ Normal, ByAge, Free, AsAdult ] Indicates which child rate type will be used in ARI OccupancyRate.
| ByAge |
products | array | Yes | / | / |
| products/roomTypeI18n | object | No | Please find the specifications for internationalized room type information below. Language codes must follow these format standards(Either one is okay): - ISO 639-1 (2-Letter) Codes: For example, "en" (English), "zh" (Chinese), or "fr" (Franch). - Combined Codes: A 2-letter ISO 639 language code followed by a hyphen and a 2-letter ISO 3166 country code (e.g., "en-US", "zh-CN", or "fr-FR"). | "roomTypeI18n": { "en": { "name": "Deluxe Room", "description": "Spacious room with city view" }, "zh-CN": { "name": "豪华房", "description": "宽敞的房间,可欣赏城市景观" } } |
| roomTypeI18n/{languageCode}/name | string | Yes | room type name | Deluxe Room |
| roomTypeI18n/{languageCode}/description | string | No | room type description | Spacious room with city view |
| products/ratePlanI18n | object | No | Please find the specifications for internationalized rate plan information below. Language codes must follow these format standards(Either one is okay): - ISO 639-1 (2-Letter) Codes: For example, "en" (English), "zh" (Chinese), or "fr" (Franch). - Combined Codes: A 2-letter ISO 639 language code followed by a hyphen and a 2-letter ISO 3166 country code (e.g., "en-US", "zh-CN", or "fr-FR"). | "ratePlanI18n": { "en": { "name": "Standard Rate", "description": "Best available rate with breakfast included" }, "zh-CN": { "name": "标准房价", "description": "最优可用房价,含早餐" } } |
| ratePlanI18n/{languageCode}/name | string | Yes | rate plan name | Standard Rate |
| ratePlanI18n/{languageCode}/description | string | No | rate plan description | Best available rate with breakfast included |
@roomId | string | Yes | Room ID in supplier's system | King |
@roomName | string | No | Room type name Max length: 256 | King Room |
@roomDescription | string | No | / | Soak in city views in our Deluxe room, which features a well-appointed ensuite bathroom and up-to-date entertainment offerings. |
@rateId | string | Yes | Rate ID in supplier's system | BAR |
@rateName | string | No | Rate plan name Max length: 256 | Best Available Rate |
@rateDescription | string | No | / | Begin your day with a hearty meal |
@stayType | enum | No | Enum: [ OverNightRoom, DayUseRoom ] This tag indicates if the product is specifically for day-use or regular overnight use. The default is OverNightRoom. | OverNightRoom |
@status | enum | Yes | Enum: [ Actived, Deactived ] | Actived |
products/occupancy | / | Yes | / | / |
@maxAdult | integer | Yes | Max adult count | 3 |
@maxChild | integer | Yes | Max child count | 2 |
@maxOccupancy | integer | Yes | Max occupancy | 3 |
@paymentType | enum | No | Enum: [ PayLater, PayNow ] Indicates the product is prepaid to the hotel(PayNow) or pay at the hotel(PayLater). | PayNow |
products/guarantee | / | No | / | / |
@guaranteeType | string | Yes | Guarantee information for this room rate. | CCG |
products/cancelPolicies | / | No | / | / |
cancelPolicies/dateRange | object | No | / | / |
@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 |
cancelPolicies/cancelPolicy | object | No | / | / |
@code | string | Yes | Code of cancellation policy Max Length: 128 | AD100P_100P |
@description | string | No | The description of the cancellation policy Max Length: 1024 | Non Refundable |
| cancelPolicies/cancelPolicyI18n | object | No | Localized cancel policy text keyed by BCP 47 locale tags (e.g. fr-FR, zh-CN); keys are not fixed. | { "fr-FR": { "description": "Non Refundable" }, "zh-CN": { "description": "不可退款" } } |
| cancelPolicyI18n/{languageCode}/description | string | Yes | Localized cancel policy summary for that locale. | Non Refundable |
products/fees | / | No | / | / |
fees/dateRange | / | No | / | / |
@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 |
fees/fee | object | No | / | / |
@name | string | Yes | The name of the fee or tax | Service Charge |
@type | enum | Yes | Enum: [ Inclusive, Exclusive ] Indicates whether fees or taxes are included in the amount before tax or not. | Exclusive |
@amount | number | Yes | Amount value of fee or tax | 10 |
@amountType | enum | Yes | Enum: [ Fix, Percent ] Indicates how to charge the tax, 10% per room per night in this example. | Percent |
@chargeType | enum | Yes | Enum: [ PerRoomPerNight, PerPersonPerNight, PerRoomPerStay, PerPersonPerStay ] | PerRoomPerNight |
@paymentType | enum | No | Enum: [ PayLater, PayNow ] The paymentType will be deprecated and replaced by collectBy, indicates the fee is prepaid to hotel(PayNow) or pay at hotel(PayLater) | PayNow |
| @collectBy | enum | No | Enum: [Distributor, Property] Indicates that the fee (e.g., City Tax, Tourist Tax) should be collected by the hotel(Property) at check-in or by distributors when guests make a reservation(Distributor). | Distributor |
| fees/feeI18n | object | No | Localized fee names keyed by BCP 47 locale tags (e.g. fr-FR, zh-CN); keys are not fixed. | { "fr-FR": { "name": "Frais de resort" }, "zh-CN": { "name": "度假村费" } } |
| feeI18n/{languageCode}/name | string | Yes | Localized fee display name for that locale. | Resort Fee |
Notes:
Please follow the process below to activate/deactivate hotels or products. If the process doesn't work for you, please kindly share with us your actual scenario.
*** Please note that when deactivating a hotel or product, please indicate the status as Deactived for the hotel or product through the API rather than removing it from the response. Otherwise, the hotel or product will be processed as Deactivated by default, and will be close out for the rooms.- To Activate or Deactivate hotels, GO Suppliers activate or deactivate hotels in their system. Upon returning the status of each hotel is either Actived or Deactived on the response of the Hotel List and Hotel Product API.
- To Activate or Deactivate products, GO Suppliers activate or deactivate products in their system. Upon returning the status of each product is either Actived or Deactived on the response of the Hotel Product API.
Did you find it helpful? Yes No
Send feedback