{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-binds #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}

-- Derived from AWS service descriptions, licensed under Apache 2.0.

-- |
-- Module      : Amazonka.EC2.DescribeReservedInstancesOfferings
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Describes Reserved Instance offerings that are available for purchase.
-- With Reserved Instances, you purchase the right to launch instances for
-- a period of time. During that time period, you do not receive
-- insufficient capacity errors, and you pay a lower usage rate than the
-- rate charged for On-Demand instances for the actual time used.
--
-- If you have listed your own Reserved Instances for sale in the Reserved
-- Instance Marketplace, they will be excluded from these results. This is
-- to ensure that you do not purchase your own Reserved Instances.
--
-- For more information, see
-- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ri-market-general.html Reserved Instance Marketplace>
-- in the /Amazon EC2 User Guide/.
--
-- This operation returns paginated results.
module Amazonka.EC2.DescribeReservedInstancesOfferings
  ( -- * Creating a Request
    DescribeReservedInstancesOfferings (..),
    newDescribeReservedInstancesOfferings,

    -- * Request Lenses
    describeReservedInstancesOfferings_availabilityZone,
    describeReservedInstancesOfferings_dryRun,
    describeReservedInstancesOfferings_filters,
    describeReservedInstancesOfferings_includeMarketplace,
    describeReservedInstancesOfferings_instanceTenancy,
    describeReservedInstancesOfferings_instanceType,
    describeReservedInstancesOfferings_maxDuration,
    describeReservedInstancesOfferings_maxInstanceCount,
    describeReservedInstancesOfferings_maxResults,
    describeReservedInstancesOfferings_minDuration,
    describeReservedInstancesOfferings_nextToken,
    describeReservedInstancesOfferings_offeringClass,
    describeReservedInstancesOfferings_offeringType,
    describeReservedInstancesOfferings_productDescription,
    describeReservedInstancesOfferings_reservedInstancesOfferingIds,

    -- * Destructuring the Response
    DescribeReservedInstancesOfferingsResponse (..),
    newDescribeReservedInstancesOfferingsResponse,

    -- * Response Lenses
    describeReservedInstancesOfferingsResponse_nextToken,
    describeReservedInstancesOfferingsResponse_reservedInstancesOfferings,
    describeReservedInstancesOfferingsResponse_httpStatus,
  )
where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.EC2.Types
import qualified Amazonka.Prelude as Prelude
import qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response

-- | Contains the parameters for DescribeReservedInstancesOfferings.
--
-- /See:/ 'newDescribeReservedInstancesOfferings' smart constructor.
data DescribeReservedInstancesOfferings = DescribeReservedInstancesOfferings'
  { -- | The Availability Zone in which the Reserved Instance can be used.
    DescribeReservedInstancesOfferings -> Maybe Text
availabilityZone :: Prelude.Maybe Prelude.Text,
    -- | Checks whether you have the required permissions for the action, without
    -- actually making the request, and provides an error response. If you have
    -- the required permissions, the error response is @DryRunOperation@.
    -- Otherwise, it is @UnauthorizedOperation@.
    DescribeReservedInstancesOfferings -> Maybe Bool
dryRun :: Prelude.Maybe Prelude.Bool,
    -- | One or more filters.
    --
    -- -   @availability-zone@ - The Availability Zone where the Reserved
    --     Instance can be used.
    --
    -- -   @duration@ - The duration of the Reserved Instance (for example, one
    --     year or three years), in seconds (@31536000@ | @94608000@).
    --
    -- -   @fixed-price@ - The purchase price of the Reserved Instance (for
    --     example, 9800.0).
    --
    -- -   @instance-type@ - The instance type that is covered by the
    --     reservation.
    --
    -- -   @marketplace@ - Set to @true@ to show only Reserved Instance
    --     Marketplace offerings. When this filter is not used, which is the
    --     default behavior, all offerings from both Amazon Web Services and
    --     the Reserved Instance Marketplace are listed.
    --
    -- -   @product-description@ - The Reserved Instance product platform
    --     description. Instances that include @(Amazon VPC)@ in the product
    --     platform description will only be displayed to EC2-Classic account
    --     holders and are for use with Amazon VPC. (@Linux\/UNIX@ |
    --     @Linux\/UNIX (Amazon VPC)@ | @SUSE Linux@ |
    --     @SUSE Linux (Amazon VPC)@ | @Red Hat Enterprise Linux@ |
    --     @Red Hat Enterprise Linux (Amazon VPC)@ |
    --     @Red Hat Enterprise Linux with HA (Amazon VPC)@ | @Windows@ |
    --     @Windows (Amazon VPC)@ | @Windows with SQL Server Standard@ |
    --     @Windows with SQL Server Standard (Amazon VPC)@ |
    --     @Windows with SQL Server Web@ |
    --     @ Windows with SQL Server Web (Amazon VPC)@ |
    --     @Windows with SQL Server Enterprise@ |
    --     @Windows with SQL Server Enterprise (Amazon VPC)@)
    --
    -- -   @reserved-instances-offering-id@ - The Reserved Instances offering
    --     ID.
    --
    -- -   @scope@ - The scope of the Reserved Instance (@Availability Zone@ or
    --     @Region@).
    --
    -- -   @usage-price@ - The usage price of the Reserved Instance, per hour
    --     (for example, 0.84).
    DescribeReservedInstancesOfferings -> Maybe [Filter]
filters :: Prelude.Maybe [Filter],
    -- | Include Reserved Instance Marketplace offerings in the response.
    DescribeReservedInstancesOfferings -> Maybe Bool
includeMarketplace :: Prelude.Maybe Prelude.Bool,
    -- | The tenancy of the instances covered by the reservation. A Reserved
    -- Instance with a tenancy of @dedicated@ is applied to instances that run
    -- in a VPC on single-tenant hardware (i.e., Dedicated Instances).
    --
    -- __Important:__ The @host@ value cannot be used with this parameter. Use
    -- the @default@ or @dedicated@ values only.
    --
    -- Default: @default@
    DescribeReservedInstancesOfferings -> Maybe Tenancy
instanceTenancy :: Prelude.Maybe Tenancy,
    -- | The instance type that the reservation will cover (for example,
    -- @m1.small@). For more information, see
    -- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html Instance types>
    -- in the /Amazon EC2 User Guide/.
    DescribeReservedInstancesOfferings -> Maybe InstanceType
instanceType :: Prelude.Maybe InstanceType,
    -- | The maximum duration (in seconds) to filter when searching for
    -- offerings.
    --
    -- Default: 94608000 (3 years)
    DescribeReservedInstancesOfferings -> Maybe Integer
maxDuration :: Prelude.Maybe Prelude.Integer,
    -- | The maximum number of instances to filter when searching for offerings.
    --
    -- Default: 20
    DescribeReservedInstancesOfferings -> Maybe Int
maxInstanceCount :: Prelude.Maybe Prelude.Int,
    -- | The maximum number of results to return for the request in a single
    -- page. The remaining results of the initial request can be seen by
    -- sending another request with the returned @NextToken@ value. The maximum
    -- is 100.
    --
    -- Default: 100
    DescribeReservedInstancesOfferings -> Maybe Int
maxResults :: Prelude.Maybe Prelude.Int,
    -- | The minimum duration (in seconds) to filter when searching for
    -- offerings.
    --
    -- Default: 2592000 (1 month)
    DescribeReservedInstancesOfferings -> Maybe Integer
minDuration :: Prelude.Maybe Prelude.Integer,
    -- | The token to retrieve the next page of results.
    DescribeReservedInstancesOfferings -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text,
    -- | The offering class of the Reserved Instance. Can be @standard@ or
    -- @convertible@.
    DescribeReservedInstancesOfferings -> Maybe OfferingClassType
offeringClass :: Prelude.Maybe OfferingClassType,
    -- | The Reserved Instance offering type. If you are using tools that predate
    -- the 2011-11-01 API version, you only have access to the
    -- @Medium Utilization@ Reserved Instance offering type.
    DescribeReservedInstancesOfferings -> Maybe OfferingTypeValues
offeringType :: Prelude.Maybe OfferingTypeValues,
    -- | The Reserved Instance product platform description. Instances that
    -- include @(Amazon VPC)@ in the description are for use with Amazon VPC.
    DescribeReservedInstancesOfferings -> Maybe RIProductDescription
productDescription :: Prelude.Maybe RIProductDescription,
    -- | One or more Reserved Instances offering IDs.
    DescribeReservedInstancesOfferings -> Maybe [Text]
reservedInstancesOfferingIds :: Prelude.Maybe [Prelude.Text]
  }
  deriving (DescribeReservedInstancesOfferings
-> DescribeReservedInstancesOfferings -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeReservedInstancesOfferings
-> DescribeReservedInstancesOfferings -> Bool
$c/= :: DescribeReservedInstancesOfferings
-> DescribeReservedInstancesOfferings -> Bool
== :: DescribeReservedInstancesOfferings
-> DescribeReservedInstancesOfferings -> Bool
$c== :: DescribeReservedInstancesOfferings
-> DescribeReservedInstancesOfferings -> Bool
Prelude.Eq, ReadPrec [DescribeReservedInstancesOfferings]
ReadPrec DescribeReservedInstancesOfferings
Int -> ReadS DescribeReservedInstancesOfferings
ReadS [DescribeReservedInstancesOfferings]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeReservedInstancesOfferings]
$creadListPrec :: ReadPrec [DescribeReservedInstancesOfferings]
readPrec :: ReadPrec DescribeReservedInstancesOfferings
$creadPrec :: ReadPrec DescribeReservedInstancesOfferings
readList :: ReadS [DescribeReservedInstancesOfferings]
$creadList :: ReadS [DescribeReservedInstancesOfferings]
readsPrec :: Int -> ReadS DescribeReservedInstancesOfferings
$creadsPrec :: Int -> ReadS DescribeReservedInstancesOfferings
Prelude.Read, Int -> DescribeReservedInstancesOfferings -> ShowS
[DescribeReservedInstancesOfferings] -> ShowS
DescribeReservedInstancesOfferings -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeReservedInstancesOfferings] -> ShowS
$cshowList :: [DescribeReservedInstancesOfferings] -> ShowS
show :: DescribeReservedInstancesOfferings -> String
$cshow :: DescribeReservedInstancesOfferings -> String
showsPrec :: Int -> DescribeReservedInstancesOfferings -> ShowS
$cshowsPrec :: Int -> DescribeReservedInstancesOfferings -> ShowS
Prelude.Show, forall x.
Rep DescribeReservedInstancesOfferings x
-> DescribeReservedInstancesOfferings
forall x.
DescribeReservedInstancesOfferings
-> Rep DescribeReservedInstancesOfferings x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribeReservedInstancesOfferings x
-> DescribeReservedInstancesOfferings
$cfrom :: forall x.
DescribeReservedInstancesOfferings
-> Rep DescribeReservedInstancesOfferings x
Prelude.Generic)

-- |
-- Create a value of 'DescribeReservedInstancesOfferings' with all optional fields omitted.
--
-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
--
-- The following record fields are available, with the corresponding lenses provided
-- for backwards compatibility:
--
-- 'availabilityZone', 'describeReservedInstancesOfferings_availabilityZone' - The Availability Zone in which the Reserved Instance can be used.
--
-- 'dryRun', 'describeReservedInstancesOfferings_dryRun' - Checks whether you have the required permissions for the action, without
-- actually making the request, and provides an error response. If you have
-- the required permissions, the error response is @DryRunOperation@.
-- Otherwise, it is @UnauthorizedOperation@.
--
-- 'filters', 'describeReservedInstancesOfferings_filters' - One or more filters.
--
-- -   @availability-zone@ - The Availability Zone where the Reserved
--     Instance can be used.
--
-- -   @duration@ - The duration of the Reserved Instance (for example, one
--     year or three years), in seconds (@31536000@ | @94608000@).
--
-- -   @fixed-price@ - The purchase price of the Reserved Instance (for
--     example, 9800.0).
--
-- -   @instance-type@ - The instance type that is covered by the
--     reservation.
--
-- -   @marketplace@ - Set to @true@ to show only Reserved Instance
--     Marketplace offerings. When this filter is not used, which is the
--     default behavior, all offerings from both Amazon Web Services and
--     the Reserved Instance Marketplace are listed.
--
-- -   @product-description@ - The Reserved Instance product platform
--     description. Instances that include @(Amazon VPC)@ in the product
--     platform description will only be displayed to EC2-Classic account
--     holders and are for use with Amazon VPC. (@Linux\/UNIX@ |
--     @Linux\/UNIX (Amazon VPC)@ | @SUSE Linux@ |
--     @SUSE Linux (Amazon VPC)@ | @Red Hat Enterprise Linux@ |
--     @Red Hat Enterprise Linux (Amazon VPC)@ |
--     @Red Hat Enterprise Linux with HA (Amazon VPC)@ | @Windows@ |
--     @Windows (Amazon VPC)@ | @Windows with SQL Server Standard@ |
--     @Windows with SQL Server Standard (Amazon VPC)@ |
--     @Windows with SQL Server Web@ |
--     @ Windows with SQL Server Web (Amazon VPC)@ |
--     @Windows with SQL Server Enterprise@ |
--     @Windows with SQL Server Enterprise (Amazon VPC)@)
--
-- -   @reserved-instances-offering-id@ - The Reserved Instances offering
--     ID.
--
-- -   @scope@ - The scope of the Reserved Instance (@Availability Zone@ or
--     @Region@).
--
-- -   @usage-price@ - The usage price of the Reserved Instance, per hour
--     (for example, 0.84).
--
-- 'includeMarketplace', 'describeReservedInstancesOfferings_includeMarketplace' - Include Reserved Instance Marketplace offerings in the response.
--
-- 'instanceTenancy', 'describeReservedInstancesOfferings_instanceTenancy' - The tenancy of the instances covered by the reservation. A Reserved
-- Instance with a tenancy of @dedicated@ is applied to instances that run
-- in a VPC on single-tenant hardware (i.e., Dedicated Instances).
--
-- __Important:__ The @host@ value cannot be used with this parameter. Use
-- the @default@ or @dedicated@ values only.
--
-- Default: @default@
--
-- 'instanceType', 'describeReservedInstancesOfferings_instanceType' - The instance type that the reservation will cover (for example,
-- @m1.small@). For more information, see
-- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html Instance types>
-- in the /Amazon EC2 User Guide/.
--
-- 'maxDuration', 'describeReservedInstancesOfferings_maxDuration' - The maximum duration (in seconds) to filter when searching for
-- offerings.
--
-- Default: 94608000 (3 years)
--
-- 'maxInstanceCount', 'describeReservedInstancesOfferings_maxInstanceCount' - The maximum number of instances to filter when searching for offerings.
--
-- Default: 20
--
-- 'maxResults', 'describeReservedInstancesOfferings_maxResults' - The maximum number of results to return for the request in a single
-- page. The remaining results of the initial request can be seen by
-- sending another request with the returned @NextToken@ value. The maximum
-- is 100.
--
-- Default: 100
--
-- 'minDuration', 'describeReservedInstancesOfferings_minDuration' - The minimum duration (in seconds) to filter when searching for
-- offerings.
--
-- Default: 2592000 (1 month)
--
-- 'nextToken', 'describeReservedInstancesOfferings_nextToken' - The token to retrieve the next page of results.
--
-- 'offeringClass', 'describeReservedInstancesOfferings_offeringClass' - The offering class of the Reserved Instance. Can be @standard@ or
-- @convertible@.
--
-- 'offeringType', 'describeReservedInstancesOfferings_offeringType' - The Reserved Instance offering type. If you are using tools that predate
-- the 2011-11-01 API version, you only have access to the
-- @Medium Utilization@ Reserved Instance offering type.
--
-- 'productDescription', 'describeReservedInstancesOfferings_productDescription' - The Reserved Instance product platform description. Instances that
-- include @(Amazon VPC)@ in the description are for use with Amazon VPC.
--
-- 'reservedInstancesOfferingIds', 'describeReservedInstancesOfferings_reservedInstancesOfferingIds' - One or more Reserved Instances offering IDs.
newDescribeReservedInstancesOfferings ::
  DescribeReservedInstancesOfferings
