{-# 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.BillingConductor.ListPricingRulesAssociatedToPricingPlan
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Lists the pricing rules that are associated with a pricing plan.
--
-- This operation returns paginated results.
module Amazonka.BillingConductor.ListPricingRulesAssociatedToPricingPlan
  ( -- * Creating a Request
    ListPricingRulesAssociatedToPricingPlan (..),
    newListPricingRulesAssociatedToPricingPlan,

    -- * Request Lenses
    listPricingRulesAssociatedToPricingPlan_billingPeriod,
    listPricingRulesAssociatedToPricingPlan_maxResults,
    listPricingRulesAssociatedToPricingPlan_nextToken,
    listPricingRulesAssociatedToPricingPlan_pricingPlanArn,

    -- * Destructuring the Response
    ListPricingRulesAssociatedToPricingPlanResponse (..),
    newListPricingRulesAssociatedToPricingPlanResponse,

    -- * Response Lenses
    listPricingRulesAssociatedToPricingPlanResponse_billingPeriod,
    listPricingRulesAssociatedToPricingPlanResponse_nextToken,
    listPricingRulesAssociatedToPricingPlanResponse_pricingPlanArn,
    listPricingRulesAssociatedToPricingPlanResponse_pricingRuleArns,
    listPricingRulesAssociatedToPricingPlanResponse_httpStatus,
  )
where

import Amazonka.BillingConductor.Types
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

-- | /See:/ 'newListPricingRulesAssociatedToPricingPlan' smart constructor.
data ListPricingRulesAssociatedToPricingPlan = ListPricingRulesAssociatedToPricingPlan'
  { -- | The billing period for which the pricing rule associations are to be
    -- listed.
    ListPricingRulesAssociatedToPricingPlan -> Maybe Text
billingPeriod :: Prelude.Maybe Prelude.Text,
    -- | The optional maximum number of pricing rule associations to retrieve.
    ListPricingRulesAssociatedToPricingPlan -> Maybe Natural
maxResults :: Prelude.Maybe Prelude.Natural,
    -- | The optional pagination token returned by a previous call.
    ListPricingRulesAssociatedToPricingPlan -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text,
    -- | The Amazon Resource Name (ARN) of the pricing plan for which
    -- associations are to be listed.
    ListPricingRulesAssociatedToPricingPlan -> Text
pricingPlanArn :: Prelude.Text
  }
  deriving (ListPricingRulesAssociatedToPricingPlan
-> ListPricingRulesAssociatedToPricingPlan -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ListPricingRulesAssociatedToPricingPlan
-> ListPricingRulesAssociatedToPricingPlan -> Bool
$c/= :: ListPricingRulesAssociatedToPricingPlan
-> ListPricingRulesAssociatedToPricingPlan -> Bool
== :: ListPricingRulesAssociatedToPricingPlan
-> ListPricingRulesAssociatedToPricingPlan -> Bool
$c== :: ListPricingRulesAssociatedToPricingPlan
-> ListPricingRulesAssociatedToPricingPlan -> Bool
Prelude.Eq, ReadPrec [ListPricingRulesAssociatedToPricingPlan]
ReadPrec ListPricingRulesAssociatedToPricingPlan
Int -> ReadS ListPricingRulesAssociatedToPricingPlan
ReadS [ListPricingRulesAssociatedToPricingPlan]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ListPricingRulesAssociatedToPricingPlan]
$creadListPrec :: ReadPrec [ListPricingRulesAssociatedToPricingPlan]
readPrec :: ReadPrec ListPricingRulesAssociatedToPricingPlan
$creadPrec :: ReadPrec ListPricingRulesAssociatedToPricingPlan
readList :: ReadS [ListPricingRulesAssociatedToPricingPlan]
$creadList :: ReadS [ListPricingRulesAssociatedToPricingPlan]
readsPrec :: Int -> ReadS ListPricingRulesAssociatedToPricingPlan
$creadsPrec :: Int -> ReadS ListPricingRulesAssociatedToPricingPlan
Prelude.Read, Int -> ListPricingRulesAssociatedToPricingPlan -> ShowS
[ListPricingRulesAssociatedToPricingPlan] -> ShowS
ListPricingRulesAssociatedToPricingPlan -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ListPricingRulesAssociatedToPricingPlan] -> ShowS
$cshowList :: [ListPricingRulesAssociatedToPricingPlan] -> ShowS
show :: ListPricingRulesAssociatedToPricingPlan -> String
$cshow :: ListPricingRulesAssociatedToPricingPlan -> String
showsPrec :: Int -> ListPricingRulesAssociatedToPricingPlan -> ShowS
$cshowsPrec :: Int -> ListPricingRulesAssociatedToPricingPlan -> ShowS
Prelude.Show, forall x.
Rep ListPricingRulesAssociatedToPricingPlan x
-> ListPricingRulesAssociatedToPricingPlan
forall x.
ListPricingRulesAssociatedToPricingPlan
-> Rep ListPricingRulesAssociatedToPricingPlan x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep ListPricingRulesAssociatedToPricingPlan x
-> ListPricingRulesAssociatedToPricingPlan
$cfrom :: forall x.
ListPricingRulesAssociatedToPricingPlan
-> Rep ListPricingRulesAssociatedToPricingPlan x
Prelude.Generic)

-- |
-- Create a value of 'ListPricingRulesAssociatedToPricingPlan' 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:
--
-- 'billingPeriod', 'listPricingRulesAssociatedToPricingPlan_billingPeriod' - The billing period for which the pricing rule associations are to be
-- listed.
--
-- 'maxResults', 'listPricingRulesAssociatedToPricingPlan_maxResults' - The optional maximum number of pricing rule associations to retrieve.
--
-- 'nextToken', 'listPricingRulesAssociatedToPricingPlan_nextToken' - The optional pagination token returned by a previous call.
--
-- 'pricingPlanArn', 'listPricingRulesAssociatedToPricingPlan_pricingPlanArn' - The Amazon Resource Name (ARN) of the pricing plan for which
-- associations are to be listed.
newListPricingRulesAssociatedToPricingPlan ::
  -- | 'pricingPlanArn'
  Prelude.Text ->
  ListPricingRulesAssociatedToPricingPlan
newListPricingRulesAssociatedToPricingPlan :: Text -> ListPricingRulesAssociatedToPricingPlan
newListPricingRulesAssociatedToPricingPlan
  Text
pPricingPlanArn_ =
    ListPricingRulesAssociatedToPricingPlan'
      { $sel:billingPeriod:ListPricingRulesAssociatedToPricingPlan' :: Maybe Text
billingPeriod =
          forall a. Maybe a
Prelude.Nothing,
        $sel:maxResults:ListPricingRulesAssociatedToPricingPlan' :: Maybe Natural
maxResults = forall a. Maybe a
Prelude.Nothing,
        $sel:nextToken:ListPricingRulesAssociatedToPricingPlan' :: Maybe Text
nextToken = forall a. Maybe a
Prelude.Nothing,
        $sel:pricingPlanArn:ListPricingRulesAssociatedToPricingPlan' :: Text
pricingPlanArn = Text
pPricingPlanArn_
      }

-- | The billing period for which the pricing rule associations are to be
-- listed.
listPricingRulesAssociatedToPricingPlan_billingPeriod :: Lens.Lens' ListPricingRulesAssociatedToPricingPlan (Prelude.Maybe Prelude.Text)
listPricingRulesAssociatedToPricingPlan_billingPeriod :: Lens' ListPricingRulesAssociatedToPricingPlan (Maybe Text)
listPricingRulesAssociatedToPricingPlan_billingPeriod = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListPricingRulesAssociatedToPricingPlan' {Maybe Text
billingPeriod :: Maybe Text
$sel:billingPeriod:ListPricingRulesAssociatedToPricingPlan' :: ListPricingRulesAssociatedToPricingPlan -> Maybe Text
billingPeriod} -> Maybe Text
billingPeriod) (\s :: ListPricingRulesAssociatedToPricingPlan
s@ListPricingRulesAssociatedToPricingPlan' {} Maybe Text
a -> ListPricingRulesAssociatedToPricingPlan
s {$sel:billingPeriod:ListPricingRulesAssociatedToPricingPlan' :: Maybe Text
billingPeriod = Maybe Text
a} :: ListPricingRulesAssociatedToPricingPlan)

