Skip to main content
The OTA_ProductDescriptiveInfoRS is an OTA response message used in the Excursions NBC (Notification‑Based Content) flow to deliver descriptive product metadata for a tour activity. It surfaces the Excursion identifier, the set of Products offered, and the available Service types.

Purpose

This response provides:
  • TourActivityID — unique identifier of the excursion.
  • Products — product options offered under the excursion (e.g., 15‑min vs 30‑min tour).
  • Services — service delivery types (e.g., ticket only, with pickup).
  • Descriptive text for display.

Structure – Root Element

<OTA_ProductDescriptiveInfoRS xmlns="http://www.opentravel.org/OTA/2003/05" Version="2008.1">
  ...
</OTA_ProductDescriptiveInfoRS>
Common Attributes
  • Version — OTA spec version (e.g., 2008.1).
  • xmlnshttp://www.opentravel.org/OTA/2003/05.

Structure - Core Elements

TourActivityDescriptiveInfo

Container of one or more tour activities returned in the response. The structure is similar to Hotel NBC.

TourActivityDescriptiveContent

Contains the retrieved service details.
<TourActivityDescriptiveContent TourActivityID="LESACE81AS" TourActivityName="Music Show" RPH="1">

Schedule

Displays the available schedules for the retrieved Tour Activity.
<Schedule>
    <Summary Start="09:30:00" Duration="PT8H"/>
</Schedule>

TourActivityCategory

Displays the category of the retrieved activity. See Activity Codes.
<TourActivityCategory CategoryCode="SE" CategoryName="Show Events" TypeCode="BP" TypeName="BaseProduct"/>

ProductInfo

Shows short descriptions for each unit (Code).
<ProductInfo Code="ST" CodeDetail="Standard Entrance">
	<Descriptions>
		<MultimediaDescriptions>
			<MultimediaDescription>
				<TextItems>
					<TextItem>
						<Description Language="EN">Entrance fee, Dinner, Souvenir brochure (drinks not included)</Description>
					</TextItem>
				</TextItems>
			</MultimediaDescription>
		</MultimediaDescriptions>
	</Descriptions>
</ProductInfo>

ServiceInfo

Short description of the available service types.
<ServiceInfo Code="TIC" CodeDetail="ticket only">
    <DescriptiveText>ticket only</DescriptiveText>
</ServiceInfo>

ZoneInfo

Describes the zones where the Tour Activity operates. RefPoints Zone information. Can be used in Search and Avail messages.
<RefPoints>
    <RefPoint Name="Country" RefPointName="Spain"/>
    <RefPoint Name="TurismDestinationName" RefPointName="Lanzarote"/>
    <RefPoint Name="Destination" RefPointName="Canarian Islands"/>
    <RefPoint Name="Region" RefPointName="Lanzarote"/>
    <RefPoint Name="Resort" RefPointName="Arrecife"/>
</RefPoints>
OperationTime Description of the pick up and drop off points for the services that include transfer.
<OperationTime SupplierProductCode="TB000000">
    <PickupDropoff LocationName="AESACE5UIO" OtherInfo="OTHERS" PickupInd="true" MeetingLocation="OTHERS / Intercambiador BUSES - CABILDO" DateTime="08:00:00" TimeOffset="90" Latitude="28.96227" Longitude="-13.54585"/>
    <PickupDropoff LocationName="AESACE5YBY" OtherInfo="OTHERS" PickupInd="true" MeetingLocation="OTHERS / Intercambiador BUSES - CABILDO" DateTime="08:00:00" TimeOffset="90" Latitude="28.958" Longitude="-13.55322"/>
    <PickupDropoff LocationName="AESACE6N66" OtherInfo="OTHERS" PickupInd="true" MeetingLocation="OTHERS / Intercambiador BUSES - CABILDO" DateTime="08:00:00" TimeOffset="90"/>
    <PickupDropoff LocationName="AESACE7EZG" OtherInfo="OTHERS" PickupInd="true" MeetingLocation="OTHERS / Intercambiador BUSES - CABILDO" DateTime="08:00:00" TimeOffset="90"/>
    <PickupDropoff LocationName="AESACE8TDK" OtherInfo="OTHERS" PickupInd="true" MeetingLocation="OTHERS / Intercambiador BUSES - CABILDO" DateTime="08:00:00" TimeOffset="90" Latitude="28.95898" Longitude="-13.55373"/>
    <PickupDropoff LocationName="AESACE97T0" OtherInfo="OTHERS" PickupInd="true" MeetingLocation="OTHERS / Intercambiador BUSES - CABILDO" DateTime="08:00:00" TimeOffset="90" Latitude="28.95512" Longitude="-13.58238"/>