newDescribeReservedInstancesOfferings :: DescribeReservedInstancesOfferings
newDescribeReservedInstancesOfferings =
  DescribeReservedInstancesOfferings'
    { $sel:availabilityZone:DescribeReservedInstancesOfferings' :: Maybe Text
availabilityZone =
        forall a. Maybe a
Prelude.Nothing,
      $sel:dryRun:DescribeReservedInstancesOfferings' :: Maybe Bool
dryRun = forall a. Maybe a
Prelude.Nothing,
      $sel:filters:DescribeReservedInstancesOfferings' :: Maybe [Filter]
filters = forall a. Maybe a
Prelude.Nothing,
      $sel:includeMarketplace:DescribeReservedInstancesOfferings' :: Maybe Bool
includeMarketplace = forall a. Maybe a
Prelude.Nothing,
      $sel:instanceTenancy:DescribeReservedInstancesOfferings' :: Maybe Tenancy
instanceTenancy = forall a. Maybe a
Prelude.Nothing,
      $sel:instanceType:DescribeReservedInstancesOfferings' :: Maybe InstanceType
instanceType = forall a. Maybe a
Prelude.Nothing,
      $sel:maxDuration:DescribeReservedInstancesOfferings' :: Maybe Integer
maxDuration = forall a. Maybe a
Prelude.Nothing,
      $sel:maxInstanceCount:DescribeReservedInstancesOfferings' :: Maybe Int
maxInstanceCount = forall a. Maybe a
Prelude.Nothing,
      $sel:maxResults:DescribeReservedInstancesOfferings' :: Maybe Int
maxResults = forall a. Maybe a
Prelude.Nothing,
      $sel:minDuration:DescribeReservedInstancesOfferings' :: Maybe Integer
minDuration = forall a. Maybe a
Prelude.Nothing,
      $sel:nextToken:DescribeReservedInstancesOfferings' :: Maybe Text
nextToken = forall a. Maybe a
Prelude.Nothing,
      $sel:offeringClass:DescribeReservedInstancesOfferings' :: Maybe OfferingClassType
offeringClass = forall a. Maybe a
Prelude.Nothing,
      $sel:offeringType:DescribeReservedInstancesOfferings' :: Maybe OfferingTypeValues
offeringType = forall a. Maybe a
Prelude.Nothing,
      $sel:productDescription:DescribeReservedInstancesOfferings' :: Maybe RIProductDescription
productDescription = forall a. Maybe a
Prelude.Nothing,
      $sel:reservedInstancesOfferingIds:DescribeReservedInstancesOfferings' :: Maybe [Text]
reservedInstancesOfferingIds =
        forall a. Maybe a
Prelude.Nothing
    }

-- | The Availability Zone in which the Reserved Instance can be used.
describeReservedInstancesOfferings_availabilityZone :: Lens.Lens' DescribeReservedInstancesOfferings (Prelude.Maybe Prelude.Text)
describeReservedInstancesOfferings_availabilityZone :: Lens' DescribeReservedInstancesOfferings (Maybe Text)
describeReservedInstancesOfferings_availabilityZone = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeReservedInstancesOfferings' {Maybe Text
availabilityZone :: Maybe Text
$sel:availabilityZone:DescribeReservedInstancesOfferings' :: DescribeReservedInstancesOfferings -> Maybe Text
availabilityZone} -> Maybe Text
availabilityZone) (\s :: DescribeReservedInstancesOfferings
s@DescribeReservedInstancesOfferings' {} Maybe Text
a -> DescribeReservedInstancesOfferings
s {$sel:availabilityZone:DescribeReservedInstancesOfferings' :: Maybe Text
availabilityZone = Maybe Text
a} :: DescribeReservedInstancesOfferings)

-- | Checks whether you have the required permissions for the action, without
-- actually making the request, and provides an error response. If you have
-- the required permissions, the error response is @DryRunOperation@.
-- Otherwise, it is @UnauthorizedOperation@.
describeReservedInstancesOfferings_dryRun :: Lens.Lens' DescribeReservedInstancesOfferings (Prelude.Maybe Prelude.Bool)
describeReservedInstancesOfferings_dryRun :: Lens' DescribeReservedInstancesOfferings (Maybe Bool)
describeReservedInstancesOfferings_dryRun = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeReservedInstancesOfferings' {Maybe Bool
dryRun :: Maybe Bool
$sel:dryRun:DescribeReservedInstancesOfferings' :: DescribeReservedInstancesOfferings -> Maybe Bool
dryRun} -> Maybe Bool
dryRun) (\s :: DescribeReservedInstancesOfferings
s@DescribeReservedInstancesOfferings' {} Maybe Bool
a -> DescribeReservedInstancesOfferings
s {$sel:dryRun:DescribeReservedInstancesOfferings' :: Maybe Bool
dryRun = Maybe Bool
a} :: DescribeReservedInstancesOfferings)

-- | One or more filters.
--
-- -   @availability-zone@ - The Availability Zone where the Reserved
--     Instance can be used.
--
-- -   @duration@ - The duration of the Reserved Instance (for example, one
--     year or three years), in seconds (@31536000@ | @94608000@).
--
-- -   @fixed-price@ - The purchase price of the Reserved Instance (for
--     example, 9800.0).
--
-- -   @instance-type@ - The instance type that is covered by the
--     reservation.
--
-- -   @marketplace@ - Set to @true@ to show only Reserved Instance
--     Marketplace offerings. When this filter is not used, which is the
--     default behavior, all offerings from both Amazon Web Services and
--     the Reserved Instance Marketplace are listed.
--
-- -   @product-description@ - The Reserved Instance product platform
--     description. Instances that include @(Amazon VPC)@ in the product
--     platform description will only be displayed to EC2-Classic account
--     holders and are for use with Amazon VPC. (@Linux\/UNIX@ |
--     @Linux\/UNIX (Amazon VPC)@ | @SUSE Linux@ |
--     @SUSE Linux (Amazon VPC)@ | @Red Hat Enterprise Linux@ |
--     @Red Hat Enterprise Linux (Amazon VPC)@ |
--     @Red Hat Enterprise Linux with HA (Amazon VPC)@ | @Windows@ |
--     @Windows (Amazon VPC)@ | @Windows with SQL Server Standard@ |
--     @Windows with SQL Server Standard (Amazon VPC)@ |
--     @Windows with SQL Server Web@ |
--     @ Windows with SQL Server Web (Amazon VPC)@ |
--     @Windows with SQL Server Enterprise@ |
--     @Windows with SQL Server Enterprise (Amazon VPC)@)
--
-- -   @reserved-instances-offering-id@ - The Reserved Instances offering
--     ID.
--
-- -   @scope@ - The scope of the Reserved Instance (@Availability Zone@ or
--     @Region@).
--
-- -   @usage-price@ - The usage price of the Reserved Instance, per hour
--     (for example, 0.84).
describeReservedInstancesOfferings_filters :: Lens.Lens' DescribeReservedInstancesOfferings (Prelude.Maybe [Filter])
describeReservedInstancesOfferings_filters :: Lens' DescribeReservedInstancesOfferings (Maybe [Filter])
describeReservedInstancesOfferings_filters = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeReservedInstancesOfferings' {Maybe [Filter]
filters :: Maybe [Filter]
$sel:filters:DescribeReservedInstancesOfferings' :: DescribeReservedInstancesOfferings -> Maybe [Filter]
filters} -> Maybe [Filter]
filters) (\s :: DescribeReservedInstancesOfferings
s@DescribeReservedInstancesOfferings' {} Maybe [Filter]
a -> DescribeReservedInstancesOfferings
s {$sel:filters:DescribeReservedInstancesOfferings' :: Maybe [Filter]
filters = Maybe [Filter]
a} :: DescribeReservedInstancesOfferings) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | Include Reserved Instance Marketplace offerings in the response.
describeReservedInstancesOfferings_includeMarketplace :: Lens.Lens' DescribeReservedInstancesOfferings (Prelude.Maybe Prelude.Bool)
describeReservedInstancesOfferings_includeMarketplace :: Lens' DescribeReservedInstancesOfferings (Maybe Bool)
describeReservedInstancesOfferings_includeMarketplace = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeReservedInstancesOfferings' {Maybe Bool
includeMarketplace :: Maybe Bool
$sel:includeMarketplace:DescribeReservedInstancesOfferings' :: DescribeReservedInstancesOfferings -> Maybe Bool
includeMarketplace} -> Maybe Bool
includeMarketplace) (\s :: DescribeReservedInstancesOfferings
s@DescribeReservedInstancesOfferings' {} Maybe Bool
a -> DescribeReservedInstancesOfferings
s {$sel:includeMarketplace:DescribeReservedInstancesOfferings' :: Maybe Bool
includeMarketplace = Maybe Bool
a} :: DescribeReservedInstancesOfferings)

