Overview

There are three types of messages to exchange ARI(Availability, Rates, and Inventory) data between your PMS and DerbySoft Property Connector, and all of them are mandatory to be implemented.


  1. Update Rate: to receive updates for rate from your PMS.
  2. Update Inventory: to receive updates for inventory from your PMS.
  3. Update Availability: to receive updates for availability from your PMS. There are four levels of availabilities as design. Product level is mandatory, and others are optional. You should develop them according to how your PMS manages availability.
Notes:
① The request for updating messages is pushed out from PMS to DerbySoft Property Connector, and DerbySoft Property Connector will return back the response for the messages. Please keep in mind that DerbySoft will process the messages in the async model to acquire the best performance of throughput, and the messages are consumed by the sequence of receiving time in a FIFO queue. If you meet any errors during the pushing, it mostly because of a network issue, please retry your request to ensure every ARI updating message can be received by DerbySoft.

② To optimize the performance and reduce the message bytes, DerbySoft servers do support GZIP compression. It's recommended that your PMS application enable the GZIP compression while pushing messages to DerbySoft Property Connector. In this way, you need to add "Content-Encoding: gzip" in the HTTP request header, so that our servers are aware that the request messages are in GZIP format and will decode it automatically.


TABLE OF CONTENTS


Update Rate

This API is used to update the rates for a combination of one room type and one rate plan for a single property. If there are multiple rate plans modified at the same time, your PMS has to split them into batch messages and send them to DerbySoft to avoid a large-size single message.

POST /pcapigateway/tunnel/{accountId}/rate HTTP/1.1
Authorization: Bearer 53ac07777cdffac2d53000002d698728ce964432d7167596bc005c5fc
Accept-Encoding: gzip
Content-Encoding: gzip
Content-Type: application/json;charset=utf-8


Request Schema

Element

Type

Occurrence

Description

Comment

hotelId

String

Mandatory

Hotel unique id of PMS

/

roomId

String

Mandatory

Room type id of PMS

/

rateId

String

Mandatory

Rate plan id of PMS

/

startDate

Date: yyyy-MM-dd

Mandatory

Start date of the affected rates to be applied in the database

/

endDate

Date: yyyy-MM-dd

Mandatory

End date of the affected rates to be applied in the database

/

type

Enum
- Delta
- Overlay

Mandatory

  1. Delta: DerbySoft only update the rates in the message, and keep other rates in the database without change. It normally used for pushing rate changes to DerbySoft.

  2. Overlay: DerbySoft will perform delete and insert operations into the database. It normally used for a full refresh from PMS while launching a new property or manual refresh by property in the PMS system.

Please refer to the section for more details

currencyCode

String

Mandatory

Currency code with ISO 4217 standard

/

rates

List [DailyRate]

Mandatory

//

DailyRate/startDate

Date: yyyy-MM-dd

Mandatory

Start date

/

DailyRate/endDate

Date: yyyy-MM-dd

Mandatory

End date

/

DailyRate/baseByGuestAmts

List[BaseByGuestAmt]

Mandatory

//

BaseByGuestAmt/ageQualifyingCode

Integer

Mandatory

/

“8”=Child
“10” = Adult

BaseByGuestAmt/numberOfGuests

Integer

Mandatory

Number of guests


BaseByGuestAmt/amountAfterTax

BigDecimal

Optional

Price including tax & fee

amountBeforeTax and amountAfterTax are either required

BaseByGuestAmt/amountBeforeTax

BigDecimal

Optional

Price excluding tax & fee

rates/additionalGuestAmounts
List[additionalGuestAmounts]
Optional


additionalGuestAmounts/ageQualifyingCode
Integer
Mandatory

“8”=Child

“10” = Adult


additionalGuestAmounts/amountAfterTax
BigDecimal
Optional
Price including tax & fee

Either amountBeforeTax or amountAfterTax is required
additionalGuestAmounts/amountBeforeTax
BigDecimal
Optional
Price including tax & fee


Example 

1.1 Update rate changes from 1/23 to 2/23 on specific room type and rate plan.

There are rate changes including additional guest rate that occurred on King and BAR from 1/23 to 2/23. Inside this date range, the rates are changed on two date ranges of 1/23 to 1/24 and 2/21 to 2/23. The other dates are not changed.


Request