</OperationTime>

Descriptions

Includes a long description in the requested language if available.
<Descriptions>
	<DescriptiveText>This long-running comedy variety show has been entertaining audiences for years with its unique blend of humor, music, and theatrical flair.
Hosted in its original venue, the show features a talented cast performing lively dinner performances filled with laughter, music, and unforgettable parodies of iconic stars and films.
It's a night of fun for all ages, promising non-stop entertainment, catchy tunes, and hilarious sketches that keep the audience engaged from start to finish.
Even those who think this type of show isn’t for them often leave saying it was the highlight of their trip.
Tickets typically include a three-course meal along with keepsakes to remember the evening.</DescriptiveText>
</Descriptions>

Position

Geo location of the product.
<Position Latitude="30.0" Longitude="-15.0"/>

Services

Shows different facts of the retrieved product.
<Service CodeDetail="EX_DIFFIC|EX_DIF_1">
    <DescriptiveText>Difficulty|Easy|</DescriptiveText>
</Service>
<Service CodeDetail="EXCURSION|EX_ICONF">
    <DescriptiveText>Key Details|Instant Confirmation|</DescriptiveText>
</Service>
Service@CodeDetail encodes a hierarchy using line breaks (pipes in textual examples). Related values can appear under Features/Feature@CodeDetail with a DescriptiveText value. Duration windows may be modeled with OperationSchedules/OperationSchedule.

MultimediaDescriptions

See Hotel Multimedia Descriptions.

ContactInfos

See Hotel Contact Infos.

Complete example

NBC Response
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<OTA_ProductDescriptiveInfoRS
    xmlns="http://www.opentravel.org/OTA/2003/05" Version="2016.2" TransactionIdentifier="1-1/1">
    <Success/>
    <ProductDescriptiveContents>
        <TourActivityDescriptiveContent TourActivityID="LESACE81AS" TourActivityName="Music Show" RPH="1">
            <TourActivityInfo>
                <Schedule>
                    <Summary Start="19:30:00" Duration="PT5H"/>
                </Schedule>
                <CategoryCodes>
                    <TourActivityCategory CategoryCode="SE" CategoryName="Show Events" TypeCode="BP" TypeName="BaseProduct"/>
                    <ProductInfo Code="ST" CodeDetail="Standard Entrance">
                        <Descriptions>
                            <MultimediaDescriptions>
                                <MultimediaDescription>
                                    <TextItems>
                                        <TextItem>
                                            <Description Language="EN">Entrance fee, Dinner, Souvenir brochure (drinks not included)
</Description>
                                        </TextItem>
                                    </TextItems>
                                </MultimediaDescription>
                            </MultimediaDescriptions>
                        </Descriptions>
                    </ProductInfo>
                    <ServiceInfo Code="TIC" CodeDetail="ticket only">
                        <DescriptiveText>ticket only</DescriptiveText>
                    </ServiceInfo>
                    <ServiceInfo Code="TRF" CodeDetail="incl. pickUp &amp; dropOff">
                        <DescriptiveText>incl. pickUp &amp; dropOff</DescriptiveText>
                    </ServiceInfo>
                    <ZoneInfo Code="A">
                        <SubZoneInfo Code="1006CO">
                            <RefPoints>
                                <RefPoint Name="Country" RefPointName="Spain"/>
                                <RefPoint Name="TurismDestinationName" RefPointName="Lanzarote"/>
                                <RefPoint Name="Destination" RefPointName="Canarian Islands"/>
                                <RefPoint Name="Region" RefPointName="Lanzarote"/>
                                <RefPoint Name="Resort" RefPointName="Costa Teguise"/>
                            </RefPoints>
                            <OperationTime>
                                <PickupDropoff LocationName="AESACE5UA4" OtherInfo="NEARESTBUSSTOP" PickupInd="true" MeetingLocation="NEARESTBUSSTOP / NearestBusStop" DateTime="18:55:00" TimeOffset="35" Latitude="28.9907" Longitude="-13.50315"/>
                                <PickupDropoff LocationName="AESACE5UCK" OtherInfo="HOTELENTRANCE" PickupInd="true" MeetingLocation="HOTELENTRANCE / HotelEntrance" DateTime="18:55:00" TimeOffset="35" Latitude="28.98955" Longitude="-13.50783"/>
                                <PickupDropoff LocationName="AMTSES0073" OtherInfo="HOTELENTRANCE" PickupInd="true" MeetingLocation="HOTELENTRANCE / HotelEntrance" DateTime="18:50:00" TimeOffset="40" Latitude="29.00172" Longitude="-13.48802"/>
                                <PickupDropoff LocationName="AMTSES0075" OtherInfo="NEARESTBUSSTOP" PickupInd="true" MeetingLocation="NEARESTBUSSTOP / NearestBusStop" DateTime="18:55:00" TimeOffset="35" Latitude="28.99431" Longitude="-13.48977"/>
                                <PickupDropoff LocationName="AMTSES0079" OtherInfo="HOTELENTRANCE" PickupInd="true" MeetingLocation="HOTELENTRANCE / HotelEntrance" DateTime="18:30:00" TimeOffset="60" Latitude="29.011" Longitude="-13.4887"/>
                                <PickupDropoff LocationName="AMTSES0081" OtherInfo="NEARESTBUSSTOP" PickupInd="true" MeetingLocation="NEARESTBUSSTOP / NearestBusStop" DateTime="19:00:00" TimeOffset="30" Latitude="28.98782" Longitude="-13.51008"/>
                                <PickupDropoff LocationName="AMTSES0085" OtherInfo="NEARESTBUSSTOP" PickupInd="true" MeetingLocation="NEARESTBUSSTOP / NearestBusStop" DateTime="18:45:00" TimeOffset="45" Latitude="29.00183" Longitude="-13.4857"/>
                                <PickupDropoff LocationName="AMTSES0091" OtherInfo="HOTELENTRANCE" PickupInd="true" MeetingLocation="HOTELENTRANCE / HotelEntrance" DateTime="18:30:00" TimeOffset="60" Latitude="28.99684" Longitude="-13.49914"/>
                                <PickupDropoff LocationName="AMTSES0092" OtherInfo="HOTELENTRANCE" PickupInd="true" MeetingLocation="HOTELENTRANCE / HotelEntrance" DateTime="18:35:00" TimeOffset="55" Latitude="29.004" Longitude="-13.48316"/>
                                <PickupDropoff LocationName="AMTSES08UY" OtherInfo="HOTELENTRANCE" PickupInd="true" MeetingLocation="HOTELENTRANCE / HotelEntrance" DateTime="18:30:00" TimeOffset="60" Latitude="28.99864" Longitude="-13.50582"/>
                                <PickupDropoff LocationName="AMTSES19FC" OtherInfo="HOTELENTRANCE" PickupInd="true" MeetingLocation="HOTELENTRANCE / HotelEntrance" DateTime="18:30:00" TimeOffset="60" Latitude="29.00406" Longitude="-13.49114"/>
                                <PickupDropoff LocationName="AMTSES1XYY" OtherInfo="HOTELENTRANCE" PickupInd="true" MeetingLocation="HOTELENTRANCE / HotelEntrance" DateTime="18:25:00" TimeOffset="65" Latitude="28.99569" Longitude="-13.50678"/>
                            </OperationTime>
                        </SubZoneInfo>
                    </ZoneInfo>
                    <ZoneInfo Code="B">
                        <SubZoneInfo Code="1009PL">
                            <RefPoints>
                                <RefPoint Name="Country" RefPointName="Spain"/>
                                <RefPoint Name="TurismDestinationName" RefPointName="Lanzarote"/>
                                <RefPoint Name="Destination" RefPointName="Canarian Islands"/>
                                <RefPoint Name="Region" RefPointName="Lanzarote"/>
                                <RefPoint Name="Resort" RefPointName="Playa Blanca"/>
                            </RefPoints>
                            <OperationTime>
                                <PickupDropoff LocationName="AESACE5YXC" OtherInfo="NEARESTBUSSTOP" PickupInd="true" MeetingLocation="NEARESTBUSSTOP / NearestBusStop" DateTime="18:40:00" TimeOffset="50"/>
                                <PickupDropoff LocationName="AESACE7Q1Y" OtherInfo="HOTELENTRANCE" PickupInd="true" MeetingLocation="HOTELENTRANCE / HotelEntrance" DateTime="18:50:00" TimeOffset="40" Latitude="28.86587" Longitude="-13.83846"/>
                                <PickupDropoff LocationName="AMTSES0130" OtherInfo="HOTELENTRANCE" PickupInd="true" MeetingLocation="HOTELENTRANCE / HotelEntrance" DateTime="18:45:00" TimeOffset="45" Latitude="28.86255" Longitude="-13.84665"/>
                                <PickupDropoff LocationName="AMTSES0131" OtherInfo="HOTELENTRANCE" PickupInd="true" MeetingLocation="HOTELENTRANCE / HotelEntrance" DateTime="18:15:00" TimeOffset="75" Latitude="28.86506" Longitude="-13.82145"/>
                                <PickupDropoff LocationName="AMTSES0132" OtherInfo="HOTELENTRANCE" PickupInd="true" MeetingLocation="HOTELENTRANCE / HotelEntrance" DateTime="18:30:00" TimeOffset="60" Latitude="28.86556" Longitude="-13.82524"/>
                                <PickupDropoff LocationName="AMTSES0133" OtherInfo="OTHERS" PickupInd="true" MeetingLocation="OTHERS / Lanzarote Princess Bus Stop" DateTime="18:30:00" TimeOffset="60" Latitude="28.86331" Longitude="-13.82112"/>
                                <PickupDropoff LocationName="AMTSES0136" OtherInfo="HOTELENTRANCE" PickupInd="true" MeetingLocation="HOTELENTRANCE / HotelEntrance" DateTime="18:50:00" TimeOffset="40" Latitude="28.86802" Longitude="-13.8438"/>
                                <PickupDropoff LocationName="AMTSES0137" OtherInfo="HOTELENTRANCE" PickupInd="true" MeetingLocation="HOTELENTRANCE / HotelEntrance" DateTime="18:45:00" TimeOffset="45" Latitude="28.86003" Longitude="-13.84416"/>
                                <PickupDropoff LocationName="AMTSES0138" OtherInfo="HOTELENTRANCE" PickupInd="true" MeetingLocation="HOTELENTRANCE / HotelEntrance" DateTime="18:45:00" TimeOffset="45" Latitude="28.86294" Longitude="-13.85216"/>
                                <PickupDropoff LocationName="AMTSES0139" OtherInfo="HOTELENTRANCE" PickupInd="true" MeetingLocation="HOTELENTRANCE / HotelEntrance" DateTime="18:25:00" TimeOffset="65" Latitude="28.85884" Longitude="-13.80464"/>
                                <PickupDropoff LocationName="AMTSES0140" OtherInfo="HOTELENTRANCE" PickupInd="true" MeetingLocation="HOTELENTRANCE / HotelEntrance" DateTime="18:30:00" TimeOffset="60" Latitude="28.86835" Longitude="-13.82425"/>
                                <PickupDropoff LocationName="AMTSES0141" OtherInfo="HOTELENTRANCE" PickupInd="true" MeetingLocation="HOTELENTRANCE / HotelEntrance" DateTime="18:50:00" TimeOffset="40" Latitude="28.86595" Longitude="-13.83853"/>
                                <PickupDropoff LocationName="AMTSES0142" OtherInfo="NEARESTBUSSTOP" PickupInd="true" MeetingLocation="NEARESTBUSSTOP / NearestBusStop" DateTime="18:40:00" TimeOffset="50" Latitude="28.85707" Longitude="-13.83914"/>
                                <PickupDropoff LocationName="AMTSES0143" OtherInfo="HOTELENTRANCE" PickupInd="true" MeetingLocation="HOTELENTRANCE / HotelEntrance" DateTime="18:50:00" TimeOffset="40" Latitude="28.86312" Longitude="-13.85731"/>
                                <PickupDropoff LocationName="AMTSES0146" OtherInfo="HOTELENTRANCE" PickupInd="true" MeetingLocation="HOTELENTRANCE / HotelEntrance" DateTime="18:25:00" TimeOffset="65" Latitude="28.85738" Longitude="-13.81089"/>
                                <PickupDropoff LocationName="AMTSES0147" OtherInfo="HOTELENTRANCE" PickupInd="true" MeetingLocation="HOTELENTRANCE / HotelEntrance" DateTime="18:20:00" TimeOffset="70" Latitude="28.85925" Longitude="-13.79807"/>
                                <PickupDropoff LocationName="AMTSES0148" OtherInfo="HOTELENTRANCE" PickupInd="true" MeetingLocation="HOTELENTRANCE / HotelEntrance" DateTime="18:40:00" TimeOffset="50" Latitude="28.86774" Longitude="-13.83453"/>
                                <PickupDropoff LocationName="AMTSES0152" OtherInfo="HOTELENTRANCE" PickupInd="true" MeetingLocation="HOTELENTRANCE / HotelEntrance" DateTime="18:20:00" TimeOffset="70" Latitude="28.8605" Longitude="-13.80094"/>
                                <PickupDropoff LocationName="AMTSES0SW2" OtherInfo="NEARESTBUSSTOP" PickupInd="true" MeetingLocation="NEARESTBUSSTOP / NearestBusStop" DateTime="18:25:00" TimeOffset="65" Latitude="28.86003" Longitude="-13.81559"/>
                                <PickupDropoff LocationName="AMTSES17OM" OtherInfo="HOTELENTRANCE" PickupInd="true" MeetingLocation="HOTELENTRANCE / HotelEntrance" DateTime="18:15:00" TimeOffset="75" Latitude="28.86921" Longitude="-13.82172"/>
                                <PickupDropoff LocationName="AMTSES17P0" OtherInfo="HOTELENTRANCE" PickupInd="true" MeetingLocation="HOTELENTRANCE / HotelEntrance" DateTime="18:35:00" TimeOffset="55" Latitude="28.8715" Longitude="-13.8243"/>
                                <PickupDropoff LocationName="AMTSES19F8" OtherInfo="HOTELENTRANCE" PickupInd="true" MeetingLocation="HOTELENTRANCE / HotelEntrance" DateTime="18:45:00" TimeOffset="45" Latitude="28.86214" Longitude="-13.87491"/>
                                <PickupDropoff LocationName="AMTSES1UJ6" OtherInfo="HOTELENTRANCE" PickupInd="true" MeetingLocation="HOTELENTRANCE / HotelEntrance" DateTime="18:40:00" TimeOffset="50" Latitude="28.85968" Longitude="-13.84193"/>
                                <PickupDropoff LocationName="AMTSES3FWE" OtherInfo="HOTELENTRANCE" PickupInd="true" MeetingLocation="HOTELENTRANCE / HotelEntrance" DateTime="18:50:00" TimeOffset="40" Latitude="28.86618" Longitude="-13.84357"/>
                            </OperationTime>
                        </SubZoneInfo>
                    </ZoneInfo>
                    <ZoneInfo Code="C">
                        <SubZoneInfo Code="1010PU">
                            <RefPoints>
                                <RefPoint Name="Country" RefPointName="Spain"/>
                                <RefPoint Name="TurismDestinationName" RefPointName="Lanzarote"/>
                                <RefPoint Name="Destination" RefPointName="Canarian Islands"/>
                                <RefPoint Name="Region" RefPointName="Lanzarote"/>
                                <RefPoint Name="Resort" RefPointName="Puerto Calero"/>
                            </RefPoints>
                            <OperationTime>
                                <PickupDropoff LocationName="AMTSES0160" OtherInfo="HOTELENTRANCE" PickupInd="true" MeetingLocation="HOTELENTRANCE / HotelEntrance" DateTime="19:10:00" TimeOffset="20" Latitude="28.92048" Longitude="-13.7039"/>
                            </OperationTime>
                        </SubZoneInfo>
                    </ZoneInfo>
                </CategoryCodes>
                <Descriptions>
                    <DescriptiveText>This long-running comedy variety show has been entertaining audiences for years with its unique blend of humor, music, and theatrical flair.
Hosted in its original venue, the show features a talented cast performing lively dinner performances filled with laughter, music, and unforgettable parodies of iconic stars and films.
It's a night of fun for all ages, promising non-stop entertainment, catchy tunes, and hilarious sketches that keep the audience engaged from start to finish.
Even those who think this type of show isn’t for them often leave saying it was the highlight of their trip.
Tickets typically include a three-course meal along with keepsakes to remember the evening.</DescriptiveText>
                </Descriptions>
                <Position Latitude="30.0" Longitude="-15.0"/>
                <Services>
                    <Service CodeDetail="EX_DIFFIC|EX_DIF_1">
                        <DescriptiveText>Difficulty|Easy|</DescriptiveText>
                    </Service>
                    <Service CodeDetail="EX_INCL|EX_INCL_FOOD">
                        <DescriptiveText>What`s included|Meals|</DescriptiveText>
                    </Service>
                    <Service CodeDetail="EX_INCL|EX_INCL_O">
                        <Features>
                            <Feature CodeDetail="Free Text:">
                                <DescriptiveText>Prices include a 3 course Dinner plus a Souvenir Photo &amp; Program.</DescriptiveText>
                            </Feature>
                        </Features>
                        <DescriptiveText>What`s included|Other:|</DescriptiveText>
                    </Service>
                    <Service CodeDetail="EX_INCL|EX_INCL_VEGE">
                        <DescriptiveText>What`s included|Vegetarian Food|</DescriptiveText>
                    </Service>
                    <Service CodeDetail="EXCURSION|EX_LANGSPOKEN">
                        <Features>
                            <Feature CodeDetail="Languages:">
                                <DescriptiveText>English</DescriptiveText>
                            </Feature>
                        </Features>
                        <DescriptiveText>Key Details|Languages spoken|</DescriptiveText>
                    </Service>
                    <Service CodeDetail="EX_NOTINCL|EX_NOTINCL_DRINK">
                        <DescriptiveText>What`s not included|Drinks|</DescriptiveText>
                    </Service>
                    <Service CodeDetail="EX_NOTINCL|EX_NOTINCL_HPD">
                        <DescriptiveText>What`s not included|Hotel pickup and drop-off (optional)|</DescriptiveText>
                    </Service>
                    <Service CodeDetail="EXCURSION|EX_PVOUCHER">
                        <DescriptiveText>Key Details|Printed Voucher accepted|</DescriptiveText>
                    </Service>
                    <Service CodeDetail="EX_TARGET|EX_TARGET_ALL">
                        <DescriptiveText>Audience|Anybody|</DescriptiveText>
                    </Service>
                    <Service CodeDetail="EX_THEME|EX_THEME_ENTERT">
                        <DescriptiveText>Theme|Entertainment|</DescriptiveText>
                    </Service>
                    <Service CodeDetail="EX_HIGHL|IS_DESC001">
                        <Features>
                            <Feature CodeDetail="EN Description">
                                <DescriptiveText>Experience the funniest night out in the Canary Islands!
Fit for all ages!
</DescriptiveText>
                            </Feature>
                        </Features>
                        <DescriptiveText>Highlights|Description|</DescriptiveText>
                    </Service>
                </Services>
            </TourActivityInfo>
            <AreaInfo>
                <RefPoints>
                    <RefPoint Name="Country" RefPointName="Spain"/>
                    <RefPoint Name="Destination" RefPointName="Canarian Islands"/>
                    <RefPoint Name="TurismDestination" RefPointName="Lanzarote"/>
                    <RefPoint Name="Resort" RefPointName="Puerto del Carmen"/>
                    <RefPoint Name="Region" RefPointName="Lanzarote"/>
                    <RefPoint Name="TravelDestination" RefPointName="ACE"/>
                    <RefPoint Latitude="30.0" Longitude="-15.0"/>
                </RefPoints>
            </AreaInfo>
            <ContactInfos>
                <ContactInfo>
                    <Addresses>
                        <Address>
                            <AddressLine>Centro Commercial Playa</AddressLine>
                            <CityName>Puerto del Carmen</CityName>
                            <PostalCode>35555</PostalCode>
                            <CountryName>ES</CountryName>
                        </Address>
                    </Addresses>
                    <Phones>
                        <Phone PhoneTechType="1" PhoneNumber="928 514 701"/>
                    </Phones>
                    <Emails>
                        <Email>[email protected]</Email>
                    </Emails>
                    <URLs>
                        <URL Type="Web">http://www.fakeaxis.com/</URL>
                    </URLs>
                </ContactInfo>
            </ContactInfos>
        </TourActivityDescriptiveContent>
    </ProductDescriptiveContents>
</OTA_ProductDescriptiveInfoRS>

Best Practices

  1. Treat TourActivityID as the stable key for excursion mapping.
  2. Use ProductInfo/@Code and ServiceInfo/@Code to build your SKU axes; validate availability via incoming NBC rate plan notifications.
  3. If multiple TourActivityDescriptiveInfo blocks are present, index on RPH and TourActivityID for deterministic merges.