Visão geral

Este guia trata das diferenças críticas entre as versões SOAP e REST da API da EAN. Use este guia para como apoio na atualização da sua integração para REST e validação das suas mudanças. Somente o processo de reserva básico (lista, disponibilidade e reservar) está incluído neste guia.

Mudanças globais
##Mudanças globais ###Elementos comuns Os [elementos comuns de solicitação][1] da API são essenciais para autenticações, comissões, estatísticas e preços. A omissão de qualquer elemento comum obrigatório poder gerar incompatibilidades de preço, reservas com falha e outros erros. Esses elementos estão destacados em amarelo neste guia. Na versão SOAP, os elementos comuns eram incluídos no corpo da solicitação. Ao atualizar para a versão REST, esses elementos serão enviados como parâmetros de URL. As respostas JSON não são retornadas por padrão. Para solicitar uma resposta formatada em JSON, é necessário incluir `Accept: application/json` nos cabeçalhos da solicitação HTML. Caso não seja incluído o valor de cabeçalho Accept correto, as respostas para as solicitações REST terão como padrão o formato XML.

Durante os testes, em vez de mudar os cabeçalhos das solicitações, você pode incluir o parâmetro `_type=json` no corpo da solicitação. Esse parâmetro está destacado nos exemplos abaixo, como um lembrete de que as respostas não são formatadas em JSON por padrão. Não use esse parâmetro nas solicitações em modo de produção. [1]: /docs/common/
Elementos comuns da SOAP
<soapenv:Body>
<v3:{serviceName}>
<{requestParentElement}>
<apiKey>#####</apiKey>
<cid>######</cid>
<customerIpAddress>##########</customerIpAddress> <customerUserAgent>##########</customerUserAgent> <customerSessionId>##########</customerSessionId>
<minorRev>##</minorRev> <locale>en_US</locale> <currencyCode>USD</currencyCode> ...
Elementos comuns da REST
http://api.ean.com/ean-services/rs/hotel/v3/{serviceName}?
apiKey=#####
&cid=#####
&customerIpAddress=#####
&customerUserAgent=######
&customerSessionId=#####
&minorRev=##
&locale=en_US
&currencyCode=USD
&_type=json
...


Elementos comuns da SOAP
<soapenv:Body>
<v3:{serviceName}>
<{requestParentElement}>
<apiKey>#####</apiKey>
<cid>######</cid>
<customerIpAddress>##########</customerIpAddress> <customerUserAgent>##########</customerUserAgent> <customerSessionId>##########</customerSessionId>
<minorRev>##</minorRev> <locale>en_US</locale> <currencyCode>USD</currencyCode> ...
Elementos comuns da REST
http://api.ean.com/ean-services/rs/hotel/v3/{serviceName}?
apiKey=#####
&cid=#####
&customerIpAddress=#####
&customerUserAgent=######
&customerSessionId=#####
&minorRev=##
&locale=en_US
&currencyCode=USD
&_type=json
...


Lista de hotéis

A principal mudança na solicitação de lista está na estrutura do objeto quarto exclusiva da API da REST, que compacta os valores dos antigos elementos SOAP em uma lista separada por vírgulas:

&room[room number, starting with 1]= [number of adults], [first child's age], [second child's age], [etc]


Observe que não há uma equivalência direta na REST para o elemento numberOfChildren usado em SOAP e XML. Em vez disso, a contagem de hóspedes crianças de cada quarto é determinada pelo número de valores de idade de criança fornecidos.

Os exemplos abaixo de solicitação referem-se ao mesmo tipo de ocupação: um quarto para dois adultos e duas crianças com 8 e 12 anos de idade e um quarto para somente dois adultos.

Elementos comuns da SOAP
<soapenv:Body>
<v3:{serviceName}>
<{requestParentElement}>
<apiKey>#####</apiKey>
<cid>######</cid>
<customerIpAddress>##########</customerIpAddress> <customerUserAgent>##########</customerUserAgent> <customerSessionId>##########</customerSessionId>
<minorRev>##</minorRev> <locale>en_US</locale> <currencyCode>USD</currencyCode> ...
Elementos comuns da REST
http://api.ean.com/ean-services/rs/hotel/v3/{serviceName}?
apiKey=#####
&cid=#####
&customerIpAddress=#####
&customerUserAgent=######
&customerSessionId=#####
&minorRev=##
&locale=en_US
&currencyCode=USD
&_type=json
...


Lista de hotéis

A principal mudança na solicitação de lista está na estrutura do objeto quarto exclusiva da API da REST, que compacta os valores dos antigos elementos SOAP em uma lista separada por vírgulas:

&room[room number, starting with 1]= [number of adults], [first child's age], [second child's age], [etc]


Observe que não há uma equivalência direta na REST para o elemento numberOfChildren usado em SOAP e XML. Em vez disso, a contagem de hóspedes crianças de cada quarto é determinada pelo número de valores de idade de criança fornecidos.

Os exemplos abaixo de solicitação referem-se ao mesmo tipo de ocupação: um quarto para dois adultos e duas crianças com 8 e 12 anos de idade e um quarto para somente dois adultos.

Solicitação de lista SOAP
<v3:getList>
<HotelListRequest>
<apiKey>#####</apiKey>
<cid>######</cid>
<customerIpAddress>##########</customerIpAddress> <customerUserAgent>##########</customerUserAgent> <customerSessionId>##########</customerSessionId>
<minorRev>##</minorRev> <locale>en_US</locale> <currencyCode>USD</currencyCode>
<destinationString>Milan, Italy</destinationString>
<arrivalDate>08/10/2014</arrivalDate>
<departureDate>08/12/2014</departureDate>
<RoomGroup>
<Room>
<numberOfAdults>2</numberOfAdults>
<numberOfChildren>2</numberOfChildren> <childAges>8</childAges> <childAges>12</childAges>
</Room> <Room>
<numberOfAdults>2</numberOfAdults>
</Room>
</RoomGroup>
</HotelListRequest>
</v3:getList>
Solicitação de lista REST
http://api.ean.com/ean-services/rs/hotel/v3/list?
apiKey=#####
&cid=#####
&customerIpAddress=#####
&customerUserAgent=######
&customerSessionId=#####
&minorRev=##
&locale=en_US
&currencyCode=USD
&_type=json
&destinationString=Milan, Italy
&arrivalDate=08/10/2014
&departureDate=08/12/2014
&room1=2,8,12
&room2=2