{
  "header": {
    "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e",
    "timeStamp": "2018-06-27T17:09:04.674Z",
    "version": "0.1"
  },
  "hotelId": "FSDH",
  "roomId": "King",
  "rateId": "BAR",
  "startDate": "2021-01-23",
  "endDate": "2021-02-23",
  "type": "Delta",
  "currencyCode": "USD",
  "rates": [{
      "startDate": "2021-01-23",
      "endDate": "2021-01-24",
      "baseByGuestAmts": [{
          "ageQualifyingCode": 10,
          "numberOfGuests": 1,
          "amountBeforeTax": 100,
          "amountAfterTax": 120
        },
        {
          "ageQualifyingCode": 10,
          "numberOfGuests": 2,
          "amountBeforeTax": 200,
          "amountAfterTax": 220
        },
        {
          "ageQualifyingCode": 8,
          "numberOfGuests": 1,
          "amountBeforeTax": 20,
          "amountAfterTax": 22
        }
      ]
    },
    {
      "startDate": "2021-02-21",
      "endDate": "2021-02-23",
      "baseByGuestAmts": [{
          "ageQualifyingCode": 10,
          "numberOfGuests": 1,
          "amountBeforeTax": 300,
          "amountAfterTax": 330
        },
        {
          "ageQualifyingCode": 10,
          "numberOfGuests": 2,
          "amountBeforeTax": 600,
          "amountAfterTax": 660
        }
      ],
      "additionalGuestAmounts": [
	{
	    "ageQualifyingCode": 10,
	    "amountBeforeTax": 300,
	    "amountAfterTax": 330
	 }
      ]
    }
  ]
}

Response-Success

{
  "header": {
    "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e",
    "timeStamp": "2018-06-27T17:09:04.674Z",
    "version": "0.1"
  }
}

Response-Error

{
  "header": {
    "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e",
    "timeStamp": "2018-06-27T17:09:04.674Z",
    "version": "0.1"
  },
  "errorCode": "InvalidField",
  "errorMessage": "Invalid token"
}


1.2 Full refresh rate from 1/23 to 2/23 on specific room type and rate plan.

The whole rates of King and BAR from 1/23 to 2/23 will be pushed out to DerbySoft. There are two rates, one is from 1/23 to 2/20 and another one is from 2/21 to 2/23.


Request

{
  "header": {
    "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e",
    "timeStamp": "2018-06-27T17:09:04.674Z",
    "version": "0.1"
  },
  "hotelId": "FSDH",
  "roomId": "King",
  "rateId": "BAR",
  "startDate": "2021-01-23",
  "endDate": "2021-02-23",
  "type": "Overlay",
  "currencyCode": "USD",
  "rates": [
    {
      "startDate": "2021-01-23",
      "endDate": "2021-02-20",
      "baseByGuestAmts": [{
          "ageQualifyingCode": 10,
          "numberOfGuests": 1,
          "amountBeforeTax": 100,
          "amountAfterTax": 120
        },
        {
          "ageQualifyingCode": 10,
          "numberOfGuests": 2,
          "amountBeforeTax": 200,
          "amountAfterTax": 220
        },
        {
          "ageQualifyingCode": 8,
          "numberOfGuests": 1,
          "amountBeforeTax": 20,
          "amountAfterTax": 22
        }
      ]
    },
    {
      "startDate": "2021-02-21",
      "endDate": "2021-02-23",
      "baseByGuestAmts": [{
          "ageQualifyingCode": 10,
          "numberOfGuests": 1,
          "amountBeforeTax": 300,
          "amountAfterTax": 330
        },
        {
          "ageQualifyingCode": 10,
          "numberOfGuests": 2,
          "amountBeforeTax": 600,
          "amountAfterTax": 660
        }
      ]
    }
  ]
}

Response-Success

{
  "header": {
    "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e",
    "timeStamp": "2018-06-27T17:09:04.674Z",
    "version": "0.1"
  }
}

Response-Error

{
  "header": {
    "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e",
    "timeStamp": "2018-06-27T17:09:04.674Z",
    "version": "0.1"
  },
  "errorCode": "InvalidField",
  "errorMessage": "Invalid token"
}


1.3 Delete rates from 1/23 to 2/23 on specific room type and rate plan.

The rates of King and BAR from 1/23 to 2/23 will be removed in DerbySoft Property Connector.


Request

{
  "header": {
    "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e",
    "timeStamp": "2018-06-27T17:09:04.674Z",
    "version": "0.1"
  },
  "hotelId": "FSDH",
  "roomId": "King",
  "rateId": "BAR",
  "startDate": "2021-01-23",
  "endDate": "2021-02-23",
  "type": "Overlay",
  "currencyCode": "USD",
  "rates": []
}

Response-Success

{
  "header": {
    "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e",
    "timeStamp": "2018-06-27T17:09:04.674Z",
    "version": "0.1"
  }
}

Response-Error

{
  "header": {
    "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e",
    "timeStamp": "2018-06-27T17:09:04.674Z",
    "version": "0.1"
  },
  "errorCode": "InvalidField",
  "errorMessage": "Invalid token"
}



Update Inventory

This API is used to update the inventories for one room type of a single property. If there are multiple room types modified at the same time, your PMS has to split them into batch messages and send them to DerbySoft to avoid a large-size single message.

