{-# 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.SavingsPlans.DescribeSavingsPlansOfferingRates
-- 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 the specified Savings Plans offering rates.
module Amazonka.SavingsPlans.DescribeSavingsPlansOfferingRates
  ( -- * Creating a Request
    DescribeSavingsPlansOfferingRates (..),
    newDescribeSavingsPlansOfferingRates,

    -- * Request Lenses
    describeSavingsPlansOfferingRates_filters,
    describeSavingsPlansOfferingRates_maxResults,
    describeSavingsPlansOfferingRates_nextToken,
    describeSavingsPlansOfferingRates_operations,
    describeSavingsPlansOfferingRates_products,
    describeSavingsPlansOfferingRates_savingsPlanOfferingIds,
    describeSavingsPlansOfferingRates_savingsPlanPaymentOptions,
    describeSavingsPlansOfferingRates_savingsPlanTypes,
    describeSavingsPlansOfferingRates_serviceCodes,
    describeSavingsPlansOfferingRates_usageTypes,

    -- * Destructuring the Response
    DescribeSavingsPlansOfferingRatesResponse (..),
    newDescribeSavingsPlansOfferingRatesResponse,

    -- * Response Lenses
    describeSavingsPlansOfferingRatesResponse_nextToken,
    describeSavingsPlansOfferingRatesResponse_searchResults,
    describeSavingsPlansOfferingRatesResponse_httpStatus,
  )
where

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

-- | /See:/ 'newDescribeSavingsPlansOfferingRates' smart constructor.
data DescribeSavingsPlansOfferingRates = DescribeSavingsPlansOfferingRates'
  { -- | The filters.
    DescribeSavingsPlansOfferingRates
-> Maybe [SavingsPlanOfferingRateFilterElement]
filters :: Prelude.Maybe [SavingsPlanOfferingRateFilterElement],
    -- | The maximum number of results to return with a single call. To retrieve
    -- additional results, make another call with the returned token value.
    DescribeSavingsPlansOfferingRates -> Maybe Natural
maxResults :: Prelude.Maybe Prelude.Natural,
    -- | The token for the next page of results.
    DescribeSavingsPlansOfferingRates -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text,
    -- | The specific AWS operation for the line item in the billing report.
    DescribeSavingsPlansOfferingRates -> Maybe [Text]
operations :: Prelude.Maybe [Prelude.Text],
    -- | The AWS products.
    DescribeSavingsPlansOfferingRates -> Maybe [SavingsPlanProductType]
products :: Prelude.Maybe [SavingsPlanProductType],
    -- | The IDs of the offerings.
    DescribeSavingsPlansOfferingRates -> Maybe [Text]
savingsPlanOfferingIds :: Prelude.Maybe [Prelude.Text],
    -- | The payment options.
    DescribeSavingsPlansOfferingRates
-> Maybe [SavingsPlanPaymentOption]
savingsPlanPaymentOptions :: Prelude.Maybe [SavingsPlanPaymentOption],
    -- | The plan types.
    DescribeSavingsPlansOfferingRates -> Maybe [SavingsPlanType]
savingsPlanTypes :: Prelude.Maybe [SavingsPlanType],
    -- | The services.
    DescribeSavingsPlansOfferingRates
-> Maybe [SavingsPlanRateServiceCode]
serviceCodes :: Prelude.Maybe [SavingsPlanRateServiceCode],
    -- | The usage details of the line item in the billing report.
    DescribeSavingsPlansOfferingRates -> Maybe [Text]
usageTypes :: Prelude.Maybe [Prelude.Text]
  }
  deriving (DescribeSavingsPlansOfferingRates
-> DescribeSavingsPlansOfferingRates -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeSavingsPlansOfferingRates
-> DescribeSavingsPlansOfferingRates -> Bool
$c/= :: DescribeSavingsPlansOfferingRates
-> DescribeSavingsPlansOfferingRates -> Bool
== :: DescribeSavingsPlansOfferingRates
-> DescribeSavingsPlansOfferingRates -> Bool
$c== :: DescribeSavingsPlansOfferingRates
-> DescribeSavingsPlansOfferingRates -> Bool
Prelude.Eq, ReadPrec [DescribeSavingsPlansOfferingRates]
ReadPrec DescribeSavingsPlansOfferingRates
Int -> ReadS DescribeSavingsPlansOfferingRates
ReadS [DescribeSavingsPlansOfferingRates]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeSavingsPlansOfferingRates]
$creadListPrec :: ReadPrec [DescribeSavingsPlansOfferingRates]
readPrec :: ReadPrec DescribeSavingsPlansOfferingRates
$creadPrec :: ReadPrec DescribeSavingsPlansOfferingRates
readList :: ReadS [DescribeSavingsPlansOfferingRates]
$creadList :: ReadS [DescribeSavingsPlansOfferingRates]
readsPrec :: Int -> ReadS DescribeSavingsPlansOfferingRates
$creadsPrec :: Int -> ReadS DescribeSavingsPlansOfferingRates
Prelude.Read, Int -> DescribeSavingsPlansOfferingRates -> ShowS
[DescribeSavingsPlansOfferingRates] -> ShowS
DescribeSavingsPlansOfferingRates -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeSavingsPlansOfferingRates] -> ShowS
$cshowList :: [DescribeSavingsPlansOfferingRates] -> ShowS
show :: DescribeSavingsPlansOfferingRates -> String
$cshow :: DescribeSavingsPlansOfferingRates -> String
showsPrec :: Int -> DescribeSavingsPlansOfferingRates -> ShowS
$cshowsPrec :: Int -> DescribeSavingsPlansOfferingRates -> ShowS
Prelude.Show, forall x.
Rep DescribeSavingsPlansOfferingRates x
-> DescribeSavingsPlansOfferingRates
forall x.
DescribeSavingsPlansOfferingRates
-> Rep DescribeSavingsPlansOfferingRates x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribeSavingsPlansOfferingRates x
-> DescribeSavingsPlansOfferingRates
$cfrom :: forall x.
DescribeSavingsPlansOfferingRates
-> Rep DescribeSavingsPlansOfferingRates x
Prelude.Generic)

