-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | Google QPX Express SDK.
--   
--   Finds the least expensive flights between an origin and a destination.
--   
--   <i>Warning:</i> This is an experimental prototype/preview release
--   which is still under exploratory development and not intended for
--   public use, caveat emptor!
--   
--   This library is compatible with version <tt>v1</tt> of the API.
@package gogol-qpxexpress
@version 0.3.0


module Network.Google.QPXExpress.Types

-- | Default request referring to version <tt>v1</tt> of the QPX Express
--   API. This contains the host and root path used as a starting point for
--   constructing service requests.
qPXExpressService :: ServiceConfig

-- | A QPX Express search response.
--   
--   <i>See:</i> <a>tripOptionsResponse</a> smart constructor.
data TripOptionsResponse

-- | Creates a value of <a>TripOptionsResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>torRequestId</a></li>
--   <li><a>torKind</a></li>
--   <li><a>torData</a></li>
--   <li><a>torTripOption</a></li>
--   </ul>
tripOptionsResponse :: TripOptionsResponse

-- | An identifier uniquely identifying this response.
torRequestId :: Lens' TripOptionsResponse (Maybe Text)

-- | Identifies this as a QPX Express trip response object, which consists
--   of zero or more solutions. Value: the fixed string
--   qpxexpress#tripOptions.
torKind :: Lens' TripOptionsResponse Text

-- | Informational data global to list of solutions.
torData :: Lens' TripOptionsResponse (Maybe Data')

-- | A list of priced itinerary solutions to the QPX Express query.
torTripOption :: Lens' TripOptionsResponse [TripOption]

-- | Information about a carrier (ie. an airline, bus line, railroad, etc)
--   that might be useful to display to an end-user.
--   
--   <i>See:</i> <a>carrierData</a> smart constructor.
data CarrierData

-- | Creates a value of <a>CarrierData</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cdKind</a></li>
--   <li><a>cdName</a></li>
--   <li><a>cdCode</a></li>
--   </ul>
carrierData :: CarrierData

-- | Identifies this as a kind of carrier (ie. an airline, bus line,
--   railroad, etc). Value: the fixed string qpxexpress#carrierData.
cdKind :: Lens' CarrierData Text

-- | The long, full name of a carrier. For example: American Airlines.
cdName :: Lens' CarrierData (Maybe Text)

-- | The IATA designator of a carrier (airline, etc). For example, for
--   American Airlines, the code is AA.
cdCode :: Lens' CarrierData (Maybe Text)

-- | Information about free baggage allowed on one segment of a trip.
--   
--   <i>See:</i> <a>freeBaggageAllowance</a> smart constructor.
data FreeBaggageAllowance

-- | Creates a value of <a>FreeBaggageAllowance</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>fbaKind</a></li>
--   <li><a>fbaPounds</a></li>
--   <li><a>fbaBagDescriptor</a></li>
--   <li><a>fbaKilosPerPiece</a></li>
--   <li><a>fbaKilos</a></li>
--   <li><a>fbaPieces</a></li>
--   </ul>
freeBaggageAllowance :: FreeBaggageAllowance

-- | Identifies this as free baggage object, allowed on one segment of a
--   trip. Value: the fixed string qpxexpress#freeBaggageAllowance.
fbaKind :: Lens' FreeBaggageAllowance Text

-- | The number of pounds of free baggage allowed.
fbaPounds :: Lens' FreeBaggageAllowance (Maybe Int32)

-- | A representation of a type of bag, such as an ATPCo subcode,
--   Commercial Name, or other description.
fbaBagDescriptor :: Lens' FreeBaggageAllowance [BagDescriptor]

-- | The maximum number of kilos any one piece of baggage may weigh.
fbaKilosPerPiece :: Lens' FreeBaggageAllowance (Maybe Int32)

-- | The maximum number of kilos all the free baggage together may weigh.
fbaKilos :: Lens' FreeBaggageAllowance (Maybe Int32)

-- | The number of free pieces of baggage allowed.
fbaPieces :: Lens' FreeBaggageAllowance (Maybe Int32)

-- | Two times in a single day defining a time range.
--   
--   <i>See:</i> <a>timeOfDayRange</a> smart constructor.
data TimeOfDayRange

-- | Creates a value of <a>TimeOfDayRange</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>todrKind</a></li>
--   <li><a>todrLatestTime</a></li>
--   <li><a>todrEarliestTime</a></li>
--   </ul>
timeOfDayRange :: TimeOfDayRange

-- | Identifies this as a time of day range object, representing two times
--   in a single day defining a time range. Value: the fixed string
--   qpxexpress#timeOfDayRange.
todrKind :: Lens' TimeOfDayRange Text

-- | The latest time of day in HH:MM format.
todrLatestTime :: Lens' TimeOfDayRange (Maybe Text)

-- | The earliest time of day in HH:MM format.
todrEarliestTime :: Lens' TimeOfDayRange (Maybe Text)

-- | Detailed information about components found in the solutions of this
--   response, including a trip's airport, city, taxes, airline, and
--   aircraft.
--   
--   <i>See:</i> <a>data'</a> smart constructor.
data Data'

-- | Creates a value of <a>Data</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dCarrier</a></li>
--   <li><a>dKind</a></li>
--   <li><a>dAircraft</a></li>
--   <li><a>dAirport</a></li>
--   <li><a>dCity</a></li>
--   <li><a>dTax</a></li>
--   </ul>
data' :: Data'

-- | The airline carrier of the aircraft flying between an origin and
--   destination. Allowed values are IATA carrier codes.
dCarrier :: Lens' Data' [CarrierData]

-- | Identifies this as QPX Express response resource, including a trip's
--   airport, city, taxes, airline, and aircraft. Value: the fixed string
--   qpxexpress#data.
dKind :: Lens' Data' Text

-- | The aircraft that is flying between an origin and destination.
dAircraft :: Lens' Data' [AircraftData]

-- | The airport of an origin or destination.
dAirport :: Lens' Data' [AirportData]

-- | The city that is either the origin or destination of part of a trip.
dCity :: Lens' Data' [CityData]

-- | The taxes due for flying between an origin and a destination.
dTax :: Lens' Data' [TaxData]

-- | The make, model, and type of an aircraft.
--   
--   <i>See:</i> <a>aircraftData</a> smart constructor.
data AircraftData

-- | Creates a value of <a>AircraftData</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>adKind</a></li>
--   <li><a>adName</a></li>
--   <li><a>adCode</a></li>
--   </ul>
aircraftData :: AircraftData

-- | Identifies this as an aircraftData object. Value: the fixed string
--   qpxexpress#aircraftData
adKind :: Lens' AircraftData Text

-- | The name of an aircraft, for example Boeing 777.
adName :: Lens' AircraftData (Maybe Text)

-- | The aircraft code. For example, for a Boeing 777 the code would be
--   777.
adCode :: Lens' AircraftData (Maybe Text)

-- | Information about a leg. (A leg is the smallest unit of travel, in the
--   case of a flight a takeoff immediately followed by a landing at two
--   set points on a particular carrier with a particular flight number.)
--   
--   <i>See:</i> <a>legInfo</a> smart constructor.
data LegInfo

-- | Creates a value of <a>LegInfo</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>liDestination</a></li>
--   <li><a>liOrigin</a></li>
--   <li><a>liSecure</a></li>
--   <li><a>liKind</a></li>
--   <li><a>liAircraft</a></li>
--   <li><a>liArrivalTime</a></li>
--   <li><a>liOnTimePerformance</a></li>
--   <li><a>liOperatingDisclosure</a></li>
--   <li><a>liMeal</a></li>
--   <li><a>liId</a></li>
--   <li><a>liOriginTerminal</a></li>
--   <li><a>liChangePlane</a></li>
--   <li><a>liDestinationTerminal</a></li>
--   <li><a>liConnectionDuration</a></li>
--   <li><a>liDuration</a></li>
--   <li><a>liMileage</a></li>
--   <li><a>liDePartureTime</a></li>
--   </ul>
legInfo :: LegInfo

-- | The leg destination as a city and airport.
liDestination :: Lens' LegInfo (Maybe Text)

-- | The leg origin as a city and airport.
liOrigin :: Lens' LegInfo (Maybe Text)

-- | Whether passenger information must be furnished to the United States
--   Transportation Security Administration (TSA) prior to departure.
liSecure :: Lens' LegInfo (Maybe Bool)

-- | Identifies this as a leg object. A leg is the smallest unit of travel,
--   in the case of a flight a takeoff immediately followed by a landing at
--   two set points on a particular carrier with a particular flight
--   number. Value: the fixed string qpxexpress#legInfo.
liKind :: Lens' LegInfo Text

-- | The aircraft (or bus, ferry, railcar, etc) travelling between the two
--   points of this leg.
liAircraft :: Lens' LegInfo (Maybe Text)