-- | The tenancy of the instances covered by the reservation. A Reserved
-- Instance with a tenancy of @dedicated@ is applied to instances that run
-- in a VPC on single-tenant hardware (i.e., Dedicated Instances).
--
-- __Important:__ The @host@ value cannot be used with this parameter. Use
-- the @default@ or @dedicated@ values only.
--
-- Default: @default@
describeReservedInstancesOfferings_instanceTenancy :: Lens.Lens' DescribeReservedInstancesOfferings (Prelude.Maybe Tenancy)
describeReservedInstancesOfferings_instanceTenancy :: Lens' DescribeReservedInstancesOfferings (Maybe Tenancy)
describeReservedInstancesOfferings_instanceTenancy = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeReservedInstancesOfferings' {Maybe Tenancy
instanceTenancy :: Maybe Tenancy
$sel:instanceTenancy:DescribeReservedInstancesOfferings' :: DescribeReservedInstancesOfferings -> Maybe Tenancy
instanceTenancy} -> Maybe Tenancy
instanceTenancy) (\s :: DescribeReservedInstancesOfferings
s@DescribeReservedInstancesOfferings' {} Maybe Tenancy
a -> DescribeReservedInstancesOfferings
s {$sel:instanceTenancy:DescribeReservedInstancesOfferings' :: Maybe Tenancy
instanceTenancy = Maybe Tenancy
a} :: DescribeReservedInstancesOfferings)

-- | The instance type that the reservation will cover (for example,
-- @m1.small@). For more information, see
-- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html Instance types>
-- in the /Amazon EC2 User Guide/.
describeReservedInstancesOfferings_instanceType :: Lens.Lens' DescribeReservedInstancesOfferings (Prelude.Maybe InstanceType)
describeReservedInstancesOfferings_instanceType :: Lens' DescribeReservedInstancesOfferings (Maybe InstanceType)
describeReservedInstancesOfferings_instanceType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeReservedInstancesOfferings' {Maybe InstanceType
instanceType :: Maybe InstanceType
$sel:instanceType:DescribeReservedInstancesOfferings' :: DescribeReservedInstancesOfferings -> Maybe InstanceType
instanceType} -> Maybe InstanceType
instanceType) (\s :: DescribeReservedInstancesOfferings
s@DescribeReservedInstancesOfferings' {} Maybe InstanceType
a -> DescribeReservedInstancesOfferings
s {$sel:instanceType:DescribeReservedInstancesOfferings' :: Maybe InstanceType
instanceType = Maybe InstanceType
a} :: DescribeReservedInstancesOfferings)

-- | The maximum duration (in seconds) to filter when searching for
-- offerings.
--
-- Default: 94608000 (3 years)
describeReservedInstancesOfferings_maxDuration :: Lens.Lens' DescribeReservedInstancesOfferings (Prelude.Maybe Prelude.Integer)
describeReservedInstancesOfferings_maxDuration :: Lens' DescribeReservedInstancesOfferings (Maybe Integer)
describeReservedInstancesOfferings_maxDuration = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeReservedInstancesOfferings' {Maybe Integer
maxDuration :: Maybe Integer
$sel:maxDuration:DescribeReservedInstancesOfferings' :: DescribeReservedInstancesOfferings -> Maybe Integer
maxDuration} -> Maybe Integer
maxDuration) (\s :: DescribeReservedInstancesOfferings
s@DescribeReservedInstancesOfferings' {} Maybe Integer
a -> DescribeReservedInstancesOfferings
s {$sel:maxDuration:DescribeReservedInstancesOfferings' :: Maybe Integer
maxDuration = Maybe Integer
a} :: DescribeReservedInstancesOfferings)

-- | The maximum number of instances to filter when searching for offerings.
--
-- Default: 20
describeReservedInstancesOfferings_maxInstanceCount :: Lens.Lens' DescribeReservedInstancesOfferings (Prelude.Maybe Prelude.Int)
describeReservedInstancesOfferings_maxInstanceCount :: Lens' DescribeReservedInstancesOfferings (Maybe Int)
describeReservedInstancesOfferings_maxInstanceCount = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeReservedInstancesOfferings' {Maybe Int
maxInstanceCount :: Maybe Int
$sel:maxInstanceCount:DescribeReservedInstancesOfferings' :: DescribeReservedInstancesOfferings -> Maybe Int
maxInstanceCount} -> Maybe Int
maxInstanceCount) (\s :: DescribeReservedInstancesOfferings
s@DescribeReservedInstancesOfferings' {} Maybe Int
a -> DescribeReservedInstancesOfferings
s {$sel:maxInstanceCount:DescribeReservedInstancesOfferings' :: Maybe Int
maxInstanceCount = Maybe Int
a} :: DescribeReservedInstancesOfferings)

-- | The maximum number of results to return for the request in a single
-- page. The remaining results of the initial request can be seen by
-- sending another request with the returned @NextToken@ value. The maximum
-- is 100.
--
-- Default: 100
describeReservedInstancesOfferings_maxResults :: Lens.Lens' DescribeReservedInstancesOfferings (Prelude.Maybe Prelude.Int)
describeReservedInstancesOfferings_maxResults :: Lens' DescribeReservedInstancesOfferings (Maybe Int)
describeReservedInstancesOfferings_maxResults = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeReservedInstancesOfferings' {Maybe Int
maxResults :: Maybe Int
$sel:maxResults:DescribeReservedInstancesOfferings' :: DescribeReservedInstancesOfferings -> Maybe Int
maxResults} -> Maybe Int
maxResults) (\s :: DescribeReservedInstancesOfferings
s@DescribeReservedInstancesOfferings' {} Maybe Int
a -> DescribeReservedInstancesOfferings
s {$sel:maxResults:DescribeReservedInstancesOfferings' :: Maybe Int
maxResults = Maybe Int
a} :: DescribeReservedInstancesOfferings)