-- |
-- Create a value of 'DescribeSavingsPlansOfferingRates' 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:
--
-- 'filters', 'describeSavingsPlansOfferingRates_filters' - The filters.
--
-- 'maxResults', 'describeSavingsPlansOfferingRates_maxResults' - The maximum number of results to return with a single call. To retrieve
-- additional results, make another call with the returned token value.
--
-- 'nextToken', 'describeSavingsPlansOfferingRates_nextToken' - The token for the next page of results.
--
-- 'operations', 'describeSavingsPlansOfferingRates_operations' - The specific AWS operation for the line item in the billing report.
--
-- 'products', 'describeSavingsPlansOfferingRates_products' - The AWS products.
--
-- 'savingsPlanOfferingIds', 'describeSavingsPlansOfferingRates_savingsPlanOfferingIds' - The IDs of the offerings.
--
-- 'savingsPlanPaymentOptions', 'describeSavingsPlansOfferingRates_savingsPlanPaymentOptions' - The payment options.
--
-- 'savingsPlanTypes', 'describeSavingsPlansOfferingRates_savingsPlanTypes' - The plan types.
--
-- 'serviceCodes', 'describeSavingsPlansOfferingRates_serviceCodes' - The services.
--
-- 'usageTypes', 'describeSavingsPlansOfferingRates_usageTypes' - The usage details of the line item in the billing report.
newDescribeSavingsPlansOfferingRates ::
  DescribeSavingsPlansOfferingRates
newDescribeSavingsPlansOfferingRates :: DescribeSavingsPlansOfferingRates
newDescribeSavingsPlansOfferingRates =
  DescribeSavingsPlansOfferingRates'
    { $sel:filters:DescribeSavingsPlansOfferingRates' :: Maybe [SavingsPlanOfferingRateFilterElement]
filters =
        forall a. Maybe a
Prelude.Nothing,
      $sel:maxResults:DescribeSavingsPlansOfferingRates' :: Maybe Natural
maxResults = forall a. Maybe a
Prelude.Nothing,
      $sel:nextToken:DescribeSavingsPlansOfferingRates' :: Maybe Text
nextToken = forall a. Maybe a
Prelude.Nothing,
      $sel:operations:DescribeSavingsPlansOfferingRates' :: Maybe [Text]
operations = forall a. Maybe a
Prelude.Nothing,
      $sel:products:DescribeSavingsPlansOfferingRates' :: Maybe [SavingsPlanProductType]
products = forall a. Maybe a
Prelude.Nothing,
      $sel:savingsPlanOfferingIds:DescribeSavingsPlansOfferingRates' :: Maybe [Text]
savingsPlanOfferingIds = forall a. Maybe a
Prelude.Nothing,
      $sel:savingsPlanPaymentOptions:DescribeSavingsPlansOfferingRates' :: Maybe [SavingsPlanPaymentOption]
savingsPlanPaymentOptions =
        forall a. Maybe a
Prelude.Nothing,
      $sel:savingsPlanTypes:DescribeSavingsPlansOfferingRates' :: Maybe [SavingsPlanType]
savingsPlanTypes = forall a. Maybe a
Prelude.Nothing,
      $sel:serviceCodes:DescribeSavingsPlansOfferingRates' :: Maybe [SavingsPlanRateServiceCode]
serviceCodes = forall a. Maybe a
Prelude.Nothing,
      $sel:usageTypes:DescribeSavingsPlansOfferingRates' :: Maybe [Text]
usageTypes = forall a. Maybe a
Prelude.Nothing
    }

-- | The filters.
describeSavingsPlansOfferingRates_filters :: Lens.Lens' DescribeSavingsPlansOfferingRates (Prelude.Maybe [SavingsPlanOfferingRateFilterElement])
describeSavingsPlansOfferingRates_filters :: Lens'
  DescribeSavingsPlansOfferingRates
  (Maybe [SavingsPlanOfferingRateFilterElement])
