TABLE OF CONTENTS

Modify API

The Modify API allows distributors to make changes to an existing booking, such as updating travel dates, guest details among others. Upon calling the hotel supplier's system, the API will return a real-time confirmation of the modification. If the hotel supplier or your system does not support direct modifications, the process will instead involve canceling the current booking and rebooking it with the updated details. This functionality provides flexibility in managing reservations, allowing distributors to accommodate customer changes efficiently. For distributors working with certain suppliers, such as Disney, this API is a mandatory requirement to handle modifications seamlessly. 

POST /reservation/modify HTTP/1.1
URL: {BookingUSB-Endpoint}/reservation/modify
Authorization: 53ac07777cdffac2d53000002d698728ce964432d7167596bc005c5fc
Accept-Encoding: gzip
Content-Encoding: gzip
Content-Type: application/json;charset=utf-8

Modification Request Schema

Request(METHOD: POST)

Level

Field Name

Data Type

Required

Description

Example

1

header

object

Y

 /

 /

2

@supplierId

string

Y

The ID of the hotel's source is in DerbySoft's system.

Max Length: 32

HILTON

2

@distributorId

string

Y

The ID of the distributor in DerbySoft's system

MaxLength: 32

GTA

2

@version

string

Y

Max Length: 20

Version of API

v4

2

@token

string

Y

A unique identifier is used for requests and responses, typically a UUID. MaxLength: 64

 Note that this is an echo token, not an access token.

18393849028490234

1

reservationIds

object

Y

 /

 /

2

@distributorResId

string

Y

Distributor's reservation ID. Distributors should keep the ID unique on their system to avoid any potential issues caused by duplicate reservation IDs.

C2084DFL0

2

@derbyResId

string

Y

Reservation ID in DerbySoft's system, it's a unique ID as DerbySoft would be splitting the reservation 

D15F893D34DF

2

@supplierResId

string

Y

Reservation ID in supplier's system

89389494

1

iata

string

N

IATA

 /

1

hotelId

string

Y

Hotel IDs provided by hotel suppliers, only the following characters are allowed.

1. Digits (0-9) 

2. Uppercase letters (A-Z) 

3. Hyphen ('-')

100001

GATHI

00016

PEP-B3T2

B8W7

1

stayRange

object

Y

 /

 /

2

@checkin

string

Y

Check in date expressed YYYY-MM-DD

2028-01-01

2

@checkout

string

Y

Check out date expressed YYYY-MM-DD

2028-01-04

1

contactPerson

object

Y

 /

 /

2

@firstName

string

Y

Contact person first name

James/

2

@lastName

string

Y

Contact person last name

Bond

2

@email

string

N

Contact person email

007@james.com

2

@phone

string

N

Contact person phone number including country code

34123456789

2

@address

string

N

Contact person home address

King's Road in Chelsea, specifically in Wellington Square

2

@extensions

object

N

Optional: Additional agreed-upon attributes between suppliers and distributors (DerbySoft will provide the specified format). Please don't transmit sensitive information through this field. For more information refer to:

Sensitive Information

{ "key": "value"}

1

roomCriteria

object

Y

 /

 /

2

@roomCount

integer

Y

Total room count per request

 /

2

@adultCount

integer

Y

Adult count per room

 /

2

@childCount

integer

N

Child count per room

 /

2

@childAges

array

N

For child ages for each child, array size MUST be the same as the child count.

 /

1

total

object

Y

Object used to share the total amount of the reservation, either ABT or AAT, or both

 /

2

@amountBeforeTax

number

C

ABT, mandatory if AAT is not provided.

The total room rate for the entire reservation, not including taxes and fees.

640

2

@amountAfterTax

number

C

AAT, mandatory if ABT is not provided.

The total room rate for the entire reservation, including taxes and fees.

700

1

payment

object

N

It is used to share payment information with properties.

If the credit card information is not going to be passed to the property, this information will be ignored.

 /

2@cardTypestringN

If the payment card type is not specified, it will be treated as the default value "CC" which stands for Credit Card. The type value can be one of the options listed below.
CC: Credit Card
VCC: Virtual Credit Card
CBILL: Central Bill

CC
2

@cardCode

string

Y

VI, MC, AX, etc.

Refer to Appendix: Credit Card Code

VI

2

@cardNumber

string

Y

Credit card number

4111111111111111

2

@cardHolderName

string

Y

Cardholder name

Sherlock Holmes

2

@expireDate

string

Y

It should be 2 digits for month, 2 digits for year, expressed MMYY

0119