-- | The minimum duration (in seconds) to filter when searching for
-- offerings.
--
-- Default: 2592000 (1 month)
describeReservedInstancesOfferings_minDuration :: Lens.Lens' DescribeReservedInstancesOfferings (Prelude.Maybe Prelude.Integer)
describeReservedInstancesOfferings_minDuration :: Lens' DescribeReservedInstancesOfferings (Maybe Integer)
describeReservedInstancesOfferings_minDuration = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeReservedInstancesOfferings' {Maybe Integer
minDuration :: Maybe Integer
$sel:minDuration:DescribeReservedInstancesOfferings' :: DescribeReservedInstancesOfferings -> Maybe Integer
minDuration} -> Maybe Integer
minDuration) (\s :: DescribeReservedInstancesOfferings
s@DescribeReservedInstancesOfferings' {} Maybe Integer
a -> DescribeReservedInstancesOfferings
s {$sel:minDuration:DescribeReservedInstancesOfferings' :: Maybe Integer
minDuration = Maybe Integer
a} :: DescribeReservedInstancesOfferings)

-- | The token to retrieve the next page of results.
describeReservedInstancesOfferings_nextToken :: Lens.Lens' DescribeReservedInstancesOfferings (Prelude.Maybe Prelude.Text)
describeReservedInstancesOfferings_nextToken :: Lens' DescribeReservedInstancesOfferings (Maybe Text)
describeReservedInstancesOfferings_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeReservedInstancesOfferings' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:DescribeReservedInstancesOfferings' :: DescribeReservedInstancesOfferings -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: DescribeReservedInstancesOfferings
s@DescribeReservedInstancesOfferings' {} Maybe Text
a -> DescribeReservedInstancesOfferings
s {$sel:nextToken:DescribeReservedInstancesOfferings' :: Maybe Text
nextToken = Maybe Text
a} :: DescribeReservedInstancesOfferings)

-- | The offering class of the Reserved Instance. Can be @standard@ or
-- @convertible@.
describeReservedInstancesOfferings_offeringClass :: Lens.Lens' DescribeReservedInstancesOfferings (Prelude.Maybe OfferingClassType)
describeReservedInstancesOfferings_offeringClass :: Lens' DescribeReservedInstancesOfferings (Maybe OfferingClassType)
describeReservedInstancesOfferings_offeringClass = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeReservedInstancesOfferings' {Maybe OfferingClassType
offeringClass :: Maybe OfferingClassType
$sel:offeringClass:DescribeReservedInstancesOfferings' :: DescribeReservedInstancesOfferings -> Maybe OfferingClassType
offeringClass} -> Maybe OfferingClassType
offeringClass) (\s :: DescribeReservedInstancesOfferings
s@DescribeReservedInstancesOfferings' {} Maybe OfferingClassType
a -> DescribeReservedInstancesOfferings
s {$sel:offeringClass:DescribeReservedInstancesOfferings' :: Maybe OfferingClassType
offeringClass = Maybe OfferingClassType
a} :: DescribeReservedInstancesOfferings)

-- | The Reserved Instance offering type. If you are using tools that predate
-- the 2011-11-01 API version, you only have access to the
-- @Medium Utilization@ Reserved Instance offering type.
describeReservedInstancesOfferings_offeringType :: Lens.Lens' DescribeReservedInstancesOfferings (Prelude.Maybe OfferingTypeValues)
describeReservedInstancesOfferings_offeringType :: Lens' DescribeReservedInstancesOfferings (Maybe OfferingTypeValues)
describeReservedInstancesOfferings_offeringType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeReservedInstancesOfferings' {Maybe OfferingTypeValues
offeringType :: Maybe OfferingTypeValues
$sel:offeringType:DescribeReservedInstancesOfferings' :: DescribeReservedInstancesOfferings -> Maybe OfferingTypeValues
offeringType} -> Maybe OfferingTypeValues
offeringType) (\s :: DescribeReservedInstancesOfferings
s@DescribeReservedInstancesOfferings' {} Maybe OfferingTypeValues
a -> DescribeReservedInstancesOfferings
s {$sel:offeringType:DescribeReservedInstancesOfferings' :: Maybe OfferingTypeValues
offeringType = Maybe OfferingTypeValues
a} :: DescribeReservedInstancesOfferings)

-- | The Reserved Instance product platform description. Instances that
-- include @(Amazon VPC)@ in the description are for use with Amazon VPC.
describeReservedInstancesOfferings_productDescription :: Lens.Lens' DescribeReservedInstancesOfferings (Prelude.Maybe RIProductDescription)
describeReservedInstancesOfferings_productDescription :: Lens'
  DescribeReservedInstancesOfferings (Maybe RIProductDescription)
describeReservedInstancesOfferings_productDescription = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeReservedInstancesOfferings' {Maybe RIProductDescription
productDescription :: Maybe RIProductDescription
$sel:productDescription:DescribeReservedInstancesOfferings' :: DescribeReservedInstancesOfferings -> Maybe RIProductDescription
productDescription} -> Maybe RIProductDescription
productDescription) (\s :: DescribeReservedInstancesOfferings
s@DescribeReservedInstancesOfferings' {} Maybe RIProductDescription
a -> DescribeReservedInstancesOfferings
s {$sel:productDescription:DescribeReservedInstancesOfferings' :: Maybe RIProductDescription
productDescription = Maybe RIProductDescription
a} :: DescribeReservedInstancesOfferings)

-- | One or more Reserved Instances offering IDs.
describeReservedInstancesOfferings_reservedInstancesOfferingIds :: Lens.Lens' DescribeReservedInstancesOfferings (Prelude.Maybe [Prelude.Text])
describeReservedInstancesOfferings_reservedInstancesOfferingIds :: Lens' DescribeReservedInstancesOfferings (Maybe [Text])
describeReservedInstancesOfferings_reservedInstancesOfferingIds = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeReservedInstancesOfferings' {Maybe [Text]
reservedInstancesOfferingIds :: Maybe [Text]
$sel:reservedInstancesOfferingIds:DescribeReservedInstancesOfferings' :: DescribeReservedInstancesOfferings -> Maybe [Text]
reservedInstancesOfferingIds} -> Maybe [Text]
reservedInstancesOfferingIds) (\s :: DescribeReservedInstancesOfferings
s@DescribeReservedInstancesOfferings' {} Maybe [Text]
a -> DescribeReservedInstancesOfferings
s {$sel:reservedInstancesOfferingIds:DescribeReservedInstancesOfferings' :: Maybe [Text]
reservedInstancesOfferingIds = Maybe [Text]
a} :: DescribeReservedInstancesOfferings) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

instance
  Core.AWSPager
    DescribeReservedInstancesOfferings
  where
  page :: DescribeReservedInstancesOfferings
-> AWSResponse DescribeReservedInstancesOfferings
-> Maybe DescribeReservedInstancesOfferings
page DescribeReservedInstancesOfferings
rq AWSResponse DescribeReservedInstancesOfferings
rs
    | forall a. AWSTruncated a => a -> Bool
Core.stop
        ( AWSResponse DescribeReservedInstancesOfferings
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' DescribeReservedInstancesOfferingsResponse (Maybe Text)
describeReservedInstancesOfferingsResponse_nextToken
            forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall a b. Prism (Maybe a) (Maybe b) a b
Lens._Just
        ) =
        forall a. Maybe a
Prelude.Nothing
    | forall a. AWSTruncated a => a -> Bool
Core.stop
        ( AWSResponse DescribeReservedInstancesOfferings
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens'
  DescribeReservedInstancesOfferingsResponse
  (Maybe [ReservedInstancesOffering])
describeReservedInstancesOfferingsResponse_reservedInstancesOfferings
            forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall a b. Prism (Maybe a) (Maybe b) a b
Lens._Just
        ) =
        forall a. Maybe a
Prelude.Nothing
    | Bool
Prelude.otherwise =
        forall a. a -> Maybe a
Prelude.Just
          forall a b. (a -> b) -> a -> b
Prelude.$ DescribeReservedInstancesOfferings
rq
          forall a b. a -> (a -> b) -> b
Prelude.& Lens' DescribeReservedInstancesOfferings (Maybe Text)
describeReservedInstancesOfferings_nextToken
          forall s t a b. ASetter s t a b -> b -> s -> t
Lens..~ AWSResponse DescribeReservedInstancesOfferings
rs
          forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' DescribeReservedInstancesOfferingsResponse (Maybe Text)
describeReservedInstancesOfferingsResponse_nextToken
          forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall a b. Prism (Maybe a) (Maybe b) a b
Lens._Just

instance
  Core.AWSRequest
    DescribeReservedInstancesOfferings
  where
  type
    AWSResponse DescribeReservedInstancesOfferings =
      DescribeReservedInstancesOfferingsResponse
  request :: (Service -> Service)
-> DescribeReservedInstancesOfferings
-> Request DescribeReservedInstancesOfferings
request Service -> Service
overrides =
    forall a. ToRequest a => Service -> a -> Request a
Request.postQuery (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy DescribeReservedInstancesOfferings
-> ClientResponse ClientBody
-> m (Either
        Error
        (ClientResponse (AWSResponse DescribeReservedInstancesOfferings)))
response =
    forall (m :: * -> *) a.
MonadResource m =>
(Int -> ResponseHeaders -> [Node] -> Either String (AWSResponse a))
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveXML
      ( \Int
s ResponseHeaders
h [Node]
x ->
          Maybe Text
-> Maybe [ReservedInstancesOffering]
-> Int
-> DescribeReservedInstancesOfferingsResponse
DescribeReservedInstancesOfferingsResponse'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"nextToken")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( [Node]
x
                            forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"reservedInstancesOfferingsSet"
                            forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty
                            forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
Prelude.>>= forall (f :: * -> *) a b.
Applicative f =>
([a] -> f b) -> [a] -> f (Maybe b)
Core.may (forall a. FromXML a => Text -> [Node] -> Either String [a]
Data.parseXMLList Text
"item")
                        )
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure (forall a. Enum a => a -> Int
Prelude.fromEnum Int
s))
      )

instance
  Prelude.Hashable
    DescribeReservedInstancesOfferings
  where
  hashWithSalt :: Int -> DescribeReservedInstancesOfferings -> Int
hashWithSalt
    Int
_salt
    DescribeReservedInstancesOfferings' {Maybe Bool
Maybe Int
Maybe Integer
Maybe [Text]
Maybe [Filter]
Maybe Text
Maybe InstanceType
Maybe OfferingClassType
Maybe OfferingTypeValues
Maybe RIProductDescription
Maybe Tenancy
reservedInstancesOfferingIds :: Maybe [Text]
productDescription :: Maybe RIProductDescription
offeringType :: Maybe OfferingTypeValues
offeringClass :: Maybe OfferingClassType
nextToken :: Maybe Text
minDuration :: Maybe Integer
maxResults :: Maybe Int
maxInstanceCount :: Maybe Int
maxDuration :: Maybe Integer
instanceType :: Maybe InstanceType
instanceTenancy :: Maybe Tenancy
includeMarketplace :: Maybe Bool
filters :: Maybe [Filter]
dryRun :: Maybe Bool
availabilityZone :: Maybe Text
$sel:reservedInstancesOfferingIds:DescribeReservedInstancesOfferings' :: DescribeReservedInstancesOfferings -> Maybe [Text]
$sel:productDescription:DescribeReservedInstancesOfferings' :: DescribeReservedInstancesOfferings -> Maybe RIProductDescription
$sel:offeringType:DescribeReservedInstancesOfferings' :: DescribeReservedInstancesOfferings -> Maybe OfferingTypeValues
$sel:offeringClass:DescribeReservedInstancesOfferings' :: DescribeReservedInstancesOfferings -> Maybe OfferingClassType
$sel:nextToken:DescribeReservedInstancesOfferings' :: DescribeReservedInstancesOfferings -> Maybe Text
$sel:minDuration:DescribeReservedInstancesOfferings' :: DescribeReservedInstancesOfferings -> Maybe Integer
$sel:maxResults:DescribeReservedInstancesOfferings' :: DescribeReservedInstancesOfferings -> Maybe Int
$sel:maxInstanceCount:DescribeReservedInstancesOfferings' :: DescribeReservedInstancesOfferings -> Maybe Int
$sel:maxDuration:DescribeReservedInstancesOfferings' :: DescribeReservedInstancesOfferings -> Maybe Integer
$sel:instanceType:DescribeReservedInstancesOfferings' :: DescribeReservedInstancesOfferings -> Maybe InstanceType
$sel:instanceTenancy:DescribeReservedInstancesOfferings' :: DescribeReservedInstancesOfferings -> Maybe Tenancy
$sel:includeMarketplace:DescribeReservedInstancesOfferings' :: DescribeReservedInstancesOfferings -> Maybe Bool
$sel:filters:DescribeReservedInstancesOfferings' :: DescribeReservedInstancesOfferings -> Maybe [Filter]
$sel:dryRun:DescribeReservedInstancesOfferings' :: DescribeReservedInstancesOfferings -> Maybe Bool
$sel:availabilityZone:DescribeReservedInstancesOfferings' :: DescribeReservedInstancesOfferings -> Maybe Text
..} =
      Int
_salt
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
availabilityZone
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
dryRun
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Filter]
filters
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
includeMarketplace
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Tenancy
instanceTenancy
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe InstanceType
instanceType
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Integer
maxDuration
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
maxInstanceCount
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
maxResults
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Integer
minDuration
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
nextToken
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe OfferingClassType
offeringClass
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe OfferingTypeValues
offeringType
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe RIProductDescription
productDescription
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Text]
reservedInstancesOfferingIds

instance
  Prelude.NFData
    DescribeReservedInstancesOfferings
  where
  rnf :: DescribeReservedInstancesOfferings -> ()
rnf DescribeReservedInstancesOfferings' {Maybe Bool
Maybe Int
Maybe Integer
Maybe [Text]
Maybe [Filter]
Maybe Text
Maybe InstanceType
Maybe OfferingClassType
Maybe OfferingTypeValues
Maybe RIProductDescription
Maybe Tenancy
reservedInstancesOfferingIds :: Maybe [Text]
productDescription :: Maybe RIProductDescription
offeringType :: Maybe OfferingTypeValues
offeringClass :: Maybe OfferingClassType
nextToken :: Maybe Text
minDuration :: Maybe Integer
maxResults :: Maybe Int
maxInstanceCount :: Maybe Int
maxDuration :: Maybe Integer
instanceType :: Maybe InstanceType
instanceTenancy :: Maybe Tenancy
includeMarketplace :: Maybe Bool
filters :: Maybe [Filter]
dryRun :: Maybe Bool
availabilityZone :: Maybe Text
$sel:reservedInstancesOfferingIds:DescribeReservedInstancesOfferings' :: DescribeReservedInstancesOfferings -> Maybe [Text]
$sel:productDescription:DescribeReservedInstancesOfferings' :: DescribeReservedInstancesOfferings -> Maybe RIProductDescription
$sel:offeringType:DescribeReservedInstancesOfferings' :: DescribeReservedInstancesOfferings -> Maybe OfferingTypeValues
$sel:offeringClass:DescribeReservedInstancesOfferings' :: DescribeReservedInstancesOfferings -> Maybe OfferingClassType
$sel:nextToken:DescribeReservedInstancesOfferings' :: DescribeReservedInstancesOfferings -> Maybe Text
$sel:minDuration:DescribeReservedInstancesOfferings' :: DescribeReservedInstancesOfferings -> Maybe Integer
$sel:maxResults:DescribeReservedInstancesOfferings' :: DescribeReservedInstancesOfferings -> Maybe Int
$sel:maxInstanceCount:DescribeReservedInstancesOfferings' :: DescribeReservedInstancesOfferings -> Maybe Int
$sel:maxDuration:DescribeReservedInstancesOfferings' :: DescribeReservedInstancesOfferings -> Maybe Integer
$sel:instanceType:DescribeReservedInstancesOfferings' :: DescribeReservedInstancesOfferings -> Maybe InstanceType
$sel:instanceTenancy:DescribeReservedInstancesOfferings' :: DescribeReservedInstancesOfferings -> Maybe Tenancy
$sel:includeMarketplace:DescribeReservedInstancesOfferings' :: DescribeReservedInstancesOfferings -> Maybe Bool
$sel:filters:DescribeReservedInstancesOfferings' :: DescribeReservedInstancesOfferings -> Maybe [Filter]
$sel:dryRun:DescribeReservedInstancesOfferings' :: DescribeReservedInstancesOfferings -> Maybe Bool
$sel:availabilityZone:DescribeReservedInstancesOfferings' :: DescribeReservedInstancesOfferings -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
availabilityZone
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
dryRun
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Filter]
filters
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
includeMarketplace
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Tenancy
instanceTenancy
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe InstanceType
instanceType
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Integer
maxDuration
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Int
maxInstanceCount
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Int
maxResults
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Integer
minDuration
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
nextToken
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe OfferingClassType
offeringClass
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe OfferingTypeValues
offeringType
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe RIProductDescription
productDescription
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Text]
reservedInstancesOfferingIds

