This message returns the availability for one or more establishments on specific dates filtered in the request.
The rates that are returned always include taxes, except for city taxes which must be added separately.
Endpoint: https://hotel.new.hotetec.com/webservice/integrations/pull/hotelAvailability
hotelAvailability Request message
The message has the following elements:
Element | Mandatory | Values/Format | Description |
sessionId | Y | Alphanumeric | Generated session’s ID |
languageCode | N | DE, EN, ES, FR, IT, NL, PT | Language in which we want to receive the response. If not indicated, the value that Hotetec has by default for the user will be returned.
ISO 639-1 codes are used. Right know only the codes indicated in values are accepted. |
currency | N | EUR, USD, GBP, EGP, MXN, CHF, CUP | Currency in which we want to receive the prices of the request. If not indicated, the value that Hotetec has by default for the user will be returned.
ISO 639-1 codes are used. Right know only the codes indicated in values are accepted. |
customerIsLogged | N | True / False | Used to indicate if we want to get discounted prices for registration. |
vendorCode | N | Alphanumeric | Company code of a hotel/establishment set |
hotelCode | N | Alphanumeric | Single’s hotel/establishment code |
dateFrom | Y | Date + Time | Check in date Example: "2023-01-15T00:00:00.000Z” |
dateTo | Y | Date + Time | Check out date Example: "2023-01-15T00:00:00.000Z” |
| |||
distribution | Y | "distribution": [{ "id": 1, "person": [ { "age": 30 }, { "age": 30 } ] | Here we will set up all the rooms and occupancy configuration |
id | Y | Room’s IDs, for each room we will add a new ID | |
age | Y | We will set up the age of each occupant. For adults we can set up 30 by default. For children it is compulsory to set up the real age in order to have the correct rates. | |
| |||
hotelName | N | Alphanumeric | Establishment’s name. A part of the name can be set up and a search will be made for establishments containing these names. |
hotelFacilityCode | N | Alphanumeric | Type of facilities of the establishment. Example: PISCINA (SWIMMING POOL) |
categoryCode | N | Alphanumeric | Establishment’s category |
chainCode | N | Alphanumeric | Chain’s code |
establishmentTypeCode | N | Alphanumeric | Establishment’s type code |
locationCode | N | Alphanumeric | Geographical area’s code where the establishment is located. |
mealPlanCode | N | Alphanumeric | Meal plan’s code that we want to have by default. |
roomCode | N | Alphanumeric | Internal room’s code. Internal use |
rateCode | N | Alphanumeric | Rate’s code |
rateName | N | Alphanumeric | Rate’s name. A part of the name can be set up and a search will be made for establishments containing these names. |
rateProperty | N | Alphanumeric | Rate’s property filter to ask by a specific rate type. The current possible parameters are: NRE: Non Refundable MED: Older than UNE: Unemployed OFF: Offline ON: Online MAR: Market RES: Resident OPA: Opaque REG: Sign in HGL: Highlighted Rate II: Insurance Included FUN: Public worker EXC: Excluded Country INC: Included Country TAX: Tax Included AGT: Agent CC: Call Center |
promotionalCode | N | Alphanumeric | This is used to launch the request with an associated promotional code |
geolocation | N | Numeric | Search by GPS location |
radius | N | Numeric | Search by radius from a geolocation (mandatory element if the previous element is reported). It shall be set up in metres. |
paymentFilter | N | Alphanumeric | Payment’s method filter |
allowOnRequest | N |
true false | This is used to set up if we want on request options or not in the response. Values: True: Yes False: No |
Example of message with all elements filled out (JSON):
{
"sessionId": " HPH#20077#682164202862402",
"languageCode": "ES",
"currency": "EUR",
"customerIsLogged": "true"
"vendorCode": ["DEMOHTT"],
"hotelCode": ["30621"],
"dateFrom": "2023-01-15T00:00:00.000Z",
"dateTo": "2023-01-16T00:00:00.000Z",
"distribution": [{
"id": 1,
"person": [
{ "age": 30 },
{ "age": 30 }
]
}],
"hotelName": “Boutique”,
"hotelFacilityCode": [“PISCINA”],
"categoryCode": [“4*”],
"chainCode": [“DEMOHTT”],
"establishmentTypeCode": ["HOTL"],
"locationCode": "ESBAL03",
"mealPlanCode": ["AI"],
"roomCode": ["DBL#SEA"],
"rateCode": "30006",
"rateName": "WEB",
"rateProperty": {"code": "RES", "value": "BALEARES"},
"promotionalCode": "BLACKFRIDAY",
"geolocation": {"latitude": 39.7644, "longitude": 3.1615},
"radius": “500”,
"paymentFilter": {"paymentType": "Card", "paymentOrderType": "Inmediate"},
"allowOnRequest": “true”
}
hotelAvailability Response message
The message has the following elements:
Element | Description |
sessionId | Generated session’s ID |
notification | Type of notification. Error: it’s important to check it immediately in order to solve the issue that is being indicated by the system. Warning Information |
notificationDetail | Notification’s description |
currencyCode | Currency’s code |
dateFrom | Check in date. Julian date is used |
dateTo | Check out date. Julian date is used |
| |
distribution | Rooms and occupancy settings |
id | There will be an ID for each occupancy type requested |
age | Requested age |
| |
hotelOption | Breakdown of hotel information and rooms available |
| |
hotel | |
code | Single’s hotel/establishment code |
name | Establishment’s full name |
chain | Chain to which the establishment belongs |
| |
establishmentType | |
code | Establishment’s type code. (Example: HOTL) |
name | Establishment’s type description. (Example: Hotel) |
| |
Category | |
code | Category’s code (Example: 5*) |
name | Category's description. (Example: Five Stars) |
| |
address – country | |
code | Country’s code (Example: ES) |
name | Country’s description. (Example: España – Spain) |
state | Additional typing of the destination tree |
county | Establishment’s city |
province | Additional typing of the destination tree |
| |
address – location | |
code | Geographical area’s code |
name | Geographical area’s description |
postalCode | Establishment’s postcode |
adressText | Establishment’s postal address |
| |
address - gps | |
latitude | Latitude |
longitude | Longitude |
| |
contact | Establishment contact details |
| |
roomOption | Available rooms list |
distributionId | Refers to which distribution we are getting the availability |
| |
room | |
code | Internal room’s code. Internal use |
name | Room’s name |
| |
rateOption | Rate’s breakdown |
| |
rate | |
code | Rate’s code |
name | Rate’s name |
description | Rate’s description |
conditions | Rate’s conditions |
highlight | Rate's highlight |
rateProperty | Rate’s property. The current possible parameters are: NRE: Non Refundable MED: Older than UNE: Unemployed OFF: Offline ON: Online MAR: Market RES: Resident OPA: Opaque REG: Sign in HGL: Highlighted Rate II: Insurance Included FUN: Public worker EXC: Excluded Country INC: Included Country TAX: Tax Included AGT: Agent CC: Call Center |
| |
pricing | Price’s breakdown |
priceType | Shows if the prices are PVP/PSP or net |
| |
cancellationOption | |
fromDate | From which date there are cancellation fees. Julian date is used |
daysTo | Days’ remaining until the cancellation fees applies. Julian date is used |
percentage | Cancellation fees’ percentage |
amount | Cancellation fees’ amount |
cancelPenaltyMode | Cancellation fees’ type |
commissionAmount | Commission amount on cancellation fees |
commissionable | If cancellation fees are commissionable or not. Values: true: Yes false: No |
amount | Amount on which commission is calculated |
| |
taxDetail | |
code | Tax’s code |
name | Tax’s name |
percentage | Tax’s percentage |
taxAmout | Tax’s amount |
baseAmount | Amount on which tax is calculated |
| |
cityTaxDetail | |
code | City tax’s code |
name | City tax’s name |
cityTaxAmount | City tax’s amount without VAT |
taxDetail | Detail of the taxes of the city tax |
code | Tax’s code (VAT) |
name | Tax’s name (VAT) |
percentage | Tax’s percentage (VAT) |
taxAmout | Tax’s amount (VAT) |
baseAmount | Amount on which tax is calculated |
| |
priceDetail: this includes a breakdown of the different supplements, discounts, commissions, commercial policies, etc. | |
code | Breakdown’s type internal ID |
name | Breakdown’s name |
description | Breakdown’s description |
type | Breakdown’s type. Values: Gift Breakdown: commission breakdown Supplement: supplement/discount |
group | General group of the breakdown. Values: Sale Policy Commission Supplement |
optional | If the breakdown is optional or not |
order | Order of the breakdowns |
amount | Price breakdown’s amount |
appliedByProperty | If the breakdown is applied by a rate property |
| |
paymentOption | |
paymentKey | Method payment’s ID |
name | Method payment’s name |
description | Method payment’s description |
conditions | Method payment’s conditions |
paymentDate | Payment’s date |
amountToPay | Amount or percentage payable |
| |
status | Availability status. Values: Available On request |
unitsLeft | Room’s units available |
| |
mealPlan | |
code | Meal plan’s code |
name | Meal plan’s name |
description | Meal plan’s description |
conditions | Meal plan’s conditions |
| |
occupancyCode | Occupancy code from the room shown |
vendorCode | Company code of a hotel/establishment set |
Example message (JSON):
{
"sessionId": "HPH#20077#652627707000703",
"notification": null,
"notificationDetail": null,
"currencyCode": "EUR",
"dateFrom": 1673740800000,
"dateTo": 1673827200000,
"distribution": [
{
"id": 1,
"person": [
{
"id": null,
"type": null,
"age": 30
},
{
"id": null,
"type": null,
"age": 30
}
]
}
],
"hotelOption": [
{
"hotel": {
"code": "30621",
"name": "Boutique Hotel Elena",
"chain": null,
"establishmentType": {
"code": "HOTL",
"name": "Hotel"
},
"category": {
"code": "4*",
"name": "Cuatro estrellas"
},
"address": {
"country": {
"code": "ES",
"name": "ESPAÑA"
},
"state": null,
"county": "Adeje",
"province": null,
"location": {
"code": "ES-48245",
"name": "Adeje"
},
"postalCode": "38670",
"addressText": "Av. Adeje",
"gps": {
"latitude": 28.15039046107699,
"longitude": -16.44536361524011
}
},
"contact": null
},
"roomOption": [
{
"distributionId": 1,
"room": {
"code": "DBL#STD-2",
"name": "Standard room"
},
"rateOption": [
{
"rate": {
"code": "30200",
"name": "NON REFUNDABLE WEB RATE",
"description": null,
"conditions": null,
"highlight": null
},
"rateProperty": null,
"pricing": {
"priceType": "PVP",
"cancellationOption": [
{
"fromDate": 1668639600000,
"daysTo": null,
"percentage": null,
"amount": 140.25
}
],
"cancelPenaltyMode": "NonRefundable",
"commissionAmount": 0.0,
"commissionable": true,
"amount": 140.25,
"taxDetail":
{
"code": "1234",
"name": "Reduced VAT",
"percentage": 10.0,
"taxAmount": 144.0,
"baseAmount": 1300.0
},
"cityTaxDetail":
{
"code": "1234",
"name": "Baleares",
"cityTaxAmount": 25.0,
"taxDetail":
{
"code": "1234",
"name": "Reduced VAT",
"percentage": 10.0,
"taxAmount": 2.5,
"baseAmount": 22.5
}
}
}
"priceDetail": [
{
"code": "[EtT]SalePolicy(PpT)DEMOHTT@70090",
"name": "Spa included",
"description": null,
"type": "Gift",
"group": "SalePolicy",
"optional": false,
"order": 1,
"amount": null,
"appliedByProperty": null
},
{
"code": "[EtT]Commission(PpT)DEMOHTT@30200@HPH@ClientCode@PVP",
"name": "NON REFUNDABLE WEB RATE - HPH - ClientCode - DEMOHTT",
"description": null,
"type": "Breakdown",
"group": "Commission",
"optional": false,
"order": 2,
"amount": 0.0,
"appliedByProperty": null
}
]
},
"paymentOption": [
{
"paymentKey": "Hotel#DEMOHTT#10057",
"name": " Payment at the hotel",
"description": " Payment at the hotel",
"conditions": "<p> Payment will be made in cash or by credit card at check-out</strong>.</p>",
"paymentDate": null,
"amountToPay": null
},
{
" paymentKey ": "Hotel#DEMOHTT#10076",
"name": "Payment at the hotel - Guarantee card",
"description": " The requested card will be used to guarantee your reservation.",
"conditions": "<p> If the card is not valid, the booking will be automatically cancelled.</p>",
"paymentDate": null,
"amountToPay": null
}
],
"status": "Available",
"unitsLeft": 8
}
],
"mealPlan": {
"code": "HB",
"name": "Half Board",
"description": "Drinks not included",
"conditions": "<p>Drinks not included</p>"
},
"occupancyCode": "O@2-0-0",
"vendorCode": "DEMOHTT"
}