describeSavingsPlansOfferingRates_filters = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeSavingsPlansOfferingRates' {Maybe [SavingsPlanOfferingRateFilterElement]
filters :: Maybe [SavingsPlanOfferingRateFilterElement]
$sel:filters:DescribeSavingsPlansOfferingRates' :: DescribeSavingsPlansOfferingRates
-> Maybe [SavingsPlanOfferingRateFilterElement]
filters} -> Maybe [SavingsPlanOfferingRateFilterElement]
filters) (\s :: DescribeSavingsPlansOfferingRates
s@DescribeSavingsPlansOfferingRates' {} Maybe [SavingsPlanOfferingRateFilterElement]
a -> DescribeSavingsPlansOfferingRates
s {$sel:filters:DescribeSavingsPlansOfferingRates' :: Maybe [SavingsPlanOfferingRateFilterElement]
filters = Maybe [SavingsPlanOfferingRateFilterElement]
a} :: DescribeSavingsPlansOfferingRates) 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 maximum number of results to return with a single call. To retrieve
-- additional results, make another call with the returned token value.
describeSavingsPlansOfferingRates_maxResults :: Lens.Lens' DescribeSavingsPlansOfferingRates (Prelude.Maybe Prelude.Natural)
describeSavingsPlansOfferingRates_maxResults :: Lens' DescribeSavingsPlansOfferingRates (Maybe Natural)
describeSavingsPlansOfferingRates_maxResults = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeSavingsPlansOfferingRates' {Maybe Natural
maxResults :: Maybe Natural
$sel:maxResults:DescribeSavingsPlansOfferingRates' :: DescribeSavingsPlansOfferingRates -> Maybe Natural
maxResults} -> Maybe Natural
maxResults) (\s :: DescribeSavingsPlansOfferingRates
s@DescribeSavingsPlansOfferingRates' {} Maybe Natural
a -> DescribeSavingsPlansOfferingRates
s {$sel:maxResults:DescribeSavingsPlansOfferingRates' :: Maybe Natural
maxResults = Maybe Natural
a} :: DescribeSavingsPlansOfferingRates)

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

-- | The specific AWS operation for the line item in the billing report.
describeSavingsPlansOfferingRates_operations :: Lens.Lens' DescribeSavingsPlansOfferingRates (Prelude.Maybe [Prelude.Text])
describeSavingsPlansOfferingRates_operations :: Lens' DescribeSavingsPlansOfferingRates (Maybe [Text])
describeSavingsPlansOfferingRates_operations = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeSavingsPlansOfferingRates' {Maybe [Text]
operations :: Maybe [Text]
$sel:operations:DescribeSavingsPlansOfferingRates' :: DescribeSavingsPlansOfferingRates -> Maybe [Text]
operations} -> Maybe [Text]
operations) (\s :: DescribeSavingsPlansOfferingRates
s@DescribeSavingsPlansOfferingRates' {} Maybe [Text]
a -> DescribeSavingsPlansOfferingRates
s {$sel:operations:DescribeSavingsPlansOfferingRates' :: Maybe [Text]
operations = Maybe [Text]
a} :: DescribeSavingsPlansOfferingRates) 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 AWS products.
describeSavingsPlansOfferingRates_products :: Lens.Lens' DescribeSavingsPlansOfferingRates (Prelude.Maybe [SavingsPlanProductType])
describeSavingsPlansOfferingRates_products :: Lens'
  DescribeSavingsPlansOfferingRates (Maybe [SavingsPlanProductType])
describeSavingsPlansOfferingRates_products = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeSavingsPlansOfferingRates' {Maybe [SavingsPlanProductType]
products :: Maybe [SavingsPlanProductType]
$sel:products:DescribeSavingsPlansOfferingRates' :: DescribeSavingsPlansOfferingRates -> Maybe [SavingsPlanProductType]
products} -> Maybe [SavingsPlanProductType]
products) (\s :: DescribeSavingsPlansOfferingRates
s@DescribeSavingsPlansOfferingRates' {} Maybe [SavingsPlanProductType]
a -> DescribeSavingsPlansOfferingRates
s {$sel:products:DescribeSavingsPlansOfferingRates' :: Maybe [SavingsPlanProductType]
products = Maybe [SavingsPlanProductType]
a} :: DescribeSavingsPlansOfferingRates) 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 IDs of the offerings.
describeSavingsPlansOfferingRates_savingsPlanOfferingIds :: Lens.Lens' DescribeSavingsPlansOfferingRates (Prelude.Maybe [Prelude.Text])
describeSavingsPlansOfferingRates_savingsPlanOfferingIds :: Lens' DescribeSavingsPlansOfferingRates (Maybe [Text])
describeSavingsPlansOfferingRates_savingsPlanOfferingIds = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeSavingsPlansOfferingRates' {Maybe [Text]
savingsPlanOfferingIds :: Maybe [Text]
$sel:savingsPlanOfferingIds:DescribeSavingsPlansOfferingRates' :: DescribeSavingsPlansOfferingRates -> Maybe [Text]
savingsPlanOfferingIds} -> Maybe [Text]
savingsPlanOfferingIds) (\s :: DescribeSavingsPlansOfferingRates
s@DescribeSavingsPlansOfferingRates' {} Maybe [Text]
a -> DescribeSavingsPlansOfferingRates
s {$sel:savingsPlanOfferingIds:DescribeSavingsPlansOfferingRates' :: Maybe [Text]
savingsPlanOfferingIds = Maybe [Text]
a} :: DescribeSavingsPlansOfferingRates) 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 payment options.
describeSavingsPlansOfferingRates_savingsPlanPaymentOptions :: Lens.Lens' DescribeSavingsPlansOfferingRates (Prelude.Maybe [SavingsPlanPaymentOption])
describeSavingsPlansOfferingRates_savingsPlanPaymentOptions :: Lens'
  DescribeSavingsPlansOfferingRates
  (Maybe [SavingsPlanPaymentOption])
