ARI
Modified on: 2024-11-29 19:00
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.
- Update Rate: to receive updates for rate from your PMS.
- Update Inventory: to receive updates for inventory from your PMS.
- 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 | Mandatory |
| 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 |
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 which include tax
There is a rate change which includes tax for King from 3/1 to 3/31, the rate plan is BARN.
Request
{ "header": { "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e", "timeStamp": "2021-01-10T17:09:04.674Z", "version": "0.1" }, "hotelId": "FSDH", "roomId": "King", "rateId": "BARN", "startDate": "2021-03-01", "endDate": "2021-03-31", "type": "Delta", "currencyCode": "USD", "rates": [ { "startDate": "2021-03-01", "endDate": "2021-03-31", "baseByGuestAmts": [ { "ageQualifyingCode": 10, "numberOfGuests": 1, "amountAfterTax": 120 }, { "ageQualifyingCode": 10, "numberOfGuests": 2, "amountAfterTax": 120 } ] } ] }
Response-Success
{ "header": { "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e", "timeStamp": "2021-01-10T17:09:04.674Z", "version": "0.1" } }
Response-Error
{ "header": { "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e", "timeStamp": "2021-01-10T17:09:04.674Z", "version": "0.1" }, "errorCode": "InvalidField", "errorMessage": "Invalid token" }
1.2 Update rate changes which exclude tax
There is a rate change which excludes tax for King (2 persons) from 3/1 to 3/31, the rate plan is BAR.
Request
{ "header": { "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e", "timeStamp": "2021-01-10T17:09:04.674Z", "version": "0.1" }, "hotelId": "FSDH", "roomId": "King", "rateId": "BAR", "startDate": "2021-03-01", "endDate": "2021-03-31", "type": "Delta", "currencyCode": "USD", "rates": [ { "startDate": "2021-03-01", "endDate": "2021-03-31", "baseByGuestAmts": [ { "ageQualifyingCode": 10, "numberOfGuests": 1, "amountBeforeTax": 100 }, { "ageQualifyingCode": 10, "numberOfGuests": 2, "amountBeforeTax": 100 } ] } ] }
Response-Success
{ "header": { "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e", "timeStamp": "2021-01-10T17:09:04.674Z", "version": "0.1" } }
Response-Error
{ "header": { "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e", "timeStamp": "2021-01-10T17:09:04.674Z", "version": "0.1" }, "errorCode": "InvalidField", "errorMessage": "Invalid token" }
1.3 Update rate changes and upload both rate include tax and rate exclude tax
There is a rate change and uploads both rate include tax and rate exclude tax for King (2 persons) from 3/1 to 3/31, the rate plan is BAR and room service charge and tax is 10%.
Request
{ "header": { "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e", "timeStamp": "2021-01-10T17:09:04.674Z", "version": "0.1" }, "hotelId": "FSDH", "roomId": "King", "rateId": "BAR", "startDate": "2021-03-01", "endDate": "2021-03-31", "type": "Delta", "currencyCode": "USD", "rates": [ { "startDate": "2021-03-01", "endDate": "2021-03-31", "baseByGuestAmts": [ { "ageQualifyingCode": 10, "numberOfGuests": 1, "amountAfterTax": 132, "amountBeforeTax": 120 }, { "ageQualifyingCode": 10, "numberOfGuests": 2, "amountAfterTax": 132, "amountBeforeTax": 120 } ] } ] }
Response-Success
{ "header": { "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e", "timeStamp": "2021-01-10T17:09:04.674Z", "version": "0.1" } }
Response-Error
{ "header": { "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e", "timeStamp": "2021-01-10T17:09:04.674Z", "version": "0.1" }, "errorCode": "InvalidField", "errorMessage": "Invalid token" }
1.4 Update rate changes on specific room type which max occupancy is three persons
There is a rate change for King (3 persons) from 3/1 to 3/31, the rate plan is BARN, the rate is based on 3 persons and includes tax.
Request
{ "header": { "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e", "timeStamp": "2021-01-10T17:09:04.674Z", "version": "0.1" }, "hotelId": "FSDH", "roomId": "King", "rateId": "BARN", "startDate": "2021-03-01", "endDate": "2021-03-31", "type": "Delta", "currencyCode": "USD", "rates": [ { "startDate": "2021-03-01", "endDate": "2021-03-31", "baseByGuestAmts": [ { "ageQualifyingCode": 10, "numberOfGuests": 1, "amountAfterTax": 132 }, { "ageQualifyingCode": 10, "numberOfGuests": 2, "amountAfterTax": 132 }, { "ageQualifyingCode": 10, "numberOfGuests": 3, "amountAfterTax": 132 } ] } ] }
Response-Success
{ "header": { "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e", "timeStamp": "2021-01-10T17:09:04.674Z", "version": "0.1" } }
Response-Error
{ "header": { "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e", "timeStamp": "2021-01-10T17:09:04.674Z", "version": "0.1" }, "errorCode": "InvalidField", "errorMessage": "Invalid token" }
There is a rate change for King (3 persons) from 3/1 to 3/31, the rate plan is BARN, the rate is based on occupancy and includes tax.
Request
{ "header": { "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e", "timeStamp": "2021-01-10T17:09:04.674Z", "version": "0.1" }, "hotelId": "FSDH", "roomId": "King", "rateId": "BARN", "startDate": "2021-03-01", "endDate": "2021-03-31", "type": "Delta", "currencyCode": "USD", "rates": [ { "startDate": "2021-03-01", "endDate": "2021-03-31", "baseByGuestAmts": [ { "ageQualifyingCode": 10, "numberOfGuests": 1, "amountAfterTax": 132 }, { "ageQualifyingCode": 10, "numberOfGuests": 2, "amountAfterTax": 137.5 }, { "ageQualifyingCode": 10, "numberOfGuests": 3, "amountAfterTax": 143 } ] } ] }
Response-Success
{ "header": { "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e", "timeStamp": "2021-01-10T17:09:04.674Z", "version": "0.1" } }
Response-Error
{ "header": { "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e", "timeStamp": "2021-01-10T17:09:04.674Z", "version": "0.1" }, "errorCode": "InvalidField", "errorMessage": "Invalid token" }
1.5 Update rate changes which include additional person rate
There is a rate change for King (3 persons) from 3/1 to 3/31, the rate plan is BARN, the rate is based on 2 persons and includes tax, and 3rd person will be charges as additional person rate.
Request
{ "header": { "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e", "timeStamp": "2021-01-10T17:09:04.674Z", "version": "0.1" }, "hotelId": "FSDH", "roomId": "King", "rateId": "BARN", "startDate": "2021-03-01", "endDate": "2021-03-31", "type": "Delta", "currencyCode": "USD", "rates": [ { "startDate": "2021-03-01", "endDate": "2021-03-31", "baseByGuestAmts": [ { "ageQualifyingCode": 10, "numberOfGuests": 1, "amountAfterTax": 132 }, { "ageQualifyingCode": 10, "numberOfGuests": 2, "amountAfterTax": 132 } ], "additionalGuestAmounts": [ { "ageQualifyingCode": 10, "amountAfterTax": 7.5 } ] } ] }
Response-Success
{ "header": { "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e", "timeStamp": "2021-01-10T17:09:04.674Z", "version": "0.1" } }
Response-Error
{ "header": { "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e", "timeStamp": "2021-01-10T17:09:04.674Z", "version": "0.1" }, "errorCode": "InvalidField", "errorMessage": "Invalid token" }
1.6 Full refresh rate
The whole rates for King from 1/10 to 3/31 will be pushed out to DerbySoft. There are two rates, one is from 1/10 to 2/28 and another one is from 3/1 to 3/31. The rate plan is BARN, the rate is based on 3 persons and includes tax.
Request
{ "header": { "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e", "timeStamp": "2021-01-10T17:09:04.674Z", "version": "0.1" }, "hotelId": "FSDH", "roomId": "King", "rateId": "BARN", "startDate": "2021-01-10", "endDate": "2021-03-31", "type": "Overlay", "currencyCode": "USD", "rates": [ { "startDate": "2021-01-10", "endDate": "2021-02-28", "baseByGuestAmts": [ { "ageQualifyingCode": 10, "numberOfGuests": 1, "amountAfterTax": 120 }, { "ageQualifyingCode": 10, "numberOfGuests": 2, "amountAfterTax": 120 }, { "ageQualifyingCode": 10, "numberOfGuests": 3, "amountAfterTax": 120 } ] }, { "startDate": "2021-03-01", "endDate": "2021-03-31", "baseByGuestAmts": [ { "ageQualifyingCode": 10, "numberOfGuests": 1, "amountAfterTax": 130 }, { "ageQualifyingCode": 10, "numberOfGuests": 2, "amountAfterTax": 130 }, { "ageQualifyingCode": 10, "numberOfGuests": 3, "amountAfterTax": 130 } ] } ] }
Response-Success
{ "header": { "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e", "timeStamp": "2021-01-10T17:09:04.674Z", "version": "0.1" } }
Response-Error
{ "header": { "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e", "timeStamp": "2021-01-10T17:09:04.674Z", "version": "0.1" }, "errorCode": "InvalidField", "errorMessage": "Invalid token" }
1.7 Delete rates
The rates of King and BAR from 1/23 to 2/23 will be removed in DerbySoft Property Connect.
Request
{ "header": { "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e", "timeStamp": "2021-01-10T17: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": "2021-01-10T17:09:04.674Z", "version": "0.1" } }
Response-Error
{ "header": { "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e", "timeStamp": "2021-01-10T17: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 | Mandatory |
| 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": "2021-01-10T17: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": "2021-01-10T17:09:04.674Z", "version": "0.1" } }
Response-Error
{ "header": { "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e", "timeStamp": "2021-01-10T17: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": "2021-01-10T17: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": "2021-01-10T17:09:04.674Z", "version": "0.1" } }
Response-Error
{ "header": { "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e", "timeStamp": "2021-01-10T17: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": "2021-01-10T17: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": "2021-01-10T17:09:04.674Z", "version": "0.1" } }
Response-Error
{ "header": { "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e", "timeStamp": "2021-01-10T17: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 | Mandatory |
| 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 | Optional | A boolean value of closed to arrival, which indicates whether available on the checkin | / |
restrictions /closedToDeparture | Boolean | Optional | A boolean value of closed to departure, which indicates whether available on the checkout | / |
restrictions /maxStayThrough | Integer | Optional | The maximum number of nights the guest may stay if any part of the reservation touches the specific date.
| / |
restrictions /minStayThrough | Integer | Optional | The minimum number of nights the guest must stay if any part of the reservation touches the specific date.
| / |
restrictions /maxStayArrival | Integer | Optional | The maximum number of nights the guest can stay if this date is the requested arrival date.
| / |
restrictions /minStayArrival | Integer | Optional | The minimum number of nights the guest must stay if this date is the requested arrival date.
| / |
restrictions /maxAdvanceDay | Integer | Optional | The maximum number of days that a reservation arriving on this date can be booked in advance.
| / |
Restriction/minAdvanceDay | Integer | Optional | The minimum number of days that a reservation arriving on this date must be booked in advance.
| / |
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 (Close) on the product level
There is an availability change that ocurred on King + BAR from 1/23 to 1/25, the restriction is close.
Request
{ "header": { "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e", "timeStamp": "2021-01-10T17:09:04.674Z", "version": "0.1" }, "hotelId": "FSDH", "roomId": "King", "rateId": "BAR", "startDate": "2021-01-23", "endDate": "2021-01-25", "type": "Delta", "restrictions": [ { "startDate": "2021-01-23", "endDate": "2021-01-25", "restriction": { "masterClose": true } } ] }
Response-Success
{ "header": { "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e", "timeStamp": "2021-01-10T17:09:04.674Z", "version": "0.1" } }
Response-Error
{ "header": { "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e", "timeStamp": "2021-01-10T17:09:04.674Z", "version": "0.1" }, "errorCode": "InvalidField", "errorMessage": "Invalid token" }
3.2 Update availability change (Open) on the product level
There is an availability change that occured on King + BAR from 1/26 to 1/28, the restriction is open.
Request
{ "header": { "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e", "timeStamp": "2021-01-10T17:09:04.674Z", "version": "0.1" }, "hotelId": "FSDH", "roomId": "King", "rateId": "BAR", "startDate": "2021-01-26", "endDate": "2021-01-28", "type": "Delta", "restrictions": [ { "startDate": "2021-01-26", "endDate": "2021-01-28", "restriction": { "masterClose": false } } ] }
Response-Success
{ "header": { "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e", "timeStamp": "2021-01-10T17:09:04.674Z", "version": "0.1" } }
Response-Error
{ "header": { "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e", "timeStamp": "2021-01-10T17:09:04.674Z", "version": "0.1" }, "errorCode": "InvalidField", "errorMessage": "Invalid token" }
3.3 Update availability change (ClosedToArrival) on the product level
There is an availability change that occured on King + BAR from 1/29 to 1/31, the restriction is closed to arrival.
Request
{ "header": { "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e", "timeStamp": "2021-01-10T17:09:04.674Z", "version": "0.1" }, "hotelId": "FSDH", "roomId": "King", "rateId": "BAR", "startDate": "2021-01-29", "endDate": "2021-01-31", "type": "Delta", "restrictions": [ { "startDate": "2021-01-29", "endDate": "2021-01-31", "restriction": { "masterClose": false, "closedToArrival": true } } ] }
Response-Success
{ "header": { "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e", "timeStamp": "2021-01-10T17:09:04.674Z", "version": "0.1" } }
Response-Error
{ "header": { "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e", "timeStamp": "2021-01-10T17:09:04.674Z", "version": "0.1" }, "errorCode": "InvalidField", "errorMessage": "Invalid token" }
3.4 Update availability change (ClosedToDeparture) on the product level
There is an availability change that occured on King + BAR from 2/1 to 2/3, the restriction is closed to departure.
Request
{ "header": { "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e", "timeStamp": "2021-01-10T17:09:04.674Z", "version": "0.1" }, "hotelId": "FSDH", "roomId": "King", "rateId": "BAR", "startDate": "2021-02-01", "endDate": "2021-02-03", "type": "Delta", "restrictions": [ { "startDate": "2021-02-01", "endDate": "2021-02-03", "restriction": { "masterClose": false, "closedToDeparture": true } } ] }
Response-Success
{ "header": { "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e", "timeStamp": "2021-01-10T17:09:04.674Z", "version": "0.1" } }
Response-Error
{ "header": { "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e", "timeStamp": "2021-01-10T17:09:04.674Z", "version": "0.1" }, "errorCode": "InvalidField", "errorMessage": "Invalid token" }
3.5 Update availability change (Minimum Stay Arrival) on the product level
There is an availability change that occured on King + BAR from 2/4 to 2/6, the restriction is minimum stay arrival 3 days.
Request
{ "header": { "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e", "timeStamp": "2021-01-10T17:09:04.674Z", "version": "0.1" }, "hotelId": "FSDH", "roomId": "King", "rateId": "BAR", "startDate": "2021-02-04", "endDate": "2021-02-06", "type": "Delta", "restrictions": [ { "startDate": "2021-02-04", "endDate": "2021-02-06", "restriction": { "masterClose": false, "minStayArrival": 3 } } ] }
Response-Success
{ "header": { "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e", "timeStamp": "2021-01-10T17:09:04.674Z", "version": "0.1" } }
Response-Error
{ "header": { "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e", "timeStamp": "2021-01-10T17:09:04.674Z", "version": "0.1" }, "errorCode": "InvalidField", "errorMessage": "Invalid token" }
3.6 Update availability change (Maximum Stay Arrival) on the product level
There is an availability change that occured on King + BAR from 2/7 to 2/9, the restriction is maximum stay arrival 5 days.
Request
{ "header": { "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e", "timeStamp": "2021-01-10T17:09:04.674Z", "version": "0.1" }, "hotelId": "FSDH", "roomId": "King", "rateId": "BAR", "startDate": "2021-02-07", "endDate": "2021-02-09", "type": "Delta", "restrictions": [ { "startDate": "2021-02-07", "endDate": "2021-02-09", "restriction": { "masterClose": false, "maxStayArrival": 5 } } ] }
Response-Success
{ "header": { "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e", "timeStamp": "2021-01-10T17:09:04.674Z", "version": "0.1" } }
Response-Error
{ "header": { "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e", "timeStamp": "2021-01-10T17:09:04.674Z", "version": "0.1" }, "errorCode": "InvalidField", "errorMessage": "Invalid token" }
3.7 Update availability changes (Minimum Stay Through) on the product level
There is an availability change that occured on King + BAR from 2/10 to 2/12, the restriction is minimum stay through 3 days.
Request
{ "header": { "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e", "timeStamp": "2021-01-10T17:09:04.674Z", "version": "0.1" }, "hotelId": "FSDH", "roomId": "King", "rateId": "BAR", "startDate": "2021-02-10", "endDate": "2021-02-12", "type": "Delta", "restrictions": [ { "startDate": "2021-02-10", "endDate": "2021-02-12", "restriction": { "masterClose": false, "minStayThrough": 3 } } ] }
Response-Success
{ "header": { "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e", "timeStamp": "2021-01-10T17:09:04.674Z", "version": "0.1" } }
Response-Error
{ "header": { "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e", "timeStamp": "2021-01-10T17:09:04.674Z", "version": "0.1" }, "errorCode": "InvalidField", "errorMessage": "Invalid token" }
3.8 Update availability change (Maximum Stay Through) on the product level
There is an availability change that occured on King + BAR from 2/13 to 2/15, the restriction is maximum stay through 7 days.
Request
{ "header": { "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e", "timeStamp": "2021-01-10T17:09:04.674Z", "version": "0.1" }, "hotelId": "FSDH", "roomId": "King", "rateId": "BAR", "startDate": "2021-02-13", "endDate": "2021-02-15", "type": "Delta", "restrictions": [ { "startDate": "2021-02-13", "endDate": "2021-02-15", "restriction": { "masterClose": false, "maxStayThrough": 7 } } ] }
Response-Success
{ "header": { "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e", "timeStamp": "2021-01-10T17:09:04.674Z", "version": "0.1" } }
Response-Error
{ "header": { "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e", "timeStamp": "2021-01-10T17:09:04.674Z", "version": "0.1" }, "errorCode": "InvalidField", "errorMessage": "Invalid token" }
3.9 Update availability change (Minimum Advance Booking Day) on the product level
There is an availability change that occurred on King + BAR from 2/16 to 2/18. the restriction is minimum advance booking 3 days.
Request
{ "header": { "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e", "timeStamp": "2021-01-10T17:09:04.674Z", "version": "0.1" }, "hotelId": "FSDH", "roomId": "King", "rateId": "BAR", "startDate": "2021-02-16", "endDate": "2021-02-19", "type": "Delta", "restrictions": [ { "startDate": "2021-02-16", "endDate": "2021-02-19", "restriction": { "masterClose": false, "minAdvanceDay": 3 } } ] }
Response-Success
{ "header": { "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e", "timeStamp": "2021-01-10T17:09:04.674Z", "version": "0.1" } }
Response-Error
{ "header": { "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e", "timeStamp": "2021-01-10T17:09:04.674Z", "version": "0.1" }, "errorCode": "InvalidField", "errorMessage": "Invalid token" }
3.10 Update availability change (Maximum Advance Booking Day) on the product level
There is an availability change that occured on King + BAR from 2/19 to 2/20, the restriction is maximum advance booking 5 days.
Request
{ "header": { "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e", "timeStamp": "2021-01-10T17:09:04.674Z", "version": "0.1" }, "hotelId": "FSDH", "roomId": "King", "rateId": "BAR", "startDate": "2021-02-19", "endDate": "2021-02-20", "type": "Delta", "restrictions": [ { "startDate": "2021-02-19", "endDate": "2021-02-20", "restriction": { "masterClose": false, "maxAdvanceDay": 5 } } ] }
Response-Success
{ "header": { "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e", "timeStamp": "2021-01-10T17:09:04.674Z", "version": "0.1" } }
Response-Error
{ "header": { "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e", "timeStamp": "2021-01-10T17:09:04.674Z", "version": "0.1" }, "errorCode": "InvalidField", "errorMessage": "Invalid token" }
3.11 Full refresh product level availability
The whole availability of room type King and rate plan BAR from 1/23 to 2/20 will be pushed out to DerbySoft.
Request
{ "header": { "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e", "timeStamp": "2021-01-10T17:09:04.674Z", "version": "0.1" }, "hotelId": "FSDH", "roomId": "King", "rateId": "BAR", "startDate": "2021-01-23", "endDate": "2021-02-20", "type": "Overlay", "restrictions": [ { "startDate": "2021-01-23", "endDate": "2021-01-25", "restriction": { "masterClose": true } }, { "startDate": "2021-01-26", "endDate": "2021-01-28", "restriction": { "masterClose": false } }, { "startDate": "2021-01-29", "endDate": "2021-01-31", "restriction": { "masterClose": false, "closedToArrival": true } }, { "startDate": "2021-02-01", "endDate": "2021-02-03", "restriction": { "masterClose": false, "closedToDeparture": true } }, { "startDate": "2021-02-04", "endDate": "2021-02-06", "restriction": { "masterClose": false, "minStayArrival": 3 } }, { "startDate": "2021-02-07", "endDate": "2021-02-09", "restriction": { "masterClose": false, "maxStayArrival": 5 } }, { "startDate": "2021-02-10", "endDate": "2021-02-12", "restriction": { "masterClose": false, "minStayThrough": 3 } }, { "startDate": "2021-02-13", "endDate": "2021-02-15", "restriction": { "masterClose": false, "maxStayThrough": 7 } }, { "startDate": "2021-02-16", "endDate": "2021-02-18", "restriction": { "masterClose": false, "minAdvanceDay": 3 } }, { "startDate": "2021-02-19", "endDate": "2021-02-20", "restriction": { "masterClose": false, "maxAdvanceDay": 5 } } ] }
Response-Success
{ "header": { "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e", "timeStamp": "2021-01-10T17:09:04.674Z", "version": "0.1" } }
Response-Error
{ "header": { "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e", "timeStamp": "2021-01-10T17:09:04.674Z", "version": "0.1" }, "errorCode": "InvalidField", "errorMessage": "Invalid token" }
3.12 Update availability change (Close) on the hotel level
There is an availability change that occurred on the hotel level from 2/19 to 2/20. the restriction is close.
Request
{ "header": { "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e", "timeStamp": "2021-01-10T17:09:04.674Z", "version": "0.1" }, "hotelId": "FSDH", "startDate": "2021-02-19", "endDate": "2021-02-20", "type": "Delta", "restrictions": [ { "startDate": "2021-02-19", "endDate": "2021-02-20", "restriction": { "masterClose": true } } ] }
Response-Success
{ "header": { "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e", "timeStamp": "2021-01-10T17:09:04.674Z", "version": "0.1" } }
Response-Error
{ "header": { "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e", "timeStamp": "2021-01-10T17:09:04.674Z", "version": "0.1" }, "errorCode": "InvalidField", "errorMessage": "Invalid token" }
3.13 Full refresh hotel level availability
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 range: 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": "2021-01-10T17: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 } }, { "startDate": "2021-01-26", "endDate": "2021-02-21", "restriction": { "masterClose": false } }, { "startDate": "2021-02-22", "endDate": "2021-02-23", "restriction": { "masterClose": true } } ] }
Response-Success
{ "header": { "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e", "timeStamp": "2021-01-10T17:09:04.674Z", "version": "0.1" } }
Response-Error
{ "header": { "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e", "timeStamp": "2021-01-10T17:09:04.674Z", "version": "0.1" }, "errorCode": "InvalidField", "errorMessage": "Invalid token" }
3.14 Update availability change (ClosedToArrival) on the room type level
There is an availability change that occurred on the room type level from 1/26 to 1/28. the restriction is closed to arrival.
Request
{ "header": { "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e", "timeStamp": "2021-01-10T17:09:04.674Z", "version": "0.1" }, "hotelId": "FSDH", "roomId": "King", "startDate": "2021-01-26", "endDate": "2021-01-28", "type": "Delta", "restrictions": [ { "startDate": "2021-01-26", "endDate": "2021-01-28", "restriction": { "masterClose": false, "closedToArrival": true } } ] }
Response-Success
{ "header": { "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e", "timeStamp": "2021-01-10T17:09:04.674Z", "version": "0.1" } }
Response-Error
{ "header": { "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e", "timeStamp": "2021-01-10T17:09:04.674Z", "version": "0.1" }, "errorCode": "InvalidField", "errorMessage": "Invalid token" }
3.15 Full refresh room type level availability
The whole room level availability from 1/23 to 2/23 will be pushed out to DerbySoft. This case will show you how to set closed to arrival for specific room type by two date range: one is from 1/26 to 1/28, another is from 2/7 to 2/8 and how to close out avaiability for specific room type on 2/5.
Request
{ "header": { "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e", "timeStamp": "2021-01-10T17: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 } }, { "startDate": "2021-01-26", "endDate": "2021-01-28", "restriction": { "masterClose": false, "closedToArrival": true } }, { "startDate": "2021-01-29", "endDate": "2021-02-04", "restriction": { "masterClose": false } }, { "startDate": "2021-02-05", "endDate": "2021-02-05", "restriction": { "masterClose": true } }, { "startDate": "2021-02-06", "endDate": "2021-02-06", "restriction": { "masterClose": false } }, { "startDate": "2021-02-07", "endDate": "2021-02-08", "restriction": { "masterClose": false, "closedToArrival": true } }, { "startDate": "2021-02-09", "endDate": "2021-02-23", "restriction": { "masterClose": false } } ] }
Response-Success
{ "header": { "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e", "timeStamp": "2021-01-10T17:09:04.674Z", "version": "0.1" } }
Response-Error
{ "header": { "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e", "timeStamp": "2021-01-10T17:09:04.674Z", "version": "0.1" }, "errorCode": "InvalidField", "errorMessage": "Invalid token" }
3.16 Update availability change (both Minimum Stay Arrival and Maximum Stay Arrival) on the rate plan level
There is an availability change that occurred on the rate level from 2/1 to 2/10. the restrictions are minimum stay arrival 2 days and maximum stay arrival 7 days.
Request
{ "header": { "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e", "timeStamp": "2021-01-10T17:09:04.674Z", "version": "0.1" }, "hotelId": "FSDH", "rateId": "BAR", "startDate": "2021-02-01", "endDate": "2021-02-10", "type": "Delta", "restrictions": [ { "startDate": "2021-02-01", "endDate": "2021-02-10", "restriction": { "masterClose": false, "minStayArrival": 2, "maxStayArrival": 7 } } ] }
Response-Success
{ "header": { "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e", "timeStamp": "2021-01-10T17:09:04.674Z", "version": "0.1" } }
Response-Error
{ "header": { "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e", "timeStamp": "2021-01-10T17:09:04.674Z", "version": "0.1" }, "errorCode": "InvalidField", "errorMessage": "Invalid token" }
3.17 Full refresh rate plan level availability
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 set both minimum stay arrival 2 days and maximum stay arrival 7 days from 2/1 to 2/10 for a specivic rate plan.
Request
{ "header": { "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e", "timeStamp": "2021-01-10T17: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-31", "restriction": { "masterClose": false } }, { "startDate": "2021-02-01", "endDate": "2021-02-10", "restriction": { "masterClose": false, "minStayArrival": 2, "maxStayArrival": 7 } }, { "startDate": "2021-02-11", "endDate": "2021-02-23", "restriction": { "masterClose": false } } ] }
Response-Success
{ "header": { "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e", "timeStamp": "2021-01-10T17:09:04.674Z", "version": "0.1" } }
Response-Error
{ "header": { "echoToken": "25c8cb40-52a0-449f-8fc9-0187c6f3f19e", "timeStamp": "2021-01-10T17: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 theDelta
indicator, our system will update A and insert D into the database, so that we have A, B, C and D in the database.
Did you find it helpful? Yes No
Send feedback