2@securityCodestringNCard verification value123
2@vccEffectiveDatestringCThe date the VCC becomes effective, expressed YYYY-MM-DD2025-06-30
2@vccInvalidDatestringNThe expiry date of the VCC, expressed YYYY-MM-DD2025-07-30
2@vccAmountOnCardnumberNAmount put on the virtual card1000.00
2@vccCurrencystringNThe currency code [ISO-4217] of the amountUSD
1

loyaltyAccount

object

N

 /

 /

2

@programCode

string

Y

Loyalty program code of the supplier

BW

2

@accountId

string

Y

Loyalty program account ID

1234567890123457

1

corpAccount

object

N

Please note that the current feature will be deprecated. Instead, please implement the 'corpCodes' node.

 /

2

@corpProgramCode

string

Y

Corporate Hotel Program of hotel supplier

CR

2

@corpId

string

Y

Corporate ID in the program account

A-1232

1

promoteCode

string

N

The promotion code is defined by the hotel, the promotion code is required if making a reservation under the promotion.

 /

1

guests

array[object]

Y

 /

 /

2

@firstName

string

Y

Guest First Name

James

2

@lastName

string

Y

Guest Last Name

Bond

2

@email

string

N

Guest Email

007@james.com

2

@phone

string

N

Guest phone number including country code

34123456789

2

@address

string

N

Guest home address

King's Road in Chelsea, specifically in Wellington Square

2

@age

integer

N

Age of guest

 /

2@genderenumNGender of guest
Enum: [Male, Female]
/
2@birthdaystringNBirthday of guest/
2

@type

string

N

Type of guest: Adult, Child, or Infant.

Enum: [ Adult, Child, Infant ]

 /

2

@extensions

object

N

Optional: Additional agreed-upon attributes between suppliers and distributors (DerbySoft will provide the specified format). Please don't transmit sensitive information through this field. For more information refer to:

Sensitive Information

{ "key": "value"}

2

@index

integer

N

Indicate which guests will be allocated to which room.

 

For a one-room reservation, the room index is 1 for all guests.

For multi-room reservations, the index starts from 1 and the max room index is equal to the number of booked rooms. 

index = 1, Indicate the guest will allocate to the first room.

index = 2, Indicate the guest will allocate to the second room.

2@extensionsobjectNOptional: Additional agreed-upon attributes between suppliers and distributors (DerbySoft will provide the specified format).
1

comments

array[string]

N

Any preference or comment can be communicated in this field

[ "no smoking", "high floor" ]

1

roomRates

array[object]

Y

Min Item: 1; Max Item: 1

Meal plan, fee, and cancel policy are optional fields as some distributors do not support these in the API.

 /

2

@roomId

string

Y

Room ID in supplier system

10000101

2

@rateId

string

Y

Rate ID in supplier system

123456

2

@currency

string

Y

currency code [ISO-4217]

USD

2

@amountBeforeTax

array[number]

N

ABT, mandatory if AAT is not provided

The daily amount rate without tax and fee

[ 100, 100, 120 ]

2

@amountAfterTax

array[number]

C

AAT, mandatory if ABT is not provided

The daily amount of rate with tax and fee

[ 110, 110, 130 ]

2

@mealPlan

string

N

Meal plan code, refers to the standard meal plan code list.

RO

2

@paymentType

enum

N

Indicates the product is prepaid to the hotel (PayNow) or pay at the hotel (PayLater).
Enum: [ PayLater, PayNow ]

PayNow

2

guarantee

object

N

Guarantee information for this room rate

 /

3

@guaranteeType

string

Y

The type of guarantee method, refers to the standard guarantee type list.

CCG

2

fees

array[object]

N

Fee or tax by date range

 /

3

dateRange

object

Y

 /

 /

4

@startDate

string

Y

Start date of date range, format with yyyy-MM-dd

2028-01-01

4

@endDate

string

Y

End date of date range, format with yyyy-MM-dd

2028-01-04

3

fee

 

Y

 /

 /

4

@name

string

Y

pattern: \w[\w\d]+ starts with a word character (letter, number, or underscore) followed by one or more word characters or digits.

Service Charge

4

@type

enum

Y

Whether the fee or tax is included in the amount before tax or not

Enum: [ Inclusive, Exclusive ]

Exclusive

4

@amount

number

Y

Amount value of fee or tax

10

4

@amountType

string

Y

Indicates how to charge the tax, 10% per room per night in this example.

Enum: [ Fix, Percent ]

Percent

4

@chargeType

string

Y

Enum: [ PerRoomPerNight, PerPersonPerNight, PerRoomPerStay, PerPersonPerStay ]

PerRoomPerNight

4

@paymentType

enum

N

Enum: [ PayLater, PayNow ]

Indicates if the fee is prepaid to hotels(PayNow) or paid at the hotel(PayLater). 

Note:

The 'paymentType' field will be replaced by 'collectBy' and removed from the API in the future.

PayNow

4@collectByenumN

Enum: [Distributor, Property]

Indicates that the fee (e.g., City Tax, Tourist Tax) should be collected by the hotel(Property) at check-in or by distributors when guests make a reservation(Distributor).

Distributor
4@effectivePersonnumberNIt 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.
2

cancelPolicy

object

N

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

 /

3

@code

string

 C

Code of cancellation policy

AD100P_100P

3

@description

string

 N

The description of the cancel policy

Non Refundable

3

cancelPenalties

array[object]

C

Details about the cancel Penalty

 /

4

@noShow

boolean

C

If true, it means the penaltyCharge applied for No-Show, and the cancellable, cancelDeadline will NOT exist

 /

4

@cancellable

boolean

N

Indicates cancel is allowed or not. If false, it cannot be canceled. If true, the cancelDeadline will exist.

 /

4

cancelDeadline

 object

N

Object for cancel deadline

 /

5

@offsetTimeDropType

enum

N

Enum: [ BeforeArrival ]

An enumerated type indicates when the deadline drop time goes into effect.

 /

5

@offsetTimeUnit

enum

N

Enum: [ D, H ]

 /

5

@offsetTimeValue

number

N

The number of offset times with the time unit

 /

5

@deadline

string

N

Local deadline times allowed for cancellation, like 4 PM or 6 PM

 /

4

penaltyCharge

object

N

 /

 /

5

@chargeBase

enum

N

Enum: [ FullStay, NightBase ]

If FullStay, it will be a percentage or an amount. If NightBase, the nights are required.

 /

5

@nights

number

N

It exists if the penalty charge is based on the night, like the first night.

 /

5

@amount

number

N

It exists if the penalty charge is a flat charge, like USD 30.00.

 /

5

@percent

number

N

It exists if the penalty charge is a percent, like 15.5 means 15.5%.

 /

1bookingChannelstringNSub-distributor ID

 /

1productAddonsarray[object]NOnly available for some suppliers
2@typestringC
product addon type
2@codestringC
product addon code
2@datestringCExpressed as YYYY-MM-DD2022-01-01
2@quantityintegerC/1
2@officeIdstringN//
2rateobjectN//
3ageQualifyingTypeobjectN//
4@typeenumCEnum: [Adult, Child]Adult
4@minAgeintegerC/18
4@maxAgeintegerC/18
3currencystringC/USD
3amountBeforeTaxnumberN/123
3amountAfterTaxnumberY/
1corpCodestringN

Corporate code in Distributor's system

Note: 

This field is primarily used by Travel Management Companies (TMCs) distributors.

D_XXX
1

threeDomainSecurity

object

N

 /

 /

2

@cavv

string

N

Cardholder Authentication Verification Value Information is retrieved from the 3DS provider when authentication is successful.

 /

2

@eci

string

N

The electronic commerce indicator.

 /

2

@xid

string

N

Transaction identifier for a 3DS Version 1 provider, assigned by the Directory Server to identify a single transaction.


 /

2

@threeDomainSecurityVersion

string

N

Include this only for 3D Secure 2.

 /

2

@transactionId

string

N

Transaction identifier for a 3DS Version 2 provider, assigned by the Directory Server to identify a single transaction.

 /

2

@merchantName

string

N

Identifier of the merchant completing the 3DS transaction.

 /

2@channelCodeenumNSpecify the collection channel of payment cards
Enum: [TO, EC, MO, FA]
Refer to: PSD2-Channel Code
EC
2@exemptionTypeenumNDetermines which exemption was used by the Payment Service Provider (PSP)
Enum: [SC, DA, TA, TB, LV]
Refer to: PSD2-Exemption Type
SC
1

extensions

object

N

Optional: Additional agreed-upon attributes between suppliers and distributors (DerbySoft will provide the specified format). Please don't transmit sensitive information through this field. For more information refer to:

Sensitive Information

 /

Modification Request Example

Modification Request example
{
        "header": {
          "supplierId": "HILTON",
          "distributorId": "GTA",
          "version": "v4",
          "token": "18393849028490234"
        },
        "reservationIds": {
          "distributorResId": "C2084DFL0",
          "derbyResId": "D15F893D34DF",
          "supplierResId": "89389494"
        },
        "iata": "string",
        "hotelId": "GATHI",
        "stayRange": {
          "checkin": "2028-01-01",
          "checkout": "2028-01-04"
        },
        "contactPerson": {
          "firstName": "Thomas",
          "lastName": "Hintz",
          "email": "Thomas.Hintz@yahoo.com",
          "phone": "260-975-4091",
          "address": "3946 Freddy Locks"
        },
        "roomCriteria": {
          "roomCount": 1,
          "adultCount": 2,
          "childCount": 1,
          "childAges": [
            5
          ]
        },
        "total": {
          "amountBeforeTax": 640,
          "amountAfterTax": 700
        },
        "payment": {
          "cardType": "CC",
          "cardCode": "VI",
          "cardNumber": "4111111111111111",
          "cardHolderName": "Sherlock Holmes",
          "expireDate": "0119",
          "securityCode": "123",
          "vccEffectiveDate": "2028-01-01",
          "vccInvalidDate": "2028-01-02",
          "vccAmountOnCard": 502.19,
          "vccCurrency": "USD"
        },
        "loyaltyAccount": {
          "programCode": "BW",
          "accountId": "1234567890123457"
        },
        "corpAccount": {
          "corpProgramCode": "CR",
          "corpId": "A-1232"
        },
        "promoteCode": "string",
        "guests": [
          {
            "firstName": "Thomas",
            "lastName": "Hintz",
            "email": "Thomas.Hintz@yahoo.com",
            "phone": "260-975-4091",
            "address": "3946 Freddy Locks",
            "age": 32,
            "gender": "Male",
            "birthday": "1990-01-01",
            "type": "Adult",
            "index": 1
          },
          {
            "firstName": "Hillary",
            "lastName": "Ullrich",
            "email": "Xavier.Lind49@yahoo.com",
            "phone": "260-975-4091",
            "address": "3946 Freddy Locks",
            "age": 28,
            "gender": "Female",
            "birthday": "1994-01-01",
            "type": "Adult",
            "index": 1,
            "extensions": {
              "key1": "value1",
              "key2": "value2"
            }
          },
          {
            "firstName": "Alex",
            "lastName": "Hintz",
            "age": 5,
            "type": "Child",
            "index": 1
          }
        ],
        "comments": [
          "no smoking",
          "high floor"
        ],
        "roomRates": [
          {
            "roomId": "K1D",
            "rateId": "ODAD01",
            "currency": "USD",
            "amountBeforeTax": [
              100,
              100,
              120
            ],
            "amountAfterTax": [
              110,
              110,
              130
            ],
            "mealPlan": "RO",
            "paymentType": "PayNow",
            "guarantee": {
              "guaranteeType": "CCG"
            },
            "fees": [
              {
                "dateRange": {
                  "startDate": "2028-01-01",
                  "endDate": "2028-01-04"
                },
                "fee": {
                  "name": "Service Charge",
                  "type": "Exclusive",
                  "amount": 10,
                  "amountType": "Percent",
                  "chargeType": "PerRoomPerNight",
                  "paymentType": "PayNow",
                  "collectBy": "Distributor",
                  "effectivePerson": 0
                }
              },
              {
                "dateRange": {
                  "startDate": "2028-01-01",
                  "endDate": "2028-01-04"
                },
                "fee": {
                  "name": "City Tax",
                  "type": "Exclusive",
                  "amount": 5,
                  "amountType": "Fix",
                  "chargeType": "PerPersonPerNight",
                  "paymentType": "PayLater",
                  "collectBy": "Property",
                  "effectivePerson": 0
                }
              }
            ],
            "cancelPolicy": {
              "code": "AD100P_100P",
              "description": "Non Refundable",
              "cancelPenalties": [
                {
                  "noShow": true,
                  "cancellable": true,
                  "cancelDeadline": {
                    "offsetTimeDropType": "BeforeArrival",
                    "offsetTimeUnit": "D",
                    "offsetTimeValue": 0,
                    "deadline": "string"
                  },
                  "penaltyCharge": {
                    "chargeBase": "FullStay",
                    "nights": 0,
                    "amount": 0,
                    "percent": 0
                  }
                }
              ]
            }
          }
        ],
        "bookingChannel": "string",
        "productAddons": [
          {
            "type": "DisneyTicket",
            "code": "code",
            "date": "2028-01-01",
            "quantity": 1,
            "officeId": "string",
            "rate": {
              "ageQualifyingType": {
                "type": "Adult",
                "minAge": 18,
                "maxAge": 99
              },
              "currency": "USD",
              "amountBeforeTax": 123.23,
              "amountAfterTax": 134.34
            }
          }
        ],
        "corpCode": "D_XXX",
        "threeDomainSecurity": {
          "cavv": "string",
          "eci": "string",
          "xid": "string",
          "threeDomainSecurityVersion": "string",
          "transactionId": "string",
          "merchantName": "string",
          "channelCode": "EC",
          "exemptionType": "SC",
          "extensions": {
            "key1": "value1",
            "key2": "value2"
          }
        },
        "extensions": {
          "key1": "value1",
          "key2": "value2"
        }
      }

Modification Response Schema

Response

Level

Field Name

Data Type

Required

Description

Example

1

header

object

Y

 /

 /

2

@supplierId

string

Y

The ID of hotel suppliers in DerbySoft's system.

Max Length: 32

HILTON

2

@distributorId

string

Y

The ID of the distributor in DerbySoft's system

MaxLength: 32

GTA

2

@version

string

Y

Max Length: 20

Version of API

v4

2

@token

string

Y

A unique identifier is used for requests and responses, typically a UUID. Note that this is an echo token, not an access token.

18393849028490234

1

reservationIds

object

Y

 /

100001

2

@distributorResId

string

Y

Distributor's reservation ID. Distributors should keep the ID unique on their system to avoid any potential issues caused by duplicate reservation IDs.

C2084DFL0

2

@derbyResId

string

Y

Reservation ID in Derbysoft's system, it's a unique ID as DerbySoft would be splitting the reservation.

D15F893D34DF

2

@supplierResId

string

Y

Reservation ID in supplier's system

89389494

1connectionTypeenumN

Enum: [Exchange, Standard]

Indicates the connection type of products. 

Notes: If the field is omitted, it means the Connection Type is Standard.

Exchange
1commissionobjectNNotes: If the connection type is "Exchange" and "Retail" Rate Model, the node will be visible; otherwise, it will not appear./
2@valuenumberC
/10
2@typeenumC

Commission type

Enum: [Percent, Amount]

Percent
1suggestedTotalPriceobjectNNotes: If the connection type is "Exchange" and "Net" Rate Model, the node will be visible; otherwise, it will not appear./
2@amountBeforeTaxnumberN/600
2@amountAfterTaxnumberY/700
1

extensions

object

N

Optional: Additional agreed-upon attributes between suppliers and distributors (DerbySoft will provide the specified format). Please don't transmit sensitive information through this field. For more information refer to:

Sensitive Information

 /

1errorstringNerror responseKey not authorized
1errorCodestringCerror responseInvalidField
1supplierErrorCodestringCerror responseInvalidField
1errorMessagestringCerror responseInvalid Message

Modification Response Example

Success Response (HTTP Status 200)
{
  "header": {
    "supplierId": "HILTON",
    "distributorId": "GTA",
    "version": "v4",
    "token": "18393849028490234"
  },
  "reservationIds": {
    "distributorResId": "C2084DFL0",
    "derbyResId": "D15F893D34DF",
    "supplierResId": "89389494"
  },
  "extensions": {
    "key": "value"
  }
}
Successful Response from Exchange Connection and Retail Rate Model(HTTP Status 200)
{
  "header": {
    "supplierId": "HILTON",
    "distributorId": "GTA",
    "version": "v4",
    "token": "18393849028490234"
  },
  "reservationIds": {
    "distributorResId": "C2084DFL0",
    "derbyResId": "D15F893D34DF",
    "supplierResId": "89389494"
  },
  "connectionType": "Exchange",
  "commission": {
    "value": 10,
    "type": "Percent"
  },
  "extensions": {
    "key1": "value1",
    "key2": "value2"
  }
}
Successful Response from Exchange Connection and Net Rate Model(HTTP Status 200)
{
  "header": {
  "supplierId": "HILTON",
  "distributorId": "GTA",
  "version": "v4",
  "token": "18393849028490234"
  },
  "reservationIds": {
  "distributorResId": "C2084DFL0",
  "derbyResId": "D15F893D34DF",
  "supplierResId": "89389494"
  },
  "connectionType": "Exchange",
  "suggestedTotalPrice": {
  "amountBeforeTax": 600,
  "amountAfterTax": 700
  },
  "extensions": {
  "key1": "value1",
  "key2": "value2"
  }
  }
Error Response (HTTP Status 403)
{
  "error": "Key not authorized"
}
Error Response (HTTP Status 500)
{
  "errorCode": "string",
  "supplierErrorCode": "string",
  "errorMessage": "string"
}