Resposta de lista
Resposta de lista SOAP
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<ns2:getListResponse xmlns:ns2="http://v3.hotel.wsapi.ean.com/">
<HotelListResponse>
<customerSessionId>0ABAAACD-8CA1-3191-46D2-55EAD0C935EA</customerSessionId>
<numberOfRoomsRequested>2</numberOfRoomsRequested>
<moreResultsAvailable>true</moreResultsAvailable>
<cacheKey>768ca131:146d55ead0c:35f1</cacheKey>
<cacheLocation>10.186.170.205:7300</cacheLocation>
<cachedSupplierResponse supplierCacheTolerance="NOT_SUPPORTED" cachedTime="0" supplierRequestNum="476" supplierResponseNum="1" supplierResponseTime="108" candidatePreptime="82" otherOverheadTime="34" tpidUsed="5001" matchedCurrency="true" matchedLocale="true"/>
<HotelList size="1" activePropertyCount="532">
<HotelSummary order="0" ubsScore="70578488">
<hotelId>124869</hotelId>
<name>Novotel Milan Nord Ca Granda</name>
<address1>Viale Giovanni Suzzani 13</address1>
<city>Milan</city>
<postalCode>20162</postalCode>
<countryCode>IT</countryCode>
<airportCode>LIN</airportCode>
<supplierType>E</supplierType>
<propertyCategory>1</propertyCategory>
<hotelRating>4.0</hotelRating>
<confidenceRating>50</confidenceRating>
<amenityMask>33587339</amenityMask>
<locationDescription>In Milan (Niguarda)</locationDescription>
<shortDescription><![CDATA[&lt;p&gt;&lt;b&gt;Property Location&lt;/b&gt; &lt;br /&gt;With a stay at Novotel Milan Nord Ca Granda in Milan (Niguarda), you&apos;ll be close to Niguarda Ca Granda Hospital and Cathedral of Milan. This 4-star hotel is within]]></shortDescription>
<highRate>103.05</highRate>
<lowRate>103.05</lowRate>
<rateCurrencyCode>USD</rateCurrencyCode>
<latitude>45.5062</latitude>
<longitude>9.19759</longitude>
<proximityDistance>2.127312</proximityDistance>
<proximityUnit>MI</proximityUnit>
<hotelInDestination>true</hotelInDestination>
<thumbNailUrl>/hotels/1000000/20000/11500/11430/11430_86_t.jpg</thumbNailUrl>
<deepLink>{removed for brevity}</deepLink>
<RoomRateDetailsList>
<RoomRateDetails>
<roomTypeCode>185262</roomTypeCode>
<rateCode>200103261</rateCode>
<maxRoomOccupancy>4</maxRoomOccupancy>
<quotedRoomOccupancy>2</quotedRoomOccupancy>
<minGuestAge>0</minGuestAge>
<roomDescription>Superior Room, 1 King Bed with Sofabed</roomDescription>
<propertyAvailable>true</propertyAvailable>
<propertyRestricted>false</propertyRestricted>
<expediaPropertyId>11430</expediaPropertyId>
<RateInfos size="1">
<RateInfo priceBreakdown="true" promo="true" rateChange="false">
<RoomGroup>
<Room>
<numberOfAdults>2</numberOfAdults>
<numberOfChildren>2</numberOfChildren>
<childAges>8</childAges>
<childAges>12</childAges>
</Room>
<Room>
<numberOfAdults>2</numberOfAdults>
<numberOfChildren>0</numberOfChildren>
</Room>
</RoomGroup>
<ChargeableRateInfo averageBaseRate="103.05" averageRate="103.05" commissionableUsdTotal="412.2" currencyCode="USD" maxNightlyRate="103.05" nightlyRateTotal="412.2" surchargeTotal="22.68" total="434.88">
<NightlyRatesPerRoom size="2">
<NightlyRate baseRate="103.05" rate="103.05" promo="false"/>
<NightlyRate baseRate="103.05" rate="103.05" promo="false"/>
</NightlyRatesPerRoom>
<Surcharges size="1">
<Surcharge type="TaxAndServiceFee" amount="22.68"/>
</Surcharges>
</ChargeableRateInfo>
<nonRefundable>true</nonRefundable>
<HotelFees size="1">
<HotelFee description="MandatoryTax" amount="109.05"/>
</HotelFees>
<rateType>MerchantStandard</rateType>
<promoId>205982103</promoId>
<promoDescription>Sale! Save 30% on this Stay.</promoDescription>
<promoType>Standard</promoType>
<currentAllotment>0</currentAllotment>
</RateInfo>
</RateInfos>
<ValueAdds size="1">
<ValueAdd id="2048">
<description>Free Wireless Internet</description>
</ValueAdd>
</ValueAdds>
</RoomRateDetails>
</RoomRateDetailsList>
</HotelSummary>
</HotelList>
</HotelListResponse>
</ns2:getListResponse>
</soap:Body>
</soap:Envelope>
Resposta de lista JSON
    {
"HotelListResponse": {
"customerSessionId": "0ABAAA7C-15C0-2291-46D2-4F67C5B91386",
"numberOfRoomsRequested": 2,
"moreResultsAvailable": true,
"cacheKey": "5315c022:146d4f67c5b:138c",
"cacheLocation": "10.186.170.124:7300",
"cachedSupplierResponse": {
"@supplierCacheTolerance": "NOT_SUPPORTED",
"@cachedTime": "0",
"@supplierRequestNum": "476",
"@supplierResponseNum": "1",
"@supplierResponseTime": "109",
"@candidatePreptime": "14",
"@otherOverheadTime": "25",
"@tpidUsed": "5001",
"@matchedCurrency": "true",
"@matchedLocale": "true"
},
"HotelList": {
"@size": "1",
"@activePropertyCount": "532",
"HotelSummary": {
"@order": "0",
"@ubsScore": "70790284",
"hotelId": 124869,
"name": "Novotel Milan Nord Ca Granda",
"address1": "Viale Giovanni Suzzani 13",
"city": "Milan",
"postalCode": 20162,
"countryCode": "IT",
"airportCode": "LIN",
"supplierType": "E",
"propertyCategory": 1,
"hotelRating": 4,
"confidenceRating": 50,
"amenityMask": 33587339,
"locationDescription": "In Milan (Niguarda)",
"shortDescription": "&lt;p&gt;&lt;b&gt;Property Location&lt;/b&gt; &lt;br /&gt;With a stay at Novotel Milan Nord Ca Granda in Milan (Niguarda), you&apos;ll be close to Niguarda Ca Granda Hospital and Cathedral of Milan. This 4-star hotel is within",
"highRate": 102.86,
"lowRate": 102.86,
"rateCurrencyCode": "USD",
"latitude": 45.5062,
"longitude": 9.19759,
"proximityDistance": 2.127312,
"proximityUnit": "MI",
"hotelInDestination": true,
"thumbNailUrl": "/hotels/1000000/20000/11500/11430/11430_86_t.jpg",
"deepLink": {removed for brevity}
"RoomRateDetailsList": {
"RoomRateDetails": {
"roomTypeCode": 185262,
"rateCode": 200103261,
"maxRoomOccupancy": 4,
"quotedRoomOccupancy": 2,
"minGuestAge": 0,
"roomDescription": "Superior Room, 1 King Bed with Sofabed",
"propertyAvailable": true,
"propertyRestricted": false,
"expediaPropertyId": 11430,
"RateInfos": {
"@size": "1",
"RateInfo": {
"@priceBreakdown": "true",
"@promo": "true",
"@rateChange": "false",
"RoomGroup": {
"Room": [
{
"numberOfAdults": 2,
"numberOfChildren": 2,
"childAges": [
8,
12
]
},
{
"numberOfAdults": 2,
"numberOfChildren": 0
}
]
},
"ChargeableRateInfo": {
"@averageBaseRate": "102.86",
"@averageRate": "102.86",
"@commissionableUsdTotal": "411.44",
"@currencyCode": "USD",
"@maxNightlyRate": "102.86",
"@nightlyRateTotal": "411.44",
"@surchargeTotal": "22.64",
"@total": "434.08",
"NightlyRatesPerRoom": {
"@size": "2",
"NightlyRate": [
{
"@baseRate": "102.86",
"@rate": "102.86",
"@promo": "false"
},
{
"@baseRate": "102.86",
"@rate": "102.86",
"@promo": "false"
}
]
},
"Surcharges": {
"@size": "1",
"Surcharge": {
"@type": "TaxAndServiceFee",
"@amount": "22.64"
}
}
},
"nonRefundable": true,
"HotelFees": {
"@size": "1",
"HotelFee": {
"@description": "MandatoryTax",
"@amount": "108.84"
}
},
"rateType": "MerchantStandard",
"promoId": 205982103,
"promoDescription": "Sale! Save 30% on this Stay.",
"promoType": "Standard",
"currentAllotment": 0
}
},
"ValueAdds": {
"@size": "1",
"ValueAdd": {
"@id": "2048",
"description": "Free Wireless Internet"
}
}
}
}
}
}
}
}