instance
  Data.ToHeaders
    DescribeReservedInstancesOfferings
  where
  toHeaders :: DescribeReservedInstancesOfferings -> ResponseHeaders
toHeaders = forall a b. a -> b -> a
Prelude.const forall a. Monoid a => a
Prelude.mempty

instance
  Data.ToPath
    DescribeReservedInstancesOfferings
  where
  toPath :: DescribeReservedInstancesOfferings -> ByteString
toPath = forall a b. a -> b -> a
Prelude.const ByteString
"/"

instance
  Data.ToQuery
    DescribeReservedInstancesOfferings
  where
  toQuery :: DescribeReservedInstancesOfferings -> QueryString
toQuery DescribeReservedInstancesOfferings' {Maybe Bool
Maybe Int
Maybe Integer
Maybe [Text]
Maybe [Filter]
Maybe Text
Maybe InstanceType
Maybe OfferingClassType
Maybe OfferingTypeValues
Maybe RIProductDescription
Maybe Tenancy
reservedInstancesOfferingIds :: Maybe [Text]
productDescription :: Maybe RIProductDescription
offeringType :: Maybe OfferingTypeValues
offeringClass :: Maybe OfferingClassType
nextToken :: Maybe Text
minDuration :: Maybe Integer
maxResults :: Maybe Int
maxInstanceCount :: Maybe Int
maxDuration :: Maybe Integer
instanceType :: Maybe InstanceType
instanceTenancy :: Maybe Tenancy
includeMarketplace :: Maybe Bool
filters :: Maybe [Filter]
dryRun :: Maybe Bool
availabilityZone :: Maybe Text
$sel:reservedInstancesOfferingIds:DescribeReservedInstancesOfferings' :: DescribeReservedInstancesOfferings -> Maybe [Text]
$sel:productDescription:DescribeReservedInstancesOfferings' :: DescribeReservedInstancesOfferings -> Maybe RIProductDescription
$sel:offeringType:DescribeReservedInstancesOfferings' :: DescribeReservedInstancesOfferings -> Maybe OfferingTypeValues
$sel:offeringClass:DescribeReservedInstancesOfferings' :: DescribeReservedInstancesOfferings -> Maybe OfferingClassType
$sel:nextToken:DescribeReservedInstancesOfferings' :: DescribeReservedInstancesOfferings -> Maybe Text
$sel:minDuration:DescribeReservedInstancesOfferings' :: DescribeReservedInstancesOfferings -> Maybe Integer
$sel:maxResults:DescribeReservedInstancesOfferings' :: DescribeReservedInstancesOfferings -> Maybe Int
$sel:maxInstanceCount:DescribeReservedInstancesOfferings' :: DescribeReservedInstancesOfferings -> Maybe Int
$sel:maxDuration:DescribeReservedInstancesOfferings' :: DescribeReservedInstancesOfferings -> Maybe Integer
$sel:instanceType:DescribeReservedInstancesOfferings' :: DescribeReservedInstancesOfferings -> Maybe InstanceType
$sel:instanceTenancy:DescribeReservedInstancesOfferings' :: DescribeReservedInstancesOfferings -> Maybe Tenancy
$sel:includeMarketplace:DescribeReservedInstancesOfferings' :: DescribeReservedInstancesOfferings -> Maybe Bool
$sel:filters:DescribeReservedInstancesOfferings' :: DescribeReservedInstancesOfferings -> Maybe [Filter]
$sel:dryRun:DescribeReservedInstancesOfferings' :: DescribeReservedInstancesOfferings -> Maybe Bool
$sel:availabilityZone:DescribeReservedInstancesOfferings' :: DescribeReservedInstancesOfferings -> Maybe Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"Action"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: ( ByteString
"DescribeReservedInstancesOfferings" ::
                      Prelude.ByteString
                  ),
        ByteString
"Version"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: (ByteString
"2016-11-15" :: Prelude.ByteString),
        ByteString
"AvailabilityZone" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
availabilityZone,
        ByteString
"DryRun" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Bool
dryRun,
        forall a. ToQuery a => a -> QueryString
Data.toQuery
          (forall a.
(IsList a, ToQuery (Item a)) =>
ByteString -> a -> QueryString
Data.toQueryList ByteString
"Filter" forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [Filter]
filters),
        ByteString
"IncludeMarketplace" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Bool
includeMarketplace,
        ByteString
"InstanceTenancy" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Tenancy
instanceTenancy,
        ByteString
"InstanceType" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe InstanceType
instanceType,
        ByteString
"MaxDuration" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Integer
maxDuration,
        ByteString
"MaxInstanceCount" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Int
maxInstanceCount,
        ByteString
"MaxResults" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Int
maxResults,
        ByteString
"MinDuration" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Integer
minDuration,
        ByteString
"NextToken" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
nextToken,
        ByteString
"OfferingClass" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe OfferingClassType
offeringClass,
        ByteString
"OfferingType" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe OfferingTypeValues
offeringType,
        ByteString
"ProductDescription" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe RIProductDescription
productDescription,
        forall a. ToQuery a => a -> QueryString
Data.toQuery
          ( forall a.
(IsList a, ToQuery (Item a)) =>
ByteString -> a -> QueryString
Data.toQueryList ByteString
"ReservedInstancesOfferingId"
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [Text]
reservedInstancesOfferingIds
          )
      ]

