{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}
module Amazonka.APIGateway.Types.UsagePlan where
import Amazonka.APIGateway.Types.ApiStage
import Amazonka.APIGateway.Types.QuotaSettings
import Amazonka.APIGateway.Types.ThrottleSettings
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
data UsagePlan = UsagePlan'
{
UsagePlan -> Maybe [ApiStage]
apiStages :: Prelude.Maybe [ApiStage],
UsagePlan -> Maybe Text
description :: Prelude.Maybe Prelude.Text,
UsagePlan -> Maybe Text
id :: Prelude.Maybe Prelude.Text,
UsagePlan -> Maybe Text
name :: Prelude.Maybe Prelude.Text,
UsagePlan -> Maybe Text
productCode :: Prelude.Maybe Prelude.Text,
UsagePlan -> Maybe QuotaSettings
quota :: Prelude.Maybe QuotaSettings,
UsagePlan -> Maybe (HashMap Text Text)
tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
UsagePlan -> Maybe ThrottleSettings
throttle :: Prelude.Maybe ThrottleSettings
}
deriving (UsagePlan -> UsagePlan -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: UsagePlan -> UsagePlan -> Bool
$c/= :: UsagePlan -> UsagePlan -> Bool
== :: UsagePlan -> UsagePlan -> Bool
$c== :: UsagePlan -> UsagePlan -> Bool
Prelude.Eq, ReadPrec [UsagePlan]
ReadPrec UsagePlan
Int -> ReadS UsagePlan
ReadS [UsagePlan]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [UsagePlan]
$creadListPrec :: ReadPrec [UsagePlan]
readPrec :: ReadPrec UsagePlan
$creadPrec :: ReadPrec UsagePlan
readList :: ReadS [UsagePlan]
$creadList :: ReadS [UsagePlan]
readsPrec :: Int -> ReadS UsagePlan
$creadsPrec :: Int -> ReadS UsagePlan
Prelude.Read, Int -> UsagePlan -> ShowS
[UsagePlan] -> ShowS
UsagePlan -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [UsagePlan] -> ShowS
$cshowList :: [UsagePlan] -> ShowS
show :: UsagePlan -> String
$cshow :: UsagePlan -> String
showsPrec :: Int -> UsagePlan -> ShowS
$cshowsPrec :: Int -> UsagePlan -> ShowS
Prelude.Show, forall x. Rep UsagePlan x -> UsagePlan
forall x. UsagePlan -> Rep UsagePlan x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep UsagePlan x -> UsagePlan
$cfrom :: forall x. UsagePlan -> Rep UsagePlan x
Prelude.Generic)
newUsagePlan ::
UsagePlan
newUsagePlan :: UsagePlan
newUsagePlan =
UsagePlan'
{ $sel:apiStages:UsagePlan' :: Maybe [ApiStage]
apiStages = forall a. Maybe a
Prelude.Nothing,
$sel:description:UsagePlan' :: Maybe Text
description = forall a. Maybe a
Prelude.Nothing,
$sel:id:UsagePlan' :: Maybe Text
id = forall a. Maybe a
Prelude.Nothing,
$sel:name:UsagePlan' :: Maybe Text
name = forall a. Maybe a
Prelude.Nothing,
$sel:productCode:UsagePlan' :: Maybe Text
productCode = forall a. Maybe a
Prelude.Nothing,
$sel:quota:UsagePlan' :: Maybe QuotaSettings
quota = forall a. Maybe a
Prelude.Nothing,
$sel:tags:UsagePlan' :: Maybe (HashMap Text Text)
tags = forall a. Maybe a
Prelude.Nothing,
$sel:throttle:UsagePlan' :: Maybe ThrottleSettings
throttle = forall a. Maybe a
Prelude.Nothing
}
usagePlan_apiStages :: Lens.Lens' UsagePlan (Prelude.Maybe [ApiStage])
usagePlan_apiStages :: Lens' UsagePlan (Maybe [ApiStage])
usagePlan_apiStages = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UsagePlan' {Maybe [ApiStage]
apiStages :: Maybe [ApiStage]
$sel:apiStages:UsagePlan' :: UsagePlan -> Maybe [ApiStage]
apiStages} -> Maybe [ApiStage]
apiStages) (\s :: UsagePlan
s@UsagePlan' {} Maybe [ApiStage]
a -> UsagePlan
s {$sel:apiStages:UsagePlan' :: Maybe [ApiStage]
apiStages = Maybe [ApiStage]
a} :: UsagePlan) 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
usagePlan_description :: Lens.Lens' UsagePlan (Prelude.Maybe Prelude.Text)
usagePlan_description :: Lens' UsagePlan (Maybe Text)
usagePlan_description = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UsagePlan' {Maybe Text
description :: Maybe Text
$sel:description:UsagePlan' :: UsagePlan -> Maybe Text
description} -> Maybe Text
description) (\s :: UsagePlan
s@UsagePlan' {} Maybe Text
a -> UsagePlan
s {$sel:description:UsagePlan' :: Maybe Text
description = Maybe Text
a} :: UsagePlan)
usagePlan_id :: Lens.Lens' UsagePlan (Prelude.Maybe Prelude.Text)
usagePlan_id :: Lens' UsagePlan (Maybe Text)
usagePlan_id = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UsagePlan' {Maybe Text
id :: Maybe Text
$sel:id:UsagePlan' :: UsagePlan -> Maybe Text
id} -> Maybe Text
id) (\s :: UsagePlan
s@UsagePlan' {} Maybe Text
a -> UsagePlan
s {$sel:id:UsagePlan' :: Maybe Text
id = Maybe Text
a} :: UsagePlan)
usagePlan_name :: Lens.Lens' UsagePlan (Prelude.Maybe Prelude.Text)
usagePlan_name :: Lens' UsagePlan (Maybe Text)
usagePlan_name = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UsagePlan' {Maybe Text
name :: Maybe Text
$sel:name:UsagePlan' :: UsagePlan -> Maybe Text
name} -> Maybe Text
name) (\s :: UsagePlan
s@UsagePlan' {} Maybe Text
a -> UsagePlan
s {$sel:name:UsagePlan' :: Maybe Text
name = Maybe Text
a} :: UsagePlan)
usagePlan_productCode :: Lens.Lens' UsagePlan (Prelude.Maybe Prelude.Text)
usagePlan_productCode :: Lens' UsagePlan (Maybe Text)
usagePlan_productCode = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UsagePlan' {Maybe Text
productCode :: Maybe Text
$sel:productCode:UsagePlan' :: UsagePlan -> Maybe Text
productCode} -> Maybe Text
productCode) (\s :: UsagePlan
s@UsagePlan' {} Maybe Text
a -> UsagePlan
s {$sel:productCode:UsagePlan' :: Maybe Text
productCode = Maybe Text
a} :: UsagePlan)
usagePlan_quota :: Lens.Lens' UsagePlan (Prelude.Maybe QuotaSettings)
usagePlan_quota :: Lens' UsagePlan (Maybe QuotaSettings)
usagePlan_quota = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UsagePlan' {Maybe QuotaSettings
quota :: Maybe QuotaSettings
$sel:quota:UsagePlan' :: UsagePlan -> Maybe QuotaSettings
quota} -> Maybe QuotaSettings
quota) (\s :: UsagePlan
s@UsagePlan' {} Maybe QuotaSettings
a -> UsagePlan
s {$sel:quota:UsagePlan' :: Maybe QuotaSettings
quota = Maybe QuotaSettings
a} :: UsagePlan)
usagePlan_tags :: Lens.Lens' UsagePlan (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
usagePlan_tags :: Lens' UsagePlan (Maybe (HashMap Text Text))
usagePlan_tags = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UsagePlan' {Maybe (HashMap Text Text)
tags :: Maybe (HashMap Text Text)
$sel:tags:UsagePlan' :: UsagePlan -> Maybe (HashMap Text Text)
tags} -> Maybe (HashMap Text Text)
tags) (\s :: UsagePlan
s@UsagePlan' {} Maybe (HashMap Text Text)
a -> UsagePlan
s {$sel:tags:UsagePlan' :: Maybe (HashMap Text Text)
tags = Maybe (HashMap Text Text)
a} :: UsagePlan) 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
usagePlan_throttle :: Lens.Lens' UsagePlan (Prelude.Maybe ThrottleSettings)
usagePlan_throttle :: Lens' UsagePlan (Maybe ThrottleSettings)
usagePlan_throttle = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UsagePlan' {Maybe ThrottleSettings
throttle :: Maybe ThrottleSettings
$sel:throttle:UsagePlan' :: UsagePlan -> Maybe ThrottleSettings
throttle} -> Maybe ThrottleSettings
throttle) (\s :: UsagePlan
s@UsagePlan' {} Maybe ThrottleSettings
a -> UsagePlan
s {$sel:throttle:UsagePlan' :: Maybe ThrottleSettings
throttle = Maybe ThrottleSettings
a} :: UsagePlan)
instance Data.FromJSON UsagePlan where
parseJSON :: Value -> Parser UsagePlan
parseJSON =
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
String
"UsagePlan"
( \Object
x ->
Maybe [ApiStage]
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe QuotaSettings
-> Maybe (HashMap Text Text)
-> Maybe ThrottleSettings
-> UsagePlan
UsagePlan'
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"apiStages" forall a. Parser (Maybe a) -> a -> Parser a
Data..!= forall a. Monoid a => a
Prelude.mempty)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"description")
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"id")
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"name")
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"productCode")
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"quota")
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"tags" forall a. Parser (Maybe a) -> a -> Parser a
Data..!= forall a. Monoid a => a
Prelude.mempty)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"throttle")
)
instance Prelude.Hashable UsagePlan where
hashWithSalt :: Int -> UsagePlan -> Int
hashWithSalt Int
_salt UsagePlan' {Maybe [ApiStage]
Maybe Text
Maybe (HashMap Text Text)
Maybe QuotaSettings
Maybe ThrottleSettings
throttle :: Maybe ThrottleSettings
tags :: Maybe (HashMap Text Text)
quota :: Maybe QuotaSettings
productCode :: Maybe Text
name :: Maybe Text
id :: Maybe Text
description :: Maybe Text
apiStages :: Maybe [ApiStage]
$sel:throttle:UsagePlan' :: UsagePlan -> Maybe ThrottleSettings
$sel:tags:UsagePlan' :: UsagePlan -> Maybe (HashMap Text Text)
$sel:quota:UsagePlan' :: UsagePlan -> Maybe QuotaSettings
$sel:productCode:UsagePlan' :: UsagePlan -> Maybe Text
$sel:name:UsagePlan' :: UsagePlan -> Maybe Text
$sel:id:UsagePlan' :: UsagePlan -> Maybe Text
$sel:description:UsagePlan' :: UsagePlan -> Maybe Text
$sel:apiStages:UsagePlan' :: UsagePlan -> Maybe [ApiStage]
..} =
Int
_salt
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [ApiStage]
apiStages
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
description
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
id
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
name
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
productCode
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe QuotaSettings
quota
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (HashMap Text Text)
tags
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ThrottleSettings
throttle
instance Prelude.NFData UsagePlan where
rnf :: UsagePlan -> ()
rnf UsagePlan' {Maybe [ApiStage]
Maybe Text
Maybe (HashMap Text Text)
Maybe QuotaSettings
Maybe ThrottleSettings
throttle :: Maybe ThrottleSettings
tags :: Maybe (HashMap Text Text)
quota :: Maybe QuotaSettings
productCode :: Maybe Text
name :: Maybe Text
id :: Maybe Text
description :: Maybe Text
apiStages :: Maybe [ApiStage]
$sel:throttle:UsagePlan' :: UsagePlan -> Maybe ThrottleSettings
$sel:tags:UsagePlan' :: UsagePlan -> Maybe (HashMap Text Text)
$sel:quota:UsagePlan' :: UsagePlan -> Maybe QuotaSettings
$sel:productCode:UsagePlan' :: UsagePlan -> Maybe Text
$sel:name:UsagePlan' :: UsagePlan -> Maybe Text
$sel:id:UsagePlan' :: UsagePlan -> Maybe Text
$sel:description:UsagePlan' :: UsagePlan -> Maybe Text
$sel:apiStages:UsagePlan' :: UsagePlan -> Maybe [ApiStage]
..} =
forall a. NFData a => a -> ()
Prelude.rnf Maybe [ApiStage]
apiStages
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
description
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
id
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
name
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
productCode
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe QuotaSettings
quota
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (HashMap Text Text)
tags
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ThrottleSettings
throttle