Disponibilidade de quartos

Para a solicitação de disponibilidade, integre todos os elementos comuns obrigatórios e o formato do grupo quartos específico da REST conforme detalhado anteriormente para a solicitação de lista de hotéis. Não há nenhuma atualização exclusiva para a solicitação de disponibilidade.

Solicitação de disponibilidade SOAP
<v3:getAvailability>
<HotelRoomAvailabilityRequest> <apiKey>#####</apiKey>
<cid>######</cid>
<customerIpAddress>##########</customerIpAddress> <customerUserAgent>##########</customerUserAgent> <customerSessionId>##########</customerSessionId>
<minorRev>##</minorRev> <locale>en_US</locale> <currencyCode>USD</currencyCode>
<hotelId>124869</hotelId>
<arrivalDate>08/10/2014</arrivalDate>
<departureDate>08/12/2014</departureDate>
<RoomGroup>
<Room>
<numberOfAdults>2</numberOfAdults>
<numberOfChildren>2</numberOfChildren> <childAges>8</childAges> <childAges>12</childAges>
</Room> <Room>
<numberOfAdults>2</numberOfAdults>
</Room>
</RoomGroup> <includeDetails>true</includeDetails>
</HotelRoomAvailabilityRequest>
</v3:getAvailability>
Solicitação de disponibilidade REST
http://api.ean.com/ean-services/rs/hotel/v3/avail?
apiKey=#####
&cid=#####
&customerIpAddress=#####
&customerUserAgent=######
&customerSessionId=#####
&minorRev=##
&locale=en_US
&currencyCode=USD
&_type=json
&hotelId=124869
&arrivalDate=08/10/2014
&departureDate=08/12/2014
&includeDetails=true
&room1=2,8,12
&room2=2
    
Resposta de disponibilidade

Certifique-se de que você está obtendo um valor único ou a escolha do cliente, conforme o que for mais adequado, dos elementos de resposta destacados na cor laranja. Esses valores devem ser repassados aos elementos obrigatórios correspondentes da sua solicitação de reserva.

Para fins de concisão, apenas o primeiro quarto da ocupação solicitada é mostrado. Observe que HotelFeeBreakdown é retornado somente para o exemplo em REST. O parâmetro de solicitação includeHotelFeeBreakdown é definido como true por padrão se for omitido na REST.

Resposta de disponibilidade SOAP
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<ns2:getAvailabilityResponse xmlns:ns2="http://v3.hotel.wsapi.ean.com/">
<HotelRoomAvailabilityResponse size="8">
<customerSessionId>0ABAAA40-F6D7-B914-7452-5318ED902AB5</customerSessionId>
<hotelId>124869</hotelId>
<arrivalDate>08/10/2014</arrivalDate>
<departureDate>08/12/2014</departureDate>
<hotelName>Novotel Milan Nord Ca Granda</hotelName>
<hotelAddress>Viale Giovanni Suzzani 13</hotelAddress>
<hotelCity>Milan</hotelCity>
<hotelCountry>IT</hotelCountry>
<numberOfRoomsRequested>2</numberOfRoomsRequested>
<checkInInstructions>{removed for brevity}</checkInInstructions>
<HotelRoomResponse>
<rateCode>201985271</rateCode>
<roomTypeCode>185262</roomTypeCode>
<rateDescription>Superior Room, 1 King Bed with Sofabed</rateDescription>
<roomTypeDescription>Superior Room, 1 King Bed with Sofabed</roomTypeDescription>
<supplierType>E</supplierType>
<propertyId>11430</propertyId>
<BedTypes size="1">
<BedType id="67">
<description>1 king and 1 sofa bed</description>
</BedType>
</BedTypes>
<smokingPreferences>S,NS</smokingPreferences>
<rateOccupancyPerRoom>4</rateOccupancyPerRoom>
<quotedOccupancy>2</quotedOccupancy>
<minGuestAge>0</minGuestAge>
<RateInfos size="1">
<RateInfo priceBreakdown="true" promo="false" rateChange="true">
<RoomGroup>
<Room>
<numberOfAdults>2</numberOfAdults>
<numberOfChildren>2</numberOfChildren>
<childAges>8</childAges>
<childAges>12</childAges>
<rateKey>0b07a27f-74dc-4a70-b4ac-c67766eb1342</rateKey>
</Room>
<Room>
<numberOfAdults>2</numberOfAdults>
<numberOfChildren>0</numberOfChildren>
<rateKey>0b07a27f-74dc-4a70-b4ac-c67766eb1342</rateKey>
</Room>
</RoomGroup>
<ChargeableRateInfo averageBaseRate="108.905" averageRate="108.905" commissionableUsdTotal="435.62" currencyCode="USD" maxNightlyRate="115.71" nightlyRateTotal="435.62" surchargeTotal="23.96" total="459.58">
<NightlyRatesPerRoom size="2">
<NightlyRate baseRate="114.97" rate="114.97" promo="false"/>
<NightlyRate baseRate="128.5" rate="128.5" promo="false"/>
</NightlyRatesPerRoom>
<Surcharges size="1">
<Surcharge type="TaxAndServiceFee" amount="23.96"/>
</Surcharges>
</ChargeableRateInfo>
<cancellationPolicy>This rate is non-refundable and cannot be changed or cancelled - if you do choose to change or cancel this booking you will not be refunded any of the payment.</cancellationPolicy>
<CancelPolicyInfoList>
<CancelPolicyInfo>
<versionId>206382052</versionId>
<cancelTime>18:00:00</cancelTime>
<startWindowHours>0</startWindowHours>
<nightCount>0</nightCount>
<percent>100</percent>
<currencyCode>USD</currencyCode>
<timeZoneDescription>(GMT+01:00) Brussels, Copenhagen, Madrid, Paris</timeZoneDescription>
</CancelPolicyInfo>
<CancelPolicyInfo>
<versionId>206382051</versionId>
<cancelTime>18:00:00</cancelTime>
<startWindowHours>999</startWindowHours>
<nightCount>0</nightCount>
<percent>100</percent>
<currencyCode>USD</currencyCode>
<timeZoneDescription>(GMT+01:00) Brussels, Copenhagen, Madrid, Paris</timeZoneDescription>
</CancelPolicyInfo>
</CancelPolicyInfoList>
<nonRefundable>true</nonRefundable>
<HotelFees size="1">
<HotelFee description="MandatoryTax" amount="81.16"/>
</HotelFees>
<rateType>MerchantStandard</rateType>
<currentAllotment>0</currentAllotment>
<guaranteeRequired>false</guaranteeRequired>
<depositRequired>true</depositRequired>
<taxRate>26.78</taxRate>
</RateInfo>
</RateInfos>
<ValueAdds size="1">
<ValueAdd id="16777216">
<description>Breakfast Buffet</description>
</ValueAdd>
</ValueAdds>
<deepLink>{removed for brevity}</deepLink>
</HotelRoomResponse>

{other room options removed for brevity}
</HotelRoomAvailabilityResponse>
</ns2:getAvailabilityResponse>
</soap:Body>
</soap:Envelope>
Resposta de disponibilidade JSON
{
"HotelRoomAvailabilityResponse": {
"@size": "8",
"customerSessionId": "0ABAAA8A-00AA-9091-4712-CE0FE89929BF",
"hotelId": 124869,
"arrivalDate": "08\/10\/2014",
"departureDate": "08\/12\/2014",
"hotelName": "Novotel Milan Nord Ca Granda",
"hotelAddress": "Viale Giovanni Suzzani 13",
"hotelCity": "Milan",
"hotelCountry": "IT",
"numberOfRoomsRequested": 2,
"checkInInstructions": {removed for brevity}
"HotelRoomResponse": [
{
"rateCode": 201985271,
"roomTypeCode": 185262,
"rateDescription": "Superior Room, 1 King Bed with Sofabed",
"roomTypeDescription": "Superior Room, 1 King Bed with Sofabed",
"supplierType": "E",
"propertyId": 11430,
"BedTypes": {
"@size": "1",
"BedType": {
"@id": "67",
"description": "1 king and 1 sofa bed"
}
},
"smokingPreferences": "S,NS",
"rateOccupancyPerRoom": 4,
"quotedOccupancy": 2,
"minGuestAge": 0,
"RateInfos": {
"@size": "1",
"RateInfo": {
"@priceBreakdown": "true",
"@promo": "false",
"@rateChange": "true",
"RoomGroup": {
"Room": [
{
"numberOfAdults": 2,
"numberOfChildren": 2,
"childAges": [
8,
12
],
"rateKey": "9d451f73-4a54-48e9-bf18-f8a54e205af1"
},
{
"numberOfAdults": 2,
"numberOfChildren": 0,
"rateKey": "9d451f73-4a54-48e9-bf18-f8a54e205af1"
}
]
},
"ChargeableRateInfo": {
"@averageBaseRate": "108.905",
"@averageRate": "108.905",
"@commissionableUsdTotal": "435.62",
"@currencyCode": "USD",
"@maxNightlyRate": "115.71",
"@nightlyRateTotal": "435.62",
"@surchargeTotal": "23.96",
"@total": "459.58",
"NightlyRatesPerRoom": {
"@size": "2",
"NightlyRate": [
{
"@baseRate": "102.1",
"@rate": "102.1",
"@promo": "false"
},
{
"@baseRate": "115.71",
"@rate": "115.71",
"@promo": "false"
}
]
},
"Surcharges": {
"@size": "1",
"Surcharge": {
"@type": "TaxAndServiceFee",
"@amount": "23.96"
}
}
},
"cancellationPolicy": "This rate is non-refundable and cannot be changed or cancelled - if you do choose to change or cancel this booking you will not be refunded any of the payment.",
"CancelPolicyInfoList": {
"CancelPolicyInfo": [
{
"versionId": 206382052,
"cancelTime": "18:00:00",
"startWindowHours": 0,
"nightCount": 0,
"percent": 100,
"currencyCode": "USD",
"timeZoneDescription": "(GMT+01:00) Brussels, Copenhagen, Madrid, Paris"
},
{
"versionId": 206382051,
"cancelTime": "18:00:00",
"startWindowHours": 999,
"nightCount": 0,
"percent": 100,
"currencyCode": "USD",
"timeZoneDescription": "(GMT+01:00) Brussels, Copenhagen, Madrid, Paris"
}
]
},
"nonRefundable": true,
"HotelFees": {
"@size": "1",
"HotelFee": {
"@description": "MandatoryTax",
"@amount": "81.68",
"HotelFeeBreakdown": {
"@unit": "Per person",
"@frequency": "Per night"
}
}
},
"rateType": "MerchantStandard",
"currentAllotment": 0,
"guaranteeRequired": false,
"depositRequired": true,
"taxRate": 23.96
}
},
"ValueAdds": {
"@size": "1",
"ValueAdd": {
"@id": "16777216",
"description": "Breakfast Buffet"
}
},
"deepLink": {removed for brevity}
},
{other room options removed for brevity}
]
}
}


Reservas

Compare a sua integração com os pontos abaixo antes de tentar a sua primeira reserva de teste. Esses pontos são as fontes de problemas mais comuns para os parceiros que atualizam da versão SOAP para REST.

  • Os elementos destacados na cor laranja no exemplo abaixo são obrigatórios e devem transferir os valores apropriados da resposta de disponibilidade de quartos:
    • Use a escolha do cliente para as preferências de fumante/não fumante ou omita o elemento, caso ele não tenha sido fornecido na resposta do quarto.
    • O valor BedTypeId de cada quarto deve usar um BedType @id attribute correspondente obtido na resposta do quarto.
    • Os valores roomTypeCode, chargeableRate @total, e rateCode correspondentes à seleção de quarto do cliente devem ser transferidos da resposta do quarto.
    • O valor rateKey da resposta do quarto é sempre usado, independentemente da seleção de quarto individual.
  • Consulte toda a nossa documentação de solicitação de reserva e verifique se todos os elementos obrigatórios estão presentes e formatados, conforme determinado.
    • Certifique-se de que os valores inseridos pelo cliente foram validados adequadamente nos formatos obrigatórios. Por exemplo, stateProvinceCode e countryCode aceitam somente códigos com dois caracteres (nomes completos ou outros formatos de valor resultam em falha da reserva).
Solicitação de reserva SOAP
<v3:getReservation>
<HotelRoomReservationRequest>
<apiKey>#####</apiKey>
<cid>######</cid>
<customerIpAddress>##########</customerIpAddress> <customerUserAgent>##########</customerUserAgent> <customerSessionId>##########</customerSessionId>
<minorRev>##</minorRev> <locale>en_US</locale> <currencyCode>USD</currencyCode>
<hotelId>124869</hotelId>
<arrivalDate>08/10/2014</arrivalDate>
<departureDate>08/12/2014</departureDate>
<supplierType>E</supplierType>
<rateKey>e5b389fc-486b-404a-a819-259ab955eb8b</rateKey>
<roomTypeCode>185262</roomTypeCode>
<rateCode>446847</rateCode>
<chargeableRate>518.11</chargeableRate>
<RoomGroup>
<Room>
<firstName>test</firstName>
<lastName>tester</lastName>
<numberOfAdults>2</numberOfAdults>
<numberOfChildren>2</numberOfChildren>
<childAges>8</childAges>
<childAges>12</childAges> <bedTypeId>67</bedTypeId>
<smokingPreference>NS</smokingPreference>
</Room> <Room> <firstName>test</firstName>
<lastName>tester</lastName>
<numberOfAdults>2</numberOfAdults> <bedTypeId>67</bedTypeId>
<smokingPreference>NS</smokingPreference>
</Room>
</RoomGroup>
<ReservationInfo>
<email>test@yourdomain.com</email>
<firstName>test</firstName>
<lastName>tester</lastName>
<homePhone>##########</homePhone>
<workPhone>##########</workPhone>
<creditCardType>##</creditCardType>
<creditCardNumber>#################</creditCardNumber>
<creditCardIdentifier>123</creditCardIdentifier>
<creditCardExpirationMonth>11</creditCardExpirationMonth>
<creditCardExpirationYear>2016</creditCardExpirationYear>
</ReservationInfo>
<AddressInfo>
<address1>travelnow</address1>
<city>Seattle</city>
<stateProvinceCode>WA</stateProvinceCode>
<countryCode>US</countryCode>
<postalCode>98004</postalCode>
</AddressInfo>
</HotelRoomReservationRequest> </v3:getReservation>
Solicitação de reserva REST
https://book.api.ean.com/ean-services/rs/hotel/v3/res?
apiKey=#####
&cid=#####
&customerIpAddress=#####
&customerUserAgent=######
&customerSessionId=#####
&minorRev=##
&locale=en_US
&currencyCode=USD
&_type=json
&hotelId=124869
&arrivalDate=08/10/2014
&departureDate=08/12/2014
&supplierType=E
&rateKey=e5b389fc-486b-404a-a819-259ab955eb8b
&roomTypeCode=185262
&rateCode=446847
&chargeableRate=518.11
&room1=2,8,12
&room1FirstName=test
&room1LastName=tester
&room1BedTypeId=67
&room1SmokingPreference=NS
&room2=1
&room2FirstName=test
&room2LastName=tester
&room2BedTypeId=67
&room2SmokingPreference=NS
&email=test@yourdomain.com
&firstName=tester
&lastName=testing
&homePhone=##########
&workPhone=##########
&creditCardType=CA
&creditCardNumber=#################
&creditCardIdentifier=123
&creditCardExpirationMonth=11
&creditCardExpirationYear=2016
&address1=travelnow
&city=Seattle
&stateProvinceCode=WA
&countryCode=US
&postalCode=98004 
    


Resposta da reserva

Resposta da reserva SOAP
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<ns2:getReservationResponse xmlns:ns2="http://v3.hotel.wsapi.ean.com/">
<HotelRoomReservationResponse>
<customerSessionId>0ABAAA7D-2A56-5914-7452-7D1C8B902456</customerSessionId>
<itineraryId>####</itineraryId>
<confirmationNumbers>1234</confirmationNumbers>
<confirmationNumbers>1235</confirmationNumbers>
<processedWithConfirmation>true</processedWithConfirmation>
<supplierType>E</supplierType>
<reservationStatusCode>CF</reservationStatusCode>
<existingItinerary>false</existingItinerary>
<numberOfRoomsBooked>2</numberOfRoomsBooked>
<drivingDirections/>
<checkInInstructions/>
<arrivalDate>08/10/2014</arrivalDate>
<departureDate>08/12/2014</departureDate>
<hotelName>Novotel Milan Nord Ca Granda</hotelName>
<hotelAddress>Viale Giovanni Suzzani 13</hotelAddress>
<hotelCity>Milan</hotelCity>
<hotelPostalCode>20162</hotelPostalCode>
<hotelCountryCode>IT</hotelCountryCode>
<roomDescription>Superior Room, 1 King Bed with Sofabed</roomDescription>
<rateOccupancyPerRoom>3</rateOccupancyPerRoom>
<RateInfos size="1">
<RateInfo priceBreakdown="true" promo="false" rateChange="true">
<RoomGroup>
<Room>
<numberOfAdults>2</numberOfAdults>
<numberOfChildren>2</numberOfChildren>
<childAges>8</childAges>
<childAges>12</childAges>
<firstName>test</firstName>
<lastName>tester</lastName>
<bedTypeId>67</bedTypeId>
<bedTypeDescription>1 king and 1 sofa bed</bedTypeDescription>
<smokingPreference>NS</smokingPreference>
</Room>
<Room>
<numberOfAdults>2</numberOfAdults>
<numberOfChildren>0</numberOfChildren>
<firstName>test</firstName>
<lastName>tester</lastName>
<bedTypeId>67</bedTypeId>
<bedTypeDescription>1 king and 1 sofa bed</bedTypeDescription>
<smokingPreference>NS</smokingPreference>
</Room>
</RoomGroup>
<ChargeableRateInfo averageBaseRate="122.77" averageRate="122.77" commissionableUsdTotal="491.08" currencyCode="USD" maxNightlyRate="129.59" nightlyRateTotal="491.08" surchargeTotal="27.02" total="518.1">
<NightlyRatesPerRoom size="2">
<NightlyRate baseRate="115.95" rate="115.95" promo="false"/>
<NightlyRate baseRate="129.59" rate="129.59" promo="false"/>
</NightlyRatesPerRoom>
<Surcharges size="1">
<Surcharge type="TaxAndServiceFee" amount="27.02"/>
</Surcharges>
</ChargeableRateInfo>
<cancellationPolicy>We understand that sometimes your travel plans change. We do not charge a change or cancel fee. However, this property (Novotel Milan Nord Ca Granda) imposes the following penalty to its customers that we are required to pass on: Cancellations or changes made after 5:00 PM ((GMT+01:00) Brussels, Copenhagen, Madrid, Paris) on Aug 10, 2014 are subject to a 1 Night Room &amp; Tax penalty. The property makes no refunds for no shows or early checkouts.</cancellationPolicy> <CancelPolicyInfoList>
<CancelPolicyInfo>
<versionId>209134416</versionId>
<cancelTime>18:00:00</cancelTime>
<startWindowHours>0</startWindowHours>
<nightCount>1</nightCount>
<currencyCode>USD</currencyCode>
<timeZoneDescription>(GMT+01:00) Brussels, Copenhagen, Madrid, Paris</timeZoneDescription>
</CancelPolicyInfo>
<CancelPolicyInfo>
<versionId>209134415</versionId>
<cancelTime>18:00:00</cancelTime>
<startWindowHours>1</startWindowHours>
<nightCount>0</nightCount>
<currencyCode>USD</currencyCode>
<timeZoneDescription>(GMT+01:00) Brussels, Copenhagen, Madrid, Paris</timeZoneDescription>
</CancelPolicyInfo>
</CancelPolicyInfoList>
<nonRefundable>false</nonRefundable>
<HotelFees size="1">
<HotelFee description="MandatoryTax" amount="81.16">
<HotelFeeBreakdown unit="Per person" frequency="Per night"/>
</HotelFee>
</HotelFees>
<rateType>MerchantStandard</rateType>
</RateInfo>
</RateInfos>
</HotelRoomReservationResponse>
</ns2:getReservationResponse>
</soap:Body>
</soap:Envelope>
Resposta da reserva JSON
{
"HotelRoomReservationResponse": {
"customerSessionId": "0ABAAACE-8D64-3191-4722-1D3859B948E8",
"itineraryId": ####,
"confirmationNumbers": [
1234,
1235
],
"processedWithConfirmation": true,
"supplierType": "E",
"reservationStatusCode": "CF",
"existingItinerary": false,
"numberOfRoomsBooked": 2,
"drivingDirections": "",
"checkInInstructions": "",
"arrivalDate": "08\/10\/2014",
"departureDate": "08\/12\/2014",
"hotelName": "Novotel Milan Nord Ca Granda",
"hotelAddress": "Viale Giovanni Suzzani 13",
"hotelCity": "Milan",
"hotelPostalCode": 20162,
"hotelCountryCode": "IT",
"roomDescription": "Superior Room, 1 King Bed with Sofabed",
"rateOccupancyPerRoom": 3,
"RateInfos": {
"@size": "1",
"RateInfo": {
"@priceBreakdown": "true",
"@promo": "false",
"@rateChange": "true",
"RoomGroup": {
"Room": [
{
"numberOfAdults": 2,
"numberOfChildren": 2,
"childAges": [
8,
12
],
"firstName": "test",
"lastName": "tester",
"bedTypeId": 67,
"bedTypeDescription": "1 king and 1 sofa bed",
"smokingPreference": "NS"
},
{
"numberOfAdults": 1,
"numberOfChildren": 0,
"firstName": "test",
"lastName": "tester",
"bedTypeId": 67,
"bedTypeDescription": "1 king and 1 sofa bed",
"smokingPreference": "NS"
}
]
},
"ChargeableRateInfo": {
"@averageBaseRate": "122.77",
"@averageRate": "122.77",
"@commissionableUsdTotal": "491.08",
"@currencyCode": "USD",
"@maxNightlyRate": "129.59",
"@nightlyRateTotal": "491.08",
"@surchargeTotal": "27.02",
"@total": "518.1",
"NightlyRatesPerRoom": {
"@size": "2",
"NightlyRate": [
{
"@baseRate": "115.95",
"@rate": "115.95",
"@promo": "false"
},
{
"@baseRate": "129.59",
"@rate": "129.59",
"@promo": "false"
}
]
},
"Surcharges": {
"@size": "1",
"Surcharge": {
"@type": "TaxAndServiceFee",
"@amount": "27.02"
}
}
},
"cancellationPolicy": "We understand that sometimes your travel plans change. We do not charge a change or cancel fee. However, this property (Novotel Milan Nord Ca Granda) imposes the following penalty to its customers that we are required to pass on: Cancellations or changes made after 5:00 PM ((GMT+01:00) Brussels, Copenhagen, Madrid, Paris) on Aug 10, 2014 are subject to a 1 Night Room & Tax penalty. The property makes no refunds for no shows or early checkouts.",
"CancelPolicyInfoList": {
"CancelPolicyInfo": [
{
"versionId": 209134416,
"cancelTime": "18:00:00",
"startWindowHours": 0,
"nightCount": 1,
"currencyCode": "USD",
"timeZoneDescription": "(GMT+01:00) Brussels, Copenhagen, Madrid, Paris"
},
{
"versionId": 209134415,
"cancelTime": "18:00:00",
"startWindowHours": 1,
"nightCount": 0,
"currencyCode": "USD",
"timeZoneDescription": "(GMT+01:00) Brussels, Copenhagen, Madrid, Paris"
}
]
},
"nonRefundable": false,
"HotelFees": {
"@size": "1",
"HotelFee": {
"@description": "MandatoryTax",
"@amount": "68.20",
"HotelFeeBreakdown": {
"@unit": "Per person",
"@frequency": "Per night"
}
}
},
"rateType": "MerchantStandard"
}
}
}
}


Solicitação de itinerário

A solicitação de itinerário é diferente somente quando há especificação do intervalo de datas. Na versão REST, simplesmente omita o elemento <ItineraryQuery> e forneça diretamente os seus parâmetros de data de criação ou partida. Não há nenhuma atualização exclusiva para recuperações de itinerários simples.

Solicitação de itinerário SOAP - Itinerário simples
<v3:getItinerary>
<HotelItineraryRequest>
<apiKey>#####</apiKey>
<cid>#####</cid>
<customerIpAddress>xxx</customerIpAddress>
<customerSessionId>xxx</customerSessionId>
<customerUserAgent>xxx</customerUserAgent> <minorRev>##</minorRev>
<locale>en_US</locale>
<currencyCode>USD</currencyCode> <itineraryId>##########</itineraryId>
<email>test@travelnow.com</email>
</HotelItineraryRequest>
</v3:getItinerary>
Solicitação de itinerário REST - Itinerário simples
http://api.ean.com/ean-services/rs/hotel/v3/itin?
apiKey=#####
&cid=#####
&customerIpAddress=#####
&customerUserAgent=######
&customerSessionId=#####
&minorRev=##
&locale=en_US
&currencyCode=USD
&_type=json
&itineraryId=#########
&email=test@travelnow.com
    

Solicitação de itinerário SOAP - Intervalo de datas
<v3:getItinerary>
<HotelItineraryRequest>
<apiKey>#####</apiKey>
<cid>#####</cid>
<customerIpAddress>xxx</customerIpAddress>
<customerSessionId>xxx</customerSessionId>
<customerUserAgent>xxx</customerUserAgent> <minorRev>##</minorRev>
<locale>en_US</locale>
<currencyCode>USD</currencyCode> <ItineraryQuery> <creationDateStart>09/1/2014</creationDateStart> <creationDateEnd>09/8/2014</creationDateEnd> </ItineraryQuery>
</HotelItineraryRequest>
</v3:getItinerary>
Solicitação de itinerário REST - Intervalo de datas
http://api.ean.com/ean-services/rs/hotel/v3/itin?
apiKey=#####
&cid=#####
&customerIpAddress=#####
&customerUserAgent=######
&customerSessionId=#####
&minorRev=##
&locale=en_US
&currencyCode=USD
&_type=json
&creationDateStart=09/01/2014
&creationDateEnd=09/08/2014
    
Resposta de itinerário

Todas as respostas de itinerário SOAP colocam cada itinerário em seu próprio objeto Itinerary.

Na versão REST, somente no caso das respostas de intervalo de datas de criação ou partida, os itinerários são indexados numericamente em um único objeto Itinerary, com o primeiro itinerário começando por 0. As solicitações de itinerários individuais ainda retornam os dados em um único objeto Itinerary. Para fins de concisão, apenas o exemplo de respostas de intervalo de datas está demonstrado abaixo.

Resposta de itinerário SOAP - Intervalo de datas
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<ns2:getItineraryResponse xmlns:ns2="http://v3.hotel.wsapi.ean.com/">
<HotelItineraryResponse size="17">
<customerSessionId>xxx</customerSessionId>
<Itinerary>
<itineraryId>##########</itineraryId>
<affiliateId>######</affiliateId>
<creationDate>09/03/2014</creationDate>
<creationTime>15:13:11 CDT</creationTime>
<itineraryStartDate>10/03/2014</itineraryStartDate>
<itineraryEndDate>10/05/2014</itineraryEndDate>
<Customer>
<email>test@travelnow.com</email>
<firstName>test</firstName>
<lastName>tester</lastName>
<homePhone>#########</homePhone>
<workPhone>#########</workPhone>
<CustomerAddresses>
<address1>travelnow</address1>
<city>Seattle</city>
<stateProvinceCode>WA</stateProvinceCode>
<countryCode>US</countryCode>
<postalCode>98004</postalCode>
<isPrimary>true</isPrimary>
<type>1</type>
</CustomerAddresses>
</Customer>
<HotelConfirmation>
<supplierId>13</supplierId>
<chainCode>EP</chainCode>
<arrivalDate>10/03/2014</arrivalDate>
<departureDate>10/05/2014</departureDate>
<confirmationNumber>1234</confirmationNumber>
<RateInfos size="1">
<RateInfo priceBreakdown="true" promo="false" rateChange="false">
<ChargeableRateInfo averageBaseRate="8941.0" averageRate="8941.0" commissionableUsdTotal="170.14" currencyCode="JPY" maxNightlyRate="8941.0" nightlyRateTotal="17882.0" total="17882.0">
<NightlyRatesPerRoom size="2">
<NightlyRate baseRate="8941.0" rate="8941.0" promo="false"/>
<NightlyRate baseRate="8941.0" rate="8941.0" promo="false"/>
</NightlyRatesPerRoom>
</ChargeableRateInfo>
<cancellationPolicy>Ce montant ne peut être ni remboursé, ni modifié, ni annulé. Si vous décidez tout de même de modifier ou annuler cette réservation, vos paiements ne vous seront pas remboursés.</cancellationPolicy>
<nonRefundable>true</nonRefundable>
<online>true</online>
<HotelFees size="1">
<HotelFee description="MandatoryTax" amount="1919"/>
</HotelFees>
<rateType>MerchantStandard</rateType>
</RateInfo>
</RateInfos>
<numberOfAdults>2</numberOfAdults>
<numberOfChildren>0</numberOfChildren>
<smokingPreference>N</smokingPreference>
<supplierPropertyId>525133</supplierPropertyId>
<roomTypeCode>176765</roomTypeCode>
<rateCode>1086015</rateCode>
<rateDescription>Réservez tôt et économisez 14%</rateDescription>
<roomDescription>Chambre Double Standard</roomDescription>
<status>DT</status>
<locale>fr_FR</locale>
<ReservationGuest>
<firstName>test</firstName>
<lastName>tester</lastName>
</ReservationGuest>
<Hotel>
<hotelId>113856</hotelId>
<statusCode>A</statusCode>
<name>Hotel BLOOM</name>
<address1>Rue Royale 250</address1>
<city>Brussels</city>
<countryCode>BE</countryCode>
<postalCode>1210</postalCode>
<phone>32-22-206611</phone>
<fax>32-22-178444</fax>
<latitude>50.8552</latitude>
<longitude>4.36673</longitude>
<coordinateAccuracyCode>1</coordinateAccuracyCode>
<lowRate>154.7501</lowRate>
<highRate>297.7253</highRate>
<confidence>88</confidence>
<hotelRating>4.0</hotelRating>
<tripAdvisorRating>4.0</tripAdvisorRating>
<market>Brussels, Belgium</market>
<region>Benelux</region>
<superRegion>EMEA</superRegion>
<theme>Business Hotel</theme>
</Hotel>
<nights>2</nights>
</HotelConfirmation>
</Itinerary>
<Itinerary>
<itineraryId>169502105</itineraryId>
<affiliateId>451667</affiliateId> {truncated for brevity}
Resposta de itinerário JSON - Intervalo de datas
{
@size: "17",
customerSessionId: "0ABAAA35-7CC0-4914-85B2-C2517490798A",
Itinerary: { 1: {
itineraryId: 169435416,
affiliateId: 451667,
creationDate: "09/03/2014",
creationTime: "15:13:11 CDT",
itineraryStartDate: "10/03/2014",
itineraryEndDate: "10/05/2014",
Customer: {
email: "test@travelnow.com",
firstName: "test",
lastName: "tester",
homePhone: 2145370159,
workPhone: 2145370159,
CustomerAddresses: {
address1: "travelnow",
city: "Seattle",
stateProvinceCode: "WA",
countryCode: "US",
postalCode: 98004,
isPrimary: true,
type: 1
}
},
HotelConfirmation: {
supplierId: 13,
chainCode: "EP",
arrivalDate: "10/03/2014",
departureDate: "10/05/2014",
confirmationNumber: 1234,
RateInfos: {
@size: "1",
RateInfo: {
@priceBreakdown: "true",
@promo: "false",
@rateChange: "false",
ChargeableRateInfo: {
@averageBaseRate: "8941.0",
@averageRate: "8941.0",
@commissionableUsdTotal: "170.14",
@currencyCode: "JPY",
@maxNightlyRate: "8941.0",
@nightlyRateTotal: "17882.0",
@total: "17882.0",
NightlyRatesPerRoom: {
@size: "2",
NightlyRate: {
0: {
@baseRate: "8941.0",
@rate: "8941.0",
@promo: "false"
},
1: {
@baseRate: "8941.0",
@rate: "8941.0",
@promo: "false"
}
}
}
},
cancellationPolicy: "Ce montant ne peut être ni remboursé, ni modifié, ni annulé. Si vous décidez tout de même de modifier ou annuler cette réservation, vos paiements ne vous seront pas remboursés.",
nonRefundable: true,
online: true,
HotelFees: {
@size: "1",
HotelFee: {
@description: "MandatoryTax",
@amount: "1919"
}
},
rateType: "MerchantStandard"
}
},
numberOfAdults: 2,
numberOfChildren: 0,
smokingPreference: "N",
supplierPropertyId: 525133,
roomTypeCode: 176765,
rateCode: 1086015,
rateDescription: "Réservez tôt et économisez 14%",
roomDescription: "Chambre Double Standard",
status: "DT",
locale: "fr_FR",
ReservationGuest: {
firstName: "test",
lastName: "tester"
},
Hotel: {
hotelId: 113856,
statusCode: "A",
name: "Hotel BLOOM",
address1: "Rue Royale 250",
city: "Brussels",
countryCode: "BE",
postalCode: 1210,
phone: "32-22-206611",
fax: "32-22-178444",
latitude: 50.8552,
longitude: 4.36673,
coordinateAccuracyCode: 1,
lowRate: 154.7501,
highRate: 297.7253,
confidence: 88,
hotelRating: 4,
tripAdvisorRating: 4,
market: "Brussels, Belgium",
region: "Benelux",
superRegion: "EMEA",
theme: "Business Hotel"
},
nights: 2
}
},
2: {
itineraryId: 169502105,
affiliateId: 451667,
creationDate: "09/04/2014",
creationTime: "03:05:07 CDT", {truncated for brevity}



Solicitação de cancelamento

Não há nenhuma atualização exclusiva para a solicitação ou resposta de cancelamento. Fornecemos exemplos abaixo para a comparação.

Solicitação de cancelamento SOAP
<v3:getCancellation>
<HotelRoomCancellationRequest>
<apiKey>#####</apiKey>
<cid>#####</cid>
<customerIpAddress>xxx</customerIpAddress>
<customerSessionId>xxx</customerSessionId>
<customerUserAgent>xxx</customerUserAgent> <minorRev>##</minorRev>
<locale>en_US</locale>
<currencyCode>USD</currencyCode> <itineraryId>170009837</itineraryId>
<email>test@travelnow.com</email> <reason>COP</reason> <confirmationNumber>xxxxxxx</confirmationNumber>
</HotelRoomCancellationRequest>
</v3:getCancellation>
Solicitação de cancelamento REST
http://api.ean.com/ean-services/rs/hotel/v3/itin?
apiKey=#####
&cid=#####
&customerIpAddress=#####
&customerUserAgent=######
&customerSessionId=#####
&minorRev=##
&locale=en_US
&currencyCode=USD
&itineraryId=xxxxxxx
&email=email@domain.com
&reason=COP
&confirmationNumber=xxxxxxxx 
Resposta de cancelamento
Resposta de cancelamento SOAP
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
   <soap:Body>
      <ns1:getCancellationResponse xmlns:ns1="http://v3.hotel.wsapi.ean.com/">
         <HotelRoomCancellationResponse>
            <customerSessionId>XXXX</customerSessionId>
            <cancellationNumber>XXXXX</cancellationNumber>
         </HotelRoomCancellationResponse>
      </ns1:getCancellationResponse>
Resposta de cancelamento JSON
{
   "HotelRoomCancellationResponse":{
      "customerSessionId":"XXXX",
      "cancellationNumber":"XXXXX"
   }
}