describeSavingsPlansOfferingRates_savingsPlanPaymentOptions = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeSavingsPlansOfferingRates' {Maybe [SavingsPlanPaymentOption]
savingsPlanPaymentOptions :: Maybe [SavingsPlanPaymentOption]
$sel:savingsPlanPaymentOptions:DescribeSavingsPlansOfferingRates' :: DescribeSavingsPlansOfferingRates
-> Maybe [SavingsPlanPaymentOption]
savingsPlanPaymentOptions} -> Maybe [SavingsPlanPaymentOption]
savingsPlanPaymentOptions) (\s :: DescribeSavingsPlansOfferingRates
s@DescribeSavingsPlansOfferingRates' {} Maybe [SavingsPlanPaymentOption]
a -> DescribeSavingsPlansOfferingRates
s {$sel:savingsPlanPaymentOptions:DescribeSavingsPlansOfferingRates' :: Maybe [SavingsPlanPaymentOption]
savingsPlanPaymentOptions = Maybe [SavingsPlanPaymentOption]
a} :: DescribeSavingsPlansOfferingRates) 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 plan types.
describeSavingsPlansOfferingRates_savingsPlanTypes :: Lens.Lens' DescribeSavingsPlansOfferingRates (Prelude.Maybe [SavingsPlanType])
describeSavingsPlansOfferingRates_savingsPlanTypes :: Lens' DescribeSavingsPlansOfferingRates (Maybe [SavingsPlanType])
describeSavingsPlansOfferingRates_savingsPlanTypes = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeSavingsPlansOfferingRates' {Maybe [SavingsPlanType]
savingsPlanTypes :: Maybe [SavingsPlanType]
$sel:savingsPlanTypes:DescribeSavingsPlansOfferingRates' :: DescribeSavingsPlansOfferingRates -> Maybe [SavingsPlanType]
savingsPlanTypes} -> Maybe [SavingsPlanType]
savingsPlanTypes) (\s :: DescribeSavingsPlansOfferingRates
s@DescribeSavingsPlansOfferingRates' {} Maybe [SavingsPlanType]
a -> DescribeSavingsPlansOfferingRates
s {$sel:savingsPlanTypes:DescribeSavingsPlansOfferingRates' :: Maybe [SavingsPlanType]
savingsPlanTypes = Maybe [SavingsPlanType]
a} :: DescribeSavingsPlansOfferingRates) 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 services.
describeSavingsPlansOfferingRates_serviceCodes :: Lens.Lens' DescribeSavingsPlansOfferingRates (Prelude.Maybe [SavingsPlanRateServiceCode])
describeSavingsPlansOfferingRates_serviceCodes :: Lens'
  DescribeSavingsPlansOfferingRates
  (Maybe [SavingsPlanRateServiceCode])
describeSavingsPlansOfferingRates_serviceCodes = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeSavingsPlansOfferingRates' {Maybe [SavingsPlanRateServiceCode]
serviceCodes :: Maybe [SavingsPlanRateServiceCode]
$sel:serviceCodes:DescribeSavingsPlansOfferingRates' :: DescribeSavingsPlansOfferingRates
-> Maybe [SavingsPlanRateServiceCode]
serviceCodes} -> Maybe [SavingsPlanRateServiceCode]
serviceCodes) (\s :: DescribeSavingsPlansOfferingRates
s@DescribeSavingsPlansOfferingRates' {} Maybe [SavingsPlanRateServiceCode]
a -> DescribeSavingsPlansOfferingRates
s {$sel:serviceCodes:DescribeSavingsPlansOfferingRates' :: Maybe [SavingsPlanRateServiceCode]
serviceCodes = Maybe [SavingsPlanRateServiceCode]
a} :: DescribeSavingsPlansOfferingRates) 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 usage details of the line item in the billing report.
describeSavingsPlansOfferingRates_usageTypes :: Lens.Lens' DescribeSavingsPlansOfferingRates (Prelude.Maybe [Prelude.Text])
describeSavingsPlansOfferingRates_usageTypes :: Lens' DescribeSavingsPlansOfferingRates (Maybe [Text])
describeSavingsPlansOfferingRates_usageTypes = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeSavingsPlansOfferingRates' {Maybe [Text]
usageTypes :: Maybe [Text]
$sel:usageTypes:DescribeSavingsPlansOfferingRates' :: DescribeSavingsPlansOfferingRates -> Maybe [Text]
usageTypes} -> Maybe [Text]
usageTypes) (\s :: DescribeSavingsPlansOfferingRates
s@DescribeSavingsPlansOfferingRates' {} Maybe [Text]
a -> DescribeSavingsPlansOfferingRates
s {$sel:usageTypes:DescribeSavingsPlansOfferingRates' :: Maybe [Text]
usageTypes = Maybe [Text]
a} :: DescribeSavingsPlansOfferingRates) 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.AWSRequest
    DescribeSavingsPlansOfferingRates
  where
  type
    AWSResponse DescribeSavingsPlansOfferingRates =
      DescribeSavingsPlansOfferingRatesResponse
  request :: (Service -> Service)
-> DescribeSavingsPlansOfferingRates
-> Request DescribeSavingsPlansOfferingRates
request Service -> Service
overrides =
    forall a. (ToRequest a, ToJSON a) => Service -> a -> Request a
Request.postJSON (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy DescribeSavingsPlansOfferingRates
-> ClientResponse ClientBody
-> m (Either
        Error
        (ClientResponse (AWSResponse DescribeSavingsPlansOfferingRates)))
response =
    forall (m :: * -> *) a.
MonadResource m =>
(Int -> ResponseHeaders -> Object -> Either String (AWSResponse a))
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveJSON
      ( \Int
s ResponseHeaders
h Object
x ->
          Maybe Text
-> Maybe [SavingsPlanOfferingRate]
-> Int
-> DescribeSavingsPlansOfferingRatesResponse
DescribeSavingsPlansOfferingRatesResponse'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"nextToken")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"searchResults" forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty)
            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
    DescribeSavingsPlansOfferingRates
  where
  hashWithSalt :: Int -> DescribeSavingsPlansOfferingRates -> Int
hashWithSalt
    Int
_salt
    DescribeSavingsPlansOfferingRates' {Maybe Natural
Maybe [Text]
Maybe [SavingsPlanPaymentOption]
Maybe [SavingsPlanProductType]
Maybe [SavingsPlanOfferingRateFilterElement]
Maybe [SavingsPlanRateServiceCode]
Maybe [SavingsPlanType]
Maybe Text
usageTypes :: Maybe [Text]
serviceCodes :: Maybe [SavingsPlanRateServiceCode]
savingsPlanTypes :: Maybe [SavingsPlanType]
savingsPlanPaymentOptions :: Maybe [SavingsPlanPaymentOption]
savingsPlanOfferingIds :: Maybe [Text]
products :: Maybe [SavingsPlanProductType]
operations :: Maybe [Text]
nextToken :: Maybe Text
maxResults :: Maybe Natural
filters :: Maybe [SavingsPlanOfferingRateFilterElement]
$sel:usageTypes:DescribeSavingsPlansOfferingRates' :: DescribeSavingsPlansOfferingRates -> Maybe [Text]
$sel:serviceCodes:DescribeSavingsPlansOfferingRates' :: DescribeSavingsPlansOfferingRates
-> Maybe [SavingsPlanRateServiceCode]
$sel:savingsPlanTypes:DescribeSavingsPlansOfferingRates' :: DescribeSavingsPlansOfferingRates -> Maybe [SavingsPlanType]
$sel:savingsPlanPaymentOptions:DescribeSavingsPlansOfferingRates' :: DescribeSavingsPlansOfferingRates
-> Maybe [SavingsPlanPaymentOption]
$sel:savingsPlanOfferingIds:DescribeSavingsPlansOfferingRates' :: DescribeSavingsPlansOfferingRates -> Maybe [Text]
$sel:products:DescribeSavingsPlansOfferingRates' :: DescribeSavingsPlansOfferingRates -> Maybe [SavingsPlanProductType]
$sel:operations:DescribeSavingsPlansOfferingRates' :: DescribeSavingsPlansOfferingRates -> Maybe [Text]
$sel:nextToken:DescribeSavingsPlansOfferingRates' :: DescribeSavingsPlansOfferingRates -> Maybe Text
$sel:maxResults:DescribeSavingsPlansOfferingRates' :: DescribeSavingsPlansOfferingRates -> Maybe Natural
$sel:filters:DescribeSavingsPlansOfferingRates' :: DescribeSavingsPlansOfferingRates
-> Maybe [SavingsPlanOfferingRateFilterElement]
..} =
      Int
_salt
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [SavingsPlanOfferingRateFilterElement]
filters
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
maxResults
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
nextToken
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Text]
operations
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [SavingsPlanProductType]
products
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Text]
savingsPlanOfferingIds
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [SavingsPlanPaymentOption]
savingsPlanPaymentOptions
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [SavingsPlanType]
savingsPlanTypes
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [SavingsPlanRateServiceCode]
serviceCodes
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Text]
usageTypes

instance
  Prelude.NFData
    DescribeSavingsPlansOfferingRates
  where
  rnf :: DescribeSavingsPlansOfferingRates -> ()
rnf DescribeSavingsPlansOfferingRates' {Maybe Natural
Maybe [Text]
Maybe [SavingsPlanPaymentOption]
Maybe [SavingsPlanProductType]
Maybe [SavingsPlanOfferingRateFilterElement]
Maybe [SavingsPlanRateServiceCode]
Maybe [SavingsPlanType]
Maybe Text
usageTypes :: Maybe [Text]
serviceCodes :: Maybe [SavingsPlanRateServiceCode]
savingsPlanTypes :: Maybe [SavingsPlanType]
savingsPlanPaymentOptions :: Maybe [SavingsPlanPaymentOption]
savingsPlanOfferingIds :: Maybe [Text]
products :: Maybe [SavingsPlanProductType]
operations :: Maybe [Text]
nextToken :: Maybe Text
maxResults :: Maybe Natural
filters :: Maybe [SavingsPlanOfferingRateFilterElement]
$sel:usageTypes:DescribeSavingsPlansOfferingRates' :: DescribeSavingsPlansOfferingRates -> Maybe [Text]
$sel:serviceCodes:DescribeSavingsPlansOfferingRates' :: DescribeSavingsPlansOfferingRates
-> Maybe [SavingsPlanRateServiceCode]
$sel:savingsPlanTypes:DescribeSavingsPlansOfferingRates' :: DescribeSavingsPlansOfferingRates -> Maybe [SavingsPlanType]
$sel:savingsPlanPaymentOptions:DescribeSavingsPlansOfferingRates' :: DescribeSavingsPlansOfferingRates
-> Maybe [SavingsPlanPaymentOption]
$sel:savingsPlanOfferingIds:DescribeSavingsPlansOfferingRates' :: DescribeSavingsPlansOfferingRates -> Maybe [Text]
$sel:products:DescribeSavingsPlansOfferingRates' :: DescribeSavingsPlansOfferingRates -> Maybe [SavingsPlanProductType]
$sel:operations:DescribeSavingsPlansOfferingRates' :: DescribeSavingsPlansOfferingRates -> Maybe [Text]
$sel:nextToken:DescribeSavingsPlansOfferingRates' :: DescribeSavingsPlansOfferingRates -> Maybe Text
$sel:maxResults:DescribeSavingsPlansOfferingRates' :: DescribeSavingsPlansOfferingRates -> Maybe Natural
$sel:filters:DescribeSavingsPlansOfferingRates' :: DescribeSavingsPlansOfferingRates
-> Maybe [SavingsPlanOfferingRateFilterElement]
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe [SavingsPlanOfferingRateFilterElement]
filters
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Natural
maxResults
      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 [Text]
operations
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [SavingsPlanProductType]
products
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Text]
savingsPlanOfferingIds
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [SavingsPlanPaymentOption]
savingsPlanPaymentOptions
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [SavingsPlanType]
savingsPlanTypes
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [SavingsPlanRateServiceCode]
serviceCodes
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Text]
usageTypes

instance
  Data.ToHeaders
    DescribeSavingsPlansOfferingRates
  where
  toHeaders :: DescribeSavingsPlansOfferingRates -> ResponseHeaders
toHeaders =
    forall a b. a -> b -> a
Prelude.const
      ( forall a. Monoid a => [a] -> a
Prelude.mconcat
          [ HeaderName
"Content-Type"
              forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# ( ByteString
"application/x-amz-json-1.0" ::
                          Prelude.ByteString
                      )
          ]
      )

instance
  Data.ToJSON
    DescribeSavingsPlansOfferingRates
  where
  toJSON :: DescribeSavingsPlansOfferingRates -> Value
toJSON DescribeSavingsPlansOfferingRates' {Maybe Natural
Maybe [Text]
Maybe [SavingsPlanPaymentOption]
Maybe [SavingsPlanProductType]
Maybe [SavingsPlanOfferingRateFilterElement]
Maybe [SavingsPlanRateServiceCode]
Maybe [SavingsPlanType]
Maybe Text
usageTypes :: Maybe [Text]
serviceCodes :: Maybe [SavingsPlanRateServiceCode]
savingsPlanTypes :: Maybe [SavingsPlanType]
savingsPlanPaymentOptions :: Maybe [SavingsPlanPaymentOption]
savingsPlanOfferingIds :: Maybe [Text]
products :: Maybe [SavingsPlanProductType]
operations :: Maybe [Text]
nextToken :: Maybe Text
maxResults :: Maybe Natural
filters :: Maybe [SavingsPlanOfferingRateFilterElement]
$sel:usageTypes:DescribeSavingsPlansOfferingRates' :: DescribeSavingsPlansOfferingRates -> Maybe [Text]
$sel:serviceCodes:DescribeSavingsPlansOfferingRates' :: DescribeSavingsPlansOfferingRates
-> Maybe [SavingsPlanRateServiceCode]
$sel:savingsPlanTypes:DescribeSavingsPlansOfferingRates' :: DescribeSavingsPlansOfferingRates -> Maybe [SavingsPlanType]
$sel:savingsPlanPaymentOptions:DescribeSavingsPlansOfferingRates' :: DescribeSavingsPlansOfferingRates
-> Maybe [SavingsPlanPaymentOption]
$sel:savingsPlanOfferingIds:DescribeSavingsPlansOfferingRates' :: DescribeSavingsPlansOfferingRates -> Maybe [Text]
$sel:products:DescribeSavingsPlansOfferingRates' :: DescribeSavingsPlansOfferingRates -> Maybe [SavingsPlanProductType]
$sel:operations:DescribeSavingsPlansOfferingRates' :: DescribeSavingsPlansOfferingRates -> Maybe [Text]
$sel:nextToken:DescribeSavingsPlansOfferingRates' :: DescribeSavingsPlansOfferingRates -> Maybe Text
$sel:maxResults:DescribeSavingsPlansOfferingRates' :: DescribeSavingsPlansOfferingRates -> Maybe Natural
$sel:filters:DescribeSavingsPlansOfferingRates' :: DescribeSavingsPlansOfferingRates
-> Maybe [SavingsPlanOfferingRateFilterElement]
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"filters" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [SavingsPlanOfferingRateFilterElement]
filters,
            (Key
"maxResults" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Natural
maxResults,
            (Key
"nextToken" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
nextToken,
            (Key
"operations" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [Text]
operations,
            (Key
"products" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [SavingsPlanProductType]
products,
            (Key
"savingsPlanOfferingIds" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [Text]
savingsPlanOfferingIds,
            (Key
"savingsPlanPaymentOptions" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [SavingsPlanPaymentOption]
savingsPlanPaymentOptions,
            (Key
"savingsPlanTypes" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [SavingsPlanType]
savingsPlanTypes,
            (Key
"serviceCodes" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [SavingsPlanRateServiceCode]
serviceCodes,
            (Key
"usageTypes" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [Text]
usageTypes
          ]
      )

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

instance
  Data.ToQuery
    DescribeSavingsPlansOfferingRates
  where
  toQuery :: DescribeSavingsPlansOfferingRates -> QueryString
toQuery = forall a b. a -> b -> a
Prelude.const forall a. Monoid a => a
Prelude.mempty

-- | /See:/ 'newDescribeSavingsPlansOfferingRatesResponse' smart constructor.
data DescribeSavingsPlansOfferingRatesResponse = DescribeSavingsPlansOfferingRatesResponse'
  { -- | The token to use to retrieve the next page of results. This value is
    -- null when there are no more results to return.
    DescribeSavingsPlansOfferingRatesResponse -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text,
    -- | Information about the Savings Plans offering rates.
    DescribeSavingsPlansOfferingRatesResponse
-> Maybe [SavingsPlanOfferingRate]
searchResults :: Prelude.Maybe [SavingsPlanOfferingRate],
    -- | The response's http status code.
    DescribeSavingsPlansOfferingRatesResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (DescribeSavingsPlansOfferingRatesResponse
-> DescribeSavingsPlansOfferingRatesResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeSavingsPlansOfferingRatesResponse
-> DescribeSavingsPlansOfferingRatesResponse -> Bool
$c/= :: DescribeSavingsPlansOfferingRatesResponse
-> DescribeSavingsPlansOfferingRatesResponse -> Bool
== :: DescribeSavingsPlansOfferingRatesResponse
-> DescribeSavingsPlansOfferingRatesResponse -> Bool
$c== :: DescribeSavingsPlansOfferingRatesResponse
-> DescribeSavingsPlansOfferingRatesResponse -> Bool
Prelude.Eq, ReadPrec [DescribeSavingsPlansOfferingRatesResponse]
ReadPrec DescribeSavingsPlansOfferingRatesResponse
Int -> ReadS DescribeSavingsPlansOfferingRatesResponse
ReadS [DescribeSavingsPlansOfferingRatesResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeSavingsPlansOfferingRatesResponse]
$creadListPrec :: ReadPrec [DescribeSavingsPlansOfferingRatesResponse]
readPrec :: ReadPrec DescribeSavingsPlansOfferingRatesResponse
$creadPrec :: ReadPrec DescribeSavingsPlansOfferingRatesResponse
readList :: ReadS [DescribeSavingsPlansOfferingRatesResponse]
$creadList :: ReadS [DescribeSavingsPlansOfferingRatesResponse]
readsPrec :: Int -> ReadS DescribeSavingsPlansOfferingRatesResponse
$creadsPrec :: Int -> ReadS DescribeSavingsPlansOfferingRatesResponse
Prelude.Read, Int -> DescribeSavingsPlansOfferingRatesResponse -> ShowS
[DescribeSavingsPlansOfferingRatesResponse] -> ShowS
DescribeSavingsPlansOfferingRatesResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeSavingsPlansOfferingRatesResponse] -> ShowS
$cshowList :: [DescribeSavingsPlansOfferingRatesResponse] -> ShowS
show :: DescribeSavingsPlansOfferingRatesResponse -> String
$cshow :: DescribeSavingsPlansOfferingRatesResponse -> String
showsPrec :: Int -> DescribeSavingsPlansOfferingRatesResponse -> ShowS
$cshowsPrec :: Int -> DescribeSavingsPlansOfferingRatesResponse -> ShowS
Prelude.Show, forall x.
Rep DescribeSavingsPlansOfferingRatesResponse x
-> DescribeSavingsPlansOfferingRatesResponse
forall x.
DescribeSavingsPlansOfferingRatesResponse
-> Rep DescribeSavingsPlansOfferingRatesResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribeSavingsPlansOfferingRatesResponse x
-> DescribeSavingsPlansOfferingRatesResponse
$cfrom :: forall x.
DescribeSavingsPlansOfferingRatesResponse
-> Rep DescribeSavingsPlansOfferingRatesResponse x
Prelude.Generic)

-- |
-- Create a value of 'DescribeSavingsPlansOfferingRatesResponse' 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', 'describeSavingsPlansOfferingRatesResponse_nextToken' - The token to use to retrieve the next page of results. This value is
-- null when there are no more results to return.
--
-- 'searchResults', 'describeSavingsPlansOfferingRatesResponse_searchResults' - Information about the Savings Plans offering rates.
--
-- 'httpStatus', 'describeSavingsPlansOfferingRatesResponse_httpStatus' - The response's http status code.
newDescribeSavingsPlansOfferingRatesResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  DescribeSavingsPlansOfferingRatesResponse
newDescribeSavingsPlansOfferingRatesResponse :: Int -> DescribeSavingsPlansOfferingRatesResponse
newDescribeSavingsPlansOfferingRatesResponse
  Int
pHttpStatus_ =
    DescribeSavingsPlansOfferingRatesResponse'
      { $sel:nextToken:DescribeSavingsPlansOfferingRatesResponse' :: Maybe Text
nextToken =
          forall a. Maybe a
Prelude.Nothing,
        $sel:searchResults:DescribeSavingsPlansOfferingRatesResponse' :: Maybe [SavingsPlanOfferingRate]
searchResults = forall a. Maybe a
Prelude.Nothing,
        $sel:httpStatus:DescribeSavingsPlansOfferingRatesResponse' :: 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.
describeSavingsPlansOfferingRatesResponse_nextToken :: Lens.Lens' DescribeSavingsPlansOfferingRatesResponse (Prelude.Maybe Prelude.Text)
describeSavingsPlansOfferingRatesResponse_nextToken :: Lens' DescribeSavingsPlansOfferingRatesResponse (Maybe Text)
describeSavingsPlansOfferingRatesResponse_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeSavingsPlansOfferingRatesResponse' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:DescribeSavingsPlansOfferingRatesResponse' :: DescribeSavingsPlansOfferingRatesResponse -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: DescribeSavingsPlansOfferingRatesResponse
s@DescribeSavingsPlansOfferingRatesResponse' {} Maybe Text
a -> DescribeSavingsPlansOfferingRatesResponse
s {$sel:nextToken:DescribeSavingsPlansOfferingRatesResponse' :: Maybe Text
nextToken = Maybe Text
a} :: DescribeSavingsPlansOfferingRatesResponse)

-- | Information about the Savings Plans offering rates.
describeSavingsPlansOfferingRatesResponse_searchResults :: Lens.Lens' DescribeSavingsPlansOfferingRatesResponse (Prelude.Maybe [SavingsPlanOfferingRate])
describeSavingsPlansOfferingRatesResponse_searchResults :: Lens'
  DescribeSavingsPlansOfferingRatesResponse
  (Maybe [SavingsPlanOfferingRate])
describeSavingsPlansOfferingRatesResponse_searchResults = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeSavingsPlansOfferingRatesResponse' {Maybe [SavingsPlanOfferingRate]
searchResults :: Maybe [SavingsPlanOfferingRate]
$sel:searchResults:DescribeSavingsPlansOfferingRatesResponse' :: DescribeSavingsPlansOfferingRatesResponse
-> Maybe [SavingsPlanOfferingRate]
searchResults} -> Maybe [SavingsPlanOfferingRate]
searchResults) (\s :: DescribeSavingsPlansOfferingRatesResponse
s@DescribeSavingsPlansOfferingRatesResponse' {} Maybe [SavingsPlanOfferingRate]
a -> DescribeSavingsPlansOfferingRatesResponse
s {$sel:searchResults:DescribeSavingsPlansOfferingRatesResponse' :: Maybe [SavingsPlanOfferingRate]
searchResults = Maybe [SavingsPlanOfferingRate]
a} :: DescribeSavingsPlansOfferingRatesResponse) 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.
describeSavingsPlansOfferingRatesResponse_httpStatus :: Lens.Lens' DescribeSavingsPlansOfferingRatesResponse Prelude.Int
describeSavingsPlansOfferingRatesResponse_httpStatus :: Lens' DescribeSavingsPlansOfferingRatesResponse Int
describeSavingsPlansOfferingRatesResponse_httpStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeSavingsPlansOfferingRatesResponse' {Int
httpStatus :: Int
$sel:httpStatus:DescribeSavingsPlansOfferingRatesResponse' :: DescribeSavingsPlansOfferingRatesResponse -> Int
httpStatus} -> Int
httpStatus) (\s :: DescribeSavingsPlansOfferingRatesResponse
s@DescribeSavingsPlansOfferingRatesResponse' {} Int
a -> DescribeSavingsPlansOfferingRatesResponse
s {$sel:httpStatus:DescribeSavingsPlansOfferingRatesResponse' :: Int
httpStatus = Int
a} :: DescribeSavingsPlansOfferingRatesResponse)

instance
  Prelude.NFData
    DescribeSavingsPlansOfferingRatesResponse
  where
  rnf :: DescribeSavingsPlansOfferingRatesResponse -> ()
rnf DescribeSavingsPlansOfferingRatesResponse' {Int
Maybe [SavingsPlanOfferingRate]
Maybe Text
httpStatus :: Int
searchResults :: Maybe [SavingsPlanOfferingRate]
nextToken :: Maybe Text
$sel:httpStatus:DescribeSavingsPlansOfferingRatesResponse' :: DescribeSavingsPlansOfferingRatesResponse -> Int
$sel:searchResults:DescribeSavingsPlansOfferingRatesResponse' :: DescribeSavingsPlansOfferingRatesResponse
-> Maybe [SavingsPlanOfferingRate]
$sel:nextToken:DescribeSavingsPlansOfferingRatesResponse' :: DescribeSavingsPlansOfferingRatesResponse -> 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 [SavingsPlanOfferingRate]
searchResults
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus