Skip to content

Instantly share code, notes, and snippets.

@Sarafian
Created April 21, 2019 18:13
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Sarafian/cb4b3b9e688a79b598adf1b78f7b2464 to your computer and use it in GitHub Desktop.
Save Sarafian/cb4b3b9e688a79b598adf1b78f7b2464 to your computer and use it in GitHub Desktop.
Samples for tweet asking for name inspiration
<# Goal
In between null and arrays need to be transparently resolved
Filter an in memory typed structure generated from the followign xml
example expression dataElementsMaster.dataElementsIndiv.serviceRequest.ssr.type -eq CTCE
instead of
$pnrRetrieveResponse.dataElementsMaster.dataElementsIndiv | Where-Object {
($_.serviceRequest -ne $null) -and
($_.serviceRequest.ssr -ne $null) -and
($_.serviceRequest.ssr.type -eq "CTCE")
}
#>
<# Limitations
Everything is typed
Filtering on an object should not alter it's type, because it may be reused as an input object
Full adherence to the typed objects is absolute
#>
<#
<PNR_Reply xmlns="http://xml.amadeus.com/PNRACC_16_1_1A">
<pnrHeader>
<reservationInfo>
<reservation>
<companyId>1A</companyId>
<controlNumber>MTHOH2</controlNumber>
<date>040419</date>
<time>0706</time>
</reservation>
</reservationInfo>
</pnrHeader>
<pnrHeader>
<reservationInfo>
<reservation>
<companyId>UA</companyId>
<controlNumber>AXNW7M</controlNumber>
</reservation>
</reservationInfo>
</pnrHeader>
<securityInformation>
<responsibilityInformation>
<typeOfPnrElement>RP</typeOfPnrElement>
<agentId>AASU</agentId>
<officeId>HDQUA</officeId>
<iataCode>45520300</iataCode>
</responsibilityInformation>
<queueingInformation>
<queueingOfficeId>HDQUAAXNW7MA973///IAH/UA</queueingOfficeId>
<location>HDQ</location>
</queueingInformation>
<cityCode>HDQ</cityCode>
<secondRpInformation>
<creationOfficeId>DENUA1RIS</creationOfficeId>
<agentSignature>0000UA</agentSignature>
<creationDate>050119</creationDate>
<creatorIataCode>45520300</creatorIataCode>
<creationTime>2201</creationTime>
</secondRpInformation>
</securityInformation>
<freetextData>
<freetextDetail>
<subjectQualifier>3</subjectQualifier>
<type>P12</type>
</freetextDetail>
<longFreetext>--- DCS ---</longFreetext>
</freetextData>
<pnrHeaderTag>
<statusInformation>
<indicator>DCS</indicator>
</statusInformation>
</pnrHeaderTag>
<sbrPOSDetails>
<sbrUserIdentificationOwn>
<originIdentification>
<originatorId>45520300</originatorId>
<inHouseIdentification1>DENUA1RIS</inHouseIdentification1>
</originIdentification>
<originatorTypeCode>A</originatorTypeCode>
</sbrUserIdentificationOwn>
<sbrSystemDetails>
<deliveringSystem>
<companyId>UA</companyId>
<locationId>DEN</locationId>
</deliveringSystem>
</sbrSystemDetails>
<sbrPreferences>
<userPreferences>
<codedCountry>US</codedCountry>
</userPreferences>
</sbrPreferences>
</sbrPOSDetails>
<sbrCreationPosDetails>
<sbrUserIdentificationOwn>
<originIdentification>
<originatorId>45520300</originatorId>
<inHouseIdentification1>DENUA1RIS</inHouseIdentification1>
</originIdentification>
<originatorTypeCode>A</originatorTypeCode>
</sbrUserIdentificationOwn>
<sbrSystemDetails>
<deliveringSystem>
<companyId>UA</companyId>
<locationId>DEN</locationId>
</deliveringSystem>
</sbrSystemDetails>
<sbrPreferences>
<userPreferences>
<codedCountry>US</codedCountry>
</userPreferences>
</sbrPreferences>
</sbrCreationPosDetails>
<sbrUpdatorPosDetails>
<sbrUserIdentificationOwn>
<originIdentification>
<originatorId>00010301</originatorId>
<inHouseIdentification1>LON1A0955</inHouseIdentification1>
</originIdentification>
<originatorTypeCode>A</originatorTypeCode>
</sbrUserIdentificationOwn>
<sbrSystemDetails>
<deliveringSystem>
<companyId>1A</companyId>
<locationId>LON</locationId>
</deliveringSystem>
</sbrSystemDetails>
<sbrPreferences>
<userPreferences>
<codedCountry>GB</codedCountry>
</userPreferences>
</sbrPreferences>
</sbrUpdatorPosDetails>
<technicalData>
<enveloppeNumberData>
<sequenceDetails>
<number>42</number>
</sequenceDetails>
</enveloppeNumberData>
<lastTransmittedEnvelopeNumber>
<currentRecord>41</currentRecord>
</lastTransmittedEnvelopeNumber>
<purgeDateData>
<dateTime>
<year>2019</year>
<month>4</month>
<day>5</day>
</dateTime>
</purgeDateData>
</technicalData>
<travellerInfo>
<elementManagementPassenger>
<reference>
<qualifier>PT</qualifier>
<number>2</number>
</reference>
<segmentName>NM</segmentName>
<lineNumber>1</lineNumber>
</elementManagementPassenger>
<passengerData>
<travellerInformation>
<traveller>
<surname>BOLLAND</surname>
<quantity>1</quantity>
</traveller>
<passenger>
<firstName>ELIZABETHANN</firstName>
</passenger>
</travellerInformation>
</passengerData>
<enhancedPassengerData>
<enhancedTravellerInformation>
<travellerNameInfo>
<quantity>1</quantity>
</travellerNameInfo>
<otherPaxNamesDetails>
<nameType>UN</nameType>
<referenceName>Y</referenceName>
<displayedName>Y</displayedName>
<surname>BOLLAND</surname>
<givenName>ELIZABETHANN</givenName>
</otherPaxNamesDetails>
</enhancedTravellerInformation>
</enhancedPassengerData>
</travellerInfo>
<travellerInfo>
<elementManagementPassenger>
<reference>
<qualifier>PT</qualifier>
<number>1</number>
</reference>
<segmentName>NM</segmentName>
<lineNumber>2</lineNumber>
</elementManagementPassenger>
<passengerData>
<travellerInformation>
<traveller>
<surname>BROWN</surname>
<quantity>1</quantity>
</traveller>
<passenger>
<firstName>RANDYCOLTON</firstName>
</passenger>
</travellerInformation>
</passengerData>
<enhancedPassengerData>
<enhancedTravellerInformation>
<travellerNameInfo>
<quantity>1</quantity>
</travellerNameInfo>
<otherPaxNamesDetails>
<nameType>UN</nameType>
<referenceName>Y</referenceName>
<displayedName>Y</displayedName>
<surname>BROWN</surname>
<givenName>RANDYCOLTON</givenName>
</otherPaxNamesDetails>
</enhancedTravellerInformation>
</enhancedPassengerData>
</travellerInfo>
<originDestinationDetails>
<originDestination>
</originDestination>
<itineraryInfo>
<elementManagementItinerary>
<reference>
<qualifier>ST</qualifier>
<number>2</number>
</reference>
<segmentName>AIR</segmentName>
<lineNumber>3</lineNumber>
</elementManagementItinerary>
<travelProduct>
<product>
<depDate>240319</depDate>
<depTime>1855</depTime>
<arrDate>250319</arrDate>
<arrTime>0755</arrTime>
<dayChangeIndicator>1</dayChangeIndicator>
</product>
<boardpointDetail>
<cityCode>ORD</cityCode>
</boardpointDetail>
<offpointDetail>
<cityCode>LHR</cityCode>
</offpointDetail>
<companyDetail>
<identification>UA</identification>
</companyDetail>
<productDetails>
<identification>931</identification>
<classOfService>K</classOfService>
</productDetails>
<processingIndicator>N</processingIndicator>
</travelProduct>
<itineraryMessageAction>
<business>
<function>1</function>
</business>
</itineraryMessageAction>
<relatedProduct>
<quantity>2</quantity>
<status>HK</status>
<status>B</status>
</relatedProduct>
<flightDetail>
<productDetails>
<equipment> </equipment>
<weekDay>7</weekDay>
</productDetails>
</flightDetail>
<selectionDetails>
<selection>
<option>P10</option>
</selection>
</selectionDetails>
<markerRailTour>
</markerRailTour>
</itineraryInfo>
<itineraryInfo>
<elementManagementItinerary>
<reference>
<qualifier>ST</qualifier>
<number>6</number>
</reference>
<segmentName>AIR</segmentName>
<lineNumber>4</lineNumber>
</elementManagementItinerary>
<travelProduct>
<product>
<depDate>250319</depDate>
<depTime>1105</depTime>
<arrDate>250319</arrDate>
<arrTime>1310</arrTime>
</product>
<boardpointDetail>
<cityCode>LHR</cityCode>
</boardpointDetail>
<offpointDetail>
<cityCode>BRU</cityCode>
</offpointDetail>
<companyDetail>
<identification>UA</identification>
</companyDetail>
<productDetails>
<identification>9980</identification>
<classOfService>K</classOfService>
</productDetails>
<typeDetail>
<detail>ET</detail>
</typeDetail>
<processingIndicator>ICS</processingIndicator>
</travelProduct>
<itineraryMessageAction>
<business>
<function>1</function>
</business>
</itineraryMessageAction>
<relatedProduct>
<quantity>2</quantity>
<status>HK</status>
<status>B</status>
</relatedProduct>
<flightDetail>
<productDetails>
<equipment>320</equipment>
<numOfStops>0</numOfStops>
<weekDay>1</weekDay>
</productDetails>
<departureInformation>
<departTerminal>2</departTerminal>
</departureInformation>
<facilities>
<entertainement>M</entertainement>
<entertainementDescription>S</entertainementDescription>
</facilities>
</flightDetail>
<selectionDetails>
<selection>
<option>P10</option>
</selection>
</selectionDetails>
<carbonDioxydeInfo>
<carbonDioxydeAmount>
<quantityDetails>
<qualifier>COE</qualifier>
<value>55.472681</value>
<unit>KPP</unit>
</quantityDetails>
</carbonDioxydeAmount>
<carbonDioxydeInfoSource>
<freeTextDetails>
<textSubjectQualifier>3</textSubjectQualifier>
<source>S</source>
<encoding>7</encoding>
</freeTextDetails>
<freeText>SOURCE:ICAO CARBON EMISSIONS CALCULATOR</freeText>
</carbonDioxydeInfoSource>
</carbonDioxydeInfo>
<itineraryfreeFormText>
<freeTextQualification>
<textSubjectQualifier>3</textSubjectQualifier>
</freeTextQualification>
<freeText> OPERATED BY SN2094 T </freeText>
</itineraryfreeFormText>
<markerRailTour>
</markerRailTour>
</itineraryInfo>
<itineraryInfo>
<elementManagementItinerary>
<reference>
<qualifier>ST</qualifier>
<number>7</number>
</reference>
<segmentName>AIR</segmentName>
<lineNumber>5</lineNumber>
</elementManagementItinerary>
<travelProduct>
<product>
<depDate>250319</depDate>
<depTime>1510</depTime>
<arrDate>250319</arrDate>
<arrTime>1710</arrTime>
</product>
<boardpointDetail>
<cityCode>BRU</cityCode>
</boardpointDetail>
<offpointDetail>
<cityCode>OSL</cityCode>
</offpointDetail>
<companyDetail>
<identification>UA</identification>
</companyDetail>
<productDetails>
<identification>9919</identification>
<classOfService>K</classOfService>
</productDetails>
<typeDetail>
<detail>ET</detail>
</typeDetail>
<processingIndicator>ICS</processingIndicator>
</travelProduct>
<itineraryMessageAction>
<business>
<function>1</function>
</business>
</itineraryMessageAction>
<relatedProduct>
<quantity>2</quantity>
<status>HK</status>
<status>B</status>
</relatedProduct>
<flightDetail>
<productDetails>
<equipment>319</equipment>
<numOfStops>0</numOfStops>
<weekDay>1</weekDay>
</productDetails>
<facilities>
<entertainement>M</entertainement>
<entertainementDescription>S</entertainementDescription>
</facilities>
</flightDetail>
<selectionDetails>
<selection>
<option>P10</option>
</selection>
</selectionDetails>
<carbonDioxydeInfo>
<carbonDioxydeAmount>
<quantityDetails>
<qualifier>COE</qualifier>
<value>126.829895</value>
<unit>KPP</unit>
</quantityDetails>
</carbonDioxydeAmount>
<carbonDioxydeInfoSource>
<freeTextDetails>
<textSubjectQualifier>3</textSubjectQualifier>
<source>S</source>
<encoding>7</encoding>
</freeTextDetails>
<freeText>SOURCE:ICAO CARBON EMISSIONS CALCULATOR</freeText>
</carbonDioxydeInfoSource>
</carbonDioxydeInfo>
<itineraryfreeFormText>
<freeTextQualification>
<textSubjectQualifier>3</textSubjectQualifier>
</freeTextQualification>
<freeText> OPERATED BY SN2283 T </freeText>
</itineraryfreeFormText>
<markerRailTour>
</markerRailTour>
</itineraryInfo>
<itineraryInfo>
<elementManagementItinerary>
<reference>
<qualifier>ST</qualifier>
<number>1</number>
</reference>
<segmentName>AIR</segmentName>
<lineNumber>6</lineNumber>
</elementManagementItinerary>
<travelProduct>
<product>
<depDate>010419</depDate>
<depTime>0645</depTime>
<arrDate>010419</arrDate>
<arrTime>0850</arrTime>
</product>
<boardpointDetail>
<cityCode>OSL</cityCode>
</boardpointDetail>
<offpointDetail>
<cityCode>BRU</cityCode>
</offpointDetail>
<companyDetail>
<identification>SN</identification>
</companyDetail>
<productDetails>
<identification>2288</identification>
<classOfService>K</classOfService>
</productDetails>
<typeDetail>
<detail>ET</detail>
</typeDetail>
</travelProduct>
<itineraryMessageAction>
<business>
<function>1</function>
</business>
</itineraryMessageAction>
<relatedProduct>
<quantity>2</quantity>
<status>HK</status>
<status>B</status>
</relatedProduct>
<flightDetail>
<productDetails>
<equipment>319</equipment>
<numOfStops>0</numOfStops>
<weekDay>1</weekDay>
</productDetails>
<timeDetail>
<checkinTime>0545</checkinTime>
</timeDetail>
<facilities>
<entertainement>M</entertainement>
<entertainementDescription>G</entertainementDescription>
</facilities>
</flightDetail>
<selectionDetails>
<selection>
<option>P2</option>
</selection>
</selectionDetails>
<carbonDioxydeInfo>
<carbonDioxydeAmount>
<quantityDetails>
<qualifier>COE</qualifier>
<value>126.829895</value>
<unit>KPP</unit>
</quantityDetails>
</carbonDioxydeAmount>
<carbonDioxydeInfoSource>
<freeTextDetails>
<textSubjectQualifier>3</textSubjectQualifier>
<source>S</source>
<encoding>7</encoding>
</freeTextDetails>
<freeText>SOURCE:ICAO CARBON EMISSIONS CALCULATOR</freeText>
</carbonDioxydeInfoSource>
</carbonDioxydeInfo>
<markerRailTour>
</markerRailTour>
</itineraryInfo>
<itineraryInfo>
<elementManagementItinerary>
<reference>
<qualifier>ST</qualifier>
<number>5</number>
</reference>
<segmentName>AIR</segmentName>
<lineNumber>7</lineNumber>
</elementManagementItinerary>
<travelProduct>
<product>
<depDate>010419</depDate>
<depTime>1100</depTime>
<arrDate>010419</arrDate>
<arrTime>1255</arrTime>
</product>
<boardpointDetail>
<cityCode>BRU</cityCode>
</boardpointDetail>
<offpointDetail>
<cityCode>ORD</cityCode>
</offpointDetail>
<companyDetail>
<identification>UA</identification>
</companyDetail>
<productDetails>
<identification>973</identification>
<classOfService>K</classOfService>
</productDetails>
<processingIndicator>N</processingIndicator>
</travelProduct>
<itineraryMessageAction>
<business>
<function>1</function>
</business>
</itineraryMessageAction>
<relatedProduct>
<quantity>2</quantity>
<status>HK</status>
<status>B</status>
</relatedProduct>
<flightDetail>
<productDetails>
<equipment> </equipment>
<weekDay>1</weekDay>
</productDetails>
</flightDetail>
<selectionDetails>
<selection>
<option>P10</option>
</selection>
</selectionDetails>
<markerRailTour>
</markerRailTour>
</itineraryInfo>
</originDestinationDetails>
<dataElementsMaster>
<marker2>
</marker2>
<dataElementsIndiv>
<elementManagementData>
<reference>
<qualifier>OT</qualifier>
<number>75</number>
</reference>
<segmentName>AP</segmentName>
<lineNumber>8</lineNumber>
</elementManagementData>
<otherDataFreetext>
<freetextDetail>
<subjectQualifier>3</subjectQualifier>
<type>5</type>
</freetextDetail>
<longFreetext>BRU TBA - BRUSSELS AIRLINES - A</longFreetext>
</otherDataFreetext>
</dataElementsIndiv>
<dataElementsIndiv>
<elementManagementData>
<reference>
<qualifier>OT</qualifier>
<number>23</number>
</reference>
<segmentName>TK</segmentName>
<lineNumber>9</lineNumber>
</elementManagementData>
<ticketElement>
<ticket>
<indicator>OK</indicator>
<date>050119</date>
<officeId>BRUSN0ERS</officeId>
</ticket>
</ticketElement>
</dataElementsIndiv>
<dataElementsIndiv>
<elementManagementData>
<reference>
<qualifier>OT</qualifier>
<number>6</number>
</reference>
<segmentName>SSR</segmentName>
<lineNumber>10</lineNumber>
</elementManagementData>
<serviceRequest>
<ssr>
<type>DOCS</type>
<status>HK</status>
<quantity>1</quantity>
<companyId>SN</companyId>
<freeText>////13JAN95/M//BROWN/RANDY/COLTON</freeText>
</ssr>
</serviceRequest>
<referenceForDataElement>
<reference>
<qualifier>PT</qualifier>
<number>1</number>
</reference>
</referenceForDataElement>
</dataElementsIndiv>
<dataElementsIndiv>
<elementManagementData>
<reference>
<qualifier>OT</qualifier>
<number>7</number>
</reference>
<segmentName>SSR</segmentName>
<lineNumber>11</lineNumber>
</elementManagementData>
<serviceRequest>
<ssr>
<type>DOCS</type>
<status>HK</status>
<quantity>1</quantity>
<companyId>SN</companyId>
<freeText>////24JUN98/F//BOLLAND/ELIZABETH/ANN</freeText>
</ssr>
</serviceRequest>
<referenceForDataElement>
<reference>
<qualifier>PT</qualifier>
<number>2</number>
</reference>
</referenceForDataElement>
</dataElementsIndiv>
<dataElementsIndiv>
<elementManagementData>
<reference>
<qualifier>OT</qualifier>
<number>15</number>
</reference>
<segmentName>SSR</segmentName>
<lineNumber>12</lineNumber>
</elementManagementData>
<serviceRequest>
<ssr>
<type>OTHS</type>
<status> </status>
<companyId>UA</companyId>
<freeText>PLS ADV TKT NBR FOR ITIN BY 08JAN19/2201Z OR SN OPTG/MKTG FLTS WILL BE</freeText>
<freeText> CNLD // 05JAN192201</freeText>
</ssr>
</serviceRequest>
</dataElementsIndiv>
<dataElementsIndiv>
<elementManagementData>
<reference>
<qualifier>OT</qualifier>
<number>8</number>
</reference>
<segmentName>OS</segmentName>
<lineNumber>13</lineNumber>
</elementManagementData>
<otherDataFreetext>
<freetextDetail>
<subjectQualifier>3</subjectQualifier>
<type>28</type>
<companyId>1A</companyId>
</freetextDetail>
<longFreetext>CTCH WEB716 7044554</longFreetext>
</otherDataFreetext>
</dataElementsIndiv>
<dataElementsIndiv>
<elementManagementData>
<reference>
<qualifier>OT</qualifier>
<number>14</number>
</reference>
<segmentName>OS</segmentName>
<lineNumber>14</lineNumber>
</elementManagementData>
<otherDataFreetext>
<freetextDetail>
<subjectQualifier>3</subjectQualifier>
<type>28</type>
<companyId>SN</companyId>
</freetextDetail>
<longFreetext>CTCH WEB716 7044554</longFreetext>
</otherDataFreetext>
</dataElementsIndiv>
<dataElementsIndiv>
<elementManagementData>
<reference>
<qualifier>OT</qualifier>
<number>26</number>
</reference>
<segmentName>FA</segmentName>
<lineNumber>15</lineNumber>
</elementManagementData>
<otherDataFreetext>
<freetextDetail>
<subjectQualifier>3</subjectQualifier>
<type>P06</type>
</freetextDetail>
<longFreetext>PAX 016-2432430540-41/ETUA/05JAN19/BRUSN0ERS/08490871</longFreetext>
</otherDataFreetext>
<referenceForDataElement>
<reference>
<qualifier>ST</qualifier>
<number>1</number>
</reference>
<reference>
<qualifier>ST</qualifier>
<number>6</number>
</reference>
<reference>
<qualifier>ST</qualifier>
<number>7</number>
</reference>
<reference>
<qualifier>PT</qualifier>
<number>1</number>
</reference>
</referenceForDataElement>
</dataElementsIndiv>
<dataElementsIndiv>
<elementManagementData>
<reference>
<qualifier>OT</qualifier>
<number>27</number>
</reference>
<segmentName>FA</segmentName>
<lineNumber>16</lineNumber>
</elementManagementData>
<otherDataFreetext>
<freetextDetail>
<subjectQualifier>3</subjectQualifier>
<type>P06</type>
</freetextDetail>
<longFreetext>PAX 016-2432430542-43/ETUA/05JAN19/BRUSN0ERS/08490871</longFreetext>
</otherDataFreetext>
<referenceForDataElement>
<reference>
<qualifier>ST</qualifier>
<number>1</number>
</reference>
<reference>
<qualifier>ST</qualifier>
<number>6</number>
</reference>
<reference>
<qualifier>ST</qualifier>
<number>7</number>
</reference>
<reference>
<qualifier>PT</qualifier>
<number>2</number>
</reference>
</referenceForDataElement>
</dataElementsIndiv>
</dataElementsMaster>
<dcsData>
<markerPax>
</markerPax>
<markerSegment>
</markerSegment>
<segmentSection>
<elementManagementStructData>
<elementReference>
<qualifier>OT</qualifier>
<number>48</number>
</elementReference>
<segmentName>PDS</segmentName>
</elementManagementStructData>
<referenceForStructDataElement>
<reference>
<qualifier>PT</qualifier>
<number>1</number>
</reference>
<reference>
<qualifier>ST</qualifier>
<number>1</number>
</reference>
</referenceForStructDataElement>
<dcsSegmentInfo>
<booking>
</booking>
<paxType>
<referenceDetails>
<type>A</type>
</referenceDetails>
</paxType>
</dcsSegmentInfo>
</segmentSection>
<segmentSection>
<elementManagementStructData>
<elementReference>
<qualifier>OT</qualifier>
<number>50</number>
</elementReference>
<segmentName>PDS</segmentName>
</elementManagementStructData>
<referenceForStructDataElement>
<reference>
<qualifier>PT</qualifier>
<number>2</number>
</reference>
<reference>
<qualifier>ST</qualifier>
<number>1</number>
</reference>
</referenceForStructDataElement>
<dcsSegmentInfo>
<booking>
</booking>
<paxType>
<referenceDetails>
<type>A</type>
</referenceDetails>
</paxType>
</dcsSegmentInfo>
</segmentSection>
<segmentSection>
<elementManagementStructData>
<elementReference>
<qualifier>OT</qualifier>
<number>32</number>
</elementReference>
<segmentName>PDS</segmentName>
</elementManagementStructData>
<referenceForStructDataElement>
<reference>
<qualifier>PT</qualifier>
<number>1</number>
</reference>
<reference>
<qualifier>ST</qualifier>
<number>6</number>
</reference>
</referenceForStructDataElement>
<dcsSegmentInfo>
<booking>
</booking>
<paxType>
<referenceDetails>
<type>A</type>
</referenceDetails>
</paxType>
</dcsSegmentInfo>
</segmentSection>
<segmentSection>
<elementManagementStructData>
<elementReference>
<qualifier>OT</qualifier>
<number>36</number>
</elementReference>
<segmentName>PDS</segmentName>
</elementManagementStructData>
<referenceForStructDataElement>
<reference>
<qualifier>PT</qualifier>
<number>2</number>
</reference>
<reference>
<qualifier>ST</qualifier>
<number>6</number>
</reference>
</referenceForStructDataElement>
<dcsSegmentInfo>
<booking>
</booking>
<paxType>
<referenceDetails>
<type>A</type>
</referenceDetails>
</paxType>
</dcsSegmentInfo>
</segmentSection>
<segmentSection>
<elementManagementStructData>
<elementReference>
<qualifier>OT</qualifier>
<number>40</number>
</elementReference>
<segmentName>PDS</segmentName>
</elementManagementStructData>
<referenceForStructDataElement>
<reference>
<qualifier>PT</qualifier>
<number>1</number>
</reference>
<reference>
<qualifier>ST</qualifier>
<number>7</number>
</reference>
</referenceForStructDataElement>
<dcsSegmentInfo>
<booking>
</booking>
<paxType>
<referenceDetails>
<type>A</type>
</referenceDetails>
</paxType>
</dcsSegmentInfo>
</segmentSection>
<segmentSection>
<elementManagementStructData>
<elementReference>
<qualifier>OT</qualifier>
<number>42</number>
</elementReference>
<segmentName>PDS</segmentName>
</elementManagementStructData>
<referenceForStructDataElement>
<reference>
<qualifier>PT</qualifier>
<number>2</number>
</reference>
<reference>
<qualifier>ST</qualifier>
<number>7</number>
</reference>
</referenceForStructDataElement>
<dcsSegmentInfo>
<booking>
</booking>
<paxType>
<referenceDetails>
<type>A</type>
</referenceDetails>
</paxType>
</dcsSegmentInfo>
</segmentSection>
<markerLeg>
</markerLeg>
<legSection>
<elementManagementStructData>
<elementReference>
<qualifier>OT</qualifier>
<number>52</number>
</elementReference>
<segmentName>PDL</segmentName>
</elementManagementStructData>
<referenceForStructDataElement>
<reference>
<qualifier>PT</qualifier>
<number>1</number>
</reference>
<reference>
<qualifier>ST</qualifier>
<number>1</number>
</reference>
</referenceForStructDataElement>
<dcsLegInfo>
<legPosition>
<itemNumber>1</itemNumber>
</legPosition>
<leg>
<origin>OSL</origin>
<destination>BRU</destination>
</leg>
<paxType>
<referenceDetails>
<type>A</type>
</referenceDetails>
</paxType>
<paxStatus>
<statusDetails>
<indicator>CRJ</indicator>
<type>CAS</type>
</statusDetails>
<statusDetails>
<indicator>NBD</indicator>
<type>BDS</type>
</statusDetails>
<statusDetails>
<indicator>NRG</indicator>
<type>RGS</type>
</statusDetails>
<statusDetails>
<indicator>REC</indicator>
<type>CRS</type>
</statusDetails>
<statusDetails>
<indicator>NBG</indicator>
<type>CBS</type>
</statusDetails>
<statusDetails>
<indicator>NFL</indicator>
<type>TPS</type>
</statusDetails>
<statusDetails>
<indicator>NCW</indicator>
<type>WLS</type>
</statusDetails>
</paxStatus>
<accregReason>
<reasons>
<attributeDetails>
<attributeType>ARC</attributeType>
<attributeDescription>NO</attributeDescription>
</attributeDetails>
</reasons>
<deliveryInformation>
<freeTextQualification>
<textSubjectQualifier>3</textSubjectQualifier>
<informationType>AR</informationType>
</freeTextQualification>
<freeText>NOSHOW BY ONLOAD PROCESS</freeText>
</deliveryInformation>
</accregReason>
<regradeCabin>
<cabinCode>Y</cabinCode>
</regradeCabin>
<acceptanceChannel>
<acceptanceOrigin>
<originatorTypeCode>A</originatorTypeCode>
</acceptanceOrigin>
<applicationType>
<applicationDetails>
<internalId>JFE</internalId>
</applicationDetails>
</applicationType>
</acceptanceChannel>
</dcsLegInfo>
</legSection>
<legSection>
<elementManagementStructData>
<elementReference>
<qualifier>OT</qualifier>
<number>54</number>
</elementReference>
<segmentName>PDL</segmentName>
</elementManagementStructData>
<referenceForStructDataElement>
<reference>
<qualifier>PT</qualifier>
<number>2</number>
</reference>
<reference>
<qualifier>ST</qualifier>
<number>1</number>
</reference>
</referenceForStructDataElement>
<dcsLegInfo>
<legPosition>
<itemNumber>1</itemNumber>
</legPosition>
<leg>
<origin>OSL</origin>
<destination>BRU</destination>
</leg>
<paxType>
<referenceDetails>
<type>A</type>
</referenceDetails>
</paxType>
<paxStatus>
<statusDetails>
<indicator>CRJ</indicator>
<type>CAS</type>
</statusDetails>
<statusDetails>
<indicator>NBD</indicator>
<type>BDS</type>
</statusDetails>
<statusDetails>
<indicator>NRG</indicator>
<type>RGS</type>
</statusDetails>
<statusDetails>
<indicator>REC</indicator>
<type>CRS</type>
</statusDetails>
<statusDetails>
<indicator>NBG</indicator>
<type>CBS</type>
</statusDetails>
<statusDetails>
<indicator>NFL</indicator>
<type>TPS</type>
</statusDetails>
<statusDetails>
<indicator>NCW</indicator>
<type>WLS</type>
</statusDetails>
</paxStatus>
<accregReason>
<reasons>
<attributeDetails>
<attributeType>ARC</attributeType>
<attributeDescription>NO</attributeDescription>
</attributeDetails>
</reasons>
<deliveryInformation>
<freeTextQualification>
<textSubjectQualifier>3</textSubjectQualifier>
<informationType>AR</informationType>
</freeTextQualification>
<freeText>NOSHOW BY ONLOAD PROCESS</freeText>
</deliveryInformation>
</accregReason>
<regradeCabin>
<cabinCode>Y</cabinCode>
</regradeCabin>
<acceptanceChannel>
<acceptanceOrigin>
<originatorTypeCode>A</originatorTypeCode>
</acceptanceOrigin>
<applicationType>
<applicationDetails>
<internalId>JFE</internalId>
</applicationDetails>
</applicationType>
</acceptanceChannel>
</dcsLegInfo>
</legSection>
<legSection>
<elementManagementStructData>
<elementReference>
<qualifier>OT</qualifier>
<number>34</number>
</elementReference>
<segmentName>PDL</segmentName>
</elementManagementStructData>
<referenceForStructDataElement>
<reference>
<qualifier>PT</qualifier>
<number>1</number>
</reference>
<reference>
<qualifier>ST</qualifier>
<number>6</number>
</reference>
</referenceForStructDataElement>
<dcsLegInfo>
<legPosition>
<itemNumber>1</itemNumber>
</legPosition>
<leg>
<origin>LHR</origin>
<destination>BRU</destination>
</leg>
<paxType>
<referenceDetails>
<type>A</type>
</referenceDetails>
</paxType>
<paxStatus>
<statusDetails>
<indicator>CRJ</indicator>
<type>CAS</type>
</statusDetails>
<statusDetails>
<indicator>NBD</indicator>
<type>BDS</type>
</statusDetails>
<statusDetails>
<indicator>NRG</indicator>
<type>RGS</type>
</statusDetails>
<statusDetails>
<indicator>REC</indicator>
<type>CRS</type>
</statusDetails>
<statusDetails>
<indicator>NBG</indicator>
<type>CBS</type>
</statusDetails>
<statusDetails>
<indicator>NFL</indicator>
<type>TPS</type>
</statusDetails>
<statusDetails>
<indicator>NCW</indicator>
<type>WLS</type>
</statusDetails>
</paxStatus>
<accregReason>
<reasons>
<attributeDetails>
<attributeType>ARC</attributeType>
<attributeDescription>NO</attributeDescription>
</attributeDetails>
</reasons>
<deliveryInformation>
<freeTextQualification>
<textSubjectQualifier>3</textSubjectQualifier>
<informationType>AR</informationType>
</freeTextQualification>
<freeText>NOSHOW BY ONLOAD PROCESS</freeText>
</deliveryInformation>
</accregReason>
<regradeCabin>
<cabinCode>Y</cabinCode>
</regradeCabin>
<acceptanceChannel>
<acceptanceOrigin>
<originatorTypeCode>A</originatorTypeCode>
</acceptanceOrigin>
<applicationType>
<applicationDetails>
<internalId>JFE</internalId>
</applicationDetails>
</applicationType>
</acceptanceChannel>
</dcsLegInfo>
</legSection>
<legSection>
<elementManagementStructData>
<elementReference>
<qualifier>OT</qualifier>
<number>38</number>
</elementReference>
<segmentName>PDL</segmentName>
</elementManagementStructData>
<referenceForStructDataElement>
<reference>
<qualifier>PT</qualifier>
<number>2</number>
</reference>
<reference>
<qualifier>ST</qualifier>
<number>6</number>
</reference>
</referenceForStructDataElement>
<dcsLegInfo>
<legPosition>
<itemNumber>1</itemNumber>
</legPosition>
<leg>
<origin>LHR</origin>
<destination>BRU</destination>
</leg>
<paxType>
<referenceDetails>
<type>A</type>
</referenceDetails>
</paxType>
<paxStatus>
<statusDetails>
<indicator>CRJ</indicator>
<type>CAS</type>
</statusDetails>
<statusDetails>
<indicator>NBD</indicator>
<type>BDS</type>
</statusDetails>
<statusDetails>
<indicator>NRG</indicator>
<type>RGS</type>
</statusDetails>
<statusDetails>
<indicator>REC</indicator>
<type>CRS</type>
</statusDetails>
<statusDetails>
<indicator>NBG</indicator>
<type>CBS</type>
</statusDetails>
<statusDetails>
<indicator>NFL</indicator>
<type>TPS</type>
</statusDetails>
<statusDetails>
<indicator>NCW</indicator>
<type>WLS</type>
</statusDetails>
</paxStatus>
<accregReason>
<reasons>
<attributeDetails>
<attributeType>ARC</attributeType>
<attributeDescription>NO</attributeDescription>
</attributeDetails>
</reasons>
<deliveryInformation>
<freeTextQualification>
<textSubjectQualifier>3</textSubjectQualifier>
<informationType>AR</informationType>
</freeTextQualification>
<freeText>NOSHOW BY ONLOAD PROCESS</freeText>
</deliveryInformation>
</accregReason>
<regradeCabin>
<cabinCode>Y</cabinCode>
</regradeCabin>
<acceptanceChannel>
<acceptanceOrigin>
<originatorTypeCode>A</originatorTypeCode>
</acceptanceOrigin>
<applicationType>
<applicationDetails>
<internalId>JFE</internalId>
</applicationDetails>
</applicationType>
</acceptanceChannel>
</dcsLegInfo>
</legSection>
<legSection>
<elementManagementStructData>
<elementReference>
<qualifier>OT</qualifier>
<number>44</number>
</elementReference>
<segmentName>PDL</segmentName>
</elementManagementStructData>
<referenceForStructDataElement>
<reference>
<qualifier>PT</qualifier>
<number>1</number>
</reference>
<reference>
<qualifier>ST</qualifier>
<number>7</number>
</reference>
</referenceForStructDataElement>
<dcsLegInfo>
<legPosition>
<itemNumber>1</itemNumber>
</legPosition>
<leg>
<origin>BRU</origin>
<destination>OSL</destination>
</leg>
<paxType>
<referenceDetails>
<type>A</type>
</referenceDetails>
</paxType>
<paxStatus>
<statusDetails>
<indicator>CRJ</indicator>
<type>CAS</type>
</statusDetails>
<statusDetails>
<indicator>NBD</indicator>
<type>BDS</type>
</statusDetails>
<statusDetails>
<indicator>NRG</indicator>
<type>RGS</type>
</statusDetails>
<statusDetails>
<indicator>REC</indicator>
<type>CRS</type>
</statusDetails>
<statusDetails>
<indicator>NBG</indicator>
<type>CBS</type>
</statusDetails>
<statusDetails>
<indicator>NFL</indicator>
<type>TPS</type>
</statusDetails>
<statusDetails>
<indicator>NCW</indicator>
<type>WLS</type>
</statusDetails>
</paxStatus>
<accregReason>
<reasons>
<attributeDetails>
<attributeType>ARC</attributeType>
<attributeDescription>NO</attributeDescription>
</attributeDetails>
</reasons>
<deliveryInformation>
<freeTextQualification>
<textSubjectQualifier>3</textSubjectQualifier>
<informationType>AR</informationType>
</freeTextQualification>
<freeText>NOSHOW BY ONLOAD PROCESS</freeText>
</deliveryInformation>
</accregReason>
<regradeCabin>
<cabinCode>Y</cabinCode>
</regradeCabin>
<acceptanceChannel>
<acceptanceOrigin>
<originatorTypeCode>A</originatorTypeCode>
</acceptanceOrigin>
<applicationType>
<applicationDetails>
<internalId>JFE</internalId>
</applicationDetails>
</applicationType>
</acceptanceChannel>
</dcsLegInfo>
</legSection>
<legSection>
<elementManagementStructData>
<elementReference>
<qualifier>OT</qualifier>
<number>46</number>
</elementReference>
<segmentName>PDL</segmentName>
</elementManagementStructData>
<referenceForStructDataElement>
<reference>
<qualifier>PT</qualifier>
<number>2</number>
</reference>
<reference>
<qualifier>ST</qualifier>
<number>7</number>
</reference>
</referenceForStructDataElement>
<dcsLegInfo>
<legPosition>
<itemNumber>1</itemNumber>
</legPosition>
<leg>
<origin>BRU</origin>
<destination>OSL</destination>
</leg>
<paxType>
<referenceDetails>
<type>A</type>
</referenceDetails>
</paxType>
<paxStatus>
<statusDetails>
<indicator>CRJ</indicator>
<type>CAS</type>
</statusDetails>
<statusDetails>
<indicator>NBD</indicator>
<type>BDS</type>
</statusDetails>
<statusDetails>
<indicator>NRG</indicator>
<type>RGS</type>
</statusDetails>
<statusDetails>
<indicator>REC</indicator>
<type>CRS</type>
</statusDetails>
<statusDetails>
<indicator>NBG</indicator>
<type>CBS</type>
</statusDetails>
<statusDetails>
<indicator>NFL</indicator>
<type>TPS</type>
</statusDetails>
<statusDetails>
<indicator>NCW</indicator>
<type>WLS</type>
</statusDetails>
</paxStatus>
<accregReason>
<reasons>
<attributeDetails>
<attributeType>ARC</attributeType>
<attributeDescription>NO</attributeDescription>
</attributeDetails>
</reasons>
<deliveryInformation>
<freeTextQualification>
<textSubjectQualifier>3</textSubjectQualifier>
<informationType>AR</informationType>
</freeTextQualification>
<freeText>NOSHOW BY ONLOAD PROCESS</freeText>
</deliveryInformation>
</accregReason>
<regradeCabin>
<cabinCode>Y</cabinCode>
</regradeCabin>
<acceptanceChannel>
<acceptanceOrigin>
<originatorTypeCode>A</originatorTypeCode>
</acceptanceOrigin>
<applicationType>
<applicationDetails>
<internalId>JFE</internalId>
</applicationDetails>
</applicationType>
</acceptanceChannel>
</dcsLegInfo>
</legSection>
</dcsData>
</PNR_Reply>
#>
<#
$pnrRetrieveResponse is a variable of composite structure that represents the sample xml
Where-ObjectWithPath fill filter any piped element that doesn't satisfy the full resolution of the condition
For example path that lead to null values will considered invalid and silently rejected.
Knowledge of
- types entities is abstracted away.
- of intermediate structure (array or not) is abstracted away to a certain point
- Not worrying about null values
#>
$pnrRetrieveResponse.dataElementsMaster |Where-ObjectWithPath -Expression "dataElementsIndiv.serviceRequest.ssr.type" -eq "CTCE"
<# Goal and limitations
Create the following xml structure in memory from strictly typed objects
Example retrievalFacts.reservationOrProfileIdentifier.companyId=2
#>
<# Limitations
Types are generated from SOAP proxy
No dynamic objects can be used and full adherence to the typed objects is absolute
#>
<#
<pnr:PNR_Retrieve xmlns:pnr="http://xml.amadeus.com/PNRRET_16_1_1A">
<retrievalFacts>
<retrieve>
<type>2</type>
</retrieve>
<reservationOrProfileIdentifier>
<reservation>
<companyId>SN</companyId>
<controlNumber>MTHOH2</controlNumber>
</reservation>
</reservationOrProfileIdentifier>
</retrievalFacts>
</pnr:PNR_Retrieve>
#>
<#
Set-SegmentDeep represents and easier alternative to creating in between values for properties and arrays
Knowledge of
- types entities is abstracted away.
- of intermediate structure (array or not) is abstracted away to a certain point
#>
$pnrRetrieve = [SandBox_Alex1.PNR_Retrieve]::new()
$pnrRetrieve |
Set-SegmentDeep -Expression "retrievalFacts.retrieve.type" -Value 2 -PassThru |
Set-SegmentDeep -Expression "retrievalFacts.reservationOrProfileIdentifier.companyId" -Value "SN" -PassThru |
Set-SegmentDeep -Expression "retrievalFacts.reservationOrProfileIdentifier.controlNumber" -Value "MTHOH2"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment