...
RQ messages, specifically within Order creation/servicing flows, should include the identification of the Seller and Carrier (optional could also include participants, such as aggregators) Distribution Chain, with the exception of AirShoppingRQ (which does not require Carrier, as it can be used for anonymous shopping across multiple airlines). Ordinal values should begin with “1”.
Currency codes should always be present against any element containing a monetary amount.
All monetary amounts should reflect the number of decimal precision as enforced by Resolution 024d.
When there is a need to associate an infant on lap with its parent, the PaxRefID element must be used in the correct direction, i.e. the infant must reference the parent (https://retailing.iata.org/tools/xsd_viewer/21.3.4/IATA_AirShoppingRS/?xpath=%2FIATA_AirShoppingRS%2FResponse%2FDataLists%2FPaxList%2FPax%2FPaxRefID).
Element “IncludedInd” is not to be used under ServiceCriteria, as the PrefLevel element supersedes it (https://retailing.iata.org/tools/xsd_viewer/21.3.4/IATA_AirShoppingRQ/?xpath=%2FIATA_AirShoppingRQ%2FRequest%2FOfferCriteria%2FServiceCriteria%2FIncludeInd).
Mandatory elements must contain values, despite schema-validation allowing them to remain empty. This best practice should also be extended to all optional elements - elements without values (empty elements) should not be included in the XML payload.
Departure and Arrival times in flight segment and flight leg details should not contain timezone offsets (must be in local times only). All other timestamps should, however, specify timezones a timezone, specifically using only UTC (e.g. LastModifiedDateTime, PaymentCommitmentDateTime, OfferExpirationTimeLimitDateTime…). See Reference to Times for more details.
...
Within Offers (excluding a-la-carte Offers), there should always be at least one OfferItem marked with the MandatoryInd=true. Absence of this element implies the OfferItem is optional (same as using MandatoryInd=false).
When defining rules regarding baggage allowance by weight, the TotalMaximumWeightMeasure element should also be populated (e.g. https://retailing.iata.org/tools/xsd_viewer/21.3.4/IATA_AirShoppingRS/?xpath=%2FIATA_AirShoppingRS%2FResponse%2FDataLists%2FBaggageAllowanceList%2FBaggageAllowance%2FWeightAllowance%2FTotalMaximumWeightMeasure).
Total Price at Offer-level should not be used in shopping responses (e.g. https://retailing.iata.org/tools/xsd_viewer/21.3.4/IATA_AirShoppingRS/?xpath=%2FIATA_AirShoppingRS%2FResponse%2FOffersGroup%2FCarrierOffers%2FOffer%2FTotalPrice or https://retailing.iata.org/tools/xsd_viewer/21.3.4/IATA_OrderReshopRS/?xpath=%2FIATA_OrderReshopRS%2FResponse%2FReshopResults%2FReshopOffers%2FOffer%2FTotalPrice).
There are two elements where birthdate is mentioned in Datalists:
The first element is to be used only in case of anonymous shopping, while the latter is to be used once the passenger data is communicated.
The same rules apply to the elements
/IATA_AirShoppingRQ/Request/PaxList/Pax/CitizenshipCountryCode and
/IATA_AirShoppingRQ/Request/PaxList/Pax/IdentityDoc/CitizenshipCountryCode
...