How can reserve Air Seats for all segments in a given PNR? - sabre

I am planning to use the <AirSeatRQ> request using Sabre's SOAP API, but according to the documentation, you have to request a seat assignment for each passenger on each segment with the user's preference.
Something like this according to the example on Dev Studio:
<AirSeatRQ ReturnHostCommand="false" TimeStamp="2011-10-27T15:30:00-06:00" Version="2.0.0">
<!--Repeat Factor=0-->
<Seats>
<Seat BoardingPass="true" ChangeOfGauge="true" NameNumber="1.1" Number="21A" Preference="AN" SegmentNumber="1"/>
</Seats>
</AirSeatRQ>
Also, according to the request documentation, the repeat factor for the <Seats> request is zero. Does that mean that if I want to assign seats for all passengers on all segments do I have to send several requests?
Ideally, I would like to have the seats for all passengers in all segments automatically assigned after reading the PNR. Is that possible through Web Services?

Checking the <PassengerDetailsRQ> XML Schema definition, an <AirSeatRQ> can be sent along. I guess you can perform a standalone <AirSeatRQ> request, but bundling it with the passenger details is easier and save us from making extra requests to Sabre's API.
You have to send a <Seat\> request for each passenger in each segment of the itinerary. This is a working example I did for a two legs itinerary, each leg consisting of two segments for two adults:
I'm omitting most of the passenger details properties and focusing on the AirSeat element:
<PassengerDetailsRQ Version="2.3.0">
<PriceQuoteInfo HaltOnError="true"></PriceQuoteInfo>
<SpecialReqDetails>
<AddRemarkRQ>
<RemarkInfo>
<Remark Code="H" Type="General">
<Text>THANK YOU FOR BOOKING MAURICIO CUENCA AIRLINES</Text>
</Remark>
</RemarkInfo>
</AddRemarkRQ>
<AirSeatRQ>
<Seats>
<Seat NameNumber="1.1" Preference="AN" SegmentNumber="1"/>
<Seat NameNumber="1.2" Preference="AN" SegmentNumber="2"/>
<Seat NameNumber="1.1" Preference="AN" SegmentNumber="3"/>
<Seat NameNumber="1.2" Preference="AN" SegmentNumber="4"/>
</Seats>
</AirSeatRQ>
<SpecialServiceRQ HaltOnError="true">
<SpecialServiceInfo></SpecialServiceInfo>
</SpecialServiceRQ>
</SpecialReqDetails>
<TravelItineraryAddInfoRQ HaltOnError="true">
<AgencyInfo></AgencyInfo>
<CustomerInfo></CustomerInfo>
</TravelItineraryAddInfoRQ>
</PassengerDetailsRQ>
This way, right after the PNR is created, all seats for all passengers in every segment are already assigned and there is no need for further requests asking for seat assignments.

that seems to be the case.
Testing multiple <Seat> elements inside <Seats> returns a schema validation error. Same when using multiple <Seats> elements.
Looks like the only option right now is to send multiple requests, one for each passenger on each segment.

Related

Empty Results from Here API for the sample zipcodes

When I do the GET Request to the here API with the below zip codes I am getting an empty list. But When I google these zip codes, I can see that they are valid.
Here is the GET Request URL: https://geocode.search.hereapi.com/v1/geocode?qq=postalCode=[Insert-zip-code];country=USA&apiKey=[Insert-API-Key]
Below are the fallowing Zip Codes:
75046
34988
68902
45258
19486
88102
32245
28603
68501
93403
68602
91365
Try with https://geocode.search.hereapi.com/v1/geocode?q=postalCode=zip_code+USA&apiKey=your_api_key
Notice that there is only one q.
The above will work, but in some cases it will give you results not only from the United States.
Keep in mind what the API documentation says for this service:
Address lookup by postal code (SGP, IRL)
(...) This feature is available for these two countries only.
It's only for Ireland and Singapore.
There is an alternative for the United States (and Netherlands), but it requires the zip+4 code.
What is a Zip+4 Code?
A ZIP+4 code uses the basic five-digit code plus four additional
digits to identify a geographic segment within the five-digit delivery
area, such as a city block, a group of apartments, an individual
high-volume receiver of mail, a post office box, or a specific
delivery route
Example: https://geocode.search.hereapi.com/v1/geocode?qq=postalCode=60606-1506&apiKey=your_api_key
Notice that there are two q's.

How to get the list of bag options from a journey without recordlocator

We need to see if Ryan Air makes available the cabin bag option before booking.
Therefore what is the action verb we can use to get this list with flight information (itinerary, segment) ?
Thanks :)
Kind regards
It called "BrandedFares" attribute on the Sabre side. With BrandedFares option enabled, you get 1 basic price with its extra prices (cabin bag, meal, etc.).
If you're using BargainFinderMax operation to search and get flights, you have to set BrandedFareIndicators attribute as true, like this:
<TravelerInfoSummary>
<PriceRequestInformation>
<TPA_Extensions>
<BrandedFareIndicators MultipleBrandedFares="true"/>
</TPA_Extensions>
</PriceRequestInformation>
</TravelerInfoSummary>
And also, your PCC also have to be available and has access to get BrandedFares, you need to discuss it with your Sabre consultant.
Regards.

Number sequences hiding in TravelItineraryReadRQ

I'm using TravelItineraryReadRQ to get information about Price Quotes in pnr. In some cases service response hides number sequences with ("XXXX") even if it was not credit card information. For example:
PQ creation commatnd: WPASU‡EDUFS123456‡FINVOICE*QUW12345‡RQ«
and here is what I get in response:
<tir39:PricedItinerary DisplayOnly="false" InputMessage="WPASU¥EDUFS1XXXX6¥FINVOICE*QUW1XXX5¥RQ" RPH="1" StatusCode="A" StoredDateTime="2018-12-21T09:13" TaxExempt="false" ValidatingCarrier="SU">
<tir39:AirItineraryPricingInfo>
<tir39:ItinTotalFare>
<tir39:BaseFare Amount="1980" CurrencyCode="RUB"/>
<tir39:Taxes>
<tir39:Tax Amount="2541" TaxCode="XT"/>
<tir39:TaxBreakdownCode TaxPaid="false">2265YQ</tir39:TaxBreakdownCode>
<tir39:TaxBreakdownCode TaxPaid="false">276RI</tir39:TaxBreakdownCode>
</tir39:Taxes>
<tir39:TotalFare Amount="4521" CurrencyCode="RUB"/>
<tir39:Totals>
<tir39:BaseFare Amount="1980"/>
<tir39:Taxes>
<tir39:Tax Amount="2541"/>
</tir39:Taxes>
<tir39:TotalFare Amount="4521"/>
</tir39:Totals>
</tir39:ItinTotalFare>
<tir39:PassengerTypeQuantity Code="ADT" Quantity="01"/>
<tir39:PTC_FareBreakdown>
<tir39:Endorsements>
<tir39:Endorsement type="PRICING_PARAMETER">
<tir39:Text>WPASU$EDUFS1XXXX6$FINVOICE*QUW1XXX5$RQ</tir39:Text>
</tir39:Endorsement>
Is there any way to get those numbers?
I believe Sabre has logic on their end due to GDPR requirements that masks credit card info from being viewed unless you have the CC in the correct form of payment field AND your EPR has the "CCVIEW" attribute assigned.
Essentially, Sabre doesn't want CC data stored anywhere but the secured Form of Payment field and they control who can and cannot see that data by using the EPR Keywords (the login info you get from Sabre).
So, for your example, my guess is that Sabre's regex or whatever they use to identify credit card data sees your strings in those fields, assumes they are CC numbers, and masks them. You may want to open a ticket with Sabre to address this, or as Andy K suggested above, try adding CCVIEW to that EPR (although I think that probably won't work).

