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) - Get availability of one hotel for one distributor.
  • Book(/reservation/book) - Book a new reservation from distributor.
  • Modify(/reservation/modify) - Modify an existing reservation from distributor.
  • Cancel(/reservation/cancel) - Cancel a booking from distributor.
  • Query Res List(/reservations) - Query reservation ids by a timestamp range.
  • Query Res Details(/reservation/{distributorResId}) - Query a reservation.


TABLE OF CONTENTS

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.

  • True means to check the availability is under the promotion rules provided by the Supplier.
  • False means do not need to check the availability under any promotions, basic live-check only.

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
objectNo

{

    "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.

  • True means to check the availability is under the promotion rules provided by the Supplier.
  • False means do not need to check the availability under any promotions, basic live-check only.

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)
Enum: [ PayLater, PayNow ]

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": "007@james.com",
      "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"
    },
    "loyaltyAccount": {
      "programCode": "BW",
      "accountId": "1234567890123457"
    },
    "corpAccount": {
      "corpProgramCode": "CR",
      "corpId": "A-1232"
    },
    "promoteCode": "string",
    "guests": [
      {
        "firstName": "James",
        "lastName": "Bond",
        "email": "007@james.com",
        "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

@email

string

No

Email

007@james.com

@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

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

@email

string

No

Email

007@james.com

@phone

string

No

 /

 /

@address

string

No

 /

 /

@age

integer

No

Age of guest

 /

@gender
enum
NoGender of guestMale
@birthdaystringNoBirthday 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)
Enum: [ PayLater, PayNow ]

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": "007@james.com",
      "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"
    },
    "loyaltyAccount": {
      "programCode": "BW",
      "accountId": "1234567890123457"
    },
    "corpAccount": {
      "corpProgramCode": "CR",
      "corpId": "A-1232"
    },
    "promoteCode": "string",
    "guests": [
      {
        "firstName": "James",
        "lastName": "Bond",
        "email": "007@james.com",
        "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

@email

string

No

Email

007@james.com

@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

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

@email

string

No

Email

007@james.com

@phone

string

No

 /

 /

@address

string

No

 /

 /

@age

integer

No

age of guest

 /

@gender
enumNoGender of guest
Enum: [Male, Female ]
Male
@birthday
stringNo

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).
Enum: [ PayLater, PayNow ]

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}}&distributorId={{distributorId}}&start={{start}}&end={{end}}
URL Example: https://www.testdistributor.com/reservations?sourceId=ABC&distributorId=XYZ&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

Yes

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": "007@james.com",
      "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

@email

string

No

Email

007@james.com

@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": "007@james.com",
      "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": "007@james.com",
        "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

@email

string

No

Email

007@james.com

@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////
@firstNamestringYesFirst NameJames
@lastNamestringYesLast NameBond
@emailstring
No//
@phonestringNo//
@ageintegerNo//
@genderenumNoEnum: [Male, Female]
Male
@birthdaystringNoFormat: yyyy-MM-dd2000-12-29
@typestringNoEnum: [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).
Enum: [ PayLater, PayNow ]

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
objectNo//

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

 /