javaxmlsoapsabre

Unable to retrieve data from Sabre PriceQuoteServicesRQ 4.10 SOAP API: XML request schema validation failed: PriceQuoteInfo element is not complete


I have a problem when trying to retrieve data from Manage Price Quote Details (PriceQuoteServicesRQ) 4.10 Sabre SOAP API.

I generated Java classes using the WSDL from Sabre website (https://developer.sabre.com/docs/soap_apis/air/fulfill/manage_price_quote_details/resources).

I am constructing my request object in a following way:

      ReservationTypeShort reservation = new ReservationTypeShort();
      reservation.setValue("YEZUYS");

      PriceQuoteInfoSearchParameters info = new PriceQuoteInfoSearchParameters();
      info.setReservation(reservation);

      PriceQuoteSearchParameters searchParameters = new PriceQuoteSearchParameters();
      searchParameters.getPriceQuoteInfo().add(info);
      searchParameters.setResultType(StringResultType.S);

      GetPriceQuoteRQ req = new GetPriceQuoteRQ();
      req.setSearchParameters(searchParameters);
      req.setVersion("4.1.0");

I pretty-printed the object and this is what I got:

      "priceQuoteInfo" : [ {
      "reservation" : {
        "value" : "YEZUYS",
        "createDate" : null
      },
      "status" : [ ],
      "type" : null,
      "priceQuote" : [ ],
      "travelItinerary" : null
    } ],

So according to their documentation: sabre docs I am supplying all fields that are necessary, however it still doesn't work for me.

Did anybody else had the same problem? What am I missing/what am I doing wrong?

This is the error message I am getting:

XML request schema validation failed: PriceQuoteInfo element is not complete. One of the following fields: Status, Type, PriceQuote, TravelItinerary should be used. Please amend your request and try again.

What I have tried so far?

I intercepted the XML body:

      <ns5:GetPriceQuoteRQ version="4.1.0">
         <ns5:SearchParameters resultType="S">
            <ns5:PriceQuoteInfo>
               <ns5:Reservation>YEZUYS</ns5:Reservation>
            </ns5:PriceQuoteInfo>
         </ns5:SearchParameters>
      </ns5:GetPriceQuoteRQ>

Solution

  • I was missing an empty element <PriceQuote/> in my request.

    It can be added by doing:

    PriceQuoteInfoSearchParameters info = new PriceQuoteInfoSearchParameters();
    info.setReservation(reservation);
    info.getPriceQuote().add(new PriceQuoteSearch());