When I try to book with infant without seat I get the error below, booking with infants with seat has no problem.
INF = infant without seat
INS = infant with seat
reference : https://richmedia.sabre.com/docs_support/quickreferences/gen/price54.pdf
Here's my payload:
<EnhancedAirBookRQ version="3.6.0" HaltOnError="true" xmlns="http://services.sabre.com/sp/eab/v3_6">
<OTA_AirBookRQ>
<HaltOnStatus Code="SS" ></HaltOnStatus>
<OriginDestinationInformation>
<FlightSegment DepartureDateTime="2016-07-20T04:00:00" FlightNumber="2835" NumberInParty="4" ResBookDesigCode="K" Status="NN" >
<DestinationLocation LocationCode="CEB" ></DestinationLocation>
<MarketingAirline Code="PR" FlightNumber="2835" ></MarketingAirline>
<OriginLocation LocationCode="MNL" ></OriginLocation>
</FlightSegment>
<FlightSegment DepartureDateTime="2016-07-25T04:50:00" FlightNumber="1836" NumberInParty="4" ResBookDesigCode="K" Status="NN" >
<DestinationLocation LocationCode="MNL" ></DestinationLocation>
<MarketingAirline Code="PR" FlightNumber="1836" ></MarketingAirline>
<OriginLocation LocationCode="CEB" ></OriginLocation>
</FlightSegment>
</OriginDestinationInformation>
</OTA_AirBookRQ>
<OTA_AirPriceRQ>
<PriceRequestInformation Retain="true" >
<OptionalQualifiers>
<PricingQualifiers>
<PassengerType Code="ADT" Quantity="2" ></PassengerType>
<PassengerType Code="CNN" Quantity="1" ></PassengerType>
<PassengerType Code="INF" Quantity="1" ></PassengerType>
</PricingQualifiers>
</OptionalQualifiers>
</PriceRequestInformation>
</OTA_AirPriceRQ>
<PostProcessing IgnoreAfter="false" ></PostProcessing>
<PreProcessing IgnoreBefore="false" ></PreProcessing>
and here's the 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'>webservices.sabre.com</eb:PartyId>
</eb:From>
<eb:To>
<eb:PartyId eb:type='URI'>xxxxxxxx</eb:PartyId>
</eb:To>
<eb:CPAId>xxx</eb:CPAId>
<eb:ConversationId>CONV-EnhancedAirBookRQ#xxxxxx</eb:ConversationId>
<eb:Service>EnhancedAirBookRQ</eb:Service>
<eb:Action>EnhancedAirBookRS</eb:Action>
<eb:MessageData>
<eb:MessageId>1330890246910330610</eb:MessageId>
<eb:Timestamp>2016-07-19T06:51:31</eb:Timestamp>
<eb:RefToMessageId>MSG-EnhancedAirBookRQ#xxxxx</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'>xxxxxxx</wsse:BinarySecurityToken>
</wsse:Security>
</soap-env:Header>
<soap-env:Body>
<EnhancedAirBookRS xmlns='http://services.sabre.com/sp/eab/v3_6'>
<ApplicationResults xmlns='http://services.sabre.com/STL_Payload/v02_01' status='NotProcessed'>
<Error type='BusinessLogic' timeStamp='2016-07-19T01:51:31.881-05:00'>
<SystemSpecificResults>
<Message code='ERR.SWS.HOST.ERROR_IN_RESPONSE'>FORMAT-NEED MORE PSGR TYPES OR NAME SELECT-0115</Message>
<Message code='0'>FORMAT-NEED MORE PSGR TYPES OR NAME SELECT-0115</Message>
</SystemSpecificResults>
</Error>
</ApplicationResults>
<OTA_AirBookRS>
<OriginDestinationOption>
<FlightSegment ArrivalDateTime='07-20T05:10' DepartureDateTime='07-20T04:00' FlightNumber='2835' NumberInParty='004' ResBookDesigCode='K' Status='NN' eTicket='true'>
<DestinationLocation LocationCode='CEB'/>
<MarketingAirline Code='PR' FlightNumber='2835'/>
<OriginLocation LocationCode='MNL'/>
</FlightSegment>
<FlightSegment ArrivalDateTime='07-25T06:00' DepartureDateTime='07-25T04:50' FlightNumber='1836' NumberInParty='004' ResBookDesigCode='K' Status='NN' eTicket='true'>
<DestinationLocation LocationCode='MNL'/>
<MarketingAirline Code='PR' FlightNumber='1836'/>
<OriginLocation LocationCode='CEB'/>
</FlightSegment>
</OriginDestinationOption>
</OTA_AirBookRS>
</EnhancedAirBookRS>
</soap-env:Body>
Problem Solved!
To book infants without seat you must use PassengerType Code 'INF' and not count them in NumberInParty
credits to #fcarreno.
To book infants with seat you must use
PassengerType Code 'INS' and count them in NumberInParty.
Solution Infant without seat payload :
<EnhancedAirBookRQ version="3.6.0" HaltOnError="true" xmlns="http://services.sabre.com/sp/eab/v3_6">
<OTA_AirBookRQ>
<HaltOnStatus Code="SS" ></HaltOnStatus>
<OriginDestinationInformation>
<FlightSegment DepartureDateTime="2016-07-22T21:55:00" FlightNumber="686" NumberInParty="3" ResBookDesigCode="S" Status="NN" >
<DestinationLocation LocationCode="BWN" ></DestinationLocation>
<MarketingAirline Code="BI" FlightNumber="686" ></MarketingAirline>
<OriginLocation LocationCode="MNL" ></OriginLocation>
</FlightSegment>
<FlightSegment DepartureDateTime="2016-07-23T10:55:00" FlightNumber="513" NumberInParty="3" ResBookDesigCode="S" Status="NN" >
<DestinationLocation LocationCode="BKK" ></DestinationLocation>
<MarketingAirline Code="BI" FlightNumber="513" ></MarketingAirline>
<OriginLocation LocationCode="BWN" ></OriginLocation>
</FlightSegment>
<FlightSegment DepartureDateTime="2016-07-25T13:30:00" FlightNumber="514" NumberInParty="3" ResBookDesigCode="S" Status="NN" >
<DestinationLocation LocationCode="BWN" ></DestinationLocation>
<MarketingAirline Code="BI" FlightNumber="514" ></MarketingAirline>
<OriginLocation LocationCode="BKK" ></OriginLocation>
</FlightSegment>
<FlightSegment DepartureDateTime="2016-07-25T19:00:00" FlightNumber="685" NumberInParty="3" ResBookDesigCode="S" Status="NN" >
<DestinationLocation LocationCode="MNL" ></DestinationLocation>
<MarketingAirline Code="BI" FlightNumber="685" ></MarketingAirline>
<OriginLocation LocationCode="BWN" ></OriginLocation>
</FlightSegment>
</OriginDestinationInformation>
</OTA_AirBookRQ>
<OTA_AirPriceRQ>
<PriceRequestInformation Retain="true" >
<OptionalQualifiers>
<PricingQualifiers>
<PassengerType Code="ADT" Quantity="2" ></PassengerType>
<PassengerType Code="CNN" Quantity="1" ></PassengerType>
<PassengerType Code="INF" Quantity="1" ></PassengerType>
</PricingQualifiers>
</OptionalQualifiers>
</PriceRequestInformation>
</OTA_AirPriceRQ>
<PostProcessing IgnoreAfter="false"/>
<PreProcessing IgnoreBefore="false"/>
</EnhancedAirBookRQ>
Infant with seat payload :
<EnhancedAirBookRQ version="3.6.0" HaltOnError="true" xmlns="http://services.sabre.com/sp/eab/v3_6">
<OTA_AirBookRQ>
<HaltOnStatus Code="SS" ></HaltOnStatus>
<OriginDestinationInformation>
<FlightSegment DepartureDateTime="2016-07-22T21:55:00" FlightNumber="686" NumberInParty="4" ResBookDesigCode="S" Status="NN" >
<DestinationLocation LocationCode="BWN" ></DestinationLocation>
<MarketingAirline Code="BI" FlightNumber="686" ></MarketingAirline>
<OriginLocation LocationCode="MNL" ></OriginLocation>
</FlightSegment>
<FlightSegment DepartureDateTime="2016-07-23T10:55:00" FlightNumber="513" NumberInParty="3" ResBookDesigCode="S" Status="NN" >
<DestinationLocation LocationCode="BKK" ></DestinationLocation>
<MarketingAirline Code="BI" FlightNumber="513" ></MarketingAirline>
<OriginLocation LocationCode="BWN" ></OriginLocation>
</FlightSegment>
<FlightSegment DepartureDateTime="2016-07-25T13:30:00" FlightNumber="514" NumberInParty="3" ResBookDesigCode="S" Status="NN" >
<DestinationLocation LocationCode="BWN" ></DestinationLocation>
<MarketingAirline Code="BI" FlightNumber="514" ></MarketingAirline>
<OriginLocation LocationCode="BKK" ></OriginLocation>
</FlightSegment>
<FlightSegment DepartureDateTime="2016-07-25T19:00:00" FlightNumber="685" NumberInParty="3" ResBookDesigCode="S" Status="NN" >
<DestinationLocation LocationCode="MNL" ></DestinationLocation>
<MarketingAirline Code="BI" FlightNumber="685" ></MarketingAirline>
<OriginLocation LocationCode="BWN" ></OriginLocation>
</FlightSegment>
</OriginDestinationInformation>
</OTA_AirBookRQ>
<OTA_AirPriceRQ>
<PriceRequestInformation Retain="true" >
<OptionalQualifiers>
<PricingQualifiers>
<PassengerType Code="ADT" Quantity="2" ></PassengerType>
<PassengerType Code="CNN" Quantity="1" ></PassengerType>
<PassengerType Code="INS" Quantity="1" ></PassengerType>
</PricingQualifiers>
</OptionalQualifiers>
</PriceRequestInformation>
</OTA_AirPriceRQ>
<PostProcessing IgnoreAfter="false" ></PostProcessing>
<PreProcessing IgnoreBefore="false" ></PreProcessing>
</EnhancedAirBookRQ>
Related
I'm using CreatePassengerNameRecordRQ API to create PNR and book flight, flight infomation I had got by BFM API. But CreatePassengerNameRecordRQ api return error can not create pnr. Pls tell me, how can i create pnr for flight affter get BFM.
This is my request:
<CreatePassengerNameRecordRQ xmlns="http://services.sabre.com/sp/reservation/v2_1" version="2.1.0" haltOnAirPriceError="false" targetCity="KUL">
<TravelItineraryAddInfo>
<AgencyInfo>
<Address>
<AddressLine>My Company</AddressLine>
<CityName>Dubai</CityName>
<CountryCode>PK</CountryCode>
<PostalCode>00000</PostalCode>
<StateCountyProv StateCode="DX"/>
<StreetNmbr>SZ Road</StreetNmbr>
</Address>
<Ticketing TicketType="7TAW"/>
</AgencyInfo>
<CustomerInfo>
<ContactNumbers>
<ContactNumber LocationCode="LHE" NameNumber="1.1" Phone="971-589-697242" PhoneUseType="A"/>
</ContactNumbers>
<Email Address="darabjavaid#gmail.com" NameNumber="1.1"/>
<PersonName NameNumber="1.1" PassengerType="ADT" >
<GivenName>ADULT</GivenName>
<Surname>KHAN</Surname>
</PersonName>
<PersonName NameNumber="2.1" PassengerType="CNN" >
<GivenName>CHILD</GivenName>
<Surname>KHAN</Surname>
</PersonName>
<PersonName NameNumber="3.1" Infant="true" PassengerType="INF" >
<GivenName>INFANT</GivenName>
<Surname>KHAN</Surname>
</PersonName>
</CustomerInfo>
</TravelItineraryAddInfo>
<AirBook>
<OriginDestinationInformation>
<FlightSegment DepartureDateTime="2019-02-15T21:30:00" FlightNumber="804" NumberInParty="1" ResBookDesigCode="V" Status="NN">
<DestinationLocation LocationCode="SIN" />
<MarketingAirline Code="OD" FlightNumber="804"/>
<OriginLocation LocationCode="KUL"/>
</FlightSegment>
</OriginDestinationInformation>
</AirBook>
<AirPrice>
<PriceRequestInformation>
<OptionalQualifiers>
<PricingQualifiers>
<PassengerType Code="ADT" Quantity="1"/>
<PassengerType Code="CNN" Quantity="1"/>
<PassengerType Code="INF" Quantity="1"/>
</PricingQualifiers>
</OptionalQualifiers>
</PriceRequestInformation>
</AirPrice>
<PostProcessing RedisplayReservation="true" >
<EndTransaction>
<Source ReceivedFrom=" TESTING"/>
</EndTransaction>
</PostProcessing>
</CreatePassengerNameRecordRQ>
This is my response:
<CreatePassengerNameRecordRS xmlns="http://services.sabre.com/sp/reservation/v2_1">
<Error type="Application" timeStamp="2019-02-14T21:24:31.556-06:00">
<SystemSpecificResults>
<Message code="ERR.SP.BUSINESS_ERROR">PNR has not been created successfully, see remaining messages for details</Message>
<Message code="ERR.SP.BUSINESS_ERROR">Could not find the PNR locator in the End Transaction response</Message>
</SystemSpecificResults>
</Error>
</CreatePassengerNameRecordRS>
Can you try again without "targetCity="KUL""? This is changing the PCC to KUL, and I don't think you would want to leave your actual PCC. "KUL" would be a pseudo city code used by airlines and not travel agency Sabre users.
I would recommend you to use the orchestrated option with EnhanchedAirbookRQ + PassengerDetailsRQ as it is way more stable.
In my BFM Rest request, I can find a flight. In my BFM Soap request (Bargain Finder Max RQ) I can´t find the same flight. Sometimes BFM Soap Sabre is returning: "MIN CONNECTION TIME NOT MET BEFORE LEG 2". Whys is this happening?
This is my request to BFM SOAP:
<?xml version="1.0" encoding="utf-16"?>
<OTA_AirLowFareSearchRQ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Version="3.3.0" ResponseType="OTA" ResponseVersion="3.3.0">
<POS xmlns="http://www.opentravel.org/OTA/2003/05">
<Source PseudoCityCode="">
<RequestorID Type="1" ID="1">
<CompanyName Code="TN" />
</RequestorID>
</Source>
</POS>
<OriginDestinationInformation RPH="0" Fixed="true" xmlns="http://www.opentravel.org/OTA/2003/05">
<DepartureDateTime>2018-01-31T06:50:00</DepartureDateTime>
<OriginLocation LocationCode="BSB" />
<DestinationLocation LocationCode="CNF" />
<TPA_Extensions>
<Flight Number="3349" DepartureDateTime="2018-01-31T06:50:00" ArrivalDateTime="2018-01-31T08:10:00" Type="A">
<OriginLocation LocationCode="BSB" />
<DestinationLocation LocationCode="CNF" />
<Airline Operating="JJ" Marketing="JJ" />
<Fare BrandID="JJ" />
</Flight>
<ConnectionTime Min="115" />
</TPA_Extensions>
</OriginDestinationInformation>
<OriginDestinationInformation RPH="1" Fixed="true" xmlns="http://www.opentravel.org/OTA/2003/05">
<DepartureDateTime>2018-01-31T10:05:00</DepartureDateTime>
<OriginLocation LocationCode="CNF" />
<DestinationLocation LocationCode="GRU" />
<TPA_Extensions>
<Flight Number="3345" DepartureDateTime="2018-01-31T10:05:00" ArrivalDateTime="2018-01-31T11:20:00" Type="A">
<OriginLocation LocationCode="CNF" />
<DestinationLocation LocationCode="GRU" />
<Airline Operating="JJ" Marketing="JJ" />
<Fare BrandID="JJ" />
</Flight>
<ConnectionTime Min="60" />
</TPA_Extensions>
</OriginDestinationInformation>
<OriginDestinationInformation RPH="2" Fixed="true" xmlns="http://www.opentravel.org/OTA/2003/05">
<DepartureDateTime>2018-02-21T16:50:00</DepartureDateTime>
<OriginLocation LocationCode="GRU" />
<DestinationLocation LocationCode="GYN" />
<TPA_Extensions>
<Flight Number="3546" DepartureDateTime="2018-02-21T16:50:00" ArrivalDateTime="2018-02-21T18:31:00" Type="A">
<OriginLocation LocationCode="GRU" />
<DestinationLocation LocationCode="GYN" />
<Airline Operating="JJ" Marketing="JJ" />
<Fare BrandID="JJ" />
</Flight>
<ConnectionTime Min="169" />
</TPA_Extensions>
</OriginDestinationInformation>
<OriginDestinationInformation RPH="3" Fixed="true" xmlns="http://www.opentravel.org/OTA/2003/05">
<DepartureDateTime>2018-02-21T21:20:00</DepartureDateTime>
<OriginLocation LocationCode="GYN" />
<DestinationLocation LocationCode="BSB" />
<TPA_Extensions>
<Flight Number="3854" DepartureDateTime="2018-02-21T21:20:00" ArrivalDateTime="2018-02-21T22:00:00" Type="A">
<OriginLocation LocationCode="GYN" />
<DestinationLocation LocationCode="BSB" />
<Airline Operating="JJ" Marketing="JJ" />
<Fare BrandID="JJ" />
</Flight>
<ConnectionTime Min="60" />
</TPA_Extensions>
</OriginDestinationInformation>
<TravelPreferences xmlns="http://www.opentravel.org/OTA/2003/05">
<TPA_Extensions>
<NumTrips Number="1" />
<TripType />
<XOFares Value="false" />
</TPA_Extensions>
</TravelPreferences>
<TravelerInfoSummary xmlns="http://www.opentravel.org/OTA/2003/05">
<SeatsRequested>1</SeatsRequested>
<AirTravelerAvail>
<PassengerTypeQuantity Code="ADT" Quantity="1" />
</AirTravelerAvail>
</TravelerInfoSummary>
<TPA_Extensions xmlns="http://www.opentravel.org/OTA/2003/05">
<IntelliSellTransaction>
<RequestType Name="50ITINS" />
</IntelliSellTransaction>
<DiversityControl>
<LowFareBucket Options="20%" FareCutOff="25%" />
<Dimensions>
<Carrier Weight="1" OnlineIndicator="true" />
</Dimensions>
</DiversityControl>
</TPA_Extensions>
</OTA_AirLowFareSearchRQ>
The min connection time is 60 min.
The flight connection time is greater than 60 min.
Normally have a minimum connection Time is needed between the arrival and departure of 2 segments depending on Airline and Airport. E.g. you cant arrive at 1:30 PM and departe 1:35 PM.
It seems the time is too small (can be checked when booking the itin in Sabre RED with VCT*).
Regarding the discrepancy it sounds like a case for sabre support. In general i dont trust SABRE Rest, so i trust Soap to be correct.
If you want to you can give me the segments and i will check on the Sabre Workspace.
In xml OTA_AirLowFareSearchRQ there is an object called OriginDestinetionInformation and inside this object there another property called OriginDestinetionInformation. If you set THE property "Fixed" to false maybe this error will be solved. I´m yet testing this solution.
Can any one help me on the OTA_AirPriceRQ request. I want to know the options which I can include with it so that i can get a success response.
<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:v3="http://services.sabre.com/sp/eab/v3_7">
<soapenv:Header>
<sec:Security>
<sec:BinarySecurityToken>Shared/IDL:IceSess\/SessMgr:1\.0.IDL/Common/!ICESMS\/ACPCRTC!ICESMSLB\/CRT.LB!-3273332406989210493!448034!0!1</sec:BinarySecurityToken>
</sec:Security>
<mes:MessageHeader >
<mes:From>
<!--1 or more repetitions:-->
<mes:PartyId mes:type="urn:x12.org:IO5:01">Traform</mes:PartyId>
</mes:From>
<mes:To>
<!--1 or more repetitions:-->
<mes:PartyId mes:type="urn:x12.org:IO5:01">Sabre</mes:PartyId>
</mes:To>
<mes:CPAId>VJ6I</mes:CPAId>
<mes:ConversationId>Traform</mes:ConversationId>
<mes:Service mes:type="OTA">EnhancedAirBookRQ</mes:Service>
<mes:Action>EnhancedAirBookRQ</mes:Action>
<mes:MessageData>
<mes:MessageId>1000</mes:MessageId>
<mes:Timestamp>2017-05-22T17:28</mes:Timestamp>
</mes:MessageData>
</mes:MessageHeader>
</soapenv:Header>
<soapenv:Body>
<v3:EnhancedAirBookRQ xmlns="http://services.sabre.com/sp/eab/v3_7" version="3.7.0" HaltOnError="true">
<v3:OTA_AirBookRQ>
<v3:OriginDestinationInformation>
<v3:FlightSegment DepartureDateTime="2017-11-21T17:05" FlightNumber="9392"
NumberInParty="1"
ResBookDesigCode="F" Status="QF">
<v3:DestinationLocation LocationCode="LHR"/>
<v3:MarketingAirline Code="MH" FlightNumber="9392"/>
<v3:OriginLocation LocationCode="DFW"/>
</v3:FlightSegment>
</v3:OriginDestinationInformation>
<RedisplayReservation NumAttempts="2" WaitInterval="5000"/>
</v3:OTA_AirBookRQ>
<v3:OTA_AirPriceRQ>
<v3:PriceRequestInformation Retain="true">
<v3:OptionalQualifiers>
<v3:PricingQualifiers>
<PassengerType Code="ADT" Quantity="1" />
</v3:PricingQualifiers>
</v3:OptionalQualifiers>
</v3:PriceRequestInformation>
</v3:OTA_AirPriceRQ>
</v3:EnhancedAirBookRQ>
</soapenv:Body>
</soapenv:Envelope>
See below complete Enhanced Air Book request
<?xml version="1.0" encoding="UTF-8"?>
<EnhancedAirBookRQ version="3.7.0" HaltOnError="true">
<OTA_AirBookRQ xmlns="http://services.sabre.com/sp/eab/v3_7">
<HaltOnStatus Code="NN" />
<HaltOnStatus Code="UC" />
<HaltOnStatus Code="NO" />
<HaltOnStatus Code="US" />
<OriginDestinationInformation>
<FlightSegment DepartureDateTime="2017-06-01T15:40" FlightNumber="4793" NumberInParty="2" ResBookDesigCode="K" Status="NN">
<DestinationLocation LocationCode="CDG" />
<Equipment AirEquipType="77W" />
<MarketingAirline Code="9W" FlightNumber="639" />
<MarriageGrp>O</MarriageGrp>
<OperatingAirline Code="AF" />
<OriginLocation LocationCode="IAH" />
</FlightSegment>
<FlightSegment DepartureDateTime="2017-06-02T11:35" FlightNumber="123" NumberInParty="2" ResBookDesigCode="K" Status="NN">
<DestinationLocation LocationCode="BOM" />
<Equipment AirEquipType="333" />
<MarketingAirline Code="9W" FlightNumber="123" />
<MarriageGrp>I</MarriageGrp>
<OperatingAirline Code="9W" />
<OriginLocation LocationCode="CDG" />
</FlightSegment>
<FlightSegment DepartureDateTime="2017-06-03T05:30" FlightNumber="341" NumberInParty="2" ResBookDesigCode="K" Status="NN">
<DestinationLocation LocationCode="BDQ" />
<Equipment AirEquipType="738" />
<MarketingAirline Code="9W" FlightNumber="341" />
<MarriageGrp>I</MarriageGrp>
<OperatingAirline Code="9W" />
<OriginLocation LocationCode="BOM" />
</FlightSegment>
<FlightSegment DepartureDateTime="2017-06-06T20:55" FlightNumber="344" NumberInParty="2" ResBookDesigCode="O" Status="NN">
<DestinationLocation LocationCode="BOM" />
<Equipment AirEquipType="738" />
<MarketingAirline Code="9W" FlightNumber="344" />
<MarriageGrp>O</MarriageGrp>
<OperatingAirline Code="9W" />
<OriginLocation LocationCode="BDQ" />
</FlightSegment>
<FlightSegment DepartureDateTime="2017-06-07T02:25" FlightNumber="3288" NumberInParty="2" ResBookDesigCode="V" Status="NN">
<DestinationLocation LocationCode="AMS" />
<Equipment AirEquipType="333" />
<MarketingAirline Code="9W" FlightNumber="3288" />
<MarriageGrp>I</MarriageGrp>
<OperatingAirline Code="9W" />
<OriginLocation LocationCode="BOM" />
</FlightSegment>
<FlightSegment DepartureDateTime="2017-06-07T10:00" FlightNumber="8803" NumberInParty="2" ResBookDesigCode="V" Status="NN">
<DestinationLocation LocationCode="IAH" />
<Equipment AirEquipType="74E" />
<MarketingAirline Code="9W" FlightNumber="661" />
<MarriageGrp>I</MarriageGrp>
<OperatingAirline Code="KL" />
<OriginLocation LocationCode="AMS" />
</FlightSegment>
</OriginDestinationInformation>
<RedisplayReservation NumAttempts="2" WaitInterval="5000" />
</OTA_AirBookRQ>
<OTA_AirPriceRQ xmlns="http://services.sabre.com/sp/eab/v3_7">
<PriceRequestInformation Retain="true">
<OptionalQualifiers>
<FlightQualifiers>
<VendorPrefs>
<Airline Code="9W" />
</VendorPrefs>
</FlightQualifiers>
<MiscQualifiers>
<Commission Amount="0.00" />
</MiscQualifiers>
<PricingQualifiers CurrencyCode="USD">
<PassengerType Code="ADT" Quantity="1" />
<PassengerType Code="INF" Quantity="1" />
<PassengerType Code="CNN" Quantity="1" />
</PricingQualifiers>
</OptionalQualifiers>
</PriceRequestInformation>
</OTA_AirPriceRQ>
<PostProcessing xmlns="http://services.sabre.com/sp/eab/v3_7">
<RedisplayReservation WaitInterval="5000" UnmaskCreditCard="true" />
</PostProcessing>
</EnhancedAirBookRQ>
I am sending request to get CreatePassengerNameRecordRQ(PNR) through the SOAP UI. I am facing some header issue when I post request. My request is the following:
<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:v3="http://services.sabre.com/sp/eab/v3_2">
<soapenv:Header>
<sec:Security>
<sec:BinarySecurityToken>XXXXXXXXXXXXXXXXXXXXX</sec:BinarySecurityToken>
</sec:Security>
<mes:MessageHeader>
<mes:From>
<!--1 or more repetitions:-->
<mes:PartyId mes:type="urn:x12.org:IO5:01">from</mes:PartyId>
</mes:From>
<mes:To>
<!--1 or more repetitions:-->
<mes:PartyId mes:type="urn:x12.org:IO5:01">ws</mes:PartyId>
</mes:To>
<mes:CPAId>XXXX</mes:CPAId>
<mes:ConversationId>XXXXXXXXXXXXX</mes:ConversationId>
<mes:Service mes:type="sabreXML">sabreXML</mes:Service>
<mes:Action>CreatePassengerNameRecordRQ</mes:Action>
<mes:MessageData>
<mes:MessageId>00000</mes:MessageId>
<mes:Timestamp>233</mes:Timestamp>
</mes:MessageData>
<!--Zero or more repetitions:-->
<mes:Description xml:lang="en-US">Testing</mes:Description>
<!--You may enter ANY elements at this point-->
</mes:MessageHeader>
</soapenv:Header>
<soapenv:Body>
<CreatePassengerNameRecordRQ xmlns="http://services.sabre.com/sp/reservation/v1" targetCity="IH9A">
<Profile>
<UniqueID ID="ABCDEF123454" />
</Profile>
<AirBook>
<OriginDestinationInformation>
<FlightSegment ArrivalDateTime="2016-12-25T08:28:00" DepartureDateTime="2016-12-25T06:20:00" FlightNumber="1479" NumberInParty="1" ResBookDesigCode="S" Status="NN">
<DestinationLocation LocationCode="LAX" />
<MarketingAirline Code="F9" FlightNumber="1479" />
<MarriageGrp>O</MarriageGrp>
<OriginLocation LocationCode="ATL" />
</FlightSegment>
</OriginDestinationInformation>
</AirBook>
<AirPrice>
<PriceRequestInformation>
<OptionalQualifiers>
<PricingQualifiers>
<SpanishLargeFamilyDiscountLevel>1</SpanishLargeFamilyDiscountLevel>
</PricingQualifiers>
</OptionalQualifiers>
</PriceRequestInformation>
</AirPrice>
<MiscSegment DepartureDateTime="2013-10-29" NumberInParty="1" Status="NN" Type="OTH">
<OriginLocation LocationCode="ATL" />
<Text>TEST</Text>
<VendorPrefs>
<Airline Code="F9" />
</VendorPrefs>
</MiscSegment>
<SpecialReqDetails>
<AddRemark>
<RemarkInfo>
<FOP_Remark Type="CHECK">
<CC_Info Suppress="true">
<PaymentCard AirlineCode="F9" CardSecurityCode="1234" Code="VI" ExpireDate="2017-12" ExtendedPayment="12" ManualApprovalCode="123456" Number="4123412341234123" SuppressApprovalCode="true" />
</CC_Info>
</FOP_Remark>
<FutureQueuePlaceRemark Date="12-21" PrefatoryInstructionCode="11" PseudoCityCode="IPCC1" QueueIdentifier="499" Time="06:00" />
<Remark Type="Historical">
<Text>TEST HISTORICAL REMARK</Text>
</Remark>
<Remark Type="Invoice">
<Text>TEST INVOICE REMARK</Text>
</Remark>
<Remark Type="Itinerary">
<Text>TEST ITINERARY REMARK</Text>
</Remark>
<Remark Type="Hidden">
<Text>TEST HIDDEN REMARK</Text>
</Remark>
</RemarkInfo>
</AddRemark>
<AirSeat>
<Seats>
<Seat NameNumber="1.1" Preference="AN" SegmentNumber="1" />
<Seat NameNumber="2.1" Preference="AN" SegmentNumber="1" />
<Seat NameNumber="3.1" Preference="AN" SegmentNumber="1" />
</Seats>
</AirSeat>
<SpecialService>
<SpecialServiceInfo>
<Service SSR_Code="OSI">
<PersonName NameNumber="1.1" />
<Text>TEST1</Text>
<VendorPrefs>
<Airline Code="UA" />
</VendorPrefs>
</Service>
</SpecialServiceInfo>
</SpecialService>
</SpecialReqDetails>
<PostProcessing RedisplayReservation="true">
<ARUNK/>
<QueuePlace>
<QueueInfo>
<QueueIdentifier Number="100" PrefatoryInstructionCode="11" />
</QueueInfo>
</QueuePlace>
<EndTransaction>
<Source ReceivedFrom="BRANDON STEELE" />
</EndTransaction>
</PostProcessing>
</CreatePassengerNameRecordRQ>
</soapenv:Body>
</soapenv:Envelope>
And I'm getting the response is the following:
<soap-env:Fault>
<faultcode>soap-env:Client</faultcode>
<faultstring>SabreHeader/Service missing or incomplete</faultstring>
<detail>
<ns2:ApplicationResults status="NotProcessed" xmlns:ns2="http://services.sabre.com/STL_Payload/v02_01">
<ns2:Error type="Validation" timeStamp="2016-12-21T01:31:06.658-06:00">
<ns2:SystemSpecificResults>
<ns2:Message code="ERR.SP.CLIENT.INVALID_REQUEST">SabreHeader/Service missing or incomplete</ns2:Message>
</ns2:SystemSpecificResults>
</ns2:Error>
</ns2:ApplicationResults>
</detail>
</soap-env:Fault>
Specify version in the CreatePassengerNameRecordRQ header:
<CreatePassengerNameRecordRQ xmlns="http://services.sabre.com/sp/reservation/v1" targetCity="IH9A" version="1.0.0">
Hi I am getting below exception while accessing SAML url. this primarily problem with the metadata_idp used. As this is working with other IDP with different metadata. Please help me to find out the problem in metadata xml.
javax.servlet.ServletException: org.opensaml.saml2.metadata.provider.MetadataProviderException: No IDP was configured, please update included metadata with at least one IDP
org.springframework.security.saml.SAMLEntryPoint.commence(SAMLEntryPoint.java:161)
org.springframework.security.saml.SAMLEntryPoint.doFilter(SAMLEntryPoint.java:107)
My idpmetadat.xml configured is as below.
idp.xml
<?xml version="1.0" encoding="UTF-8" ?>
<md:EntityDescriptor xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata"
ID="idfdmoAYqQtEozWEOcEj5IgJWhE1k" entityID="https://example.com/nidp/saml2/metadata">
<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:SignedInfo>
<CanonicalizationMethod xmlns="http://www.w3.org/2000/09/xmldsig#"
Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
<ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" />
<ds:Reference URI="#idfdmoAYqQtEozWEOcEj5IgJWhE1k">
<ds:Transforms>
<ds:Transform
Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />
<ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
</ds:Transforms>
<ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
<DigestValue xmlns="http://www.w3.org/2000/09/xmldsig#">4UvquLeqvOeKQsO/e3XZdP7pGUE=
</DigestValue>
</ds:Reference>
</ds:SignedInfo>
<SignatureValue xmlns="http://www.w3.org/2000/09/xmldsig#">
fuisfhifhsfif
</SignatureValue>
<ds:KeyInfo>
<ds:X509Data>
<ds:X509Certificate>
</ds:X509Certificate>
</ds:X509Data>
</ds:KeyInfo>
</ds:Signature>
<md:AttributeAuthorityDescriptor ID="idWBVe5DrgqPvsjol4GsECxwBoARs"
protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
<md:KeyDescriptor use="signing">
<ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:X509Data>
<ds:X509Certificate>
gjvbdgjdbgjdbgjdgbjkdgbjkdgbjkdgbkdgb
</ds:X509Certificate>
</ds:X509Data>
</ds:KeyInfo>
<md:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc" />
</md:KeyDescriptor>
<md:KeyDescriptor use="encryption">
<ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:X509Data>
<ds:X509Certificate>
gjvbdgjdbgjdbgjdgbjkdgbjkdgbjkdgbkdgb
</ds:X509Certificate>
</ds:X509Data>
</ds:KeyInfo>
<md:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes128-cbc" />
</md:KeyDescriptor>
<md:AttributeService Binding="urn:oasis:names:tc:SAML:2.0:bindings:SOAP"
Location="https://example.com/nidp/saml2/soap" />
<md:AssertionIDRequestService
Binding="urn:oasis:names:tc:SAML:2.0:bindings:SOAP" Location="https://example.com/nidp/saml2/soap" />
<md:AssertionIDRequestService
Binding="urn:oasis:names:tc:SAML:2.0:bindings:URI" Location="https://example.com/nidp/saml2/assertion" />
</md:AttributeAuthorityDescriptor>
<md:IDPSSODescriptor ID="id5dNezhGwQ3I1nafN2lvcCnG0hFg"
protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
<md:KeyDescriptor use="signing">
<ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:X509Data>
<ds:X509Certificate>
gjvbdgjdbgjdbgjdgbjkdgbjkdgbjkdgbkdgb
</ds:X509Certificate>
</ds:X509Data>
</ds:KeyInfo>
<md:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc" />
</md:KeyDescriptor>
<md:KeyDescriptor use="encryption">
<ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:X509Data>
<ds:X509Certificate>
gjvbdgjdbgjdbgjdgbjkdgbjkdgbjkdgbkdgb
</ds:X509Certificate>
</ds:X509Data>
</ds:KeyInfo>
<md:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes128-cbc" />
</md:KeyDescriptor>
<md:ArtifactResolutionService
Binding="urn:oasis:names:tc:SAML:2.0:bindings:SOAP" Location="https://example.com/nidp/saml2/soap"
index="0" isDefault="true" />
<md:SingleLogoutService
Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://example.com/nidp/saml2/slo"
ResponseLocation="https://example.com/nidp/saml2/slo_return" />
<md:SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:SOAP"
Location="https://example.com/nidp/saml2/soap" />
<md:SingleLogoutService
Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect"
Location="https://example.com/nidp/saml2/slo"
ResponseLocation="https://example.com/nidp/saml2/slo_return" />
<md:ManageNameIDService Binding="urn:oasis:names:tc:SAML:2.0:bindings:SOAP"
Location="https://example.com/nidp/saml2/soap" />
<md:ManageNameIDService
Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://example.com/nidp/saml2/rni"
ResponseLocation="https://example.com/nidp/saml2/rni_return" />
<md:ManageNameIDService
Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect"
Location="https://example.com/nidp/saml2/rni"
ResponseLocation="https://example.com/nidp/saml2/rni_return" />
<md:NameIDFormat>urn:oasis:names:tc:SAML:2.0:nameid-format:persistent
</md:NameIDFormat>
<md:NameIDFormat>urn:oasis:names:tc:SAML:2.0:nameid-format:transient
</md:NameIDFormat>
<md:SingleSignOnService
Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://example.com/nidp/saml2/sso" />
<md:SingleSignOnService
Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect"
Location="https://example.com/nidp/saml2/sso" />
<md:NameIDMappingService Binding="urn:oasis:names:tc:SAML:2.0:bindings:SOAP"
Location="https://example.com/nidp/saml2/soap" />
</md:IDPSSODescriptor>
<md:SPSSODescriptor ID="idit9RFI3qQPIpRJhkjqQawKkdOMk"
protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
<md:KeyDescriptor use="signing">
<ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:X509Data>
<ds:X509Certificate>
gjvbdgjdbgjdbgjdgbjkdgbjkdgbjkdgbkdgb
</ds:X509Certificate>
</ds:X509Data>
</ds:KeyInfo>
<md:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc" />
</md:KeyDescriptor>
<md:KeyDescriptor use="encryption">
<ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:X509Data>
<ds:X509Certificate>
gjvbdgjdbgjdbgjdgbjkdgbjkdgbjkdgbkdgb
</ds:X509Certificate>
</ds:X509Data>
</ds:KeyInfo>
<md:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes128-cbc" />
</md:KeyDescriptor>
<md:ArtifactResolutionService
Binding="urn:oasis:names:tc:SAML:2.0:bindings:SOAP" Location="https://example.com/nidp/saml2/spsoap"
index="0" isDefault="true" />
<md:SingleLogoutService
Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://example.com/nidp/saml2/spslo"
ResponseLocation="https://example.com/nidp/saml2/spslo_return" />
<md:SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:SOAP"
Location="https://example.com/nidp/saml2/spsoap" />
<md:SingleLogoutService
Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect"
Location="https://example.com/nidp/saml2/spslo"
ResponseLocation="https://example.com/nidp/saml2/spslo_return" />
<md:ManageNameIDService Binding="urn:oasis:names:tc:SAML:2.0:bindings:SOAP"
Location="https://example.com/nidp/saml2/spsoap" />
<md:ManageNameIDService
Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://example.com/nidp/saml2/sprni"
ResponseLocation="https://example.com/nidp/saml2/sprni_return" />
<md:ManageNameIDService
Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect"
Location="https://example.com/nidp/saml2/sprni"
ResponseLocation="https://example.com/nidp/saml2/sprni_return" />
<md:NameIDFormat>urn:oasis:names:tc:SAML:2.0:nameid-format:persistent
</md:NameIDFormat>
<md:NameIDFormat>urn:oasis:names:tc:SAML:2.0:nameid-format:transient
</md:NameIDFormat>
<md:AssertionConsumerService
Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Artifact"
Location="https://example.com/nidp/saml2/spassertion_consumer"
index="2" />
<md:AssertionConsumerService
Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect"
Location="https://example.com/nidp/saml2/spassertion_consumer"
index="1" />
<md:AssertionConsumerService
Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
Location="https://example.com/nidp/saml2/spassertion_consumer"
index="0" isDefault="true" />
</md:SPSSODescriptor>
<md:Organization>
<md:OrganizationName xml:lang="en">Preferred
Company</md:OrganizationName>
<md:OrganizationDisplayName xml:lang="en">Preferred
Company</md:OrganizationDisplayName>
<md:OrganizationURL xml:lang="en">www.bubu.com
</md:OrganizationURL>
</md:Organization>
<md:ContactPerson contactType="administrative">
<md:Company> Company</md:Company>
<md:GivenName>vawani</md:GivenName>
<md:SurName>vawani</md:SurName>
<md:EmailAddress>vawani#bubu.com</md:EmailAddress>
<md:TelephoneNumber>xxxxxx</md:TelephoneNumber>
</md:ContactPerson>
</md:EntityDescriptor>
Your IDP metadata is signed. Perhaps it's not imported due to failure during signature validation. If this is the case you can either re-configure Spring SAML to skip the signature validation, add the certificate used to sign metadata to your samlKeystore or simply remove the signature from the metadata xml.