I'm integrating the sabre web services and I want to use CreatePassengerNameRecordRQ instead of EnhancedAirBookRQ and PassengerDetailsRQ so I made the following request (including AirBook, AirPrice, PostProcessing, (TravelItineraryAddInfo-to add customer information))
<CreatePassengerNameRecordRQ version="2.0.0" xmlns="http://services.sabre.com/sp/reservation/v2" haltOnAirPriceError="false" targetCity="AAAA">
<AirBook>
<HaltOnStatus Code="NO" />
<HaltOnStatus Code="NN" />
<HaltOnStatus Code="UC" />
<HaltOnStatus Code="US" />
<OriginDestinationInformation>
<FlightSegment DepartureDateTime="2018-02-15T08:00:00" ArrivalDateTime="2018-02-15T09:00:00" FlightNumber="651" NumberInParty="2" ResBookDesigCode="Y" Status="NN">
<DestinationLocation LocationCode="LHE" />
<MarketingAirline Code="PK" FlightNumber="651" />
<OriginLocation LocationCode="ISB" />
</FlightSegment>
<FlightSegment DepartureDateTime="2018-02-20T06:00:00" ArrivalDateTime="2018-02-20T07:00:00" FlightNumber="650" NumberInParty="2" ResBookDesigCode="Y" Status="NN">
<DestinationLocation LocationCode="ISB" />
<MarketingAirline Code="PK" FlightNumber="650" />
<OriginLocation LocationCode="LHE" />
</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>
<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>
<PostProcessing RedisplayReservation="true" >
<EndTransactionRQ>
<EndTransaction Ind="true"/>
<Source ReceivedFrom=" TESTING"/>
</EndTransactionRQ>
</PostProcessing>
</CreatePassengerNameRecordRQ>
But when I post this request, the response returned said Invalid content was found starting with element 'TravelItineraryAddInfo':
<soap-env:Fault>
<faultcode>soap-env:Client</faultcode>
<faultstring>Message validation failed. Errors: [cvc-complex-type.2.4.a: Invalid content was found starting with element 'TravelItineraryAddInfo'. One of '{"http://services.sabre.com/sp/reservation/v2":AirTax, "http://services.sabre.com/sp/reservation/v2":MiscSegment, "http://services.sabre.com/sp/reservation/v2":SpecialReqDetails, "http://services.sabre.com/sp/reservation/v2":PostProcessing}' is expected.cvc-complex-type.2.4.a: Invalid content was found starting with element 'EndTransactionRQ'. One of '{"http://services.sabre.com/sp/reservation/v2":ARUNK, "http://services.sabre.com/sp/reservation/v2":QueuePlace, "http://services.sabre.com/sp/reservation/v2":EndTransaction}' is expected.]</faultstring>
<detail>
<ApplicationResults xmlns="http://services.sabre.com/STL_Payload/v02_01" status="NotProcessed">
<Error type="Validation" timeStamp="2018-02-06T02:47:20.366-06:00">
<SystemSpecificResults>
<Message code="ERR.SP.CLIENT.VALIDATION_FAILED">Message validation failed. Errors: [cvc-complex-type.2.4.a: Invalid content was found starting with element 'TravelItineraryAddInfo'. One of '{"http://services.sabre.com/sp/reservation/v2":AirTax, "http://services.sabre.com/sp/reservation/v2":MiscSegment, "http://services.sabre.com/sp/reservation/v2":SpecialReqDetails, "http://services.sabre.com/sp/reservation/v2":PostProcessing}' is expected.cvc-complex-type.2.4.a: Invalid content was found starting with element 'EndTransactionRQ'. One of '{"http://services.sabre.com/sp/reservation/v2":ARUNK, "http://services.sabre.com/sp/reservation/v2":QueuePlace, "http://services.sabre.com/sp/reservation/v2":EndTransaction}' is expected.]</Message>
</SystemSpecificResults>
</Error>
</ApplicationResults>
</detail>
</soap-env:Fault>
CustomerInfo
.TravelItineraryAddInfo
should be first, before AirBook
.PostProcessing
, you should have EndTransaction
and not EndTransactionRQ
.<EndTransaction Ind="true"/>
is not expected, as the service creates the PNR by default.XML with corrected elements, you will start having other errors, the targetCity
element containg an invalid PCC.
<CreatePassengerNameRecordRQ version="2.0.0" xmlns="http://services.sabre.com/sp/reservation/v2" haltOnAirPriceError="false" targetCity="AAAA">
<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>
<HaltOnStatus Code="NO" />
<HaltOnStatus Code="NN" />
<HaltOnStatus Code="UC" />
<HaltOnStatus Code="US" />
<OriginDestinationInformation>
<FlightSegment DepartureDateTime="2018-02-15T08:00:00" ArrivalDateTime="2018-02-15T09:00:00" FlightNumber="651" NumberInParty="2" ResBookDesigCode="Y" Status="NN">
<DestinationLocation LocationCode="LHE" />
<MarketingAirline Code="PK" FlightNumber="651" />
<OriginLocation LocationCode="ISB" />
</FlightSegment>
<FlightSegment DepartureDateTime="2018-02-20T06:00:00" ArrivalDateTime="2018-02-20T07:00:00" FlightNumber="650" NumberInParty="2" ResBookDesigCode="Y" Status="NN">
<DestinationLocation LocationCode="ISB" />
<MarketingAirline Code="PK" FlightNumber="650" />
<OriginLocation LocationCode="LHE" />
</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>