We have a reservation failing with "GUARANTEE NOT ACCEPTED" in the OTA_HotelResRQ response. The RoomRate node does indeed say GuaranteeSurchargeRequired = "D". So we pass "GDPST". All other reservations in our system appear to flow just fine by either passing GC for "G" and GDPST for "D". For this particular hotel, GDPST is listed asa deposit type in HotelPropertyDescriptionRS. Sabre, very confusing as always.
The odd thing is we do get a Success node back, but there is no confirmation number from the hotel, which is generally found at OTA_HotelResRS.Hotel.BasicPropertyInfo.ConfirmationNumber. We also see a Status of "UC" in the Success node, but I am unsure what that means. Perhaps "unconfirmed?"
OTA_HotelResRQ & OTA_HotelResRS:
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Header>
<MessageHeader xmlns="http://www.ebxml.org/namespaces/messageHeader">
<From>
<PartyId type="urn:x12.org:IO5:01">REDACTED</PartyId>
</From>
<To>
<PartyId type="urn:x12.org:IO5:01">Sabre webservices.havail.sabre.com</PartyId>
</To>
<CPAId>REDACTED</CPAId>
<ConversationId>1540952619</ConversationId>
<Service type="sabreXML">OTA_HotelResLLSRQ</Service>
<Action>OTA_HotelResLLSRQ</Action>
<MessageData>
<MessageId>1540952619</MessageId>
<Timestamp>2018-10-30T20:23:39</Timestamp>
<TimeToLive>2018-10-30T21:23:39</TimeToLive>
</MessageData>
</MessageHeader>
<wsse:Security xmlns:wsse="http://schemas.xmlsoap.org/ws/2002/12/secext" xmlns:wsu="http://schemas.xmlsoap.org/ws/2002/12/utility">
<wsse:BinarySecurityToken valueType="String" EncodingType="wsse:Base64Binary">REDACTED</wsse:BinarySecurityToken>
</wsse:Security>
</soapenv:Header>
<soapenv:Body>
<OTA_HotelResRQ xmlns="http://webservices.sabre.com/sabreXML/2011/10" xmlns:xs="http://www.w3.org/2001/XMLSchema" ReturnHostCommand="true" TimeStamp="2015-05-12T02:00:26-06:00" Version="2.1.0">
<Hotel>
<BasicPropertyInfo InsertAfter="0" RPH="002" />
<Guarantee Type="GDPST">
<CC_Info>
<PaymentCard Code="VI" ExpireDate="2021-10" Number="****1111" />
<PersonName>
<Surname>Fubar</Surname>
</PersonName>
</CC_Info>
</Guarantee>
<RoomType NumberOfUnits="1" />
</Hotel>
</OTA_HotelResRQ>
</soapenv:Body>
</soapenv:Envelope>
<?xml version="1.0" encoding="UTF-8"?>
<Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/">
<Header>
<eb:MessageHeader xmlns:eb="http://www.ebxml.org/namespaces/messageHeader" eb:version="1.0" mustUnderstand="1">
<eb:From>
<eb:PartyId eb:type="URI">Sabre webservices.havail.sabre.com</eb:PartyId>
</eb:From>
<eb:To>
<eb:PartyId eb:type="URI">REDACTED</eb:PartyId>
</eb:To>
<eb:CPAId>REDACTED</eb:CPAId>
<eb:ConversationId>1540952619</eb:ConversationId>
<eb:Service>OTA_HotelResLLSRQ</eb:Service>
<eb:Action>OTA_HotelResLLSRS</eb:Action>
<eb:MessageData>
<eb:MessageId>959157086198330212</eb:MessageId>
<eb:Timestamp>2018-10-31T02:23:41</eb:Timestamp>
<eb:RefToMessageId>1540952619</eb:RefToMessageId>
</eb:MessageData>
</eb:MessageHeader>
<Security xmlns:wsse="http://schemas.xmlsoap.org/ws/2002/12/secext">
<BinarySecurityToken valueType="String" EncodingType="Base64Binary">Shared/IDL:IceSess\/SessMgr:1\.0.IDL/Common/!ICESMS\/RESB!ICESMSLB\/RES.LB!1540951687295!355929!327681</BinarySecurityToken>
</Security>
</Header>
<Body>
<OTA_HotelResRS xmlns="http://webservices.sabre.com/sabreXML/2011/10" xmlns:stl="http://services.sabre.com/STL/v01" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Version="2.1.0">
<ApplicationResults status="Complete">
<Success timeStamp="2018-10-30T21:23:41-05:00">
<SystemSpecificResults>
<HostCommand LNIATA="222222">/0/0H1½Ú002/GDPSTVI****1111EXP 10 21-FUBAR</HostCommand>
</SystemSpecificResults>
</Success>
</ApplicationResults>
<Hotel NumberInParty="2" NumberOfUnits="1" SegmentNumber="1" Status="UC">
<BasicPropertyInfo ChainCode="PF" HotelCityCode="YVR" HotelCode="9976" HotelName="REDACTED" />
<Guarantee>DPSTVIXXXXXXXXXXXX1111EXP 10 21-FUBAR</Guarantee>
<POS>
<Source>
<RequestorID>46796444</RequestorID>
</Source>
</POS>
<RoomRates>
<RoomRate>
<AdditionalInfo>
<CancelPolicy Option="CNOR" />
</AdditionalInfo>
<Rates>
<Rate Amount="239.00" CurrencyCode="CAD" DCS_AuxRateCode="D1KSP6">
<HotelTotalPricing Amount="561.66">
<Disclaimer>INCLUDES TAXES AND SURCHARGES</Disclaimer>
<TotalSurcharges Amount="0.00" />
<TotalTaxes Amount="83.66">
<TaxFieldOne>53.26</TaxFieldOne>
<TaxFieldThree>24.20</TaxFieldThree>
<TaxFieldTwo>6.20</TaxFieldTwo>
<Text>BED TAX</Text>
<Text>MISCELLANEOUS FEE</Text>
<Text>FEDERAL TAX</Text>
</TotalTaxes>
</HotelTotalPricing>
</Rate>
</Rates>
</RoomRate>
</RoomRates>
<Text>GUARANTEE NOT ACCEPTED</Text>
<TimeSpan Duration="2" End="11-18" Start="11-16" />
</Hotel>
</OTA_HotelResRS>
</Body>
</Envelope>
RoomRate from HotelPropertyDescriptionRS:
<RoomRate DirectConnect="false" GuaranteeSurchargeRequired="D" GuaranteedRateProgram="false" HRD_RequiredForSell="false" IATA_CharacteristicIdentification="D1KSP6" IATA_ProductIdentification="FALL PROMOTIONAL RATE." LowInventoryThreshold="false" RPH="002" RateChangeInd="false" RateConversionInd="false" SpecialOffer="false">
<AdditionalInfo>
<CancelPolicy Numeric="00" Option="N">
<Text>RESERVATION CANNOT BE CANCELED</Text>
</CancelPolicy>
<Commission NonCommission="false">10.00 PERCENT COMMISSION</Commission>
<Text>DELUXE KING 350 SQ FT I KING PILLOW TOP BED</Text>
<Text>INTERNET ACCESS 42 INCH LCD TV CABLE CHANNELS</Text>
</AdditionalInfo>
<Rates>
<Rate Amount="239.00" ChangeIndicator="false" CurrencyCode="CAD" HRD_RequiredForSell="false" PackageIndicator="false" RateConversionInd="false" ReturnOfRateInd="false" RoomOnRequest="false">
<AdditionalGuestAmounts>
<AdditionalGuestAmount MaxExtraPersonsAllowed="0" NumAdults="0" NumCribs="0">
<Charges AdultRollAway="0" Crib="0" ExtraPerson="40.00" />
</AdditionalGuestAmount>
</AdditionalGuestAmounts>
<HotelTotalPricing Amount="561.66">
<Disclaimer>INCLUDES TAXES AND SURCHARGES</Disclaimer>
<TotalSurcharges Amount="0.00" />
<TotalTaxes Amount="83.66" />
</HotelTotalPricing>
</Rate>
</Rates>
</RoomRate>
From HotelRateDescriptionRQ:
<RoomRate DirectConnect="false" GuaranteeSurchargeRequired="D" GuaranteedRateProgram="false" HRD_RequiredForSell="false" IATA_CharacteristicIdentification="D1KSP6" IATA_ProductIdentification="FALL PROMOTIONAL RATE." LowInventoryThreshold="false" RateChangeInd="false" RateConversionInd="false" SpecialOffer="false">
<AdditionalInfo>
<CancelPolicy Numeric="00" Option="N">
<Text>RESERVATION CANNOT BE CANCELED</Text>
</CancelPolicy>
<Commission NonCommission="false">TA COMMISSION IS 10 PERCENT</Commission>
<DCA_Cancellation>
<Text>NON CANCELLABLE RESERVATION</Text>
</DCA_Cancellation>
<DCA_Deposit>
<Text>A DEPOSIT OF 522.92 BY 30-OCT-18 IS MANDATORY</Text>
</DCA_Deposit>
<DCA_Guarantee>
<Text>MUST GUARANTEE ROOM WITH DEPOSIT,AX,CA,CB,DC,DI,DS,IK,JB,JC,MC,</Text>
</DCA_Guarantee>
<DCA_Other>
<Text>MINIMUM LENGTH OF STAY IS 1 NIGHT</Text>
</DCA_Other>
<Text>DELUXE KING 350 SQ FT I KING PILLOW TOP BED</Text>
<Text>INTERNET ACCESS 42 INCH LCD TV CABLE CHANNELS</Text>
<Text>IN-ROOM SAFE- MARBLE BATHROOM- PLUSH BATHROBES</Text>
<Text>-FULL PRE-PAYMENT IS REQUIRED.-NON CANCELLABLE NON REFUNDABLE</Text>
<Text>239.00 DAILY RATE STARTING 16NOV FOR 2 NIGHTS</Text>
<Text>478.00 TOTAL RATE STARTING 16NOV FOR 2 NIGHTS</Text>
</AdditionalInfo>
<Rates>
<Rate Amount="239.00" ChangeIndicator="false" CurrencyCode="CAD" HRD_RequiredForSell="false" PackageIndicator="false" RateConversionInd="false" ReturnOfRateInd="false" RoomOnRequest="false">
<AdditionalGuestAmounts>
<AdditionalGuestAmount MaxExtraPersonsAllowed="1" NumAdults="0" NumCribs="0">
<Charges AdultRollAway="0" Crib="0" ExtraPerson="0.00" />
</AdditionalGuestAmount>
</AdditionalGuestAmounts>
<HotelTotalPricing Amount="561.66">
<Disclaimer>INCLUDES TAXES AND SURCHARGES</Disclaimer>
<TotalSurcharges Amount="0.00" />
<TotalTaxes Amount="83.66">
<TaxFieldOne>53.26</TaxFieldOne>
<TaxFieldThree>24.20</TaxFieldThree>
<TaxFieldTwo>6.20</TaxFieldTwo>
<Text>BED TAX</Text>
<Text>MISCELLANEOUS FEE</Text>
<Text>FEDERAL TAX</Text>
</TotalTaxes>
</HotelTotalPricing>
</Rate>
</Rates>
</RoomRate>
You try to book this with a Visa Card: Code="VI"
Hotel only seems to accept: AX,CA,CB,DC,DI,DS,IK,JB,JC,MC as guarantees
Have you tried a different card?
UC definitely means "Unconfirmed" and in the UC state the reservation will not be honored at the property (it might not even get transmitted via Sabre, but I'm not sure about that).
Thomas' answer about the accepted forms of payment seems correct to me. Unfortunate that Sabre doesn't return a more clear error response but that's not a surprise.
Related
I am checking the Sabre API's in SoapUI. Taken ref. for SoapUI from https://github.com/SabreDevStudio/SabreAPIsWorkflows.
When I am trying to run a test-step in SoapUI, I am getting the response with error as :
AuthenticationException: errors.authentication.USG_AUTHENTICATION_NOT_ALLOWED.
request payload :
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sec="http://schemas.xmlsoap.org/ws/2002/12/secext" xmlns:mes="http://www.ebxml.org/namespaces/messageHeader" xmlns:ns="http://www.opentravel.org/OTA/2003/05">
<soapenv:Header>
<wsse:Security xmlns:wsse="http://schemas.xmlsoap.org/ws/2002/12/secext" xmlns:wsu="http://schemas.xmlsoap.org/ws/2002/12/utility">
<wsse:UsernameToken>
<wsse:Username>${#Project#Username}</wsse:Username>
<wsse:Password>${#Project#Password}</wsse:Password>
<Organization>${#Project#Organization}</Organization>
<Domain>DEFAULT</Domain>
</wsse:UsernameToken>
</wsse:Security>
<mes:MessageHeader mes:id="?" mes:version="?">
<mes:From>
<mes:PartyId mes:type="?">1212</mes:PartyId>
</mes:From>
<mes:To>
<mes:PartyId mes:type="?">2323</mes:PartyId>
</mes:To>
<mes:CPAId>${#Project#Organization}</mes:CPAId>
<mes:ConversationId>${#Project#ConversationID}</mes:ConversationId>
<mes:Service mes:type="Sabre">BargainFinderMaxRQ</mes:Service>
<mes:Action>BargainFinderMaxRQ</mes:Action>
<mes:MessageData>
<mes:MessageId>1001</mes:MessageId>
<mes:Timestamp>2012-06-07T10:00:01</mes:Timestamp>
<mes:TimeToLive>2013-06-06T23:59:59</mes:TimeToLive>
</mes:MessageData>
</mes:MessageHeader>
</soapenv:Header>
<soapenv:Body>
<OTA_AirLowFareSearchRQ Target="Production" Version="1.9.2" ResponseType="OTA" ResponseVersion="1.9.2" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.opentravel.org/OTA/2003/05" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<POS>
<!--Source PseudoCityCode="PCC"-->
<Source PseudoCityCode="${#Project#Organization}">
<RequestorID ID="1" Type="1">
<CompanyName Code="TN">TN</CompanyName>
</RequestorID>
</Source>
</POS>
<OriginDestinationInformation>
<DepartureDateTime>${#TestCase#OutboundDepartureDateTime}</DepartureDateTime>
<DepartureWindow>02002000</DepartureWindow>
<OriginLocation LocationCode="${#Project#ItineraryOrigin}" />
<DestinationLocation LocationCode="${#Project#ItineraryDestination}" />
<TPA_Extensions>
<SegmentType Code="O" />
</TPA_Extensions>
</OriginDestinationInformation>
<OriginDestinationInformation>
<DepartureDateTime>${#TestCase#ReturnDepartureDateTime}</DepartureDateTime>
<DepartureWindow>04002200</DepartureWindow>
<OriginLocation LocationCode="${#Project#ItineraryDestination}" />
<DestinationLocation LocationCode="${#Project#ItineraryOrigin}" />
<TPA_Extensions>
<SegmentType Code="O" />
</TPA_Extensions>
</OriginDestinationInformation>
<TravelPreferences>
<FlightTypePref MaxConnections="2" PreferLevel="Only" />
<ns:FareRestrictPref PreferLevel="Only">
<ns:AdvResTicketing AdvResInd="false" AdvTicketingInd="false" />
<ns:StayRestrictions StayRestrictionsInd="false" />
<ns:VoluntaryChanges VolChangeInd="false" />
</ns:FareRestrictPref>
<CabinPref Cabin="Y" PreferLevel="Only" />
<TPA_Extensions>
<TripType Value="Return" />
</TPA_Extensions>
</TravelPreferences>
<TravelerInfoSummary>
<SeatsRequested>1</SeatsRequested>
<AirTravelerAvail>
<PassengerTypeQuantity Code="ADT" Quantity="1" />
</AirTravelerAvail>
</TravelerInfoSummary>
<TPA_Extensions>
<IntelliSellTransaction>
<RequestType Name="50ITINS" />
</IntelliSellTransaction>
</TPA_Extensions>
</OTA_AirLowFareSearchRQ>
</soapenv:Body>
</soapenv:Envelope>
response received:
<soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/">
<soap-env:Header>
<eb:MessageHeader eb:version="1.0" soap-env:mustUnderstand="1" xmlns:eb="http://www.ebxml.org/namespaces/messageHeader">
<eb:From>
<eb:PartyId eb:type="?">2323</eb:PartyId>
</eb:From>
<eb:To>
<eb:PartyId eb:type="?">1212</eb:PartyId>
</eb:To>
<eb:CPAId>****</eb:CPAId>
<eb:ConversationId>SWS-Test-****</eb:ConversationId>
<eb:Service eb:type="Sabre">BargainFinderMaxRQ</eb:Service>
<eb:Action>ErrorRS</eb:Action>
<eb:MessageData>
<eb:MessageId>607896186247240150</eb:MessageId>
<eb:Timestamp>2018-09-19T05:10:24</eb:Timestamp>
<eb:RefToMessageId>1001</eb:RefToMessageId>
</eb:MessageData>
</eb:MessageHeader>
<wsse:Security xmlns:wsse="http://schemas.xmlsoap.org/ws/2002/12/secext"/>
</soap-env:Header>
<soap-env:Body>
<soap-env:Fault>
<faultcode>soap-env:Client.AuthenticationNotAllowed</faultcode>
<faultstring>Authentication is not allowed for this service. Please use SessionCreateRQ</faultstring>
<detail>
<StackTrace>com.sabre.universalservices.base.security.AuthenticationException: errors.authentication.USG_AUTHENTICATION_NOT_ALLOWED</StackTrace>
</detail>
</soap-env:Fault>
</soap-env:Body>
</soap-env:Envelope
Can anyone help in this?
This is happening because instead of using a Binary Security Token, your request is sending user, passcode, etc. That data should be sent first with SessionCreateRQ which will return a BST, then you use the token in the subsequent BargainFinderMaxRQ call. Your "Security" node should look like so:
<wsse:Security xmlns:wsse="http://schemas.xmlsoap.org/ws/2002/12/secext" xmlns:wsu="http://schemas.xmlsoap.org/ws/2002/12/utility">
<wsse:BinarySecurityToken>{{token}}</wsse:BinarySecurityToken>
</wsse:Security>
It says guarantee not accepted but I am passing a credit card and guarantee type that was specified in the HotelPropertyDescriptionRS. This failure is occurring across multiple hotels at the moment. Due to the sheer size and number of requests needed to work with Sabre, I posted the full RQ/RS trail from session creation to error on pastebin here: https://pastebin.com/NgH1LmYY
The pertinent pieces are here:
RoomRate from HotelPropertyDescriptionLLSRQ
<RoomRate DirectConnect="false" GuaranteeSurchargeRequired="G" GuaranteedRateProgram="false" HRD_RequiredForSell="false" IATA_CharacteristicIdentification="D1KZZ1" IATA_ProductIdentification="20PCT OFF SAVINGS-PACIFIC" LowInventoryThreshold="false" RPH="028" RateChangeInd="false" RateConversionInd="false" SpecialOffer="false">
<AdditionalInfo>
<CancelPolicy Numeric="03" Option="D" />
<Commission NonCommission="true">**NON-COMMISSIONABLE PRODUCT**</Commission>
<Text>DELUXE KING 350 SQ FT I KING PILLOW TOP BED</Text>
<Text>INTERNET ACCESS 42 INCH LCD TV CABLE CHANNELS</Text>
</AdditionalInfo>
<Rates>
<Rate Amount="239.20" ChangeIndicator="false" CurrencyCode="CAD" HRD_RequiredForSell="false" PackageIndicator="false" RateConversionInd="false" ReturnOfRateInd="false" RoomOnRequest="false">
<AdditionalGuestAmounts>
<AdditionalGuestAmount MaxExtraPersonsAllowed="0" NumAdults="0" NumCribs="0">
<Charges AdultRollAway="0" Crib="0" ExtraPerson="30.00" />
</AdditionalGuestAmount>
</AdditionalGuestAmounts>
<HotelTotalPricing Amount="281.06">
<Disclaimer>INCLUDES TAXES AND SURCHARGES</Disclaimer>
<TotalSurcharges Amount="0.00" />
<TotalTaxes Amount="41.86" />
</HotelTotalPricing>
</Rate>
</Rates>
</RoomRate>
Guarantee's from HotelPropertyDescriptionLLSRQ
<Guarantee>
<DepositsAccepted>
<PaymentCard Code="AX" Type="AMERICAN EXPRESS" />
<PaymentCard Code="CA" Type="MASTERCARD" />
<PaymentCard Code="DC" Type="DINERS CLUB CARD" />
<PaymentCard Code="JC" Type="JCB CREDIT CARD" />
<PaymentCard Code="VI" Type="VISA" />
</DepositsAccepted>
<GuaranteesAccepted>
<PaymentCard Code="AX" Type="AMERICAN EXPRESS" />
<PaymentCard Code="CA" Type="MASTERCARD" />
<PaymentCard Code="DC" Type="DINERS CLUB CARD" />
<PaymentCard Code="JC" Type="JCB CREDIT CARD" />
<PaymentCard Code="VI" Type="VISA" />
<Text>/GAGT GUARANTEE TO AGENCY TIDS/IATA NUMBER</Text>
<Text>/GDPST DEPOSIT WILL BE SENT</Text>
<Text>/GDPST... IMMEDIATE DEPOSIT TYPE OR FORM</Text>
</GuaranteesAccepted>
</Guarantee>
OTA_HotelResRQ:
<OTA_HotelResRQ xmlns="http://webservices.sabre.com/sabreXML/2011/10" xmlns:xs="http://www.w3.org/2001/XMLSchema" ReturnHostCommand="true" TimeStamp="2015-05-12T02:00:26-06:00" Version="2.1.0">
<Hotel>
<BasicPropertyInfo InsertAfter="0" RPH="028" />
<Guarantee Type="GDPST">
<CC_Info>
<PaymentCard Code="VI" ExpireDate="REDACTED" Number="****REDACTED" />
<PersonName>
<Surname>REDACTED</Surname>
</PersonName>
</CC_Info>
</Guarantee>
<RoomType NumberOfUnits="1" />
</Hotel>
</OTA_HotelResRQ>
OTA_HotelREsRS:
<OTA_HotelResRS xmlns="http://webservices.sabre.com/sabreXML/2011/10" xmlns:stl="http://services.sabre.com/STL/v01" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Version="2.1.0">
<ApplicationResults status="Complete">
<Success timeStamp="2018-01-18T19:26:55-06:00">
<SystemSpecificResults>
<HostCommand LNIATA="222222">/0/0H1½Ú028/GDPSTVI****REDACTEDEXP REDACTED-REDACTED</HostCommand>
</SystemSpecificResults>
</Success>
</ApplicationResults>
<Hotel NumberInParty="2" NumberOfUnits="1" SegmentNumber="1" Status="UC">
<BasicPropertyInfo ChainCode="PF" HotelCityCode="YVR" HotelCode="9976" HotelName="PAN PACIFIC VANCOUV" />
<Guarantee>DPSTVIXXXXXXXXXXXXREDACTEDEXP REDACTED-REDACTED</Guarantee>
<POS>
<Source>
<RequestorID>46796444</RequestorID>
</Source>
</POS>
<RoomRates>
<RoomRate>
<AdditionalInfo>
<CancelPolicy Option="C03D" />
</AdditionalInfo>
<Rates>
<Rate Amount="239.20" CurrencyCode="CAD" DCS_AuxRateCode="D1KZZ1">
<HotelTotalPricing Amount="281.06">
<Disclaimer>INCLUDES TAXES AND SURCHARGES</Disclaimer>
<TotalSurcharges Amount="0.00" />
<TotalTaxes Amount="41.86" />
</HotelTotalPricing>
</Rate>
</Rates>
</RoomRate>
</RoomRates>
<Text>GUARANTEE NOT ACCEPTED</Text>
<TimeSpan Duration="1" End="03-03" Start="03-02" />
</Hotel>
</OTA_HotelResRS>
Obviously IPCC and customer data have been redacted from the outputs below. The hotel says it accepts GDPST and VISA, yet it fails... Why?
That particular rate is showing that needs to be sold with G guarantee type.
GuaranteeSurchargeRequired="G"
Do you get a successful response after changing GDPST to G?
Calling SOAP service OTA_AirLowFareSearchRQ works Ok but it seems that ignores the DirectFlightsOnly flag (DirectFlightsOnly="true").
Sabre service answer flights with more than one flight segment.
Here is the request:
<SOAP-ENV:Envelope xmlns:eb="http://www.ebxml.org/namespaces/messageHeader" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsd="http://www.w3.org/1999/XMLSchema">
<SOAP-ENV:Header>
<eb:MessageHeader SOAP-ENV:mustUnderstand="1" eb:version="1.0">
<eb:From>
<eb:PartyId>Client</eb:PartyId>
</eb:From>
<eb:To>
<eb:PartyId>SWS</eb:PartyId>
</eb:To>
<eb:CPAId>IPCC</eb:CPAId>
<eb:ConversationId>8989</eb:ConversationId>
<eb:Service>Session</eb:Service>
<eb:Action>BargainFinderMaxRQ</eb:Action>
<eb:MessageData>
<eb:MessageId>1</eb:MessageId>
<eb:Timestamp>2017-07-06T13:35:44-05:00</eb:Timestamp>
</eb:MessageData>
</eb:MessageHeader>
<wsse:Security xmlns:wsse="http://schemas.xmlsoap.org/ws/2002/12/secext" xmlns:wsu="http://schemas.xmlsoap.org/ws/2002/12/utility">
<wsse:BinarySecurityToken>My Session Id</wsse:BinarySecurityToken>
</wsse:Security>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<OTA_AirLowFareSearchRQ xmlns="http://www.opentravel.org/OTA/2003/05" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" DirectFlightsOnly="true" ResponseType="OTA" ResponseVersion="3.0.0" Target="Test" Version="3.0.0">
<POS>
<Source PseudoCityCode="PCC">
<RequestorID ID="1" Type="1">
<CompanyName Code="TN"/>
</RequestorID>
</Source>
</POS>
<OriginDestinationInformation RPH="1">
<DepartureDateTime>2017-09-09T11:00:00</DepartureDateTime>
<OriginLocation LocationCode="MVD"/>
<DestinationLocation LocationCode="EZE"/>
<TPA_Extensions>
<SegmentType Code="O"/>
</TPA_Extensions>
</OriginDestinationInformation>
<TravelPreferences ValidInterlineTicket="true">
<CabinPref Cabin="Y" PreferLevel="Preferred"/>
<TPA_Extensions>
<TripType Value="Return"/>
<LongConnectTime Enable="true" Max="1200" Min="780"/>
<ExcludeCallDirectCarriers Enabled="true"/>
</TPA_Extensions>
</TravelPreferences>
<TravelerInfoSummary>
<SeatsRequested>1</SeatsRequested>
<AirTravelerAvail>
<PassengerTypeQuantity Code="ADT" Quantity="1"/>
</AirTravelerAvail>
</TravelerInfoSummary>
<TPA_Extensions>
<IntelliSellTransaction>
<RequestType Name="50ITINS"/>
</IntelliSellTransaction>
</TPA_Extensions>
</OTA_AirLowFareSearchRQ>
</SOAP-ENV:Body>
This is part of the answer (as you can see there are two [FlightSegmen]> nodes):
<AirItinerary DirectionInd="Return">
<OriginDestinationOptions>
<OriginDestinationOption ElapsedTime="1364">
<FlightSegment ArrivalDateTime="2017-09-09T09:15:00" DepartureDateTime="2017-09-09T06:16:00" ElapsedTime="299" FlightNumber="904" ResBookDesigCode="L" StopQuantity="0">
<DepartureAirport LocationCode="MVD"/>
<ArrivalAirport LocationCode="LIM"/>
<OperatingAirline Code="AV" CompanyShortName="/TRANS AMERICAN AIRLINES" FlightNumber="904"/>
<Equipment AirEquipType="319"/>
<MarketingAirline Code="AV"/>
<MarriageGrp>O</MarriageGrp>
<DepartureTimeZone GMTOffset="-3"/>
<ArrivalTimeZone GMTOffset="-5"/>
<TPA_Extensions>
<eTicket Ind="true"/>
</TPA_Extensions>
</FlightSegment>
<FlightSegment ArrivalDateTime="2017-09-10T05:00:00" DepartureDateTime="2017-09-09T22:50:00" ElapsedTime="250" FlightNumber="1365" ResBookDesigCode="Y" StopQuantity="0">
<DepartureAirport LocationCode="LIM"/>
<ArrivalAirport LocationCode="EZE" TerminalID="A"/>
<OperatingAirline Code="AR" FlightNumber="1365"/>
<Equipment AirEquipType="738"/>
<MarketingAirline Code="AR"/>
<MarriageGrp>O</MarriageGrp>
<DepartureTimeZone GMTOffset="-5"/>
<ArrivalTimeZone GMTOffset="-3"/>
<TPA_Extensions>
<eTicket Ind="true"/>
</TPA_Extensions>
</FlightSegment>
</OriginDestinationOption>
</OriginDestinationOptions>
</AirItinerary>
If that element doesn't work, go for maxnumstops or numberofconnections. Set it in 0, that will do the job.
I'm making the following sequence of calls to reserve a hotel room using the direct sell request:
HotelPropertyDescriptionRQ
PassengerDetailsRQ
OTA_HotelResRQ
The final response errors with:
FORMAT ERROR ON OPTIONAL FIELD
I'm unable to work out what is causing this error - is it perhaps the RPH of the room is not being correctly added to the PassengerDetailsRQ?
The OTA_HotelResRQ is:
<OTA_HotelResRQ xmlns="http://webservices.sabre.com/sabreXML/2011/10" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ReturnHostCommand="true" TimeStamp="2017-02-13T12:45:24" Version="2.2.0">
<Hotel>
<BasicPropertyInfo RPH="001">
<ConfirmationNumber>PWBA-POW-131c-02</ConfirmationNumber>
</BasicPropertyInfo>
<Guarantee Type="G">
<CC_Info>
<PaymentCard Code="VI" ExpireDate="2018-10" Number="4111111111111111"/>
<PersonName>
<Surname>TEST</Surname>
</PersonName>
</CC_Info>
</Guarantee>
<RoomType NumberOfUnits="1"/>
</Hotel>
The HotelPropertyDescriptionRQ:
<HotelPropertyDescriptionRQ Version="2.3.0" xmlns="http://webservices.sabre.com/sabreXML/2011/10">
<AvailRequestSegment>
<GuestCounts Count="1" />
<HotelSearchCriteria>
<Criterion>
<HotelRef HotelCode="0007855" />
</Criterion>
</HotelSearchCriteria>
<TimeSpan End="2016-12-17" Start="2016-12-10"/>
</AvailRequestSegment>
</HotelPropertyDescriptionRQ>
The PassengerDetailsRQ:
<PassengerDetailsRQ xmlns="http://services.sabre.com/sp/pd/v3_3" version="3.3.0" IgnoreOnError="false" HaltOnError="true">
<PostProcessing IgnoreAfter="false" RedisplayReservation="true" UnmaskCreditCard="true">
<EndTransactionRQ>
<EndTransaction Ind="true"></EndTransaction>
<Source ReceivedFrom="PW TESTING"/>
</EndTransactionRQ>
</PostProcessing>
<PreProcessing IgnoreBefore="false">
<UniqueID ID=""/>
</PreProcessing>
<SpecialReqDetails>
<AddRemarkRQ>
<RemarkInfo>
<FOP_Remark>
<CC_Info Suppress="true">
<PaymentCard Code="VI" ExpireDate="2017-12" Number="4444333322221111" SuppressApprovalCode="true"/>
</CC_Info>
</FOP_Remark>
</RemarkInfo>
</AddRemarkRQ>
</SpecialReqDetails>
<TravelItineraryAddInfoRQ>
<AgencyInfo>
<Address>
<AddressLine>XXXXXXXXXXX Ltd</AddressLine>
<CityName>London</CityName>
<CountryCode>GB</CountryCode>
<PostalCode>XXXX XXX</PostalCode>
<StateCountyProv StateCode="LN" />
<StreetNmbr>2 Some Rome</StreetNmbr>
</Address>
</AgencyInfo>
<CustomerInfo>
<ContactNumbers>
<ContactNumber NameNumber="1.1" Phone="817-555-1212" PhoneUseType="H" />
</ContactNumbers>
<PersonName Infant="false" NameNumber="1.1">
<GivenName>Iain</GivenName>
<Surname>TESTING</Surname>
</PersonName>
</CustomerInfo>
</TravelItineraryAddInfoRQ>
</PassengerDetailsRQ>
I believe it is because you are adding a confirmation number to the sell request, which is an optional field when selling passive segments, but it should not be expected when actually requesting the room to the hotel.
<ConfirmationNumber>PWBA-POW-131c-02</ConfirmationNumber>
I would try removing that.
To reserve a hotel room using the direct sell request from sabre used OTA_HotelResRQ request.
Here is one example for request (i already used this request and get response from sabre)
<?xml version="1.0"?>
-<OTA_HotelResRQ Version="2.2.0" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
-<Hotel xmlns="http://webservices.sabre.com/sabreXML/2011/10">
<BasicPropertyInfo RPH="001"/>
<Customer NameNumber="01.01"/>
-<Guarantee Type="G">
-<CC_Info>
<PaymentCard Number="3782 8224 6310 005" ExpireDate="2021-09" Code="AX"/>
-<PersonName>
<Surname>tailor</Surname>
</PersonName>
</CC_Info>
</Guarantee>
<RoomType NumberOfUnits="1"/>
</Hotel>
</OTA_HotelResRQ>
Sabre allows you to specify the number of rooms to book when processing a booking via OTA_HotelResRQ. However, I cannot see any data points within the response of HotelPropertyDescriptionLLSRQ telling me how many rooms are available. Nor can I specify how many rooms I'd like to check for availability when performing a HotelPropertyDescriptionLLSRQ.
This is troublesome when booking multi-rooms as I have no idea whether more than 1 is actually available. Is my request incorrect? Is their a workaround? Please advise.
Example HotelPropertyDescriptionLLSRQ Request
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Header>
<MessageHeader xmlns="http://www.ebxml.org/namespaces/messageHeader">
<From>
<PartyId type="urn:x12.org:IO5:01"><!-- removed by op --></PartyId>
</From>
<To>
<PartyId type="urn:x12.org:IO5:01">Sabre</PartyId>
</To>
<CPAId><!-- removed by op --></CPAId>
<ConversationId>MyConversationID</ConversationId>
<Service type="sabreXML">HotelPropertyDescriptionLLSRQ</Service>
<Action>HotelPropertyDescriptionLLSRQ</Action>
<MessageData>
<MessageId>1422291197</MessageId>
<Timestamp>2015-01-26T09:53:17-07:00</Timestamp>
<TimeToLive>2015-01-26T10:53:17-07:00</TimeToLive>
</MessageData>
</MessageHeader>
<wsse:Security xmlns:wsse="http://schemas.xmlsoap.org/ws/2002/12/secext" xmlns:wsu="http://schemas.xmlsoap.org/ws/2002/12/utility">
<!-- removed by op -->
</wsse:Security>
</soapenv:Header>
<soapenv:Body>
<HotelPropertyDescriptionRQ xmlns="http://webservices.sabre.com/sabreXML/2011/10" xmlns:xs="http://www.w3.org/2001/XMLSchema" Version="2.0.1">
<AvailRequestSegment>
<GuestCounts Count="2" />
<HotelSearchCriteria>
<Criterion>
<HotelRef HotelCode="0007625" />
</Criterion>
</HotelSearchCriteria>
<TimeSpan Start="02-19" End="02-24" />
</AvailRequestSegment>
</HotelPropertyDescriptionRQ>
</soapenv:Body>
</soapenv:Envelope>
Example Response (truncated a bit due to size):
<?xml version="1.0" encoding="UTF-8"?>
<soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/"><soap-env:Header><eb:MessageHeader xmlns:eb="http://www.ebxml.org/namespaces/messageHeader" eb:version="1.0" soap-env:mustUnderstand="1"><eb:From><eb:PartyId eb:type="URI">Sabre</eb:PartyId></eb:From><eb:To><eb:PartyId eb:type="URI"><!-- removed by op --></eb:PartyId></eb:To><eb:CPAId><!-- removed by op --></eb:CPAId><eb:ConversationId>MyConversationID</eb:ConversationId><eb:Service>HotelPropertyDescriptionLLSRQ</eb:Service><eb:Action>HotelPropertyDescriptionLLSRS</eb:Action><eb:MessageData><eb:MessageId>10532827796103670873</eb:MessageId><eb:Timestamp>2016-09-21T22:06:51</eb:Timestamp><eb:RefToMessageId>1422291197</eb:RefToMessageId></eb:MessageData></eb:MessageHeader><wsse:Security xmlns:wsse="http://schemas.xmlsoap.org/ws/2002/12/secext"><!-- removed by op --></wsse:Security></soap-env:Header><soap-env:Body><HotelPropertyDescriptionRS xmlns="http://webservices.sabre.com/sabreXML/2011/10" xmlns:xs="http://www.w3.org/2011/XMLSchema" xmlns:xsi="http://www.w3.org/2011/XMLSchema-instance" xmlns:stl="http://services.sabre.com/STL/v01" Version="2.0.1">
<stl:ApplicationResults status="Complete">
<stl:Success timeStamp="2016-09-21T17:06:51-05:00"/>
</stl:ApplicationResults>
<RoomStay>
<BasicPropertyInfo ChainCode="HX" GeoConfidenceLevel="1" HotelCityCode="SLC" HotelCode="0007625" HotelName="HAMPTON INN STES PARK CITY" Latitude="40.727734" Longitude="-111.54821" NumFloors="4" RPH="001">
<Address>
<AddressLine>6609 NORTH LANDMARK DRIVE</AddressLine>
<AddressLine>PARK CITY UT 84098</AddressLine>
<CountryCode>US</CountryCode>
</Address>
<Award Provider="NTM2 CROWN"/>
<ContactNumbers>
<ContactNumber Fax="1-435-645-9672" Phone="1-435-645-0900"/>
</ContactNumbers>
<DirectConnect Ind="false">
<AdditionalData Ind="true"/>
<CurrencyConverted Ind="true"/>
<DC_AvailParticipant Ind="true"/>
<DC_SellParticipant Ind="true"/>
<RequestFail Ind="false"/>
<UnAvail Ind="false"/>
</DirectConnect>
<IndexData>
<Index CountryState="UT" DistanceDirection="32E" LocationCode="C" Point="DELTA CENTER" TransportationCode="O"/>
<Index CountryState="UT" DistanceDirection="6N" LocationCode="A" Point="PARK CITY" TransportationCode="O"/>
<Index CountryState="UT" DistanceDirection="33E" LocationCode="C" Point="TEMPLE SQUARE" TransportationCode="O"/>
<Index CountryState="UT" DistanceDirection="6S" LocationCode="A" Point="PARK CITY SKI AREA" TransportationCode="O"/>
<Index DistanceDirection="35W" LocationCode="C" Point="SLC" TransportationCode="O"/>
</IndexData>
<SpecialOffers Ind="false"/>
<Taxes>
<Text>9.35PCT TT</Text>
</Taxes>
</BasicPropertyInfo>
<RoomRates>
<RoomRate DirectConnect="false" GuaranteeSurchargeRequired="D" GuaranteedRateProgram="false" HRD_RequiredForSell="false" IATA_CharacteristicIdentification="A0ALV4" IATA_ProductIdentification="BEST AVAILABLE RATE" LowInventoryThreshold="false" RPH="001" RateChangeInd="false" RateConversionInd="false" SpecialOffer="false">
<AdditionalInfo>
<CancelPolicy Numeric="30" Option="D"/>
<Commission NonCommission="false">COMMISSIONABLE</Commission>
<Text>2 QUEEN BEDS NONSMOKING</Text>
<Text>HDTV/FREE WI-FI/HOT BREAKFAST INCLUDED</Text>
</AdditionalInfo>
<Rates>
<Rate Amount="409.00" ChangeIndicator="false" CurrencyCode="USD" HRD_RequiredForSell="false" PackageIndicator="false" RateConversionInd="false" ReturnOfRateInd="false" RoomOnRequest="false">
<AdditionalGuestAmounts>
<AdditionalGuestAmount MaxExtraPersonsAllowed="0" NumAdults="0" NumCribs="0">
<Charges AdultRollAway="10.00" Crib="0.00" ExtraPerson="10.00"/>
</AdditionalGuestAmount>
</AdditionalGuestAmounts>
<HotelTotalPricing Amount="2236.21">
<Disclaimer>INCLUDES TAXES AND SURCHARGES</Disclaimer>
<Disclaimer>EXCLUDES INCIDENTALSURCHARGES</Disclaimer>
<TotalTaxes Amount="191.21"/>
</HotelTotalPricing>
</Rate>
</Rates>
</RoomRate>
<RoomRate DirectConnect="false" GuaranteeSurchargeRequired="D" GuaranteedRateProgram="false" HRD_RequiredForSell="false" IATA_CharacteristicIdentification="A05LV4" IATA_ProductIdentification="BEST AVAILABLE RATE" LowInventoryThreshold="false" RPH="002" RateChangeInd="false" RateConversionInd="false" SpecialOffer="false">
<AdditionalInfo>
<CancelPolicy Numeric="30" Option="D"/>
<Commission NonCommission="false">COMMISSIONABLE</Commission>
<Text>1 KING BED NONSMOKING</Text>
<Text>HDTV/FREE WI-FI/HOT BREAKFAST INCLUDED</Text>
</AdditionalInfo>
<Rates>
<Rate Amount="409.00" ChangeIndicator="false" CurrencyCode="USD" HRD_RequiredForSell="false" PackageIndicator="false" RateConversionInd="false" ReturnOfRateInd="false" RoomOnRequest="false">
<AdditionalGuestAmounts>
<AdditionalGuestAmount MaxExtraPersonsAllowed="0" NumAdults="0" NumCribs="0">
<Charges AdultRollAway="10.00" Crib="0.00" ExtraPerson="10.00"/>
</AdditionalGuestAmount>
</AdditionalGuestAmounts>
<HotelTotalPricing Amount="2236.21">
<Disclaimer>INCLUDES TAXES AND SURCHARGES</Disclaimer>
<Disclaimer>EXCLUDES INCIDENTALSURCHARGES</Disclaimer>
<TotalTaxes Amount="191.21"/>
</HotelTotalPricing>
</Rate>
</Rates>
</RoomRate>
<RoomRate DirectConnect="false" GuaranteeSurchargeRequired="D" GuaranteedRateProgram="false" HRD_RequiredForSell="false" IATA_CharacteristicIdentification="A06LV4" IATA_ProductIdentification="BEST AVAILABLE RATE" LowInventoryThreshold="false" RPH="003" RateChangeInd="false" RateConversionInd="false" SpecialOffer="false">
<AdditionalInfo>
<CancelPolicy Numeric="30" Option="D"/>
<Commission NonCommission="false">COMMISSIONABLE</Commission>
<Text>1 KING BED 1BDRM SUITE W/ KITCHEN NONSMOKING</Text>
<Text>HDTV/FREE WI-FI/LIVING ROOM/SOFABED/</Text>
</AdditionalInfo>
<Rates>
<Rate Amount="429.00" ChangeIndicator="false" CurrencyCode="USD" HRD_RequiredForSell="false" PackageIndicator="false" RateConversionInd="false" ReturnOfRateInd="false" RoomOnRequest="false">
<AdditionalGuestAmounts>
<AdditionalGuestAmount MaxExtraPersonsAllowed="0" NumAdults="0" NumCribs="0">
<Charges AdultRollAway="10.00" Crib="0.00" ExtraPerson="10.00"/>
</AdditionalGuestAmount>
</AdditionalGuestAmounts>
<HotelTotalPricing Amount="2345.56">
<Disclaimer>INCLUDES TAXES AND SURCHARGES</Disclaimer>
<Disclaimer>EXCLUDES INCIDENTALSURCHARGES</Disclaimer>
<TotalTaxes Amount="200.56"/>
</HotelTotalPricing>
</Rate>
</Rates>
</RoomRate>
<RoomRate DirectConnect="false" GuaranteeSurchargeRequired="D" GuaranteedRateProgram="false" HRD_RequiredForSell="false" IATA_CharacteristicIdentification="A08LV4" IATA_ProductIdentification="BEST AVAILABLE RATE" LowInventoryThreshold="false" RPH="004" RateChangeInd="false" RateConversionInd="false" SpecialOffer="false">
<AdditionalInfo>
<CancelPolicy Numeric="30" Option="D"/>
<Commission NonCommission="false">COMMISSIONABLE</Commission>
<Text>2 QUEEN BEDS SMOKING</Text>
<Text>HDTV/FREE WI-FI/HOT BREAKFAST INCLUDED</Text>
</AdditionalInfo>
<Rates>
<Rate Amount="409.00" ChangeIndicator="false" CurrencyCode="USD" HRD_RequiredForSell="false" PackageIndicator="false" RateConversionInd="false" ReturnOfRateInd="false" RoomOnRequest="false">
<AdditionalGuestAmounts>
<AdditionalGuestAmount MaxExtraPersonsAllowed="0" NumAdults="0" NumCribs="0">
<Charges AdultRollAway="10.00" Crib="0.00" ExtraPerson="10.00"/>
</AdditionalGuestAmount>
</AdditionalGuestAmounts>
<HotelTotalPricing Amount="2236.21">
<Disclaimer>INCLUDES TAXES AND SURCHARGES</Disclaimer>
<Disclaimer>EXCLUDES INCIDENTALSURCHARGES</Disclaimer>
<TotalTaxes Amount="191.21"/>
</HotelTotalPricing>
</Rate>
</Rates>
</RoomRate>
<RoomRate DirectConnect="false" GuaranteeSurchargeRequired="D" GuaranteedRateProgram="false" HRD_RequiredForSell="false" IATA_CharacteristicIdentification="A02LV4" IATA_ProductIdentification="BEST AVAILABLE RATE" LowInventoryThreshold="false" RPH="005" RateChangeInd="false" RateConversionInd="false" SpecialOffer="false">
<AdditionalInfo>
<CancelPolicy Numeric="30" Option="D"/>
<Commission NonCommission="false">COMMISSIONABLE</Commission>
<Text>1 KING BED SMOKING</Text>
<Text>HDTV/FREE WI-FI/HOT BREAKFAST INCLUDED</Text>
</AdditionalInfo>
<Rates>
<Rate Amount="409.00" ChangeIndicator="false" CurrencyCode="USD" HRD_RequiredForSell="false" PackageIndicator="false" RateConversionInd="false" ReturnOfRateInd="false" RoomOnRequest="false">
<AdditionalGuestAmounts>
<AdditionalGuestAmount MaxExtraPersonsAllowed="0" NumAdults="0" NumCribs="0">
<Charges AdultRollAway="10.00" Crib="0.00" ExtraPerson="10.00"/>
</AdditionalGuestAmount>
</AdditionalGuestAmounts>
<HotelTotalPricing Amount="2236.21">
<Disclaimer>INCLUDES TAXES AND SURCHARGES</Disclaimer>
<Disclaimer>EXCLUDES INCIDENTALSURCHARGES</Disclaimer>
<TotalTaxes Amount="191.21"/>
</HotelTotalPricing>
</Rate>
</Rates>
</RoomRate>
<RoomRate DirectConnect="false" GuaranteeSurchargeRequired="D" GuaranteedRateProgram="false" HRD_RequiredForSell="false" IATA_CharacteristicIdentification="A03LV4" IATA_ProductIdentification="BEST AVAILABLE RATE" LowInventoryThreshold="false" RPH="006" RateChangeInd="false" RateConversionInd="false" SpecialOffer="false">
<AdditionalInfo>
<CancelPolicy Numeric="30" Option="D"/>
<Commission NonCommission="false">COMMISSIONABLE</Commission>
<Text>1 KING BED 1 BEDROOM SUITE W/ KITCHEN SMOKING</Text>
<Text>2 HDTVS/FREE WI-FI/HOT BREAKFAST INCLUDED</Text>
</AdditionalInfo>
<Rates>
<Rate Amount="429.00" ChangeIndicator="false" CurrencyCode="USD" HRD_RequiredForSell="false" PackageIndicator="false" RateConversionInd="false" ReturnOfRateInd="false" RoomOnRequest="false">
<AdditionalGuestAmounts>
<AdditionalGuestAmount MaxExtraPersonsAllowed="0" NumAdults="0" NumCribs="0">
<Charges AdultRollAway="10.00" Crib="0.00" ExtraPerson="10.00"/>
</AdditionalGuestAmount>
</AdditionalGuestAmounts>
<HotelTotalPricing Amount="2345.56">
<Disclaimer>INCLUDES TAXES AND SURCHARGES</Disclaimer>
<Disclaimer>EXCLUDES INCIDENTALSURCHARGES</Disclaimer>
<TotalTaxes Amount="200.56"/>
</HotelTotalPricing>
</Rate>
</Rates>
</RoomRate>
<RoomRate DirectConnect="false" GuaranteeSurchargeRequired="D" GuaranteedRateProgram="false" HRD_RequiredForSell="false" IATA_CharacteristicIdentification="A0FLV4" IATA_ProductIdentification="BEST AVAILABLE RATE" LowInventoryThreshold="false" RPH="007" RateChangeInd="false" RateConversionInd="false" SpecialOffer="false">
<AdditionalInfo>
<CancelPolicy Numeric="30" Option="D"/>
<Commission NonCommission="false">COMMISSIONABLE</Commission>
<Text>1 KING MOBILITY ACCESS WITH TUB NONSMOKING</Text>
<Text>HDTV/FREE WI-FI/WORK AREA</Text>
</AdditionalInfo>
<Rates>
<Rate Amount="409.00" ChangeIndicator="false" CurrencyCode="USD" HRD_RequiredForSell="false" PackageIndicator="false" RateConversionInd="false" ReturnOfRateInd="false" RoomOnRequest="false">
<AdditionalGuestAmounts>
<AdditionalGuestAmount MaxExtraPersonsAllowed="0" NumAdults="0" NumCribs="0">
<Charges AdultRollAway="10.00" Crib="0.00" ExtraPerson="10.00"/>
</AdditionalGuestAmount>
</AdditionalGuestAmounts>
<HotelTotalPricing Amount="2236.21">
<Disclaimer>INCLUDES TAXES AND SURCHARGES</Disclaimer>
<Disclaimer>EXCLUDES INCIDENTALSURCHARGES</Disclaimer>
<TotalTaxes Amount="191.21"/>
</HotelTotalPricing>
</Rate>
</Rates>
</RoomRate>
<RoomRate DirectConnect="false" GuaranteeSurchargeRequired="D" GuaranteedRateProgram="false" HRD_RequiredForSell="false" IATA_CharacteristicIdentification="A0CLV4" IATA_ProductIdentification="BEST AVAILABLE RATE" LowInventoryThreshold="false" RPH="008" RateChangeInd="false" RateConversionInd="false" SpecialOffer="false">
<AdditionalInfo>
<CancelPolicy Numeric="30" Option="D"/>
<Commission NonCommission="false">COMMISSIONABLE</Commission>
<Text>1 KING MOBILITY ACCESS ROLL IN SHOWER NOSMOK</Text>
<Text>HDTV/WORK AREA</Text>
</AdditionalInfo>
<Rates>
<Rate Amount="409.00" ChangeIndicator="false" CurrencyCode="USD" HRD_RequiredForSell="false" PackageIndicator="false" RateConversionInd="false" ReturnOfRateInd="false" RoomOnRequest="false">
<AdditionalGuestAmounts>
<AdditionalGuestAmount MaxExtraPersonsAllowed="0" NumAdults="0" NumCribs="0">
<Charges AdultRollAway="10.00" Crib="0.00" ExtraPerson="10.00"/>
</AdditionalGuestAmount>
</AdditionalGuestAmounts>
<HotelTotalPricing Amount="2236.21">
<Disclaimer>INCLUDES TAXES AND SURCHARGES</Disclaimer>
<Disclaimer>EXCLUDES INCIDENTALSURCHARGES</Disclaimer>
<TotalTaxes Amount="191.21"/>
</HotelTotalPricing>
</Rate>
</Rates>
</RoomRate>
<RoomRate DirectConnect="false" GuaranteeSurchargeRequired="D" GuaranteedRateProgram="false" HRD_RequiredForSell="false" IATA_CharacteristicIdentification="A0DLV4" IATA_ProductIdentification="BEST AVAILABLE RATE" LowInventoryThreshold="false" RPH="009" RateChangeInd="false" RateConversionInd="false" SpecialOffer="false">
<AdditionalInfo>
<CancelPolicy Numeric="30" Option="D"/>
<Commission NonCommission="false">COMMISSIONABLE</Commission>
<Text>1 KING MOBILITY/HEARING ACCESS TUB SUITE NS</Text>
<Text>VIS FIREALRM/DOOR/PHN ALRT/SOFABED</Text>
</AdditionalInfo>
<Rates>
<Rate Amount="429.00" ChangeIndicator="false" CurrencyCode="USD" HRD_RequiredForSell="false" PackageIndicator="false" RateConversionInd="false" ReturnOfRateInd="false" RoomOnRequest="false">
<AdditionalGuestAmounts>
<AdditionalGuestAmount MaxExtraPersonsAllowed="0" NumAdults="0" NumCribs="0">
<Charges AdultRollAway="10.00" Crib="0.00" ExtraPerson="10.00"/>
</AdditionalGuestAmount>
</AdditionalGuestAmounts>
<HotelTotalPricing Amount="2345.56">
<Disclaimer>INCLUDES TAXES AND SURCHARGES</Disclaimer>
<Disclaimer>EXCLUDES INCIDENTALSURCHARGES</Disclaimer>
<TotalTaxes Amount="200.56"/>
</HotelTotalPricing>
</Rate>
</Rates>
</RoomRate>
<RoomRate DirectConnect="false" GuaranteeSurchargeRequired="D" GuaranteedRateProgram="false" HRD_RequiredForSell="false" IATA_CharacteristicIdentification="A0AAE0" IATA_ProductIdentification="2X POINTS PACKAGE" LowInventoryThreshold="false" RPH="010" RateChangeInd="false" RateConversionInd="false" SpecialOffer="false">
<AdditionalInfo>
<CancelPolicy Numeric="30" Option="D"/>
<Commission NonCommission="false">COMMISSIONABLE</Commission>
<Text>2 QUEEN BEDS NONSMOKING</Text>
<Text>HDTV/FREE WI-FI/HOT BREAKFAST INCLUDED</Text>
</AdditionalInfo>
<Rates>
<Rate Amount="441.72" ChangeIndicator="false" CurrencyCode="USD" HRD_RequiredForSell="false" PackageIndicator="false" RateConversionInd="false" ReturnOfRateInd="false" RoomOnRequest="false">
<AdditionalGuestAmounts>
<AdditionalGuestAmount MaxExtraPersonsAllowed="0" NumAdults="0" NumCribs="0">
<Charges AdultRollAway="10.00" Crib="0.00" ExtraPerson="10.00"/>
</AdditionalGuestAmount>
</AdditionalGuestAmounts>
<HotelTotalPricing Amount="2415.10">
<Disclaimer>INCLUDES TAXES AND SURCHARGES</Disclaimer>
<Disclaimer>EXCLUDES INCIDENTALSURCHARGES</Disclaimer>
<TotalTaxes Amount="206.50"/>
</HotelTotalPricing>
</Rate>
</Rates>
</RoomRate>
<RoomRate DirectConnect="false" GuaranteeSurchargeRequired="D" GuaranteedRateProgram="false" HRD_RequiredForSell="false" IATA_CharacteristicIdentification="A05AE0" IATA_ProductIdentification="2X POINTS PACKAGE" LowInventoryThreshold="false" RPH="011" RateChangeInd="false" RateConversionInd="false" SpecialOffer="false">
<AdditionalInfo>
<CancelPolicy Numeric="30" Option="D"/>
<Commission NonCommission="false">COMMISSIONABLE</Commission>
<Text>1 KING BED NONSMOKING</Text>
<Text>HDTV/FREE WI-FI/HOT BREAKFAST INCLUDED</Text>
</AdditionalInfo>
<Rates>
<Rate Amount="441.72" ChangeIndicator="false" CurrencyCode="USD" HRD_RequiredForSell="false" PackageIndicator="false" RateConversionInd="false" ReturnOfRateInd="false" RoomOnRequest="false">
<AdditionalGuestAmounts>
<AdditionalGuestAmount MaxExtraPersonsAllowed="0" NumAdults="0" NumCribs="0">
<Charges AdultRollAway="10.00" Crib="0.00" ExtraPerson="10.00"/>
</AdditionalGuestAmount>
</AdditionalGuestAmounts>
<HotelTotalPricing Amount="2415.10">
<Disclaimer>INCLUDES TAXES AND SURCHARGES</Disclaimer>
<Disclaimer>EXCLUDES INCIDENTALSURCHARGES</Disclaimer>
<TotalTaxes Amount="206.50"/>
</HotelTotalPricing>
</Rate>
</Rates>
</RoomRate>
<RoomRate DirectConnect="false" GuaranteeSurchargeRequired="D" GuaranteedRateProgram="false" HRD_RequiredForSell="false" IATA_CharacteristicIdentification="A06AE0" IATA_ProductIdentification="2X POINTS PACKAGE" LowInventoryThreshold="false" RPH="012" RateChangeInd="false" RateConversionInd="false" SpecialOffer="false">
<AdditionalInfo>
<CancelPolicy Numeric="30" Option="D"/>
<Commission NonCommission="false">COMMISSIONABLE</Commission>
<Text>1 KING BED 1BDRM SUITE W/ KITCHEN NONSMOKING</Text>
<Text>HDTV/FREE WI-FI/LIVING ROOM/SOFABED/</Text>
</AdditionalInfo>
<Rates>
<Rate Amount="463.32" ChangeIndicator="false" CurrencyCode="USD" HRD_RequiredForSell="false" PackageIndicator="false" RateConversionInd="false" ReturnOfRateInd="false" RoomOnRequest="false">
<AdditionalGuestAmounts>
<AdditionalGuestAmount MaxExtraPersonsAllowed="0" NumAdults="0" NumCribs="0">
<Charges AdultRollAway="10.00" Crib="0.00" ExtraPerson="10.00"/>
</AdditionalGuestAmount>
</AdditionalGuestAmounts>
<HotelTotalPricing Amount="2533.20">
<Disclaimer>INCLUDES TAXES AND SURCHARGES</Disclaimer>
<Disclaimer>EXCLUDES INCIDENTALSURCHARGES</Disclaimer>
<TotalTaxes Amount="216.60"/>
</HotelTotalPricing>
</Rate>
</Rates>
</RoomRates>
<TimeSpan Duration="0005" End="2017-01-24" Start="2017-01-19"/>
</RoomStay>
</HotelPropertyDescriptionRS></soap-env:Body></soap-env:Envelope>
This is actually how it works, and I think it is a limitation of the hotel GDSs, since I believe most don't allow multi room availability requests.
When you search for hotel availability you just select the number of guests that will be staying and hotels return the rooms that would fit that many people. If 2 guests are requested, hotels might return 1 room for 2 people or 2 rooms.
As you say, you can only request the amount of rooms at the time of sale.