I am Implementing SOAP API in my online travel system, I am trying to get SOAP API Access Token using curl request.
I have followed this article https://developer.sabre.com/resources/getting_started_with_sabre_apis/how_to_get_a_token#3sub4 to get SOAP API Access Token using my PCC number "s6ci" but when I run that code I am getting empty response.
Can you please check and let me know what I am doing wrong here?
Below is the code which I have used using soap api.
$environment = 'https://api.test.sabre.com';
// request string
$request = '<?xml version="1.0" encoding="utf-8"?>
<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="1.0">
<eb:From>
<eb:PartyId />
</eb:From>
<eb:To>
<eb:PartyId />
</eb:To>
<eb:CPAId>s6ci</eb:CPAId>
<eb:ConversationId>V1#280b16ec-5eac-46c0-893f-c88f8e8cb632#310b16ec-5dad-46c0-893f-c88f8e8cb643#780b16ec-5eac-46c0-893f-c88f8e8cb699</eb:ConversationId>
<eb:Service>SessionCreateRQ</eb:Service>
<eb:Action>SessionCreateRQ</eb:Action>
<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:UsernameToken>
<wsse:Username>MyUsername</wsse:Username>
<wsse:Password>MyPassword</wsse:Password>
<Organization>s6ci</Organization>
<Domain />
</wsse:UsernameToken>
</wsse:Security>
</soap-env:Header>
<soap-env:Body>
<eb:Manifest soap-env:mustUnderstand="1" eb:version="1.0">
<eb:Reference xlink:href="cid:rootelement" xlink:type="simple" />
</eb:Manifest>
<SessionCreateRQ>
<POS>
<Source PseudoCityCode="s6ci" />
</POS>
</SessionCreateRQ>
<ns:SessionCreateRQ xmlns:ns="http://www.opentravel.org/OTA/2002/11" />
</soap-env:Body>
</soap-env:Envelope>
';
//initialize curl request
$ch = curl_init($environment);
$headers = array(
'Content-Type: text/xml; charset=utf-8',
'Accept: text/xml',
"Content-Length: " . strlen($request)
);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POSTFIELDS, $request);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
// print response
echo 'Token '.$result;
exit;
$doc = new DOMDocument();
$doc->loadXML($result);
curl_close($ch);
return json_decode($result);
Awaiting for your response.
Thank you.
Amy T
Could not get a response with your code either somehow. I pasted you my working code. Please replace the XXXX (its according to how many chars there are any where they are comming from/what they are)
<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="1.0">
<eb:From>
<eb:PartyId type="urn:x12.org:IO5:01">999999</eb:PartyId>
</eb:From>
<eb:To>
<eb:PartyId type="urn:x12.org:IO5:01">123123</eb:PartyId>
</eb:To>
<eb:CPAId>XXXX(PCC)</eb:CPAId>
<eb:ConversationId>SWS-Test-Y8BI</eb:ConversationId>
<eb:Service eb:type="OTA">SessionCreateRQ</eb:Service>
<eb:Action>SessionCreateRQ</eb:Action>
<eb:MessageData>
<eb:MessageId>1000</eb:MessageId>
<eb:Timestamp>2012-06-07T10:00:00</eb:Timestamp>
<eb:TimeToLive>2013-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:UsernameToken>
<wsse:Username>XXXXXX(Uname)</wsse:Username>
<wsse:Password>XXXXXXXX(PW)</wsse:Password>
<Organization>XXXX(PCC)</Organization>
<Domain>DEFAULT</Domain>
</wsse:UsernameToken>
</wsse:Security>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<SessionCreateRQ>
<POS>
<Source PseudoCityCode="XXXX(PCC)"/>
</POS>
</SessionCreateRQ>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
You are correct you did. Below is a working code segment. I just logged into Sabre using this in Postman.
<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="1.0">
<eb:From>
<eb:PartyId/>
</eb:From>
<eb:To>
<eb:PartyId/>
</eb:To>
<eb:CPAId>XXXX(PCC)</eb:CPAId>
<eb:ConversationId>SWS-Test-Y8BI</eb:ConversationId>
<eb:Service>SessionCreateRQ</eb:Service>
<eb:Action>SessionCreateRQ</eb:Action>
<eb:MessageData>
<eb:MessageId>mid:20001209-133003-2333#clientofsabre.com</eb:MessageId>
<eb:Timestamp>2018-04-04T022:58:31Z</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:UsernameToken>
<wsse:Username>XXXXXX(Uname)</wsse:Username>
<wsse:Password>XXXXXXXX(PW)</wsse:Password>
<Organization>XXXX(PCC)</Organization>
<Domain>DEFAULT</Domain>
</wsse:UsernameToken>
</wsse:Security>
</soap-env:Header>
<soap-env:Body>
<eb:Manifest soap-env:mustUnderstand="1" eb:version="1.0">
<eb:Reference xlink:href="cid:rootelement" xlink:type="simple" />
</eb:Manifest>
<SessionCreateRQ>
<POS>
<Source PseudoCityCode="XXXX(PCC)" />
</POS>
</SessionCreateRQ>
<ns:SessionCreateRQ xmlns:ns="http://www.opentravel.org/OTA/2002/11" />
</soap-env:Body>
</soap-env:Envelope>
In your example, you are missing under MessageData the MessageID and the Timestamp. In Domain you are entering you PCC again. That should be "DEFAULT". When I took these elements out of my example it stopped working so I am assuming that this is your issue as well.
Related
I'm trying make a search in one particular PCC and then jump to another PCC which is Change AAA before EnhancedAirBook.
searching (Bargin Finder Max-BFM) from one particular PCC and jump in 'AAA' - ChangeContext to other PCC before booking - (EnhancedAirBook) & issuing ticket(AirTicket)
We already have the permission granted to jump in between the PCC's from Sabre.
I tried Change AAA - ChangeContext before booking - (EnhancedAirBook) but the service is failing with an error
Below are the request & response.
Request
`<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<SOAP-ENV:Header>
<m:MessageHeader xmlns:m="http://www.ebxml.org/namespaces/messageHeader">
<m:From>
<m:PartyId type="urn:x12.org:IO5:01">info#test.com</m:PartyId>
</m:From>
<m:To>
<m:PartyId type="urn:x12.org:IO5:01">webservices3.sabre.com</m:PartyId>
</m:To>
<m:CPAId>YYYY</m:CPAId>
<m:ConversationId>1555434991</m:ConversationId>
<m:Service m:type="OTA">ContextChangeLLSRQ</m:Service>
<m:Action>ContextChangeLLSRQ</m:Action>
<m:MessageData>
<m:MessageId>mid:1555434991</m:MessageId>
<m:Timestamp>2019-04-16T17-16-31Z</m:Timestamp>
<m:TimeToLive>2019-04-16T17-16-31Z</m:TimeToLive>
</m:MessageData>
<m:DuplicateElimination />
<m:Description>ContextChangeLLSRQ</m:Description>
</m: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\/RESF!ICESMSL</wsse:BinarySecurityToken>
</wsse:Security>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<ContextChangeRQ Version="2.0.3">
<ChangeAAA PseudoCityCode="xxxx" />
</ContextChangeRQ>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>`
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="URI">webservices3.sabre.com</eb:PartyId>
</eb:From>
<eb:To>
<eb:PartyId eb:type="URI">info#test.com</eb:PartyId>
</eb:To>
<eb:CPAId>YYYY</eb:CPAId>
<eb:ConversationId>1555434991</eb:ConversationId>
<eb:Service eb:type="OTA">ContextChangeLLSRQ</eb:Service>
<eb:Action>ContextChangeLLSRS</eb:Action>
<eb:MessageData>
<eb:MessageId>9418687622788650624</eb:MessageId>
<eb:Timestamp>2019-04-16T17:17:59</eb:Timestamp>
<eb:RefToMessageId>mid:1555434991</eb:RefToMessageId>
</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\/RESF!ICESMSLB</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="2019-04-16T12:17:59-05:00" type="Validation">
<stl:SystemSpecificResults>
<stl:Message>cvc-elt.1: Cannot find the declaration of element 'ContextChangeRQ'.</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>`
Your missing with the namespace xmlns="http://webservices.sabre.com/sabreXML/2011/10"
<soap:Body>
<ContextChangeRQ xmlns="http://webservices.sabre.com/sabreXML/2011/10" ReturnHostCommand="true" Version="2.0.3">
<ChangeAAA PseudoCityCode="xxxx"/>
</ContextChangeRQ>
</soap:Body>
I try to changeAAA but response
<Message>?FORMAT?</Message>
<ShortText>ERR.SWS.HOST.ERROR_IN_RESPONSE</ShortText>
bellow RQ
<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/2002/11">
<soapenv:Header>
<sec:Security>
<sec:BinarySecurityToken>Shared/IDL:IceSess\/SessMgr:1\.0.IDL/Common/!ICESMS\/ACPCRTD!ICESMSLB\/CRT.LB!1575253138274!5391!13</sec:BinarySecurityToken>
</sec:Security>
<mes:MessageHeader mes:id="?" mes:version="?">
<mes:From>
<mes:PartyId >WebServiceClient</mes:PartyId>
</mes:From>
<mes:To>
<mes:PartyId >WebServiceSupplier</mes:PartyId>
</mes:To>
<mes:CPAId>VN</mes:CPAId>
<mes:ConversationId>fOV1LWT3EJIUnGC0Yh1</mes:ConversationId>
<mes:Service ></mes:Service>
<mes:Action>ContextChangeLLSRQ</mes:Action>
<mes:MessageData>
<mes:MessageId>mid:20001209-133003-2333#clientofsabre.com1</mes:MessageId>
<mes:Timestamp>2019-06-15</mes:Timestamp>
</mes:MessageData>
</mes:MessageHeader>
</soapenv:Header>
<soapenv:Body>
<ContextChangeRQ Version="2.0.3" 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">
<ChangeAAA PseudoCityCode="xxxx"/>
</ContextChangeRQ>
</soapenv:Body>
</soapenv:Envelope>
Am trying to call EnhancedSeatMapRQ from SoapUI, but, am getting this response. Anyone knows why?
The reponse says 'USG_MOM_SERVICE_PROVIDER_ERROR', and am not able to find any explanation in any Sabre document for it. I am able to make a different API call, but, not this one.
Ignore the security token.. I changed it for this posting
Request:
<soap:Envelope xmlns="http://webservices.sabre.com/sabreXML/2003/07" xmlns:wsse="http://schemas.xmlsoap.org/ws/2002/12/secext" xmlns:eb="http://www.ebxml.org/namespaces/messageHeader" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header>
<eb:MessageHeader eb:version="2.0" soap:mustUnderstand="1">
<eb:ConversationId>webservices.support#sabre.com</eb:ConversationId>
<eb:From>
<eb:PartyId eb:type="urn:x12.org:IO5:01">openjawtech.com</eb:PartyId>
</eb:From>
<eb:To>
<eb:PartyId eb:type="urn:x12.org:IO5:01">webservices.sabre.com</eb:PartyId>
</eb:To>
<eb:CPAId>8CB9</eb:CPAId>
<eb:Service>getReservationRQ</eb:Service>
<eb:Action>getReservationRQ</eb:Action>
<eb:MessageData>
<eb:MessageId>mid:20001209-133003-2333#clientofsabre.com</eb:MessageId>
<eb:Timestamp>2020-06-01T11:15:12Z</eb:Timestamp>
<eb:TimeToLive>2020-06-01T11:15:12Z</eb:TimeToLive>
</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\/RESB!ICESMSLB\/RES.LB!LB!1111111111!11111</wsse:BinarySecurityToken>
</wsse:Security>
</soap:Header>
<soap:Body>
<ns6:EnhancedSeatMapRQ xmlns="http://services.sabre.com/STL/v02" xmlns:ns2="http://opentravel.org/common/message/v02" xmlns:ns3="http://opentravel.org/common/v02" xmlns:ns4="http://services.sabre.com/STL_Payload/v02_00" xmlns:ns5="http://stl.sabre.com/Merchandising/v1" xmlns:ns6="http://stl.sabre.com/Merchandising/v5" xmlns:ext="http://stl.sabre.com/Merchandising/diagnostics/v1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://stl.sabre.com/Merchandising/v5 ../schema_v5/schema/EnhancedSeatMap_5_0_0.xsd">
<ns6:SeatMapQueryEnhanced>
<ns6:RequestType>Payload</ns6:RequestType>
<ns6:Flight destination="SAN" origin="IAD">
<ns6:DepartureDate>2019-06-26</ns6:DepartureDate>
<ns6:Operating carrier="UA">646</ns6:Operating>
<ns6:Marketing carrier="UA">646</ns6:Marketing>
<ns6:ArrivalDate>2019-06-26</ns6:ArrivalDate>
</ns6:Flight>
</ns6:SeatMapQueryEnhanced>
</ns6:EnhancedSeatMapRQ>
</soap:Body>
</soap:Envelope>
Response:
<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="urn:x12.org:IO5:01">webservices.sabre.com</eb:PartyId>
</eb:From>
<eb:To>
<eb:PartyId eb:type="urn:x12.org:IO5:01">openjawtech.com</eb:PartyId>
</eb:To>
<eb:CPAId>8CB9</eb:CPAId>
<eb:ConversationId>webservices.support#sabre.com</eb:ConversationId>
<eb:Service>getReservationRQ</eb:Service>
<eb:Action>ErrorRS</eb:Action>
<eb:MessageData>
<eb:MessageId>7914342588700530193</eb:MessageId>
<eb:Timestamp>2019-01-24T16:21:10</eb:Timestamp>
<eb:RefToMessageId>mid:20001209-133003-2333#clientofsabre.com</eb:RefToMessageId>
</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\/RESB!ICESMSLB\/RES.LB!1111111111!11111</wsse:BinarySecurityToken>
</wsse:Security>
</soap-env:Header>
<soap-env:Body>
<soap-env:Fault>
<faultcode>soap-env:Server.SystemFailure</faultcode>
<faultstring>Service provider invocation failure</faultstring>
<detail>
<StackTrace>com.sabre.universalservices.base.exception.ApplicationMOMProviderException: errors.mom.USG_MOM_SERVICE_PROVIDER_ERROR</StackTrace>
</detail>
</soap-env:Fault>
</soap-env:Body>
</soap-env:Envelope>
Also, you seem to be sending an invalid payload (missing booking class, POS). This worked for me with flight 231:
<EnhancedSeatMapRQ xmlns="http://stl.sabre.com/Merchandising/v3">
<SeatMapQueryEnhanced>
<RequestType>Payload</RequestType>
<Flight destination="SAN" origin="IAD">
<DepartureDate>2019-06-26</DepartureDate>
<Operating carrier="UA">231</Operating>
<Marketing carrier="UA">231</Marketing>
<ArrivalDate>2019-06-26</ArrivalDate>
</Flight>
<CabinDefinition>
<RBD>Y</RBD>
</CabinDefinition>
<FareAvailQualifiers PaxType="ADT" quantity="1">
<TravellerID>1</TravellerID>
</FareAvailQualifiers>
<POS>
<PCC>your pcc</PCC>
</POS>
</SeatMapQueryEnhanced>
</EnhancedSeatMapRQ>
Source
Please try the same with Service Action Code: EnhancedSeatMapRQ
Hope it helps.
P.
I am testing SABRE APIs in SOAUI. After following their procedure in git and imported the APIs workflows I tested the Book Air Segment workflow but I get the following error message:
SessionCreateRQ - FAILED - 1041
- [Not SOAP Fault] Response is a SOAP Fault
- [Contains Approved] Missing token [(?s).*status="Approved".*] in
Response
I am not having a PCC so, I am using the default IPCC, endpoints are the normal test endpoints cert.....Domain: DEFAULT
Should the ConversationID be set?
Below is the response from SOAP:
<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="URI">123123</eb:PartyId>
</eb:From>
<eb:To>
<eb:PartyId eb:type="URI">999999</eb:PartyId>
</eb:To>
<eb:CPAId>IPCC</eb:CPAId>
<eb:ConversationId>SWS-Test-IPCC</eb:ConversationId>
<eb:Service eb:type="OTA">SessionCreateRQ</eb:Service>
<eb:Action>ErrorRS</eb:Action>
<eb:MessageData>
<eb:MessageId>1151090667624110610</eb:MessageId>
<eb:Timestamp>2018-04-29T18:32:42</eb:Timestamp>
<eb:RefToMessageId>1000</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.AuthenticationFailed</faultcode>
<faultstring>Authentication failed</faultstring>
<detail>
<StackTrace>com.sabre.universalservices.
base.security.AuthenticationException:
errors.authentication.USG_AUTHENTICATION_FAILED</StackTrace>
</detail>
</soap-env:Fault>
</soap-env:Body>
</soap-env:Envelope>
TestCase [Workflow: Book Air Segment] failed without assertions
at com.eviware.soapui.tools.SoapUITestCaseRunner.throwFailureException(SoapUITestCaseRunner.java:519)
at com.eviware.soapui.tools.SoapUITestCaseRunner.runRunner(SoapUITestCaseRunner.java:435)
at com.eviware.soapui.tools.AbstractSoapUIRunner.run(AbstractSoapUIRunner.java:202)
at com.eviware.soapui.tools.AbstractSoapUIRunner.run(AbstractSoapUIRunner.java:137)
at com.eviware.soapui.tools.AbstractSoapUIRunner.runFromCommandLine(AbstractSoapUIRunner.java:112)
at com.eviware.soapui.tools.SoapUITestCaseRunner.main(SoapUITestCaseRunner.java:122)
20:32:44,502 WARN [Tools] Could not delete temporary directory C:\Users\admin\AppData\Local\Temp\b2bdd89e-146b-4b64-a000-f916daa3c7ad
20:32:44,515 WARN [Tools] Could not delete temporary directory C:\Users\admin\AppData\Local\Temp\8546b585-7998-4c11-a31f-97cfe83a13ff
USG_AUTHENTICATION_FAILED means that the credentials used are not correct or inactive. You can see that HERE.
In either case, you should contact the API Support.
I'm implementing a call to Sabre OTA_AirAvailRQ. After going thorugh the documentation i have the request but Sabre keep responding:
<stl:ApplicationResults status="Unknown">
<stl:Error type="Application" timeStamp="2017-07-04T11:55:36-05:00">
<stl:SystemSpecificResults>
<stl:Message>Sending request to the Host failed</stl:Message>
<stl:ShortText>ERR.SWS.HOST.CONNECTOR_ERROR</stl:ShortText>
</stl:SystemSpecificResults>
</stl:Error>
</stl:ApplicationResults>
The sample is from Sabre Site.
Any idea what is wrong with the request ?
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:ns="http://webservices.sabre.com/sabreXML/2011/10" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header>
<eb:MessageHeader xmlns:eb="http://www.ebxml.org/namespaces/messageHeader" SOAP-ENV:mustUnderstand="0">
<eb:From>
<eb:PartyId eb:type="urn:x12.org:IO5:01">132654</eb:PartyId>
</eb:From>
<eb:To>
<eb:PartyId eb:type="urn:x12.org:IO5:01">56465</eb:PartyId>
</eb:To>
<eb:CPAId>IPCC</eb:CPAId>
<eb:ConversationId>12340</eb:ConversationId>
<eb:Service eb:type="sabreXML"></eb:Service>
<eb:Action>OTA_AirAvailLLSRQ</eb:Action>
<eb:MessageData></eb:MessageData>
</eb:MessageHeader>
<wsse:Security xmlns:wsse="http://schemas.xmlsoap.org/ws/2002/12/secext">
<wsse:BinarySecurityToken>Shared/IDL:IceSessXXXXXXXXXX</wsse:BinarySecurityToken>
</wsse:Security>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<ns:OTA_AirAvailRQ Version="2.4.0">
<ns:OriginDestinationInformation>
<ns:FlightSegment DepartureDateTime="12-12">
<ns:DestinationLocation LocationCode="DFW"/>
<ns:OriginLocation LocationCode="HNL"/>
</ns:FlightSegment>
</ns:OriginDestinationInformation>
</ns:OTA_AirAvailRQ>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
The part should not be used.
If you use regular SOAP, you should send the OTA_AirAvailRQ part inside the body element. If you use SOAP with attachment, then the payload should just be the OTA_AirAvailRQ content.
The following is the request which I sent as part of SessionCreateRQ to https://sws3-crt.cert.sabre.com. But I received
AuthenticationException:
errors.authentication.USG_AUTHENTICATION_FAILED
response. I couldn't find IPCC in my profile. So I mentioned 'IPCC' in Organization tag. Should the Organization tag contain the correct IPCC to get authenticated?
Note: I have replaced my actual username and password with 'xxxxxxxxxx' and 'yyyyyyyyyy' respectively.
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">
<SOAP-ENV:Header>
<eb:MessageHeader SOAP-ENV:mustUnderstand="1" eb:version="1.0">
<eb:ConversationId>support#sabre.com</eb:ConversationId>
<eb:From>
<eb:PartyId type="urn:x12.org:IO5:01">999999</eb:PartyId>
</eb:From>
<eb:To>
<eb:PartyId type="urn:x12.org:IO5:01">123123</eb:PartyId>
</eb:To>
<eb:CPAId>IPCC</eb:CPAId>
<eb:Service eb:type="OTA">SessionCreateRQ</eb:Service>
<eb:Action>SessionCreateRQ</eb:Action>
<eb:MessageData>
<eb:MessageId>1000</eb:MessageId>
<eb:Timestamp>2016-10-18T14:35:19Z</eb:Timestamp>
<eb:TimeToLive>2016-10-18T14:35:19Z</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:UsernameToken>
<wsse:Username>xxxxxxxxxx</wsse:Username>
<wsse:Password>yyyyyyyyyy</wsse:Password>
<Organization>IPCC</Organization>
<Domain>DEFAULT</Domain>
</wsse:UsernameToken>
</wsse:Security>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<eb:Manifest SOAP-ENV:mustUnderstand="1" eb:version="1.0">
<eb:Reference xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="cid:rootelement" xlink:type="simple"/>
</eb:Manifest>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Response:
<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="URI">123123</eb:PartyId>
</eb:From>
<eb:To>
<eb:PartyId eb:type="URI">999999</eb:PartyId>
</eb:To>
<eb:CPAId>IPCC</eb:CPAId>
<eb:ConversationId>support#sabre.com</eb:ConversationId>
<eb:Service eb:type="OTA">SessionCreateRQ</eb:Service>
<eb:Action>ErrorRS</eb:Action>
<eb:MessageData>
<eb:MessageId>2900801526094550610</eb:MessageId>
<eb:Timestamp>2016-10-18T14:36:49</eb:Timestamp>
<eb:RefToMessageId>1000</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.AuthenticationFailed</faultcode>
<faultstring>Authentication failed</faultstring>
<detail>
<StackTrace>com.sabre.universalservices.base.security.AuthenticationException: errors.authentication.USG_AUTHENTICATION_FAILED</StackTrace>
</detail>
</soap-env:Fault>
</soap-env:Body>
</soap-env:Envelope>
Having an IPCC is mandatory in order to create a session thru SOAP.
I'm guessing you currently have the test credentials granted to you when creating an account on DevStudio, which will only allow you to test on CERT with REST API.
When you register to Dev Studio, you only get access to REST APIs in the test environment.
In order to access SOAP APIs, you can contact do that via: https://developer.sabre.com/contact or webservices.support#sabre.com