AgencyUSB-Reservation API
Modified on: 2024-11-19 16:19
TABLE OF CONTENTS
Introduction
Reservation API is used by DerbySoft to book a new booking/cancellation to the supplier from the distributor.
- Availability API is called by Distributors through DerbySoft, but NOT all Distributors get availability before making a booking.
- Modification API is called by Distributors through DerbySoft to modify a reservation in real time.
- Query API is used by DerbySoft to retrieve reservations from suppliers for report purposes, or query a specific reservation for troubleshooting like ghost booking investigation, etc.
In this article, 6 types of Reservation APIs will be introduced:
APIs marked with "☆" are mandatory to implement, while those marked with "◎" are optional but recommended.
- ☆ Live-check(/availability) - Return real-time availability based on a request from a distributor.
- ☆ Book(/reservation/book) - Make a reservation based on a request from a distributor.
- ◎ Modify(/reservation/modify) - Modify an existing reservation based on a request from a distributor.
- ☆ Cancel(/reservation/cancel) - Cancel a booking based on a request from a distributor.
- ◎ Query Res List(/reservations) - Query reservation list based on a data-time range.
- ◎ Query Res Details(/reservation/{distributorResId}) - Query a reservation detail based on distributor's reservation ID.
Live-check
This is an API for DerbySoft to call the Supplier's system to get availability before a booking. Normally the requests are started by distributors, but some distributors do NOT support it. Suppliers should only return available rates in the response.
Notes: ① IATA is an optional field as some distributors do NOT support it. ② childCount are per room.
POST /availability HTTP/1.1 URL: {{endpoint}}/availability Authorization: Bearer 53ac07777cdffac2d53000002d698728ce964432d7167596bc005c5fc Accept-Encoding: gzip Content-Encoding: gzip Content-Type: application/json;charset=utf-8
Request Example
- General Request
{ "header": { "sourceId": "HHBIJSOPLS", "distributorId": "GTA", "version": "v4", "token": "18393849028490234" }, "hotelId": "100001", "stayRange": { "checkin": "2018-01-01", "checkout": "2018-01-04" }, "roomCriteria": { "roomCount": 2, "adultCount": 2, "childCount": 2, "childAges": [ 4, 8 ] } }
- Full-Size Request
{ "header": { "sourceId": "HHBIJSOPLS", "distributorId": "GTA", "version": "v4", "token": "18393849028490234" }, "hotelId": "100001", "stayRange": { "checkin": "2018-01-01", "checkout": "2018-01-04" }, "roomCriteria": { "roomCount": 2, "adultCount": 2, "childCount": 2, "childAges": [ 4, 8 ] }, "productCandidate": { "roomId": "K1D", "rateId": "ODAD01" }, "iata": "string", "loyaltyAccount": { "programCode": "BW", "accountId": "1234567890123457" }, "corpAccount": { "corpProgramCode": "CR", "corpId": "A-1232" }, "isAfterPromotion": false, "promoteCode": "string", "countryCode": "string", "device": "string", "extensions": { "key1": "value1", "key2": "value2" } }
Request Specification
Attribute | Type | Required | Description | Example |
---|---|---|---|---|
header | object | Yes | / | / |
@sourceId | string | Yes | MaxLength: 32 id of hotel's source in DerbySoft's system | HHBIJSOPLS |
@distributorId | string | Yes | MaxLength: 32 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 requests and responses, normally it should be UUID. | 18393849028490234 |
hotelId | string | Yes | / | 100001 |
stayRange | object | Yes | / | / |
@checkin | string | Yes | Checkin, format with yyyy-MM-dd | 2018-01-01 |
@checkout | string | Yes | Checkout, format with yyyy-MM-dd | 2018-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 | integer | No | Child ages for each child, array size MUST be same as child count. | [ 4, 8 ] |
productCandidate | object | No | / | / |
@roomId | string | No | Room id in supplier's system | K1D |
@rateId | string | No | Rate id in supplier's system | ODAD01 |
IATA | string | No | IATA of distributor | / |
loyalty account | object | No | / | / |
@programCode | string | Yes | Loyalty program code of the supplier | BW |
@accountId | string | Yes | Loyalty program account id | 1234567890123457 |
corpAccount | object | No | / | / |
@corpProgramCode | string | Yes | Corporate Hotel Program of hotel supplier | CR |
@corpId | string | Yes | Corporate id in the program account | A-1232 |
isAfterPromotion | boolean | No | The flag indicates calculating the avail room rates with the promotion rules or not.
| false |
promoteCode | string | No | Promote code defined by the hotel. it is an optional field when you want to request the promotion rates (isAfterPromotion = true). If the promotion code is empty and there are multiple promotions available for one product simultaneously, the promotion rule will be chosen according to multiPromotionsStategy. | / |
countryCode | string | No | CountryCode from guest | / |
device | string | No | Device type of the guest | / |
extensions | object | No | { "key1": "value1", "key2": "value2" } |
Response Example
- Success Response (HTTP Status 200)
{ "header": { "sourceId": "HHBIJSOPLS", "distributorId": "GTA", "version": "v4", "token": "18393849028490234" }, "hotelId": "100001", "stayRange": { "checkin": "2018-01-01", "checkout": "2018-01-04" }, "roomCriteria": { "roomCount": 2, "adultCount": 2, "childCount": 2, "childAges": [ 4, 8 ] }, "productCandidate": { "roomId": "K1D", "rateId": "ODAD01" }, "iata": "string", "roomRates": [ { "inventory": 2, "isAfterPromotion": false, "promoteCode": "discount001", "roomId": "10000101", "rateId": "123456", "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", "paymentType": "PayNow" } } ], "cancelPolicy": { "code": "AD100P_100P", "description": "Non Refundable" } } ], "extensions": { "key1": "key1", "key2": "key2" } }
- Error Response (HTTP Status 500)
{ "errorCode": "InvalidField", "errorMessage": "Invalid Message" }
Response Specification
Attribute | Type | Required | Description | Example |
---|---|---|---|---|
header | object | Yes | / | / |
@sourceId | string | Yes | maxLength: 32 id of hotel's source in DerbySoft's system | HHBIJSOPLS |
@distributorId | string | Yes | maxLength: 32 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 requests and responses, normally it should be UUID. | 18393849028490234 |
hotelId | string | Yes | / | 100001 |
stayRange | object | Yes | / | / |
@checkin | string | Yes | check-in, format with yyyy-MM-dd | 2018-01-01 |
@checkout | string | Yes | checkout, format with yyyy-MM-dd | 2018-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 | integer | No | Child ages for each child, array size MUST be same as child count. | [ 4, 8 ] |
productCandidate | object | No | / | / |
@roomId | string | No | room id in supplier's system | K1D |
@rateId | string | No | rate id in supplier's system | ODAD01 |
IATA | string | No | IATA of distributor | / |
roomRates | array[object] | Yes | Meal plan, fee, and cancel policy are optional fields as some distributors do not support these in API. | / |
@inventory | integer | Yes | available inventory count according to request criteria | 1 |
@isAfterPromotion | boolean | No | The flag indicates calculating the avail room rates with the promotion rules or not. Default is false if null.
| false |
@promoteCode | string | No | The code for the promotion applied to this rate, it is required when isAfterPromotion=true. | discount001 |
@roomId | string | Yes | room id in supplier's system | 10000101 |
@rateId | string | Yes | rate id in supplier's 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, ref to the standard meal plan code list | RO |
@paymentType | enum | No | indicates the product is prepaid to the hotel(PayNow) or pay at a hotel(PayLater) | PayNow |
roomRates / guarantee | object | No | Guarantee information for this room rate. | / |
@guaranteeType | string | Yes | The type of guarantee method, ref to the standard 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 | 2018-01-01 |
@endDate | string | Yes | end date of date range, format with yyyy-MM-dd | 2018-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 hotels (PayNow) or Pay at Hotel(PayLater). Enum: [ PayLater, PayNow ] | PayNow |
roomRates / cancelPolicy | object | No | Cancellation policy defines what penalty will be charged when a guest cancels the booking at a certain advance time range. The penalty is related to no show or a time range before no show. | / |
@code | string | Yes | maxLength: 128 code of cancel policy | AD100P_100P |
@description | string | No | maxLength: 1024 cancel policy description | Non Refundable |
extensions | object | No | { "key1": "value1", "key2": "value2" } |
Book
This is an API for DerbySoft to call the Supplier’s system to book a new booking. DerbySoft might split one reservation into multiple ones if there is more than one room type or rate plan. Suppliers should identify each one by unique derbyResId.
Note: IATA and payment are optional fields as some distributor does not support it.
POST /reservation/book HTTP/1.1 URL: {{endpoint}}/reservation/book Authorization:Bearer 53ac07777cdffac2d53000002d698728ce964432d7167596bc005c5fc Accept-Encoding: gzip Content-Encoding: gzip Content-Type: application/json;charset=utf-8
Request Example
{ "header": { "sourceId": "HHBIJSOPLS", "distributorId": "GTA", "version": "v4", "token": "18393849028490234" }, "reservationIds": { "distributorResId": "C2084DFL0", "derbyResId": "D15F893D34DF" }, "iata": "string", "hotelId": "100001", "stayRange": { "checkin": "2018-01-01", "checkout": "2018-01-04" }, "contactPerson": { "firstName": "James", "lastName": "Bond", "email": "[email protected]", "phone": "string", "address": "string", "extensions": { "key": "value" } }, "roomCriteria": { "roomCount": 2, "adultCount": 1, "childCount": 2, "childAges": [ 4, 8 ] }, "total": { "amountBeforeTax": 640, "amountAfterTax": 700 }, "payment": { "cardCode": "VI", "cardNumber": "4111111111111111", "cardHolderName": "Sherlock Holmes", "expireDate": "0119", "securityCode": "123" }, "loyaltyAccount": { "programCode": "BW", "accountId": "1234567890123457" }, "corpAccount": { "corpProgramCode": "CR", "corpId": "A-1232" }, "promoteCode": "string", "guests": [ { "firstName": "James", "lastName": "Bond", "email": "[email protected]", "phone": "string", "address": "string", "age": 53, "gender": "Male", "birthday": "1970-12-20", "type": "Adult", "extensions": { "key": "value" }, "index": 1 } ], "comments": [ "no smoking", "high floor" ], "roomRates": [ { "roomId": "10000101", "rateId": "123456", "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", "paymentType": "PayNow" } } ], "cancelPolicy": { "code": "AD100P_100P", "description": "Non Refundable" } } ], "extensions": { "key": "value" }, "threeDomainSecurity": { "cavv": "string", "eci": "string", "xid": "string", "threeDomainSecurityVersion": "string", "transactionId": "string", "merchantName": "string", "extensions": { "key": "value" } } }
Request Specification
Attribute | Type | Required | Description | Example |
---|---|---|---|---|
header | object | Yes | / | / |
@sourceId | string | Yes | maxLength: 32 id of hotel's source in DerbySoft's system | HHBIJSOPLS |
@distributorId | string | Yes | maxLength: 32 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 |
reservationIds | / | Yes | / | / |
@distributorResId | string | Yes | reservation id in distributor's system | C2084DFL0 |
@derbyResId | string | Yes | Reservation id in Derbysoft's system, this is a unique id as DerbySoft would be splitting the reservation. | D15F893D34DF |
IATA | string | No | IATA | / |
hotelId | string | Yes | hotel id in supplier's system | 100001 |
stayRange | object | Yes | / | / |
@checkin | string | Yes | check-in, format with yyyy-MM-dd | 2018-01-01 |
@checkout | string | Yes | checkout, format with yyyy-MM-dd | 2018-01-04 |
contactPerson | object | Yes | / | / |
@firstName | string | Yes | First Name | James |
@lastName | string | Yes | Last Name | Bond |
string | No | |||
@phone | string | No | / | / |
@address | string | No | / | / |
@extensions | object | No | a common extension object for extra attributes like account, extra setting required by a distributor, etc | { "key": "value"} |
roomCriteria | object | Yes | / | / |
@roomCount | integer | Yes | total room count per request | / |
@adultCount | integer | Yes | adult count per room | / |
@childCount | integer | No | child count per room | / |
@childAges | integer | No | child ages for each child, array size MUST be same as child count. | / |
total | object | Yes | / | / |
@amountBeforeTax | number | No | / | 640 |
@amountAfterTax | number | No | / | 700 |
payment | object | No | / | / |
@cardCode | string | Yes | VI, MC, AX etc. Card Code | VI |
@cardNumber | string | Yes | Credit card number | 4111111111111111 |
@cardHolderName | string | Yes | Cardholder name | Sherlock Holmes |
@expireDate | string | Yes | it should be 2 digits for month, 2 digits for year, as "MMYY". | 0119 |
@securityCode | string | No | Card verification value | 123 |
loyaltyAccount | object | No | / | / |
@programCode | string | Yes | Loyalty program code of the supplier | BW |
@accountId | string | Yes | Loyalty program account id | 1234567890123457 |
corpAccount | object | No | / | / |
@corpProgramCode | string | Yes | Corporate Hotel Program of hotel supplier | CR |
@corpId | string | Yes | Corporate id in the program account | A-1232 |
promoteCode | string | No | Promotion code defined by hotel, the promotion code is required if making a reservation under the promotion. | / |
guests | / | / | / | / |
@firstName | string | Yes | First Name | James |
@lastName | string | Yes | Last Name | Bond |
string | No | |||
@phone | string | No | / | / |
@address | string | No | / | / |
@age | integer | No | Age of guest | / |
@gender | enum | No | Gender of guest | Male |
@birthday | string | No | Birthday of guest format with yyyy-MM-dd | 1970-12-20 |
@type | string | No | type of guest, Adult, Child or Infant Enum: [ Adult, Child, Infant ] | / |
@extensions | object | No | a common extension object for extra attributes like account, extra setting required by distributor, etc | { "key": "value"} |
@index | integer | No | room index of room rate | 1 |
comments | array[string] | No | / | [ "no smoking", "high floor" ] |
roomRates | array[object] | Yes | min Items: 1 max items: 1 Meal plan, fee, and cancel policy are optional fields as some distributors do not support these in API. | / |
@roomId | string | Yes | room id in supplier's system | 10000101 |
@rateId | string | Yes | rate id in supplier's 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, ref to the standard meal plan code list | RO |
@paymentType | enum | No | indicates the product is prepaid to hotels (PayNow) or pay at hotels (PayLater) | PayNow |
roomRates/guarantee | object | No | Guarantee information for this room rate. | / |
@guaranteeType | string | Yes | The type of guarantee method, ref to the standard 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 | 2018-01-01 |
@endDate | string | Yes | end date of date range, format with yyyy-MM-dd | 2018-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 hotel(PayNow) or pay at hotel(PayLater). Enum: [ PayLater, PayNow ] | PayNow |
roomRates/cancelPolicy | object | No | Cancellation policy defines what penalty will be charged when a guest cancels the booking at a certain advance time range. The penalty is related to no show or a time range before no show. | / |
@code | string | / | maxLength: 128 code of cancel policy | AD100P_100P |
@description | string | / | maxLength: 1024 the description of the cancel policy | Non Refundable |
extensions | object | No | a common extension object for extra attributes like account, extra setting required by a distributor, etc | / |
threeDomainSecurity | object | No | / | / |
@cavv | string | No | Cardholder Authentication Verification Value Information retrieved from the 3DS provider when authentication is successful. | / |
@eci | string | No | The electronic commerce indicator. | / |
@xid | string | No | Transaction identifier for a 3DS Version 1 provider, assigned by the Directory Server to identify a single transaction. | / |
@threeDomainSecurityVersion | string | No | Include this only for 3D Secure 2. | / |
@transactionId | string | No | Transaction identifier for a 3DS Version 2 provider, assigned by the Directory Server to identify a single transaction. | / |
@merchantName | string | No | Identifier of the merchant completing the 3DS transaction. | / |
@extensions | object | No | a common extension object for extra attributes like account, extra setting required by distributors, etc | / |
Response Example
- Success Response (HTTP Status 200)
{ "header": { "sourceId": "HHBIJSOPLS", "distributorId": "GTA", "version": "v4", "token": "18393849028490234" }, "reservationIds": { "distributorResId": "C2084DFL0", "derbyResId": "D15F893D34DF", "supplierResId": "89389494" }, "extensions": { "key": "value" } }
- Error Response (HTTP Status 500)
{ "errorCode": "InvalidField", "errorMessage": "Invalid Message" }
Response Specification
Attribute | Type | Required | Description | Example |
---|---|---|---|---|
header | object | Yes | / | / |
@sourceId | string | Yes | MaxLength: 32 The ID of hotels source in DerbySoft's system | HHBIJSOPLS |
@distributorId | string | Yes | MaxLength: 32 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 |
reservations | object | Yes | / | 100001 |
@distributorResId | string | Yes | Reservation id in distributor's system | C2084DFL0 |
@derbyResId | string | Yes | Reservation id in Derbysoft's system, this is a unique id as DerbySoft would be splitting the reservation. | D15F893D34DF |
@supplierResId | / | / | Reservation id in supplier's system | 89389494 |
extensions | object | No | A common extension object for extra attributes like account, extra setting required by a distributor, etc. | / |
Modify
This is an API for DerbySoft to call the Supplier's system to modify an existing booking. This is an optional API. If NOT supported, DerbySoft will do cancel+rebook.
Note: IATA and payment are optional fields as some distributor does not support it.
POST /reservation/modify HTTP/1.1 URL: {{endpoint}}/reservation/modify Authorization: Bearer 53ac07777cdffac2d53000002d698728ce964432d7167596bc005c5fc Accept-Encoding: gzip Content-Encoding: gzip Content-Type: application/json;charset=utf-8
Request Example
{ "header": { "sourceId": "HHBIJSOPLS", "distributorId": "GTA", "version": "v4", "token": "18393849028490234" }, "reservationIds": { "distributorResId": "C2084DFL0", "derbyResId": "D15F893D34DF", "supplierResId": "89389494" }, "iata": "string", "hotelId": "100001", "stayRange": { "checkin": "2018-01-01", "checkout": "2018-01-04" }, "contactPerson": { "firstName": "James", "lastName": "Bond", "email": "[email protected]", "phone": "string", "address": "string", "extensions": { "key": "value" } }, "roomCriteria": { "roomCount": 2, "adultCount": 1, "childCount": 2, "childAges": [ 4, 8 ] }, "total": { "amountBeforeTax": 640, "amountAfterTax": 700 }, "payment": { "cardCode": "VI", "cardNumber": "4111111111111111", "cardHolderName": "Sherlock Holmes", "expireDate": "0119", "securityCode": "123" }, "loyaltyAccount": { "programCode": "BW", "accountId": "1234567890123457" }, "corpAccount": { "corpProgramCode": "CR", "corpId": "A-1232" }, "promoteCode": "string", "guests": [ { "firstName": "James", "lastName": "Bond", "email": "[email protected]", "phone": "string", "address": "string", "age": 53, "gender": "Male", "birthday": "1970-12-20", "type": "Adult", "extensions": { "key": "value" }, "index": 1 } ], "comments": [ "no smoking", "high floor" ], "roomRates": [ { "roomId": "10000101", "rateId": "123456", "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", "paymentType": "PayNow" } } ], "cancelPolicy": { "code": "AD100P_100P", "description": "Non Refundable" } } ], "extensions": { "key": "value" }, "threeDomainSecurity": { "cavv": "string", "eci": "string", "xid": "string", "threeDomainSecurityVersion": "string", "transactionId": "string", "merchantName": "string", "extensions": { "key": "value" } } }
Request Specification
Attribute | Type | Required | Description | Example |
---|---|---|---|---|
header | object | Yes | / | / |
@sourceId | string | Yes | maxLength: 32 id of hotel's source in DerbySoft's system | HHBIJSOPLS |
@distributorId | string | Yes | maxLength: 32 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 |
reservations | / | Yes | / | / |
@distributorResId | string | Yes | Reservation id in distributor's system | C2084DFL0 |
@derbyResId | string | Yes | Reservation id in Derbysoft's system, this is a unique id as DerbySoft would be splitting the reservation. | D15F893D34DF |
@supplierResId | string | No | reservation id in supplier's system | 89389494 |
iata | string | No | IATA | / |
hotelId | string | Yes | hotel id in supplier's system | 100001 |
stayRange | object | Yes | / | / |
@checkin | string | Yes | check-in, format with yyyy-MM-dd | 2018-01-01 |
@checkout | string | Yes | checkout, format with yyyy-MM-dd | 2018-01-04 |
contactperson | object | Yes | / | / |
@firstName | string | Yes | First Name | James |
@lastName | string | Yes | Last Name | Bond |
string | No | |||
@phone | string | No | / | / |
@address | string | No | / | / |
@extensions | object | No | a common extension object for extra attributes like account, extra setting required by a distributor, etc. | { "key": "value"} |
roomCriteria | object | Yes | / | / |
@roomCount | integer | Yes | total room count per request | / |
@adultCount | integer | Yes | adult count per room | / |
@childCount | integer | No | child count per room | / |
@childAges | integer | No | Child ages for each child, array size MUST be same as child count. | / |
total | object | Yes | / | / |
@amountBeforeTax | number | No | / | 640 |
@amountAfterTax | number | No | / | 700 |
payment | object | No | / | / |
@cardCode | string | Yes | VI, MC, AX, etc. Card Code | VI |
@cardNumber | string | Yes | Credit card number | 4111111111111111 |
@cardHolderName | string | Yes | Cardholder name | Sherlock Holmes |
@expireDate | string | Yes | It should be 2 digits for the month, 2 digits for the year, as "MMYY". | 0119 |
@securityCode | string | No | Card verification value | 123 |
loyalty account | object | No | / | / |
@programCode | string | Yes | Loyalty program code of the supplier | BW |
@accountId | string | Yes | Loyalty program account id | 1234567890123457 |
corpAccount | object | No | / | / |
@corpProgramCode | string | Yes | Corporate Hotel Program of hotel supplier | CR |
@corpId | string | Yes | Corporate id in the program account | A-1232 |
promoteCode | string | No | The promotion code is defined by the hotel, the promotion code is required if making a reservation under the promotion. | / |
guests | / | / | / | / |
@firstName | string | Yes | First Name | James |
@lastName | string | Yes | Last Name | Bond |
string | No | |||
@phone | string | No | / | / |
@address | string | No | / | / |
@age | integer | No | age of guest | / |
@gender | enum | No | Gender of guest Enum: [Male, Female ] | Male |
@birthday | string | No | Birthday of guest format with yyyy-MM-dd | 1970-12-20 |
@type | string | No | type of guest, Adult, Child or Infant Enum: [ Adult, Child, Infant ] | / |
@extensions | object | No | a common extension object for extra attributes like account, extra setting required by a distributor, etc | { "key": "value"} |
@index | integer | No | room index of room rate | 1 |
comments | array[string] | No | / | [ "no smoking", "high floor" ] |
roomRates | array[object] | Yes | min Items: 1 max Items: 1 Meal plan, fee, and cancel policy are optional fields as some distributors do not support these in API. | / |
@roomId | string | Yes | room id in supplier's system | 10000101 |
@rateId | string | Yes | rate id in supplier's 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, ref to the standard meal plan code list | RO |
@paymentType | enum | No | Indicates the product is prepaid to the hotel(PayNow) or pay at a hotel(PayLater). | PayNow |
roomRates / guarantee | object | No | Guarantee information for this room rate. | / |
@guaranteeType | string | Yes | The type of guarantee method, ref to the standard 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 | 2018-01-01 |
@endDate | string | Yes | end date of date range, format with yyyy-MM-dd | 2018-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 hotels (PayNow) or pay at the hotel (PayLater) Enum: [ PayLater, PayNow ] | PayNow |
roomRates / cancelPolicy | object | No | Cancellation policy defines what penalty will be charged when a guest cancels the booking in a certain advance time range. The penalty is related to no show or a time range before no show. | / |
@code | string | / | maxLength: 128 code of cancel policy | AD100P_100P |
@description | string | / | maxLength: 1024 the description of the cancel policy | Non Refundable |
extensions | object | No | a common extension object for extra attributes like account, extra setting required by a distributor, etc | / |
threeDomainSecurity | object | No | / | / |
@cavv | string | No | Cardholder Authentication Verification Value Information retrieved from the 3DS provider when authentication is successful. | / |
@eci | string | No | The electronic commerce indicator. | / |
@xid | string | No | Transaction identifier for a 3DS Version 1 provider, assigned by the Directory Server to identify a single transaction. |
|
@threeDomainSecurityVersion | string | No | Include this only for 3D Secure 2. | / |
@transactionId | string | No | Transaction identifier for a 3DS Version 2 provider, assigned by the Directory Server to identify a single transaction. | / |
@merchantName | string | No | Identifier of the merchant completing the 3DS transaction. | / |
@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": { "sourceId": "HHBIJSOPLS", "distributorId": "GTA", "version": "v4", "token": "18393849028490234" }, "reservationIds": { "distributorResId": "C2084DFL0", "derbyResId": "D15F893D34DF", "supplierResId": "89389494" }, "extensions": { "key": "value" } }
- Error Response (HTTP Status 500)
{ "errorCode": "InvalidField", "errorMessage": "Invalid Message" }
Response Specification
Attribute | Type | Required | Description | Example |
---|---|---|---|---|
header | object | Yes | / | / |
@sourceId | string | Yes | maxLength: 32 id of hotel's source in DerbySoft's system | HHBIJSOPLS |
@distributorId | string | Yes | maxLength: 32 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 |
reservationIds | object | Yes | / | 100001 |
@distributorResId | string | Yes | reservation id in distributor's system | C2084DFL0 |
@derbyResId | string | Yes | Reservation id in Derbysoft's system, this is a unique id as DerbySoft would be splitting the reservation. | D15F893D34DF |
@supplierResId | / | / | reservation id in supplier's system | 89389494 |
extensions | object | No | a common extension object for extra attributes like account, extra setting required by a distributor, etc. | / |
Cancel
This is an API for DerbySoft to call the Supplier's system to cancel a booking. Since DerbySoft does splitting on original reservation, Supplier should cancel the reservation by unique derbyResId or supplierResId.
POST /reservation/cancel HTTP/1.1 URL: {{endpoint}}/reservation/cancel Authorization: Bearer 53ac07777cdffac2d53000002d698728ce964432d7167596bc005c5fc Accept-Encoding: gzip Content-Encoding: gzip Content-Type: application/json;charset=utf-8
Request Example
{ "header": { "sourceId": "HHBIJSOPLS", "distributorId": "GTA", "version": "v4", "token": "18393849028490234" }, "reservationIds": { "distributorResId": "C2084DFL0", "derbyResId": "D15F893D34DF", "supplierResId": "89389494" }, "extensions": { "key": "value" } }
Request Specification
Attribute | Type | Required | Description | Example |
---|---|---|---|---|
header | object | Yes | / | / |
@sourceId | string | Yes | MaxLength: 32 ID of hotel's source in DerbySoft's system | HHBIJSOPLS |
@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 |
reservationIds | / | Yes | / | / |
@distributorResId | string | Yes | Reservation id in distributor's system | C2084DFL0 |
@derbyResId | string | Yes | Reservation id in Derbysoft's system, this is A unique id as DerbySoft would be splitting the reservation. | D15F893D34DF |
@supplierResId | string | Yes | Reservation id in supplier's system | 89389494 |
extensions | object | No | A common extension object for extra attributes like account, extra setting required by a distributor, etc. | {"key": "value"} |
Response Example
- Success Response (HTTP Status 200)
{ "header": { "sourceId": "HHBIJSOPLS", "distributorId": "GTA", "version": "v4", "token": "18393849028490234" }, "reservationIds": { "distributorResId": "C2084DFL0", "derbyResId": "D15F893D34DF", "supplierResId": "89389494" }, "cancellationId": "C89389494", "extensions": { "key": "value" } }
- Error Response (HTTP Status 500)
{ "errorCode": "InvalidField", "errorMessage": "Invalid Message" }
Response Specification
Attribute | Type | Required | Description | Example |
---|---|---|---|---|
header | object | Yes | / | / |
@sourceId | string | Yes | maxLength: 32 id of hotel's source in DerbySoft's system | HHBIJSOPLS |
@distributorId | string | Yes | maxLength: 32 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 |
reservationIds | object | Yes | / | 100001 |
@distributorResId | string | Yes | reservation id in distributor's system | C2084DFL0 |
@derbyResId | string | Yes | Reservation id in Derbysoft's system, this is a unique id as DerbySoft would be splitting the reservation. | D15F893D34DF |
@supplierResId | string | Yes | reservation id in supplier's system | 89389494 |
cancellationId | string | Yes | cancel confirmation number in supplier's system | C89389494 |
extensions | object | No | A common extension object for extra attributes like account, extra setting required by a distributor, etc. | / |
Query Res List
It is used for querying the reservation list from the Supplier's system based on a timestamp range determined by the last modified date of the reservation.
GET /reservations HTTP/1.1 URL: {{endpoint}}/reservations?sourceId={{sourceId}}&start={{start}}&end={{end}} URL Example: https://www.testdistributor.com/reservations?sourceId=ABC&start=2018-01-01T00:00:00.000Z&end=2018-01-02T00:00:00.000Z Authorization: Bearer 53ac07777cdffac2d53000002d698728ce964432d7167596bc005c5fc Accept-Encoding: gzip Content-Encoding: gzip Content-Type: application/json;charset=utf-8
Request Parameters
Name | Description | Required | Type | Example |
---|---|---|---|---|
sourceId | id of source in DerbySoft's system | Yes | string | PEGASUS |
distributorId | id of distributor in DerbySoft's system | No | string | HOTELBEDS |
start | Start timestamp of reservation's last modified date Format with yyyy-MM-ddTHH:mm: ss.SSSZ | Yes | string | 2018-01-01T00:00:00.000Z |
end | End timestamp of reservation's last modify date Format with yyyy-MM-ddTHH:mm: ss.SSSZ | Yes | string | 2018-01-07T00:00:00.000Z |
Response Example
- Success Response (HTTP Status 200)
[ { "reservationIds": { "distributorResId": "C2084DFL0", "derbyResId": "D15F893D34DF", "supplierResId": "89389494" }, "iata": "string", "hotelId": "100001", "stayRange": { "checkin": "2018-01-01", "checkout": "2018-01-04" }, "contactPerson": { "firstName": "James", "lastName": "Bond", "email": "[email protected]", "phone": "string", "address": "string", "age": 0, "type": "Adult", "extensions": { "key": "value" }, "index": 1 }, "roomCriteria": { "roomCount": 2, "adultCount": 1, "childCount": 2, "childAges": [ 4, 8 ] }, "total": { "amountBeforeTax": 640, "amountAfterTax": 700 }, "distributorId": "GTA", "status": "Confirmed", "result": "Successful", "cancellationId": "C89389494", "errorMessage": "string" } ]
- Error Response (HTTP Status 500)
{ "errorCode": "InvalidField", "errorMessage": "Invalid Message" }
Response Specification
Attribute | Type | Required | Description | Example |
---|---|---|---|---|
reservationIds | object | Yes | / | 100001 |
@distributorResId | string | Yes | reservation id in distributor's system | C2084DFL0 |
@derbyResId | string | Yes | Reservation id in Derbysoft's system, this is a unique id as DerbySoft would be splitting the reservation. | D15F893D34DF |
@supplierResId | string | Yes | reservation id in supplier's system | 89389494 |
iata | string | No | / | / |
hotelId | string | Yes | hotel id in supplier’s system | 100001 |
stayRange | object | Yes | / | / |
@checkin | string | Yes | checkin, format with yyyy-MM-dd | 2018-01-01 |
@checkout | string | Yes | checkout, format with yyyy-MM-dd | 2018-01-04 |
contactPerson | object | Yes | / | / |
@firstName | string | Yes | First Name | James |
@lastName | string | Yes | Last Name | Bond |
string | No | |||
@phone | string | No | / | / |
@address | string | No | / | / |
@age | integer | No | age of guest | / |
@type | string | No | type of guest, Adult, Child or Infant Enum: [ Adult, Child, Infant ] | / |
@extensions | ojbect | No | a common extension object for extra attributes like account, extra setting required by distributors, etc | { "key": "value"} |
@index | integer | No | room index of room rate | 1 |
roomCriteria | object | Yes | / | / |
@roomCount | integer | Yes | total room count per request | / |
@adultCount | integer | Yes | adult count per room | / |
@childCount | integer | No | child count per room | / |
@childAges | integer | No | Child ages for each child, array size MUST be same as child count. | / |
total | object | Yes | / | / |
@amountBeforeTax | number | No | / | 640 |
@amountAfterTax | number | No | / | 700 |
distributorId | string | No | maxLength: 32 id of distributor in DerbySoft's system | GTA |
status | enum | Yes | Enum: [ Confirmed, Modified, Cancelled ] status of reservation Confirmed - New reservation Modified - Modification Reservation Cancelled - Cancellation Reservation Please combine the status and result fields to determine the reservation whether successful, combination examples are as follows: Confirmed + Successful = Booking is successful Confirmed + Failed = Booking is failed Modified + Successful = Modification is successful Modified + Failed = Modification is failed Cancelled + Successful = Cancellation is successful Cancelled + Failed = Cancellation is failed | / |
result | enum | Yes | Enum: [ Successful, Failed, Processing ] status of the reservation to send to supplier | / |
cancellationId | string | No | cancel confirmation number in supplier's system | C89389494 |
errorMessage | string | No | error message | / |
Query Res Details
GO calls the API to query the reservation detail from GO Suppliers' system according to a specific reservation ID. It can be used to check reservation status to determine if it is a ghost booking or not.
GET /reservation/{distributorResId} HTTP/1.1 URL: {{endpoint}}/reservation/{distributorResId}?sourceId={{sourceId}}&distributorId={{distributorId}} Authorization: 53ac07777cdffac2d53000002d698728ce964432d7167596bc005c5fc Accept-Encoding: gzip Content-Encoding: gzip Content-Type: application/json;charset=utf-8
Request Parameters
Name | Description | Required | Type | Example |
---|---|---|---|---|
sourceId | id of source in DerbySoft's system | Yes | string | PEGASUS |
distributorId | id of distributor in DerbySoft's system | Yes | string | BOOKINGCOM |
distributorResId | res id in distributor system | Yes | string | D15F893D34DF |
Response Example
- Success Response (HTTP Status 200)
[ { "reservationIds": { "distributorResId": "C2084DFL0", "derbyResId": "D15F893D34DF", "supplierResId": "89389494" }, "iata": "string", "hotelId": "100001", "stayRange": { "checkin": "2018-01-01", "checkout": "2018-01-04" }, "contactPerson": { "firstName": "James", "lastName": "Bond", "email": "[email protected]", "phone": "string", "address": "string", "age": 0, "type": "Adult", "extensions": { "key": "value" }, "index": 1 }, "roomCriteria": { "roomCount": 2, "adultCount": 1, "childCount": 2, "childAges": [ 4, 8 ] }, "total": { "amountBeforeTax": 640, "amountAfterTax": 700 }, "loyaltyAccount": { "programCode": "BW", "accountId": "1234567890123457" }, "corpAccount": { "corpProgramCode": "CR", "corpId": "A-1232" }, "promoteCode": "string", "guests": [ { "firstName": "James", "lastName": "Bond", "email": "[email protected]", "phone": "string", "address": "string", "age": 0, "type": "Adult", "extensions": { "key": "value" }, "index": 1 } ], "comments": [ "no smoking", "high floor" ], "roomRates": [ { "roomId": "10000101", "rateId": "123456", "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", "paymentType": "PayNow" } } ], "cancelPolicy": { "code": "AD100P_100P", "description": "Non Refundable" } } ], "extensions": { "key": "value" }, "distributorId": "GTA", "status": "Confirmed", "result": "Successful", "cancellationId": "C89389494", "errorMessage": "string" } ]
- Error Response (HTTP Status 500)
{ "errorCode": "InvalidField", "errorMessage": "Invalid Message" }
Response Specification
Attribute | Type | Required | Description | Example |
---|---|---|---|---|
reservationIds | object | Yes | / | 100001 |
@distributorResId | string | Yes | Reservation id in distributor's system. | C2084DFL0 |
@derbyResId | string | Yes | Reservation id in Derbysoft's system, this is a unique id as DerbySoft would be splitting the reservation. | D15F893D34DF |
@supplierResId | string | Yes | Reservation id in supplier's system. | 89389494 |
IATA | string | No | / | / |
hotelId | string | Yes | Hotel id in supplier’s system. | 100001 |
stayRange | object | Yes | / | / |
@checkin | string | Yes | checkin, format with yyyy-MM-dd | 2018-01-01 |
@checkout | string | Yes | checkout, format with yyyy-MM-dd | 2018-01-04 |
contactPerson | object | Yes | / | / |
@firstName | string | Yes | First Name | James |
@lastName | string | Yes | Last Name | Bond |
string | No | |||
@phone | string | No | / | / |
@address | string | No | / | / |
@age | integer | No | Age of guest | / |
@type | string | No | Type of guest, Adult, Child, or Infant Enum: [ Adult, Child, Infant ] | / |
@extensions | object | No | A common extension object for extra attributes like account, extra setting required by a distributor, etc | { "key": "value"} |
roomCriteria | object | Yes | / | / |
@roomCount | integer | Yes | total room count per request | / |
@adultCount | integer | Yes | adult count per room | / |
@childCount | integer | No | child count per room | / |
@childAges | integer | No | Child ages for each child, array size MUST be same as child count. |
|
total | object | Yes | / |
|
@amountBeforeTax | number | No | / | 640 |
@amountAfterTax | number | No | / | 700 |
loyaltyAccount | object | No | / | / |
@programCode | string | Yes | The loyalty program code of the supplier | BW |
@accountId | string | Yes | Loyalty program account ID | 1234567890123457 |
corpAccount | object | No | / | / |
@corpProgramCode | string | Yes | Corporate Hotel Program of hotel supplier | CR |
@corpId | string | Yes | Corporate ID in the program account | A-1232 |
promoteCode | string | No | The promotion code is defined by the hotel, the promotion code is required if making a reservation under the promotion. | / |
guests | / | / | / | / |
@firstName | string | Yes | First Name | James |
@lastName | string | Yes | Last Name | Bond |
string | No | / | / | |
@phone | string | No | / | / |
@age | integer | No | / | / |
@gender | enum | No | Enum: [Male, Female] | Male |
@birthday | string | No | Format: yyyy-MM-dd | 2000-12-29 |
@type | string | No | Enum: [Adult, Child, Infant] | |
comments | array[string] | No | / | ["no smoking", "high floor"] |
roomRates | array[object] | Yes | Min Items: 1 Max Item: 1 Meal plan, fee, and cancel policy are optional fields as some distributors do not support these in the API. | / |
@roomId | string | Yes | Room ID in supplier's system | 10000101 |
@rateId | string | Yes | Rate ID in supplier's system | 123456 |
@currency | string | Yes | Currency code [ISO-4217] | USD |
@amountBeforeTax | array[number] | No | The daily amount rate without tax and fee | [ 100, 100, 120 ] |
@amountAfterTax | array[number] | No | The daily amount of rate with tax and fee | [ 110, 110, 130 ] |
@mealPlan | string | No | Meal plan code, refer to the standard 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 | The type of guarantee method, refers to the standard 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 | 2018-01-01 |
@endDate | string | Yes | End date of date range, format with yyyy-MM-dd | 2018-01-04 |
fees / fee | / | Yes | / | / |
@name | string | Yes | / | Service Charge |
@type | enum | Yes | Indicates if 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 |
| It indicates the fee will be charged starting from which occupancy, such as the "Extra Person Charge" fee. The EffectivePerson is 3, meaning an extra fee will be applied from the third person onward. | / |
roomRates/cancelPolicy | object | No | Cancellation policy defines what penalty will be charged when a guest cancels the booking at a certain advance time range. The penalty is related to No-show or a time range before No-show. | / |
@code | string |
| Max Length: 128 Code of cancel policy | AD100P_100P |
@description | string |
| Max Length: 1024 The description of the cancellation policy | Non Refundable |
extensions | object | No | / | / |
distributorId | string | No | maxLength: 32 id of distributor in DerbySoft's system | GTA |
status | enum | Yes | Enum: [ Confirmed, Modified, Cancelled ] status of reservation Confirmed - New reservation Modified - Modification Reservation Cancelled - Cancellation Reservation Please combine the status and result fields to determine the reservation whether successful, combination examples are as follows: Confirmed + Successful = Booking is successful Confirmed + Failed = Booking is failed Modified + Successful = Modification is successful Modified + Failed = Modification is failed Cancelled + Successful = Cancellation is successful Cancelled + Failed = Cancellation is failed | / |
result | enum | Yes | Enum: [ Successful, Failed, Processing ] status of the reservation to send to supplier | / |
cancellationId | string | No | cancel confirmation number in supplier's system | C89389494 |
errorMessage | string | No | error message | / |
Did you find it helpful? Yes No
Send feedback