-- | The scheduled time of arrival at the destination of the leg, local to
--   the point of arrival.
liArrivalTime :: Lens' LegInfo (Maybe Text)

-- | In percent, the published on time performance on this leg.
liOnTimePerformance :: Lens' LegInfo (Maybe Int32)

-- | Department of Transportation disclosure information on the actual
--   operator of a flight in a code share. (A code share refers to a
--   marketing agreement between two carriers, where one carrier will list
--   in its schedules (and take bookings for) flights that are actually
--   operated by another carrier.)
liOperatingDisclosure :: Lens' LegInfo (Maybe Text)

-- | A simple, general description of the meal(s) served on the flight, for
--   example: "Hot meal".
liMeal :: Lens' LegInfo (Maybe Text)

-- | An identifier that uniquely identifies this leg in the solution.
liId :: Lens' LegInfo (Maybe Text)

-- | The terminal the flight is scheduled to depart from.
liOriginTerminal :: Lens' LegInfo (Maybe Text)

-- | Whether you have to change planes following this leg. Only applies to
--   the next leg.
liChangePlane :: Lens' LegInfo (Maybe Bool)

-- | The terminal the flight is scheduled to arrive at.
liDestinationTerminal :: Lens' LegInfo (Maybe Text)

-- | Duration of a connection following this leg, in minutes.
liConnectionDuration :: Lens' LegInfo (Maybe Int32)

-- | The scheduled travelling time from the origin to the destination.
liDuration :: Lens' LegInfo (Maybe Int32)

-- | The number of miles in this leg.
liMileage :: Lens' LegInfo (Maybe Int32)

-- | The scheduled departure time of the leg, local to the point of
--   departure.
liDePartureTime :: Lens' LegInfo (Maybe Text)

-- | An airport.
--   
--   <i>See:</i> <a>airportData</a> smart constructor.
data AirportData

-- | Creates a value of <a>AirportData</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>aKind</a></li>
--   <li><a>aName</a></li>
--   <li><a>aCity</a></li>
--   <li><a>aCode</a></li>
--   </ul>
airportData :: AirportData

-- | Identifies this as an airport object. Value: the fixed string
--   qpxexpress#airportData.
aKind :: Lens' AirportData Text

-- | The name of an airport. For example, for airport BOS the name is
--   "Boston Logan International".
aName :: Lens' AirportData (Maybe Text)

-- | The city code an airport is located in. For example, for JFK airport,
--   this is NYC.
aCity :: Lens' AirportData (Maybe Text)

-- | An airport's code. For example, for Boston Logan airport, this is BOS.
aCode :: Lens' AirportData (Maybe Text)

-- | The price of this segment.
--   
--   <i>See:</i> <a>segmentPricing</a> smart constructor.
data SegmentPricing

-- | Creates a value of <a>SegmentPricing</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>spFreeBaggageOption</a></li>
--   <li><a>spKind</a></li>
--   <li><a>spFareId</a></li>
--   <li><a>spSegmentId</a></li>
--   </ul>
segmentPricing :: SegmentPricing

-- | Details of the free baggage allowance on this segment.
spFreeBaggageOption :: Lens' SegmentPricing [FreeBaggageAllowance]

-- | Identifies this as a segment pricing object, representing the price of
--   this segment. Value: the fixed string qpxexpress#segmentPricing.
spKind :: Lens' SegmentPricing Text

-- | A segment identifier unique within a single solution. It is used to
--   refer to different parts of the same solution.
spFareId :: Lens' SegmentPricing (Maybe Text)

-- | Unique identifier in the response of this segment.
spSegmentId :: Lens' SegmentPricing (Maybe Text)

-- | Information about a slice. A slice represents a traveller's intent,
--   the portion of a low-fare search corresponding to a traveler's request
--   to get between two points. One-way journeys are generally expressed
--   using 1 slice, round-trips using 2. For example, if a traveler
--   specifies the following trip in a user interface: | Origin |
--   Destination | Departure Date | | BOS | LAX | March 10, 2007 | | LAX |
--   SYD | March 17, 2007 | | SYD | BOS | March 22, 2007 | then this is a
--   three slice trip.
--   
--   <i>See:</i> <a>sliceInfo</a> smart constructor.
data SliceInfo

-- | Creates a value of <a>SliceInfo</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>siKind</a></li>
--   <li><a>siSegment</a></li>
--   <li><a>siDuration</a></li>
--   </ul>
sliceInfo :: SliceInfo

-- | Identifies this as a slice object. A slice represents a traveller's
--   intent, the portion of a low-fare search corresponding to a traveler's
--   request to get between two points. One-way journeys are generally
--   expressed using 1 slice, round-trips using 2. Value: the fixed string
--   qpxexpress#sliceInfo.
siKind :: Lens' SliceInfo Text

-- | The segment(s) constituting the slice.
siSegment :: Lens' SliceInfo [SegmentInfo]

-- | The duration of the slice in minutes.
siDuration :: Lens' SliceInfo (Maybe Int32)

-- | A QPX Express search response.
--   
--   <i>See:</i> <a>tripsSearchResponse</a> smart constructor.
data TripsSearchResponse

-- | Creates a value of <a>TripsSearchResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tsrTrips</a></li>
--   <li><a>tsrKind</a></li>
--   </ul>
tripsSearchResponse :: TripsSearchResponse

-- | All possible solutions to the QPX Express search request.
tsrTrips :: Lens' TripsSearchResponse (Maybe TripOptionsResponse)

-- | Identifies this as a QPX Express API search response resource. Value:
--   the fixed string qpxExpress#tripsSearch.
tsrKind :: Lens' TripsSearchResponse Text

-- | Trip information.
--   
--   <i>See:</i> <a>tripOption</a> smart constructor.
data TripOption

-- | Creates a value of <a>TripOption</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>toPricing</a></li>
--   <li><a>toKind</a></li>
--   <li><a>toId</a></li>
--   <li><a>toSlice</a></li>
--   <li><a>toSaleTotal</a></li>
--   </ul>
tripOption :: TripOption

-- | Per passenger pricing information.
toPricing :: Lens' TripOption [PricingInfo]

-- | Identifies this as a trip information object. Value: the fixed string
--   qpxexpress#tripOption.
toKind :: Lens' TripOption Text

-- | Identifier uniquely identifying this trip in a response.
toId :: Lens' TripOption (Maybe Text)

-- | The slices that make up this trip's itinerary.
toSlice :: Lens' TripOption [SliceInfo]

-- | The total price for all passengers on the trip, in the form of a
--   currency followed by an amount, e.g. USD253.35.
toSaleTotal :: Lens' TripOption (Maybe Text)

-- | Information about an item of baggage.
--   
--   <i>See:</i> <a>bagDescriptor</a> smart constructor.
data BagDescriptor

-- | Creates a value of <a>BagDescriptor</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>bdKind</a></li>
--   <li><a>bdCommercialName</a></li>
--   <li><a>bdCount</a></li>
--   <li><a>bdDescription</a></li>
--   <li><a>bdSubcode</a></li>
--   </ul>
bagDescriptor :: BagDescriptor

-- | Identifies this as a baggage object. Value: the fixed string
--   qpxexpress#bagDescriptor.
bdKind :: Lens' BagDescriptor Text

-- | Provides the commercial name for an optional service.
bdCommercialName :: Lens' BagDescriptor (Maybe Text)

-- | How many of this type of bag will be checked on this flight.
bdCount :: Lens' BagDescriptor (Maybe Int32)

-- | A description of the baggage.
bdDescription :: Lens' BagDescriptor [Text]

-- | The standard IATA subcode used to identify this optional service.
bdSubcode :: Lens' BagDescriptor (Maybe Text)

-- | Information about a city that might be useful to an end-user;
--   typically the city of an airport.
--   
--   <i>See:</i> <a>cityData</a> smart constructor.
data CityData

-- | Creates a value of <a>CityData</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cCountry</a></li>
--   <li><a>cKind</a></li>
--   <li><a>cName</a></li>
--   <li><a>cCode</a></li>
--   </ul>
cityData :: CityData

-- | The two-character country code of the country the city is located in.
--   For example, US for the United States of America.
cCountry :: Lens' CityData (Maybe Text)

-- | Identifies this as a city, typically with one or more airports. Value:
--   the fixed string qpxexpress#cityData.
cKind :: Lens' CityData Text

-- | The full name of a city. An example would be: New York.
cName :: Lens' CityData (Maybe Text)

-- | The IATA character ID of a city. For example, for Boston this is BOS.
cCode :: Lens' CityData (Maybe Text)

-- | The number and type of passengers. Unfortunately the definition of an
--   infant, child, adult, and senior citizen varies across carriers and
--   reservation systems.
--   
--   <i>See:</i> <a>passengerCounts</a> smart constructor.
data PassengerCounts

-- | Creates a value of <a>PassengerCounts</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pcSeniorCount</a></li>
--   <li><a>pcKind</a></li>
--   <li><a>pcInfantInLapCount</a></li>
--   <li><a>pcChildCount</a></li>
--   <li><a>pcInfantInSeatCount</a></li>
--   <li><a>pcAdultCount</a></li>
--   </ul>
passengerCounts :: PassengerCounts

-- | The number of passengers that are senior citizens.
pcSeniorCount :: Lens' PassengerCounts (Maybe Int32)

-- | Identifies this as a passenger count object, representing the number
--   of passengers. Value: the fixed string qpxexpress#passengerCounts.
pcKind :: Lens' PassengerCounts Text

-- | The number of passengers that are infants travelling in the lap of an
--   adult.
pcInfantInLapCount :: Lens' PassengerCounts (Maybe Int32)

-- | The number of passengers that are children.
pcChildCount :: Lens' PassengerCounts (Maybe Int32)

-- | The number of passengers that are infants each assigned a seat.
pcInfantInSeatCount :: Lens' PassengerCounts (Maybe Int32)

-- | The number of passengers that are adults.
pcAdultCount :: Lens' PassengerCounts (Maybe Int32)

-- | Details of a segment of a flight; a segment is one or more consecutive
--   legs on the same flight. For example a hypothetical flight ZZ001, from
--   DFW to OGG, would have one segment with two legs: DFW to HNL (leg 1),
--   HNL to OGG (leg 2), and DFW to OGG (legs 1 and 2).
--   
--   <i>See:</i> <a>segmentInfo</a> smart constructor.
data SegmentInfo

-- | Creates a value of <a>SegmentInfo</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>sBookingCode</a></li>
--   <li><a>sCabin</a></li>
--   <li><a>sBookingCodeCount</a></li>
--   <li><a>sSubjectToGovernmentApproval</a></li>
--   <li><a>sKind</a></li>
--   <li><a>sFlight</a></li>
--   <li><a>sId</a></li>
--   <li><a>sMarriedSegmentGroup</a></li>
--   <li><a>sConnectionDuration</a></li>
--   <li><a>sDuration</a></li>
--   <li><a>sLeg</a></li>
--   </ul>
segmentInfo :: SegmentInfo

-- | The booking code or class for this segment.
sBookingCode :: Lens' SegmentInfo (Maybe Text)

-- | The cabin booked for this segment.
sCabin :: Lens' SegmentInfo (Maybe Text)

-- | The number of seats available in this booking code on this segment.
sBookingCodeCount :: Lens' SegmentInfo (Maybe Int32)

-- | Whether the operation of this segment remains subject to government
--   approval.
sSubjectToGovernmentApproval :: Lens' SegmentInfo (Maybe Bool)

-- | Identifies this as a segment object. A segment is one or more
--   consecutive legs on the same flight. For example a hypothetical flight
--   ZZ001, from DFW to OGG, could have one segment with two legs: DFW to
--   HNL (leg 1), HNL to OGG (leg 2). Value: the fixed string
--   qpxexpress#segmentInfo.
sKind :: Lens' SegmentInfo Text

-- | The flight this is a segment of.
sFlight :: Lens' SegmentInfo (Maybe FlightInfo)

-- | An id uniquely identifying the segment in the solution.
sId :: Lens' SegmentInfo (Maybe Text)

-- | The solution-based index of a segment in a married segment group.
--   Married segments can only be booked together. For example, an airline
--   might report a certain booking code as sold out from Boston to
--   Pittsburgh, but as available as part of two married segments Boston to
--   Chicago connecting through Pittsburgh. For example content of this
--   field, consider the round-trip flight ZZ1 PHX-PHL ZZ2 PHL-CLT ZZ3
--   CLT-PHX. This has three segments, with the two outbound ones (ZZ1 ZZ2)
--   married. In this case, the two outbound segments belong to married
--   segment group 0, and the return segment belongs to married segment
--   group 1.
sMarriedSegmentGroup :: Lens' SegmentInfo (Maybe Text)

-- | In minutes, the duration of the connection following this segment.
sConnectionDuration :: Lens' SegmentInfo (Maybe Int32)

-- | The duration of the flight segment in minutes.
sDuration :: Lens' SegmentInfo (Maybe Int32)

-- | The legs composing this segment.
sLeg :: Lens' SegmentInfo [LegInfo]

-- | Tax data.
--   
--   <i>See:</i> <a>taxData</a> smart constructor.
data TaxData

-- | Creates a value of <a>TaxData</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tdKind</a></li>
--   <li><a>tdName</a></li>
--   <li><a>tdId</a></li>
--   </ul>
taxData :: TaxData

-- | Identifies this as a tax data object, representing some tax. Value:
--   the fixed string qpxexpress#taxData.
tdKind :: Lens' TaxData Text

-- | The name of a tax.
tdName :: Lens' TaxData (Maybe Text)

-- | An identifier uniquely identifying a tax in a response.
tdId :: Lens' TaxData (Maybe Text)

-- | A QPX Express search request.
--   
--   <i>See:</i> <a>tripsSearchRequest</a> smart constructor.
data TripsSearchRequest

-- | Creates a value of <a>TripsSearchRequest</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tsrRequest</a></li>
--   </ul>
tripsSearchRequest :: TripsSearchRequest

-- | A QPX Express search request. Required values are at least one adult
--   or senior passenger, an origin, a destination, and a date.
tsrRequest :: Lens' TripsSearchRequest (Maybe TripOptionsRequest)

-- | Tax information.
--   
--   <i>See:</i> <a>taxInfo</a> smart constructor.
data TaxInfo

-- | Creates a value of <a>TaxInfo</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tiChargeType</a></li>
--   <li><a>tiCountry</a></li>
--   <li><a>tiKind</a></li>
--   <li><a>tiSalePrice</a></li>
--   <li><a>tiCode</a></li>
--   <li><a>tiId</a></li>
--   </ul>
taxInfo :: TaxInfo

-- | Whether this is a government charge or a carrier surcharge.
tiChargeType :: Lens' TaxInfo (Maybe Text)

-- | For government charges, the country levying the charge.
tiCountry :: Lens' TaxInfo (Maybe Text)

-- | Identifies this as a tax information object. Value: the fixed string
--   qpxexpress#taxInfo.
tiKind :: Lens' TaxInfo Text

-- | The price of the tax in the sales or equivalent currency.
tiSalePrice :: Lens' TaxInfo (Maybe Text)

-- | The code to enter in the ticket's tax box.
tiCode :: Lens' TaxInfo (Maybe Text)

-- | Identifier uniquely identifying this tax in a response. Not present
--   for unnamed carrier surcharges.
tiId :: Lens' TaxInfo (Maybe Text)

-- | The price of one or more travel segments. The currency used to
--   purchase tickets is usually determined by the sale/ticketing city or
--   the sale/ticketing country, unless none are specified, in which case
--   it defaults to that of the journey origin country.
--   
--   <i>See:</i> <a>pricingInfo</a> smart constructor.
data PricingInfo

-- | Creates a value of <a>PricingInfo</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>piSaleTaxTotal</a></li>
--   <li><a>piRefundable</a></li>
--   <li><a>piPtc</a></li>
--   <li><a>piBaseFareTotal</a></li>
--   <li><a>piFare</a></li>
--   <li><a>piKind</a></li>
--   <li><a>piSegmentPricing</a></li>
--   <li><a>piPassengers</a></li>
--   <li><a>piFareCalculation</a></li>
--   <li><a>piLatestTicketingTime</a></li>
--   <li><a>piTax</a></li>
--   <li><a>piSaleTotal</a></li>
--   <li><a>piSaleFareTotal</a></li>
--   </ul>
pricingInfo :: PricingInfo

-- | The taxes in the sale or equivalent currency.
piSaleTaxTotal :: Lens' PricingInfo (Maybe Text)

-- | Whether the fares on this pricing are refundable.
piRefundable :: Lens' PricingInfo (Maybe Bool)

-- | The passenger type code for this pricing. An alphanumeric code used by
--   a carrier to restrict fares to certain categories of passenger. For
--   instance, a fare might be valid only for senior citizens.
piPtc :: Lens' PricingInfo (Maybe Text)

-- | The total fare in the base fare currency (the currency of the country
--   of origin). This element is only present when the sales currency and
--   the currency of the country of commencement are different.
piBaseFareTotal :: Lens' PricingInfo (Maybe Text)

-- | The fare used to price one or more segments.
piFare :: Lens' PricingInfo [FareInfo]

-- | Identifies this as a pricing object, representing the price of one or
--   more travel segments. Value: the fixed string qpxexpress#pricingInfo.
piKind :: Lens' PricingInfo Text

