Search code examples
xmlapisoapsabre

Sabre CreatePassengerNameRecordRQ


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>
  1. kindly tell me what parameter I'm missing or what should I do to add customer information in the CreatePassengerNameRecordRQ too.
  2. please verify if this request is valid or should I need to add more information to make it right. Thanks.
  3. Pleae tell me where I can find the whole documentation of CreatePassengerNameRecordRQ

Solution

    1. I am not sure what you mean by "to add customer information", you are adding an adult, child and infant in the node CustomerInfo.
    2. The request you've pasted is not valid, because the order of elements is a bit different and you have some extra stuff.
      a. TravelItineraryAddInfo should be first, before AirBook.
      b. Inside PostProcessing, you should have EndTransaction and not EndTransactionRQ.
      c. <EndTransaction Ind="true"/> is not expected, as the service creates the PNR by default.
    3. Link: https://developer.sabre.com/docs/read/soap_apis/air/book/create_passenger_name_record/resources

    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>