The Hotel Extranet API is an interface aimed for a channel manager to be capable of synchronizing information from their system with that of a specific Juniper client.
In order to understand the integration process of this API, we've prepared flow charts that outline and simplify the three main processes that may be implemented through this API:
We will proceed to describe each one of these:
Through the ARI Update process you will be capable of updating rate related information from one or more hotels from the Juniper system to which you will be connecting to. This will allow you to syncronize the hotel information from your system with that of the Juniper system.
The use of the ExtranetHotelRates request is optional and may be used either prior to the update in order to complement the mapping process or after the update in order to verify that the rates were updated as expected.
Kindly refer to the Hotel Extranet Generic Types section for detailed information regarding what may be exactly retrieved and/or updated through the implementation of this process.
Through the Booking Management process you will be capable of retrieving booking information from one or more hotels from the Juniper system to which you will be connecting to. This will allow you to syncronize the booking information from the Juniper system with that of your system.
The implementation of this process will require you to periodically request the ExtranetReadBooking transaction in order to retrieve all of the bookings that could have been created, modified and/or cancelled since you last sent the same.
Additionally, depending on your permissions, it will also be possible for you to update the Hotel Confirmation Number of your bookings through the ExtranetUpdateBooking request.
Through the Hotel Import process you will be capable of importing the hotel information from your system to that of the Juniper clients to which you will be connecting, doing so will allow you to create these products automatically and on-demand, removing the need for this to be agreed and configured between the hotel and the Juniper client.
The implementation of this process will require the use of the Hotel Extranet Import Transactions.
Important note:
The implementation of this process will be optional and will require for the related Juniper client to activate you some permissions, kindly contact with Juniper if you would be interested in implementing the same.
Following the Getting Started section found on the home page, we would like to add an example of the Hotel Extranet test environment endpoint for your reference:
https://juniper-uat.bookingengine.es/WebServiceJPDM/DataManagement.asmx
Whose WSDL you would also be able to find under:
https://juniper-uat.bookingengine.es/WebServiceJPDM/DataManagement.asmx?WSDL
And on which it is very important to note that within this endpoint you will be able to find multiple bindings and that the binding on which you will be able to find all of the transactions related to the Hotel Extranet API is the HotelExtranetTransactions one.
Additionally, if you wish to implement the Hotel Import process, you will also need to look into the HotelTransactions binding.
Important note:
Being juniper-uat.bookingengine.es the endpoint of the test environment and the part that you would have to replace if you wished to connect to a different environment. This is very important to keep in mind for when you connect to the live environment and/or if you plan on connecting with multiple Juniper clients.
It is also worth mentioning that not all Juniper clients support HTTPS endpoints and that, if you require the same, this is something that you should clarify along with them on a client by client basis.
Here we supply you with a series of resources which, along the use of test environment XML credentials, will let you experience the hotel extranet integration process first hand.
On this section you will be able to find SoapUI test suites that may help you perform the development of your integration.
Juniper WebService Hotel Extranet Welcome Pack. This test suite contains all of the transactions that will be neccesary in order to perform an integration against the Juniper system.
On this section we have a series of code samples that will let you understand how to implement and use one of the transactions from our API. It is important to note that Juniper will not be capable of helping you with any kind of coding support and that these should be purely be treated as referential examples.
Here we will document all of the format types that you will be able to find through this document:
Format | Type | Short description |
---|---|---|
[Text] | String | Any characted or number (NVarchar) |
n[0..9] | Integer | 1...N recurrences of number. i.e.: 1, 60, 41050… |
n[0..9],2[0..9] | Double | Number with decimals separated by coma. Integer part: 1...N recurrences of number. Decimal part: 2 recurrences of number. i.e.: 1,00; 100,02; 300,99, … |
true/false | Boolean | Boolean value. |
yyyy-MM-ddThh:mm:ss | DateTime | Specifies date and time |
hh:mm:ss | DateTime | Specifies time |
yyyy-MM-dd | Date | Specifies date |
PnYnMnDTnHnMnS | String | Specifies duration |
And all of the generic complex types that you will be able to find through this document:
Definition of the rate object. We refer to this object as {Rate}
Once you create a rate, you will be capable of deleting some of its prices by sending en empty Price node along the @RoomTypeCode, @BoardCode and @Type that you wish to delete. If you wish to do this on contracts that allows for recommended prices, you will need to do this for both the Cost and Recommended types.
Specifications:
Node / Attribute (@) | Opt | Type | Description |
---|---|---|---|
@Type | N | String | Indicates the rate type. Possible values: • Fixed: Additional and children prices will be indicated on AdultAdditionals, ChildrenA, ChildrenB and ChildrenC nodes on Price node. • Percentage: Additional prices would be calculated using the Discounts node information If you have no preference, our recommendation here is to work with Fixed rates. |
Dates | N | - | List of dates to apply the new prices. |
./Dates/Date | N | - | Date range. |
./Date/@From | N | Date | Date where the rate will start. |
./Date/@To | N | Date | Date where the rate will end. |
Prices | N | - | List of new prices. |
./Prices/Price | N | - | Price element. If you send a empty Price node you will be capable of deleting the prices of the related information. |
./Price/@RoomTypeCode | N | Integer | Indicates the room type of the price. |
./Price/@BoardCode | N | Integer | Indicates the board type of the price. |
./Price/@Type | N | String | Indicates the price type. Possible values: • Cost • Recommended It will only be possible for you to update the Recommended price on @RecommendedPrices true contracts. |
./Price/Room | Y | - | Price for the room. Only available on price per room (@PriceByRoom) rooms. Otherwise, attemting to update the same will result in an error response. |
./Room/@Amount | N | Double | Daily price for the whole room. |
./Price/Adult | Y | - | Price per adult of the room. Available on both price per room and price per passenger rooms. |
./Adult/@Amount | N | Double | Daily price for each available adult. |
./Price/AdultAdditionals | Y | - | Daily price for additional adults. Only available on Fixed rates and if the room allows for them. This may be identified through the use of the @AdditionalFrom and/or @MaxAdultAdditionalOrder properties from the ExtranetHotelList request. |
./AdultAdditionals/AdultAdditional | N | - | Daily price for each additional adult. Most hotels may only allow for up to two nodes. |
./AdultAdditional/@Amount | N | Double | Daily price for each additional adult. |
./AdultAdditional/@Order | N | Integer | Indicates the additional adult price that is being updated. When only two additional adult prices are allowed, 1 will stand for the first additional while 2 will stand for the second and any other additionals. It will be very important for you to properly understand the use of this property, contact with Juniper if you have any doubt in this regard. |
./Price/ChildrenA | Y | - | Daily price for children from the first age range. Only available on Fixed rates and if the room allows for them. As with the AdultAdditionals node, you will be capable of easily identifying the maximum number of children prices that a room allows for through the use of the @MaxChildOrder property from the ExtranetHotelList request. |
./ChildrenA/ChildA | N | - | Daily price for each children from the first age range. Most hotels may only allow for up to two nodes. |
./ChildA/@Amount | N | Double | Daily price for each children from the first age range. |
./ChildA/@Order | N | Integer | Indicates the children from the first age range that is being updated. When only two children prices are allowed, 1 will stand for the first children while 2 will stand for the second and any other childrens. |
./Price/ChildrenB | Y | - | Daily price for children from the second age range. Only available on Fixed rates, if the room allows for them and if the hotel allows for two children age ranges. It will be very important for you to properly understand when an hotel allows for two children age ranges and to update the mentioned whenever this is the case, contact with Juniper if you have any doubt in this regard. |
./ChildrenB/ChildB | N | - | Daily price for each children from the second age range. Most hotels may only allow for up to two nodes. |
./ChildB/@Amount | N | Double | Daily price for each children from the second age range. |
./ChildB/@Order | N | Integer | Indicates the children from the second age range that is being updated. When only two children prices are allowed, 1 will stand for the first children while 2 will stand for the second and any other childrens. |
./Price/ChildrenC | Y | - | Daily price for children from the third age range. Only available on Fixed rates, if the room allows for them and if the hotel allows for three children age ranges. It will be very important for you to properly understand when an hotel allows for three children age ranges and to update the mentioned whenever this is the case, contact with Juniper if you have any doubt in this regard. |
./ChildrenC/ChildC | N | - | Daily price for each children from the third age range. Most hotels may only allow for up to two nodes. |
./ChildC/@Amount | N | Double | Daily price for each children from the third age range. |
./ChildC/@Order | N | Integer | Indicates the children from the third age range that is being updated. When only two children prices are allowed, 1 will stand for the first children while 2 will stand for the second and any other childrens. |
Discounts | Y | - | Discounts for the additional passagers in relationship to the adult price. Only available on Percentage rates. |
./Discounts/AdultAdditionals | Y | - | Discount for additional adults. |
./AdultAdditionals/AdultAdditional | N | - | Discount for additional adult. There can be up to two nodes |
./AdultAdditional/@Discount | N | Double | Discount respect the adult price |
./AdultAdditional/@Order | N | Integer | Indicate if is the first additional (1) or second (and nexts) (2). |
./Discounts/ChildrenA | Y | - | Discount for range A children. |
./ChildrenA/ChildA | N | - | Discount for range A child. There can be up to two nodes. |
./ChildA/@Discount | N | Double | Discount respect the adult price |
./ChildA/@Order | N | Integer | Indicate if is the first child (1) or second (and nexts) (2) |
./Discounts/ChildrenB | Y | - | Discount for range B children. |
./ChildrenB/ChildB | N | - | Discount for range B child. There can be up to two nodes. |
./ChildB/@Discount | N | Double | Discount respect the adult price |
./ChildB/@Order | N | Integer | Indicate if is the first child (1) or second (and nexts) (2) |
./Discounts/ChildrenC | Y | - | Discount for range C children. |
./ChildrenC/ChildC | N | - | Discount for range C child. There can be up to two nodes. |
./ChildC/@Discount | N | Double | Discount respect the adult price |
./ChildC/@Order | N | Integer | Indicate if is the first child (1) or second (and nexts) (2) |
Supplements | Y | - | Rate related supplements. It is important to note that, when working with rate related supplements, it will not be possible for you to update the prices of the rate without specifying the rate related supplements at the same time as, if you do not do the same, the rate related supplements will be deleted. |
./Supplements/Supplement | N | - | Rate related supplement. |
./Supplement/@Type | N | String | Rate related supplement type. Possible values: • BoardSupplement: Pay the supplement to change the board type. |
./Supplement/@Active | N | Boolean | Alaways active. |
./Supplement/@Mandatory | N | Boolean | Alaways false. |
./Supplement/@BaseBoardCode | Y | Boolean | Base board code. To board upgrade, the passanger has to pay the price for this board, plus the prices of this supplement. |
./Supplement/Boards | Y | - | Board to upgrade. |
./Boards/Board | N | - | Board. |
./Board/@Code | N | Integer | Internal board code. |
./Supplement/ChildrenAges | Y | - | Children age ranges that are applicable to the supplement. NOT IMPLEMENTED |
./ChildrenAges/@FirstRangeFrom | N | Integer | Starting this age, passengers will be rated as children (below this age passengers would be rated as infants). |
./ChildrenAges/@FirstRangeTo | N | Integer | Maximum age for the first age range on which the system will rate the passengers as children. |
./ChildrenAges/@SecondRangeTo | Y | Integer | Maximun age for the second range on which the system will rate the passengers as children. |
./ChildrenAges/@ThirdRangeTo | Y | Integer | Maximun age for the third range on which the system will rate the passengers as children. |
./Supplement/Prices | Y | - | Supplements prices. |
./Prices/Price | N | - | Supplements price. |
./Price/@Type | N | String | Indicates the price type. Possible values: • Cost • Recommended It will only be possible for you to update the Recommended price on @RecommendedPrices contracts. |
./Price/Adult | Y | - | Price per adult of the room. |
./Adult/@Amount | N | Double | Daily price for each available adult. |
./Price/AdultAdditionals | Y | - | Price for additional adults. Only available on Fixed rates. |
./AdultAdditionals/AdultAdditional | N | - | Daily price for each additional adult. There can be up to two nodes. |
./AdultAdditional/@Amount | N | Double | Daily price for each additional adult. |
./AdultAdditional/@Order | N | Integer | Indicate if is the first additional (1) or second (and nexts) (2). |
./Price/ChildrenA | Y | - | Price for range A children. Only available on the Fixed rates. |
./ChildrenA/ChildA | N | - | Daily price for each child. There can be up to two nodes. |
./ChildA/@Amount | N | Double | Daily price for each A child. |
./ChildA/@Order | N | Integer | Indicate if is the first child (1) or second (and nexts) (2). |
./Price/ChildrenB | Y | - | Price for range B children. Only available on the Fixed rates. |
./ChildrenB/ChildB | N | - | Daily price for each child. There can be up to two nodes. |
./ChildB/@Amount | N | Double | Daily price for each B child. |
./ChildB/@Order | N | Integer | Indicate if is the first child (1) or second (and nexts) (2). |
./Price/ChildrenC | Y | - | Price for range C children. Only available on the Fixed rates. |
./ChildrenC/ChildC | N | - | Daily price for each child. There can be up to two nodes. |
./ChildC/@Amount | N | Double | Daily price for each C child. |
./ChildC/@Order | N | Integer | Indicate if is the first child (1) or second (and nexts) (2). |
./Price/Babies | Y | - | Price for baby. |
./Babies/Baby | N | - | Daily price for each baby. |
./Baby/@Amount | N | Double | Daily price for each baby. |
./Baby/@Order | N | Integer | Only value 1. |
Definition of the allotment object. We refer to this object as {Allotment}
Once you create an allotment, deleting the same will not be possible. If you wish to do so, you will need to set an applicable StopSales or send an allotment update along a @TotalAvailable of 0 (this way, the allotment will be set as 0 regardless of if there are booked rooms or not).
Important note:
It is very important to understand that @BaseAllotment of a room stands for the base or total allotment of the same (the allotment of the mentioned regardless of how much rooms may have been sold) while the @TotalAvailable allotment strictly stands for the allotment that is still available for sale and update one or the other depending on how your system works in this regard.
Specifications:
Node / Attribute (@) | Opt | Type | Description |
---|---|---|---|
@BaseAllotment | Y | Integer | Indicate the base or total allotment. It cannot be lower than 0 or the sold allotment. |
@NormalUsed | Y | Integer | Optional information that identifies the sold allotment of the room. Only available on the ExtranetHotelRates response. |
@ExtraAllotment | Y | Integer | Optional information that identifies the extra allotment of the room. The extra allotment of the room is an allotment that may only be updated manually. Only available on the ExtranetHotelRates response. |
@TotalAvailable | Y | Integer | Indicate the available allotment. It cannot be sent along @BaseAllotment or @FreeSales. It cannot be lower than 0. It will ajust the base allotment of the room as to set the desired availble allotment in relationship to the rooms that have been sold (for example, let's say that you wish for a available allotment of 2 on a room that has 3 sold allotment, given the case, the system will set a base allotment of 5 so that, given the 3 sold allotments, there will be 2 allotments available for sale). |
@FreeSales | Y | Boolean | Indicate if there will be no limit to the allotment. |
RoomTypes | N | - | List of rooms of the new allotment. |
./RoomTypes/RoomType | N | - | Room of the new allotment. |
./RoomType/@Code | N | Integer | Internal room code. |
Dates | N | - | List of date periods. |
./Dates/Date | N | - | Date of the new allotment. |
./Date/@From | N | Date | From date. |
./Date/@To | N | Date | To date. |
Definition of the stop sale object. We refer to this object as {StopSale}
Specifications:
Node / Attribute (@) | Opt | Type | Description |
---|---|---|---|
@Action | N | String | StopSale action. Possible values: • Close: Days will be closed and it will not be possible to book. • Open: Days will be opened deleting any preexisting stopsales in the process. Only available on the ExtranetHotelRatesUpdate request. • OnRequest: An on request stopsale will be. |
RoomTypes | Y | - | List of room types that the stopsales applies. If missing, the stopsale will apply to all the room types. |
./RoomTypes/RoomType | N | - | Room type to apply. |
./RoomType/@Code | N | Integer | Internal room code. |
Dates | N | - | List of date periods. |
./Dates/Date | N | - | List of dates. There has to be at least one node |
./Date/@From | N | Date | From date. |
./Date/@To | N | Date | To date. |
Definition of the release object. We refer to this object as {Release}
Once a new release has been created, you will have to update it along a @Days of 0 in order to delete the same.
Specifications:
Node / Attribute (@) | Opt | Type | Description |
---|---|---|---|
@Days | N | Integer | Day value of the release. |
RoomTypes | Y | - | List of room types. If missing, the stopsale will apply to all the room types. |
./RoomTypes/RoomType | N | - | Room type to apply. |
./RoomType/@Code | N | Integer | Internal room code. |
Dates | N | - | List of date periods. |
./Dates/Date | N | - | List of dates. There has to be at least one node |
./Date/@From | N | Date | From date. |
./Date/@To | N | Date | To date. |
Definition of the restriccion object. We refer to this object as {Restriction}
Once a new MinimumStay restriction has been created, you will have to update it along a @MinNights of 0 in order to delete the same. Similarly, once a new CheckinDays restriction has been created, you will have to update it establishing all of its dates as available on @WeekDays in order to delete the same.
Specifications:
Node / Attribute (@) | Opt | Type | Description |
---|---|---|---|
@Type | N | String | Restriction type. Possible values: • MinimumStay: Minimum stay restriction • CheckinDays: Let’s you specify a set of weekdays where it won’t be allowed to checkin. • CheckoutDays: Let’s you specify a set of weekdays where it won’t be allowed to checkout |
LengthOfStay | Y | - | Length of stay. |
./LengthOfStay/@MinNights | Y | Integer | Minimum number of night permited. Only applies on MinimumStay restrictions. |
Dates | N | - | List of date periods. |
./Dates/Date | N | - | List of dates. There has to be at least one node. |
./Date/@From | N | Date | From date. |
./Date/@To | N | Date | To date. |
RoomTypes | Y | - | Room types to apply. If missing, the restriction will apply to all the room types. |
./RoomTypes/RoomType | N | - | Room type. There can be multiple nodes |
./RoomType/@Code | N | Integer | Internal room code. |
Boards | N | - | Board types to apply. If missing, the restriction will apply to all the board types. |
./Boards/Board | N | - | Board type. There can be multiple nodes |
./Board/@Code | N | Integer | Internal board code. |
ApplicationDays | Y | - | Days when the restriction will applied. If missing, the restriction will apply to all the days of the week. |
./ApplicationDays/@WeekDays | N | String | Week days that the restriction will be applied. Example “XX---XX” means that restriction will applied on Monday, Tuesday, Saturday and Sunday. On MinimunStay restrictions means that the restriction will only apply if you stay one of these days of the week. On CheckinDays or CheckoutDays restrictions means that the checkins or checkouts are NOT allowed in these days of the week. |
./ApplicationDays/@ApplyToCheckOut | Y | Boolean | Indicate if it is necessary to apply on the check out day, too. Only applies on CheckinDays restricions. |
If you only send restrictions for some rooms and some boards, it will be allowed for bookings to be created on the rest of rooms and boards without restrictions.
Definition of the supplement object. We refer to this object as {Supplement}
Specifications:
Node / Attribute (@) | Opt | Type | Description |
---|---|---|---|
@Type | N | String | Supplement type. Possible values: • Basic: Basic supplement • ShortStay: Supplement for short stays. • Special: Special supplement which are not possible to be created and/or modified through the API. |
@Code | Y | Integer | Supplement internal id. Required in order to perform a modification but optional otherwise. |
@Active | N | Boolean | If supplement is not active, it will not be applied on the bookings. |
@AplicationType | N | String | Supplement application type. Possible values: • BasePrice: Apply on the rate price. • BaseMeal: Apply on the rate price and meal plan supplement. • Total: Apply on the rate and other supplements and offers • TotalNoBaseRate: Apply on the rate price after applying other supplements and discounts without board and room type. |
@Mandatory | N | Boolean | If the supplement is mandatory. |
@DirectPayment | Y | Boolean | If true, the supplement will be directly paid at the hotel (and not part of the price of the reservation). |
@ExternalCode | Y | String | Supplement external id. Allows for a maximum of 20 characters. |
Names | N | - | Supplement name in the different languages. |
./Names/Name | N | String | Name text. |
./Name/@Language | N | String | Language. Follows the ISO 2 format. |
Dates | N | - | List of all dates of the supplement, not only between the requested dates. |
./Dates/Date | N | - | Date node. There has to be at least one Date node. |
./Date/@From | N | Date | Start date. |
./Date/@To | N | Date | End date. |
RoomTypes | Y | - | Room types to apply. If missing, the supplement will apply to all the room types. |
./RoomTypes/RoomType | N | - | Room type. There can be multiple nodes |
./RoomType/@Code | N | Integer | Internal room code. |
Boards | Y | - | Board types to apply. If missing, the supplement will apply to all the board types. |
./Boards/Board | N | - | Board type. Supplements currently allow for up to 1 board node. |
./Board/@Code | N | Integer | Internal board code. |
LengthOfStay | Y | - | Length of stay. |
./LengthOfStay/@MaxNights | Y | Integer | Maximum number of night to apply the supplement. Only applies on ShortStay supplements. |
ApplicationDays | Y | - | Days when the supplement will applied. If missing, the supplement will apply to all the days of the week |
./ApplicationDays/@WeekDays | N | String | Weekdays that the supplement will be applied. Example “XX---XX” means that supplement will applied on Monday, Tuesday, Saturday and Sunday |
ChildrenAges | Y | - | Children age ranges that are applicable to the supplement. |
./ChildrenAges/@FirstRangeFrom | N | Integer | Starting this age, passengers will be rated as children (below this age passengers would be rated as infants). |
./ChildrenAges/@FirstRangeTo | N | Integer | Maximum age for the first age range on which the system will rate the passengers as children. |
./ChildrenAges/@SecondRangeTo | Y | Integer | Maximun age for the second range on which the system will rate the passengers as children. |
./ChildrenAges/@ThirdRangeTo | Y | Integer | Maximun age for the third range on which the system will rate the passengers as children. |
Prices | N | - | Prices aplicated to the supplement. |
./Prices/Price | N | - | There can be multiple prices. It has only allowed a Percent node, a Room node, or an Adult, ChildrenA, ChildrenB and ChildrenC nodes. |
./Price/@Type | N | String | Indicates the price type. Possible values: • Cost • Recommended |
./Price/Percent | Y | - | Percent supplement |
./Percent/@Amount | N | Double | Percent amount. |
./Price/Room | Y | - | Room fixed price supplement. |
./Room/@Amount | N | Double | Price amount. |
./Price/Adult | Y | - | Adult fixed price supplement. |
./Adult/@Amount | N | Double | Price amount |
./Price/AdultAdditionals | Y | - | Price for additional adults. |
./AdultAdditionals/AdultAdditional | N | - | Daily price for each additional adult. There can be up to two nodes. |
./AdultAdditional/@Amount | N | Double | Daily price for each additional adult. |
./AdultAdditional/@Order | N | Integer | Indicate if is the first additional (1) or second (and nexts) (2). |
./Price/ChildrenA | Y | - | First range children price. |
./ChildrenA/ChildA | N | - | |
./ChildA/@Amount | N | Double | Price amount. |
./ChildA/@Order | N | Integer | Child order. |
./Price/ChildrenB | Y | - | Second range children price. |
./ChildrenB/ChildB | N | - | |
./ChildB/@Amount | N | Double | Price amount. |
./ChildB/@Order | N | Integer | Child order. |
./Price/ChildrenC | Y | - | Third range children price. |
./ChildrenC/ChildC | N | - | |
./ChildC/@Amount | N | Double | Price amount. |
./ChildC/@Order | N | Integer | Child order. |
./Price/Babies | Y | - | Price for the babies. |
./Babies/Baby | N | - | Baby. |
./Baby/@Amount | N | Double | Price amount. |
./Baby/@Order | N | Integer | Baby order. |
ApplicableOccupancies | Y | - | List of occupancies to which the supplement will apply. Skipping the node on a supplement update will delete any previously existing configuration in this regard. |
./ApplicableOccupancies/Occupancy | N | - | Specific occupancy. |
./Occupancy/@MinAdults | Y | Integer | Minimum number of adults in the occupancy. |
./Occupancy/@MaxAdults | Y | Integer | Maximum number of adults in the occupancy. |
./Occupancy/@MinChildren | Y | Integer | Minimum number of children in the occupancy. |
./Occupancy/@MaxChildren | Y | Integer | Maximum number of children in the occupancy. |
Definition of the offer object. We refer to this object as {Offer}
Specifications:
Node / Attribute (@) | Opt | Type | Description |
---|---|---|---|
@Type | N | String | Offer type. Possible values: • FreePaxes: Some of the children will be free. • BoardUpgrade: Upgrade to a better board type with not charge. • FreeNights: If the client stay many days, some of them will be free. • LowerPrices: Discount on the price. • EarlyBooking: Early booking discount. • Special: Special supplement which are not possible to be created and/or modified through the API. |
@Code | Y | Integer | Offer internal id. Required in order to perform a modification but optional otherwise. |
@ExternalCode | Y | String | Offer external id. Allows for a maximum of 20 characters. |
@Active | N | Boolean | If offer is not active, it will not be applied on the bookings. |
@AplicationType | N | String | Offer application type. Possible values: • BasePrice: Apply on the rate price. • BaseMeal: Apply on the rate price and meal plan supplement. • Total: Apply on the rate and other supplements and offers. • TotalNoBaseRate: Apply on the rate price after applying other supplements and discounts without board and room type. |
@Priority | N | Integer | Priority property, the higher the value, the higher the priority over other offers. This property exists in order to determine which offer should be applied in case that only a limited number of offers may be applied at the same time (for example, on combinations where there are multiple offers and the ApplyWithOffers node is not involved). If there are two or more non-combinable offers with the same exact priority, the last created offer (the one with the highest @Code) will apply. |
@NonRefundable | N | Boolean | If it is true, the offer will convey a non-refundable cancellation policy. |
@ApplyAdditionals | N | Boolean | If the discount will be applied to the additional adults. |
@ApplyChildren | N | Boolean | If the discount will be applied to the children. |
Names | N | - | Offer name in the different languages. |
./Names/Name | N | String | Name text. |
./Name/@Language | N | String | Language. Follows the ISO 2 format. |
Dates | N | - | List of all dates of the offer, not only between the requested dates. |
./Dates/Date | N | - | Date node. There has to be at least one Date node. |
./Date/@From | N | Date | Start date. |
./Date/@To | N | Date | End date. |
RoomTypes | Y | - | Room types to apply. If missing, the offer will apply to all the room types. |
./RoomTypes/RoomType | N | - | Room type. There can be multiple nodes |
./RoomType/@Code | N | Integer | Internal room code. |
Boards | Y | - | Board types to apply. If missing, the offer will apply to all of the board types available for the contract. |
./Boards/Board | N | - | Board type. Multiple board nodes may be specified. |
./Board/@Code | N | Integer | Internal board code. |
LengthOfStay | Y | - | Length of stay. |
./LengthOfStay/@MinNights | Y | Integer | Minimum number of night to apply the offer. |
./LengthOfStay/@MaxNights | Y | Integer | Maximum number of night to apply the offer. |
ApplicationDays | Y | - | Days when the offer will applied. If missing, the offer will apply to all the days of the week. |
./ApplicationDays/@WeekDays | N | String | Weekdays that the offer will applied. Example “XX---XX” means that offer will applied on Monday, Tuesday, Saturday and Sunday. |
ApplyWithOffers | N | - | If you wish to apply multiple offers simultaneously (on which their respective conditions allow for them to be applied, of course), you may do so by relating them through the use of this node. It's important to note that the Juniper system will only allow for a maximum of up to two offers to be applied at once and for the same day (as a security measure), althrough some Juniper clients may configure their system to allow for more of them to be applied at once. |
./ApplyWithOffers/Offer | N | - | Another offer. |
./Offer/@Code | N | Integer | Internal offer code. You may retrieve the mentioned by sending a ExtranetHotelRates request after you've created them. |
BookingInAdvance | Y | - | The system will apply the offer if the user book in advance the checkin day. Only apply for EarlyBooking. |
./BookingInAdvance/@MinDays | Y | Integer | Minimum number of days prior the checkin day. |
./BookingInAdvance/@MaxDays | Y | Integer | Maximum number of days prior the chekin day. |
BookingDates | Y | - | The system will apply the offer only if the user book between these dates. |
./BookingDates/@From | Y | Date | Minimum date. |
./BookingDates/@To | Y | Date | Maximum date. |
FreePaxes | Y | - | Free paxes. Only apply to FreePaxes offer. |
./FreePaxes/ChildrenA | Y | - | Free children of first range |
./ChildrenA/ChildA | N | - | Free child. |
./ChildA/@Order | N | Integer | Order of free child. |
./FreePaxes/ChildrenB | Y | - | Free children of second range. |
./ChildrenB/ChildB | N | - | Free child. |
./ChildB/@Order | N | Integer | Order of free child. |
./FreePaxes/ChildrenC | Y | - | Free children of third range. |
./ChildrenC/ChildC | N | - | Free child. |
./ChildC/@Order | N | Integer | Order of free child. |
BoardUpgrade | Y | - | Board upgrade information. Only apply on BoardUpgrade offers. |
./BoardUpgrade/@BoardPayCode | N | Integer | Board type that client pays. |
./BoardUpgrade/@BoardGetCode | N | Integer | Board type that client obtains. |
FreeNights | Y | - | Free nights information. Only apply on FreeNights offers. |
./FreeNights/@Nights | N | Integer | Every this number of nights. |
./FreeNights/@Free | N | Integer | The client can have this number of free nights. |
./FreeNights/@ApplyOnce | N | Boolean | If the offer could apply many time in the same booking if the client stay many nights. |
./FreeNights/@Type | Y | String | Free night type. If missing, the system will use the Cheapest option for the calculation (as it has always being using prior to the implementation of this property). Possible values: • Cheapest • MostExpensive • FirstNight • LastNight • CheapestPeriod • LastNightPeriod • Average |
PaymentConditions | Y | - | Payment conditions. |
./PaymentConditions/@PaymentDate | Y | Date | Payment date. |
./PaymentConditions/@Percentage | Y | Double | Percentage. |
ChildrenAges | Y | - | Children age ranges that are applicable to the offer. |
./ChildrenAges/@FirstRangeFrom | N | Integer | Starting this age, passengers will be rated as children (below this age passengers would be rated as infants). |
./ChildrenAges/@FirstRangeTo | N | Integer | Maximum age for the first age range on which the system will rate the passengers as children. |
./ChildrenAges/@SecondRangeTo | Y | Integer | Maximun age for the second range on which the system will rate the passengers as children. |
./ChildrenAges/@ThirdRangeTo | Y | Integer | Maximun age for the third range on which the system will rate the passengers as children. |
Prices | N | - | Prices aplicated to the offer. Only apply to LowestPrice and EarlyBooking. |
./Prices/Price | N | - | There can be multiple prices. It has only allowed a Percent node, a Room node, or an Adult, ChildrenA, ChildrenB and ChildrenC nodes. |
./Price/@Type | N | String | Indicates the price type. Possible values: • Cost • Recommended |
./Price/@BaseType | N | String | Indicates the offer base type. Possible values: • Discount: Fixed discount • Percentage: Percentage • ReplaceRatePrice: Replace the rate prices • RateByPax: Prices per passenger type |
./Price/Percent | Y | - | Percent offer |
./Percent/@Amount | N | Double | Percent amount. |
./Price/Room | Y | - | Room fixed price offer. |
./Room/@Amount | N | Double | Price amount. |
./Room/@BaseType | Y | String | In RateByPax offers, indicates the price type. Possible values: • Discount: Subtract amount • ReplaceRatePrice: Replace prices • ReplacePercentage: Replace percentage rate |
./Price/Adult | Y | - | Adult fixed price offer. |
./Adult/@Amount | N | Double | Price amount |
./Adult/@BaseType | Y | String | In RateByPax offers, indicates the price type. Possible values: • Discount: Subtract amount • ReplaceRatePrice: Replace prices • ReplacePercentage: Replace percentage rate |
./Price/AdultAdditionals | Y | - | Price for additional adults. |
./AdultAdditionals/AdultAdditional | N | - | Daily price for each additional adult. There can be up to two nodes. |
./AdultAdditional/@Amount | N | Double | Daily price for each additional adult. |
./AdultAdditional/@Order | N | Integer | Indicate if is the first additional (1) or second (and nexts) (2). |
./AdultAdditional/@BaseType | Y | String | In RateByPax offers, indicates the price type. Possible values: • Discount: Subtract amount • ReplaceRatePrice: Replace prices • ReplacePercentage: Replace percentage rate |
./Price/ChildrenA | Y | - | First range children price. |
./ChildrenA/ChildA | N | - | |
./ChildA/@Amount | N | Double | Price amount. |
./ChildA/@Order | N | Integer | Child order. |
./ChildA/@BaseType | Y | String | In RateByPax offers, indicates the price type. Possible values: • Discount: Subtract amount • ReplaceRatePrice: Replace prices • ReplacePercentage: Replace percentage rate |
./Price/ChildrenB | Y | - | Second range children price. |
./ChildrenB/ChildB | N | - | |
./ChildB/@Amount | N | Double | Price amount. |
./ChildB/@Order | N | Integer | Child order. |
./ChildB/@BaseType | Y | String | In RateByPax offers, indicates the price type. Possible values: • Discount: Subtract amount • ReplaceRatePrice: Replace prices • ReplacePercentage: Replace percentage rate |
./Price/ChildrenC | Y | - | Third range children price. |
./ChildrenC/ChildC | N | - | |
./ChildC/@Amount | N | Double | Price amount. |
./ChildC/@Order | N | Integer | Child order. |
./ChildC/@BaseType | Y | String | In RateByPax offers, indicates the price type. Possible values: • Discount: Subtract amount • ReplaceRatePrice: Replace prices • ReplacePercentage: Replace percentage rate |
./Price/Babies | Y | - | Price for the babies. |
./Babies/Baby | N | - | Baby. |
./Baby/@Amount | N | Double | Price amount. |
./Baby/@Order | N | Integer | Baby order. |
./Baby/@BaseType | Y | String | In RateByPax offers, indicates the price type. Possible values: • Discount: Subtract amount • ReplaceRatePrice: Replace prices • ReplacePercentage: Replace percentage rate |
{AccessConditions} | Y | - | Access conditions that will apply to this offer, if not specified, the offer will apply to all. Restricted information that you will not be able to update unless granted permission to. |
CheckInDates | Y | - | The offer will apply when the booking is confirmed in between the following check-in dates. |
./CheckInDates/CheckInDate | Y | - | Check-in date pair. Multiple nodes may be specified. |
./CheckInDate/@From | N | Date | Start check-in date. |
./CheckInDate/@To | N | Date | End check-in date. |
Definition of the special notes object. We refer to this object as {SpecialNotes}
Specifications:
Node / Attribute (@) | Opt | Type | Description |
---|---|---|---|
Note | N | - | Special note. |
./Note/@From | Y | Date | Start application date. |
./Note/@To | Y | Date | End application date. |
./Note/Text | N | String | Text |
./Text/@Language | Y | String | Language. Follows the ISO 2 format. |
Definition of the access conditions object. We refer to this object as {AccessConditions}
Specifications:
Node / Attribute (@) | Opt | Type | Description |
---|---|---|---|
AccessCondition | Y | - | Node that contains information of the access condition. |
./AccessCondition/@AllowAccess | N | Boolean | Indicates that that the access is allowed. |
./AccessCondition/Market | Y | - | |
./Market/@Code | N | Integer | Market id of the access condition |
./Market/@Name | N | String | Market name |
./AccessCondition/AgencyGroup | Y | - | |
./AgencyGroup/@Code | N | Integer | AgencyGroup id of the access condition |
./AccessCondition/Customer | Y | - | |
./Customer/@Code | N | Integer | Customer id of the access condition |
./AccessCondition/CountryGroup | Y | - | |
./CountryGroup/@Code | N | Integer | Country group id of the access condition |
./AccessCondition/Country | Y | - | |
./Country/@Code | N | Integer | Country id of the access condition |
This section outlines all of the transactions that you will need in order to implement the ARI update process. Kindly refer to the ARI Update section if you would like for more information on how should you implement this process.
This petition allows you to get all the hotels and contracts related to your account.
Important note:
This is the first step through which you will be capable of retrieving all of the mapping information that you will later need in order to use any of the other requests (ExtranetHotelRates, ExtranetHotelRatesUpdate or ExtranetReadBooking). It is strongly recommended for you to retrieve as much information as possible through the same instead of relying on manually generated templates.
Node / Attribute (@) | Opt | Type | Description |
---|---|---|---|
@Version | N | String | WebService version. |
@Language | N | String | Requested language. If information from such language is unavailable, the response will be supplied to you along the Juniper supplier default language. All the error message will be sent on English. Follows the ISO 2 format. |
Login | N | - | Login container |
./Login/@Email | N | String | Username provided by the Juniper supplier. |
./Login/@Password | N | String | Password provided by the Juniper supplier. |
Hotels | Y | - | Hotels filter, list of requested hotels. If unavailable, all information related to all of the hotels to which the credentials have access to will be returned. |
./Hotels/Hotel | N | - | Requested hotel. |
./Hotel/@Code | Y | Integer | Internal hotel code. To be supplied to you by the Juniper supplier (along the XML credentials) and/or retrieved through the use of this same transaction. |
./Hotel/@Name | Y | String | Hotel name. You may search part of a name. |
./Hotel/Contracts | Y | - | Contracts filter, list of requested contracts. |
./Contracts/Contract | N | - | Requested contract. |
./Contract/@Code | N | Integer | Internal contract code. |
Zones | Y | - | Zones filter, list of requested zones. |
./Zones/Zone | N | - | Requested zone. |
./Zone/@Code | N | Integer | Internal zone code. |
Categories | Y | - | Category filter, list of requested categories. |
./Categories/Category | N | - | Requested category. |
./Category/@Code | N | Integer | Internal category code. |
Suppliers | Y | - | Suppliers filter, list of requested suppliers. |
./Suppliers/Supplier | N | - | Requested supplier. |
./Supplier/@Code | N | Integer | Internal supplier code. |
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns="http://www.juniper.es/webservice/2007/">
<soapenv:Header/>
<soapenv:Body>
<ExtranetHotelList>
<HotelListRQ Version="1.1" Language="en">
<Login Email="user@mydomain.com" Password="pass"/>
</HotelListRQ>
</ExtranetHotelList>
</soapenv:Body>
</soapenv:Envelope>
Node / Attribute (@) | Opt | Type | Description |
---|---|---|---|
@Url | N | String | Requested base endpoint. |
@TimeStamp | N | DateTime | Response date and time. Format: yyyy-MM-ddThh:mm:ss (UTC). |
@IntCode | N | String | Internal response code. |
Errors | Y | - | Applicable errors. |
./Errors/Error | Y | - | Specific error. |
./Error/@Code | Y | String | Typified error code. Kindly refer to the Exceptions section of the API if you would like for more information in this regard. |
./Error/Text | Y | String | Error description. |
Hotels | N | - | List of hotels |
./Hotels/Hotel | N | - | Hotel |
./Hotel/@Code | N | Integer | Hotel code |
./Hotel/@JPCode | Y | String | Juniper unique hotel code |
./Hotel/Name | N | String | Hotel name. |
./Hotel/Zone | N | - | Hotel zone. |
./Zone/@Code | N | Integer | Internal zone code. |
./Zone/Name | N | String | Specific destination name. |
./Zone/CompleteName | N | String | Whole destination tree name. |
./Hotel/Category | N | - | Hotel category. |
./Category/@Code | N | - | Internal category code. |
./Category/Name | N | - | Category name. |
./Hotel/Provider | N | - | Hotel provider. |
./Provider/@Code | N | - | Internal provider code. |
./Provider/Name | N | - | Provider name. |
./Hotel/AddressInformation | N | - | Hotel address information. |
./AddressInformation/Address | N | String | Address. |
./AddressInformation/PostalCode | N | String | Postal code |
./AddressInformation/Latitude | Y | Double | Latitude of the hotel position. |
./AddressInformation/Longitude | Y | Double | Longitude of the hotel position. |
./Hotel/Contracts | Y | - | List of available contracts. |
./Contracts/Contract | N | - | Specific contract. |
./Contract/@Code | N | Integer | Internal contract code. |
./Contract/@Active | N | Boolean | If the contract is active or not and, in short, if it may be sold. |
./Contract/@ExternalCode | Y | String | Contract external code. |
./Contract/@Currency | N | String | Currency code. |
./Contract/@RecommendedPrices | N | Boolean | If the contract will also allow/require for recommended prices. If true, it will require for both the cost and the recommended price to be updated at once when initializing a rate. This is a very important setting to understand, do not hesitate to contact with Juniper if you have any doubt in this regard. |
./Contract/@DirectPayment | N | Boolean | Indicates if it is a direct payment contract. |
./Contract/@ModificationsAllowed | Y | Boolean | Indicates if the contract may be updated or if it is a read only one. Read only contracts will be supplied to you purely for mapping purposes so that you will be capable of integrating offline bookings into your system. If unavailable, it will imply that there are no mappings available for offline booking retrieval and that all of the related contracts allow for modifications. |
./Contract/@MinimumAge | Y | Integer | Minimum guest's age allowed by the hotel. |
./Contract/Name | N | String | Contract name. |
./Contract/AllowModificationsTo | N | Date | Maximum date in which modifications are allowed. |
./Contract/Season | N | String | Contract season, date range of the contract. Currently, our system allows for a contract season date of up to 30 months starting today. This is a very important field to keep in mind as, if you attempt to update dates from outside of the contract, you will instead get an error response. Our recommendation here would be for you to use this field in order to: • Verify that the contract allows for the expected dates • Validate that you will only be updating dates from within the contract |
./Season/@From | N | Date | From date. |
./Season/@To | N | Date | To date. |
./Contract/ChildrenAges | N | String | Children age range for this contract. It is strongly recommended for you to verify that the hotel follows the expected age ranges and, if not, request for its correction along the Juniper client to which you will be connecting with. |
./ChildrenAges/@FirstRangeFrom | N | Integer | Starting this age, passengers will be rated as children (below this age passengers would be rated as infants which are free on our system). |
./ChildrenAges/@FirstRangeTo | N | Integer | Maximum age for the first age range on which the system will rate the passengers as children. |
./ChildrenAges/@SecondRangeTo | Y | Integer | Maximun age for the second range on which the system will rate the passengers as children. If available, the hotel will allow for two age range prices to be updated. |
./ChildrenAges/@ThirdRangeTo | Y | Integer | Maximun age for the third range on which the system will rate the passengers as children. If available, the hotel will allow for three age range prices to be updated. |
./Contract/RoomTypes | N | - | List of available rooms of the contract. |
./RoomTypes/RoomType | N | - | Specific room. |
./RoomType/@Code | N | Integer | Internal room code. This is one of the most important fields for room mapping purposes. |
./RoomType/@AdditionalFrom | Y | Integer | Starting this adult, adults will be rated as additionals adults. This is a very important field as it will modify how adults will be rated on such room, do not hesitate to contact with Juniper if you have any doubt in this regard. |
./RoomType/@PriceByRoom | N | Boolean | Indicates if the room will be a price per room one. Rooms from our system may either be rated as price per room or price per passenger (if the former case, allowing for you to set a price that stands for the whole room). |
./RoomType/@MaxPaxes | Y | Integer | Maximum number of passengers (regardless of if they're adults, children and/or infants) allowed within the room. |
./RoomType/@ExternalCode | Y | String | Room external code. |
./RoomType/@MaxAdultAdditionalOrder | N | Integer | Maximum number of additional adult prices that may be specified though the use of the @Order property from the ExtranetHotelRatesUpdate request. The last additional adult price will apply to any other additional adult that the room may allow for (for example, if the room has a @MaxAdultAdditionalOrder of 2 while it allows for up to 10 adults, the @Order 2 price will also apply to any adult beyond the second). |
./RoomType/@MaxChildOrder | N | Integer | Maximum number of children prices that may be specified though the use of the @Order property from the ExtranetHotelRatesUpdate request. |
./RoomType/Name | N | String | Room name. |
./RoomType/Occupancies | N | - | List of available occupancies of the room. The room will always have atleast one occupancy but it could have more depending on its configuration. |
./Occupancies/Occupancy | N | - | Specific passenger occupancy. It is important to note that an specific room may allow for multiple occupancies. |
./Occupancy/@MinAdults | N | Integer | Minimum number of adults allowed within the room. |
./Occupancy/@MaxAdults | N | Integer | Maximum number of adults allowed within the room. |
./Occupancy/@MinChildren | N | Integer | Minimum number of children allowed within the room. |
./Occupancy/@MaxChildren | N | Integer | Maximum number of children allowed within the room. |
./RoomType/AgeLimits | Y | - | Age limits |
./AgeLimits/AgeLimit | Y | - | Age limit |
./AgeLimit/@Type | N | String | Age limit type. Possible values: • Child • Guest |
./AgeLimit/@From | N | Integer | From age |
./AgeLimit/@MaxAge | N | Integer | Maximum age |
./Contract/BoardTypes | N | - | List of available board types of the contract. Currently, all of the rooms from a specific contract will always allow for the price to be updated on any of the available board types. If you wish to manage board type specific contracts (on hotels that allow for multiple ones) you should simply manage the same by only mapping and updating a single board type from within the contract. |
./BoardTypes/BoardType | N | - | Specific board type. |
./BoardType/@Code | N | Integer | Internal board type code. |
./BoardType/Name | N | String | Board type name. |
./Contract/MinimumAge | Y | - | Minimum age configuration. Optional configuration from the system on which the hotel may set minimum age configurations by date range. |
./MinimumAge/Dates | Y | - | Minimum age date ranges. |
./Dates/Date | N | - | Specific date range. |
./Date/@From | N | Date | From date. |
./Date/@To | N | Date | To date. |
./Date/@MinimumAge | N | Integer | Minimum age for the date range. |
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<ExtranetHotelListResponse xmlns="http://www.juniper.es/webservice/2007/">
<ExtranetHotelListRS Url="https://juniper-uat.bookingengine.es" TimeStamp="2019-10-25T11:46:32.7223098+02:00" IntCode="Mtc6a+OP6lguYUUWr5d4uVtZcKxCC/HFyBzi9p/xTF4=">
<Hotels>
<Hotel Code="125" JPCode="JP046300">
<Name>APARTAMENTOS ALLSUN PIL-LARI PLAYA</Name>
<Zone Code="2">
<Name>Playa De Palma</Name>
<CompleteName>Playa De Palma - Palma de Mallorca - Majorca - Spain</CompleteName>
</Zone>
<Category Code="3">
<Name>3 Stars</Name>
</Category>
<Provider Code="58">
<Name>Default supplier</Name>
</Provider>
<AddressInformation>
<Address>Calle Marbella 24</Address>
<PostalCode>07006</PostalCode>
<Longitude>2.627979</Longitude>
<Latitude>39.564713</Latitude>
</AddressInformation>
<Contracts>
<Contract Code="177" Active="true" RecommendedPrices="true" DirectPayment="false" ExternalCode="" Currency="USD" ModificationsAllowed="true" MinimumAge="14">
<Name>General extranet contract</Name>
<Season From="2016-03-07" To="2020-12-31"/>
<ChildrenAges FirstRangeFrom="2" FirstRangeTo="7" SecondRangeTo="12"/>
<AllowModificationsTo>2022-04-25</AllowModificationsTo>
<RoomTypes>
<RoomType Code="5" PriceByRoom="true" MaxPaxes="2" ModificationsAllowed="true" MaxAdultAdditionalOrder="0" MaxChildOrder="1">
<Name>Double</Name>
<Occupancies>
<Occupancy MinAdults="2" MaxAdults="2" MinChildren="0" MaxChildren="0"/>
<Occupancy MinAdults="1" MaxAdults="1" MinChildren="1" MaxChildren="1"/>
</Occupancies>
</RoomType>
<RoomType Code="171" AdditionalFrom="2" PriceByRoom="false" MaxPaxes="3" ModificationsAllowed="true" MaxAdultAdditionalOrder="2" MaxChildOrder="1">
<Name>Triple [PER|ADI]</Name>
<Occupancies>
<Occupancy MinAdults="2" MaxAdults="3" MinChildren="0" MaxChildren="1"/>
</Occupancies>
</RoomType>
<RoomType Code="206" PriceByRoom="false" MaxPaxes="3" ModificationsAllowed="true" MaxAdultAdditionalOrder="0" MaxChildOrder="1">
<Name>Triple [PER]</Name>
<Occupancies>
<Occupancy MinAdults="2" MaxAdults="3" MinChildren="0" MaxChildren="1"/>
</Occupancies>
</RoomType>
<RoomType Code="207" PriceByRoom="true" MaxPaxes="3" ModificationsAllowed="true" MaxAdultAdditionalOrder="0" MaxChildOrder="1">
<Name>Triple [ROO]</Name>
<Occupancies>
<Occupancy MinAdults="2" MaxAdults="3" MinChildren="0" MaxChildren="1"/>
</Occupancies>
</RoomType>
<RoomType Code="208" AdditionalFrom="3" PriceByRoom="true" MaxPaxes="3" ModificationsAllowed="true" MaxAdultAdditionalOrder="1" MaxChildOrder="1">
<Name>Triple [ROO|ADI]</Name>
<Occupancies>
<Occupancy MinAdults="2" MaxAdults="3" MinChildren="0" MaxChildren="1"/>
</Occupancies>
</RoomType>
<RoomType Code="209" AdditionalFrom="3" PriceByRoom="true" MaxPaxes="15" ModificationsAllowed="true" MaxAdultAdditionalOrder="2" MaxChildOrder="2">
<Name>Bigger Room (Pricing Testing)</Name>
<Occupancies>
<Occupancy MinAdults="1" MaxAdults="10" MinChildren="0" MaxChildren="10"/>
</Occupancies>
</RoomType>
</RoomTypes>
<BoardTypes>
<BoardType Code="1">
<Name>Half Board</Name>
</BoardType>
<BoardType Code="2">
<Name>Bed & Breakfast</Name>
</BoardType>
<BoardType Code="3">
<Name>Room Only</Name>
</BoardType>
<BoardType Code="5">
<Name>All Inclusive</Name>
</BoardType>
</BoardTypes>
</Contract>
</Contracts>
</Hotel>
</Hotels>
</ExtranetHotelListRS>
</ExtranetHotelListResponse>
</soap:Body>
</soap:Envelope>
This petition allows you to get the rates and allotment of a specific contract.
Node / Attribute (@) | Opt | Type | Description |
---|---|---|---|
@Version | N | String | WebService version. |
@Language | N | String | Requested language. If information from such language is unavailable, the response will be supplied to you along the Juniper supplier default language. All the error message will be sent on English. Follows the ISO 2 format. |
Login | N | - | Login container |
./Login/@Email | N | String | Username provided by the Juniper supplier. |
./Login/@Password | N | String | Password provided by the Juniper supplier. |
Hotels | N | - | List of hotels you wish to retrieve rates from. |
./Hotels/Hotel | N | - | Requested hotel. |
./Hotel/@Code | N | Integer | Internal hotel code. May be retrieved through the use of the ExtranetHotelList request. |
./Hotel/Contracts | N | - | List of contracts you with to retrieve rates from. |
./Contracts/Contract | Y | - | Requested contract. |
./Contract/@Code | N | Integer | Internal contract code. |
Date | N | - | List of dates you wish to retrieve rates from. |
./Date/@From | N | Date | Start date |
./Date/@To | N | Date | End date |
Elements | Y | - | Information that you may wish to retrieved through this request. This is specially helpful for thoses cases on which you only wish to retrieve a specific information (for example, the previously existing allotment of a room) as, by restricting the same, the response will be much faster and lighter. |
./Elements/@Rates | Y | Boolean | Rates. Default: True |
./Elements/@Allotments | Y | Boolean | Allotments. Default: True |
./Elements/@StopSales | Y | Boolean | StopSales. Default: True |
./Elements/@Releases | Y | Boolean | Releases. Default: True |
./Elements/@Restrictions | Y | Boolean | Restrictions. Default: True |
./Elements/@Supplements | Y | Boolean | Supplements. Default: True |
./Elements/@Offers | Y | Boolean | Offers. Default: True |
./Elements/@AdditionalInfo | Y | Boolean | AdditionalInfo. Default: True |
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns="http://www.juniper.es/webservice/2007/">
<soapenv:Header/>
<soapenv:Body>
<ExtranetHotelRates>
<HotelRatesRQ Version="1.1" Language="en">
<Login Email="user@mydomain.com" Password="pass"/>
<Hotels>
<Hotel Code="125">
<Contracts>
<Contract Code="177"/>
</Contracts>
</Hotel>
</Hotels>
<Date From="2019-10-10" To="2019-10-10"/>
<Elements Rates="true" Allotments="true" StopSales="true" Releases="true" Restrictions="true" Supplements="true" Offers="true" AdditionalInfo="true"/>
</HotelRatesRQ>
</ExtranetHotelRates>
</soapenv:Body>
</soapenv:Envelope>
Node / Attribute (@) | Opt | Type | Description |
---|---|---|---|
@Url | N | String | Requested base endpoint. |
@TimeStamp | N | DateTime | Response date and time. Format: yyyy-MM-ddThh:mm:ss (UTC). |
@IntCode | N | String | Internal response code. |
Errors | Y | - | Applicable errors. |
./Errors/Error | Y | - | Specific error. |
./Error/@Code | Y | String | Typified error code. Kindly refer to the Exceptions section of the API if you would like for more information in this regard. |
./Error/Text | Y | String | Error description. |
Hotels | N | - | List of hotels. |
./Hotels/Hotel | N | - | Hotel. |
./Hotel/@Code | N | Integer | Internal hotel code. |
./Hotel/Contracts | N | - | List of contracts. |
./Contracts/Contract | N | - | Contract. |
./Contract/@Code | N | Integer | Internal contract code. |
./Contract/@Currency | N | String | Currency of this contract. |
./Contract/Rates | Y | - | List of available rates. |
./Rates/{Rate} | N | - | Specific rate available. As with all of the below elements, refer to the Hotel Extranet Generic Types section for further information. |
./Contract/Allotments | Y | - | List of available allotments. |
./Allotments/{Allotment} | N | - | Specific allotment available. |
./Contract/StopSales | Y | - | List of available stopsales. |
./StopSales/{StopSale} | N | - | Specific stop sale available. |
./Contract/Releases | Y | - | List of available releases. |
./Releases/{Release} | N | - | Specific release available. |
./Contract/Restrictions | Y | - | List of available restrictions. |
./Restrictions/{Restriction} | N | - | Specific restriction available. |
./Contract/Supplements | Y | - | List of available supplements. |
./Supplements/{Supplement} | N | - | Specific supplement available. |
./Contract/Offers | Y | - | List of available offers. |
./Offers/{Offer} | N | - | Specific offer available. |
./Contract/AdditionalInfo | Y | - | List of available additional informations. |
./AdditionalInfo/{SpecialNotes} | N | - | Specific special note available. |
<soap:Envelope xmlns:soap = "http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd = "http://www.w3.org/2001/XMLSchema">
<soap:Body>
<ExtranetHotelRatesResponse xmlns = "http://www.juniper.es/webservice/2007/">
<ExtranetRatesRS Url = "https://juniper-uat.bookingengine.es" TimeStamp = "2019-10-28T09:22:05.1922346+01:00" IntCode = "j01My3umRWbLui35n+B0zOnI2jdCTAW23wdMUPmw3d8=">
<Hotels>
<Hotel Code = "125">
<Contracts>
<Contract Code = "177" Currency = "USD">
<Rates>
<Rate Type = "Fixed">
<Dates>
<Date From = "2019-10-10" To = "2019-10-10"/>
</Dates>
<Prices>
<Price RoomTypeCode = "171" BoardCode = "2" Type = "Cost">
<Adult Amount = "100"/>
<AdultAdditionals>
<AdultAdditional Amount = "80" Order = "1"/>
</AdultAdditionals>
<ChildrenA>
<ChildA Amount = "20" Order = "1"/>
</ChildrenA>
<ChildrenB>
<ChildB Amount = "20" Order = "1"/>
</ChildrenB>
</Price>
<Price RoomTypeCode = "171" BoardCode = "3" Type = "Cost">
<Adult Amount = "50"/>
<AdultAdditionals>
<AdultAdditional Amount = "40" Order = "1"/>
</AdultAdditionals>
<ChildrenA>
<ChildA Amount = "0" Order = "1"/>
</ChildrenA>
<ChildrenB>
<ChildB Amount = "0" Order = "1"/>
</ChildrenB>
</Price>
</Prices>
</Rate>
<Rate Type = "Fixed">
<Dates>
<Date From = "2019-10-10" To = "2019-10-10"/>
</Dates>
<Prices>
<Price RoomTypeCode = "184" BoardCode = "2" Type = "Cost">
<Room Amount = "200"/>
<Adult Amount = "0"/>
<ChildrenA>
<ChildA Amount = "0" Order = "1"/>
</ChildrenA>
<ChildrenB>
<ChildB Amount = "0" Order = "1"/>
</ChildrenB>
</Price>
<Price RoomTypeCode = "184" BoardCode = "3" Type = "Cost">
<Room Amount = "150"/>
<Adult Amount = "0"/>
<ChildrenA>
<ChildA Amount = "0" Order = "1"/>
</ChildrenA>
<ChildrenB>
<ChildB Amount = "0" Order = "1"/>
</ChildrenB>
</Price>
</Prices>
<Supplements>
<Supplement Type = "BoardSupplement" Active = "false" AplicationType = "BasePrice" Mandatory = "false" BaseBoardCode = "1">
<Boards>
<Board Code = "2"/>
</Boards>
<Prices>
<Price Type = "Cost">
<Adult Amount = "56"/>
</Price>
</Prices>
</Supplement>
</Supplements>
</Rate>
</Rates>
<Allotments>
<Allotment BaseAllotment = "10" NormalUsed = "0" ExtraAllotment = "0" TotalAvailable = "10" FreeSales = "false">
<Dates>
<Date From = "2019-10-10" To = "2019-10-10"/>
</Dates>
<RoomTypes>
<RoomType Code = "171"/>
</RoomTypes>
</Allotment>
<Allotment BaseAllotment = "15" NormalUsed = "0" ExtraAllotment = "0" TotalAvailable = "15" FreeSales = "false">
<Dates>
<Date From = "2019-10-10" To = "2019-10-10"/>
</Dates>
<RoomTypes>
<RoomType Code = "184"/>
</RoomTypes>
</Allotment>
</Allotments>
<StopSales>
<StopSale Action = "Close">
<Dates>
<Date From = "2019-10-10" To = "2019-10-10"/>
</Dates>
<RoomTypes>
<RoomType Code = "184"/>
</RoomTypes>
</StopSale>
</StopSales>
<Releases>
<Release Days = "1">
<Dates>
<Date From = "2019-10-10" To = "2019-10-10"/>
</Dates>
<RoomTypes>
<RoomType Code = "171"/>
</RoomTypes>
</Release>
</Releases>
<Restrictions>
<Restriction Type = "MinimumStay">
<Dates>
<Date From = "2019-10-10" To = "2019-10-10"/>
</Dates>
<LengthOfStay MinNights = "3"/>
<RoomTypes>
<RoomType Code = "171"/>
</RoomTypes>
<Boards>
<Board Code = "2"/>
</Boards>
<ApplicationDays WeekDays = "----X--"/>
</Restriction>
</Restrictions>
<Supplements>
<Supplement Type = "Basic" Code = "10998" Active = "false" AplicationType = "BaseMeal" Mandatory = "true" ExternalCode = "ExtCode123">
<Dates>
<Date From = "2019-09-01" To = "2019-10-31"/>
</Dates>
<Boards>
<Board Code = "1"/>
</Boards>
<Names>
<Name Language = "es">Suplemento básico</Name>
<Name Language = "en">Basic supplement</Name>
</Names>
<Prices>
<Price Type = "Cost">
<Adult Amount = "52.63"/>
<ChildrenA>
<ChildA Amount = "6.32" Order = "1"/>
<ChildA Amount = "6.32" Order = "2"/>
</ChildrenA>
<ChildrenB>
<ChildB Amount = "7.37" Order = "1"/>
</ChildrenB>
</Price>
</Prices>
</Supplement>
<Supplement Type = "ShortStay" Code = "11094" Active = "true" AplicationType = "BaseMeal" Mandatory = "true">
<Dates>
<Date From = "2019-09-01" To = "2019-10-31"/>
</Dates>
<LengthOfStay MaxNights = "2"/>
<RoomTypes>
<RoomType Code = "887"/>
</RoomTypes>
<Names>
<Name Language = "es">Estancia corta</Name>
<Name Language = "en">Short stay</Name>
</Names>
<ApplicationDays WeekDays = "X------"/>
<Prices>
<Price Type = "Cost">
<Percent Amount = "4"/>
</Price>
</Prices>
</Supplement>
</Supplements>
<Offers>
<Offer Type = "LowerPrices" Code = "11006" Active = "false" AplicationType = "BaseMeal" Priority = "0" NonRefundable = "false" ApplyAdditionals = "false" ApplyChildren = "false" ExternalCode = "ExtCode123">
<Dates>
<Date From = "2019-09-01" To = "2019-10-31"/>
</Dates>
<Boards>
<Board Code = "1"/>
</Boards>
<Names>
<Name Language = "es">Descuento</Name>
<Name Language = "en">Discount</Name>
</Names>
<Prices>
<Price Type = "Cost" BaseType = "ReplaceRatePrice">
<Room Amount = "78"/>
</Price>
</Prices>
</Offer>
<Offer Type = "EarlyBooking" Code = "11074" Active = "true" AplicationType = "BaseMeal" Priority = "10" NonRefundable = "true" ApplyAdditionals = "true" ApplyChildren = "true">
<Dates>
<Date From = "2019-09-01" To = "2019-10-31"/>
</Dates>
<LengthOfStay MinNights = "6"/>
<Boards>
<Board Code = "1"/>
</Boards>
<Names>
<Name Language = "es">Early booking</Name>
<Name Language = "en">Early booking</Name>
</Names>
<BookingDates From = "2019-09-01" To = "2019-10-31"/>
<PaymentConditions PaymentDate = "2020-03-18" Percentage = "10"/>
<Prices>
<Price Type = "Cost" BaseType = "Discount">
<Room Amount = "6.67"/>
</Price>
</Prices>
</Offer>
<Offer Type = "FreeNights" Code = "11075" Active = "true" AplicationType = "BaseMeal" Priority = "10" NonRefundable = "true" ApplyAdditionals = "true" ApplyChildren = "false">
<Dates>
<Date From = "2019-09-01" To = "2019-10-31"/>
</Dates>
<ApplyWithOffers>
<Offer Code = "11006"/>
</ApplyWithOffers>
<Names>
<Name Language = "es">Noches gratis</Name>
<Name Language = "en">Nights free</Name>
</Names>
<FreeNights Nights = "8" Free = "2" ApplyOnce = "true"/>
</Offer>
<Offer Type = "BoardUpgrade" Code = "11076" Active = "true" AplicationType = "BaseMeal" Priority = "10" NonRefundable = "true" ApplyAdditionals = "false" ApplyChildren = "true" ExternalCode = "ExtCode456">
<Dates>
<Date From = "2019-09-01" To = "2019-10-31"/>
</Dates>
<LengthOfStay MinNights = "6" MaxNights = "10"/>
<Names>
<Name Language = "es">Cambio de régimen</Name>
<Name Language = "en">Board upgrade</Name>
</Names>
<BoardUpgrade BoardPayCode = "15" BoardGetCode = "7"/>
</Offer>
<Offer Type = "FreePaxes" Code = "11077" Active = "true" AplicationType = "BaseMeal" Priority = "10" NonRefundable = "true" ApplyAdditionals = "true" ApplyChildren = "true">
<Dates>
<Date From = "2019-09-01" To = "2019-10-31"/>
</Dates>
<LengthOfStay MinNights = "6" MaxNights = "10"/>
<Names>
<Name Language = "es">Niños gratis</Name>
<Name Language = "en">Free child</Name>
</Names>
<FreePaxes>
<ChildrenA>
<ChildA Order = "1"/>
<ChildA Order = "2"/>
<ChildA Order = "3"/>
</ChildrenA>
<ChildrenB>
<ChildB Order = "1"/>
<ChildB Order = "2"/>
<ChildB Order = "3"/>
</ChildrenB>
</FreePaxes>
</Offer>
</Offers>
</Contract>
</Contracts>
</Hotel>
</Hotels>
</ExtranetRatesRS>
</ExtranetHotelRatesResponse>
</soap:Body>
</soap:Envelope>
It refers to the request for updating the hotel rates and allotment.
Important note:
When updating a room, it will be very important for you to understand its configuration (if it is price per room, if it is price per passenger, if it allows for additional adults, if the hotel has one or two children age ranges, etc...) and modify its rates accordingly as, otherwise, you would not only most likely update the wrong price on the system but get an error response on the API.
Node / Attribute (@) | Opt | Type | Description |
---|---|---|---|
@Version | N | String | WebService version. |
@Language | N | String | Requested language. If information from such language is unavailable, the response will be supplied to you along the Juniper supplier default language. All the error message will be sent on English. Follows the ISO 2 format. |
Login | N | - | Login container |
./Login/@Email | N | String | Username provided by the Juniper supplier. |
./Login/@Password | N | String | Password provided by the Juniper supplier. |
Contracts | N | - | List of contracts to update. Only one contract may be updated per request, otherwise, a JP_ITEMS_MAX error response will be returned. |
./Contracts/Contract | N | - | Contract to update. |
./Contract/@Code | N | Integer | Internal contract code. |
./Contract/Rates | Y | - | List of rates to change. |
./Rates/{Rate} | N | - | Specific rate you wish to update. As with all of the below elements, refer to the Hotel Extranet Generic Types section for further information. |
./Contract/Allotments | Y | - | List of allotments to change. |
./Allotments/{Allotment} | N | - | Specific allotment you wish to update. |
./Contract/StopSales | Y | - | List of stop sales to change. |
./StopSales/{StopSale} | N | - | Specific stop sale you wish to update. |
./Contract/Releases | Y | - | List of releases to change. |
./Releases/{Release} | N | - | Specific release you wish to update. |
./Contract/Restrictions | Y | - | List of restrictions to change. |
./Restrictions/{Restriction} | N | - | Specific restriction you wish to update. |
./Contract/Supplements | Y | - | List of supplements to change. |
./Supplements/{Supplement} | N | - | Specific supplement you wish to update. |
./Contract/Offers | Y | - | List of offers to change. |
./Offers/{Offer} | N | - | Specific offfer you wish to update. |
./Contract/AdditionalInfo | Y | - | List of additional informations to change. |
./AdditionalInfo/{SpecialNotes} | N | - | Specific special note you wish to update. |
<soapenv:Envelope xmlns:soapenv = "http://schemas.xmlsoap.org/soap/envelope/" xmlns = "http://www.juniper.es/webservice/2007/">
<soapenv:Header/>
<soapenv:Body>
<ExtranetHotelRatesUpdate>
<HotelRatesUpdateRQ Version = "1.1" Language = "en">
<Login Email = "user@mydomain.com" Password = "pass"/>
<Contracts>
<Contract Code = "177">
<Rates>
<Rate Type = "Fixed">
<Dates>
<Date From = "2019-10-10" To = "2019-10-10"/>
</Dates>
<Prices>
<Price RoomTypeCode = "171" BoardCode = "2" Type = "Cost">
<Adult Amount = "130"/>
<AdultAdditionals>
<AdultAdditional Amount = "100" Order = "1"/>
</AdultAdditionals>
<ChildrenA>
<ChildA Amount = "30" Order = "1"/>
</ChildrenA>
<ChildrenB>
<ChildB Amount = "30" Order = "1"/>
</ChildrenB>
</Price>
</Prices>
<Supplements>
<Supplement Type = "BoardSupplement" Active = "false" AplicationType = "BasePrice" Mandatory = "false" BaseBoardCode = "1" ExternalCode = "ExtCode123">
<Boards>
<Board Code = "2"/>
</Boards>
<Prices>
<Price Type = "Cost">
<Adult Amount = "56"/>
</Price>
</Prices>
</Supplement>
<ApplicableOccupancies>
<Occupancy MinAdults = "2" MaxAdults = "3" MinChildren = "0" MaxChildren = "0"/>
</ApplicableOccupancies>
</Supplements>
</Rate>
</Rates>
<Allotments>
<Allotment FreeSales = "true">
<Dates>
<Date From = "2019-10-10" To = "2019-10-10"/>
</Dates>
<RoomTypes>
<RoomType Code = "171"/>
</RoomTypes>
</Allotment>
</Allotments>
<StopSales>
<StopSale Action = "OnRequest">
<Dates>
<Date From = "2019-10-10" To = "2019-10-10"/>
</Dates>
<RoomTypes>
<RoomType Code = "171"/>
</RoomTypes>
</StopSale>
</StopSales>
<Releases>
<Release Days = "3">
<Dates>
<Date From = "2019-10-10" To = "2019-10-10"/>
</Dates>
<RoomTypes>
<RoomType Code = "171"/>
</RoomTypes>
</Release>
</Releases>
<Restrictions>
<Restriction Type = "MinimumStay">
<Dates>
<Date From = "2019-10-10" To = "2019-10-10"/>
</Dates>
<LengthOfStay MinNights = "5"/>
<RoomTypes>
<RoomType Code = "171"/>
</RoomTypes>
<Boards>
<Board Code = "2"/>
</Boards>
<ApplicationDays WeekDays = "----X--"/>
</Restriction>
</Restrictions>
<Supplements>
<Supplement Type = "Basic" Code = "10998" Active = "false" AplicationType = "BaseMeal" Mandatory = "true">
<Dates>
<Date From = "2019-09-01" To = "2019-10-31"/>
</Dates>
<Boards>
<Board Code = "1"/>
</Boards>
<Names>
<Name Language = "es">Suplemento básico</Name>
<Name Language = "en">Basic supplement</Name>
</Names>
<Prices>
<Price Type = "Cost">
<Adult Amount = "52.63"/>
<ChildrenA>
<ChildA Amount = "6.32" Order = "1"/>
<ChildA Amount = "6.32" Order = "2"/>
</ChildrenA>
<ChildrenB>
<ChildB Amount = "7.37" Order = "1"/>
</ChildrenB>
</Price>
</Prices>
</Supplement>
<Supplement Type = "ShortStay" Code = "11094" Active = "true" AplicationType = "BaseMeal" Mandatory = "true">
<Dates>
<Date From = "2019-09-01" To = "2019-10-31"/>
</Dates>
<LengthOfStay MaxNights = "2"/>
<RoomTypes>
<RoomType Code = "887"/>
</RoomTypes>
<Names>
<Name Language = "es">Estancia corta</Name>
<Name Language = "en">Short stay</Name>
</Names>
<ApplicationDays WeekDays = "X------"/>
<Prices>
<Price Type = "Cost">
<Percent Amount = "4"/>
</Price>
</Prices>
<ApplicableOccupancies>
<Occupancy MinAdults = "1" MaxAdults = "2" MinChildren = "0" MaxChildren = "1"/>
</ApplicableOccupancies>
</Supplement>
</Supplements>
<Offers>
<Offer Type = "LowerPrices" Code = "11006" Active = "false" AplicationType = "BaseMeal" Priority = "0" NonRefundable = "false" ApplyAdditionals = "false" ApplyChildren = "false">
<Dates>
<Date From = "2019-09-01" To = "2019-10-31"/>
</Dates>
<Boards>
<Board Code = "1"/>
</Boards>
<Names>
<Name Language = "es">Descuento</Name>
<Name Language = "en">Discount</Name>
</Names>
<Prices>
<Price Type = "Cost" BaseType = "ReplaceRatePrice">
<Room Amount = "78"/>
</Price>
</Prices>
</Offer>
<Offer Type = "EarlyBooking" Code = "11074" Active = "true" AplicationType = "BaseMeal" Priority = "10" NonRefundable = "true" ApplyAdditionals = "true" ApplyChildren = "true" ExternalCode = "ExtCode123">
<Dates>
<Date From = "2019-09-01" To = "2019-10-31"/>
</Dates>
<LengthOfStay MinNights = "6"/>
<Boards>
<Board Code = "1"/>
</Boards>
<Names>
<Name Language = "es">Early booking</Name>
<Name Language = "en">Early booking</Name>
</Names>
<BookingDates From = "2019-09-01" To = "2019-10-31"/>
<PaymentConditions PaymentDate = "2020-03-18" Percentage = "10"/>
<Prices>
<Price Type = "Cost" BaseType = "Discount">
<Room Amount = "6.67"/>
</Price>
</Prices>
<AccessConditions>
<AccessCondition AllowAccess = "true"/>
<AccessCondition AllowAccess = "false">
<Country Code = "13" Name = "ARUBA"/>
</AccessCondition>
<AccessCondition AllowAccess = "false">
<Market Code = "6" Name = "International"/>
<AgencyGroup Code = "58" Name = "Grupo Agencia"/>
<Customer Code = "13984" Name = "AGENCIA"/>
<CountryGroup Code = "2" Name = "NORTHAMERICA"/>
<Country Code = "12" Name = "MEXICO"/>
</AccessCondition>
</AccessConditions>
</Offer>
<Offer Type = "FreeNights" Code = "11075" Active = "true" AplicationType = "BaseMeal" Priority = "10" NonRefundable = "true" ApplyAdditionals = "true" ApplyChildren = "false">
<Dates>
<Date From = "2019-09-01" To = "2019-10-31"/>
</Dates>
<ApplyWithOffers>
<Offer Code = "11006"/>
</ApplyWithOffers>
<Names>
<Name Language = "es">Noches gratis</Name>
<Name Language = "en">Nights free</Name>
</Names>
<FreeNights Nights = "8" Free = "2" ApplyOnce = "true"/>
</Offer>
<Offer Type = "BoardUpgrade" Code = "11076" Active = "true" AplicationType = "BaseMeal" Priority = "10" NonRefundable = "true" ApplyAdditionals = "false" ApplyChildren = "true">
<Dates>
<Date From = "2019-09-01" To = "2019-10-31"/>
</Dates>
<LengthOfStay MinNights = "6" MaxNights = "10"/>
<Names>
<Name Language = "es">Cambio de régimen</Name>
<Name Language = "en">Board upgrade</Name>
</Names>
<BoardUpgrade BoardPayCode = "15" BoardGetCode = "7"/>
</Offer>
<Offer Type = "FreePaxes" Code = "11077" Active = "true" AplicationType = "BaseMeal" Priority = "10" NonRefundable = "true" ApplyAdditionals = "true" ApplyChildren = "true">
<Dates>
<Date From = "2019-09-01" To = "2019-10-31"/>
</Dates>
<LengthOfStay MinNights = "6" MaxNights = "10"/>
<Names>
<Name Language = "es">Niños gratis</Name>
<Name Language = "en">Free child</Name>
</Names>
<FreePaxes>
<ChildrenA>
<ChildA Order = "1"/>
<ChildA Order = "2"/>
<ChildA Order = "3"/>
</ChildrenA>
<ChildrenB>
<ChildB Order = "1"/>
<ChildB Order = "2"/>
<ChildB Order = "3"/>
</ChildrenB>
</FreePaxes>
</Offer>
</Offers>
<AdditionalInfo>
<SpecialNotes>
<Note From = "2019-01-01" To = "2020-01-01">
<Text Language = "es">Piscina cerrada por reformas</Text>
<Text Language = "en">Pool closed due to renovations</Text>
</Note>
</SpecialNotes>
</AdditionalInfo>
</Contract>
</Contracts>
</HotelRatesUpdateRQ>
</ExtranetHotelRatesUpdate>
</soapenv:Body>
</soapenv:Envelope>
Node / Attribute (@) | Opt | Type | Description |
---|---|---|---|
@Url | N | String | Requested base endpoint. |
@TimeStamp | N | DateTime | Response date and time. Format: yyyy-MM-ddThh:mm:ss (UTC). |
@IntCode | N | String | Internal response code. |
Errors | Y | - | Applicable errors. |
./Errors/Error | Y | - | Specific error. |
./Error/@Code | Y | String | Typified error code. Kindly refer to the Exceptions section of the API if you would like for more information in this regard. |
./Error/Text | Y | String | Error description. |
Warnings | Y | - | Applicable warnings. |
./Warnings/Warning | Y | - | Specific warning. |
./Warning/@Code | Y | String | Typified warning code. Kindly refer to the Warnings section of the API if you would like for more information in this regard. |
./Warning/Text | Y | String | Warning description. |
OK response
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<ExtranetHotelRatesUpdateResponse xmlns="http://www.juniper.es/webservice/2007/">
<ExtranetRatesUpdRS Url="http://xml.bookingengine.es" TimeStamp="2015-11-20T12:59:20.8453087+01:00" IntCode="7uU696U93naBgm1A9WDBvDfRE/cfvNH59Swgciwn3m4="/>
</ExtranetHotelRatesUpdateResponse>
</soap:Body>
</soap:Envelope>
ERROR response
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<ExtranetHotelRatesUpdateResponse xmlns="http://www.juniper.es/webservice/2007/">
<ExtranetRatesUpdRS Url="http://xml.bookingengine.es" TimeStamp="2015-11-0T13:02:17.6697525+01:00" IntCode="CN/5iKyE+/YlgboN9woy3Bog2GIxjlt7BlYxwI9lR2s=">
<Errors>
<Error Code="JP_ZEROPRICE_NOT_VALID">
<Text>Prices must be greater than zero</Text>
</Error>
</Errors>
</ExtranetRatesUpdRS>
</ExtranetHotelRatesUpdateResponse>
</soap:Body>
</soap:Envelope>
This section outlines all of the transactions that you will need in order to implement the Booking Management process. Kindly refer to the Booking Management section if you would like for more information on how should you implement this process.
Note that, depending on your implementation, you might also need to implement the ExtranetHotelList request for the mappings.
It refers to the request that allows you to retrieve actual bookings.
Important note:
When using Date filters from this transaction (like the ModificationDate one, the recommended option), kindly ensure that your dates include the TimeZone from which the request originates from (your own TimeZone). By doing this, you will ensure that you will be retrieving the proper bookings regardless of which is your TimeZone and which is the TimeZone of your client.
Node / Attribute (@) | Opt | Type | Description |
---|---|---|---|
@Version | N | String | WebService version. |
@Language | N | String | Requested language. If information from such language is unavailable, the response will be supplied to you along the Juniper supplier default language. All the error message will be sent on English. Follows the ISO 2 format. |
Login | N | - | Login container |
./Login/@Email | N | String | Username provided by the Juniper supplier. |
./Login/@Password | N | String | Password provided by the Juniper supplier. |
SearchItems | N | - | Search filter node. |
./SearchItems/@Locator | Y | String | Booking locator. It is strongly recommended for you to implement the option of retrieving bookings through an specific locator as it will allow for the retrieval of bookings that could have been missed on the usual process. |
./SearchItems/@ExternalLocator | Y | String | Client booking line external locator. |
./SearchItems/@AgencyLocator | Y | String | Client locator. |
./SearchItems/@Status | Y | Enum | Status of the booking line. Possible values: • OK: Confirmed. • AV: Available (you may treat this status in the same way as the OK one). • RQ: On request, pending supplier confirmation. • CA: Canceled. |
./SearchItems/@ApplyFlatPricing | Y | Boolean | If enabled, will combine all of the supplements and offers from the breakdown (Concept nodes that are not of the BAS @Type) within the base concept, for an easier interpretation (note tho that, if you're already processing these concepts, there would be no need for you to use this option). In case that you would need this information, note that using this option will not allow you to identify the individual breakdown prices of any supplement and/or offers of the reservation. |
./SearchItems/HolderName | Y | String | Part of holder name. |
./SearchItems/PassengerName | Y | String | Part of a passanger name. |
./SearchItems/CreationDate | Y | - | Booking lines created between those dates. |
./CreationDate/@From | N | DateTime | Return booking lines created after this date. |
./CreationDate/@To | N | DateTime | Return booking lines created before this date. |
./SearchItems/CheckinDate | Y | - | Booking lines with checkin date between those dates. |
./CheckinDate/@From | N | DateTime | Return checkin after this date. |
./CheckinDate/@To | N | DateTime | Return checkin before this date. |
./SearchItems/ModificationDate | Y | - | Booking lines with last modification between those dates. This is the recommended filter for those processes on which you wish to periodically retrieve all of the bookings that may have been created, modified and/or cancelled. |
./ModificationDate/@From | N | DateTime | Return booking lines modified after this date. |
./ModificationDate/@To | N | DateTime | Return booking lines with last modification before this date. |
./SearchItems/Hotels | Y | - | List of hotels you wish to filter for. This is specially usefull for those cases on which you wish to only retrieve bookings from a single specific hotel as, otherwise, all of the applicable bookings from all of the hotels configured within the supplied credentials will be supplied to you. If you plan on requesting for bookings on a hotel by hotel basis, it will be strongly recommended for you to implement this filter along the hotel code that you wish bookings from. |
./Hotels/Hotel | N | - | Specific hotel. |
./Hotel/@Code | N | Integer | Internal hotel code. |
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns="http://www.juniper.es/webservice/2007/">
<soapenv:Header/>
<soapenv:Body>
<ExtranetReadBooking>
<ReadBookingRQ Version="1.1" Language="en">
<Login Email="user@mydomain.com" Password="pass"/>
<SearchItems>
<ModificationDate From="2019-10-18T11:00:00+02:00" To="2019-10-18T12:00:00+02:00"/>
<Hotels>
<Hotel Code="125"/>
</Hotels>
</SearchItems>
</ReadBookingRQ>
</ExtranetReadBooking>
</soapenv:Body>
</soapenv:Envelope>
Node / Attribute (@) | Opt | Type | Description |
---|---|---|---|
@Url | N | String | Requested base endpoint. |
@TimeStamp | N | DateTime | Response date and time. Format: yyyy-MM-ddThh:mm:ss (UTC). |
@IntCode | N | String | Internal response code. |
Errors | Y | - | Applicable errors. |
./Errors/Error | Y | - | Specific error. |
./Error/@Code | Y | String | Typified error code. Kindly refer to the Exceptions section of the API if you would like for more information in this regard. |
./Error/Text | Y | String | Error description. |
Reservations | Y | - | Available bookings as per the specified criteria. |
./Reservations/Reservation | N | - | Specific booking. There can be multiple nodes. |
./Reservation/@Locator | N | String | Booking locator. |
./Reservation/@Channel | N | String | Booking sales channel. |
./Reservation/@Interface | N | String | Booking sales interface. |
./Reservation/@Status | N | String | Status of the booking. Possible values: • CON: Confirmed. • PAG: Confirmed and paid. • PRE or PDI: Pending. • CAN or CAC: Cancelled. |
./Reservation/Holder | N | - | Holder passanger of the booking. |
./Holder/RelPax | N | - | Relationship to the passenger to which it stands for the holder of the booking. |
./RelPax/@IdPax | N | Integer | Id of the passenger (from within the Paxes node) that stands for the holder of the booking. |
./Reservation/Paxes | N | - | List of passengers from the booking. |
./Paxes/@Adults | N | Integer | Number of available adults. |
./Paxes/@Children | N | Integer | Number of available children. |
./Paxes/Pax | N | - | Passanger. There can be multiple nodes. |
./Pax/@IdPax | N | Integer | Id of the passenger. |
./Pax/Age | Y | Integer | Passenger age. |
./Pax/Name | Y | String | Passenger name. |
./Pax/Surname | Y | String | Passenger surname. |
./Pax/Address | Y | String | Passenger address. |
./Pax/City | Y | String | Passenger city name. |
./Pax/Country | Y | String | Passenger country name. |
./Pax/PostalCode | Y | String | Passenger postal code. |
./Pax/Nationality | Y | String | Passenger ISO2 nationality code. |
./Reservation/BookingRemarks | N | String | Booking remarks. |
./Reservation/Agency | N | - | Customer that confirmed the reservation, this information may be helpful if your Juniper client requests you to differentiate this information (instead of just labeling their bookings as being from them as the customer). Some of the fields below are restricted (detailed on each of the nodes), kindly contact with your Juniper client if you would need for them to activate you these fields. |
./Agency/ExternalLocator | Y | String | Customer confirmation reference. |
./Agency/Market | N | String | Customer market name. |
./Agency/Code | Y | String | Customer internal code. Restricted information. |
./Agency/Name | Y | String | Customer name. Restricted information. |
./Agency/PhoneNumber | Y | String | Customer phone number. Restricted information. |
./Agency/CorporateName | Y | String | Corporate name. Restricted information. |
./Agency/Address | Y | String | Agency address. Restricted information. |
./Agency/InvoicingDetails | Y | - | Invoicing related information. Restricted information. |
./InvoicingDetails/CompanyName | Y | String | Company name. Restricted information. |
./InvoicingDetails/Address | Y | String | Invoicing address. Restricted information. |
./InvoicingDetails/TaxReference | Y | String | Tax reference. Restricted information. |
./InvoicingDetails/IATA | Y | String | IATA. Restricted information. |
./PhoneNumber/@Value | N | String | Phone number. |
./Reservation/Items | N | - | Booking lines in the booking. It is very important to understand that a booking may have multiple booking lines. |
./Items/{HotelItem} | N | - | HotelItem of the booking. Detailed below. There can be multiple nodes. |
./Reservation/Payment | Y | - | Booking agency payment information. |
./Payment/@Type | N | String | Payment type. Possible values: • C: Credit • B: Bank • T: POS (point of sale) |
It stands for a specific hotel booking line from within the booking. We refer to this object as {HotelItem}
Node / Attribute (@) | Opt | Type | Description |
---|---|---|---|
@Start | N | Date | Check-in day. |
@End | N | Date | Check-out day. |
@ItemId | N | Integer | Specific item id. Alongside the @Locator, it will allow you to identify a specific hotel reservation. |
@Status | N | Enum | Status of the booking line. Possible values: • OK: Confirmed. • AV: Available (you may treat this status in the same way as the OK one). • RQ: On request, pending supplier confirmation. • CA or CN: Canceled. • SO: Sold out (may be treated in the same way as the CA one). • RP: Replaced by another booking (may be treated in the same way as the CA one). |
@ReservationDate | N | DateTime | Reservation date. |
@ModificationDate | N | DateTime | Item modification date. If you save this field on your system, you will later be capable of identifying if this specific item has been modified in any way (as it would have a newer @ModificationDate in comparison to the one that you previously stored). |
@DirectPayment | N | Boolean | Established if it is a direct payment reservation (must be paid directly at the hotel) or not. |
@TimeZone | Y | String | TimeZone on which the dates of the booking are being supplied. |
HotelInfo | N | - | Hotel information. |
./HotelInfo/@Code | N | String | Hotel code. |
./HotelInfo/@JPCode | Y | String | Hotel JP code. |
./HotelInfo/@ExternalCode | Y | String | Hotel external code. |
./HotelInfo/@DestinationZone | Y | Integer | Destination code. |
./HotelInfo/Name | Y | String | Hotel name. |
./HotelInfo/Description | Y | String | Hotel description. |
./HotelInfo/HotelCategory | Y | String | Hotel category. |
./HotelCategory/@Type | N | String | Hotel category code. |
./HotelInfo/Address | Y | String | Hotel address. |
./HotelInfo/ChildrenAges | Y | - | Children age range of the reservation, always represents the children ages under which the reservation was confirmed, even if the contract age ranges are changed afterward. |
./ChildrenAges/ChildrenAgeFrom | Y | Integer | Starting this age, passengers will be considered as children (the age itself will also be that of a child). Below this age, passengers will be considered as infants. |
./ChildrenAges/ChildrenAgeTo | Y | Integer | Up to this age, passengers will be considered children (the age itself will also be that of a child). |
Board | N | - | Booking board type. |
./Board/@Code | N | String | Board type code. |
./Board/Name | N | String | Board type name. |
Supplier | Y | - | Supplier information. |
./Supplier/@Code | N | String | Supplier code. |
./Supplier/@IntCode | N | String | Supplier internal code. |
./Supplier/Name | N | String | Supplier name. |
HotelRooms | N | - | Booked hotel rooms. |
./HotelRooms/HotelRoom | N | - | Hotel room. There can be multiple nodes. |
./HotelRoom/@Code | N | String | Internal room code. |
./HotelRoom/@ExternalCode | Y | String | External room code. |
./HotelRoom/@Source | N | String | Code of room in the booking. Used to related it with other information. |
./HotelRoom/Name | N | String | Room type name. |
./HotelRoom/Description | Y | String | Room type description. |
./HotelRoom/RoomCategory | Y | String | Room category |
./RoomCategory/@Type | N | String | Room category type. |
./HotelRoom/RelPaxes | N | - | Paxes of this room. |
./RelPaxes/RelPax | Y | - | There can be multiple nodes. |
./RelPax/@IdPax | N | Integer | Pax code, defined in Reservation/Paxes/Pax/@IdPax. |
AdditionalElements | Y | - | Additional information. |
./AdditionalElements/HotelSupplements | Y | - | Supplements applied in the booking. |
./HotelSupplements/HotelSupplement | Y | - | Supplement. There can be multiple nodes. |
./HotelSupplement/@Code | Y | String | Supplement code. |
./HotelSupplement/@Class | Y | String | Supplement class. |
./HotelSupplement/@Type | Y | String | Supplement type. |
./HotelSupplement/@Category | Y | String | Supplement category code. |
./HotelSupplement/@SpecialType | Y | String | Special type supplemen |
./HotelSupplement/@DirectPayment | Y | Boolean | Direct payment in the hotel. |
./HotelSupplement/@NonRefundable | Y | Boolean | Non-refundable. NOT IMPLEMENTED |
./HotelSupplement/@Optional | Y | Boolean | Optional. |
./HotelSupplement/@Begin | Y | Date | Begin. |
./HotelSupplement/@End | Y | Date | End. |
./HotelSupplement/@Amount | Y | Double | Price amount. |
./HotelSupplement/@Currency | Y | String | Price currency. |
./HotelSupplement/@Duration | Y | String | Duration. |
./HotelSupplement/Name | Y | String | Supplement name. |
./HotelSupplement/Description | Y | String | Supplement description. |
./HotelSupplement/ExportCodes | Y | - | Exportation codes. |
./ExportCodes/@AdultCode | Y | String | Code for adults. |
./ExportCodes/@ChildCode1 | Y | String | Code for children. |
./ExportCodes/@ChildCode2 | Y | String | Second code for children. |
./ExportCodes/@SeniorCode | Y | String | Code for senior. |
./HotelSupplement/ChildrenAges | Y | - | Children ages range. |
./ChildrenAges/ChildrenAgeFrom | Y | Integer | Children from. |
./ChildrenAges/ChildrenAgeTo | Y | Integer | Children to. |
./AdditionalElements/HotelOffers | Y | - | Offers applied in the booking. |
./HotelOffers/HotelOffer | Y | - | Offer. There can be multiple nodes. |
./HotelOffer/@Code | Y | String | Offer code. |
./HotelOffer/@Class | Y | String | Offer class. |
./HotelOffer/@Type | Y | String | Offer type. |
./HotelOffer/@Category | Y | String | Offer category code. |
./HotelOffer/@SpecialType | Y | String | Special type offer |
./HotelOffer/@DirectPayment | Y | Boolean | Direct payment in the hotel. |
./HotelOffer/@NonRefundable | Y | Boolean | Non-refundable. NOT IMPLEMENTED |
./HotelOffer/@Optional | Y | Boolean | Optional. |
./HotelOffer/@Begin | Y | Date | Begin. |
./HotelOffer/@End | Y | Date | End. |
./HotelOffer/@Amount | Y | Double | Price amount. |
./HotelOffer/@Currency | Y | String | Price currency. |
./HotelOffer/Name | Y | String | Offer name. |
./HotelOffer/Description | Y | String | Offer description. |
ClientRemarks | Y | String | Client remarks. |
InternalRemarks | Y | String | Internal remarks. |
HotelConfirmationNumber | Y | String | Hotel confirmation number. If you would like to update this information, kindly refer to the ExtranetUpdateBooking specs. |
HotelContracts | Y | - | Hotel contracts information. |
./HotelContracts/HotelContract | Y | - | Contract. There can be multiple nodes. |
./HotelContract/@Code | Y | String | Contract code. |
./HotelContract/@ExternalCode | Y | String | Contract external code. |
./HotelContract/Name | N | String | Contract name. |
./HotelContract/Rooms | Y | - | If there are some contracts, it will show when this contract had been applied. |
./Rooms/Room | Y | - | Room. |
./Room/@Source | N | String | Room order defined in HotelRooms/HotelRoom. |
./Room/Periods | N | - | Periods. |
./Periods/Period | N | - | Period when the contract had been applied. |
./Period/@From | N | Date | From. |
./Period/@To | N | Date | To. |
CancellationPolicy | Y | - | Cancellation policy. |
./CancellationPolicy/Text | N | String | Cancellation policy text. |
Price | Y | - | Price information |
./Price/@Currency | N | String | Price currency. |
./Price/@Type | Y | String | Indicates if the price object refers to sales or cost of the booking. Possible values: • S: Sales • C: Cost It is worth noting that, if missing (as this is an optional property), the price object will refer to the cost of the booking. Additionally, by default, the sales price will not be returned, contact with Juniper if you would like for more information in this regard. |
./Price/TotalFixAmounts | Y | - | Amounts information. |
./TotalFixAmounts/@Gross | Y | Double | Gross price. |
./TotalFixAmounts/@Nett | Y | Double | Nett price. |
./TotalFixAmounts/Service | Y | - | Base service price. |
./Service/@Amount | Y | Double | Amount. |
./TotalFixAmounts/ServiceTaxes | Y | - | Taxes. |
./ServiceTaxes/@Included | Y | Boolean | Included. |
./ServiceTaxes/@Amount | Y | Double | Amount. |
./TotalFixAmounts/Commissions | Y | - | Supplier commisions. |
./Commissions/@Included | Y | Boolean | Included. |
./Commissions/@Amount | Y | Double | Amount. |
./Price/DirectPayment | Y | - | Direct payment. |
./DirectPayment/@SalesPrice | Y | Double | Total price that client should pay at hotel. |
./DirectPayment/@Profit | Y | Double | Profit for the travel agency. |
./DirectPayment/@TaxPercentage | Y | Double | Tax percentage. |
./DirectPayment/@TaxPrice | Y | Double | Tax prices. |
./Price/Breakdown | Y | - | Price breakdown. |
./Breakdown/Concepts | Y | - | Concepts in the breakdown. |
./Concepts/Concept | Y | - | Concepts. |
./Concept/@Type | N | Enum | Concept type. Possible values: • BAS: Base. • SUP: Supplement. • OFE: Offer. • HFE: HandlingFee. • TAS: Tax. |
./Concept/@Name | N | String | Concept name. |
./Concept/@Code | Y | String | Concept code. |
./Concept/Items | N | - | Item breakdown. |
./Items/Item | N | - | Item. |
./Item/@Amount | N | Double | Unit amount. |
./Item/@Date | Y | Date | From date. |
./Item/@Quantity | Y | Integer | Quantity of items. |
./Item/@Days | Y | Integer | Number of days. |
./Item/@PaxType | Y | StringPax type. | |
./Item/@Source | Y | String | Room order. |
./Breakdown/Taxes | Y | - | Taxes. |
./Taxes/Tax | Y | - | Tax. |
./Tax/@Type | Y | String | Tax type. |
./Tax/@Name | Y | String | Tax name. |
./Tax/@Value | Y | Double | Tax value. |
./Tax/@IsFix | Y | String | If tax has a fix price. |
./Tax/@ByNight | Y | Boolean | If the value applies by night. |
./Tax/@Commissionable | Y | Boolean | Commissionable. |
./Tax/@Included | Y | Boolean | Included in the price. |
./Tax/Total | N | - | Total tax price |
./Total/@Base | N | Double | Base price. |
./Total/@Amount | N | Double | Amount. |
./Tax/Commission | N | - | Total commission price |
./Commission/@Base | N | Double | Base price. |
./Commission/@Amount | N | Double | Amount. |
./Breakdown/Commissions | Y | - | Commissions. |
./Commissions/Commision | Y | - | Commission. |
./Commision/@Type | Y | String | Commission type. |
./Commision/Total | N | - | Total commission price. |
./Total/@Base | N | Double | Base price. |
./Total/@Amount | N | Double | Amount. |
Charges | Y | - | Charges information. |
./Charges/@TotalCharged | N | Double | Amount charged. |
./Charges/Charge | Y | - | Info charges. |
./Charge/@Amount | N | Double | Charge amount. |
./Charge/Reference | N | String | Charge reference. |
./Charge/ChargeDate | N | Date | Charge date. |
./Charge/ApplicationDate | N | Date | Charge application date. |
CreditCard | Y | - | Credit card information. |
./CreditCard/@ExpireDate | N | Date | Credit card expire date. It will follow the YYYY-MM-DD format. |
./CreditCard/@CardNumber | N | Integer | Credit card number. |
./CreditCard/@CardCode | Y | String | Credit card type code. Possible values: • AX: Amex. • CA: Cabal. • CB: CarteBlanche. • DC: DinersClubCard. • DS: DiscoverCard. • ER: enRouteCard. • IT: ItalCred. • JC: JCBCard. • MA: Maestro. • MC: MasterCard. • NR: Naranja. • NT: Nativa. • VE: VisaElectron. • VI: VisaCard. • OT: Others. Due to compatibility, the system will either skip the property or supply you with an OT type whenever the credit card type is unavailable. |
./CreditCard/@CVV | Y | String | Credit card verification value. Important note: Due to security reasons, this information will not be available by default and will require for a specific permission to be available, please contact with your Juniper supplier for more information in this regard. |
./CreditCard/Name | Y | String | Credit card holder |
OK response
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<ExtranetReadBookingResponse xmlns="http://www.juniper.es/webservice/2007/">
<ReadBookingRS Url="https://juniper-uat.bookingengine.es" TimeStamp="2019-10-25T11:27:25.7786697+02:00" IntCode="tEwhB/41qxaJBHYg3tp6rFbnZIi4voi0C7+UIr4a8ms=">
<Reservations>
<Reservation Locator="2LYL3N" Channel="Web" Interface="CLC" Status="PAG">
<Holder>
<RelPax IdPax="7"/>
</Holder>
<Paxes Adults="5" Children="1">
<Pax IdPax="1">
<Title>MR.</Title>
<Name>Name</Name>
<Surname>FirstAdult</Surname>
<Age>30</Age>
</Pax>
<Pax IdPax="2">
<Title>MR.</Title>
<Name>Name</Name>
<Surname>SecondAdult</Surname>
<Age>30</Age>
</Pax>
<Pax IdPax="3">
<Title>MR.</Title>
<Name>Name</Name>
<Surname>FirstChildren</Surname>
<Age>7</Age>
</Pax>
<Pax IdPax="4">
<Title>MR.</Title>
<Name>Name</Name>
<Surname>FirstAdultTriple</Surname>
<Age>30</Age>
</Pax>
<Pax IdPax="5">
<Title>MR.</Title>
<Name>Name</Name>
<Surname>SecondAdultTriple</Surname>
<Age>30</Age>
</Pax>
<Pax IdPax="6">
<Title>MR.</Title>
<Name>Name</Name>
<Surname>ThirdAdultTriple</Surname>
<Age>30</Age>
</Pax>
<Pax IdPax="7">
<Name>HolderName</Name>
<Surname>HolderSurname</Surname>
<Country>--</Country>
<Nationality>ES</Nationality>
</Pax>
</Paxes>
<Agency>
<Market>Juniper</Market>
</Agency>
<Items>
<HotelItem Start="2019-11-26" End="2019-11-29" ItemId="154505" Status="OK" ReservationDate="2019-10-25T11:27:04.89" ModificationDate="2019-10-25T11:27:06.343" DirectPayment="false" LuckyDipHotel="false" GroupBooking="false" SpecialPriceBooking="false" TimeZone="02:00">
<HotelInfo Code="125" JPCode="JP046300">
<Name>APARTAMENTOS ALLSUN PIL-LARI PLAYA</Name>
<HotelCategory Type="3est">3 Stars</HotelCategory>
<Address>Calle Marbella 24</Address>
<ChildrenAges>
<ChildrenAgeFrom>2</ChildrenAgeFrom>
<ChildrenAgeTo>12</ChildrenAgeTo>
</ChildrenAges>
</HotelInfo>
<Board Code="3">
<Name>Room Only</Name>
</Board>
<Supplier Code="HBE" IntCode="58">
<Name>Default supplier</Name>
</Supplier>
<HotelRooms>
<HotelRoom Code="187" Source="1">
<Name>Habitación no reembolsable</Name>
<RoomCategory Type="2">Category 2</RoomCategory>
<RelPaxes>
<RelPax IdPax="1"/>
<RelPax IdPax="2"/>
<RelPax IdPax="3"/>
</RelPaxes>
</HotelRoom>
<HotelRoom Code="187" Source="2">
<Name>Habitación no reembolsable</Name>
<RoomCategory Type="2">Category 2</RoomCategory>
<RelPaxes>
<RelPax IdPax="4"/>
<RelPax IdPax="5"/>
<RelPax IdPax="6"/>
</RelPaxes>
</HotelRoom>
</HotelRooms>
<HotelContracts>
<HotelContract Code="177">
<Name>General extranet contract</Name>
</HotelContract>
</HotelContracts>
<CancellationPolicy>
<Text>No reembolsable</Text>
</CancellationPolicy>
<Price Currency="USD">
<TotalFixAmounts Gross="462" Nett="462">
<Service Amount="420"/>
<ServiceTaxes Included="false" Amount="42"/>
<Commissions Included="true" Amount="0"/>
</TotalFixAmounts>
<Breakdown>
<Concepts>
<Concept Type="BAS" Name="Base">
<Items>
<Item Amount="70" Date="2019-11-26" Quantity="1" Days="3" Source="1"/>
<Item Amount="0" Date="2019-11-26" Quantity="2" Days="3" PaxType="ADT" Source="1"/>
<Item Amount="0" Date="2019-11-26" Quantity="1" Days="3" PaxType="NA1" Source="1"/>
<Item Amount="70" Date="2019-11-26" Quantity="1" Days="3" Source="2"/>
<Item Amount="0" Date="2019-11-26" Quantity="1" Days="3" PaxType="AD1" Source="2"/>
<Item Amount="0" Date="2019-11-26" Quantity="2" Days="3" PaxType="ADT" Source="2"/>
</Items>
</Concept>
</Concepts>
<Taxes>
<Tax Name="NOT INCLUDED Taxes" Value="10" IsFix="false" ByNight="false" Commissionable="false" Included="false">
<Total Base="423.82" Amount="42"/>
</Tax>
<Tax Name="INCLUDED Taxes" Value="10" IsFix="false" ByNight="false" Commissionable="false" Included="true">
<Total Base="423.82" Amount="38.18"/>
</Tax>
</Taxes>
</Breakdown>
</Price>
</HotelItem>
</Items>
</Reservation>
</Reservations>
</ReadBookingRS>
</ExtranetReadBookingResponse>
</soap:Body>
</soap:Envelope>
ERROR response
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<ExtranetReadBookingResponse xmlns="http://www.juniper.es/webservice/2007/">
<ReadBookingRS Url="https://juniper-uat.bookingengine.es" TimeStamp="2019-10-25T11:24:02.658461+02:00" IntCode="Hm91MlxwyAL33i2AwuMBLmgiSy0T0pRh1Kr9q7ug3Rk=">
<Errors>
<Error Code="INVALID_USER_OR_PASSWORD">
<Text>Login fails - Invalid user or password</Text>
</Error>
</Errors>
</ReadBookingRS>
</ExtranetReadBookingResponse>
</soap:Body>
</soap:Envelope>
It refers to the request that allows you to update booking information. Currently, only the hotel confirmation number will be possible to be updated. This transaction will require for a specific permission, kindly contact with the related Juniper client if you would like for it to be activated.
Node / Attribute (@) | Opt | Type | Description |
---|---|---|---|
@Version | N | String | WebService version. |
@Language | N | String | Requested language. If information from such language is unavailable, the response will be supplied to you along the Juniper supplier default language. All the error message will be sent on English. Follows the ISO 2 format. |
Login | N | - | Login container |
./Login/@Email | N | String | Username provided by the Juniper supplier. |
./Login/@Password | N | String | Password provided by the Juniper supplier. |
Items | N | - | List of items that we will modify. |
./Items/HotelItem | N | - | Hotel reservation that we will modify. |
./HotelItem/@ItemId | N | Integer | Item id of the reservation that we will modify. |
./HotelItem/HotelConfirmationNumber | N | String | Hotel confirmation number that we will establish on the reservation. Maximum length of 100 characters. |
<soapenv:Envelope xmlns:soapenv = "http://schemas.xmlsoap.org/soap/envelope/" xmlns = "http://www.juniper.es/webservice/2007/">
<soapenv:Header/>
<soapenv:Body>
<ExtranetUpdateBooking>
<UpdateBookingRQ Version = "1.1" Language = "en">
<Login Email = "user@mydomain.com" Password = "pass"/>
<Items>
<HotelItem ItemId = "319616">
<HotelConfirmationNumber>HCN123456</HotelConfirmationNumber>
</HotelItem>
</Items>
</UpdateBookingRQ>
</ExtranetUpdateBooking>
</soapenv:Body>
</soapenv:Envelope>
Following the request example, if the modification is correct, the system will supply you with the booking complete information, which is exactly the same information as the one supplied on the ExtranetReadBooking response.
Kindly refer to the ExtranetReadBooking section if you wish to consult the specifications of the nodes and properties of this transaction.
<soap:Envelope xmlns:soap = "http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd = "http://www.w3.org/2001/XMLSchema">
<soap:Body>
<ExtranetUpdateBookingResponse xmlns = "http://www.juniper.es/webservice/2007/">
<UpdateBookingRS Url = "https://juniper-uat.bookingengine.es" TimeStamp = "2022-03-07T10:55:46.6712341+01:00" IntCode = "2HnW6opbrSCyeI43BqgssYJRRJkIrZAVa2cz78YCD6s=">
<Reservations>
<Reservation Locator = "F63WVC" Channel = "Web" Interface = "CLC" Status = "PAG">
<Holder>
<RelPax IdPax = "4"/>
</Holder>
<Paxes Adults = "3" Children = "0">
<Pax IdPax = "1">
<Title>MRS.</Title>
<Name>PaxName</Name>
<Surname>PaxSurname</Surname>
<Age>30</Age>
</Pax>
<Pax IdPax = "2">
<Title>MRS.</Title>
<Name>Pax2Name</Name>
<Surname>Pax2Surname</Surname>
<Age>30</Age>
</Pax>
<Pax IdPax = "3">
<Title>MRS.</Title>
<Name>Pax3Name</Name>
<Surname>Pax3Surname</Surname>
<Age>30</Age>
</Pax>
<Pax IdPax = "4">
<Name>HolderName</Name>
<Surname>HolderSurname</Surname>
<Country>--</Country>
<Nationality>ES</Nationality>
</Pax>
</Paxes>
<Agency>
<Market>Juniper</Market>
</Agency>
<Items>
<HotelItem Start = "2021-10-22" End = "2021-10-24" ItemId = "319616" Status = "OK" ReservationDate = "2021-09-28T11:04:15.7" ModificationDate = "2021-09-28T11:04:17.9" DirectPayment = "false" LuckyDipHotel = "false" GroupBooking = "false" SpecialPriceBooking = "false" TimeZone = "02:00">
<HotelInfo Code = "125" JPCode = "JP046300">
<Name>Apartamentos Allsun Pil-lari Play-a</Name>
<HotelCategory Type = "3est">3 Stars</HotelCategory>
<Address>Calle Marbella 24</Address>
<ChildrenAges>
<ChildrenAgeFrom>2</ChildrenAgeFrom>
<ChildrenAgeTo>12</ChildrenAgeTo>
</ChildrenAges>
</HotelInfo>
<Board Code = "3">
<Name>Room Only</Name>
</Board>
<Supplier Code = "HBE" IntCode = "58">
<Name>Default supplier</Name>
</Supplier>
<HotelRooms>
<HotelRoom Code = "207" Source = "1">
<Name>Triple [ROO]</Name>
<RoomCategory Type = "5">ChM</RoomCategory>
<RelPaxes>
<RelPax IdPax = "1"/>
<RelPax IdPax = "2"/>
<RelPax IdPax = "3"/>
</RelPaxes>
</HotelRoom>
</HotelRooms>
<AdditionalElements>
<HotelSupplements>
<HotelSupplement Code = "321858" Type = "M" DirectPayment = "false" Optional = "false" Begin = "2021-10-22" End = "2021-10-24" Amount = "60" Currency = "USD">
<Name>Suplemento de prueba +30</Name>
</HotelSupplement>
</HotelSupplements>
<HotelOffers>
<HotelOffer Code = "321859" Type = "M" DirectPayment = "false" Optional = "false" Begin = "2021-10-22" End = "2021-10-24" Amount = "-20" Currency = "USD">
<Name>Oferta de prueba -10%</Name>
</HotelOffer>
</HotelOffers>
</AdditionalElements>
<HotelConfirmationNumber>HCN123456</HotelConfirmationNumber>
<HotelContracts>
<HotelContract Code = "328">
<Name>Commission extranet contract</Name>
</HotelContract>
</HotelContracts>
<CancellationPolicy>
<Text><![CDATA[<div><strong>Valor ES</strong></div><div> </div><div><span style="color: red;">Puede Aceptar</span> <span style="background-color: yellow;">Codigo HTML</span> </div>]]></Text>
</CancellationPolicy>
<Price Currency = "USD">
<TotalFixAmounts Gross = "264" Nett = "216">
<Service Amount = "240"/>
<ServiceTaxes Included = "false" Amount = "24"/>
<Commissions Included = "true" Amount = "48"/>
</TotalFixAmounts>
<Breakdown>
<Concepts>
<Concept Type = "BAS" Name = "Base">
<Items>
<Item Amount = "100" Date = "2021-10-22" Quantity = "1" Days = "2" Source = "1"/>
<Item Amount = "0" Date = "2021-10-22" Quantity = "3" Days = "2" PaxType = "ADT" Source = "1"/>
</Items>
</Concept>
<Concept Type = "SUP" Name = "Suplemento de prueba +30" Code = "BSUP">
<Items>
<Item Amount = "30" Date = "2021-10-22" Quantity = "1" Days = "2" Source = "1"/>
</Items>
</Concept>
<Concept Type = "SUP" Name = "Oferta de prueba -10%" Code = "BDISC">
<Items>
<Item Amount = "-10" Date = "2021-10-22" Quantity = "1" Days = "2" Source = "1"/>
</Items>
</Concept>
</Concepts>
<Taxes>
<Tax Name = "NOT INCLUDED Taxes en" Value = "10" IsFix = "false" ByNight = "false" Commissionable = "false" Included = "false">
<Total Base = "232.7" Amount = "24"/>
</Tax>
<Tax Name = "INCLUDED Taxes" Value = "15" IsFix = "false" ByNight = "false" Commissionable = "false" Included = "true">
<Total Base = "232.7" Amount = "31.3"/>
</Tax>
</Taxes>
<Commissions>
<Commission>
<Total Base = "240" Amount = "48"/>
</Commission>
</Commissions>
</Breakdown>
</Price>
</HotelItem>
</Items>
</Reservation>
</Reservations>
</UpdateBookingRS>
</ExtranetUpdateBookingResponse>
</soap:Body>
</soap:Envelope>
This section outlines all of the transactions that you will need in order to implement the hotel import process. Kindly refer to the Hotel Extranet Integration section if you would like for a brief reference on how you should implement the use of these transactions.
Important note:
These transactions will not be available by default and will require for the related Juniper client to activate you some permissions, kindly contact with Juniper if you would be interested in implementing the same.
Additionally, as these transactions feature multiple restricted nodes and features, we recommend for you to be very mindful of the specifications and of the nodes or may not be used on each of them. For any doubt that you may have, do not hesitate to look into each of the XML examples of these requests and to contact the XML support team.
This petition will allow you to retrieve mapping information that you will later need in the importation process.
Node / Attribute (@) | Opt | Type | Description |
---|---|---|---|
@Version | N | String | Web Service version |
@Language | N | String | Language in which the response will be returned. Please, contact Juniper for available languages. |
{Login} | N | - | Customer login to access the Web Service |
Elements | Y | - | Elements to be requested. If there isn't any Element node at the request, only the SERVICECATEGORIES will be returned. |
./Elements/Element | N | - | Specific element to be requested. |
./Element/@Type | N | Enum | Element type to request. Possible values: • HOTELCATEGORIES • HOTELTYPES • CONTRACTTYPES • BOARDS • SEASONS • SERVICECATEGORIES • SUPPLEMENTCATEGORIES Additionally, there are other possible values that you will be able to see listed on the WSDL but that are currently restricted and may not be requested: • HOTELCHAIN |
<soapenv:Envelope xmlns:soapenv = "http://schemas.xmlsoap.org/soap/envelope/" xmlns = "http://www.juniper.es/webservice/2007/">
<soapenv:Header/>
<soapenv:Body>
<HotelCatalogueData>
<HotelCatalogueDataRQ Version = "1.1" Language = "en">
<Login Email = "user@mydomain.com" Password = "pass"/>
<Elements>
<Element Type = "HOTELCATEGORIES"/>
<Element Type = "HOTELTYPES"/>
<Element Type = "CONTRACTTYPES"/>
<Element Type = "BOARDS"/>
<Element Type = "SEASONS"/>
<Element Type = "SERVICECATEGORIES"/>
<Element Type = "SUPPLEMENTCATEGORIES"/>
</Elements>
</HotelCatalogueDataRQ>
</HotelCatalogueData>
</soapenv:Body>
</soapenv:Envelope>
Node / Attribute (@) | Opt | Type | Description |
---|---|---|---|
@Url | N | String | Requested base endpoint. |
@TimeStamp | N | DateTime | Response date and time. Format: yyyy-MM-ddThh:mm:ss (UTC). |
@IntCode | N | String | Internal response code. |
{Errors} | Y | - | Applicable errors. |
{Warnings} | Y | - | Applicable warnings. |
HotelCatalogueDataResponse | N | - | - |
./HotelCatalogueDataResponse/HotelCategories | Y | - | Possible hotel categories. |
./HotelCategories/HotelCategory | N | - | Hotel category. |
./HotelCategory/@Code | N | Integer | Hotel category id. |
./HotelCategory/@Type | Y | String | Hotel category code. |
./HotelCategory/Name | N | String | Hotel category name. |
./HotelCatalogueDataResponse/HotelTypes | Y | - | Possible hotel types. |
./HotelTypes/HotelType | N | - | Hotel type. |
./HotelType/@Code | N | Integer | Hotel type id. |
./HotelType/@Type | Y | String | Hotel type code. |
./HotelType/Name | N | String | Hotel type name. |
./HotelCatalogueDataResponse/ContractTypes | Y | - | Possible contract types. |
./ContractTypes/ContractType | N | - | Contract type. |
./ContractType/@Code | N | Integer | Contract type id. |
./ContractType/@Type | Y | String | Contract type code. |
./ContractType/Name | N | String | Contract type name. |
./HotelCatalogueDataResponse/HotelChains | Y | - | Possible hotel chains. Restricted information. |
./HotelChains/HotelChain | N | - | Hotel chain. |
./HotelChain/@Code | N | Integer | Hotel chain id. |
./HotelChain/Name | N | String | Hotel chain name. |
./HotelCatalogueDataResponse/Boards | Y | - | Possible hotel boards. |
./Boards/Board | N | - | Hotel board. |
./Board/@Code | N | Integer | Hotel board id. |
./Board/@Type | Y | String | Hotel board code. |
./Board/Name | N | String | Hotel board name. |
./HotelCatalogueDataResponse/Seasons | Y | - | Possibles seasons. |
./Seasons/Season | N | - | Season. |
./Season/@Code | N | Integer | Season id. |
./Season/@Start | N | Date | Season start date. |
./Season/@End | N | Date | Season end date. |
./Season/Name | N | String | Season name. |
./HotelCatalogueDataResponse/ServiceCategories | Y | - | Possible hotel services categores. |
./ServiceCategories/ServiceCategory | N | ||
./ServiceCategory/@Code | N | String | Service category code |
./ServiceCategory/ServiceSubCategories | Y | Subcategories | |
./ServiceSubCategories/ServiceSubCategory | N | Service subcategory | |
./ServiceSubCategory/@Code | N | String | Subcategory code |
./ServiceSubCategory/Name | Y | String | Subcategory name |
./ServiceCategory/Services | N | Available services | |
./Services/Service | N | Service | |
./Service/@Code | N | String | Service code |
./Service/@SubCategory | Y | String | Subcategory code, if it applies |
./Service/Name | N | String | Service name |
./HotelCatalogueDataResponse/SupplementCategories | Y | - | Possible supplement categories. |
./SupplementCategories/Category | N | - | Supplement category. |
./Category/@Code | N | Integer | Supplement category id. |
./Category/Name | N | String | Supplement category name. |
<soap:Envelope xmlns:soap = "http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd = "http://www.w3.org/2001/XMLSchema">
<soap:Body>
<HotelCatalogueDataResponse xmlns = "http://www.juniper.es/webservice/2007/">
<HotelCatalogueDataRS Url = "http://juniper-uat.bookingengine.es" TimeStamp = "2021-11-05T10:31:33.0669417+01:00" IntCode = "gu3tH+qyh+fTcdlgnCXxoDYIlLpE2gbzjxFBZd0nYAc=">
<HotelCatalogueDataResponse>
<HotelCategories>
<HotelCategory Code = "1" Type = "1est">
<Name>1 Star</Name>
</HotelCategory>
<HotelCategory Code = "2" Type = "2est">
<Name>2 Stars</Name>
</HotelCategory>
<HotelCategory Code = "3" Type = "3est">
<Name>3 Stars</Name>
</HotelCategory>
<HotelCategory Code = "4" Type = "4est">
<Name>4 Stars</Name>
</HotelCategory>
<HotelCategory Code = "5" Type = "5est">
<Name>5 Stars</Name>
</HotelCategory>
<HotelCategory Code = "13">
<Name>Apartment</Name>
</HotelCategory>
</HotelCategories>
<HotelTypes>
<HotelType Code = "2" Type = "ROV">
<Name>CONDO</Name>
</HotelType>
<HotelType Code = "1" Type = "GEN">
<Name>General</Name>
</HotelType>
</HotelTypes>
<ContractTypes>
<ContractType Code = "4" Type = "FIT">
<Name>FIT</Name>
</ContractType>
<ContractType Code = "3" Type = "GTD">
<Name>Garantía</Name>
</ContractType>
<ContractType Code = "2" Type = "PRO">
<Name>Promo</Name>
</ContractType>
<ContractType Code = "1" Type = "RCK">
<Name>Rack</Name>
</ContractType>
</ContractTypes>
<Boards>
<Board Code = "5" Type = "TI">
<Name>All Inclusive</Name>
</Board>
<Board Code = "2" Type = "AD">
<Name>Bed & Breakfast</Name>
</Board>
<Board Code = "4" Type = "PC">
<Name>Full Board</Name>
</Board>
<Board Code = "1" Type = "MP">
<Name>Half Board</Name>
</Board>
<Board Code = "3" Type = "SA">
<Name>Room Only</Name>
</Board>
</Boards>
<Seasons>
<Season Code = "2" Start = "2010-01-01" End = "2014-12-31">
<Name>2010 - 2014</Name>
</Season>
<Season Code = "1" Start = "2015-01-01" End = "2030-12-31">
<Name>2015 - 2030</Name>
</Season>
<Season Code = "11" Start = "2013-04-01" End = "2020-08-31">
<Name>Prueba Insert</Name>
</Season>
</Seasons>
<ServiceCategories>
<ServiceCategory Code = "A">
<ServiceSubCategories>
<ServiceSubCategory Code = "1">
<Name>Pool</Name>
</ServiceSubCategory>
<ServiceSubCategory Code = "4">
<Name>WIFI</Name>
</ServiceSubCategory>
</ServiceSubCategories>
<Services>
<Service Code = "62" SubCategory = "1">
<Name>Pool</Name>
</Service>
<Service Code = "61" SubCategory = "4">
<Name>WIFI</Name>
</Service>
</Services>
</ServiceCategory>
<ServiceCategory Code = "B">
<Services>
<Service Code = "66">
<Name>Aditional Info Test</Name>
</Service>
</Services>
</ServiceCategory>
<ServiceCategory Code = "H">
<ServiceSubCategories>
<ServiceSubCategory Code = "3">
<Name>Jacuzzi bathroom</Name>
</ServiceSubCategory>
</ServiceSubCategories>
<Services>
<Service Code = "59">
<Name>Hair dryer</Name>
</Service>
<Service Code = "64" SubCategory = "3">
<Name>Jacuzzi bathroom</Name>
</Service>
<Service Code = "65">
<Name>Mini Bar</Name>
</Service>
<Service Code = "60">
<Name>Safe</Name>
</Service>
</Services>
</ServiceCategory>
<ServiceCategory Code = "R">
<Services>
<Service Code = "63">
<Name>Restaurant</Name>
</Service>
</Services>
</ServiceCategory>
</ServiceCategories>
<SupplementCategories>
<Category Code = "1">
<Name>General</Name>
</Category>
<Category Code = "2">
<Name>Points Adjuster</Name>
</Category>
</SupplementCategories>
</HotelCatalogueDataResponse>
</HotelCatalogueDataRS>
</HotelCatalogueDataResponse>
</soap:Body>
</soap:Envelope>
This petition will allow you to import new hotels onto the Juniper client system. Performing modifications will not be possible and, if necessary, you will need to request the Juniper client to perform them.
Additionally, in the Error Examples section from the response, you will be able to find examples of the main error responses that you might find while implementing this transaction along with a brief explanation and mention on how to act in order to correct them.
Node / Attribute (@) | Opt | Type | Description |
---|---|---|---|
@Version | N | String | Web Service version |
@Language | N | String | Language in which the response will be returned. Please, contact Juniper for available languages. |
{Login} | N | - | Customer login to access the Web Service |
HotelCreationRequest | N | - | - |
./HotelCreationRequest/Hotel | N | - | Hotel information. |
./Hotel/@ExternalCode | Y | String | Hotel external code. |
./Hotel/@JPCodeDataImport | Y | String | JPCode from which to import data. If the system finds a matching JPCode while any of the related fields are not specified (as if they are specified they will be prioritized), the system will instead retrieve this information from this JPCode. The fields that may be retrieved through a JPCode are: - Names - Zone - Address (from AddressInformation) - Longitude (from AddressInformation) - Latitude (from AddressInformation) |
./Hotel/@ExtendedDiscount | Y | Boolean | Identifies if the hotel has the extended discount fields enabled. When active, the hotel will allow for up to 8 additional adult prices and up to 5 children prices, instead of the usual 2 and 2. Once enabled, it will not be possible to deactivate this configuration. |
./Hotel/Names | Y | - | Hotel names. Mandatory if no matching JPCodeDataImport is specified. |
./Names/Name | N | String | Hotel name in each language |
./Name/@Language | N | String | Language of the text |
./Name/@HotelActive | N | String | Hotel is active in this language |
./Hotel/Descriptions | N | ||
./Descriptions/Description | N | String | Hotel description in each language |
./Description/@Language | N | String | Language of the text |
./Description/@Type | N | Enum | Description type. Possible values: • SHT: Short • LNG: Long |
./Hotel/HotelInformation | N | ||
./HotelInformation/Zone | Y | String | Zone information. Restricted information, it will be neccesary for you to establish the destination through the coordinates. |
./Zone/@Code | N | Integer | Zone code. |
./HotelInformation/AddressInformation | Y | - | Address information. |
./AddressInformation/Address | Y | String | Address. Mandatory if no matching JPCodeDataImport is specified. |
./AddressInformation/PostalCode | Y | String | Postal code |
./AddressInformation/Longitude | N | Double | Longitude coordenate. Mandatory if no matching JPCodeDataImport is specified. |
./AddressInformation/Latitude | N | Double | Latitude coordinate. Mandatory if no matching JPCodeDataImport is specified. |
./HotelInformation/HotelCategory | N | Hotel category | |
./HotelCategory/@Code | N | Integer | Category code |
./HotelInformation/HotelType | N | Hotel type | |
./HotelType/@Code | N | Integer | Type code |
./HotelInformation/HotelChain | Y | Hotel chain. Restricted information. | |
./HotelChain/@Code | N | Integer | Chain code |
./Hotel/Contact | N | Contact information | |
./Contact/PhoneNumbers | N | Phones information | |
./PhoneNumbers/PhoneNumber | N | Phone | |
./PhoneNumber/@Type | N | Enum | Phone number type. Possible values: • GEN: General • BOOK: Bookings |
./PhoneNumber/@Country | Y | String | Country phone code |
./PhoneNumber/@Area | Y | String | Area phone code |
./PhoneNumber/@Number | N | String | Local phone number |
./Contact/Faxes | Y | Faxes information | |
./Faxes/Fax | Y | Fax | |
./Fax/@Type | N | Enum | Fax type. Possible values: • GEN: General • BOOK: Bookings |
./Fax/@Country | Y | String | Country phone code |
./Fax/@Area | Y | String | Area phone code |
./Fax/@Number | N | String | Local phone number |
./Contact/Emails | N | Emails information | |
./Emails/Email | N | String | Email address |
./Email/@Type | N | Enum | Email type. Possible values: • GEN: General • BOOK: Bookings • ACCOUNT: Accounting |
./Hotel/Notifications | Y | Notification information. Restricted information. | |
./Notifications/Bookings | Y | Booking notifications | |
./Bookings/@SendMailTo | Y | Enum | Recipient of the booking confirmation mails. Possible values: • SUPPLIER • BOKINGKMAIL • SUPPLIER_BOKINGKMAIL |
./Bookings/@SendValuedBookingToSupplier | Y | Boolean | Send the price in the supplier notifications |
./Notifications/ExtranetModification | Y | Notifications on the extranet changes | |
./ExtranetModification/@ExtranetUsers | Y | Boolean | Send to the extranet users |
./ExtranetModification/@DepartmentPurchaseManager | Y | Boolean | Send to the department purchase manager |
./ExtranetModification/@DepartmentExtranet | Y | Boolean | Send to the extranet department email |
./Hotel/Currency | N | ||
./Currency/@Code | N | String | Currency code |
./Hotel/ProductGroup | Y | - | Product group. Restricted information. |
./ProductGroup/@Code | N | Integer | Product group code |
./Hotel/Suppliers | Y | - | Hotel suppliers. Restricted information. |
./Suppliers/Supplier | N | Hotel supplier (only one node at the moment) | |
./Supplier/@Code | N | Integer | Supplier code |
./Hotel/ChildrenAges | N | Children age information | |
./ChildrenAges/@FirstRangeFrom | N | Integer | Age from passangers are considerated as children |
./ChildrenAges/@FirstRangeTo | N | Integer | Age to passangers are considerated as the first range of children |
./ChildrenAges/@SecondRangeTo | Y | Integer | Age to passangers are considerated as the second range of children |
./ChildrenAges/@ThirdRangeTo | Y | Integer | Age to passangers are considerated as the third range of children |
./Hotel/AdvancedInformation | Y | Advanced information. Restricted information. | |
./AdvancedInformation/OnlyAvailableInTheCallCenter | Y | Boolean | If the hotel will be only available in the callcenter (false by default) |
./AdvancedInformation/AllowOnRequest | Y | Boolean | If the hotel allow on request bookings (true by default) |
./AdvancedInformation/MinimumAge | Y | Integer | Minimum age allowed in the hotel |
./AdvancedInformation/Rooms | Y | Short | Informative field regarding the hotel total units, independently of the uploaded contract allotment. |
./Hotel/TimeInformation | Y | ||
./TimeInformation/CheckTime | Y | Times to checkin and checkout | |
./CheckTime/@CheckIn | Y | HH:MM | Minimum time to checkin |
./CheckTime/@CheckOut | Y | HH:MM | Maximum time to checkout |
./TimeInformation/HotelTimeZone | Y | String | Hotel time zone |
./TimeInformation/ReleaseTime | Y | HH:MM | Hour when the release change the day |
./Hotel/Images | Y | Images | |
./Images/Image | Y | URL to the image | |
./Hotel/Services | Y | Services related to with the hotel | |
./Services/ServicesCategory | Y | Service category | |
./ServicesCategory/@Code | N | String | Service category code |
./ServicesCategory/Service | N | Service | |
./Service/@Code | N | Integer | Service code |
./Hotel/SalesChannels | Y | Sales channels allowed to show this hotel. Restricted information. | |
./SalesChannels/SalesChannel | Y | Sales channel | |
./SalesChannel/@Code | N | String | Channel code |
./Hotel/BoardTypes | Y | Board types | |
./BoardTypes/BoardType | Y | Board type | |
./BoardType/@Code | N | Integer | Board type code |
./Hotel/RoomTypes | Y | Room types | |
./RoomTypes/RoomType | Y | - | Room type. Important: As of the moment, it is not possible for channel managers to retrieve this information, it will be necessary for the list of existing room occupancy codes to be supplied to you manually by the Juniper client and, if this were not possible, managing this element through the API will not be possible. |
./RoomType/@Code | N | Integer | Room occupancy code. For the list of available room occupancy codes contact with Juniper. Additionally, note that you will need to retrieve the resultant room type code from its response. |
./RoomType/@PriceRoom | N | Boolean | If this room have price for the complet room |
./RoomType/@MinimumAge | N | Integer | Minimum age allowed |
./RoomType/@FirstAdditional | Y | Integer | First adult passanger that are considerated as a additional |
./RoomType/@ExternalCode | Y | String | External code |
./RoomType/@NonRefundable | Y | Boolean | If true, the room will convey a non refundable cancellation policy. |
./RoomType/Names | N | Room names | |
./Names/Name | N | String | Room name |
./Name/@Language | N | String | Language |
./RoomType/Descriptions | N | Room descriptions | |
./Descriptions/Description | N | String | Room description |
./Description/@Language | N | String | Language |
./RoomType/RoomCategory | Y | Room category | |
./RoomCategory/@Code | Y | Integer | Category code |
./RoomType/RoomArea | Y | ||
./RoomArea/@Size | N | Decimal | Room area size |
./RoomArea/@Unit | N | Enum | Room area unit type. Possible values: • F: Feet2 • M: Meter2 |
./RoomType/Images | Y | Room images | |
./Images/Image | Y | Specific image | |
./Image/Path | N | String | Image path |
./RoomType/AgeLimits | Y | Age limits | |
./AgeLimits/AgeLimit | Y | Age limit | |
./AgeLimit/@Type | N | String | Age limit type. Possible values: • Child • Guest |
./AgeLimit/@From | N | Integer | From age |
./AgeLimit/@MaxAge | N | Integer | Maximum age |
./Hotel/SpecialNotes | Y | - | Special note information |
./SpecialNotes/SpecialNote | Y | - | Specific special note |
./SpecialNote/@Start | Y | Date | Special note start date |
./SpecialNote/@End | Y | Date | Special note end date |
./SpecialNote/Notes | N | - | Special note, separated by languages. |
./Notes/Note | N | String | Special note contents for a specific language. |
./Note/@Language | N | String | Special note language code |
./SpecialNote/SupplierContracts | Y | - | Special note supplier contract filter. If empty, the note will apply to all of the available contracts. |
./SupplierContracts/SupplierContract | Y | - | Specific supplier contract. |
./SupplierContract/@Code | N | Integer | Supplier contract internal code |
<soap:Envelope xmlns:soap = "http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd = "http://www.w3.org/2001/XMLSchema" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance">
<soap:Body>
<HotelCreation xmlns = "http://www.juniper.es/webservice/2007/">
<HotelCreationRQ Version = "1.1" Language = "en">
<Login Email = "user@mydomain.com" Password = "pass"/>
<HotelCreationRequest>
<Hotel ExternalCode = "CHANNEL_OWN_HOTELCODE">
<Names>
<Name Language = "en" HotelActive = "true">TEST Hotel</Name>
<Name Language = "es" HotelActive = "true">Hotel de TEST</Name>
</Names>
<Descriptions>
<Description Language = "en" Type = "SHT">Short description in English</Description>
<Description Language = "en" Type = "LNG">Field for the long description of the hotel in English</Description>
<Description Language = "es" Type = "SHT">Short description in Spanish</Description>
<Description Language = "es" Type = "LNG">Field for the long description of the hotel in Spanish</Description>
</Descriptions>
<HotelInformation>
<AddressInformation>
<Address>Calle Ficticea</Address>
<PostalCode>07006</PostalCode>
<Longitude>2.627979</Longitude>
<Latitude>39.564713</Latitude>
</AddressInformation>
<HotelCategory Code = "3"/>
<HotelType Code = "1"/>
</HotelInformation>
<Contact>
<PhoneNumbers>
<PhoneNumber Type = "GEN" Country = "+34" Area = "91" Number = "555555"/>
</PhoneNumbers>
<Faxes>
<Fax Type = "GEN" Country = "+34" Area = "91" Number = "555556"/>
</Faxes>
<Emails>
<Email Type = "BOOK">test@email.com</Email>
</Emails>
</Contact>
<Currency Code = "EUR"/>
<ChildrenAges FirstRangeFrom = "3" FirstRangeTo = "7" SecondRangeTo = "12"/>
<Services>
<ServicesCategory Code = "A">
<Service Code = "62"/>
</ServicesCategory>
</Services>
<BoardTypes>
<BoardType Code = "2"/>
</BoardTypes>
<SpecialNotes>
<SpecialNote>
<Notes>
<Note Language = "en">Pool closed</Note>
<Note Language = "es">Piscina cerrada</Note>
</Notes>
</SpecialNote>
</SpecialNotes>
</Hotel>
</HotelCreationRequest>
</HotelCreationRQ>
</HotelCreation>
</soap:Body>
</soap:Envelope>
Following the request example, if the creation is correct, the system will supply you with the hotel complete information, which is exactly the same information as the one supplied on the HotelDetail response.
Kindly refer to the HotelDetail section if you wish to consult the specifications of the nodes and properties of this transaction.
<soap:Envelope xmlns:soap = "http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd = "http://www.w3.org/2001/XMLSchema">
<soap:Body>
<HotelCreationResponse xmlns = "http://www.juniper.es/webservice/2007/">
<HotelCreationRS Url = "http://juniper-uat.bookingengine.es" TimeStamp = "2021-11-05T15:30:20.6912392+01:00" IntCode = "aBo5BORY2ITWYkcFWi0d/cH5iofWCJOkUYqBduGBggc=">
<HotelCreationResponse>
<Hotel ExternalCode = "CHANNEL_OWN_HOTELCODE" Code = "227" ExtendedDiscount = "false">
<Names>
<Name Language = "es" HotelActive = "true">Hotel de TEST</Name>
<Name Language = "en" HotelActive = "true">TEST Hotel</Name>
</Names>
<Descriptions>
<Description Language = "es" Type = "SHT">Short description in Spanish</Description>
<Description Language = "es" Type = "LNG">Field for the long description of the hotel in Spanish</Description>
<Description Language = "en" Type = "SHT">Short description in English</Description>
<Description Language = "en" Type = "LNG">Field for the long description of the hotel in English</Description>
</Descriptions>
<HotelInformation>
<Zone Code = "49455">Son Armadams</Zone>
<AddressInformation>
<Address>Calle Ficticea</Address>
<PostalCode>07006</PostalCode>
<Longitude>2.627979</Longitude>
<Latitude>39.564713</Latitude>
</AddressInformation>
<HotelCategory Code = "3">3 Stars</HotelCategory>
<HotelType Code = "1">General</HotelType>
<HotelChain Code = "13">Prueba</HotelChain>
</HotelInformation>
<Contact>
<PhoneNumbers>
<PhoneNumber Type = "GEN" Country = "+34" Area = "91" Number = "555555"/>
</PhoneNumbers>
<Faxes>
<Fax Type = "GEN" Country = "+34" Area = "91" Number = "555556"/>
</Faxes>
<Emails>
<Email Type = "BOOK">test@email.com</Email>
</Emails>
</Contact>
<Notifications>
<Bookings SendMailTo = "SUPPLIER" SendValuedBookingToSupplier = "true"/>
<ExtranetModification ExtranetUsers = "true" DepartmentPurchaseManager = "true" DepartmentExtranet = "true"/>
</Notifications>
<Currency Code = "EUR"/>
<ProductGroup Code = "80">Juniper</ProductGroup>
<Suppliers>
<Supplier Code = "58">Default supplier</Supplier>
</Suppliers>
<ChildrenAges FirstRangeFrom = "3" FirstRangeTo = "7" SecondRangeTo = "12"/>
<AdvancedInformation>
<OnlyAvailableInTheCallCenter>false</OnlyAvailableInTheCallCenter>
<AllowOnRequest>true</AllowOnRequest>
</AdvancedInformation>
<TimeInformation>
<ReleaseTime/>
</TimeInformation>
<Services>
<ServicesCategory Code = "A">
<Service Code = "62">Pool</Service>
</ServicesCategory>
</Services>
<SalesChannels>
<SalesChannel Code = "B2B"/>
<SalesChannel Code = "B2C"/>
<SalesChannel Code = "Web"/>
<SalesChannel Code = "Xml"/>
<SalesChannel Code = "Xml3"/>
<SalesChannel Code = "WL"/>
</SalesChannels>
<BoardTypes>
<BoardType Code = "2">Bed & Breakfast</BoardType>
</BoardTypes>
<SpecialNotes>
<SpecialNote>
<Notes>
<Note Language = "en">Pool closed</Note>
<Note Language = "es">Piscina cerrada</Note>
</Notes>
</SpecialNote>
</SpecialNotes>
</Hotel>
</HotelCreationResponse>
</HotelCreationRS>
</HotelCreationResponse>
</soap:Body>
</soap:Envelope>
<soap:Envelope xmlns:soap = "http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd = "http://www.w3.org/2001/XMLSchema">
<soap:Body>
<HotelCreationResponse xmlns = "http://www.juniper.es/webservice/2007/">
<HotelCreationRS Url = "http://juniper-uat.bookingengine.es" TimeStamp = "2021-11-05T10:39:21.8970673+01:00" IntCode = "SqJ19SoVC5RaTledwsFI0wFRUpbNKD6/iaDtj8AuguM=">
<Errors>
<Error Code = "DEFAULT_VALUES_NOT_DEFINED">
<Text>Default values are not defined in extranet users: Default values missing</Text>
</Error>
</Errors>
</HotelCreationRS>
</HotelCreationResponse>
</soap:Body>
</soap:Envelope>
<soap:Envelope xmlns:soap = "http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd = "http://www.w3.org/2001/XMLSchema">
<soap:Body>
<HotelCreationResponse xmlns = "http://www.juniper.es/webservice/2007/">
<HotelCreationRS Url = "http://juniper-uat.bookingengine.es" TimeStamp = "2021-11-05T14:49:57.1138292+01:00" IntCode = "y6J4mPbBj3atsSfmkfc75hMp1qz48kb6y4onqR8vafo=">
<Errors>
<Error Code = "INVALID_ACTION_USER">
<Text>No permission to manage the following element: HotelChain</Text>
</Error>
<Error Code = "INVALID_ACTION_USER">
<Text>No permission to manage the following element: Zone</Text>
</Error>
</Errors>
</HotelCreationRS>
</HotelCreationResponse>
</soap:Body>
</soap:Envelope>
This petition will allow you to import new contracts onto the Juniper client system. Performing modifications will not be possible and, if necessary, you will need to request the Juniper client to perform them.
Node / Attribute (@) | Opt | Type | Description |
---|---|---|---|
@Version | N | String | Web Service version |
@Language | N | String | Language in which the response will be returned. Please, contact Juniper for available languages. |
{Login} | N | - | Customer login to access the Web Service |
HotelExtranetContractRequest | N | - | |
./HotelExtranetContractRequest/@Code | Y | Integer | Contract code. Restricted information. |
./HotelExtranetContractRequest/@HotelCode | N | Integer | Related hotel code. |
./HotelExtranetContractRequest/@Active | Y | Boolean | If the contract is active. Restricted information, contracts will be disabled by default and activated by the Juniper client once verified. |
./HotelExtranetContractRequest/@Delete | Y | Boolean | If you wish to delete the contract. |
./HotelExtranetContractRequest/@Currency | N/Y | String | Contract currency code. It’s not possible to change if there are bookings or prices loaded |
./HotelExtranetContractRequest/@ReleaseApplication | Y | Enum | Release application. Possible values: • Stay: Applies to all of the stay. • Checkin: Applies to the checkin date. |
./HotelExtranetContractRequest/@VisibleForExtranetUsers | Y | Boolean | If the contract is visible for extranet users. Restricted information, true by default. |
./HotelExtranetContractRequest/@OffersApplication | Y | Enum | Offer application. Possible values. • Priority: By the priority attribute. • BestPrice: Apply the best price. |
./HotelExtranetContractRequest/@AllowFreeRate | Y | Boolean | If the contract it is of free rates. Restricted information, it will be active by default. |
./HotelExtranetContractRequest/@RecommendedSalesPrice | Y | Enum | If the contract will allow for recommended prices to be specified. Possible values: • No: Recommended prices will not be allowed • NoShow: It is possible to load, but they will not show to customers • NoShowHours: It will not show only at special hours • Yes: It is possible to load and they will show to customers. |
./HotelExtranetContractRequest/@SendStopSales | Y | Boolean | If the stop sales will be send in the reports. Restricted information. |
./HotelExtranetContractRequest/@PaymentAtDestination | Y | Boolean | If the contract accept payment at destination. It is not available in all the systems. If the contract has this value selected, it’s not possible to change. |
./HotelExtranetContractRequest/@ShowValuedBookingSupplier | Y | Enum | If the supplier can see the booking value. Restricted information. |
./HotelExtranetContractRequest/@SendBookingToHotel | Y | Enum | Send bookings to the hotel email, and not to the supplier email. Restricted information. |
./HotelExtranetContractRequest/@ImmediatePayment | Y | Boolean | If part of the bookings should be paid at booking time. It is not available in all the systems. |
./HotelExtranetContractRequest/@NonRefundable | Y | Boolean | Indicates if the contract will be a non-refundable one. |
./HotelExtranetContractRequest/Name | N/Y | String | Contract name. |
./HotelExtranetContractRequest/Type | N/Y | - | Contract type. |
./Type/@Code | N | Integer | Contract type code. |
./HotelExtranetContractRequest/Season | N/Y | - | Season. |
./Season/@Code | N | Integer | Season code. |
./HotelExtranetContractRequest/ValidPeriod | N/Y | - | Valid contract period. |
./ValidPeriod/@From | N | Date | From value. |
./ValidPeriod/@To | N | Date | To value. |
./HotelExtranetContractRequest/Category | Y | - | Contract category. |
./Category/@Code | Y | Integer | If there is Category, but don’t have @Code, means that no category is wanted |
./HotelExtranetContractRequest/SupplierContractSharingAllotment | Y | - | If use the allotment from another contract. Only allowed in the creation request. |
./SupplierContractSharingAllotment/@Code | N | Integer | Contract code with the allotment. |
./HotelExtranetContractRequest/Organization | Y | - | Contract organization. It is not available in all the systems. Restricted information. |
./Organization/@Code | N | Integer | Organization code. |
./HotelExtranetContractRequest/VirtualCreditCardPayment | Y | - | Virtual credit card information. |
./VirtualCreditCardPayment/@Type | N | Enum | If it uses a credit card. Possible values: • Yes • No • Default |
./VirtualCreditCardPayment/CardPoolCurrency | Y | String | Card currency. |
./VirtualCreditCardPayment/PaymentDate | Y | - | Payment date. |
./PaymentDate/@Type | N | Enum | Payment date type. Possible values: • Arrival • Booking • Departure |
./PaymentDate/@Days | Y | Integer | Number of days |
./VirtualCreditCardPayment/RecipientsEmailAddress | Y | String | Emails. |
./HotelExtranetContractRequest/UseMultipleAccommodationContracts | Y | Boolean | If the contract can be used in multiple accommodation sales contracts. Restricted information. |
./HotelExtranetContractRequest/PackageApplication | Y | Enum | If the contract may be used as part of a package. Restricted information. |
./HotelExtranetContractRequest/LiberateMinimumAllotments | Y | - | Rules to release the minimum allotment. |
./LiberateMinimumAllotments/@Action | N | Enum | Action to be performed. Possible values: • Add: Add the specified elements • Replace: Replace the current items with the specified ones. • Delete: Delete the currently saved list of elements. |
./LiberateMinimumAllotments/LiberateMinimumAllotment | Y | - | Rule. It can have, @From, @To and @NumDays, or @RelaseDate |
./LiberateMinimumAllotment/@RoomTypeCode | N | Integer | Room type code to which it applies. |
./LiberateMinimumAllotment/@From | Y | Date | From period. |
./LiberateMinimumAllotment/@To | Y | Date | To date period. |
./LiberateMinimumAllotment/@NumDays | Y | Integer | Number of days to liberate allotment. |
./LiberateMinimumAllotment/@ReleaseDate | Y | Date | Date when all the minimum allotment will be liberated. |
./HotelExtranetContractRequest/RoomTypes | Y | - | New room types to be related to the contract. Removing room types will not be possible. |
./RoomTypes/RoomType | Y | - | Specific room type. |
./RoomType/@Code | N | Integer | Room type code. |
./HotelExtranetContractRequest/Boards | Y | - | Board filter, allows for the following actions: • If not included on its creation, the contract will work with all of the existing boards of the hotel. • When modifying, not including the node will retain its previous configuration, while including the node as empty will remove the filter itself, enabling all of the existing boards of the hotel. |
./Boards/Board | Y | - | Specific board. |
./Board/@Code | N | Integer | Board internal code. |
./HotelExtranetContractRequest/AdditionalInformation | Y | - | Additional information. |
./AdditionalInformation/Remarks | Y | - | Contract remarks. |
./Remarks/Remark | Y | - | Contract remark. |
./Remark/@Language | N | String | Language code. The list of available languages will depend on the system. |
./Remark/Text | N | String | Remark text. |
./AdditionalInformation/MinimumAgeDateRanges | Y | - | Minimum age configuration. Optional configuration from the system on which the hotel may set minimum age configurations by date range. |
./MinimumAgeDateRanges/MinimumAgeDateRange | N | - | Specific date range. |
./MinimumAgeDateRange/@From | N | Date | From date. |
./MinimumAgeDateRange/@To | N | Date | To date. |
./MinimumAgeDateRange/@MinimumAge | N | Integer | Minimum age for the date range. |
./AdditionalInformation/InternalNotes | Y | String | Internal notes. |
./AdditionalInformation/ChildrenAges | Y | String | Children ages ranges, if they are different than in the hotel. |
./ChildrenAges/@FirstRangeFrom | N | Integer | First range from. |
./ChildrenAges/@FirstRangeTo | N | Integer | First range to. |
./ChildrenAges/@SecondRangeTo | Y | Integer | Second range to, if it is neccesary. |
./ChildrenAges/@ThirdRangeTo | Y | Integer | Third range to, if it is neccesary. |
./AdditionalInformation/BookingLengthOfStay | Y | - | Length of stay restriction for all the contract. |
./BookingLengthOfStay/@From | Y | Integer | From nights. |
./BookingLengthOfStay/@To | Y | Integer | To nights. |
./AdditionalInformation/SupplierCommission | Y | - | Supplier commission configuration. Restricted information. |
./SupplierCommission/@Type | N | Enum | Supplier commission type. Possible values: • Yes: The commission should be in @Value • No: No commission • Default: Will refer to the hotel configuration. |
./SupplierCommission/@Value | Y | Double | Supplier commission percentage. |
./AdditionalInformation/ExternalCode | Y | String | External code. |
./AdditionalInformation/ContractsManager | Y | String | Contract manager information. |
./HotelExtranetContractRequest/ExtranetUsers | Y | - | Extranet users that have access to this contract. Restricted information, the contract will be associated to your user by default. |
./ExtranetUsers/@Action | N | Enum | Action to be performed. Possible values: • Add: Add the specified elements • Replace: Replace the current items with the specified ones. • Delete: Delete the currently saved list of elements. |
./ExtranetUsers/ExtranetUser | Y | - | Specific extranet user. |
./ExtranetUser/@Code | N | Integer | Extranet user code. |
./HotelExtranetContractRequest/{AccessConditions} | Y | Array | Node that contains access control restrictions about the policy. Restricted information. |
<soapenv:Envelope xmlns:soapenv = "http://schemas.xmlsoap.org/soap/envelope/" xmlns = "http://www.juniper.es/webservice/2007/">
<soapenv:Header/>
<soapenv:Body>
<HotelExtranetContract>
<HotelExtranetContractRQ Version = "1.1" Language = "en">
<Login Email = "user@mydomain.com" Password = "pass"/>
<HotelExtranetContractRequest HotelCode = "227" Currency = "USD" ReleaseApplication = "Stay" OffersApplication = "Priority" AllowFreeRate = "true" RecommendedSalesPrice = "Yes" PaymentAtDestination = "false" NonRefundable = "false">
<Name>Test Contract</Name>
<ValidPeriod From = "2021-11-05" To = "2022-12-31"/>
<AdditionalInformation>
<Remarks>
<Remark Language = "en">Contract special remarks on English</Remark>
<Remark Language = "es">Contract special remarks on Spanish</Remark>
</Remarks>
<ChildrenAges FirstRangeFrom = "3" FirstRangeTo = "7" SecondRangeTo = "15"/>
<ExternalCode>CHANNEL_OWN_CONTRACTCODE</ExternalCode>
</AdditionalInformation>
</HotelExtranetContractRequest>
</HotelExtranetContractRQ>
</HotelExtranetContract>
</soapenv:Body>
</soapenv:Envelope>
Following the request example, if the creation/modification is correct, the system will supply you with the extranet contract complete information, which is exactly the same information as the one supplied on the HotelExtranetContractGet response.
Kindly refer to the HotelExtranetContractGet section if you wish to consult the specifications of the nodes and properties of this transaction.
<soap:Envelope xmlns:soap = "http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd = "http://www.w3.org/2001/XMLSchema">
<soap:Body>
<HotelExtranetContractResponse xmlns = "http://www.juniper.es/webservice/2007/">
<HotelExtranetContractRS Url = "http://juniper-uat.bookingengine.es" TimeStamp = "2021-11-05T15:58:10.3507218+01:00" IntCode = "hIGGQnWQCDSf+6m3zMCgDR2B89pdGqOQsvRAfxZ5daXL5+A8tWCRF+eMbGpzbLfq">
<HotelExtranetContract>
<Contract Code = "341" HotelCode = "227" Active = "false" Currency = "USD" ReleaseApplication = "Stay" VisibleForExtranetUsers = "true" OffersApplication = "Priority" AllowFreeRate = "true" RecommendedSalesPrice = "Yes" SendStopSales = "true" ShowValuedBookingSupplier = "Default" SendBookingToHotel = "Yes" NonRefundable = "false">
<Name>Test Contract</Name>
<Type Code = "4">FIT</Type>
<Season Code = "1">2015 - 2030</Season>
<ValidPeriod From = "2021-11-05" To = "2022-12-31"/>
<VirtualCreditCardPayment Type = "Default"/>
<UseMultipleAccommodationContracts>true</UseMultipleAccommodationContracts>
<PackageApplication>All</PackageApplication>
<RoomTypes/>
<Boards>
<Board Code = "2"/>
</Boards>
<AdditionalInformation>
<Remarks>
<Remark Language = "en">Contract special remarks on English.</Remark>
<Remark Language = "es">Contract special remarks on Spanish.</Remark>
</Remarks>
<ChildrenAges FirstRangeFrom = "3" FirstRangeTo = "7" SecondRangeTo = "15"/>
<SupplierCommission Type = "Default"/>
<ExternalCode>CHANNEL_OWN_CONTRACTCODE</ExternalCode>
</AdditionalInformation>
<ExtranetUsers>
<ExtranetUser Code = "99">user@mydomain.com</ExtranetUser>
</ExtranetUsers>
<AccessConditions>
<AccessCondition AllowAccess = "true"/>
</AccessConditions>
</Contract>
</HotelExtranetContract>
</HotelExtranetContractRS>
</HotelExtranetContractResponse>
</soap:Body>
</soap:Envelope>
On big responses, most of the response time will be spent sending and/or receiving the request through the internet (transfer times). Allowing for compressed responses to be returned will considerably improve the same and, in short, reduce transfer times and/or the response size by about 95%.
To allow for compressed responses, you should include the following HTTP header within all of your XML requests:
If the server detects that this header has been included, it will then supply you with a compressed response and the client will receive our response along the Content-Encoding: gzip header. The client that receives the response has to decompress it before processing. This is a part of the HTTP standard protocol.
You will be able to update any date from within the season dates of the selected contract.
Only when each one of the requests that are being sent belongs to a completely different contract (meaning the sending multiple parallel request from within a specific contract it is ot allowed, as if you did you would be getting PARALLEL_UPDATE error responses).
When periodically sending ExtranetReadBooking requests in order to retrieve all of the available bookings within a specific Juniper client, you may identify if the mentioned has been created, modified and/or cancelled by:
In addition to the above, if you absolutely need to identify if the booking has been created on the Juniper system (otherwise you may skip this note), we recommend for you to do the same by comparing the @ReservationDate and @ModificationDate of the item alongside a margin of 1 minute (in other words, if the modification date is within one minute of the reservation date then this will mean that the booking was recently created).
You will be able to find all of the available exceptions on the Channel Manager API within the general Exceptions section.
In this section, you will find a description of the certification process that we will ask you to perform before connecting to live.
This process consists on some basic tests of the features that you have developed along some questions for our common client reference (as the mentioned common client will have to configure your hotels keeping the mentioned answers in mind). If we find any problem we will inform you so that you can fix it, otherwise, if everything is correct, we will proceed with the live environment connection process.
Important note:
If you haven't already, kindly fill (or update, if anything has changed since we first supplied you with this document on our welcome mail) and supply us with the following questionnaire:
Channel Manager Integration FormHaving the mentioned appropriately filled out will be necessary in order to successfully complete the certification process.
The certification process as a whole will depend on the list of processes from Hotel Extranet Integration that you decided on implementing and will be separated by each one of these steps:
Note that later, once you connect to the live environment of our Juniper clients, you will only be capable of using the processes that you previously implemented and certified in the development environment.
Next, we will proceed to explain each of these steps in detail:
On this step of the certification, we will validate for you to be properly synchronizing availability, rates and inventory between both systems, by using the ExtranetHotelRatesUpdate request.
If you do not plan on implementing this transaction and only plan on downloading reservations, there will not be any need for you to comply with this certification, simply notify us so and skip this step.
For the certification of this request, we will mainly verify that:
In order to achieve this, we will go over the following topics, namely the ARI certification checklist:
We will now elaborate each and every one of these topics in detail, and it will be very important for you to read and to comply with each of them, as going over them will be required in order to complete the certification:
Note that on our system, a specific contract from a specific hotel will not allow for multiple simultaneous requests to be performed (to have multiple threads), and that all of those updates will need to be done sequentially, as attempting to do so would result on you getting the following error response:
<ExtranetRatesUpdRS Url = "https://juniper-uat.bookingengine.es" TimeStamp = "2023-08-07T13:13:33.9502005+02:00" IntCode = "a6h6W...">
<Errors>
<Error Code = "PARALLEL_UPDATE">
<Text>Parallel update not allowed. Wait until old requests have finished.</Text>
</Error>
</Errors>
</ExtranetRatesUpdRS>
Other than this, having multiple threads on different hotels or even different contracts from the same hotel will be perfectly fine, this restriction is only in effect within the updates of a single hotel contract.
When sending a specific availability, rate and/or inventory update with the intention of synchronizing both systems, How will you be handling the scenario in which you do not get a successful response and, in short, you cannot confirm/verify that the update was successfully synchronized?
We strongly recommend for you to take into account this scenario and for you to model your integration in a way that it will not settle for not having the information fully synchronized between both systems having, if necessary, to resend the update multiple times till it is capable of confirming that the updated ended up getting successfully applied on the end system.
For the synchronization of availability between both systems, we will request you to:
For the synchronization of rates between both systems, we will request you to:
For the synchronization of inventory between both systems, we will request you to clarify which of the following allotment types will you be implementing:
BaseAllotment: Base number of allotments available (total number of allotments available for the room, even if there are already some rooms sold).
TotalAvailable: Number of rooms that are currently available for sale (regardless of how many rooms may have already been sold).
And to supply us with XML logs (request and response) on which you're updating this allotment type.
It's very important to understand how are each of these allotment types differentiated, so that you may select the appropriate allotment type and avoid having allotment mismatches between both systems.
As long as your system is compatible with this, our recommendation here is to work with available allotments, those of the below example:
<Allotments> <Allotment TotalAvailable = "3"> <Dates> <Date From = "2020-01-01" To = "2020-01-01"/> </Dates> <RoomTypes> <RoomType Code = "187"/> </RoomTypes> </Allotment> </Allotments>
On this step of the certification, we will validate that you're properly implementing each of the booking transactions, the below for reference:
If you do not plan on implementing any of these requests or allowing for the retrieval of reservations, there will not be any need for you to comply with this certification, simply notify us so and skip this step.
Having said this, if you've implemented any of these requests, we will request you to comply with the below topics (those respective to the requests you've implemented):
For the certification of this request, we will mainly verify that:
In order to achieve this, we will go over the following topics, namely the booking retrieval certification checklist:
We will now elaborate each and every one of these topics in detail, and it will be very important for you to read and to comply with each of them, as going over them will be required in order to complete the certification:
To start with the certification, we would like for you to describe and elaborate on how you will be implementing and using the ExtranetReadBooking request (as much detail regarding the involved process as possible).
Please add some example logs of ExtranetReadBooking requests that you intend on sending us with in order to achieve with the flow that you've just explained.
If you plan on sending this request periodically, for example, in order to retrieve the bookings that have been created and/or modified on the last set of minutes, it becomes very important to ensure that there will be no timefram "gaps" between your requests.
To exemplify on what we refer by "gap" through actual modification dates; on a booking retrieval process that requests for all of the reservations that have been modified on the last 10 minutes, every 10 minutes:
- At "09:00:01" requesting for the bookings of the last 10 minutes would imply the below dates being sent:
<ModificationDate From="2023-08-01T08:50:01+00:00" To="2023-08-01T09:00:01+00:00"/>
- At "09:10:03" (if the system had some performance problems for which the request was sent 2-3 seconds later), requesting for the bookings of the last 10 minutes would imply the below dates being sent:
<ModificationDate From="2023-08-01T09:00:03+00:00" To="2023-08-01T09:10:03+00:00"/>
Implying that, as you can see on this conceptual example, for there to be a small gap between "2023-08-01T09:00:01+00:00" and "2023-08-01T09:00:03+00:00" for which, if a booking were to have been created and/or modified within these 2 seconds, it would have been missed from the booking retrieval process.
Due to this, we strongly recommend for a margin to be included within your periodic booking retrieval requests, such as in the next example: If you planned on sending this request once every 10 minutes, we would recommend for you to implement a margin of 5 minutes into account and, in short, to request for all of the reservations that were modified under the last 15 minutes, every 10 minutes.
In order for us to validate that this has been taken into account, we would like for you to supply us with the XML logs of two consecutive ExtranetReadBooking requests so that we may verify that you won't be missing any booking with this process.
In order to ensure that you will not be missing any reservations (on those scenarios on which the connection could fail: any kind of connection problems, system maintenances, etc...), we would like for you to implement a safety mechanism that would take into account any of the booking that you could have missed during this timeframe (the timeframe during which the service was unavailable).
If you do not have any satefy mechanism already in place, one of our recommendations here is to always save the DateTime of the last succesful response and to always take this value into account (along with the margin that you would like to implement on your requests) on the @From property from your subsequent booking retrieval request, such as in the below example:
In a process whose intention is to request every 10 minutes, for all of the bookings that have been modified during the last 15 minutes (margin of 5 minutes):
<ModificationDate From="2023-08-01T09:45:00+00:00" To="2023-08-01T10:00:00+00:00"/>
<ModificationDate From="2023-08-01T09:55:00+00:00" To="2023-08-01T10:10:00+00:00"/>
<ModificationDate From="2023-08-01T09:55:00+00:00" To="2023-08-01T10:20:00+00:00"/>
<ModificationDate From="2023-08-01T09:55:00+00:00" To="2023-08-01T10:30:00+00:00"/>
Could you please detail how do you intend on identifying a specific booking of a specific room combination?
On Juniper we have two separate levels that structure a reservation:
Such as in the below API example, on which you will be able to find a booking that has one booking line available:
<Reservation Locator="12VPPZ" Channel="Xml" Interface="XML" Status="PAG">
<Holder>...</Holder>
<Paxes Adults="2" Children="0">...</Paxes>
<BookingRemarks>...</BookingRemarks>
<Agency>...</Agency>
<Items>
<HotelItem Start="2019-12-11" End="2019-12-25" ItemId="588945" Status="OK"
ReservationDate="2019-10-01T10:23:11.66" ModificationDate="2019-10-18T10:31:53.913"
DirectPayment="false" LuckyDipHotel="false" GroupBooking="false"
SpecialPriceBooking="false" TimeZone="-03:00">
Understanding this, given that what actually represents the reservation is the @ItemId and given that most of our Juniper clients will expect to find and/or notify reservations using the @Locator, we request you to take both references into account and to identify our reservations on your system by saving a combined reference of both ids.
For example, as per the above reservation, we would recommend you to identify this booking by saving:
12VPPZ-588945
Could you please describe and exemplify how are you going to identify the status of a reservation?
Following the explanation we just had regarding the levels that structure a reservation on our system, we also have properties that represent the statuses of each of these levels:
<Reservation Locator = "12VPPZ" Channel = "Xml" Interface = "XML" Status = "PAG">
<HotelItem Start = "2019-12-11" End = "2019-12-25" ItemId = "588945" Status = "OK"
ReservationDate = "2019-10-01T10:23:11.66" ModificationDate = "2019-10-18T10:31:53.913"
DirectPayment = "false" LuckyDipHotel = "false" GroupBooking = "false"
SpecialPriceBooking = "false" TimeZone = "-03:00">
Due to this, we recommend for you to always identify the status of a reservation while using the booking line reference, in other words: HotelItem@Status
This is because this is the relevant status that's available for the hotel reservation in question, and because using the general booking status may lead to discrepancies in some specific scenarios, for example:
In the event on which a booking had two booking lines available (a hotel reservation and a flight reservation) and the end-customer decided to cancel the hotel reservation (leaving the flight reservation confirmed), the general booking status would keep being that of a confirmed reservation (Reservation @ Status = "PAG"), while the hotel item status would then be changed to cancelled (HotelItem @ Status = "CA").
If here you focused on the general booking status, you would then not detect that the booking line would have gotten canceled.
Do you have any restrictions and/or requirements on the bookings that you would import through the ExtranetReadBooking request?
For example: Do you require hotel, room or contract mappings? It will be important for any Juniper client to which you will connect to understand any restriction that you may have in this regard.
If you have requirements for which you could discard and/or ignore a reservation, we would strongly recommend you to log these scenarios and to notify your customer of them.
The objective here is to ensure that no bookings will be missed from the booking retrieval process and that, if discarded, the hotelier will have a notice of why was this the case in order to correct the mapping or whichever parameter that originated the same.
When requesting for bookings of a specific date range (for example, ModificationDate @From and @To), please ensure that your dates include the TimeZone from which the request originates from (your own TimeZone).
By doing this, you will ensure that you will be retrieving the proper bookings regardless of which is your TimeZone and which is the TimeZone of your client, such as in the below example:
<ExtranetReadBooking>
<ReadBookingRQ Version="1.1" Language="en">
<Login Email="user@mydomain.com" Password="pass"/>
<SearchItems>
<ModificationDate From="2019-10-18T15:00:00+02:00" To="2019-10-18T16:00:00+02:00"/>
</SearchItems>
</ReadBookingRQ>
</ExtranetReadBooking>
As, if not complied with and if there were differences between your TimeZone and that of your client, you would either be unable of retrieving their reservations, or you would either be retrieving their reservations with a delay of as many hours as the TimeZone difference.
Last of all, if you plan on implementing the ExtranetUpdateBooking request, kindly supply us with an example of XML logs on which you're updating the hotel confirmation number of a reservation.
This step of the certification is centered around the use of the Hotel Extranet Import Transactions transactions, if you do not plan of implementing this process, simply skip this step.
In order to assure a correct use of these transactions, we will require for you to supply us with XML request and response examples of the following requests:
Additionally, we will request for you to supply us with a brief workflow on how you will be implementing these transactions and on how will they be matching your own system.