-- | The optional maximum number of pricing rule associations to retrieve.
listPricingRulesAssociatedToPricingPlan_maxResults :: Lens.Lens' ListPricingRulesAssociatedToPricingPlan (Prelude.Maybe Prelude.Natural)
listPricingRulesAssociatedToPricingPlan_maxResults :: Lens' ListPricingRulesAssociatedToPricingPlan (Maybe Natural)
listPricingRulesAssociatedToPricingPlan_maxResults = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListPricingRulesAssociatedToPricingPlan' {Maybe Natural
maxResults :: Maybe Natural
$sel:maxResults:ListPricingRulesAssociatedToPricingPlan' :: ListPricingRulesAssociatedToPricingPlan -> Maybe Natural
maxResults} -> Maybe Natural
maxResults) (\s :: ListPricingRulesAssociatedToPricingPlan
s@ListPricingRulesAssociatedToPricingPlan' {} Maybe Natural
a -> ListPricingRulesAssociatedToPricingPlan
s {$sel:maxResults:ListPricingRulesAssociatedToPricingPlan' :: Maybe Natural
maxResults = Maybe Natural
a} :: ListPricingRulesAssociatedToPricingPlan)

-- | The optional pagination token returned by a previous call.
listPricingRulesAssociatedToPricingPlan_nextToken :: Lens.Lens' ListPricingRulesAssociatedToPricingPlan (Prelude.Maybe Prelude.Text)
listPricingRulesAssociatedToPricingPlan_nextToken :: Lens' ListPricingRulesAssociatedToPricingPlan (Maybe Text)
listPricingRulesAssociatedToPricingPlan_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListPricingRulesAssociatedToPricingPlan' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:ListPricingRulesAssociatedToPricingPlan' :: ListPricingRulesAssociatedToPricingPlan -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: ListPricingRulesAssociatedToPricingPlan
s@ListPricingRulesAssociatedToPricingPlan' {} Maybe Text
a -> ListPricingRulesAssociatedToPricingPlan
s {$sel:nextToken:ListPricingRulesAssociatedToPricingPlan' :: Maybe Text
nextToken = Maybe Text
a} :: ListPricingRulesAssociatedToPricingPlan)

-- | The Amazon Resource Name (ARN) of the pricing plan for which
-- associations are to be listed.
listPricingRulesAssociatedToPricingPlan_pricingPlanArn :: Lens.Lens' ListPricingRulesAssociatedToPricingPlan Prelude.Text
listPricingRulesAssociatedToPricingPlan_pricingPlanArn :: Lens' ListPricingRulesAssociatedToPricingPlan Text
listPricingRulesAssociatedToPricingPlan_pricingPlanArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListPricingRulesAssociatedToPricingPlan' {Text
pricingPlanArn :: Text
$sel:pricingPlanArn:ListPricingRulesAssociatedToPricingPlan' :: ListPricingRulesAssociatedToPricingPlan -> Text
pricingPlanArn} -> Text
pricingPlanArn) (\s :: ListPricingRulesAssociatedToPricingPlan
s@ListPricingRulesAssociatedToPricingPlan' {} Text
a -> ListPricingRulesAssociatedToPricingPlan
s {$sel:pricingPlanArn:ListPricingRulesAssociatedToPricingPlan' :: Text
pricingPlanArn = Text
a} :: ListPricingRulesAssociatedToPricingPlan)

instance
  Core.AWSPager
    ListPricingRulesAssociatedToPricingPlan
  where
  page :: ListPricingRulesAssociatedToPricingPlan
-> AWSResponse ListPricingRulesAssociatedToPricingPlan
-> Maybe ListPricingRulesAssociatedToPricingPlan
page ListPricingRulesAssociatedToPricingPlan
rq AWSResponse ListPricingRulesAssociatedToPricingPlan
rs
    | forall a. AWSTruncated a => a -> Bool
Core.stop
        ( AWSResponse ListPricingRulesAssociatedToPricingPlan
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' ListPricingRulesAssociatedToPricingPlanResponse (Maybe Text)
listPricingRulesAssociatedToPricingPlanResponse_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 ListPricingRulesAssociatedToPricingPlan
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens'
  ListPricingRulesAssociatedToPricingPlanResponse
  (Maybe (NonEmpty Text))
listPricingRulesAssociatedToPricingPlanResponse_pricingRuleArns
            forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall a b. Prism (Maybe a) (Maybe b) a b
Lens._Just
            forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (p :: * -> * -> *) (f :: * -> *) s a.
(Profunctor p, Contravariant f) =>
(s -> a) -> Optic' p f s a
Lens.to forall l. IsList l => l -> [Item l]
Prelude.toList
        ) =
        forall a. Maybe a
Prelude.Nothing
    | Bool
Prelude.otherwise =
        forall a. a -> Maybe a
Prelude.Just
          forall a b. (a -> b) -> a -> b
Prelude.$ ListPricingRulesAssociatedToPricingPlan
rq
          forall a b. a -> (a -> b) -> b
Prelude.& Lens' ListPricingRulesAssociatedToPricingPlan (Maybe Text)
listPricingRulesAssociatedToPricingPlan_nextToken
          forall s t a b. ASetter s t a b -> b -> s -> t
Lens..~ AWSResponse ListPricingRulesAssociatedToPricingPlan
rs
          forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' ListPricingRulesAssociatedToPricingPlanResponse (Maybe Text)
listPricingRulesAssociatedToPricingPlanResponse_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
    ListPricingRulesAssociatedToPricingPlan
  where
  type
    AWSResponse
      ListPricingRulesAssociatedToPricingPlan =
      ListPricingRulesAssociatedToPricingPlanResponse
  request :: (Service -> Service)
-> ListPricingRulesAssociatedToPricingPlan
-> Request ListPricingRulesAssociatedToPricingPlan
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 ListPricingRulesAssociatedToPricingPlan
-> ClientResponse ClientBody
-> m (Either
        Error
        (ClientResponse
           (AWSResponse ListPricingRulesAssociatedToPricingPlan)))
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 Text
-> Maybe Text
-> Maybe (NonEmpty Text)
-> Int
-> ListPricingRulesAssociatedToPricingPlanResponse
ListPricingRulesAssociatedToPricingPlanResponse'
            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
"BillingPeriod")
            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
"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
"PricingPlanArn")
            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
"PricingRuleArns")
            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
    ListPricingRulesAssociatedToPricingPlan
  where
  hashWithSalt :: Int -> ListPricingRulesAssociatedToPricingPlan -> Int
hashWithSalt
    Int
_salt
    ListPricingRulesAssociatedToPricingPlan' {Maybe Natural
Maybe Text
Text
pricingPlanArn :: Text
nextToken :: Maybe Text
maxResults :: Maybe Natural
billingPeriod :: Maybe Text
$sel:pricingPlanArn:ListPricingRulesAssociatedToPricingPlan' :: ListPricingRulesAssociatedToPricingPlan -> Text
$sel:nextToken:ListPricingRulesAssociatedToPricingPlan' :: ListPricingRulesAssociatedToPricingPlan -> Maybe Text
$sel:maxResults:ListPricingRulesAssociatedToPricingPlan' :: ListPricingRulesAssociatedToPricingPlan -> Maybe Natural
$sel:billingPeriod:ListPricingRulesAssociatedToPricingPlan' :: ListPricingRulesAssociatedToPricingPlan -> Maybe Text
..} =
      Int
_salt
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
billingPeriod
        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` Text
pricingPlanArn

instance
  Prelude.NFData
    ListPricingRulesAssociatedToPricingPlan
  where
  rnf :: ListPricingRulesAssociatedToPricingPlan -> ()
rnf ListPricingRulesAssociatedToPricingPlan' {Maybe Natural
Maybe Text
Text
pricingPlanArn :: Text
nextToken :: Maybe Text
maxResults :: Maybe Natural
billingPeriod :: Maybe Text
$sel:pricingPlanArn:ListPricingRulesAssociatedToPricingPlan' :: ListPricingRulesAssociatedToPricingPlan -> Text
$sel:nextToken:ListPricingRulesAssociatedToPricingPlan' :: ListPricingRulesAssociatedToPricingPlan -> Maybe Text
$sel:maxResults:ListPricingRulesAssociatedToPricingPlan' :: ListPricingRulesAssociatedToPricingPlan -> Maybe Natural
$sel:billingPeriod:ListPricingRulesAssociatedToPricingPlan' :: ListPricingRulesAssociatedToPricingPlan -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
billingPeriod
      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 Text
pricingPlanArn

instance
  Data.ToHeaders
    ListPricingRulesAssociatedToPricingPlan
  where
  toHeaders :: ListPricingRulesAssociatedToPricingPlan -> 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.1" ::
                          Prelude.ByteString
                      )
          ]
      )

instance
  Data.ToJSON
    ListPricingRulesAssociatedToPricingPlan
  where
  toJSON :: ListPricingRulesAssociatedToPricingPlan -> Value
toJSON ListPricingRulesAssociatedToPricingPlan' {Maybe Natural
Maybe Text
Text
pricingPlanArn :: Text
nextToken :: Maybe Text
maxResults :: Maybe Natural
billingPeriod :: Maybe Text
$sel:pricingPlanArn:ListPricingRulesAssociatedToPricingPlan' :: ListPricingRulesAssociatedToPricingPlan -> Text
$sel:nextToken:ListPricingRulesAssociatedToPricingPlan' :: ListPricingRulesAssociatedToPricingPlan -> Maybe Text
$sel:maxResults:ListPricingRulesAssociatedToPricingPlan' :: ListPricingRulesAssociatedToPricingPlan -> Maybe Natural
$sel:billingPeriod:ListPricingRulesAssociatedToPricingPlan' :: ListPricingRulesAssociatedToPricingPlan -> Maybe Text
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"BillingPeriod" 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
billingPeriod,
            (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,
            forall a. a -> Maybe a
Prelude.Just
              (Key
"PricingPlanArn" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
pricingPlanArn)
          ]
      )

instance
  Data.ToPath
    ListPricingRulesAssociatedToPricingPlan
  where
  toPath :: ListPricingRulesAssociatedToPricingPlan -> ByteString
toPath =
    forall a b. a -> b -> a
Prelude.const
      ByteString
"/list-pricing-rules-associated-to-pricing-plan"

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

-- | /See:/ 'newListPricingRulesAssociatedToPricingPlanResponse' smart constructor.
data ListPricingRulesAssociatedToPricingPlanResponse = ListPricingRulesAssociatedToPricingPlanResponse'
  { -- | The billing period for which the pricing rule associations are listed.
    ListPricingRulesAssociatedToPricingPlanResponse -> Maybe Text
billingPeriod :: Prelude.Maybe Prelude.Text,
    -- | The pagination token to be used on subsequent calls.
    ListPricingRulesAssociatedToPricingPlanResponse -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text,
    -- | The Amazon Resource Name (ARN) of the pricing plan for which
    -- associations are listed.
    ListPricingRulesAssociatedToPricingPlanResponse -> Maybe Text
pricingPlanArn :: Prelude.Maybe Prelude.Text,
    -- | A list containing pricing rules that are associated with the requested
    -- pricing plan.
    ListPricingRulesAssociatedToPricingPlanResponse
-> Maybe (NonEmpty Text)
pricingRuleArns :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text),
    -- | The response's http status code.
    ListPricingRulesAssociatedToPricingPlanResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (ListPricingRulesAssociatedToPricingPlanResponse
-> ListPricingRulesAssociatedToPricingPlanResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ListPricingRulesAssociatedToPricingPlanResponse
-> ListPricingRulesAssociatedToPricingPlanResponse -> Bool
$c/= :: ListPricingRulesAssociatedToPricingPlanResponse
-> ListPricingRulesAssociatedToPricingPlanResponse -> Bool
== :: ListPricingRulesAssociatedToPricingPlanResponse
-> ListPricingRulesAssociatedToPricingPlanResponse -> Bool
$c== :: ListPricingRulesAssociatedToPricingPlanResponse
-> ListPricingRulesAssociatedToPricingPlanResponse -> Bool
Prelude.Eq, ReadPrec [ListPricingRulesAssociatedToPricingPlanResponse]
ReadPrec ListPricingRulesAssociatedToPricingPlanResponse
Int -> ReadS ListPricingRulesAssociatedToPricingPlanResponse
ReadS [ListPricingRulesAssociatedToPricingPlanResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ListPricingRulesAssociatedToPricingPlanResponse]
$creadListPrec :: ReadPrec [ListPricingRulesAssociatedToPricingPlanResponse]
readPrec :: ReadPrec ListPricingRulesAssociatedToPricingPlanResponse
$creadPrec :: ReadPrec ListPricingRulesAssociatedToPricingPlanResponse
readList :: ReadS [ListPricingRulesAssociatedToPricingPlanResponse]
$creadList :: ReadS [ListPricingRulesAssociatedToPricingPlanResponse]
readsPrec :: Int -> ReadS ListPricingRulesAssociatedToPricingPlanResponse
$creadsPrec :: Int -> ReadS ListPricingRulesAssociatedToPricingPlanResponse
Prelude.Read, Int -> ListPricingRulesAssociatedToPricingPlanResponse -> ShowS
[ListPricingRulesAssociatedToPricingPlanResponse] -> ShowS
ListPricingRulesAssociatedToPricingPlanResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ListPricingRulesAssociatedToPricingPlanResponse] -> ShowS
$cshowList :: [ListPricingRulesAssociatedToPricingPlanResponse] -> ShowS
show :: ListPricingRulesAssociatedToPricingPlanResponse -> String
$cshow :: ListPricingRulesAssociatedToPricingPlanResponse -> String
showsPrec :: Int -> ListPricingRulesAssociatedToPricingPlanResponse -> ShowS
$cshowsPrec :: Int -> ListPricingRulesAssociatedToPricingPlanResponse -> ShowS
Prelude.Show, forall x.
Rep ListPricingRulesAssociatedToPricingPlanResponse x
-> ListPricingRulesAssociatedToPricingPlanResponse
forall x.
ListPricingRulesAssociatedToPricingPlanResponse
-> Rep ListPricingRulesAssociatedToPricingPlanResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep ListPricingRulesAssociatedToPricingPlanResponse x
-> ListPricingRulesAssociatedToPricingPlanResponse
$cfrom :: forall x.
ListPricingRulesAssociatedToPricingPlanResponse
-> Rep ListPricingRulesAssociatedToPricingPlanResponse x
Prelude.Generic)

-- |
-- Create a value of 'ListPricingRulesAssociatedToPricingPlanResponse' 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:
--
-- 'billingPeriod', 'listPricingRulesAssociatedToPricingPlanResponse_billingPeriod' - The billing period for which the pricing rule associations are listed.
--
-- 'nextToken', 'listPricingRulesAssociatedToPricingPlanResponse_nextToken' - The pagination token to be used on subsequent calls.
--
-- 'pricingPlanArn', 'listPricingRulesAssociatedToPricingPlanResponse_pricingPlanArn' - The Amazon Resource Name (ARN) of the pricing plan for which
-- associations are listed.
--
-- 'pricingRuleArns', 'listPricingRulesAssociatedToPricingPlanResponse_pricingRuleArns' - A list containing pricing rules that are associated with the requested
-- pricing plan.
--
-- 'httpStatus', 'listPricingRulesAssociatedToPricingPlanResponse_httpStatus' - The response's http status code.
newListPricingRulesAssociatedToPricingPlanResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  ListPricingRulesAssociatedToPricingPlanResponse
newListPricingRulesAssociatedToPricingPlanResponse :: Int -> ListPricingRulesAssociatedToPricingPlanResponse
newListPricingRulesAssociatedToPricingPlanResponse
  Int
pHttpStatus_ =
    ListPricingRulesAssociatedToPricingPlanResponse'
      { $sel:billingPeriod:ListPricingRulesAssociatedToPricingPlanResponse' :: Maybe Text
billingPeriod =
          forall a. Maybe a
Prelude.Nothing,
        $sel:nextToken:ListPricingRulesAssociatedToPricingPlanResponse' :: Maybe Text
nextToken =
          forall a. Maybe a
Prelude.Nothing,
        $sel:pricingPlanArn:ListPricingRulesAssociatedToPricingPlanResponse' :: Maybe Text
pricingPlanArn =
          forall a. Maybe a
Prelude.Nothing,
        $sel:pricingRuleArns:ListPricingRulesAssociatedToPricingPlanResponse' :: Maybe (NonEmpty Text)
pricingRuleArns =
          forall a. Maybe a
Prelude.Nothing,
        $sel:httpStatus:ListPricingRulesAssociatedToPricingPlanResponse' :: Int
httpStatus = Int
pHttpStatus_
      }

-- | The billing period for which the pricing rule associations are listed.
listPricingRulesAssociatedToPricingPlanResponse_billingPeriod :: Lens.Lens' ListPricingRulesAssociatedToPricingPlanResponse (Prelude.Maybe Prelude.Text)
listPricingRulesAssociatedToPricingPlanResponse_billingPeriod :: Lens' ListPricingRulesAssociatedToPricingPlanResponse (Maybe Text)
listPricingRulesAssociatedToPricingPlanResponse_billingPeriod = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListPricingRulesAssociatedToPricingPlanResponse' {Maybe Text
billingPeriod :: Maybe Text
$sel:billingPeriod:ListPricingRulesAssociatedToPricingPlanResponse' :: ListPricingRulesAssociatedToPricingPlanResponse -> Maybe Text
billingPeriod} -> Maybe Text
billingPeriod) (\s :: ListPricingRulesAssociatedToPricingPlanResponse
s@ListPricingRulesAssociatedToPricingPlanResponse' {} Maybe Text
a -> ListPricingRulesAssociatedToPricingPlanResponse
s {$sel:billingPeriod:ListPricingRulesAssociatedToPricingPlanResponse' :: Maybe Text
billingPeriod = Maybe Text
a} :: ListPricingRulesAssociatedToPricingPlanResponse)

-- | The pagination token to be used on subsequent calls.
listPricingRulesAssociatedToPricingPlanResponse_nextToken :: Lens.Lens' ListPricingRulesAssociatedToPricingPlanResponse (Prelude.Maybe Prelude.Text)
listPricingRulesAssociatedToPricingPlanResponse_nextToken :: Lens' ListPricingRulesAssociatedToPricingPlanResponse (Maybe Text)
listPricingRulesAssociatedToPricingPlanResponse_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListPricingRulesAssociatedToPricingPlanResponse' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:ListPricingRulesAssociatedToPricingPlanResponse' :: ListPricingRulesAssociatedToPricingPlanResponse -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: ListPricingRulesAssociatedToPricingPlanResponse
s@ListPricingRulesAssociatedToPricingPlanResponse' {} Maybe Text
a -> ListPricingRulesAssociatedToPricingPlanResponse
s {$sel:nextToken:ListPricingRulesAssociatedToPricingPlanResponse' :: Maybe Text
nextToken = Maybe Text
a} :: ListPricingRulesAssociatedToPricingPlanResponse)

-- | The Amazon Resource Name (ARN) of the pricing plan for which
-- associations are listed.
listPricingRulesAssociatedToPricingPlanResponse_pricingPlanArn :: Lens.Lens' ListPricingRulesAssociatedToPricingPlanResponse (Prelude.Maybe Prelude.Text)
listPricingRulesAssociatedToPricingPlanResponse_pricingPlanArn :: Lens' ListPricingRulesAssociatedToPricingPlanResponse (Maybe Text)
listPricingRulesAssociatedToPricingPlanResponse_pricingPlanArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListPricingRulesAssociatedToPricingPlanResponse' {Maybe Text
pricingPlanArn :: Maybe Text
$sel:pricingPlanArn:ListPricingRulesAssociatedToPricingPlanResponse' :: ListPricingRulesAssociatedToPricingPlanResponse -> Maybe Text
pricingPlanArn} -> Maybe Text
pricingPlanArn) (\s :: ListPricingRulesAssociatedToPricingPlanResponse
s@ListPricingRulesAssociatedToPricingPlanResponse' {} Maybe Text
a -> ListPricingRulesAssociatedToPricingPlanResponse
s {$sel:pricingPlanArn:ListPricingRulesAssociatedToPricingPlanResponse' :: Maybe Text
pricingPlanArn = Maybe Text
a} :: ListPricingRulesAssociatedToPricingPlanResponse)

-- | A list containing pricing rules that are associated with the requested
-- pricing plan.
listPricingRulesAssociatedToPricingPlanResponse_pricingRuleArns :: Lens.Lens' ListPricingRulesAssociatedToPricingPlanResponse (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))
listPricingRulesAssociatedToPricingPlanResponse_pricingRuleArns :: Lens'
  ListPricingRulesAssociatedToPricingPlanResponse
  (Maybe (NonEmpty Text))
listPricingRulesAssociatedToPricingPlanResponse_pricingRuleArns = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListPricingRulesAssociatedToPricingPlanResponse' {Maybe (NonEmpty Text)
pricingRuleArns :: Maybe (NonEmpty Text)
$sel:pricingRuleArns:ListPricingRulesAssociatedToPricingPlanResponse' :: ListPricingRulesAssociatedToPricingPlanResponse
-> Maybe (NonEmpty Text)
pricingRuleArns} -> Maybe (NonEmpty Text)
pricingRuleArns) (\s :: ListPricingRulesAssociatedToPricingPlanResponse
s@ListPricingRulesAssociatedToPricingPlanResponse' {} Maybe (NonEmpty Text)
a -> ListPricingRulesAssociatedToPricingPlanResponse
s {$sel:pricingRuleArns:ListPricingRulesAssociatedToPricingPlanResponse' :: Maybe (NonEmpty Text)
pricingRuleArns = Maybe (NonEmpty Text)
a} :: ListPricingRulesAssociatedToPricingPlanResponse) 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.
listPricingRulesAssociatedToPricingPlanResponse_httpStatus :: Lens.Lens' ListPricingRulesAssociatedToPricingPlanResponse Prelude.Int
listPricingRulesAssociatedToPricingPlanResponse_httpStatus :: Lens' ListPricingRulesAssociatedToPricingPlanResponse Int
listPricingRulesAssociatedToPricingPlanResponse_httpStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListPricingRulesAssociatedToPricingPlanResponse' {Int
httpStatus :: Int
$sel:httpStatus:ListPricingRulesAssociatedToPricingPlanResponse' :: ListPricingRulesAssociatedToPricingPlanResponse -> Int
httpStatus} -> Int
httpStatus) (\s :: ListPricingRulesAssociatedToPricingPlanResponse
s@ListPricingRulesAssociatedToPricingPlanResponse' {} Int
a -> ListPricingRulesAssociatedToPricingPlanResponse
s {$sel:httpStatus:ListPricingRulesAssociatedToPricingPlanResponse' :: Int
httpStatus = Int
a} :: ListPricingRulesAssociatedToPricingPlanResponse)

instance
  Prelude.NFData
    ListPricingRulesAssociatedToPricingPlanResponse
  where
  rnf :: ListPricingRulesAssociatedToPricingPlanResponse -> ()
rnf
    ListPricingRulesAssociatedToPricingPlanResponse' {Int
Maybe (NonEmpty Text)
Maybe Text
httpStatus :: Int
pricingRuleArns :: Maybe (NonEmpty Text)
pricingPlanArn :: Maybe Text
nextToken :: Maybe Text
billingPeriod :: Maybe Text
$sel:httpStatus:ListPricingRulesAssociatedToPricingPlanResponse' :: ListPricingRulesAssociatedToPricingPlanResponse -> Int
$sel:pricingRuleArns:ListPricingRulesAssociatedToPricingPlanResponse' :: ListPricingRulesAssociatedToPricingPlanResponse
-> Maybe (NonEmpty Text)
$sel:pricingPlanArn:ListPricingRulesAssociatedToPricingPlanResponse' :: ListPricingRulesAssociatedToPricingPlanResponse -> Maybe Text
$sel:nextToken:ListPricingRulesAssociatedToPricingPlanResponse' :: ListPricingRulesAssociatedToPricingPlanResponse -> Maybe Text
$sel:billingPeriod:ListPricingRulesAssociatedToPricingPlanResponse' :: ListPricingRulesAssociatedToPricingPlanResponse -> Maybe Text
..} =
      forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
billingPeriod
        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
pricingPlanArn
        seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (NonEmpty Text)
pricingRuleArns
        seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus