The Soft Change API allows customers or support agents to update items on an itinerary that do not affect billing or availability. Most changes may be made either before or during the span of the reservation.

Since this API transmits customer information, you must send all requests securely using HTTPS.

Note that unlike other EAN API services, you must send your requests using the PUT method.

 

Request Formats
XML/REST URL: PUT https://api.ean.com/ean-services/rs/hotel/v3/changeReservation?
XML Parent Element: <HotelReservationChangeRequest>

 

Authorization

Requests to the Soft Change API are authenticated with a HTTP Authorization header value. Use the following format for every request :

Authorization: EAN CID={yourCID},apiKey={yourAPIKey},Signature={yourSigHash}

Your Authorization header must begin with EAN to call the correct authentication service for Soft Change requests. CID, apiKey, and Signature must be comma-delimited, but may be sent in any order and are not case-sensitive. White space between the individual values is permitted.

The Signature field is required only if you are using signature authentication. If you are using IP authentication, you must also include one of the IP addresses associated with your CID within the X-Forwarded-For header field.

Authorization Examples

Example IP authentication header:

Authorization: EAN CID=12345,apiKey=cbrzfta369yuyrm9t5b8y8kf
X-Forwarded-For: 216.251.120.22,63.2.2.8
Example signature authentication header:
Authorization: EAN CID=55505,apiKey=cbrzfta369yuyrm9t5b8y8kf,Signature=60955260415e69c0a305c42083415b

 

Request Parameters

 

Only one room may be changed at a time. For changes on multi-room bookings, individual requests must be sent for each room.

Requests may include any combination of the optional parameters below. All requests must include an itinerary ID and confirmation number.

When making a RESTful request, omit the roomDetails object. Instead, prefix the REST-only parameter confirmationNumber and your desired change parameters with room0. – e.g. room0.confirmationNumber=

Name Value Required Description
itineraryId long yes The itinerary ID for the booking to be changed.
roomDetails object yes - XML XML container for roomDetail
roomDetail object yes - XML Contains all change parameters for XML. Must include the attribute confirmationNumber to provide the desired room's confirmation number value.
confirmationNumber string yes - REST Use to specify the desired room's confirmation number when sending a REST request.
title string no Include to change the salutation associated with the requested room.
Accepts only these specific values:
  • Mr
  • Ms
  • Mrs
  • Miss
  • Master
  • Dr
  • Prof
  • Herr
  • Frau
  • Fraulein
  • Herr Dr
  • Frau Dr
  • Herr Prof
  • Frau Prof
  • M
  • Mme
  • Mlle
  • Mstr
  • Sig
  • Sig.ra
  • Sig.na
  • Dott
firstName string no Include to change the first name associated with the requested room. Name must match guest's photo ID when checking in at the property.

Only accepts non-accented Latin ASCII (26 letter alphabet).

25 char max - no salutations or company names. Guest names do not need to be unique to each room.
lastName string no Include to change the last name associated with the requested room. Name must match guest's photo ID when checking in at the property.

Only accepts non-accented Latin ASCII (26 letter alphabet).

40 char max - no salutations or company names. Guest names do not need to be unique to each room.
phone string no Include to change or add a phone number associated with the room. Numbers must be at least 5 digits long. Restrict characters to 0-9, +, -, and ( ).

This value is assigned at the room level – it does not correspond with homePhone for V3 reservations.
email string no Include to change the email associated with the entire itinerary. EAN confirmation emails will be directed to this address, including soft change confirmations.
50 char max for the entire address, including @ and .
smokingPreference string no Include to request a different smoking option for the room. If the requested option is not available for the booked room type at the time of the request, an error will return.
specialInformation string no Include to create or modify special information/request text to be passed along to the property. 256 char max with no line breaks or carriage returns.
bedTypeId string no Request a different bed type for the room, if available.



Response Content
Parent Element: HotelReservationChangeResponse

 

The response confirms the specific itinerary and confirmation ID (room) that was updated, and the specific values that were changed or added. All responses are formatted in JSON.
Name Value Description
itineraryId string Confirms the itinerary ID that was modified by the request.
roomDetails object Contains a single object for the affected room & all modified data
{confirmationNumber} object

Contains all individual room values affected by the change request. Object name is the confirmationNumber value from the original request.

Example structure:

  …
	"roomDetails":
		"123456": {
        	"confirmationNumber": "123456",
            "firstName": "John",
            …	
    
title string Returns requested value as confirmation if change was successful
firstName string Returns requested value as confirmation if change was successful
lastName string Returns requested value as confirmation if change was successful
phone string Returns requested value as confirmation if change was successful
email string Returns requested value as confirmation if change was successful
smokingPreference string Returns requested value as confirmation if change was successful
specialInformation string Returns requested value as confirmation if change was successful
bedTypeId string Returns requested value as confirmation if change was successful



Example XML Basic Request:

<HotelReservationChangeRequest>
	<itineraryId>162176720</itineraryId>
	<roomDetails>
		<roomDetail confirmationNumber="1263814384-1">
			<firstName>Daldder</firstName>
			<lastName>Cooper</lastName>
			<specialInformation>Leave mints on every surface.</specialInformation>
			<bedTypeId>15</bedTypeId>
		</roomDetail>
	</roomDetails>
</HotelReservationChangeRequest>

Example XML/REST Response:

{
    "HotelReservationChangeResponse": {
        "customerSessionId": "6bfaaed9-2f73-479f-99e0-a1d490a628ec",
        "itineraryId": 162176720,
        "roomDetails": {
            "1263814384-1": {
                "confirmationNumber": "1263814384-1",
                "firstName": "Daldder",
                "lastName": "Cooper",
                "specialInformation": "Leave mints on every surface.",
                "bedTypeId": 15
            }
        }
    }
}
Error Handling

The Soft Change API may return the following errors in addition to standard EAN errors.


No change possible

This error will return if there are no new values in the request vs. the existing itinerary record.

<ns2:HotelReservationChangeResponse xmlns:ns2="http://v3.hotel.wsapi.ean.com/">
    <EanWsError>
        <itineraryId>-1</itineraryId>
        <handling>UNRECOVERABLE</handling>
        <category>UNABLE_TO_PROCESS_REQUEST</category>
        <exceptionConditionId>-1</exceptionConditionId>
        <presentationMessage>TravelNow.com cannot service this request.</presentationMessage>
        <verboseMessage>No change from what was already persisted</verboseMessage>
    </EanWsError>
    <customerSessionId>024da2c6-69a1-4670-8dfb-9412ac879c77</customerSessionId>
    <itineraryId>0</itineraryId>
    <roomDetails/>
</ns2:HotelReservationChangeResponse>