POST /pcapigateway/tunnel/{acountId}/inventory HTTP/1.1
Authorization: Bearer 53ac07777cdffac2d53000002d698728ce964432d7167596bc005c5fc
Accept-Encoding: gzip
Content-Encoding: gzip
Content-Type: application/json;charset=utf-8


Request Schema

Element

Type

Occurrence

Description

Comment

hotelId

String

Mandatory

Hotel unique id of PMS

/

roomId

String

Mandatory

Room type id of PMS

/

startDate

Date: yyyy-MM-dd

Mandatory

Start date of the affected inventories to be applied in the database

/

endDate

Date: yyyy-MM-dd

Mandatory

Start date of the affected inventories to be applied in the database

/

type

Enum
- Delta
- Overlay

Mandatory

  1. Delta: DerbySoft only update the inventories in the message, and keep other inventories in the database without change. It normally used for pushing inventory changes to DerbySoft.

  2. Overlay: DerbySoft will perform delete and insert operations into the database. It normally used for a full refresh from PMS while launching a new property or manual refresh by property in PMS system.

Please refer the section for more details

inventories

List[inventories]

Mandatory

Daily Inventory List
/

inventories/startDate

Date: yyyy-MM-dd

Mandatory

Start date

/

inventories/endDate

Date: yyyy-MM-dd

Mandatory

End date

/

inventories/availableInvCount

Integer

Mandatory

Avail inventory count

/


Example

2.1 Update inventory changes from 1/23 to 2/23.

There are inventory changes that occurred on the room type King from 1/23 to 2/23. Inside this date range, It’s changed on two date ranges of 1/23 to 1/25 and 2/3 to 2/23. The other dates are not changed.


Request

{
  "header": {
    "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e",
    "timeStamp": "2018-06-27T17:09:04.674Z",
    "version": "0.1"
  },
  "hotelId": "FSDH",
  "roomId": "King",
  "startDate": "2021-01-23",
  "endDate": "2021-02-23",
  "type": "Delta",
  "inventories": [
    {
      "startDate": "2021-01-23",
      "endDate": "2021-01-25",
      "availableInvCount": 10
    },
    {
      "startDate": "2021-02-03",
      "endDate": "2021-02-23",
      "availableInvCount": 50
    }
  ]
}

Response-Success

{
  "header": {
    "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e",
    "timeStamp": "2018-06-27T17:09:04.674Z",
    "version": "0.1"
  }
}

Response-Error

{
  "header": {
    "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e",
    "timeStamp": "2018-06-27T17:09:04.674Z",
    "version": "0.1"
  },
  "errorCode": "InvalidField",
  "errorMessage": "Invalid token"
}


2.2 Full refresh inventory from 1/23 to 2/23.

The whole inventories of room type King from 1/23 to 2/23 will be pushed out to DerbySoft. There are two inventories on two date ranges: one is from 1/23 to 2/20 and another one is from 2/21 to 2/23.


Request

{
  "header": {
    "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e",
    "timeStamp": "2018-06-27T17:09:04.674Z",
    "version": "0.1"
  },
  "hotelId": "FSDH",
  "roomId": "King",
  "startDate": "2021-01-23",
  "endDate": "2021-02-23",
  "type": "Overlay",
  "inventories": [
    {
      "startDate": "2021-01-23",
      "endDate": "2021-02-20",
      "availableInvCount": 10
    },
    {
      "startDate": "2021-02-21",
      "endDate": "2021-02-23",
      "availableInvCount": 50
    }
  ]
}

Response-Success

{
  "header": {
    "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e",
    "timeStamp": "2018-06-27T17:09:04.674Z",
    "version": "0.1"
  }
}

Response-Error

{
  "header": {
    "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e",
    "timeStamp": "2018-06-27T17:09:04.674Z",
    "version": "0.1"
  },
  "errorCode": "InvalidField",
  "errorMessage": "Invalid token"
}


2.3 Delete inventories from 1/23 to 2/23 on specific room type.

The inventories of King from 1/23 to 2/23 will be removed in DerbySoft Property Connector.


Request

{
  "header": {
    "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e",
    "timeStamp": "2018-06-27T17:09:04.674Z",
    "version": "0.1"
  },
  "hotelId": "FSDH",
  "roomId": "King",
  "startDate": "2021-01-23",
  "endDate": "2021-02-23",
  "type": "Overlay",
  "inventories": []
}

Response-Success

{
  "header": {
    "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e",
    "timeStamp": "2018-06-27T17:09:04.674Z",
    "version": "0.1"
  }
}

Response-Error

{
  "header": {
    "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e",
    "timeStamp": "2018-06-27T17:09:04.674Z",
    "version": "0.1"
  },
  "errorCode": "InvalidField",
  "errorMessage": "Invalid token"
}



Update Availability

This API is used to update the availabilities by four levels for a single property. If there are multiple availabilities modified at the same time, your PMS has to split them into batch messages and send them to DerbySoft to avoid a large-size single message.

POST /pcapigateway/tunnel/{acountId}/availability HTTP/1.1
Authorization: Bearer 53ac07777cdffac2d53000002d698728ce964432d7167596bc005c5fc
Accept-Encoding: gzip
Content-Encoding: gzip
Content-Type: application/json;charset=utf-8


Request Schema

Element

Type

Occurrence

Description

Comment

hotelId

String

Mandatory

Hotel unique id of PMS

/

roomId

String

Optional

Room type id of PMS

/

rateId

String

Optional

Rate plan id of PMS

/

startDate

Date:yyyy-MM-dd

Mandatory

Start date

/

endDate

Date:yyyy-MM-dd

Mandatory

End date

Include end date

type

Enum
- Delta
- Overlay

Mandatory

  1. Delta: DerbySoft only update the availabilities in the message, and keep other availabilities in the database without change. It normally used for pushing availability changes to DerbySoft.

  2. Overlay: DerbySoft will perform delete and insert operations into the database. It normally used for a full refresh from PMS while launching a new property or manual refresh by property in PMS system.

Please refer the section for more details

restrictions

List[restrictions]

Mandatory

Daily Restriction List
/

restrictions

/startDate

Date: yyyy-MM-dd

Mandatory

//

restrictions

/endDate

Date: yyyy-MM-dd

Mandatory

//

restrictions

/restriction

Object[restriction]

//

restrictions

/masterClose

Boolean

Mandatory

A boolean value indicates open or close

/

restrictions

/closedToArrival

Boolean

Mandatory

A boolean value of closed to arrival, which indicates whether available on the checkin

/

restrictions

/closedToDeparture

Boolean

Mandatory

A boolean value of closed to departure, which indicates whether available on the checkout

/

restrictions

/maxStayThrough

Integer

Mandatory

The maximum number of nights the guest may stay if any part of the reservation touches the specific date.

0 by default means no restriction on this.

/

restrictions

/minStayThrough

Integer

Mandatory

The minimum number of nights the guest must stay if any part of the reservation touches the specific date.

0 by default means no restriction on this.

/

restrictions

/maxStayArrival

Integer

Mandatory

The maximum number of nights the guest can stay if this date is the requested arrival date.

0 by default means no restriction on this.

/

restrictions

/minStayArrival

Integer

Mandatory

The minimum number of nights the guest must stay if this date is the requested arrival date.

0 by default means no restriction on this.

/

restrictions

/maxAdvanceDay

Integer

Mandatory

The maximum number of days that a reservation arriving on this date can be booked in advance.

0 by default means no restriction on this.

/

Restriction/minAdvanceDay

Integer

Mandatory

The minimum number of days that a reservation arriving on this date must be booked in advance.

0 by default means no restriction on this.

/


The four levels of availability are listed below:

  • Hotel level: The only hotelId is specific in the message, roomId and rateId are empty. It’s optional if your PMS doesn’t support this level.

  • Rate plan level: HotelId and rateId are specific in the message, and the roomId is empty. It’s optional if your PMS doesn’t support this level.

  • Room type level: HotelId and roomId are specific in the message, and rateId is empty. It’s optional if your PMS doesn’t support this level.

  • Product level: HotelId, roomId, and rateId are all specific in the message. It’s mandatory to implement.
Note:
DerbySoft Property Connector store all the availabilities by the four levels separately, but calculate them to the final ones. You could refer to the logic below for each restriction). 

This design is base on some PMS systems can manage the availabilities in a complicated way, and it’s NOT necessary for you to implement them all. You should pick them up if your PMS has the same way.

Restriction

Hotel level

Rate plan level

Room type  level

Product (Room type x Rate plan) level

Expression (Room type x Rate plan)

masterClose

$1

$2

$3

$4

masterClose = $1 || $2 || $3 || $4

closedToArrival

$1

$2

$3

$4

closedToArrival = $1 || $2 || $3 || $4

closedToDeparture

$1

$2

$3

$4

closedToDeparture = $1 || $2 || $3 || $4

maxStayThrough

$1

$2

$3

$4

maxStayThrough = Min($1, $2, $3, $4)

minStayThrough

$1

$2

$3

$4

minStayThrough = Max($1, $2, $3, $4)

maxStayArrival

$1

$2

$3

$4

maxStayArrival = Min($1, $2, $3, $4)

minStayArrival

$1

$2

$3

$4

minStayArrival = Max($1, $2, $3, $4)

maxAdvanceDay

$1

$2

$3

$4

maxAdvanceDay = Min($1, $2, $3, $4)

minAdvanceDay

$1

$2

$3

$4

minAdvanceDay = Max($1, $2, $3, $4)


Example

3.1 Update availability changes from 1/23 to 2/23 for one product (one specific room type and rate plan).

There are availability changes that occurred on King + BAR from 1/23 to 2/23. Inside this date range, it’s changed on two date ranges of 1/23 to 1/25 and 2/20 to 2/23. The other dates are not changed.


Request

{
  "header": {
    "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e",
    "timeStamp": "2018-06-27T17:09:04.674Z",
    "version": "0.1"
  },
  "hotelId": "FSDH",
  "roomId": "King",
  "rateId": "BAR",
  "startDate": "2021-01-23",
  "endDate": "2021-02-23",
  "type": "Delta",
  "restrictions": [
    {
      "startDate": "2021-01-23",
      "endDate": "2021-01-25",
      "restriction": {
        "masterClose": true,
        "closedToArrival": false,
        "closedToDeparture": false,
        "maxStayThrough": 0,
        "minStayThrough": 0,
        "maxStayArrival": 0,
        "minStayArrival": 0,
        "maxAdvanceDay": 0,
        "minAdvanceDay": 0
      }
    },
    {
      "startDate": "2021-02-20",
      "endDate": "2021-02-23",
      "restriction": {
        "masterClose": false,
        "closedToArrival": true,
        "closedToDeparture": true,
        "maxStayThrough": 0,
        "minStayThrough": 2,
        "maxStayArrival": 0,
        "minStayArrival": 2,
        "maxAdvanceDay": 0,
        "minAdvanceDay": 0
      }
    }
  ]
}

Response-Success

{
  "header": {
    "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e",
    "timeStamp": "2018-06-27T17:09:04.674Z",
    "version": "0.1"
  }
}

Response-Error

{
  "header": {
    "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e",
    "timeStamp": "2018-06-27T17:09:04.674Z",
    "version": "0.1"
  },
  "errorCode": "InvalidField",
  "errorMessage": "Invalid token"
}


3.2 Full refresh product level availability from 1/23 to 2/23.

The whole availability of room type King and rate plan BAR from 1/23 to 2/23 will be pushed out to DerbySoft. There are two availabilities on two date ranges: one is from 1/23 to 2/20 and another one is from 2/21 to 2/23.


Request

{
  "header": {
    "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e",
    "timeStamp": "2018-06-27T17:09:04.674Z",
    "version": "0.1"
  },
  "hotelId": "FSDH",
  "roomId": "King",
  "rateId": "BAR",
  "startDate": "2021-01-23",
  "endDate": "2021-02-23",
  "type": "Overlay",
  "restrictions": [
    {
      "startDate": "2021-01-23",
      "endDate": "2021-02-20",
      "restriction": {
        "masterClose": false,
        "closedToArrival": false,
        "closedToDeparture": false,
        "maxStayThrough": 0,
        "minStayThrough": 0,
        "maxStayArrival": 0,
        "minStayArrival": 0,
        "maxAdvanceDay": 0,
        "minAdvanceDay": 0
      }
    },
    {
      "startDate": "2021-02-21",
      "endDate": "2021-02-23",
      "restriction": {
        "masterClose": false,
        "closedToArrival": false,
        "closedToDeparture": false,
        "maxStayThrough": 0,
        "minStayThrough": 2,
        "maxStayArrival": 0,
        "minStayArrival": 2,
        "maxAdvanceDay": 0,
        "minAdvanceDay": 0
      }
    }
  ]

Response-Success

{
  "header": {
    "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e",
    "timeStamp": "2018-06-27T17:09:04.674Z",
    "version": "0.1"
  }
}

Response-Error

{
  "header": {
    "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e",
    "timeStamp": "2018-06-27T17:09:04.674Z",
    "version": "0.1"
  },
  "errorCode": "InvalidField",
  "errorMessage": "Invalid token"
}


3.3 Delete availabilities from 1/23 to 2/23 for one product (one specific room type and rate plan).

The availabilities of King and BAR from 1/23 to 2/23 will be clean in DerbySoft Property Connector.


Request

{
  "header": {
    "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e",
    "timeStamp": "2018-06-27T17:09:04.674Z",
    "version": "0.1"
  },
  "hotelId": "FSDH",
  "roomId": "King",
  "rateId": "BAR",
  "startDate": "2021-01-23",
  "endDate": "2021-02-23",
  "type": "Overlay",
  "restrictions": []
}

Response-Success

{
  "header": {
    "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e",
    "timeStamp": "2018-06-27T17:09:04.674Z",
    "version": "0.1"
  }
}

Response-Error

{
  "header": {
    "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e",
    "timeStamp": "2018-06-27T17:09:04.674Z",
    "version": "0.1"
  },
  "errorCode": "InvalidField",
  "errorMessage": "Invalid token"
}


3.4 Full refresh hotel level availability from 1/23 to 2/23.

The whole hotel level availability from 1/23 to 2/23 will be pushed out to DerbySoft. This case will show you how to close out all availability by two date rage: one is from 1/23 to 1/25, another is from 2/22 to 2/23.


Request

{
  "header": {
    "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e",
    "timeStamp": "2018-06-27T17:09:04.674Z",
    "version": "0.1"
  },
  "hotelId": "FSDH",
  "startDate": "2021-01-23",
  "endDate": "2021-02-23",
  "type": "Overlay",
  "restrictions": [
    {
      "startDate": "2021-01-23",
      "endDate": "2021-01-25",
      "restriction": {
        "masterClose": true,
        "closedToArrival": false,
        "closedToDeparture": false,
        "maxStayThrough": 0,
        "minStayThrough": 0,
        "maxStayArrival": 0,
        "minStayArrival": 0,
        "maxAdvanceDay": 0,
        "minAdvanceDay": 0
      }
    },
    {
      "startDate": "2021-02-22",
      "endDate": "2021-02-23",
      "restriction": {
        "masterClose": true,
        "closedToArrival": false,
        "closedToDeparture": false,
        "maxStayThrough": 0,
        "minStayThrough": 0,
        "maxStayArrival": 0,
        "minStayArrival": 0,
        "maxAdvanceDay": 0,
        "minAdvanceDay": 0
      }
    }
  ]
}

Response-Success

{
  "header": {
    "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e",
    "timeStamp": "2018-06-27T17:09:04.674Z",
    "version": "0.1"
  }
}

Response-Error

{
  "header": {
    "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e",
    "timeStamp": "2018-06-27T17:09:04.674Z",
    "version": "0.1"
  },
  "errorCode": "InvalidField",
  "errorMessage": "Invalid token"
}


3.5 Full refresh room type level availability from 1/23 to 2/23.

The whole room level availability from 1/23 to 2/23 will be pushed out to DerbySoft. This case will show you how to close out all availability for specific room type by two date rage: one is from 1/23 to 1/25, another is from 2/22 to 2/23.


Request

{
  "header": {
    "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e",
    "timeStamp": "2018-06-27T17:09:04.674Z",
    "version": "0.1"
  },
  "hotelId": "FSDH",
  "roomId": "King",
  "startDate": "2021-01-23",
  "endDate": "2021-02-23",
  "type": "Overlay",
  "restrictions": [
    {
      "startDate": "2021-01-23",
      "endDate": "2021-01-25",
      "restriction": {
        "masterClose": true,
        "closedToArrival": false,
        "closedToDeparture": false,
        "maxStayThrough": 0,
        "minStayThrough": 0,
        "maxStayArrival": 0,
        "minStayArrival": 0,
        "maxAdvanceDay": 0,
        "minAdvanceDay": 0
      }
    },
    {
      "startDate": "2021-02-22",
      "endDate": "2021-02-23",
      "restriction": {
        "masterClose": true,
        "closedToArrival": false,
        "closedToDeparture": false,
        "maxStayThrough": 0,
        "minStayThrough": 0,
        "maxStayArrival": 0,
        "minStayArrival": 0,
        "maxAdvanceDay": 0,
        "minAdvanceDay": 0
      }
    }
  ]
}

Response-Success

{
  "header": {
    "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e",
    "timeStamp": "2018-06-27T17:09:04.674Z",
    "version": "0.1"
  }
}

Response-Error

{
  "header": {
    "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e",
    "timeStamp": "2018-06-27T17:09:04.674Z",
    "version": "0.1"
  },
  "errorCode": "InvalidField",
  "errorMessage": "Invalid token"
}


3.6 Full refresh rate plan level availability from 1/23 to 2/23.

The whole rate plan level availability from 1/23 to 2/23 will be pushed out to DerbySoft. This case will show you how to close out all availability for a specific rate plan by two date rage: one is from 1/23 to 1/25, another is from 2/22 to 2/23.


Request

{
  "header": {
    "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e",
    "timeStamp": "2018-06-27T17:09:04.674Z",
    "version": "0.1"
  },
  "hotelId": "FSDH",
  "rateId": "BAR",
  "startDate": "2021-01-23",
  "endDate": "2021-02-23",
  "type": "Overlay",
  "restrictions": [
    {
      "startDate": "2021-01-23",
      "endDate": "2021-01-25",
      "restriction": {
        "masterClose": true,
        "closedToArrival": false,
        "closedToDeparture": false,
        "maxStayThrough": 0,
        "minStayThrough": 0,
        "maxStayArrival": 0,
        "minStayArrival": 0,
        "maxAdvanceDay": 0,
        "minAdvanceDay": 0
      }
    },
    {
      "startDate": "2021-02-22",
      "endDate": "2021-02-23",
      "restriction": {
        "masterClose": true,
        "closedToArrival": false,
        "closedToDeparture": false,
        "maxStayThrough": 0,
        "minStayThrough": 0,
        "maxStayArrival": 0,
        "minStayArrival": 0,
        "maxAdvanceDay": 0,
        "minAdvanceDay": 0
      }
    }
  ]
}

Response-Success

{
  "header": {
    "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e",
    "timeStamp": "2018-06-27T17:09:04.674Z",
    "version": "0.1"
  }
}

Response-Error

{
  "header": {
    "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e",
    "timeStamp": "2018-06-27T17:09:04.674Z",
    "version": "0.1"
  },
  "errorCode": "InvalidField",
  "errorMessage": "Invalid token"
}


3.7 Update availability changes from 1/23 to 2/23 on the hotel level.

There are availability changes that occurred on the hotel level from 1/23 to 2/23. Inside this date range, It’s changed on two date ranges of 1/23 to 1/25 and 2/20 to 2/23. The other dates are not changed.


Request

{
  "header": {
    "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e",
    "timeStamp": "2018-06-27T17:09:04.674Z",
    "version": "0.1"
  },
  "hotelId": "FSDH",
  "startDate": "2021-01-23",
  "endDate": "2021-02-23",
  "type": "Delta",
  "restrictions": [
    {
      "startDate": "2021-01-23",
      "endDate": "2021-01-25",
      "restriction": {
        "masterClose": false,
        "closedToArrival": false,
        "closedToDeparture": false,
        "maxStayThrough": 0,
        "minStayThrough": 0,
        "maxStayArrival": 0,
        "minStayArrival": 0,
        "maxAdvanceDay": 0,
        "minAdvanceDay": 0
      }
    },
    {
      "startDate": "2021-02-20",
      "endDate": "2021-02-23",
      "restriction": {
        "masterClose": true,
        "closedToArrival": false,
        "closedToDeparture": false,
        "maxStayThrough": 0,
        "minStayThrough": 0,
        "maxStayArrival": 0,
        "minStayArrival": 0,
        "maxAdvanceDay": 0,
        "minAdvanceDay": 0
      }
    }
  ]
}

Response-Success

{
  "header": {
    "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e",
    "timeStamp": "2018-06-27T17:09:04.674Z",
    "version": "0.1"
  }
}

Response-Error

{
  "header": {
    "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e",
    "timeStamp": "2018-06-27T17:09:04.674Z",
    "version": "0.1"
  },
  "errorCode": "InvalidField",
  "errorMessage": "Invalid token"
}


3.8 Update availability changes from 1/23 to 2/23 on the room type level.

There are availability changes that occurred on King from 1/23 to 2/23. Inside this date range, It’s changed on two date ranges of 1/23 to 1/25 and 2/20 to 2/23. The other dates are not changed.


Request

{
  "header": {
    "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e",
    "timeStamp": "2018-06-27T17:09:04.674Z",
    "version": "0.1"
  },
  "hotelId": "FSDH",
  "roomId": "King",
  "startDate": "2021-01-23",
  "endDate": "2021-02-23",
  "type": "Delta",
  "restrictions": [
    {
      "startDate": "2021-01-23",
      "endDate": "2021-01-25",
      "restriction": {
        "masterClose": false,
        "closedToArrival": false,
        "closedToDeparture": false,
        "maxStayThrough": 0,
        "minStayThrough": 0,
        "maxStayArrival": 0,
        "minStayArrival": 0,
        "maxAdvanceDay": 0,
        "minAdvanceDay": 0
      }
    },
    {
      "startDate": "2021-02-20",
      "endDate": "2021-02-23",
      "restriction": {
        "masterClose": true,
        "closedToArrival": false,
        "closedToDeparture": false,
        "maxStayThrough": 0,
        "minStayThrough": 0,
        "maxStayArrival": 0,
        "minStayArrival": 0,
        "maxAdvanceDay": 0,
        "minAdvanceDay": 0
      }
    }
  ]
}

Response-Success

{
  "header": {
    "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e",
    "timeStamp": "2018-06-27T17:09:04.674Z",
    "version": "0.1"
  }
}

Response-Error

{
  "header": {
    "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e",
    "timeStamp": "2018-06-27T17:09:04.674Z",
    "version": "0.1"
  },
  "errorCode": "InvalidField",
  "errorMessage": "Invalid token"
}


3.9 Update availability changes from 1/23 to 2/23 on rate plan level.

There are availability changes that occurred on BAR from 1/23 to 2/23. Inside this date range, It’s changed on two date ranges of 1/23 to 1/25 and 2/20 to 2/23. The other dates are not changed.


Request

{
  "header": {
    "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e",
    "timeStamp": "2018-06-27T17:09:04.674Z",
    "version": "0.1"
  },
  "hotelId": "FSDH",
  "rateId": "BAR",
  "startDate": "2021-01-23",
  "endDate": "2021-02-23",
  "type": "Delta",
  "restrictions": [
    {
      "startDate": "2021-01-23",
      "endDate": "2021-01-25",
      "restriction": {
        "masterClose": false,
        "closedToArrival": false,
        "closedToDeparture": false,
        "maxStayThrough": 0,
        "minStayThrough": 0,
        "maxStayArrival": 0,
        "minStayArrival": 0,
        "maxAdvanceDay": 0,
        "minAdvanceDay": 0
      }
    },
    {
      "startDate": "2021-02-20",
      "endDate": "2021-02-23",
      "restriction": {
        "masterClose": true,
        "closedToArrival": false,
        "closedToDeparture": false,
        "maxStayThrough": 0,
        "minStayThrough": 0,
        "maxStayArrival": 0,
        "minStayArrival": 0,
        "maxAdvanceDay": 0,
        "minAdvanceDay": 0
      }
    }
  ]
}

Response-Success

{
  "header": {
    "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e",
    "timeStamp": "2018-06-27T17:09:04.674Z",
    "version": "0.1"
  }
}

Response-Error

{
  "header": {
    "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e",
    "timeStamp": "2018-06-27T17:09:04.674Z",
    "version": "0.1"
  },
  "errorCode": "InvalidField",
  "errorMessage": "Invalid token"
}


3.10 Delete availabilities from 1/23 to 2/23 on the hotel level.

The availabilities of the hotel level from 1/23 to 2/23 will be clean in DerbySoft Property Connector.


Request

{
  "header": {
    "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e",
    "timeStamp": "2018-06-27T17:09:04.674Z",
    "version": "0.1"
  },
  "hotelId": "FSDH",
  "startDate": "2021-01-23",
  "endDate": "2021-02-23",
  "type": "Overlay",
  "restrictions": []
}

Response-Success

{
  "header": {
    "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e",
    "timeStamp": "2018-06-27T17:09:04.674Z",
    "version": "0.1"
  }
}

Response-Error

{
  "header": {
    "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e",
    "timeStamp": "2018-06-27T17:09:04.674Z",
    "version": "0.1"
  },
  "errorCode": "InvalidField",
  "errorMessage": "Invalid token"
}


3.11 Delete availabilities from 1/23 to 2/23 on the room type level.

The availabilities of room type level from 1/23 to 2/23 will be clean in DerbySoft Property Connector.


Request

{
  "header": {
    "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e",
    "timeStamp": "2018-06-27T17:09:04.674Z",
    "version": "0.1"
  },
  "hotelId": "FSDH",
  "roomId": "King",
  "startDate": "2021-01-23",
  "endDate": "2021-02-23",
  "type": "Overlay",
  "restrictions": []
}

Response-Success

{
  "header": {
    "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e",
    "timeStamp": "2018-06-27T17:09:04.674Z",
    "version": "0.1"
  }
}

Response-Error

{
  "header": {
    "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e",
    "timeStamp": "2018-06-27T17:09:04.674Z",
    "version": "0.1"
  },
  "errorCode": "InvalidField",
  "errorMessage": "Invalid token"
}


3.12 Delete availabilities from 1/23 to 2/23 on rate plan level.

The availabilities of the rate plan level from 1/23 to 2/23 will be clean in DerbySoft Property Connector.


Request

{
  "header": {
    "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e",
    "timeStamp": "2018-06-27T17:09:04.674Z",
    "version": "0.1"
  },
  "hotelId": "FSDH",
  "rateId": "BAR",
  "startDate": "2021-01-23",
  "endDate": "2021-02-23",
  "type": "Overlay",
  "restrictions": []
}

Response-Success

{
  "header": {
    "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e",
    "timeStamp": "2018-06-27T17:09:04.674Z",
    "version": "0.1"
  }
}

Response-Error

{
  "header": {
    "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e",
    "timeStamp": "2018-06-27T17:09:04.674Z",
    "version": "0.1"
  },
  "errorCode": "InvalidField",
  "errorMessage": "Invalid token"
}



Delta vs Overlay

There are two major scenarios for the ARI messages exchanging between your PMS and DerbySoft Property Connector.

  •  Overlay focus on a full refresh trigger by your PMS such as launching a new property to our product or fixing an out-of-sync issue. In this case, DerbySoft Property Connector will clean all data by the specific date range and store the messages into our database. 
  • Delta is mostly used for a regular process to receive the ARI changes from your PMS.
    For example, there are three products A, B and C in our database. If your PMS pushes us A and D with Overlay indicator, our system will clean A, B and C but only store A and D into the database, so that we only have A and D after the updating. If you push us A and D with the Delta indicator, our system will update A and insert D into the database, so that we have A, B, C and D in the database.