2

I am trying to make the first simple soapUI project to work to request a valid session. I am referring to https://developer.sabre.com/docs/read/soap_basics/getting_started Soap UI example.

We have our username, password, IPCC and I generate a ConversationID like suggested in the pdf. I leave "DEFAULT" for Domain.

No matter the endpoint that I set (develpment, cert, prod) I always get bad auth when I try the first "RequestSessionsRQ".

I am probably missing some very basic but I can't figure it out, do you have any suggestion?

UPDATE:

this is the SOAP 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:From>
            <eb:PartyId type="urn:x12.org:IO5:01">WS_Client</eb:PartyId>
         </eb:From>
         <eb:To>
            <eb:PartyId type="urn:x12.org:IO5:01">WS_Provider</eb:PartyId>
         </eb:To>
         <eb:CPAId>${#Project#Organization}</eb:CPAId>
             <eb:ConversationId>${#Project#ConversationID}_${=System.currentTimeMillis()}    </eb:ConversationId>
         <eb:Service eb:type="OTA">SessionCreateRQ</eb:Service>
         <eb:Action>SessionCreateRQ</eb:Action>
         <eb:MessageData>
            <eb:MessageId>Waynaut_id_${=System.currentTimeMillis()}</eb:MessageId>
            <eb:Timestamp>${=import java.text.SimpleDateFormat ; new SimpleDateFormat("YYYY-MM-dd'T'hh:mm:ss").format(new Date(System.currentTimeMillis() - 0 * 3600 * 1000))}Z</eb:Timestamp>
            <eb:TimeToLive>${=import java.text.SimpleDateFormat ; new SimpleDateFormat("YYYY-MM-dd'T'hh:mm:ss").format(new Date(System.currentTimeMillis() -6 * 3600 * 1000))}Z</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>${#Project#Username}</wsse:Username>
            <wsse:Password>${#Project#Password}</wsse:Password>
            <Organization>${#Project#Organization}</Organization>
            <Domain>DEFAULT</Domain>
         </wsse:UsernameToken>
      </wsse:Security>
   </SOAP-ENV:Header>
   <SOAP-ENV:Body>
      <SessionCreateRQ>
         <POS>
            <Source PseudoCityCode="${#Project#Organization}"/>
         </POS>
      </SessionCreateRQ>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

where tokens like ${#Project#Organization} are substituted with our credentials.

and these are the endpoints I've tried: - https://sws3-sts.cert.sabre.com/ - https://sws3-crt.cert.sabre.com/ - https://webservices3.sabre.com/

I have no idea what "PartyId" should be and left the default values given in the documentation example.

These are the 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">WS_Provider</eb:PartyId>
         </eb:From>
         <eb:To>
            <eb:PartyId eb:type="URI">WS_Client</eb:PartyId>
         </eb:To>
         <eb:CPAId>P4FF</eb:CPAId>
         <eb:ConversationId>TEST-CONVERSATION_1436438834114</eb:ConversationId>
         <eb:Service eb:type="OTA">SessionCreateRQ</eb:Service>
         <eb:Action>ErrorRS</eb:Action>
         <eb:MessageData>
            <eb:MessageId>472e975f-6a9b-4735-980e-c5ea4b4ae8e5@61</eb:MessageId>
            <eb:Timestamp>2015-07-09T10:47:12</eb:Timestamp>
            <eb:RefToMessageId>Waynaut_id_1436438834114</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>
user229044
  • 232,980
  • 40
  • 330
  • 338
T. Rossi
  • 465
  • 1
  • 6
  • 23

6 Answers6

2

It might be late now, but just in case - I tried your exact same request, and it worked for me (with my own credentials).

It is possible that your credentials are locked (e.g.: due to consecutive failed attempts to get a session), so you can contact webservices.support@sabre.com to validate your credentials status.

Make sure to provide the Username and IPCC (Organization) in your communication.

fcarreno
  • 701
  • 4
  • 8
1

Try 'SessionCreate' for the service name rather than 'SessionCreateRQ'

Here's an example:

<?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>{ipcc}</CPAId>
            <ConversationId>657ADE1A-907C-49F9-9F87-94022CD9C51C</ConversationId>
            <Service>SessionCreate</Service>
            <Action>SessionCreateRQ</Action>
            <MessageData>
                <MessageId>9314594d-6c40-406b-9029-b887b13906b6</MessageId>
                <Timestamp>2015-07-07T16:57:06Z</Timestamp>
            </MessageData>
        </MessageHeader>
        <Security xmlns="http://schemas.xmlsoap.org/ws/2002/12/secext">
            <UsernameToken>
                <Username>{usr}</Username>
                <Password>{pwd}</Password>
                <Organization xmlns="">{ipcc}</Organization>
                <Domain xmlns="">DEFAULT</Domain>
            </UsernameToken>
        </Security>
    </soap:Header>
    <soap:Body>
        <SessionCreateRQ xmlns="http://www.opentravel.org/OTA/2002/11">
            <POS>
                <Source PseudoCityCode="{ipcc}" />
            </POS>
        </SessionCreateRQ>
    </soap:Body>
</soap:Envelope>

I'm hitting https://sws-crt.cert.sabre.com

Pj.
  • 174
  • 1
  • 2
  • 10
0

Try AA for domain if you are a Sabre Travel Network customer.

jmacagno
  • 517
  • 3
  • 9
  • thanks for the reply, it didn't work though:( I see in my requests there are "PartyId" which looks pretty random, I use the ones given in the documentation, should I change them? – T. Rossi Jul 07 '15 at 15:27
  • can you share the request and response? – jmacagno Jul 08 '15 at 22:51
  • hello, ok I've updated the request and response, fixed all the timestamp and tried all the combination of what has been suggested here but with no luck:( – T. Rossi Jul 09 '15 at 10:52
  • you can try the Sabre APIs soapUI sample project from: https://github.com/sabredevstudio/sabreapisworkflows Just setup your credentials by following the instructions, and you should be good to go (try AA or DEFAULT for Domain parameter) – fcarreno Aug 25 '16 at 02:37
0

Here is a sample xml for session create that i Use. This works very well.

    <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:UsernameToken>
            <sec:Username>Username</sec:Username>
            <sec:Password>Password Here</sec:Password>
            <Organization>xxxxx</Organization>
            <Domain>Default</Domain>
         </sec:UsernameToken>
         <sec:BinarySecurityToken></sec:BinarySecurityToken>
      </sec:Security>
      <mes:MessageHeader mes:id="" mes:version="">
         <mes:From>
            <mes:PartyId mes:type="urn:x12.org.IO5:01">com.abacus.SWSSession</mes:PartyId>
            <mes:Role></mes:Role>
         </mes:From>
         <mes:To>
            <mes:PartyId mes:type="urn:x12.org.IO5:01">webservices.sabre.com</mes:PartyId>
            <mes:Role></mes:Role>
         </mes:To>
         <mes:CPAId>xxxxx</mes:CPAId>
         <mes:ConversationId>0b0b90f0-5068-45a7-8786-83b592f5797e@com.abacus.SWSSession</mes:ConversationId>
         <mes:Service mes:type="Sabre xml">SessionCreateRQ</mes:Service>
         <mes:Action>SessionCreateRQ</mes:Action>
         <mes:MessageData>
            <mes:MessageId>68d2854c-bb8c-4fd1-8179-b60f03a487cd@com.abacus.SWSSession</mes:MessageId>
            <mes:Timestamp>2015-03-19T16:42:11</mes:Timestamp>
            <mes:TimeToLive>#3/20/2015 12:42:11 AM#</mes:TimeToLive>
            <mes:Timeout>30000</mes:Timeout>
         </mes:MessageData>
         <mes:DuplicateElimination></mes:DuplicateElimination>
         <mes:Description xml:lang=""></mes:Description>
      </mes:MessageHeader>
   </soapenv:Header>
   <soapenv:Body>
      <ns:SessionCreateRQ returnContextID="">
         <ns:POS>
            <ns:Source PseudoCityCode="xxxxx"/>
         </ns:POS>
      </ns:SessionCreateRQ>
   </soapenv:Body>
</soapenv:Envelope>

xxxxx - Represents your IPCC code.

My party id remains same for all requests. and this works well on my cert and prod endpoints.

also it is possible that your username and password is not given access by sabre, please contact them and verify the logins are active.

fizmhd
  • 526
  • 3
  • 10
  • 31
0

Here you can see a very easy example.

<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 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>AM</eb:CPAId> <!-- Set the Airline code , two characters -->
            <eb:ConversationId>WaiversIT</eb:ConversationId>
            <eb:Service>SessionCreateRQ</eb:Service>
            <eb:Action>SessionCreateRQ</eb:Action>
            <eb:MessageData>
                <eb:MessageId>1000</eb:MessageId>               
            </eb:MessageData>
        </eb:MessageHeader>
        <wsse:Security>
            <wsse:UsernameToken>
                <wsse:Username>11111</wsse:Username>
                <wsse:Password>Password</wsse:Password>
                <Organization>AM</Organization><!-- Set the Airline code , two characters -->
                <Domain>AM</Domain><!-- Set the Airline code , two characters -->
            </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>
Lalo
  • 1
0

SEI: https://webservices.sabre.com

   <soapenv:Header>

      <sec:Security>
         <sec:UsernameToken>
            <sec:Username>${Properties#erp_username}</sec:Username>
            <sec:Password>${Properties#pass_code}</sec:Password>
            <sec:NewPassword>${Properties#pass_code}</sec:NewPassword>
            <Organization>${Properties#ipcc}</Organization>
            <Domain>${Properties#domain}</Domain>
         </sec:UsernameToken>
         <!--Optional:-->
         <sec:SabreAth />
         <sec:BinarySecurityToken />
      </sec:Security>

      <mes:MessageHeader mes:id="1" mes:version="2.0">
         <mes:From>
            <mes:PartyId mes:type="urn:x12.org:IO5:01">${Properties#from_patryid}</mes:PartyId>
            <mes:Role />
         </mes:From>
         <mes:To>
            <mes:PartyId mes:type="urn:x12.org:IO5:01">${Properties#to_patryid}</mes:PartyId>
            <mes:Role />
         </mes:To>
         <mes:CPAId>IPCC</mes:CPAId>
          <mes:ConversationId>${Properties#ConversationID}_${=System.currentTimeMillis()}</mes:ConversationId>
         <mes:Service mes:type="sabreXML">Session</mes:Service>
         <mes:Action>SessionCreateRQ</mes:Action>
         <mes:MessageData>
            <mes:MessageId>bilat_msg_id_${=System.currentTimeMillis()}</mes:MessageId>
            <mes:Timestamp>${=import java.text.SimpleDateFormat ; new SimpleDateFormat("YYYY-MM-dd'T'hh:mm:ss").format(new Date(System.currentTimeMillis() - 0 * 3600 * 1000))}Z</mes:Timestamp>
            <mes:RefToMessageId />
            <mes:TimeToLive>${=import java.text.SimpleDateFormat ; new SimpleDateFormat("YYYY-MM-dd'T'hh:mm:ss").format(new Date(System.currentTimeMillis() - 0 * 3600 * 1000))}Z</mes:TimeToLive>
            <mes:Timeout>100</mes:Timeout>
         </mes:MessageData>
         <!--Optional:-->
         <mes:DuplicateElimination />
      </mes:MessageHeader>
   </soapenv:Header>

   <soapenv:Body>
      <ns:SessionCreateRQ returnContextID="true">
         <ns:POS>
            <ns:Source PseudoCityCode="${Properties#ipcc}"/>
         </ns:POS>
      </ns:SessionCreateRQ>
   </soapenv:Body>

</soapenv:Envelope>
Borgy Manotoy
  • 1,960
  • 5
  • 27
  • 42