Skip to main content

Reservation Services

Commerce
Reservations
REST API
Booking Solutions

Updated to support new functionality from the following enhancements: Tracking an External System User's API transactions; Reservation Services API to support Reservation History, Ignoring Pre-Confirmed Reservations, Reinstating Cancelled Reservations; and Channel Reference Number.

Read more

Tracking an External System User’s API transactions (FEA92169, FEA92753)

The SynXis APIs have been enhanced so customers can now provide additional user metadata that will be tracked in SynXis CRS. This metadata will allow visibility into which users from the customer’s application (external system) initiated the API transactions to SynXis CRS.

A new optional parameter (ApplicationUserMetaData) is now supported in the header of the token request for use with REST APIs. 

The ApplicationUserMetaData parameter has a maximum size of 60 characters.

When a POST or PATCH request is made for the Reservation Services API, and the previously acquired token had been generated with the ApplicationUserMetaData header parameter, then the value for ApplicationUserMetaData will be visible in the following endpoints:

GET/v1/api/reservation
GET/v1/api/reservation/hotel/{hotelId}/{id}

Sample GET partial response:

{

	...
	"BookingInfo": {
		...
		"ApplicationUserMetaData": "ABCD456782",
		...
	}
	...
}

Reservation Services API to support Reservation History, Ignoring Pre-Confirmed Reservations, Reinstating Cancelled Reservations (FEA92757, FEA95996)

The REST Reservation Services API has been enhanced to support retrieving reservation history, as well as performing new status actions to Ignore and Reinstate reservations.

Reservation History

Customers will now have the ability to retrieve a reservation’s history, similar to what can be seen in SynXis CRS, so that all transactions can be reviewed with old and new values.

The following new Access Point has been added to control API access:
Administration > User > User Access > API Access > Reservation > Reservation History

The following REST endpoint has been added for retrieving Reservation History:

GET/v1/api/reservation/hotel/{hotelId}/{crsConfirmationNumber}/history

The following are additional optional parameters to filter the results:

startDatestringFormat yyyy-mm-dd
endDatestringFormat yyyy-mm-dd
pageStartintegerStarting record to be returned in the response.
pageSizeintegerMinimum value for page size is 1000 and is set by default, maximum is 10000.

Sample successful response:

{
	"History": [
		{
			"PropertyName": "Status",
			"OldValue": "Pending",
			"NewValue": "Confirmed",
			"ActionType": "Update",
			"TransactionDate": "2024-08-26T14:30:00.0000000+00:00",
			"UserName": "JohnDoe"
		}
	],
	"pagination": {
		"total": 1,
		"start": 0,
		"size": 0
	}
}

 

Ignoring Pre-Confirmed Reservations

During the reservation booking process, room inventory can be held temporarily so that when the reservation is confirmed later, the room inventory is still available for the guest. A new REST endpoint has been added that allows a reservation’s status to be set to Ignored, which will release the temporarily held room inventory back for general availability. This would typically be used in a multi-step reservation booking process.

The following new Access Point has been added to control API access:
Administration > User > User Access > API Access > Reservation > Ignore Reservation

The following REST endpoint has been added for Ignoring reservations:

POST/v1/api/reservation/ignore

Sample request body:

{
	"hotelId": 10000,
	"crsConfirmationNumber": "10000DV002294",
	"Channels": {
		"PrimaryChannel": {
			"Code": "WEB"
		},
		"SecondaryChannel": {
			"Code": "ABCD"
		},
		"SubSourceCode": "XYZ"
	}
}

Sample successful response:

{
	"crsCancellationNumber": "10000DV002294",
	"status": "Ignored"
}

NOTE: SynXis CRS has an automated service that will ignore unconfirmed reservations after a period of time, which varies based on the primary channel of the reservation. This new Ignore endpoint would be used if you want to release the held inventory without waiting for the automated service in SynXis CRS to do it.

 

Reinstating Cancelled Reservations

The REST Reservation Services API has been enhanced to allow customers to reinstate a previously cancelled reservation. This functionality allows the reservation’s status to be switched back to Confirmed while maintaining all the existing details of the reservation, including the previously issued CRS Confirmation Number

The reinstate action does not allow any details of the reservation to be modified, any modifications need to be made with a subsequent modification request after the reinstate action was successful.

Reinstating is not allowed on Loyalty reservations where points or free night stays were used during the original confirmation.

The following new Access Point has been added to control API access:
Administration > User > User Access > API Access > Reservation > Reinstate Reservation

The following REST endpoint has been added for Reinstating reservations:

POST/v1/api/reservation/reinstate

Sample request body:

{
	"CrsConfirmationNumber": "10000DV002294",
	"Chain": {
		"Id": 15458
	},
	"Hotel": {
		"Id": 15458
	},
	"Channels": {
		"PrimaryChannel": {
			"Code": "WEB"
		},
		"SecondaryChannel": {
			"Code": "ABCD"
		}
	}
}

Sample successful response:

{
	"CrsConfirmationNumber": "10000DV002294",
	"Status": "Confirmed"
}

 


Channel Reference Number (FEA92863)

The following endpoint was enhanced to support searching for reservations based on a channel reference number:

GET/v1/api/reservation

The following optional parameter was added to filter the results:

channelConfirmationNumberstringChannel confirmation number, maximum size of 20 characters.

Enhancements related to: Booking Agent, Booking Dues - No Show Amount, Booking Engine - Template and Shell, Booking Engine - Display Language, Booking Policy - AllowPay, CancelPolicy - Charge Details, Currency - Name and Symbol, Discounts - Distinguish between room and package discount amounts, Guests - additional data fields supported, Price - Added ability to indicate which taxes and fees are payable at the time of booking or at the hotel property, Rates - Effective and Expire dates, Reservation Summary - New Operations.

Read more

Booking Agent

Information about the person who made the booking on behalf of the guest is now supported.

ParameterDescriptionTypeRequired
BookingAgent/@EmailAddressEmail address of the booker.StringNo
BookingAgent/Shell/@GivenNameSpecifies the Given/First name of a booker.StringNo
BookingAgent/Shell/@LegalNameLegal name of the Booker.StringNo
BookingAgent/Shell/@PrefixSpecifies a prefix associated with the name of the booker.StringNo
BookingAgent/Shell/@SuffixSpecifies a suffix associated with the name of a booker.StringNo
BookingAgent/Shell/@SurnameSpecifies the Surname/Lastname of the booker.StringNo
BookingAgent/@IdA SynXis system generated unique number identifying the person who made a reservation.StringNo
BookingAgent/@TravelIndustryIdTravel Industry ID of a commissionable account.StringNo

 

  "reservations": [{
      "BookingAgent": {
          "EmailAddress": "booker.test@email.com",
          "PersonName": {
              "GivenName": "Booker",
              "LegalName": "Booker Legal Name.",
              "Prefix": "Mr.",
              "Suffix": "Jr.",
              "Surname": "Test"
          },
          "Id": "C6E50D08-38BD-45CD-A201-C3C9B10B70BD",
          "TravelIndustryId": "30000024"
      },
  }]

 

Booking Dues - No Show Amount

The GET reservation response includes a no show charge amount under BookingDues
 

ParameterDescriptionTypeRequired
BookingDues/NoShowCharge/@AmountSpecifies a fee that is paid in case a guest does not cancel their reservation and does not check in.NumberNo

 

  "reservations": [{
      "BookingDues": {
          "PayNow": false,
          "CancelPenalty": {...},
          "Deposit": {...},
          "NoShowCharge": {
              "Amount": 150
          }
      }
  }]

 

Booking Engine - Template and Shell

The SynXis booking engine shell and template codes used to create the reservation are now included.

ParameterDescriptionTypeRequired
BookingInfo/Shell/@CodeCode that identifies the SynXis Booking Engine shell.StringNo
BookingInfo/Template/@CodeCode that identifies the SynXis Booking Engine template.StringNo

 

  "reservations": [{
      "BookingInfo": {
          "BookedBy": "John Doe",
          "BookingDate": "2023-07-04T14:54:06",
          "EntryChannelBookingDate": "2023-07-04T14:54:06",
          "ModifiedBy": "John Smith",
          "Shell": {
              "Code": "SYS"
          },
          "Template": {
              "Code": "default"
          }
      }
  }]  

 

Booking Engine - Display Language

The language used by the guest during the booking process is supported in the reservation message.

ParameterDescriptionTypeRequired
LanguageContains information about the language the application displayed to the guest during the booking process.ObjectNo
Language/@CodeLanguage code with optional culture code.StringNo
Language/@NameName of the language.StringNo

 

  "reservations": [{
      "Language": {
          "Code": "nl-NL",
          "Name": "Dutch"
      }
  }]

 

Booking Policy - AllowPay

Allow pay indicates if the booking policy supports paying for the reservation at the time of booking if using the SynXis Booking Engine.

Note: Payment processing must be configured for the hotel.

ParameterDescriptionTypeRequired
BookingPolicy/@AllowPayIf true, guests can opt to pay for the reservation at the time of booking. A payment gateway must be enabled to utilize this functionality.BooleanNo

 

  "reservations": [{
      "BookingPolicy": {
          "Code": "GUA",
          "Description": "A valid credit card is required to guarantee the reservation.",
          "TransactionFeeDisclaimer": "Please indicate you agree with our Privacy Policy.",
          "DepositFee": {
              "Amount": 40,
              "DueDays": 0,
              "DueType": "AtTimeOfBooking",
              "TaxInclusive": false,
              "IsPrePayment": false,
              "Type": "LocalCurrency"
          },
          "GuaranteeLevel": "Deposit",
          "HoldTime": "0",
          "Requirements": [
              "CreditCard"
          ],
          "AllowPay": false
      },
  }]   

 

CancelPolicy - Charge Details

A new Charges object containg charge details is included in both the reservation and package CancelPolicy object.

  • reservations/CancelPolicy/Charges/*
  • reservations/Packages/CancelPolicy/Charges/*
ParameterDescriptionTypeRequired
CancelPolicy/Charges/@DaysToArriveNumber of days before arrival that a guest can cancel a reservation.IntegerNo
CancelPolicy/Charges/@CancelFeeIncludesTaxIf true, indicates that the cancel fee includes tax.BooleanNo
CancelPolicy/Charges/@CancelFeeAmountAmount of the cancel fee.NumberNo

 

  "reservations": [{
      "CancelPolicy": {
          "Code": "1D",
          "Description": "Booking must be cancelled 1D prior to arrival local time to avoid charges",
          "CancellationPermitted": true,
          "LateCancellationPermitted": true,
          "CancelFeeAmount": {
              "Value": 90,
              "TaxInclusive": true
          },
          "CancelFeeType": "None",
          "CancelPenaltyDate": "2023-08-25T00:00:00",
          "CancelTime": "0",
          "CancelTimeIn": "2",
          "Charges": {
              "DaysToArrive": 3,
              "CancelFeeIncludesTax": false,
              "CancelFeeAmount": 50
          },
          "ChargeThreshold": "2",
          "ChargeType": "ChargeWithinDays",
          "ModificationRestrictions": "ANGDS",
          "NoShowFeeAmount": {
              "Value": 150,
              "TaxInclusive": true
          },
          "NoShowFeeType": "NumberNightsOfStay"
      },

  }]   

 

Currency - Name and Symbol

The booking currency name and symbol are now included under the Currency object.

ParameterDescriptionTypeRequired
Currency/@NameName of the currency.StringNo
Currency/@SymbolSymbol of the currency.StringNo

 

  "reservations": [{
      "Currency": {
          "Code": "USD",
          "Name": "US Dollars",
          "Symbol": "$"
      }
  }]   

 

Discounts - Distinguish between room and package discount amounts

Discounts are now further identified as the amount applying to a room and and the amount applying to a package.

ParameterDescriptionTypeRequired
Discounts/@AppliedRoomAdjustmentAmountDiscount amount applied to the room.NumberNo
Discounts/@AppliedPackageAdjustmentAmountDiscount amount applied to a package.NumberNo

 

  "reservations": [{
      "Discounts": [{
          "CouponOffer": {
              ...
          },
          "AdjustmentAmount": 10,
          "AdjustmentPercentage": 10,
          "AppliedAmount": 10,
          "AppliedPercentage": 10,
          "AppliedRoomAdjustmentAmount": 10,
          "AppliedPackageAdjustmentAmount": 25,
          "Order": 10,
          "Type": "Coupon"
      }],
  }]   

 

Guests - additional data fields supported

The Guest object now supports additional information.

Guest Information Help Page

ParameterDescriptionTypeRequired
Guests/ContactNumbers/@CodeCode associated to a contact number.StringNo
Guests/ContactNumbers/@SortOrderSort order of the contact numbers.IntegerNo
Guests/@DenyChargeToRoomIf true, indicates a guest wants to deny posting charges to the room. Guest cannot have a payment method associated and cannot be a share-with reservation.BooleanNo
Guests/EmailAddress@DefaultIf true, indicates the default email address of the guest.BooleanNo
Guests/Locations/Address/Country/@ValueName of the country.StringNo
Guests/Locations/Address/StateProv/@ValueName of the state or province.StringNo
Guests/PersonName/@PreferredGivenNameSpecifies the preferred Given/First name of a guest.StringNo
Guests/PersonName/@PreferredSurnameSpecifies the preferred Surname/Lastname of a guest.StringNo

 

  "reservations": [{
      "Guests": [{
          "StartDate": "2023-08-29T00:00:00",
          "EndDate": "2023-08-31T00:00:00",
          "EmailAddress": [{
              "Default": true,
              "Type": "Primary",
              "Value": "john.public@email.com"
          }],     
          "ContactNumbers": [{
              "Code": "719",
              "Default": true,
              "Number": "555-1234",
              "Role": "Home",
              "SortOrder": 0,
              "Type": "Mobile",
              "Use": "DayTimeContact"
          }],
          "DenyChargeToRoom": false,
          "Locations": [{
              "Address": {
                  "AddressLine": [
                      "123 Main St."
                  ],
                  "City": "Denver",
                  "Country": {
                      "Code": "US",
                      "Value": "United States"
                  },
                  "Default": true,
                  "PostalCode": "70045",
                  "StateProv": {
                      "Code": "CO",
                      "Value": "Colorado"
                  },
                  "Type": "Home"
              },
              "Name": "My Home Address"
          }],
          "PersonName": {
              "GivenName": "John",
              "MiddleName": "A",
              "Prefix": "Mr.",
              "Suffix": "Jr.",
              "Surname": "Public",
              "PreferredGivenName": "James",
              "PreferredSurname": "Smith"
          },
      }]
  }]

 

Price - Added ability to indicate which taxes and fees are payable at the time of booking or at the hotel property.

Hoteliers are now able to specify if certain taxes and fees are payable at the time of booking or at the property.

The Price object supports these additional attributes.

ParameterDescriptionTypeRequired
Price/@AmountPayAtPropertyApplicable total amount payable at the hotel excluding payable now amount.NumberNo
Price/@AmountPayableNowApplicable total amount (due at confirmation) excluding any payable at the hotel amount.NumberNo

 

Located in the following GET Reservation response locations:

  • Packages/Price/
  • Packages/BookedDays/Price/
  • Packages/BookedDays/GuestCount/Price/
  • Packages/GuestCount/Price/
  • RoomPrices/AveragePrice/Price/
  • RoomPrices/PriceBreakdowns/ProductPrices/Price/
  • RoomPrices/TotalPrice/Price/

 

The Tax and Fees Breakdown object supports these additional attributes.

ParameterDescriptionTypeRequired
Breakdown/@CodeCode of the fee or tax.StringNo
Breakdown/@DescriptionDescriptive content about the fee or tax.StringNo
Breakdown/@LevelIndicates the level of the fee or tax.StringNo
Breakdown/@IsPayAtPropertyIf true, indicates the amount is payable at the hotel.BooleanNo

 

Located in the following GET Reservation response locations:

  • Packages/Price/Fees/Breakdown/
  • Packages/BookedDays/Price/Fees/Breakdown/
  • Packages/BookedDays/GuestCount/Price/Fees/Breakdown/
  • Packages/GuestCount/Price/Fees/Breakdown/
  • Packages/Price/Tax/Breakdown/
  • Packages/BookedDays/Price/Tax/Breakdown/
  • Packages/BookedDays/GuestCount/Price/Tax/Breakdown/
  • Packages/GuestCount/Price/Tax/Breakdown/
  • RoomPrices/AveragePrice/Price/Fees/Breakdown
  • RoomPrices/AveragePrice/Price/Tax/Breakdown
  • RoomPrices/PriceBreakdowns/ProductPrices/Price/Fees/Breakdown/
  • RoomPrices/PriceBreakdowns/ProductPrices/Price/Tax/Breakdown/
  • RoomPrices/TotalPrice/Price/Fees/Breakdown/
  • RoomPrices/TotalPrice/Price/Tax/Breakdown/

 

Rates - Effective and Expire dates

GET Reservation response now support the Effective and Expiration dates for a rate.

ParameterDescriptionTypeRequired
Rates/@EffectiveDateEffective date of the rate.StringNo
Rates/@ExpireDateExpiration date of the rate.StringNo

 

  "reservations": [{
      "Content": {
          "Rates": [{
              "CategoryCode": "NEG",
              "Code": "SCN2",
              "CurrencyCode": "USD",
              "Description": "Rate includes breakfast",
              "DetailedDescription": "Rate inclusive of breakfast and late checkout.",
              "DisplayName": "string",
              "EffectiveDate": "2022-08-10T00:00:00",
              "ExpireDate": "2022-08-10T00:00:00",
              "Name": "Negotiated Rate",
              "Primary": true,
              "Type": "Negotiated"
          }],
      }
  }]

 

Reservation Summary - New Operations

Two new operations return reservation summary counts for the hotel and given date. The only difference between the operations is that one retrieves the data from a cache and the other resets the cache then retrieves the data.

  • GET /reservation/misc/summary
    • The results are stored in a cache and will be retrieved from the cache in subsequent calls. The cache will automatically get updated when any of the data in the message changes.
  • GET /reservation/misc/summary-reset
    • Refresh the reservation summary counts cache data for the hotel and given date.

The summary information includes Counts and Revenue of reservations.

Counts

  • Arrivals
  • Departures
  • Stay Overs
  • Cancels
  • Day Use

Revenue

  • Arrivals
  • Departures
  • Day Use
  • In House

     

Sample Response

{
    "Source": "RealTime",
    "Count": [{
        "Arrive": 30,
        "Depart": 40,
        "StayOver": 1,
        "Cancel": 2,
        "DayUse": 5,
        "Type": "AllReservations"
    }],
    "LastRefreshDateTime": "2022-07-05T10:24:43",
    "Revenue": [{
        "Arrive": 4600,
        "Depart": 3400,
        "DayUse": 500,
        "InHouse": 4000,
        "Type": "AllReservations"
    }]
}

  • The Reservation messages now support sending emails to an Alternate email address.
  • Taxes and Fees paid using Loyalty Points
Read more

Alternate email addresses

Added capability to send reservation emails to additional recipients. By default, the guest will receive reservation emails. Including @AdditionalEmailAddress, the system will send reservation emails to additional recipients.

Help Page 
 

ParameterDescriptionTypeRequired
Notification/@AdditionalEmailAddressAdditional Recipient email address used to send any notifications.[String]No
  "Notification": {
    "SendGuestEmail": true,
    "FromEmailAddress": "reservations@myhotel.com",
    "AdditionalEmailAddresses": ["recipient1@destination.com", "recipient2@destination.com"]
  }

 

Taxes and Fees paid using Loyalty Points

Hoteliers are now able to specify if certain taxes and fees can be paid using points as a currency for a redemption product.

Points are now supported in the following GET Reservation response locations:

  • RoomPrices/AveragePrice/Price/Fees/Points
  • RoomPrices/AveragePrice/Price/Fees/Breakdown/Points
  • RoomPrices/AveragePrice/Price/Fees/StayFeePoints
  • RoomPrices/AveragePrice/Price/Tax/Points
  • RoomPrices/AveragePrice/Price/Tax/Breakdown/Points
  • RoomPrices/AveragePrice/Price/Tax/StayTaxPoints
  • RoomPrices/ExemptedTaxTypes/Points
  • RoomPrices/ExemptedTaxTypes/Breakdown/Points
  • RoomPrices/PriceBreakdowns/ProductPrices/Price/Fees/Points
  • RoomPrices/PriceBreakdowns/ProductPrices/Price/Fees/Breakdown/Points
  • RoomPrices/PriceBreakdowns/ProductPrices/Price/Fees/StayFeePoints
  • RoomPrices/PriceBreakdowns/ProductPrices/Price/Tax/Points
  • RoomPrices/PriceBreakdowns/ProductPrices/Price/Tax/Breakdown/Points
  • RoomPrices/PriceBreakdowns/ProductPrices/Price/Tax/StayTaxPoints
  • RoomPrices/TotalPrice/Price/Fees/Points
  • RoomPrices/TotalPrice/Price/Fees/Breakdown/Points
  • RoomPrices/TotalPrice/Price/Fees/StayFeePoints
  • RoomPrices/TotalPrice/Price/Tax/Points
  • RoomPrices/TotalPrice/Price/Tax/Breakdown/Points
  • RoomPrices/TotalPrice/Price/Tax/StayTaxPoints
  • Packages/Price/Fees/Points
  • Packages/Price/Fees/Breakdown/Points
  • Packages/Price/Fees/StayFeePoints
  • Packages/Price/Tax/Points
  • Packages/Price/Tax/Breakdown/Points
  • Packages/Price/Tax/StayTaxPoints
  • Packages/BookedDays/GuestCount/Price/Fees/Points
  • Packages/BookedDays/GuestCount/Price/Fees/Breakdown/Points
  • Packages/BookedDays/GuestCount/Price/Fees/StayFeePoints
  • Packages/BookedDays/GuestCount/Price/Tax/Points
  • Packages/BookedDays/GuestCount/Price/Tax/Breakdown/Points
  • Packages/BookedDays/GuestCount/Price/Tax/StayTaxPoints
  • Packages/BookedDays/Price/Fees/Points
  • Packages/BookedDays/Price/Fees/Breakdown/Points
  • Packages/BookedDays/Price/Fees/StayFeePoints
  • Packages/BookedDays/Price/Tax/Points
  • Packages/BookedDays/Price/Tax/Breakdown/Points
  • Packages/BookedDays/Price/Tax/StayTaxPoints
  • Packages/GuestCount/Price/Fees/Points
  • Packages/GuestCount/Price/Fees/Breakdown/Points
  • Packages/GuestCount/Price/Fees/StayFeePoints
  • Packages/GuestCount/Price/Tax/Points
  • Packages/GuestCount/Price/Tax/Breakdown/Points
  • Packages/GuestCount/Price/Tax/StayTaxPoints