Sabre: "UNABLE TO ISSUE PARTIAL CONNECTION-TKT ENTIRE CONNECTION" error in AirTicketRQ

I'm trying to do an international flight ticketing for Multicity, but trying to do book/ticket each segment individually, So which means am trying to call AirTicket for each Segment.
While doing it, I'm getting this error :-
UNABLE TO ISSUE PARTIAL CONNECTION-TKT ENTIRE CONNECTION-2032
So in this case what am I supposed to do.
Any help appreciated, Thanks.
It will help more if you post your requests, but it seems the segments (called 'married segments' if the below applies to your itinerary) you are trying to issue should be ticketed together, in a single, AirTicket call:
From the documentation at format-finder.sabre.com:
--------------------------------
Cause:
This response occurs if you are trying to break Married Connection logic at the time of ticketing.
Note: At time of fare storage there are no longer married segment validation checks. Segment selection is permitted and fares may be stored even if segment selection breaks married segment logic.
Instead, the Sabre ticketing system performs Married Connection validation checks against the segments selected for ticket issuance at the point at which the ticket is issued. If the segments selected break a marriage, then the error response displays:
UNABLE TO ISSUE PARTIAL CONNECTION-TKT ENTIRE CONNECTION-1330
The only exception to this rule applies when issuing a ticket from a phase IV record. In this case, there is no married segment validation check performed.
Solution:
Issue the ticket for the complete itinerary or for all selected segments that qualify as married segments.
-or-
Phase IV the itinerary and issue the ticket(s).
Note: Your agency is responsible for the phase IV and for breaking married segment logic if a debit memo is issued by the carrier. See SabreTravelNetworkGuarantees for more information.
--------------------------------
Normally, depending on the service you are using to 'shop' for flights, there is a 'MarriageGrp' indicator stating that the segments are 'married'.

Sabre: How to pass 2 OTA_AirPriceRQ in EnhancedAirBookRQ?

How can I pass 2 OTA_AirPriceRQ in 1 EnhancedAirBookRQ for booking RoundTrip in Sabre?
Consider the below example:
<EnhancedAirBookRQ>
<OTA_AirBookRQ>
...
<FlightSegment>
<!-- Segment 1 Details -->
<FlightSegment/>
<FlightSegment>
<!-- Segment 2 Details -->
<FlightSegment/>
<OTA_AirPriceRQ>
<PriceRequestInformation>
<OptionalQualifiers>
<PricingQualifiers CurrencyCode='INR'>
<PassengerType Code='ADT' Force='true' Quantity='1'/>
</PricingQualifiers>
</OptionalQualifiers>
</PriceRequestInformation>
</OTA_AirPriceRQ>
<PostProcessing IgnoreAfter="false">
<RedisplayReservation/>
</PostProcessing>
<EnhancedAirBookRQ>
So from above code,I wanted to pass another OTA_AirPriceRQ for Segment 2, to achieve RoundTrip.
But I get error when I repeat OTA_AirPriceRQ Tag.
Try with SegmentSelect element under PriceRequestInformation/OptionalQualifiers/PricingQualifiers/ItineraryOptions.
By default, all segments will be priced the same way, so unless you want to do something special for particular segment/s, you don't need to add extra qualifiers.
OTA_AirPriceRQ is used to get pricing information (price breakdown) for a specific travel, however travel details (origin, destination, classes, flight numbers, etc) you have to provide in OTA_AirBookRQ. It's a part of a EnhancedAirBookRQ transaction you are using (but should be defined prior to OTA_AirPriceRQ in request xml)
To sum it up - when you provide in OTA_AirBookRQ information about outbound and inbound flight, then 1 OTA_AirPriceRQ returns you full pricing information (no seperate AirPriceRQ is required)
You can find more information here
https://developer.sabre.com/docs/read/soap_apis/air/book/orchestrated_air_booking

Resources