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.
Related
I have a sabre to sabre api request in which I need to create the passenger name record without using the passport information . But when I do the request it gives the following error
<TYPE>BusinessLogic</TYPE><TIMESTAMP>2018-06-04T11:32:33.948-05:00</TIMESTAMP><SYSTEMSPECIFICRESULTS><MESSAGE><content>INVALID DATE OF BIRTH - USE DDMMMYY</content><CODE>ERR.SWS.HOST.ERROR_IN_RESPONSE</CODE></MESSAGE></SYSTEMSPECIFICRESULTS>
The date of birth format works fine when I use the passport information while creating the passenger name record . Below is my request sample .
<PassengerDetailsRQ xmlns="http://services.sabre.com/sp/pd/v3_3" version="3.3.0" IgnoreOnError="true" HaltOnError="true">
<PostProcessing IgnoreAfter="true" RedisplayReservation="true">
<EndTransactionRQ>
<EndTransaction Ind="true"/>
<Source ReceivedFrom="Lorem ipsum"/>
</EndTransactionRQ>
</PostProcessing>
<PriceQuoteInfo xmlns="http://services.sabre.com/sp/pd/v3_3">
<Link NameNumber="1.1" Record="1"/>
<Link NameNumber="2.1" Record="2"/>
<Link NameNumber="3.1" Record="3"/>
</PriceQuoteInfo>
<SpecialReqDetails xmlns="http://services.sabre.com/sp/pd/v3_3">
<AddRemarkRQ>
<RemarkInfo>
<FOP_Remark Type="CASH"/>
</RemarkInfo>
</AddRemarkRQ>
<SpecialServiceRQ>
<SpecialServiceInfo>
<SecureFlight SegmentNumber="A">
<PersonName DateOfBirth="1996-02-23" Gender="M" NameNumber="1.1">
<GivenName>Edna</GivenName>
<Surname>Lindsey</Surname>
</PersonName>
<VendorPrefs>
<Airline Hosted="false"/>
</VendorPrefs>
</SecureFlight>
<SecureFlight SegmentNumber="A">
<PersonName DateOfBirth="2015-08-14" Gender="F" NameNumber="2.1">
<GivenName>Ada</GivenName>
<Surname>Hughes</Surname>
</PersonName>
</SecureFlight>
<SecureFlight SegmentNumber="A">
<PersonName DateOfBirth="2017-04-11" Gender="M" NameNumber="3.1">
<GivenName>Lena</GivenName>
<Surname>Pope</Surname>
</PersonName>
</SecureFlight>
<Service SegmentNumber="A" SSR_Code="CHLD">
<PersonName NameNumber="2.1"/>
<Text>Hughes/Ada/14AUG15</Text>
<VendorPrefs>
<Airline Hosted="false"/>
</VendorPrefs>
</Service>
<Service SegmentNumber="A" SSR_Code="INFT">
<PersonName NameNumber="1.1"/>
<Text>Pope/Lena/11APR17</Text>
<VendorPrefs>
<Airline Hosted="false"/>
</VendorPrefs>
</Service>
<Service SSR_Code="OSI">
<PersonName NameNumber="1.1"/>
<Text>ID CARD Number 223341</Text>
<VendorPrefs>
<Airline Hosted="false"/>
</VendorPrefs>
</Service>
<Service SSR_Code="OSI">
<PersonName NameNumber="2.1"/>
<Text>ID CARD Number 2211</Text>
<VendorPrefs>
<Airline Hosted="false"/>
</VendorPrefs>
</Service>
<Service SSR_Code="OSI">
<PersonName NameNumber="3.1"/>
<Text>ID CARD Number 223343</Text>
<VendorPrefs>
<Airline Hosted="false"/>
</VendorPrefs>
</Service>
</SpecialServiceInfo>
</SpecialServiceRQ>
</SpecialReqDetails>
<TravelItineraryAddInfoRQ xmlns="http://services.sabre.com/sp/pd/v3_3">
<AgencyInfo>
<Address>
<AddressLine>HIMAL REISEN</AddressLine>
<CityName>Kathmandu</CityName>
<CountryCode>NP</CountryCode>
<PostalCode>00977</PostalCode>
<StreetNmbr>12</StreetNmbr>
<VendorPrefs>
<Airline Hosted="false"/>
</VendorPrefs>
</Address>
<Ticketing TicketType="7TAW"/>
</AgencyInfo>
<CustomerInfo>
<ContactNumbers>
<ContactNumber NameNumber="1.1" Phone="4118125712" PhoneUseType="H"/>
</ContactNumbers>
<Email Address="zowo#host.test" NameNumber="1.1"/>
<PersonName NameNumber="1.1" Infant="false" PassengerType="ADT">
<GivenName>Edna</GivenName>
<Surname>Lindsey</Surname>
</PersonName>
<PersonName NameNumber="2.1" Infant="false" PassengerType="CNN" NameReference="C02">
<GivenName>Ada</GivenName>
<Surname>Hughes</Surname>
</PersonName>
<PersonName NameNumber="3.1" Infant="true" PassengerType="INF" NameReference="I13">
<GivenName>Lena</GivenName>
<Surname>Pope</Surname>
</PersonName>
</CustomerInfo>
</TravelItineraryAddInfoRQ>
</PassengerDetailsRQ>
Can anyone help me with this problem . Thanks in advance .
There are 2 other issues with the request other than the one you've got, all in the SpecialServiceInfo element.
1.The one that you got, INVALID DATE OF BIRTH - USE DDMMMYY, is because the Text element contains information that is not expected for SSR_Code="CHLD". It should only contain the date of birth and not the name, so 14AUG15 instead of Hughes/Ada/14AUG15.
<Service SegmentNumber="A" SSR_Code="CHLD">
<PersonName NameNumber="2.1"/>
<Text>Hughes/Ada/14AUG15</Text>
<VendorPrefs>
<Airline Hosted="false"/>
</VendorPrefs>
</Service>
2.Both the SSR_Code="OSI" and SecureFlight cannot be assigned to the infant NameNumber="3.1", they should be assigned to the adult NameNumber="1.1". This would return something like: CANNOT ASSOC TO INFANT NAME
<Service SSR_Code="OSI">
<PersonName NameNumber="3.1"/>
<Text>ID CARD Number 223343</Text>
<VendorPrefs>
<Airline Hosted="false"/>
</VendorPrefs>
</Service>
3.For infants, the geneder should be MI and FI, instead of M and F.
<SecureFlight SegmentNumber="A">
<PersonName DateOfBirth="2017-04-11" Gender="M" NameNumber="3.1">
<GivenName>Lena</GivenName>
<Surname>Pope</Surname>
</PersonName>
</SecureFlight>
You may check format finder for more info:
Child SSR:
https://formatfinder.sabre.com/Content/PassengerNameRecordPNR/PassengerNameRecordFields/SSRandOSIFieldsinPNR/SendanSSR.aspx?ItemID=316450AF736A45EC84616AE0D7A7B43B
Secure Flight Formats > Format Definitions:
https://formatfinder.sabre.com/Content/PassengerNameRecordPNR/TSAPassengerDocumentationSecureFlightAPISPCTC/SecureFlightTransportationSafetyAdministrationTSADocumentation.aspx?ItemID=d6e613fe6d5c4255beb7c70bd56fb4fe
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">
When I try to create PNR with child and or infant passengers I get this error, however when it is Adult only it works fine. I've read their documentation I don't know what I did wrong. Please help.
Payload :
<PassengerDetailsRQ version="3.2.0" HaltOnError="true" IgnoreOnError="false" xmlns="http://services.sabre.com/sp/pd/v3_2">
<PostProcessing IgnoreAfter="false" RedisplayReservation="true" >
<EndTransactionRQ>
<EndTransaction Ind="true" ></EndTransaction>
<Source ReceivedFrom="TEST" ></Source>
</EndTransactionRQ>
</PostProcessing>
<PriceQuoteInfo>
<Link NameNumber="1.1" Record="1" ></Link>
<Link NameNumber="2.1" Record="1" ></Link>
<Link NameNumber="3.1" Record="1" ></Link>
</PriceQuoteInfo>
<SpecialReqDetails>
<SpecialServiceRQ>
<SpecialServiceInfo>
<SecureFlight SegmentNumber="A" >
<PersonName DateOfBirth="1980-01-01" Gender="M" NameNumber="1.1" >
<GivenName>JOHN</GivenName>
<Surname>DOE</Surname>
</PersonName>
</SecureFlight>
<SecureFlight SegmentNumber="A" >
<PersonName DateOfBirth="1980-03-01" Gender="F" NameNumber="2.1" >
<GivenName>JANE</GivenName>
<Surname>DOE</Surname>
</PersonName>
</SecureFlight>
<SecureFlight SegmentNumber="A" >
<PersonName DateOfBirth="2006-03-01" Gender="M" NameNumber="3.1" >
<GivenName>CHILD</GivenName>
<Surname>DOE</Surname>
</PersonName>
</SecureFlight>
</SpecialServiceInfo>
</SpecialServiceRQ>
</SpecialReqDetails>
<TravelItineraryAddInfoRQ>
<AgencyInfo>
<Address>
<AddressLine>address here</AddressLine>
<CityName>city here</CityName>
<CountryCode>PH</CountryCode>
<PostalCode>postal code here</PostalCode>
<StreetNmbr>street number here</StreetNmbr>
</Address>
<Ticketing TicketType="7T-" ></Ticketing>
</AgencyInfo>
<CustomerInfo>
<ContactNumbers>
<ContactNumber Phone="817-555-1212" PhoneUseType="A" ></ContactNumber>
</ContactNumbers>
<Email Address="test.email#someemail.com" ShortText="ABC123" Type="CC" ></Email>
<PersonName Infant="false" NameNumber="1.1" PassengerType="ADT" >
<GivenName>JOHN</GivenName>
<Surname>DOE</Surname>
</PersonName>
<PersonName Infant="false" NameNumber="2.1" PassengerType="ADT" >
<GivenName>JANE</GivenName>
<Surname>DOE</Surname>
</PersonName>
<PersonName Infant="false" NameNumber="3.1" NameReference="C10" PassengerType="CNN" >
<GivenName>CHILD</GivenName>
<Surname>DOE</Surname>
</PersonName>
</CustomerInfo>
</TravelItineraryAddInfoRQ>
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'>webservices.sabre.com</eb:PartyId>
</eb:From>
<eb:To>
<eb:PartyId eb:type='URI'>XXXXXXXXXXXXXXXXXXX</eb:PartyId>
</eb:To>
<eb:CPAId>XXXX</eb:CPAId>
<eb:ConversationId>XXXXXXXXXXXXXX</eb:ConversationId>
<eb:Service>PassengerDetailsRQ</eb:Service>
<eb:Action>PassengerDetailsRS</eb:Action>
<eb:MessageData>
<eb:MessageId>250361059799101760</eb:MessageId>
<eb:Timestamp>2016-07-18T01:39:41</eb:Timestamp>
<eb:RefToMessageId>XXXXXXXXXXXXXXXXXXXXXX</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'>XXXXXXXXXXXXX</wsse:BinarySecurityToken>
</wsse:Security>
</soap-env:Header>
<soap-env:Body>
<PassengerDetailsRS xmlns='http://services.sabre.com/sp/pd/v3_2'>
<ApplicationResults xmlns='http://services.sabre.com/STL_Payload/v02_01' status='NotProcessed'>
<Error type='BusinessLogic' timeStamp='2016-07-17T20:39:41.169-05:00'>
<SystemSpecificResults>
<Message code='ERR.SWS.HOST.ERROR_IN_RESPONSE'>CHILD DETAILS REQUIRED IN SSR - ENTER 3CHLD/...</Message>
</SystemSpecificResults>
</Error>
</ApplicationResults>
</PassengerDetailsRS>
</soap-env:Body>
</soap-env:Envelope>
Payload with infant :
<PassengerDetailsRQ version="3.2.0" HaltOnError="true" IgnoreOnError="false" xmlns="http://services.sabre.com/sp/pd/v3_2">
<PostProcessing IgnoreAfter="false" RedisplayReservation="true" >
<EndTransactionRQ>
<EndTransaction Ind="true" ></EndTransaction>
<Source ReceivedFrom="TEST" ></Source>
</EndTransactionRQ>
</PostProcessing>
<PriceQuoteInfo>
<Link NameNumber="1.1" Record="1" ></Link>
<Link NameNumber="2.1" Record="1" ></Link>
<Link NameNumber="3.1" Record="2" ></Link>
<Link NameNumber="4.1" Record="3" ></Link>
</PriceQuoteInfo>
<SpecialReqDetails>
<AddRemarkRQ>
<RemarkInfo>
<Remark Code="H" SegmentNumber="A" Type="General" >
<Text>TEXT</Text>
</Remark>
</RemarkInfo>
</AddRemarkRQ>
<SpecialServiceRQ>
<SpecialServiceInfo>
<SecureFlight SegmentNumber="A" >
<PersonName DateOfBirth="1980-01-01" Gender="M" NameNumber="1.1" >
<GivenName>JOHN</GivenName>
<Surname>DOE</Surname>
</PersonName>
</SecureFlight>
<SecureFlight SegmentNumber="A" >
<PersonName DateOfBirth="1980-03-01" Gender="F" NameNumber="2.1" >
<GivenName>JANE</GivenName>
<Surname>DOE</Surname>
</PersonName>
</SecureFlight>
<SecureFlight SegmentNumber="A" >
<PersonName DateOfBirth="2006-03-01" Gender="M" NameNumber="3.1" >
<GivenName>CHILD</GivenName>
<Surname>DOE</Surname>
</PersonName>
</SecureFlight>
<SecureFlight SegmentNumber="A" >
<PersonName DateOfBirth="2016-01-01" Gender="MI" NameNumber="4.1" >
<GivenName>INFANT</GivenName>
<Surname>DOE</Surname>
</PersonName>
</SecureFlight>
<Service SegmentNumber="A" SSR_Code="CHLD" >
<PersonName NameNumber="3.1" ></PersonName>
<Text>01MAR06</Text>
</Service>
<Service SegmentNumber="A" SSR_Code="INFT" >
<PersonName NameNumber="1.1" ></PersonName>
<Text>DOE/INFANT/01JAN16</Text>
</Service>
</SpecialServiceInfo>
</SpecialServiceRQ>
</SpecialReqDetails>
<TravelItineraryAddInfoRQ>
<AgencyInfo>
<Address>
<AddressLine>address here</AddressLine>
<CityName>city here</CityName>
<CountryCode>PH</CountryCode>
<PostalCode>postal code here</PostalCode>
<StreetNmbr>street number here</StreetNmbr>
</Address>
<Ticketing TicketType="7TAW" ></Ticketing>
</AgencyInfo>
<CustomerInfo>
<ContactNumbers>
<ContactNumber Phone="817-555-1212" PhoneUseType="A" ></ContactNumber>
</ContactNumbers>
<Email Address="test.email#someemail.com" ShortText="ABC123" Type="CC" ></Email>
<PersonName Infant="false" NameNumber="1.1" NameReference="A36" PassengerType="ADT" >
<GivenName>JOHN</GivenName>
<Surname>DOE</Surname>
</PersonName>
<PersonName Infant="false" NameNumber="2.1" NameReference="A36" PassengerType="ADT" >
<GivenName>JANE</GivenName>
<Surname>DOE</Surname>
</PersonName>
<PersonName Infant="false" NameNumber="3.1" NameReference="C10" PassengerType="CNN" >
<GivenName>CHILD</GivenName>
<Surname>DOE</Surname>
</PersonName>
<PersonName Infant="true" NameNumber="4.1" NameReference="I6" PassengerType="INF" >
<GivenName>INFANT</GivenName>
<Surname>DOE</Surname>
</PersonName>
</CustomerInfo>
</TravelItineraryAddInfoRQ>
Result with infant :
<PassengerDetailsRS xmlns='http://services.sabre.com/sp/pd/v3_2'>
<ApplicationResults xmlns='http://services.sabre.com/STL_Payload/v02_01' status='NotProcessed'>
<Error type='BusinessLogic' timeStamp='2016-07-20T10:53:30.328-05:00'>
<SystemSpecificResults>
<Message code='ERR.SWS.HOST.ERROR_IN_RESPONSE'>CANNOT ASSOC TO INFANT NAME</Message>
</SystemSpecificResults>
</Error>
</ApplicationResults>
</PassengerDetailsRS>
EnhancedAirBookRQ : http://pastebin.com/uZtbApR1
I will add some information that will helpful
1) When child present (CNN)
add SecureFlight segment
<SecureFlight SegmentNumber="A" >
<PersonName DateOfBirth="2007-05-01" Gender="F" NameNumber="2.1" >
<GivenName>CHILD</GivenName>
<Surname>TESTBOOKING</Surname>
</PersonName>
</SecureFlight>
`Add a SSR for child
<Service SSR_Code="CHLD">
<PersonName NameNumber="2.1"/>
<Text>01MAY07</Text>
</Service>
For SSR we need child DOB as shown in the exapmle
2) When INF( infant without seat/lap infant) present
add SecureFlight segment.
Make sure in this case as NameNumber use a ADT name number since infant is a lap infant
<SecureFlight SegmentNumber="A" >
<PersonName DateOfBirth="2017-01-20" Gender="M" NameNumber="1.1" >
<GivenName>INF</GivenName>
<Surname>TESTBOOKING</Surname>
</PersonName>
</SecureFlight>
`Add a SSR for child
<Service SSR_Code="INFT">
<PersonName NameNumber="1.1"/>
<Text>TESTBOOKING/INF/20JAN17</Text>
</Service>
For SSR we also need ADT NameNumber and for text it should be in this format
LASTNAME/FIRSTNAME/DATEOFBIRTH as in exapmle
3) When INS( infant with seat) present
add SecureFlight segment. Here we don't need adult NameNumber. but When create Customer Passenger use as Infant="false"
<SecureFlight SegmentNumber="A" >
<PersonName DateOfBirth="2017-01-20" Gender="M" NameNumber="3.1" >
<GivenName>INS</GivenName>
<Surname>TESTBOOKING</Surname>
</PersonName>
</SecureFlight>
`Add a SSR for child
<Service SSR_Code="INFT">
<PersonName NameNumber="3.1"/>
<Text>TESTBOOKING/INS/20JAN17/OS</Text>
</Service>
For SSR we also need ADT NameNumber and for text it should be in this format
LASTNAME/FIRSTNAME/DATEOFBIRTH/OS as in exapmle.
You need to change de PQ
<Link NameNumber="1.1" Record="1" ></Link>
<Link NameNumber="2.1" Record="1" ></Link>
<Link NameNumber="3.1" Record="2" ></Link>
You put Record="1" in all cases, but you have a child, so your NameNumber 3.1 needs to be associated to Record="2". If you dont do that you will have adt fare for all your passengers.
Edit:
Record="2" is not always for children but also could be for infant, for example if you have 1 ADT + 1 CNN (children) + 1 INF then you need this:
<Link NameNumber="1.1" Record="1" ></Link>
<Link NameNumber="2.1" Record="2" ></Link>
<Link NameNumber="3.1" Record="3" ></Link>
Where NameNumber 2.1 and Record 2 are the child passenger, and NameNumber=3 and record 3 are the infant passenger, BUT if you have 1 ADT + 1 INF, then you need:
<Link NameNumber="1.1" Record="1" ></Link>
<Link NameNumber="2.1" Record="2" ></Link>
And now the record 2 and namenumber 2.1 are for infant passenger.
PassengerDetailsRQ:
<soapenv:Body>
<PassengerDetailsRQ version="3.2.0" HaltOnError="true" IgnoreOnError="true">
<PostProcessing IgnoreAfter="false" RedisplayReservation="true">
<EndTransactionRQ>
<EndTransaction Ind="true"/>
<Source ReceivedFrom="TEST"/>
</EndTransactionRQ>
</PostProcessing>
<PriceQuoteInfo>
<Link NameNumber="1.1" Record="1"/>
<Link NameNumber="2.1" Record="2"/>
<Link NameNumber="3.1" Record="3"/>
</PriceQuoteInfo>
<SpecialReqDetails>
<AddRemarkRQ>
<RemarkInfo>
<Remark Code="H" SegmentNumber="1" Type="General">
<Text>TEXT</Text>
</Remark>
</RemarkInfo>
</AddRemarkRQ>
<SpecialServiceRQ>
<SpecialServiceInfo>
<SecureFlight SegmentNumber="A" >
<PersonName DateOfBirth="1980-01-01" Gender="M" NameNumber="1.1" >
<GivenName>JOHN</GivenName>
<Surname>DOE</Surname>
</PersonName>
</SecureFlight>
<SecureFlight SegmentNumber="A" >
<PersonName DateOfBirth="1980-03-01" Gender="F" NameNumber="2.1" >
<GivenName>CHILD</GivenName>
<Surname>DOE</Surname>
</PersonName>
</SecureFlight>
<SecureFlight SegmentNumber="A" >
<PersonName DateOfBirth="2006-03-01" Gender="MI" NameNumber="3.1" >
<GivenName>INFANT</GivenName>
<Surname>DOE</Surname>
</PersonName>
</SecureFlight>
<Service SSR_Code="INFT">
<PersonName NameNumber="1.1" />
<Text>DOE/INFANT/10OCT15</Text>
</Service>
</SpecialServiceInfo>
</SpecialServiceRQ>
</SpecialReqDetails>
<TravelItineraryAddInfoRQ>
<AgencyInfo>
<Address>
<AddressLine>address here</AddressLine>
<CityName>city here</CityName>
<CountryCode>PH</CountryCode>
<PostalCode>postal code here</PostalCode>
<StreetNmbr>street number here</StreetNmbr>
</Address>
<Ticketing TicketType="7T-" ></Ticketing>
</AgencyInfo>
<CustomerInfo>
<ContactNumbers>
<ContactNumber Phone="817-555-1212" PhoneUseType="A" ></ContactNumber>
<ContactNumber Phone="817-555-1212" PhoneUseType="H" ></ContactNumber>
</ContactNumbers>
<Email Address="test.email#someemail.com" NameNumber="1.1" />
<PersonName NameNumber="1.1" PassengerType="ADT" >
<GivenName>JOHN</GivenName>
<Surname>DOE</Surname>
</PersonName>
<PersonName NameNumber="2.1" PassengerType="CNN" >
<GivenName>CHILD</GivenName>
<Surname>DOE</Surname>
</PersonName>
<PersonName Infant="true" NameNumber="3.1" PassengerType="INF" >
<GivenName>INFANT</GivenName>
<Surname>DOE</Surname>
</PersonName>
</CustomerInfo>
</TravelItineraryAddInfoRQ>
</PassengerDetailsRQ>
</soapenv:Body>
You can add the special service 'CHLD' right after your last SecureFlight element (date of birth format should be DDMMMYY).
<SpecialReqDetails>
<SpecialServiceRQ>
<SpecialServiceInfo>
<SecureFlight SegmentNumber="A" >
<PersonName DateOfBirth="1980-01-01" Gender="M" NameNumber="1.1" >
<GivenName>JOHN</GivenName>
<Surname>DOE</Surname>
</PersonName>
</SecureFlight>
<SecureFlight SegmentNumber="A" >
<PersonName DateOfBirth="1980-03-01" Gender="F" NameNumber="2.1" >
<GivenName>JANE</GivenName>
<Surname>DOE</Surname>
</PersonName>
</SecureFlight>
<SecureFlight SegmentNumber="A" >
<PersonName DateOfBirth="2006-03-01" Gender="M" NameNumber="3.1" >
<GivenName>CHILD</GivenName>
<Surname>DOE</Surname>
</PersonName>
</SecureFlight>
<Service SSR_Code="CHLD">
<PersonName NameNumber="3.1"/>
<Text>20DEC80</Text>
</Service>
</SpecialServiceInfo>
</SpecialServiceRQ>
</SpecialReqDetails>