-- | The per-segment price and baggage information.
piSegmentPricing :: Lens' PricingInfo [SegmentPricing]

-- | The number of passengers to which this price applies.
piPassengers :: Lens' PricingInfo (Maybe PassengerCounts)

-- | The horizontal fare calculation. This is a field on a ticket that
--   displays all of the relevant items that go into the calculation of the
--   fare.
piFareCalculation :: Lens' PricingInfo (Maybe Text)

-- | The latest ticketing time for this pricing assuming the reservation
--   occurs at ticketing time and there is no change in fares/rules. The
--   time is local to the point of sale (POS).
piLatestTicketingTime :: Lens' PricingInfo (Maybe Text)

-- | The taxes used to calculate the tax total per ticket.
piTax :: Lens' PricingInfo [TaxInfo]

-- | Total per-passenger price (fare and tax) in the sale or equivalent
--   currency.
piSaleTotal :: Lens' PricingInfo (Maybe Text)

-- | The total fare in the sale or equivalent currency.
piSaleFareTotal :: Lens' PricingInfo (Maybe Text)

-- | A flight is a sequence of legs with the same airline carrier and
--   flight number. (A leg is the smallest unit of travel, in the case of a
--   flight a takeoff immediately followed by a landing at two set points
--   on a particular carrier with a particular flight number.) The naive
--   view is that a flight is scheduled travel of an aircraft between two
--   points, with possibly intermediate stops, but carriers will frequently
--   list flights that require a change of aircraft between legs.
--   
--   <i>See:</i> <a>flightInfo</a> smart constructor.
data FlightInfo

-- | Creates a value of <a>FlightInfo</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>fiCarrier</a></li>
--   <li><a>fiNumber</a></li>
--   </ul>
flightInfo :: FlightInfo
fiCarrier :: Lens' FlightInfo (Maybe Text)

-- | The flight number.
fiNumber :: Lens' FlightInfo (Maybe Text)

-- | Complete information about a fare used in the solution to a low-fare
--   search query. In the airline industry a fare is a price an airline
--   charges for one-way travel between two points. A fare typically
--   contains a carrier code, two city codes, a price, and a fare basis. (A
--   fare basis is a one-to-eight character alphanumeric code used to
--   identify a fare.)
--   
--   <i>See:</i> <a>fareInfo</a> smart constructor.
data FareInfo

-- | Creates a value of <a>FareInfo</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>fCarrier</a></li>
--   <li><a>fDestination</a></li>
--   <li><a>fOrigin</a></li>
--   <li><a>fPrivate</a></li>
--   <li><a>fKind</a></li>
--   <li><a>fBasisCode</a></li>
--   <li><a>fId</a></li>
--   </ul>
fareInfo :: FareInfo

-- | The carrier of the aircraft or other vehicle commuting between two
--   points.
fCarrier :: Lens' FareInfo (Maybe Text)

-- | The city code of the city the trip ends at.
fDestination :: Lens' FareInfo (Maybe Text)

-- | The city code of the city the trip begins at.
fOrigin :: Lens' FareInfo (Maybe Text)

-- | Whether this is a private fare, for example one offered only to select
--   customers rather than the general public.
fPrivate :: Lens' FareInfo (Maybe Bool)

-- | Identifies this as a fare object. Value: the fixed string
--   qpxexpress#fareInfo.
fKind :: Lens' FareInfo Text
fBasisCode :: Lens' FareInfo (Maybe Text)

-- | A unique identifier of the fare.
fId :: Lens' FareInfo (Maybe Text)

-- | A QPX Express search request, which will yield one or more solutions.
--   
--   <i>See:</i> <a>tripOptionsRequest</a> smart constructor.
data TripOptionsRequest

-- | Creates a value of <a>TripOptionsRequest</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>torRefundable</a></li>
--   <li><a>torSaleCountry</a></li>
--   <li><a>torPassengers</a></li>
--   <li><a>torTicketingCountry</a></li>
--   <li><a>torSolutions</a></li>
--   <li><a>torSlice</a></li>
--   <li><a>torMaxPrice</a></li>
--   </ul>
tripOptionsRequest :: TripOptionsRequest

-- | Return only solutions with refundable fares.
torRefundable :: Lens' TripOptionsRequest (Maybe Bool)

-- | IATA country code representing the point of sale. This determines the
--   "equivalent amount paid" currency for the ticket.
torSaleCountry :: Lens' TripOptionsRequest (Maybe Text)

-- | Counts for each passenger type in the request.
torPassengers :: Lens' TripOptionsRequest (Maybe PassengerCounts)

-- | IATA country code representing the point of ticketing.
torTicketingCountry :: Lens' TripOptionsRequest (Maybe Text)

-- | The number of solutions to return, maximum 500.
torSolutions :: Lens' TripOptionsRequest (Maybe Int32)

-- | The slices that make up the itinerary of this trip. A slice represents
--   a traveler's intent, the portion of a low-fare search corresponding to
--   a traveler's request to get between two points. One-way journeys are
--   generally expressed using one slice, round-trips using two. An example
--   of a one slice trip with three segments might be BOS-SYD, SYD-LAX,
--   LAX-BOS if the traveler only stopped in SYD and LAX just long enough
--   to change planes.
torSlice :: Lens' TripOptionsRequest [SliceInput]

-- | Do not return solutions that cost more than this price. The
--   alphabetical part of the price is in ISO 4217. The format, in regex,
--   is [A-Z]{3}\d+(\.\d+)? Example: $102.07
torMaxPrice :: Lens' TripOptionsRequest (Maybe Text)

-- | Criteria a desired slice must satisfy.
--   
--   <i>See:</i> <a>sliceInput</a> smart constructor.
data SliceInput

-- | Creates a value of <a>SliceInput</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>sliDestination</a></li>
--   <li><a>sliOrigin</a></li>
--   <li><a>sliMaxStops</a></li>
--   <li><a>sliKind</a></li>
--   <li><a>sliProhibitedCarrier</a></li>
--   <li><a>sliDate</a></li>
--   <li><a>sliMaxConnectionDuration</a></li>
--   <li><a>sliPreferredCabin</a></li>
--   <li><a>sliPermittedDePartureTime</a></li>
--   <li><a>sliPermittedCarrier</a></li>
--   <li><a>sliAlliance</a></li>
--   </ul>
sliceInput :: SliceInput

-- | Airport or city IATA designator of the destination.
sliDestination :: Lens' SliceInput (Maybe Text)

-- | Airport or city IATA designator of the origin.
sliOrigin :: Lens' SliceInput (Maybe Text)

-- | The maximum number of stops you are willing to accept in this slice.
sliMaxStops :: Lens' SliceInput (Maybe Int32)

-- | Identifies this as a slice input object, representing the criteria a
--   desired slice must satisfy. Value: the fixed string
--   qpxexpress#sliceInput.
sliKind :: Lens' SliceInput Text

-- | A list of 2-letter IATA airline designators. Exclude slices that use
--   these carriers.
sliProhibitedCarrier :: Lens' SliceInput [Text]

-- | Departure date in YYYY-MM-DD format.
sliDate :: Lens' SliceInput (Maybe Text)

-- | The longest connection between two legs, in minutes, you are willing
--   to accept.
sliMaxConnectionDuration :: Lens' SliceInput (Maybe Int32)

-- | Prefer solutions that book in this cabin for this slice. Allowed
--   values are COACH, PREMIUM_COACH, BUSINESS, and FIRST.
sliPreferredCabin :: Lens' SliceInput (Maybe Text)

-- | Slices must depart in this time of day range, local to the point of
--   departure.
sliPermittedDePartureTime :: Lens' SliceInput (Maybe TimeOfDayRange)

-- | A list of 2-letter IATA airline designators. Slices with only these
--   carriers should be returned.
sliPermittedCarrier :: Lens' SliceInput [Text]

-- | Slices with only the carriers in this alliance should be returned; do
--   not use this field with permittedCarrier. Allowed values are ONEWORLD,
--   SKYTEAM, and STAR.
sliAlliance :: Lens' SliceInput (Maybe Text)


-- | Returns a list of flights.
--   
--   <i>See:</i> <a>QPX Express API Reference</a> for
--   <tt>qpxExpress.trips.search</tt>.
module Network.Google.Resource.QPXExpress.Trips.Search

-- | A resource alias for <tt>qpxExpress.trips.search</tt> method which the
--   <a>TripsSearch</a> request conforms to.
type TripsSearchResource = "qpxExpress" :> ("v1" :> ("trips" :> ("search" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] TripsSearchRequest :> Post '[JSON] TripsSearchResponse)))))

-- | Creates a value of <a>TripsSearch</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tsPayload</a></li>
--   </ul>
tripsSearch :: TripsSearchRequest -> TripsSearch

-- | Returns a list of flights.
--   
--   <i>See:</i> <a>tripsSearch</a> smart constructor.
data TripsSearch

-- | Multipart request metadata.
tsPayload :: Lens' TripsSearch TripsSearchRequest
instance GHC.Generics.Generic Network.Google.Resource.QPXExpress.Trips.Search.TripsSearch
instance Data.Data.Data Network.Google.Resource.QPXExpress.Trips.Search.TripsSearch
instance GHC.Show.Show Network.Google.Resource.QPXExpress.Trips.Search.TripsSearch
instance GHC.Classes.Eq Network.Google.Resource.QPXExpress.Trips.Search.TripsSearch
instance Network.Google.Types.GoogleRequest Network.Google.Resource.QPXExpress.Trips.Search.TripsSearch


-- | Finds the least expensive flights between an origin and a destination.
--   
--   <i>See:</i> <a>QPX Express API Reference</a>
module Network.Google.QPXExpress

-- | Default request referring to version <tt>v1</tt> of the QPX Express
--   API. This contains the host and root path used as a starting point for
--   constructing service requests.
qPXExpressService :: ServiceConfig

-- | Represents the entirety of the methods and resources available for the
--   QPX Express API service.
type QPXExpressAPI = TripsSearchResource

-- | A QPX Express search response.
--   
--   <i>See:</i> <a>tripOptionsResponse</a> smart constructor.
data TripOptionsResponse

-- | Creates a value of <a>TripOptionsResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>torRequestId</a></li>
--   <li><a>torKind</a></li>
--   <li><a>torData</a></li>
--   <li><a>torTripOption</a></li>
--   </ul>
tripOptionsResponse :: TripOptionsResponse

-- | An identifier uniquely identifying this response.
torRequestId :: Lens' TripOptionsResponse (Maybe Text)

-- | Identifies this as a QPX Express trip response object, which consists
--   of zero or more solutions. Value: the fixed string
--   qpxexpress#tripOptions.
torKind :: Lens' TripOptionsResponse Text

-- | Informational data global to list of solutions.
torData :: Lens' TripOptionsResponse (Maybe Data')

-- | A list of priced itinerary solutions to the QPX Express query.
torTripOption :: Lens' TripOptionsResponse [TripOption]

-- | Information about a carrier (ie. an airline, bus line, railroad, etc)
--   that might be useful to display to an end-user.
--   
--   <i>See:</i> <a>carrierData</a> smart constructor.
data CarrierData

-- | Creates a value of <a>CarrierData</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cdKind</a></li>
--   <li><a>cdName</a></li>
--   <li><a>cdCode</a></li>
--   </ul>
carrierData :: CarrierData

-- | Identifies this as a kind of carrier (ie. an airline, bus line,
--   railroad, etc). Value: the fixed string qpxexpress#carrierData.
cdKind :: Lens' CarrierData Text

-- | The long, full name of a carrier. For example: American Airlines.
cdName :: Lens' CarrierData (Maybe Text)

-- | The IATA designator of a carrier (airline, etc). For example, for
--   American Airlines, the code is AA.
cdCode :: Lens' CarrierData (Maybe Text)

-- | Information about free baggage allowed on one segment of a trip.
--   
--   <i>See:</i> <a>freeBaggageAllowance</a> smart constructor.
data FreeBaggageAllowance

-- | Creates a value of <a>FreeBaggageAllowance</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>fbaKind</a></li>
--   <li><a>fbaPounds</a></li>
--   <li><a>fbaBagDescriptor</a></li>
--   <li><a>fbaKilosPerPiece</a></li>
--   <li><a>fbaKilos</a></li>
--   <li><a>fbaPieces</a></li>
--   </ul>
freeBaggageAllowance :: FreeBaggageAllowance

-- | Identifies this as free baggage object, allowed on one segment of a
--   trip. Value: the fixed string qpxexpress#freeBaggageAllowance.
fbaKind :: Lens' FreeBaggageAllowance Text

-- | The number of pounds of free baggage allowed.
fbaPounds :: Lens' FreeBaggageAllowance (Maybe Int32)

-- | A representation of a type of bag, such as an ATPCo subcode,
--   Commercial Name, or other description.
fbaBagDescriptor :: Lens' FreeBaggageAllowance [BagDescriptor]

-- | The maximum number of kilos any one piece of baggage may weigh.
fbaKilosPerPiece :: Lens' FreeBaggageAllowance (Maybe Int32)

-- | The maximum number of kilos all the free baggage together may weigh.
fbaKilos :: Lens' FreeBaggageAllowance (Maybe Int32)

-- | The number of free pieces of baggage allowed.
fbaPieces :: Lens' FreeBaggageAllowance (Maybe Int32)

-- | Two times in a single day defining a time range.
--   
--   <i>See:</i> <a>timeOfDayRange</a> smart constructor.
data TimeOfDayRange

-- | Creates a value of <a>TimeOfDayRange</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>todrKind</a></li>
--   <li><a>todrLatestTime</a></li>
--   <li><a>todrEarliestTime</a></li>
--   </ul>
timeOfDayRange :: TimeOfDayRange

-- | Identifies this as a time of day range object, representing two times
--   in a single day defining a time range. Value: the fixed string
--   qpxexpress#timeOfDayRange.
todrKind :: Lens' TimeOfDayRange Text

-- | The latest time of day in HH:MM format.
todrLatestTime :: Lens' TimeOfDayRange (Maybe Text)

-- | The earliest time of day in HH:MM format.
todrEarliestTime :: Lens' TimeOfDayRange (Maybe Text)

-- | Detailed information about components found in the solutions of this
--   response, including a trip's airport, city, taxes, airline, and
--   aircraft.
--   
--   <i>See:</i> <a>data'</a> smart constructor.
data Data'

-- | Creates a value of <a>Data</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dCarrier</a></li>
--   <li><a>dKind</a></li>
--   <li><a>dAircraft</a></li>
--   <li><a>dAirport</a></li>
--   <li><a>dCity</a></li>
--   <li><a>dTax</a></li>
--   </ul>
data' :: Data'

-- | The airline carrier of the aircraft flying between an origin and
--   destination. Allowed values are IATA carrier codes.
dCarrier :: Lens' Data' [CarrierData]

-- | Identifies this as QPX Express response resource, including a trip's
--   airport, city, taxes, airline, and aircraft. Value: the fixed string
--   qpxexpress#data.
dKind :: Lens' Data' Text

-- | The aircraft that is flying between an origin and destination.
dAircraft :: Lens' Data' [AircraftData]

-- | The airport of an origin or destination.
dAirport :: Lens' Data' [AirportData]

-- | The city that is either the origin or destination of part of a trip.
dCity :: Lens' Data' [CityData]

-- | The taxes due for flying between an origin and a destination.
dTax :: Lens' Data' [TaxData]

-- | The make, model, and type of an aircraft.
--   
--   <i>See:</i> <a>aircraftData</a> smart constructor.
data AircraftData

-- | Creates a value of <a>AircraftData</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>adKind</a></li>
--   <li><a>adName</a></li>
--   <li><a>adCode</a></li>
--   </ul>
aircraftData :: AircraftData

-- | Identifies this as an aircraftData object. Value: the fixed string
--   qpxexpress#aircraftData
adKind :: Lens' AircraftData Text

-- | The name of an aircraft, for example Boeing 777.
adName :: Lens' AircraftData (Maybe Text)

-- | The aircraft code. For example, for a Boeing 777 the code would be
--   777.
adCode :: Lens' AircraftData (Maybe Text)

-- | Information about a leg. (A leg is the smallest unit of travel, in the
--   case of a flight a takeoff immediately followed by a landing at two
--   set points on a particular carrier with a particular flight number.)
--   
--   <i>See:</i> <a>legInfo</a> smart constructor.
data LegInfo

-- | Creates a value of <a>LegInfo</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>liDestination</a></li>
--   <li><a>liOrigin</a></li>
--   <li><a>liSecure</a></li>
--   <li><a>liKind</a></li>
--   <li><a>liAircraft</a></li>
--   <li><a>liArrivalTime</a></li>
--   <li><a>liOnTimePerformance</a></li>
--   <li><a>liOperatingDisclosure</a></li>
--   <li><a>liMeal</a></li>
--   <li><a>liId</a></li>
--   <li><a>liOriginTerminal</a></li>
--   <li><a>liChangePlane</a></li>
--   <li><a>liDestinationTerminal</a></li>
--   <li><a>liConnectionDuration</a></li>
--   <li><a>liDuration</a></li>
--   <li><a>liMileage</a></li>
--   <li><a>liDePartureTime</a></li>
--   </ul>
legInfo :: LegInfo

-- | The leg destination as a city and airport.
liDestination :: Lens' LegInfo (Maybe Text)

-- | The leg origin as a city and airport.
liOrigin :: Lens' LegInfo (Maybe Text)

-- | Whether passenger information must be furnished to the United States
--   Transportation Security Administration (TSA) prior to departure.
liSecure :: Lens' LegInfo (Maybe Bool)

-- | Identifies this as a leg object. A leg is the smallest unit of travel,
--   in the case of a flight a takeoff immediately followed by a landing at
--   two set points on a particular carrier with a particular flight
--   number. Value: the fixed string qpxexpress#legInfo.
liKind :: Lens' LegInfo Text

-- | The aircraft (or bus, ferry, railcar, etc) travelling between the two
--   points of this leg.
liAircraft :: Lens' LegInfo (Maybe Text)

-- | The scheduled time of arrival at the destination of the leg, local to
--   the point of arrival.
liArrivalTime :: Lens' LegInfo (Maybe Text)

-- | In percent, the published on time performance on this leg.
liOnTimePerformance :: Lens' LegInfo (Maybe Int32)

-- | Department of Transportation disclosure information on the actual
--   operator of a flight in a code share. (A code share refers to a
--   marketing agreement between two carriers, where one carrier will list
--   in its schedules (and take bookings for) flights that are actually
--   operated by another carrier.)
liOperatingDisclosure :: Lens' LegInfo (Maybe Text)

-- | A simple, general description of the meal(s) served on the flight, for
--   example: "Hot meal".
liMeal :: Lens' LegInfo (Maybe Text)

-- | An identifier that uniquely identifies this leg in the solution.
liId :: Lens' LegInfo (Maybe Text)

-- | The terminal the flight is scheduled to depart from.
liOriginTerminal :: Lens' LegInfo (Maybe Text)

-- | Whether you have to change planes following this leg. Only applies to
--   the next leg.
liChangePlane :: Lens' LegInfo (Maybe Bool)

-- | The terminal the flight is scheduled to arrive at.
liDestinationTerminal :: Lens' LegInfo (Maybe Text)

-- | Duration of a connection following this leg, in minutes.
liConnectionDuration :: Lens' LegInfo (Maybe Int32)

-- | The scheduled travelling time from the origin to the destination.
liDuration :: Lens' LegInfo (Maybe Int32)

-- | The number of miles in this leg.
liMileage :: Lens' LegInfo (Maybe Int32)

-- | The scheduled departure time of the leg, local to the point of
--   departure.
liDePartureTime :: Lens' LegInfo (Maybe Text)

-- | An airport.
--   
--   <i>See:</i> <a>airportData</a> smart constructor.
data AirportData

-- | Creates a value of <a>AirportData</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>aKind</a></li>
--   <li><a>aName</a></li>
--   <li><a>aCity</a></li>
--   <li><a>aCode</a></li>
--   </ul>
airportData :: AirportData

-- | Identifies this as an airport object. Value: the fixed string
--   qpxexpress#airportData.
aKind :: Lens' AirportData Text

-- | The name of an airport. For example, for airport BOS the name is
--   "Boston Logan International".
aName :: Lens' AirportData (Maybe Text)

-- | The city code an airport is located in. For example, for JFK airport,
--   this is NYC.
aCity :: Lens' AirportData (Maybe Text)

-- | An airport's code. For example, for Boston Logan airport, this is BOS.
aCode :: Lens' AirportData (Maybe Text)

-- | The price of this segment.
--   
--   <i>See:</i> <a>segmentPricing</a> smart constructor.
data SegmentPricing

-- | Creates a value of <a>SegmentPricing</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>spFreeBaggageOption</a></li>
--   <li><a>spKind</a></li>
--   <li><a>spFareId</a></li>
--   <li><a>spSegmentId</a></li>
--   </ul>
segmentPricing :: SegmentPricing

-- | Details of the free baggage allowance on this segment.
spFreeBaggageOption :: Lens' SegmentPricing [FreeBaggageAllowance]

-- | Identifies this as a segment pricing object, representing the price of
--   this segment. Value: the fixed string qpxexpress#segmentPricing.
spKind :: Lens' SegmentPricing Text

-- | A segment identifier unique within a single solution. It is used to
--   refer to different parts of the same solution.
spFareId :: Lens' SegmentPricing (Maybe Text)

-- | Unique identifier in the response of this segment.
spSegmentId :: Lens' SegmentPricing (Maybe Text)

-- | Information about a slice. A slice represents a traveller's intent,
--   the portion of a low-fare search corresponding to a traveler's request
--   to get between two points. One-way journeys are generally expressed
--   using 1 slice, round-trips using 2. For example, if a traveler
--   specifies the following trip in a user interface: | Origin |
--   Destination | Departure Date | | BOS | LAX | March 10, 2007 | | LAX |
--   SYD | March 17, 2007 | | SYD | BOS | March 22, 2007 | then this is a
--   three slice trip.
--   
--   <i>See:</i> <a>sliceInfo</a> smart constructor.
data SliceInfo

-- | Creates a value of <a>SliceInfo</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>siKind</a></li>
--   <li><a>siSegment</a></li>
--   <li><a>siDuration</a></li>
--   </ul>
sliceInfo :: SliceInfo

-- | Identifies this as a slice object. A slice represents a traveller's
--   intent, the portion of a low-fare search corresponding to a traveler's
--   request to get between two points. One-way journeys are generally
--   expressed using 1 slice, round-trips using 2. Value: the fixed string
--   qpxexpress#sliceInfo.
siKind :: Lens' SliceInfo Text

-- | The segment(s) constituting the slice.
siSegment :: Lens' SliceInfo [SegmentInfo]

-- | The duration of the slice in minutes.
siDuration :: Lens' SliceInfo (Maybe Int32)

-- | A QPX Express search response.
--   
--   <i>See:</i> <a>tripsSearchResponse</a> smart constructor.
data TripsSearchResponse

-- | Creates a value of <a>TripsSearchResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tsrTrips</a></li>
--   <li><a>tsrKind</a></li>
--   </ul>
tripsSearchResponse :: TripsSearchResponse

-- | All possible solutions to the QPX Express search request.
tsrTrips :: Lens' TripsSearchResponse (Maybe TripOptionsResponse)

-- | Identifies this as a QPX Express API search response resource. Value:
--   the fixed string qpxExpress#tripsSearch.
tsrKind :: Lens' TripsSearchResponse Text

-- | Trip information.
--   
--   <i>See:</i> <a>tripOption</a> smart constructor.
data TripOption

-- | Creates a value of <a>TripOption</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>toPricing</a></li>
--   <li><a>toKind</a></li>
--   <li><a>toId</a></li>
--   <li><a>toSlice</a></li>
--   <li><a>toSaleTotal</a></li>
--   </ul>
tripOption :: TripOption

-- | Per passenger pricing information.
toPricing :: Lens' TripOption [PricingInfo]

-- | Identifies this as a trip information object. Value: the fixed string
--   qpxexpress#tripOption.
toKind :: Lens' TripOption Text

-- | Identifier uniquely identifying this trip in a response.
toId :: Lens' TripOption (Maybe Text)

-- | The slices that make up this trip's itinerary.
toSlice :: Lens' TripOption [SliceInfo]

-- | The total price for all passengers on the trip, in the form of a
--   currency followed by an amount, e.g. USD253.35.
toSaleTotal :: Lens' TripOption (Maybe Text)

-- | Information about an item of baggage.
--   
--   <i>See:</i> <a>bagDescriptor</a> smart constructor.
data BagDescriptor

-- | Creates a value of <a>BagDescriptor</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>bdKind</a></li>
--   <li><a>bdCommercialName</a></li>
--   <li><a>bdCount</a></li>
--   <li><a>bdDescription</a></li>
--   <li><a>bdSubcode</a></li>
--   </ul>
bagDescriptor :: BagDescriptor

-- | Identifies this as a baggage object. Value: the fixed string
--   qpxexpress#bagDescriptor.
bdKind :: Lens' BagDescriptor Text

-- | Provides the commercial name for an optional service.
bdCommercialName :: Lens' BagDescriptor (Maybe Text)

-- | How many of this type of bag will be checked on this flight.
bdCount :: Lens' BagDescriptor (Maybe Int32)

-- | A description of the baggage.
bdDescription :: Lens' BagDescriptor [Text]

-- | The standard IATA subcode used to identify this optional service.
bdSubcode :: Lens' BagDescriptor (Maybe Text)

-- | Information about a city that might be useful to an end-user;
--   typically the city of an airport.
--   
--   <i>See:</i> <a>cityData</a> smart constructor.
data CityData

-- | Creates a value of <a>CityData</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cCountry</a></li>
--   <li><a>cKind</a></li>
--   <li><a>cName</a></li>
--   <li><a>cCode</a></li>
--   </ul>
cityData :: CityData

-- | The two-character country code of the country the city is located in.
--   For example, US for the United States of America.
cCountry :: Lens' CityData (Maybe Text)

-- | Identifies this as a city, typically with one or more airports. Value:
--   the fixed string qpxexpress#cityData.
cKind :: Lens' CityData Text

-- | The full name of a city. An example would be: New York.
cName :: Lens' CityData (Maybe Text)

-- | The IATA character ID of a city. For example, for Boston this is BOS.
cCode :: Lens' CityData (Maybe Text)

-- | The number and type of passengers. Unfortunately the definition of an
--   infant, child, adult, and senior citizen varies across carriers and
--   reservation systems.
--   
--   <i>See:</i> <a>passengerCounts</a> smart constructor.
data PassengerCounts

-- | Creates a value of <a>PassengerCounts</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pcSeniorCount</a></li>
--   <li><a>pcKind</a></li>
--   <li><a>pcInfantInLapCount</a></li>
--   <li><a>pcChildCount</a></li>
--   <li><a>pcInfantInSeatCount</a></li>
--   <li><a>pcAdultCount</a></li>
--   </ul>
passengerCounts :: PassengerCounts

-- | The number of passengers that are senior citizens.
pcSeniorCount :: Lens' PassengerCounts (Maybe Int32)

-- | Identifies this as a passenger count object, representing the number
--   of passengers. Value: the fixed string qpxexpress#passengerCounts.
pcKind :: Lens' PassengerCounts Text

-- | The number of passengers that are infants travelling in the lap of an
--   adult.
pcInfantInLapCount :: Lens' PassengerCounts (Maybe Int32)

-- | The number of passengers that are children.
pcChildCount :: Lens' PassengerCounts (Maybe Int32)

-- | The number of passengers that are infants each assigned a seat.
pcInfantInSeatCount :: Lens' PassengerCounts (Maybe Int32)

-- | The number of passengers that are adults.
pcAdultCount :: Lens' PassengerCounts (Maybe Int32)

-- | Details of a segment of a flight; a segment is one or more consecutive
--   legs on the same flight. For example a hypothetical flight ZZ001, from
--   DFW to OGG, would have one segment with two legs: DFW to HNL (leg 1),
--   HNL to OGG (leg 2), and DFW to OGG (legs 1 and 2).
--   
--   <i>See:</i> <a>segmentInfo</a> smart constructor.
data SegmentInfo

-- | Creates a value of <a>SegmentInfo</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>sBookingCode</a></li>
--   <li><a>sCabin</a></li>
--   <li><a>sBookingCodeCount</a></li>
--   <li><a>sSubjectToGovernmentApproval</a></li>
--   <li><a>sKind</a></li>
--   <li><a>sFlight</a></li>
--   <li><a>sId</a></li>
--   <li><a>sMarriedSegmentGroup</a></li>
--   <li><a>sConnectionDuration</a></li>
--   <li><a>sDuration</a></li>
--   <li><a>sLeg</a></li>
--   </ul>
segmentInfo :: SegmentInfo

-- | The booking code or class for this segment.
sBookingCode :: Lens' SegmentInfo (Maybe Text)

-- | The cabin booked for this segment.
sCabin :: Lens' SegmentInfo (Maybe Text)

-- | The number of seats available in this booking code on this segment.
sBookingCodeCount :: Lens' SegmentInfo (Maybe Int32)

-- | Whether the operation of this segment remains subject to government
--   approval.
sSubjectToGovernmentApproval :: Lens' SegmentInfo (Maybe Bool)

-- | Identifies this as a segment object. A segment is one or more
--   consecutive legs on the same flight. For example a hypothetical flight
--   ZZ001, from DFW to OGG, could have one segment with two legs: DFW to
--   HNL (leg 1), HNL to OGG (leg 2). Value: the fixed string
--   qpxexpress#segmentInfo.
sKind :: Lens' SegmentInfo Text

-- | The flight this is a segment of.
sFlight :: Lens' SegmentInfo (Maybe FlightInfo)

-- | An id uniquely identifying the segment in the solution.
sId :: Lens' SegmentInfo (Maybe Text)

-- | The solution-based index of a segment in a married segment group.
--   Married segments can only be booked together. For example, an airline
--   might report a certain booking code as sold out from Boston to
--   Pittsburgh, but as available as part of two married segments Boston to
--   Chicago connecting through Pittsburgh. For example content of this
--   field, consider the round-trip flight ZZ1 PHX-PHL ZZ2 PHL-CLT ZZ3
--   CLT-PHX. This has three segments, with the two outbound ones (ZZ1 ZZ2)
--   married. In this case, the two outbound segments belong to married
--   segment group 0, and the return segment belongs to married segment
--   group 1.
sMarriedSegmentGroup :: Lens' SegmentInfo (Maybe Text)

-- | In minutes, the duration of the connection following this segment.
sConnectionDuration :: Lens' SegmentInfo (Maybe Int32)

-- | The duration of the flight segment in minutes.
sDuration :: Lens' SegmentInfo (Maybe Int32)

-- | The legs composing this segment.
sLeg :: Lens' SegmentInfo [LegInfo]

-- | Tax data.
--   
--   <i>See:</i> <a>taxData</a> smart constructor.
data TaxData

-- | Creates a value of <a>TaxData</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tdKind</a></li>
--   <li><a>tdName</a></li>
--   <li><a>tdId</a></li>
--   </ul>
taxData :: TaxData

-- | Identifies this as a tax data object, representing some tax. Value:
--   the fixed string qpxexpress#taxData.
tdKind :: Lens' TaxData Text

-- | The name of a tax.
tdName :: Lens' TaxData (Maybe Text)

-- | An identifier uniquely identifying a tax in a response.
tdId :: Lens' TaxData (Maybe Text)

-- | A QPX Express search request.
--   
--   <i>See:</i> <a>tripsSearchRequest</a> smart constructor.
data TripsSearchRequest

-- | Creates a value of <a>TripsSearchRequest</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tsrRequest</a></li>
--   </ul>
tripsSearchRequest :: TripsSearchRequest

-- | A QPX Express search request. Required values are at least one adult
--   or senior passenger, an origin, a destination, and a date.
tsrRequest :: Lens' TripsSearchRequest (Maybe TripOptionsRequest)

-- | Tax information.
--   
--   <i>See:</i> <a>taxInfo</a> smart constructor.
data TaxInfo

-- | Creates a value of <a>TaxInfo</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tiChargeType</a></li>
--   <li><a>tiCountry</a></li>
--   <li><a>tiKind</a></li>
--   <li><a>tiSalePrice</a></li>
--   <li><a>tiCode</a></li>
--   <li><a>tiId</a></li>
--   </ul>
taxInfo :: TaxInfo

-- | Whether this is a government charge or a carrier surcharge.
tiChargeType :: Lens' TaxInfo (Maybe Text)

-- | For government charges, the country levying the charge.
tiCountry :: Lens' TaxInfo (Maybe Text)

-- | Identifies this as a tax information object. Value: the fixed string
--   qpxexpress#taxInfo.
tiKind :: Lens' TaxInfo Text

-- | The price of the tax in the sales or equivalent currency.
tiSalePrice :: Lens' TaxInfo (Maybe Text)

-- | The code to enter in the ticket's tax box.
tiCode :: Lens' TaxInfo (Maybe Text)

-- | Identifier uniquely identifying this tax in a response. Not present
--   for unnamed carrier surcharges.
tiId :: Lens' TaxInfo (Maybe Text)

-- | The price of one or more travel segments. The currency used to
--   purchase tickets is usually determined by the sale/ticketing city or
--   the sale/ticketing country, unless none are specified, in which case
--   it defaults to that of the journey origin country.
--   
--   <i>See:</i> <a>pricingInfo</a> smart constructor.
data PricingInfo

-- | Creates a value of <a>PricingInfo</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>piSaleTaxTotal</a></li>
--   <li><a>piRefundable</a></li>
--   <li><a>piPtc</a></li>
--   <li><a>piBaseFareTotal</a></li>
--   <li><a>piFare</a></li>
--   <li><a>piKind</a></li>
--   <li><a>piSegmentPricing</a></li>
--   <li><a>piPassengers</a></li>
--   <li><a>piFareCalculation</a></li>
--   <li><a>piLatestTicketingTime</a></li>
--   <li><a>piTax</a></li>
--   <li><a>piSaleTotal</a></li>
--   <li><a>piSaleFareTotal</a></li>
--   </ul>
pricingInfo :: PricingInfo

-- | The taxes in the sale or equivalent currency.
piSaleTaxTotal :: Lens' PricingInfo (Maybe Text)

-- | Whether the fares on this pricing are refundable.
piRefundable :: Lens' PricingInfo (Maybe Bool)

-- | The passenger type code for this pricing. An alphanumeric code used by
--   a carrier to restrict fares to certain categories of passenger. For
--   instance, a fare might be valid only for senior citizens.
piPtc :: Lens' PricingInfo (Maybe Text)

-- | The total fare in the base fare currency (the currency of the country
--   of origin). This element is only present when the sales currency and
--   the currency of the country of commencement are different.
piBaseFareTotal :: Lens' PricingInfo (Maybe Text)

-- | The fare used to price one or more segments.
piFare :: Lens' PricingInfo [FareInfo]

-- | Identifies this as a pricing object, representing the price of one or
--   more travel segments. Value: the fixed string qpxexpress#pricingInfo.
piKind :: Lens' PricingInfo Text

-- | The per-segment price and baggage information.
piSegmentPricing :: Lens' PricingInfo [SegmentPricing]

-- | The number of passengers to which this price applies.
piPassengers :: Lens' PricingInfo (Maybe PassengerCounts)

-- | The horizontal fare calculation. This is a field on a ticket that
--   displays all of the relevant items that go into the calculation of the
--   fare.
piFareCalculation :: Lens' PricingInfo (Maybe Text)

-- | The latest ticketing time for this pricing assuming the reservation
--   occurs at ticketing time and there is no change in fares/rules. The
--   time is local to the point of sale (POS).
piLatestTicketingTime :: Lens' PricingInfo (Maybe Text)

-- | The taxes used to calculate the tax total per ticket.
piTax :: Lens' PricingInfo [TaxInfo]

-- | Total per-passenger price (fare and tax) in the sale or equivalent
--   currency.
piSaleTotal :: Lens' PricingInfo (Maybe Text)

-- | The total fare in the sale or equivalent currency.
piSaleFareTotal :: Lens' PricingInfo (Maybe Text)

-- | A flight is a sequence of legs with the same airline carrier and
--   flight number. (A leg is the smallest unit of travel, in the case of a
--   flight a takeoff immediately followed by a landing at two set points
--   on a particular carrier with a particular flight number.) The naive
--   view is that a flight is scheduled travel of an aircraft between two
--   points, with possibly intermediate stops, but carriers will frequently
--   list flights that require a change of aircraft between legs.
--   
--   <i>See:</i> <a>flightInfo</a> smart constructor.
data FlightInfo

-- | Creates a value of <a>FlightInfo</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>fiCarrier</a></li>
--   <li><a>fiNumber</a></li>
--   </ul>
flightInfo :: FlightInfo
fiCarrier :: Lens' FlightInfo (Maybe Text)

-- | The flight number.
fiNumber :: Lens' FlightInfo (Maybe Text)

-- | Complete information about a fare used in the solution to a low-fare
--   search query. In the airline industry a fare is a price an airline
--   charges for one-way travel between two points. A fare typically
--   contains a carrier code, two city codes, a price, and a fare basis. (A
--   fare basis is a one-to-eight character alphanumeric code used to
--   identify a fare.)
--   
--   <i>See:</i> <a>fareInfo</a> smart constructor.
data FareInfo

-- | Creates a value of <a>FareInfo</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>fCarrier</a></li>
--   <li><a>fDestination</a></li>
--   <li><a>fOrigin</a></li>
--   <li><a>fPrivate</a></li>
--   <li><a>fKind</a></li>
--   <li><a>fBasisCode</a></li>
--   <li><a>fId</a></li>
--   </ul>
fareInfo :: FareInfo

-- | The carrier of the aircraft or other vehicle commuting between two
--   points.
fCarrier :: Lens' FareInfo (Maybe Text)

-- | The city code of the city the trip ends at.
fDestination :: Lens' FareInfo (Maybe Text)

-- | The city code of the city the trip begins at.
fOrigin :: Lens' FareInfo (Maybe Text)

-- | Whether this is a private fare, for example one offered only to select
--   customers rather than the general public.
fPrivate :: Lens' FareInfo (Maybe Bool)

-- | Identifies this as a fare object. Value: the fixed string
--   qpxexpress#fareInfo.
fKind :: Lens' FareInfo Text
fBasisCode :: Lens' FareInfo (Maybe Text)

-- | A unique identifier of the fare.
fId :: Lens' FareInfo (Maybe Text)

-- | A QPX Express search request, which will yield one or more solutions.
--   
--   <i>See:</i> <a>tripOptionsRequest</a> smart constructor.
data TripOptionsRequest

-- | Creates a value of <a>TripOptionsRequest</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>torRefundable</a></li>
--   <li><a>torSaleCountry</a></li>
--   <li><a>torPassengers</a></li>
--   <li><a>torTicketingCountry</a></li>
--   <li><a>torSolutions</a></li>
--   <li><a>torSlice</a></li>
--   <li><a>torMaxPrice</a></li>
--   </ul>
tripOptionsRequest :: TripOptionsRequest

-- | Return only solutions with refundable fares.
torRefundable :: Lens' TripOptionsRequest (Maybe Bool)

-- | IATA country code representing the point of sale. This determines the
--   "equivalent amount paid" currency for the ticket.
torSaleCountry :: Lens' TripOptionsRequest (Maybe Text)

-- | Counts for each passenger type in the request.
torPassengers :: Lens' TripOptionsRequest (Maybe PassengerCounts)

-- | IATA country code representing the point of ticketing.
torTicketingCountry :: Lens' TripOptionsRequest (Maybe Text)

-- | The number of solutions to return, maximum 500.
torSolutions :: Lens' TripOptionsRequest (Maybe Int32)

-- | The slices that make up the itinerary of this trip. A slice represents
--   a traveler's intent, the portion of a low-fare search corresponding to
--   a traveler's request to get between two points. One-way journeys are
--   generally expressed using one slice, round-trips using two. An example
--   of a one slice trip with three segments might be BOS-SYD, SYD-LAX,
--   LAX-BOS if the traveler only stopped in SYD and LAX just long enough
--   to change planes.
torSlice :: Lens' TripOptionsRequest [SliceInput]

-- | Do not return solutions that cost more than this price. The
--   alphabetical part of the price is in ISO 4217. The format, in regex,
--   is [A-Z]{3}\d+(\.\d+)? Example: $102.07
torMaxPrice :: Lens' TripOptionsRequest (Maybe Text)

-- | Criteria a desired slice must satisfy.
--   
--   <i>See:</i> <a>sliceInput</a> smart constructor.
data SliceInput

-- | Creates a value of <a>SliceInput</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>sliDestination</a></li>
--   <li><a>sliOrigin</a></li>
--   <li><a>sliMaxStops</a></li>
--   <li><a>sliKind</a></li>
--   <li><a>sliProhibitedCarrier</a></li>
--   <li><a>sliDate</a></li>
--   <li><a>sliMaxConnectionDuration</a></li>
--   <li><a>sliPreferredCabin</a></li>
--   <li><a>sliPermittedDePartureTime</a></li>
--   <li><a>sliPermittedCarrier</a></li>
--   <li><a>sliAlliance</a></li>
--   </ul>
sliceInput :: SliceInput

-- | Airport or city IATA designator of the destination.
sliDestination :: Lens' SliceInput (Maybe Text)

-- | Airport or city IATA designator of the origin.
sliOrigin :: Lens' SliceInput (Maybe Text)

-- | The maximum number of stops you are willing to accept in this slice.
sliMaxStops :: Lens' SliceInput (Maybe Int32)

-- | Identifies this as a slice input object, representing the criteria a
--   desired slice must satisfy. Value: the fixed string
--   qpxexpress#sliceInput.
sliKind :: Lens' SliceInput Text

-- | A list of 2-letter IATA airline designators. Exclude slices that use
--   these carriers.
sliProhibitedCarrier :: Lens' SliceInput [Text]

-- | Departure date in YYYY-MM-DD format.
sliDate :: Lens' SliceInput (Maybe Text)

-- | The longest connection between two legs, in minutes, you are willing
--   to accept.
sliMaxConnectionDuration :: Lens' SliceInput (Maybe Int32)

-- | Prefer solutions that book in this cabin for this slice. Allowed
--   values are COACH, PREMIUM_COACH, BUSINESS, and FIRST.
sliPreferredCabin :: Lens' SliceInput (Maybe Text)

-- | Slices must depart in this time of day range, local to the point of
--   departure.
sliPermittedDePartureTime :: Lens' SliceInput (Maybe TimeOfDayRange)

-- | A list of 2-letter IATA airline designators. Slices with only these
--   carriers should be returned.
sliPermittedCarrier :: Lens' SliceInput [Text]

-- | Slices with only the carriers in this alliance should be returned; do
--   not use this field with permittedCarrier. Allowed values are ONEWORLD,
--   SKYTEAM, and STAR.
sliAlliance :: Lens' SliceInput (Maybe Text)
