i'm getting verify format error while searching hotel rate description using sabre soap api. my request is following:
<HotelRateDescriptionRQ 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" Version="2.3.0">
<AvailRequestSegment>
<GuestCounts Count="2"/>
<HotelSearchCriteria>
<Criterion>
<HotelRef HotelCode="0039013"/>
</Criterion>
</HotelSearchCriteria>
<TimeSpan End="04-04" Start="04-01"/>
</AvailRequestSegment>
</HotelRateDescriptionRQ>
and the response is following:
<?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="urn:x12.org:IO5:01">sws3-crt.cert.sabre.com</eb:PartyId></eb:From><eb:To><eb:PartyId eb:type="urn:x12.org:IO5:01">7973</eb:PartyId></eb:To><eb:CPAId>OH88</eb:CPAId><eb:ConversationId>y4JiO-0PTQn5fm5SRTPz-1459075755</eb:ConversationId><eb:Service eb:type="sabreXML"/><eb:Action>HotelRateDescriptionLLSRS</eb:Action><eb:MessageData><eb:MessageId>41ade332-41f5-4d1e-ad9a-c9b8d91a8817#176</eb:MessageId><eb:Timestamp>2016-03-27T10:50:32</eb:Timestamp></eb:MessageData></eb:MessageHeader><wsse:Security xmlns:wsse="http://schemas.xmlsoap.org/ws/2002/12/secext"><wsse:BinarySecurityToken valueType="String" EncodingType="wsse:Base64Binary">Shared/IDL:IceSess\/SessMgr:1\.0.IDL/Common/!ICESMS\/CERTG!ICESMSLB\/CRT.LB!-3422351642743054173!493550!0</wsse:BinarySecurityToken></wsse:Security></soap-env:Header><soap-env:Body><HotelRateDescriptionRS 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" xmlns:stl="http://services.sabre.com/STL/v01" Version="2.3.0">
<stl:ApplicationResults status="NotProcessed">
<stl:Error type="BusinessLogic" timeStamp="2016-03-27T05:50:32-05:00">
<stl:SystemSpecificResults>
<stl:Message>1VERIFY FORMAT </stl:Message>
<stl:ShortText>ERR.SWS.HOST.ERROR_IN_RESPONSE</stl:ShortText>
</stl:SystemSpecificResults>
</stl:Error>
</stl:ApplicationResults>
</HotelRateDescriptionRS></soap-env:Body></soap-env:Envelope>
so what am i doing wrong here?
look I can use HotelRateDescriptionLLSRQ using RPH atribute.
RPH atribute can be found by HotelPropertyDescriptionLLSRQ.
<soap-env:Body>
<ns:HotelRateDescriptionRQ ReturnHostCommand="false" Version="2.3.0">
<ns:AvailRequestSegment>
<ns:RatePlanCandidates>
<ns:RatePlanCandidate RPH="001" />
</ns:RatePlanCandidates>
</ns:AvailRequestSegment>
</ns:HotelRateDescriptionRQ>
</soap-env:Body>
Related
Attempting to refresh a session, but getting Error Invalid version. I know the session is good because I can take the same BinarySecurityToken and close the session.
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">Foo</PartyId>
</From>
<To>
<PartyId type="urn:x12.org:IO5:01">Sabre webservices.havail.sabre.com</PartyId>
</To>
<CPAId>***</CPAId>
<ConversationId>1564099200</ConversationId>
<Service type="sabreXML">OTA_PingRQ</Service>
<Action>OTA_PingRQ</Action>
<MessageData>
<MessageId>1564099200</MessageId>
<Timestamp>2019-07-26T00:00:000</Timestamp>
<TimeToLive>2019-07-26T00:00:000</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">Shared/IDL:IceSess\/SessMgr:1\.0.IDL/Common/!ICESMS\/RESC!ICESMSLB\/RES.LB!-2991842063860894070!1557562!0</wsse:BinarySecurityToken>
</wsse:Security>
</soapenv:Header>
<soapenv:Body>
<OTA_PingRQ TimeStamp="2019-07-26T16:36:58-6:00" Version="1.0.0">
<EchoData>refreshed</EchoData>
</OTA_PingRQ>
</soapenv:Body>
</soapenv:Envelope>
I have attempted changing the version number, but no dice.
Response
<?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">Foo</eb:PartyId>
</eb:To>
<eb:CPAId>****</eb:CPAId>
<eb:ConversationId>1564099200</eb:ConversationId>
<eb:Service eb:type="sabreXML">Session</eb:Service>
<eb:Action>OTA_PingRS</eb:Action>
<eb:MessageData>
<eb:MessageId>8222820814369030622</eb:MessageId>
<eb:Timestamp>2019-07-26T22:37:16</eb:Timestamp>
<eb:RefToMessageId>1564099200</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\/RESC!ICESMSLB\/RES.LB!-2991842063860894070!1557562!0</BinarySecurityToken>
</Security>
</Header>
<Body>
<OTA_PingRS xmlns="http://www.opentravel.org/OTA/2003/05" Version="1.0.0">
<Errors>
<Error Type="VER">Invalid version</Error>
</Errors>
</OTA_PingRS>
</Body>
</Envelope>
Please advise.
I think it refers to the version on the header, try adding version to the "MessageHeader" Element:
MessageHeader xmlns="http://www.ebxml.org/namespaces/messageHeader" version="1.0"
use this:
<soapenv:Envelope xmlns="http://www.opentravel.org/OTA/2003/05" 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:Envelope>
or
<OTA_PingRQ xmlns="http://www.opentravel.org/OTA/2003/05" TimeStamp="2020-03-17T04:14:00+08:00" Version="1.0.0">
<EchoData>refreshed</EchoData>
</OTA_PingRQ>
getting failure for OTA_AirRulesRQ API.
Request created:
<OTA_AirRulesRQ ReturnHostCommand="true" Version="2.3.0" 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">
<OriginDestinationInformation>
<FlightSegment DepartureDateTime="17-12">
<DestinationLocation LocationCode="MAA" />
<MarketingCarrier Code="AI" />
<OriginLocation LocationCode="BLR" />
</FlightSegment>
</OriginDestinationInformation>
<RuleReqInfo>
<FareBasis Code="Y" />
</RuleReqInfo>
</OTA_AirRulesRQ>
In response, getting the error as :
<faultstring>Unable to create envelope from given source: com.sun.xml.messaging.saaj.soap.dom4j.ElementImpl cannot be cast to com.sabre.universalservices.saaj.soap.Envelope</faultstring>
On sabre dev portal, not found the envelope and message headers tags for this API request. Can anyone please help on this. If anyone have done it successfully.
Have you tried adding following as envelope?
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:eb="http://www.ebxml.org/namespaces/messageHeader" 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="2.0">
<eb:From>
<eb:PartyId type="urn:x12.org:IO5:01">1212</eb:PartyId>
</eb:From>
<eb:To>
<eb:PartyId type="urn:x12.org:IO5:01">2323</eb:PartyId>
</eb:To>
<eb:CPAId>XXXX</eb:CPAId>
<eb:ConversationId>SWS-Test-XXXX</eb:ConversationId>
<eb:Service eb:type="OTA">EnhancedSeatMapRQ</eb:Service>
<eb:Action>EnhancedSeatMapRQ</eb:Action>
<eb:MessageData>
<eb:MessageId>1001</eb:MessageId>
<eb:Timestamp>2016-06-07T10:00:01</eb:Timestamp>
<eb:TimeToLive>2017-06-06T23:59:59</eb:TimeToLive>
</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 valueType="String" EncodingType="wsse:Base64Binary">XXX</wsse:BinarySecurityToken>
</wsse:Security>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
...
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
I believe you have right envelope structure.
The problem with your request is that you are using booking cabin class code instead of farebasis code. FareBasis code is "V2SPOWNP" in here:
<FareBasis Cabin="Y" Code="**V2SPOWNP**" FareAmount="43.41".........."
This will be different in your case.
Change it and give a try.
All requests I make to the Hotel Availability API are met with ‡NO LISTING THIS CTY error responses. I'm not sure what the issue could be as I'm near certain my credentials are correct the requests I'm using are directly from Sabre's given examples. I've placed an example request and response below;
Request:
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:eb="http://www.ebxml.org/namespaces/messageHeader" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsd="http://www. w3.org/1999/XMLSchema" xmlns:wsse="http://schemas.xmlsoap.org/ws/2002/12/secext">
<SOAP-ENV:Header>
<eb:MessageHeader SOAP-ENV:mustUnderstand="1" eb:version="1.0">
<eb:From>
<eb:PartyId>Us</eb:PartyId>
</eb:From>
<eb:To>
<eb:PartyId>SabreAPI</eb:PartyId>
</eb:To>
<eb:CPAId>OurPCC</eb:CPAId>
<eb:ConversationId>ourConvID</eb:ConversationId>
<eb:Service>OTA_HotelAvailLLSRQ</eb:Service>
<eb:Action>OTA_HotelAvailLLSRQ</eb:Action>
</eb:MessageHeader>
<wsse:Security xmlns:wsse="http://schemas.xmlsoap.org/ws/2002/12/secext">
<wsse:BinarySecurityToken valueType="String" EncodingType="wsse:Base64Binary">OurToken</wsse:BinarySecurityToken>
</wsse:Security>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<OTA_HotelAvailRQ 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" Version="2.3.0">
<AvailRequestSegment>
<GuestCounts Count="1"/>
<HotelSearchCriteria>
<Criterion>
<Address>
<CountryCode>US</CountryCode>
</Address>
<HotelRef HotelCityCode="DFW"/>
</Criterion>
</HotelSearchCriteria>
<TimeSpan End="04-24" Start="04-22"/>
</AvailRequestSegment>
</OTA_HotelAvailRQ>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Response:
<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">SabreAPI</eb:PartyId>
</eb:From>
<eb:To>
<eb:PartyId eb:type="URI">Us</eb:PartyId>
</eb:To>
<eb:CPAId>OurPCC</eb:CPAId>
<eb:ConversationId>OurConvID</eb:ConversationId>
<eb:Service>OTA_HotelAvailLLSRQ</eb:Service>
<eb:Action>OTA_HotelAvailLLSRS</eb:Action>
<eb:MessageData>
<eb:MessageId>1676193648756670150</eb:MessageId>
<eb:Timestamp>2018-03-27T18:01:17</eb:Timestamp>
</eb:MessageData>
</eb:MessageHeader>
<wsse:Security xmlns:wsse="http://schemas.xmlsoap.org/ws/2002/12/secext">
<wsse:BinarySecurityToken valueType="String" EncodingType="wsse:Base64Binary">OurToken</wsse:BinarySecurityToken>
</wsse:Security>
</soap-env:Header>
<soap-env:Body>
<OTA_HotelAvailRS 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" xmlns:stl="http:// services.sabre.com/STL/v01" Version="2.3.0">
<stl:ApplicationResults status="NotProcessed">
<stl:Error type="BusinessLogic" timeStamp="2018-03-27T13:01:17-05:00">
<stl:SystemSpecificResults>
<stl:Message>NO LISTING THIS CTY</stl:Message>
<stl:ShortText>ERR.SWS.HOST.ERROR_IN_RESPONSE</stl:ShortText>
</stl:SystemSpecificResults>
</stl:Error>
</stl:ApplicationResults>
</OTA_HotelAvailRS>
</soap-env:Body>
</soap-env:Envelope>
Resolved: I contacted Sabre web services support and this seems to be a problem within Sabre's system itself. It is being taken care of by Sabre.
I searching flights with OTA_AirLowFareSearchLLS method but he does not return free baggage allowance. How can I get infromation about free baggage allowance of itinerary segment before booking?
I can't use BFM because it was not purchased.
My OTA_AirLowFareSearchLLS RQ:
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Header>
<MessageHeader xmlns="http://www.ebxml.org/namespaces/messageHeader">
<From>
<PartyId>WebServiceClient</PartyId>
</From>
<To>
<PartyId>WebServiceSupplier</PartyId>
</To>
<CPAId>4PFI</CPAId>
<ConversationId>SWS-Test-4PFI</ConversationId>
<Service>OTA_AirLowFareSearchLLS</Service>
<Action>OTA_AirLowFareSearchLLSRQ</Action>
<MessageData>
<MessageId>9314594d-6c40-406b-9029-b887b13906b6</MessageId>
<Timestamp>2017-09-01T13:58:32Z</Timestamp>
</MessageData>
</MessageHeader>
<Security xmlns="http://schemas.xmlsoap.org/ws/2002/12/secext">
<BinarySecurityToken>
Shared/IDL:IceSess\/SessMgr:1\.0.IDL/Common/!ICESMS\/ACPCRTD!ICESMSLB\/CRT.LB!-3237262604010011257!783483!0
</BinarySecurityToken>
</Security>
</soap:Header>
<soap:Body>
<OTA_AirLowFareSearchRQ 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" Version="2.3.0">
<OriginDestinationInformation RPH="1">
<FlightSegment ConnectionInd="O" DepartureDateTime="2017-10-20T00:00:00" ResBookDesigCode="Y">
<DestinationLocation LocationCode="MSQ"/>
<OriginLocation LocationCode="IEV"/>
</FlightSegment>
</OriginDestinationInformation>
<OriginDestinationInformation RPH="2">
<FlightSegment ConnectionInd="O" DepartureDateTime="2017-10-22T00:00:00" ResBookDesigCode="Y">
<DestinationLocation LocationCode="IEV"/>
<OriginLocation LocationCode="MSQ"/>
</FlightSegment>
</OriginDestinationInformation>
<PriceRequestInformation>
<OptionalQualifiers>
<PricingQualifiers CurrencyCode="UAH">
<PassengerType Code="ADT" Quantity="1"/>
</PricingQualifiers>
</OptionalQualifiers>
</PriceRequestInformation>
</OTA_AirLowFareSearchRQ>
</soap:Body>
</soap:Envelope>
This is an old service which does not return such information, BFM is actually its replacement. If you don't plan on getting that, then you can get the baggage allowance at the time of pricing the itinerary.
I am creating following Sabre Hotel booking request to book a hotel room but getting CVC validation error.
My question is that by looking the below response, it is clear that we have to set CVC code somewhere in the Request but Sabre is not providing any option or variable to set this in the XML request.
How can i set this CVC value to resolve the issue?
Request:
<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" Version="2.2.0">
<Hotel>
<BasicPropertyInfo RPH="2" />
<Guarantee Type="GDPST">
<CC_Info>
<PaymentCard Code="AX" ExpireDate="2012-12" Number="1234567890" />
<PersonName>
<Surname>TEST</Surname>
</PersonName>
</CC_Info>
</Guarantee>
<RoomType NumberOfUnits="1" />
<SpecialPrefs>
<WrittenConfirmation Ind="true" />
</SpecialPrefs>
</Hotel>
</OTA_HotelResRQ>
and after hitting the above request, getting following response string-
Response:
<?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="urn:x12.org:IO5:01">ws</eb:PartyId>
</eb:From>
<eb:To>
<eb:PartyId eb:type="urn:x12.org:IO5:01">from</eb:PartyId>
</eb:To>
<eb:ConversationId>SabreConversationMyFlightSearch</eb:ConversationId>
<eb:Service eb:type="sabreXML" />
<eb:Action>OTA_HotelResLLSRS</eb:Action>
<eb:MessageData>
<eb:MessageId>4300704404584800230</eb:MessageId>
<eb:Timestamp>2017-08-23T11:14:18</eb:Timestamp>
</eb:MessageData>
</eb:MessageHeader>
<wsse:Security xmlns:wsse="http://schemas.xmlsoap.org/ws/2002/12/secext">
<wsse:BinarySecurityToken valueType="String" EncodingType="wsse:Base64Binary">Shared/IDL:IceSess\/SessMgr:1\.0.IDL/Common/!ICESMS\/RESC!ICESMSLB\/RES.LB!-3240444724556748409!1141634!0</wsse:BinarySecurityToken>
</wsse:Security>
</soap-env:Header>
<soap-env:Body>
<soap-env:Fault>
<faultcode>soap-env:Client.Validation</faultcode>
<faultstring>ERR.SWS.CLIENT.VALIDATION_FAILED</faultstring>
<detail>
<stl:ApplicationResults xmlns:stl="http://services.sabre.com/STL/v01" status="NotProcessed">
<stl:Error timeStamp="2017-08-23T06:14:18-05:00" type="Validation">
<stl:SystemSpecificResults>
<stl:Message>cvc-datatype-valid.1.2.1: '' is not a valid value for 'integer'.</stl:Message>
<stl:ShortText>ERR.SWS.CLIENT.VALIDATION_FAILED</stl:ShortText>
</stl:SystemSpecificResults>
</stl:Error>
</stl:ApplicationResults>
</detail>
</soap-env:Fault>
</soap-env:Body>
</soap-env:Envelope>