-- | Contains the output of DescribeReservedInstancesOfferings.
--
-- /See:/ 'newDescribeReservedInstancesOfferingsResponse' smart constructor.
data DescribeReservedInstancesOfferingsResponse = DescribeReservedInstancesOfferingsResponse'
  { -- | The token to use to retrieve the next page of results. This value is
    -- @null@ when there are no more results to return.
    DescribeReservedInstancesOfferingsResponse -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text,
    -- | A list of Reserved Instances offerings.
    DescribeReservedInstancesOfferingsResponse
-> Maybe [ReservedInstancesOffering]
reservedInstancesOfferings :: Prelude.Maybe [ReservedInstancesOffering],
    -- | The response's http status code.
    DescribeReservedInstancesOfferingsResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (DescribeReservedInstancesOfferingsResponse
-> DescribeReservedInstancesOfferingsResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeReservedInstancesOfferingsResponse
-> DescribeReservedInstancesOfferingsResponse -> Bool
$c/= :: DescribeReservedInstancesOfferingsResponse
-> DescribeReservedInstancesOfferingsResponse -> Bool
== :: DescribeReservedInstancesOfferingsResponse
-> DescribeReservedInstancesOfferingsResponse -> Bool
$c== :: DescribeReservedInstancesOfferingsResponse
-> DescribeReservedInstancesOfferingsResponse -> Bool
Prelude.Eq, ReadPrec [DescribeReservedInstancesOfferingsResponse]
ReadPrec DescribeReservedInstancesOfferingsResponse
Int -> ReadS DescribeReservedInstancesOfferingsResponse
ReadS [DescribeReservedInstancesOfferingsResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeReservedInstancesOfferingsResponse]
$creadListPrec :: ReadPrec [DescribeReservedInstancesOfferingsResponse]
readPrec :: ReadPrec DescribeReservedInstancesOfferingsResponse
$creadPrec :: ReadPrec DescribeReservedInstancesOfferingsResponse
readList :: ReadS [DescribeReservedInstancesOfferingsResponse]
$creadList :: ReadS [DescribeReservedInstancesOfferingsResponse]
readsPrec :: Int -> ReadS DescribeReservedInstancesOfferingsResponse
$creadsPrec :: Int -> ReadS DescribeReservedInstancesOfferingsResponse
Prelude.Read, Int -> DescribeReservedInstancesOfferingsResponse -> ShowS
[DescribeReservedInstancesOfferingsResponse] -> ShowS
DescribeReservedInstancesOfferingsResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeReservedInstancesOfferingsResponse] -> ShowS
$cshowList :: [DescribeReservedInstancesOfferingsResponse] -> ShowS
show :: DescribeReservedInstancesOfferingsResponse -> String
$cshow :: DescribeReservedInstancesOfferingsResponse -> String
showsPrec :: Int -> DescribeReservedInstancesOfferingsResponse -> ShowS
$cshowsPrec :: Int -> DescribeReservedInstancesOfferingsResponse -> ShowS
Prelude.Show, forall x.
Rep DescribeReservedInstancesOfferingsResponse x
-> DescribeReservedInstancesOfferingsResponse
forall x.
DescribeReservedInstancesOfferingsResponse
-> Rep DescribeReservedInstancesOfferingsResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribeReservedInstancesOfferingsResponse x
-> DescribeReservedInstancesOfferingsResponse
$cfrom :: forall x.
DescribeReservedInstancesOfferingsResponse
-> Rep DescribeReservedInstancesOfferingsResponse x
Prelude.Generic)

-- |
-- Create a value of 'DescribeReservedInstancesOfferingsResponse' with all optional fields omitted.
--
-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
--
-- The following record fields are available, with the corresponding lenses provided
-- for backwards compatibility:
--
-- 'nextToken', 'describeReservedInstancesOfferingsResponse_nextToken' - The token to use to retrieve the next page of results. This value is
-- @null@ when there are no more results to return.
--
-- 'reservedInstancesOfferings', 'describeReservedInstancesOfferingsResponse_reservedInstancesOfferings' - A list of Reserved Instances offerings.
--
-- 'httpStatus', 'describeReservedInstancesOfferingsResponse_httpStatus' - The response's http status code.
newDescribeReservedInstancesOfferingsResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  DescribeReservedInstancesOfferingsResponse
newDescribeReservedInstancesOfferingsResponse :: Int -> DescribeReservedInstancesOfferingsResponse
newDescribeReservedInstancesOfferingsResponse
  Int
pHttpStatus_ =
    DescribeReservedInstancesOfferingsResponse'
      { $sel:nextToken:DescribeReservedInstancesOfferingsResponse' :: Maybe Text
nextToken =
          forall a. Maybe a
Prelude.Nothing,
        $sel:reservedInstancesOfferings:DescribeReservedInstancesOfferingsResponse' :: Maybe [ReservedInstancesOffering]
reservedInstancesOfferings =
          forall a. Maybe a
Prelude.Nothing,
        $sel:httpStatus:DescribeReservedInstancesOfferingsResponse' :: Int
httpStatus = Int
pHttpStatus_
      }

-- | The token to use to retrieve the next page of results. This value is
-- @null@ when there are no more results to return.
describeReservedInstancesOfferingsResponse_nextToken :: Lens.Lens' DescribeReservedInstancesOfferingsResponse (Prelude.Maybe Prelude.Text)
describeReservedInstancesOfferingsResponse_nextToken :: Lens' DescribeReservedInstancesOfferingsResponse (Maybe Text)
describeReservedInstancesOfferingsResponse_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeReservedInstancesOfferingsResponse' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:DescribeReservedInstancesOfferingsResponse' :: DescribeReservedInstancesOfferingsResponse -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: DescribeReservedInstancesOfferingsResponse
s@DescribeReservedInstancesOfferingsResponse' {} Maybe Text
a -> DescribeReservedInstancesOfferingsResponse
s {$sel:nextToken:DescribeReservedInstancesOfferingsResponse' :: Maybe Text
nextToken = Maybe Text
a} :: DescribeReservedInstancesOfferingsResponse)

-- | A list of Reserved Instances offerings.
describeReservedInstancesOfferingsResponse_reservedInstancesOfferings :: Lens.Lens' DescribeReservedInstancesOfferingsResponse (Prelude.Maybe [ReservedInstancesOffering])
describeReservedInstancesOfferingsResponse_reservedInstancesOfferings :: Lens'
  DescribeReservedInstancesOfferingsResponse
  (Maybe [ReservedInstancesOffering])
describeReservedInstancesOfferingsResponse_reservedInstancesOfferings = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeReservedInstancesOfferingsResponse' {Maybe [ReservedInstancesOffering]
reservedInstancesOfferings :: Maybe [ReservedInstancesOffering]
$sel:reservedInstancesOfferings:DescribeReservedInstancesOfferingsResponse' :: DescribeReservedInstancesOfferingsResponse
-> Maybe [ReservedInstancesOffering]
reservedInstancesOfferings} -> Maybe [ReservedInstancesOffering]
reservedInstancesOfferings) (\s :: DescribeReservedInstancesOfferingsResponse
s@DescribeReservedInstancesOfferingsResponse' {} Maybe [ReservedInstancesOffering]
a -> DescribeReservedInstancesOfferingsResponse
s {$sel:reservedInstancesOfferings:DescribeReservedInstancesOfferingsResponse' :: Maybe [ReservedInstancesOffering]
reservedInstancesOfferings = Maybe [ReservedInstancesOffering]
a} :: DescribeReservedInstancesOfferingsResponse) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The response's http status code.
describeReservedInstancesOfferingsResponse_httpStatus :: Lens.Lens' DescribeReservedInstancesOfferingsResponse Prelude.Int
describeReservedInstancesOfferingsResponse_httpStatus :: Lens' DescribeReservedInstancesOfferingsResponse Int
describeReservedInstancesOfferingsResponse_httpStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeReservedInstancesOfferingsResponse' {Int
httpStatus :: Int
$sel:httpStatus:DescribeReservedInstancesOfferingsResponse' :: DescribeReservedInstancesOfferingsResponse -> Int
httpStatus} -> Int
httpStatus) (\s :: DescribeReservedInstancesOfferingsResponse
s@DescribeReservedInstancesOfferingsResponse' {} Int
a -> DescribeReservedInstancesOfferingsResponse
s {$sel:httpStatus:DescribeReservedInstancesOfferingsResponse' :: Int
httpStatus = Int
a} :: DescribeReservedInstancesOfferingsResponse)

instance
  Prelude.NFData
    DescribeReservedInstancesOfferingsResponse
  where
  rnf :: DescribeReservedInstancesOfferingsResponse -> ()
rnf DescribeReservedInstancesOfferingsResponse' {Int
Maybe [ReservedInstancesOffering]
Maybe Text
httpStatus :: Int
reservedInstancesOfferings :: Maybe [ReservedInstancesOffering]
nextToken :: Maybe Text
$sel:httpStatus:DescribeReservedInstancesOfferingsResponse' :: DescribeReservedInstancesOfferingsResponse -> Int
$sel:reservedInstancesOfferings:DescribeReservedInstancesOfferingsResponse' :: DescribeReservedInstancesOfferingsResponse
-> Maybe [ReservedInstancesOffering]
$sel:nextToken:DescribeReservedInstancesOfferingsResponse' :: DescribeReservedInstancesOfferingsResponse -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
nextToken
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [ReservedInstancesOffering]
reservedInstancesOfferings
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus