{-# 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 #-}

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

-- |
-- Module      : Amazonka.APIGateway.Types.Stage
-- Copyright   : (c) 2013-2021 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.APIGateway.Types.Stage where

import Amazonka.APIGateway.Types.AccessLogSettings
import Amazonka.APIGateway.Types.CacheClusterSize
import Amazonka.APIGateway.Types.CacheClusterStatus
import Amazonka.APIGateway.Types.CanarySettings
import Amazonka.APIGateway.Types.MethodSetting
import qualified Amazonka.Core as Core
import qualified Amazonka.Lens as Lens
import qualified Amazonka.Prelude as Prelude

-- | Represents a unique identifier for a version of a deployed RestApi that
-- is callable by users.
--
-- <https://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-deploy-api.html Deploy an API>
--
-- /See:/ 'newStage' smart constructor.
data Stage = Stage'
  { -- | The identifier of the Deployment that the stage points to.
    Stage -> Maybe Text
deploymentId :: Prelude.Maybe Prelude.Text,
    -- | A map that defines the stage variables for a Stage resource. Variable
    -- names can have alphanumeric and underscore characters, and the values
    -- must match @[A-Za-z0-9-._~:\/?#&=,]+@.
    Stage -> Maybe (HashMap Text Text)
variables :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
    -- | Settings for logging access in this stage.
    Stage -> Maybe AccessLogSettings
accessLogSettings :: Prelude.Maybe AccessLogSettings,
    -- | The version of the associated API documentation.
    Stage -> Maybe Text
documentationVersion :: Prelude.Maybe Prelude.Text,
    -- | The identifier of a client certificate for an API stage.
    Stage -> Maybe Text
clientCertificateId :: Prelude.Maybe Prelude.Text,
    -- | Specifies whether active tracing with X-ray is enabled for the Stage.
    Stage -> Maybe Bool
tracingEnabled :: Prelude.Maybe Prelude.Bool,
    -- | The timestamp when the stage was created.
    Stage -> Maybe POSIX
createdDate :: Prelude.Maybe Core.POSIX,
    -- | The status of the cache cluster for the stage, if enabled.
    Stage -> Maybe CacheClusterStatus
cacheClusterStatus :: Prelude.Maybe CacheClusterStatus,
    -- | A map that defines the method settings for a Stage resource. Keys
    -- (designated as @\/{method_setting_key@ below) are method paths defined
    -- as @{resource_path}\/{http_method}@ for an individual method override,
    -- or @\/\\*\/\\*@ for overriding all methods in the stage.
    Stage -> Maybe (HashMap Text MethodSetting)
methodSettings :: Prelude.Maybe (Prelude.HashMap Prelude.Text MethodSetting),
    -- | The timestamp when the stage last updated.
    Stage -> Maybe POSIX
lastUpdatedDate :: Prelude.Maybe Core.POSIX,
    -- | The size of the cache cluster for the stage, if enabled.
    Stage -> Maybe CacheClusterSize
cacheClusterSize :: Prelude.Maybe CacheClusterSize,
    -- | The ARN of the WebAcl associated with the Stage.
    Stage -> Maybe Text
webAclArn :: Prelude.Maybe Prelude.Text,
    -- | Settings for the canary deployment in this stage.
    Stage -> Maybe CanarySettings
canarySettings :: Prelude.Maybe CanarySettings,
    -- | Specifies whether a cache cluster is enabled for the stage.
    Stage -> Maybe Bool
cacheClusterEnabled :: Prelude.Maybe Prelude.Bool,
    -- | The name of the stage is the first path segment in the Uniform Resource
    -- Identifier (URI) of a call to API Gateway. Stage names can only contain
    -- alphanumeric characters, hyphens, and underscores. Maximum length is 128
    -- characters.
    Stage -> Maybe Text
stageName :: Prelude.Maybe Prelude.Text,
    -- | The stage\'s description.
    Stage -> Maybe Text
description :: Prelude.Maybe Prelude.Text,
    -- | The collection of tags. Each tag element is associated with a given
    -- resource.
    Stage -> Maybe (HashMap Text Text)
tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text)
  }
  deriving (Stage -> Stage -> Bool
(Stage -> Stage -> Bool) -> (Stage -> Stage -> Bool) -> Eq Stage
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Stage -> Stage -> Bool
$c/= :: Stage -> Stage -> Bool
== :: Stage -> Stage -> Bool
$c== :: Stage -> Stage -> Bool
Prelude.Eq, ReadPrec [Stage]
ReadPrec Stage
Int -> ReadS Stage
ReadS [Stage]
(Int -> ReadS Stage)
-> ReadS [Stage]
-> ReadPrec Stage
-> ReadPrec [Stage]
-> Read Stage
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [Stage]
$creadListPrec :: ReadPrec [Stage]
readPrec :: ReadPrec Stage
$creadPrec :: ReadPrec Stage
readList :: ReadS [Stage]
$creadList :: ReadS [Stage]
readsPrec :: Int -> ReadS Stage
$creadsPrec :: Int -> ReadS Stage
Prelude.Read, Int -> Stage -> ShowS
[Stage] -> ShowS
Stage -> String
(Int -> Stage -> ShowS)
-> (Stage -> String) -> ([Stage] -> ShowS) -> Show Stage
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Stage] -> ShowS
$cshowList :: [Stage] -> ShowS
show :: Stage -> String
$cshow :: Stage -> String
showsPrec :: Int -> Stage -> ShowS
$cshowsPrec :: Int -> Stage -> ShowS
Prelude.Show, (forall x. Stage -> Rep Stage x)
-> (forall x. Rep Stage x -> Stage) -> Generic Stage
forall x. Rep Stage x -> Stage
forall x. Stage -> Rep Stage x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep Stage x -> Stage
$cfrom :: forall x. Stage -> Rep Stage x
Prelude.Generic)

-- |
-- Create a value of 'Stage' 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:
--
-- 'deploymentId', 'stage_deploymentId' - The identifier of the Deployment that the stage points to.
--
-- 'variables', 'stage_variables' - A map that defines the stage variables for a Stage resource. Variable
-- names can have alphanumeric and underscore characters, and the values
-- must match @[A-Za-z0-9-._~:\/?#&=,]+@.
--
-- 'accessLogSettings', 'stage_accessLogSettings' - Settings for logging access in this stage.
--
-- 'documentationVersion', 'stage_documentationVersion' - The version of the associated API documentation.
--
-- 'clientCertificateId', 'stage_clientCertificateId' - The identifier of a client certificate for an API stage.
--
-- 'tracingEnabled', 'stage_tracingEnabled' - Specifies whether active tracing with X-ray is enabled for the Stage.
--
-- 'createdDate', 'stage_createdDate' - The timestamp when the stage was created.
--
-- 'cacheClusterStatus', 'stage_cacheClusterStatus' - The status of the cache cluster for the stage, if enabled.
--
-- 'methodSettings', 'stage_methodSettings' - A map that defines the method settings for a Stage resource. Keys
-- (designated as @\/{method_setting_key@ below) are method paths defined
-- as @{resource_path}\/{http_method}@ for an individual method override,
-- or @\/\\*\/\\*@ for overriding all methods in the stage.
--
-- 'lastUpdatedDate', 'stage_lastUpdatedDate' - The timestamp when the stage last updated.
--
-- 'cacheClusterSize', 'stage_cacheClusterSize' - The size of the cache cluster for the stage, if enabled.
--
-- 'webAclArn', 'stage_webAclArn' - The ARN of the WebAcl associated with the Stage.
--
-- 'canarySettings', 'stage_canarySettings' - Settings for the canary deployment in this stage.
--
-- 'cacheClusterEnabled', 'stage_cacheClusterEnabled' - Specifies whether a cache cluster is enabled for the stage.
--
-- 'stageName', 'stage_stageName' - The name of the stage is the first path segment in the Uniform Resource
-- Identifier (URI) of a call to API Gateway. Stage names can only contain
-- alphanumeric characters, hyphens, and underscores. Maximum length is 128
-- characters.
--
-- 'description', 'stage_description' - The stage\'s description.
--
-- 'tags', 'stage_tags' - The collection of tags. Each tag element is associated with a given
-- resource.
newStage ::
  Stage
newStage :: Stage
newStage =
  Stage' :: Maybe Text
-> Maybe (HashMap Text Text)
-> Maybe AccessLogSettings
-> Maybe Text
-> Maybe Text
-> Maybe Bool
-> Maybe POSIX
-> Maybe CacheClusterStatus
-> Maybe (HashMap Text MethodSetting)
-> Maybe POSIX
-> Maybe CacheClusterSize
-> Maybe Text
-> Maybe CanarySettings
-> Maybe Bool
-> Maybe Text
-> Maybe Text
-> Maybe (HashMap Text Text)
-> Stage
Stage'
    { $sel:deploymentId:Stage' :: Maybe Text
deploymentId = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:variables:Stage' :: Maybe (HashMap Text Text)
variables = Maybe (HashMap Text Text)
forall a. Maybe a
Prelude.Nothing,
      $sel:accessLogSettings:Stage' :: Maybe AccessLogSettings
accessLogSettings = Maybe AccessLogSettings
forall a. Maybe a
Prelude.Nothing,
      $sel:documentationVersion:Stage' :: Maybe Text
documentationVersion = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:clientCertificateId:Stage' :: Maybe Text
clientCertificateId = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:tracingEnabled:Stage' :: Maybe Bool
tracingEnabled = Maybe Bool
forall a. Maybe a
Prelude.Nothing,
      $sel:createdDate:Stage' :: Maybe POSIX
createdDate = Maybe POSIX
forall a. Maybe a
Prelude.Nothing,
      $sel:cacheClusterStatus:Stage' :: Maybe CacheClusterStatus
cacheClusterStatus = Maybe CacheClusterStatus
forall a. Maybe a
Prelude.Nothing,
      $sel:methodSettings:Stage' :: Maybe (HashMap Text MethodSetting)
methodSettings = Maybe (HashMap Text MethodSetting)
forall a. Maybe a
Prelude.Nothing,
      $sel:lastUpdatedDate:Stage' :: Maybe POSIX
lastUpdatedDate = Maybe POSIX
forall a. Maybe a
Prelude.Nothing,
      $sel:cacheClusterSize:Stage' :: Maybe CacheClusterSize
cacheClusterSize = Maybe CacheClusterSize
forall a. Maybe a
Prelude.Nothing,
      $sel:webAclArn:Stage' :: Maybe Text
webAclArn = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:canarySettings:Stage' :: Maybe CanarySettings
canarySettings = Maybe CanarySettings
forall a. Maybe a
Prelude.Nothing,
      $sel:cacheClusterEnabled:Stage' :: Maybe Bool
cacheClusterEnabled = Maybe Bool
forall a. Maybe a
Prelude.Nothing,
      $sel:stageName:Stage' :: Maybe Text
stageName = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:description:Stage' :: Maybe Text
description = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:tags:Stage' :: Maybe (HashMap Text Text)
tags = Maybe (HashMap Text Text)
forall a. Maybe a
Prelude.Nothing
    }

-- | The identifier of the Deployment that the stage points to.
stage_deploymentId :: Lens.Lens' Stage (Prelude.Maybe Prelude.Text)
stage_deploymentId :: (Maybe Text -> f (Maybe Text)) -> Stage -> f Stage
stage_deploymentId = (Stage -> Maybe Text)
-> (Stage -> Maybe Text -> Stage)
-> Lens Stage Stage (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Stage' {Maybe Text
deploymentId :: Maybe Text
$sel:deploymentId:Stage' :: Stage -> Maybe Text
deploymentId} -> Maybe Text
deploymentId) (\s :: Stage
s@Stage' {} Maybe Text
a -> Stage
s {$sel:deploymentId:Stage' :: Maybe Text
deploymentId = Maybe Text
a} :: Stage)

-- | A map that defines the stage variables for a Stage resource. Variable
-- names can have alphanumeric and underscore characters, and the values
-- must match @[A-Za-z0-9-._~:\/?#&=,]+@.
stage_variables :: Lens.Lens' Stage (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
stage_variables :: (Maybe (HashMap Text Text) -> f (Maybe (HashMap Text Text)))
-> Stage -> f Stage
stage_variables = (Stage -> Maybe (HashMap Text Text))
-> (Stage -> Maybe (HashMap Text Text) -> Stage)
-> Lens
     Stage Stage (Maybe (HashMap Text Text)) (Maybe (HashMap Text Text))
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Stage' {Maybe (HashMap Text Text)
variables :: Maybe (HashMap Text Text)
$sel:variables:Stage' :: Stage -> Maybe (HashMap Text Text)
variables} -> Maybe (HashMap Text Text)
variables) (\s :: Stage
s@Stage' {} Maybe (HashMap Text Text)
a -> Stage
s {$sel:variables:Stage' :: Maybe (HashMap Text Text)
variables = Maybe (HashMap Text Text)
a} :: Stage) ((Maybe (HashMap Text Text) -> f (Maybe (HashMap Text Text)))
 -> Stage -> f Stage)
-> ((Maybe (HashMap Text Text) -> f (Maybe (HashMap Text Text)))
    -> Maybe (HashMap Text Text) -> f (Maybe (HashMap Text Text)))
-> (Maybe (HashMap Text Text) -> f (Maybe (HashMap Text Text)))
-> Stage
-> f Stage
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso
  (HashMap Text Text)
  (HashMap Text Text)
  (HashMap Text Text)
  (HashMap Text Text)
-> Iso
     (Maybe (HashMap Text Text))
     (Maybe (HashMap Text Text))
     (Maybe (HashMap Text Text))
     (Maybe (HashMap Text Text))
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 AnIso
  (HashMap Text Text)
  (HashMap Text Text)
  (HashMap Text Text)
  (HashMap Text Text)
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | Settings for logging access in this stage.
stage_accessLogSettings :: Lens.Lens' Stage (Prelude.Maybe AccessLogSettings)
stage_accessLogSettings :: (Maybe AccessLogSettings -> f (Maybe AccessLogSettings))
-> Stage -> f Stage
stage_accessLogSettings = (Stage -> Maybe AccessLogSettings)
-> (Stage -> Maybe AccessLogSettings -> Stage)
-> Lens
     Stage Stage (Maybe AccessLogSettings) (Maybe AccessLogSettings)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Stage' {Maybe AccessLogSettings
accessLogSettings :: Maybe AccessLogSettings
$sel:accessLogSettings:Stage' :: Stage -> Maybe AccessLogSettings
accessLogSettings} -> Maybe AccessLogSettings
accessLogSettings) (\s :: Stage
s@Stage' {} Maybe AccessLogSettings
a -> Stage
s {$sel:accessLogSettings:Stage' :: Maybe AccessLogSettings
accessLogSettings = Maybe AccessLogSettings
a} :: Stage)

-- | The version of the associated API documentation.
stage_documentationVersion :: Lens.Lens' Stage (Prelude.Maybe Prelude.Text)
stage_documentationVersion :: (Maybe Text -> f (Maybe Text)) -> Stage -> f Stage
stage_documentationVersion = (Stage -> Maybe Text)
-> (Stage -> Maybe Text -> Stage)
-> Lens Stage Stage (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Stage' {Maybe Text
documentationVersion :: Maybe Text
$sel:documentationVersion:Stage' :: Stage -> Maybe Text
documentationVersion} -> Maybe Text
documentationVersion) (\s :: Stage
s@Stage' {} Maybe Text
a -> Stage
s {$sel:documentationVersion:Stage' :: Maybe Text
documentationVersion = Maybe Text
a} :: Stage)

-- | The identifier of a client certificate for an API stage.
stage_clientCertificateId :: Lens.Lens' Stage (Prelude.Maybe Prelude.Text)
stage_clientCertificateId :: (Maybe Text -> f (Maybe Text)) -> Stage -> f Stage
stage_clientCertificateId = (Stage -> Maybe Text)
-> (Stage -> Maybe Text -> Stage)
-> Lens Stage Stage (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Stage' {Maybe Text
clientCertificateId :: Maybe Text
$sel:clientCertificateId:Stage' :: Stage -> Maybe Text
clientCertificateId} -> Maybe Text
clientCertificateId) (\s :: Stage
s@Stage' {} Maybe Text
a -> Stage
s {$sel:clientCertificateId:Stage' :: Maybe Text
clientCertificateId = Maybe Text
a} :: Stage)

-- | Specifies whether active tracing with X-ray is enabled for the Stage.
stage_tracingEnabled :: Lens.Lens' Stage (Prelude.Maybe Prelude.Bool)
stage_tracingEnabled :: (Maybe Bool -> f (Maybe Bool)) -> Stage -> f Stage
stage_tracingEnabled = (Stage -> Maybe Bool)
-> (Stage -> Maybe Bool -> Stage)
-> Lens Stage Stage (Maybe Bool) (Maybe Bool)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Stage' {Maybe Bool
tracingEnabled :: Maybe Bool
$sel:tracingEnabled:Stage' :: Stage -> Maybe Bool
tracingEnabled} -> Maybe Bool
tracingEnabled) (\s :: Stage
s@Stage' {} Maybe Bool
a -> Stage
s {$sel:tracingEnabled:Stage' :: Maybe Bool
tracingEnabled = Maybe Bool
a} :: Stage)

-- | The timestamp when the stage was created.
stage_createdDate :: Lens.Lens' Stage (Prelude.Maybe Prelude.UTCTime)
stage_createdDate :: (Maybe UTCTime -> f (Maybe UTCTime)) -> Stage -> f Stage
stage_createdDate = (Stage -> Maybe POSIX)
-> (Stage -> Maybe POSIX -> Stage)
-> Lens Stage Stage (Maybe POSIX) (Maybe POSIX)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Stage' {Maybe POSIX
createdDate :: Maybe POSIX
$sel:createdDate:Stage' :: Stage -> Maybe POSIX
createdDate} -> Maybe POSIX
createdDate) (\s :: Stage
s@Stage' {} Maybe POSIX
a -> Stage
s {$sel:createdDate:Stage' :: Maybe POSIX
createdDate = Maybe POSIX
a} :: Stage) ((Maybe POSIX -> f (Maybe POSIX)) -> Stage -> f Stage)
-> ((Maybe UTCTime -> f (Maybe UTCTime))
    -> Maybe POSIX -> f (Maybe POSIX))
-> (Maybe UTCTime -> f (Maybe UTCTime))
-> Stage
-> f Stage
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso POSIX POSIX UTCTime UTCTime
-> Iso (Maybe POSIX) (Maybe POSIX) (Maybe UTCTime) (Maybe UTCTime)
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 AnIso POSIX POSIX UTCTime UTCTime
forall (a :: Format). Iso' (Time a) UTCTime
Core._Time

-- | The status of the cache cluster for the stage, if enabled.
stage_cacheClusterStatus :: Lens.Lens' Stage (Prelude.Maybe CacheClusterStatus)
stage_cacheClusterStatus :: (Maybe CacheClusterStatus -> f (Maybe CacheClusterStatus))
-> Stage -> f Stage
stage_cacheClusterStatus = (Stage -> Maybe CacheClusterStatus)
-> (Stage -> Maybe CacheClusterStatus -> Stage)
-> Lens
     Stage Stage (Maybe CacheClusterStatus) (Maybe CacheClusterStatus)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Stage' {Maybe CacheClusterStatus
cacheClusterStatus :: Maybe CacheClusterStatus
$sel:cacheClusterStatus:Stage' :: Stage -> Maybe CacheClusterStatus
cacheClusterStatus} -> Maybe CacheClusterStatus
cacheClusterStatus) (\s :: Stage
s@Stage' {} Maybe CacheClusterStatus
a -> Stage
s {$sel:cacheClusterStatus:Stage' :: Maybe CacheClusterStatus
cacheClusterStatus = Maybe CacheClusterStatus
a} :: Stage)

-- | A map that defines the method settings for a Stage resource. Keys
-- (designated as @\/{method_setting_key@ below) are method paths defined
-- as @{resource_path}\/{http_method}@ for an individual method override,
-- or @\/\\*\/\\*@ for overriding all methods in the stage.
stage_methodSettings :: Lens.Lens' Stage (Prelude.Maybe (Prelude.HashMap Prelude.Text MethodSetting))
stage_methodSettings :: (Maybe (HashMap Text MethodSetting)
 -> f (Maybe (HashMap Text MethodSetting)))
-> Stage -> f Stage
stage_methodSettings = (Stage -> Maybe (HashMap Text MethodSetting))
-> (Stage -> Maybe (HashMap Text MethodSetting) -> Stage)
-> Lens
     Stage
     Stage
     (Maybe (HashMap Text MethodSetting))
     (Maybe (HashMap Text MethodSetting))
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Stage' {Maybe (HashMap Text MethodSetting)
methodSettings :: Maybe (HashMap Text MethodSetting)
$sel:methodSettings:Stage' :: Stage -> Maybe (HashMap Text MethodSetting)
methodSettings} -> Maybe (HashMap Text MethodSetting)
methodSettings) (\s :: Stage
s@Stage' {} Maybe (HashMap Text MethodSetting)
a -> Stage
s {$sel:methodSettings:Stage' :: Maybe (HashMap Text MethodSetting)
methodSettings = Maybe (HashMap Text MethodSetting)
a} :: Stage) ((Maybe (HashMap Text MethodSetting)
  -> f (Maybe (HashMap Text MethodSetting)))
 -> Stage -> f Stage)
-> ((Maybe (HashMap Text MethodSetting)
     -> f (Maybe (HashMap Text MethodSetting)))
    -> Maybe (HashMap Text MethodSetting)
    -> f (Maybe (HashMap Text MethodSetting)))
-> (Maybe (HashMap Text MethodSetting)
    -> f (Maybe (HashMap Text MethodSetting)))
-> Stage
-> f Stage
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso
  (HashMap Text MethodSetting)
  (HashMap Text MethodSetting)
  (HashMap Text MethodSetting)
  (HashMap Text MethodSetting)
-> Iso
     (Maybe (HashMap Text MethodSetting))
     (Maybe (HashMap Text MethodSetting))
     (Maybe (HashMap Text MethodSetting))
     (Maybe (HashMap Text MethodSetting))
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 AnIso
  (HashMap Text MethodSetting)
  (HashMap Text MethodSetting)
  (HashMap Text MethodSetting)
  (HashMap Text MethodSetting)
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The timestamp when the stage last updated.
stage_lastUpdatedDate :: Lens.Lens' Stage (Prelude.Maybe Prelude.UTCTime)
stage_lastUpdatedDate :: (Maybe UTCTime -> f (Maybe UTCTime)) -> Stage -> f Stage
stage_lastUpdatedDate = (Stage -> Maybe POSIX)
-> (Stage -> Maybe POSIX -> Stage)
-> Lens Stage Stage (Maybe POSIX) (Maybe POSIX)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Stage' {Maybe POSIX
lastUpdatedDate :: Maybe POSIX
$sel:lastUpdatedDate:Stage' :: Stage -> Maybe POSIX
lastUpdatedDate} -> Maybe POSIX
lastUpdatedDate) (\s :: Stage
s@Stage' {} Maybe POSIX
a -> Stage
s {$sel:lastUpdatedDate:Stage' :: Maybe POSIX
lastUpdatedDate = Maybe POSIX
a} :: Stage) ((Maybe POSIX -> f (Maybe POSIX)) -> Stage -> f Stage)
-> ((Maybe UTCTime -> f (Maybe UTCTime))
    -> Maybe POSIX -> f (Maybe POSIX))
-> (Maybe UTCTime -> f (Maybe UTCTime))
-> Stage
-> f Stage
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso POSIX POSIX UTCTime UTCTime
-> Iso (Maybe POSIX) (Maybe POSIX) (Maybe UTCTime) (Maybe UTCTime)
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 AnIso POSIX POSIX UTCTime UTCTime
forall (a :: Format). Iso' (Time a) UTCTime
Core._Time

-- | The size of the cache cluster for the stage, if enabled.
stage_cacheClusterSize :: Lens.Lens' Stage (Prelude.Maybe CacheClusterSize)
stage_cacheClusterSize :: (Maybe CacheClusterSize -> f (Maybe CacheClusterSize))
-> Stage -> f Stage
stage_cacheClusterSize = (Stage -> Maybe CacheClusterSize)
-> (Stage -> Maybe CacheClusterSize -> Stage)
-> Lens
     Stage Stage (Maybe CacheClusterSize) (Maybe CacheClusterSize)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Stage' {Maybe CacheClusterSize
cacheClusterSize :: Maybe CacheClusterSize
$sel:cacheClusterSize:Stage' :: Stage -> Maybe CacheClusterSize
cacheClusterSize} -> Maybe CacheClusterSize
cacheClusterSize) (\s :: Stage
s@Stage' {} Maybe CacheClusterSize
a -> Stage
s {$sel:cacheClusterSize:Stage' :: Maybe CacheClusterSize
cacheClusterSize = Maybe CacheClusterSize
a} :: Stage)

-- | The ARN of the WebAcl associated with the Stage.
stage_webAclArn :: Lens.Lens' Stage (Prelude.Maybe Prelude.Text)
stage_webAclArn :: (Maybe Text -> f (Maybe Text)) -> Stage -> f Stage
stage_webAclArn = (Stage -> Maybe Text)
-> (Stage -> Maybe Text -> Stage)
-> Lens Stage Stage (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Stage' {Maybe Text
webAclArn :: Maybe Text
$sel:webAclArn:Stage' :: Stage -> Maybe Text
webAclArn} -> Maybe Text
webAclArn) (\s :: Stage
s@Stage' {} Maybe Text
a -> Stage
s {$sel:webAclArn:Stage' :: Maybe Text
webAclArn = Maybe Text
a} :: Stage)

-- | Settings for the canary deployment in this stage.
stage_canarySettings :: Lens.Lens' Stage (Prelude.Maybe CanarySettings)
stage_canarySettings :: (Maybe CanarySettings -> f (Maybe CanarySettings))
-> Stage -> f Stage
stage_canarySettings = (Stage -> Maybe CanarySettings)
-> (Stage -> Maybe CanarySettings -> Stage)
-> Lens Stage Stage (Maybe CanarySettings) (Maybe CanarySettings)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Stage' {Maybe CanarySettings
canarySettings :: Maybe CanarySettings
$sel:canarySettings:Stage' :: Stage -> Maybe CanarySettings
canarySettings} -> Maybe CanarySettings
canarySettings) (\s :: Stage
s@Stage' {} Maybe CanarySettings
a -> Stage
s {$sel:canarySettings:Stage' :: Maybe CanarySettings
canarySettings = Maybe CanarySettings
a} :: Stage)

-- | Specifies whether a cache cluster is enabled for the stage.
stage_cacheClusterEnabled :: Lens.Lens' Stage (Prelude.Maybe Prelude.Bool)
stage_cacheClusterEnabled :: (Maybe Bool -> f (Maybe Bool)) -> Stage -> f Stage
stage_cacheClusterEnabled = (Stage -> Maybe Bool)
-> (Stage -> Maybe Bool -> Stage)
-> Lens Stage Stage (Maybe Bool) (Maybe Bool)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Stage' {Maybe Bool
cacheClusterEnabled :: Maybe Bool
$sel:cacheClusterEnabled:Stage' :: Stage -> Maybe Bool
cacheClusterEnabled} -> Maybe Bool
cacheClusterEnabled) (\s :: Stage
s@Stage' {} Maybe Bool
a -> Stage
s {$sel:cacheClusterEnabled:Stage' :: Maybe Bool
cacheClusterEnabled = Maybe Bool
a} :: Stage)

-- | The name of the stage is the first path segment in the Uniform Resource
-- Identifier (URI) of a call to API Gateway. Stage names can only contain
-- alphanumeric characters, hyphens, and underscores. Maximum length is 128
-- characters.
stage_stageName :: Lens.Lens' Stage (Prelude.Maybe Prelude.Text)
stage_stageName :: (Maybe Text -> f (Maybe Text)) -> Stage -> f Stage
stage_stageName = (Stage -> Maybe Text)
-> (Stage -> Maybe Text -> Stage)
-> Lens Stage Stage (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Stage' {Maybe Text
stageName :: Maybe Text
$sel:stageName:Stage' :: Stage -> Maybe Text
stageName} -> Maybe Text
stageName) (\s :: Stage
s@Stage' {} Maybe Text
a -> Stage
s {$sel:stageName:Stage' :: Maybe Text
stageName = Maybe Text
a} :: Stage)

-- | The stage\'s description.
stage_description :: Lens.Lens' Stage (Prelude.Maybe Prelude.Text)
stage_description :: (Maybe Text -> f (Maybe Text)) -> Stage -> f Stage
stage_description = (Stage -> Maybe Text)
-> (Stage -> Maybe Text -> Stage)
-> Lens Stage Stage (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Stage' {Maybe Text
description :: Maybe Text
$sel:description:Stage' :: Stage -> Maybe Text
description} -> Maybe Text
description) (\s :: Stage
s@Stage' {} Maybe Text
a -> Stage
s {$sel:description:Stage' :: Maybe Text
description = Maybe Text
a} :: Stage)

-- | The collection of tags. Each tag element is associated with a given
-- resource.
stage_tags :: Lens.Lens' Stage (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
stage_tags :: (Maybe (HashMap Text Text) -> f (Maybe (HashMap Text Text)))
-> Stage -> f Stage
stage_tags = (Stage -> Maybe (HashMap Text Text))
-> (Stage -> Maybe (HashMap Text Text) -> Stage)
-> Lens
     Stage Stage (Maybe (HashMap Text Text)) (Maybe (HashMap Text Text))
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Stage' {Maybe (HashMap Text Text)
tags :: Maybe (HashMap Text Text)
$sel:tags:Stage' :: Stage -> Maybe (HashMap Text Text)
tags} -> Maybe (HashMap Text Text)
tags) (\s :: Stage
s@Stage' {} Maybe (HashMap Text Text)
a -> Stage
s {$sel:tags:Stage' :: Maybe (HashMap Text Text)
tags = Maybe (HashMap Text Text)
a} :: Stage) ((Maybe (HashMap Text Text) -> f (Maybe (HashMap Text Text)))
 -> Stage -> f Stage)
-> ((Maybe (HashMap Text Text) -> f (Maybe (HashMap Text Text)))
    -> Maybe (HashMap Text Text) -> f (Maybe (HashMap Text Text)))
-> (Maybe (HashMap Text Text) -> f (Maybe (HashMap Text Text)))
-> Stage
-> f Stage
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso
  (HashMap Text Text)
  (HashMap Text Text)
  (HashMap Text Text)
  (HashMap Text Text)
-> Iso
     (Maybe (HashMap Text Text))
     (Maybe (HashMap Text Text))
     (Maybe (HashMap Text Text))
     (Maybe (HashMap Text Text))
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 AnIso
  (HashMap Text Text)
  (HashMap Text Text)
  (HashMap Text Text)
  (HashMap Text Text)
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

instance Core.FromJSON Stage where
  parseJSON :: Value -> Parser Stage
parseJSON =
    String -> (Object -> Parser Stage) -> Value -> Parser Stage
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Core.withObject
      String
"Stage"
      ( \Object
x ->
          Maybe Text
-> Maybe (HashMap Text Text)
-> Maybe AccessLogSettings
-> Maybe Text
-> Maybe Text
-> Maybe Bool
-> Maybe POSIX
-> Maybe CacheClusterStatus
-> Maybe (HashMap Text MethodSetting)
-> Maybe POSIX
-> Maybe CacheClusterSize
-> Maybe Text
-> Maybe CanarySettings
-> Maybe Bool
-> Maybe Text
-> Maybe Text
-> Maybe (HashMap Text Text)
-> Stage
Stage'
            (Maybe Text
 -> Maybe (HashMap Text Text)
 -> Maybe AccessLogSettings
 -> Maybe Text
 -> Maybe Text
 -> Maybe Bool
 -> Maybe POSIX
 -> Maybe CacheClusterStatus
 -> Maybe (HashMap Text MethodSetting)
 -> Maybe POSIX
 -> Maybe CacheClusterSize
 -> Maybe Text
 -> Maybe CanarySettings
 -> Maybe Bool
 -> Maybe Text
 -> Maybe Text
 -> Maybe (HashMap Text Text)
 -> Stage)
-> Parser (Maybe Text)
-> Parser
     (Maybe (HashMap Text Text)
      -> Maybe AccessLogSettings
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe POSIX
      -> Maybe CacheClusterStatus
      -> Maybe (HashMap Text MethodSetting)
      -> Maybe POSIX
      -> Maybe CacheClusterSize
      -> Maybe Text
      -> Maybe CanarySettings
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe (HashMap Text Text)
      -> Stage)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"deploymentId")
            Parser
  (Maybe (HashMap Text Text)
   -> Maybe AccessLogSettings
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe POSIX
   -> Maybe CacheClusterStatus
   -> Maybe (HashMap Text MethodSetting)
   -> Maybe POSIX
   -> Maybe CacheClusterSize
   -> Maybe Text
   -> Maybe CanarySettings
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe (HashMap Text Text)
   -> Stage)
-> Parser (Maybe (HashMap Text Text))
-> Parser
     (Maybe AccessLogSettings
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe POSIX
      -> Maybe CacheClusterStatus
      -> Maybe (HashMap Text MethodSetting)
      -> Maybe POSIX
      -> Maybe CacheClusterSize
      -> Maybe Text
      -> Maybe CanarySettings
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe (HashMap Text Text)
      -> Stage)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe (Maybe (HashMap Text Text)))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"variables" Parser (Maybe (Maybe (HashMap Text Text)))
-> Maybe (HashMap Text Text) -> Parser (Maybe (HashMap Text Text))
forall a. Parser (Maybe a) -> a -> Parser a
Core..!= Maybe (HashMap Text Text)
forall a. Monoid a => a
Prelude.mempty)
            Parser
  (Maybe AccessLogSettings
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe POSIX
   -> Maybe CacheClusterStatus
   -> Maybe (HashMap Text MethodSetting)
   -> Maybe POSIX
   -> Maybe CacheClusterSize
   -> Maybe Text
   -> Maybe CanarySettings
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe (HashMap Text Text)
   -> Stage)
-> Parser (Maybe AccessLogSettings)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe POSIX
      -> Maybe CacheClusterStatus
      -> Maybe (HashMap Text MethodSetting)
      -> Maybe POSIX
      -> Maybe CacheClusterSize
      -> Maybe Text
      -> Maybe CanarySettings
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe (HashMap Text Text)
      -> Stage)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe AccessLogSettings)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"accessLogSettings")
            Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe POSIX
   -> Maybe CacheClusterStatus
   -> Maybe (HashMap Text MethodSetting)
   -> Maybe POSIX
   -> Maybe CacheClusterSize
   -> Maybe Text
   -> Maybe CanarySettings
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe (HashMap Text Text)
   -> Stage)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Bool
      -> Maybe POSIX
      -> Maybe CacheClusterStatus
      -> Maybe (HashMap Text MethodSetting)
      -> Maybe POSIX
      -> Maybe CacheClusterSize
      -> Maybe Text
      -> Maybe CanarySettings
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe (HashMap Text Text)
      -> Stage)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"documentationVersion")
            Parser
  (Maybe Text
   -> Maybe Bool
   -> Maybe POSIX
   -> Maybe CacheClusterStatus
   -> Maybe (HashMap Text MethodSetting)
   -> Maybe POSIX
   -> Maybe CacheClusterSize
   -> Maybe Text
   -> Maybe CanarySettings
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe (HashMap Text Text)
   -> Stage)
-> Parser (Maybe Text)
-> Parser
     (Maybe Bool
      -> Maybe POSIX
      -> Maybe CacheClusterStatus
      -> Maybe (HashMap Text MethodSetting)
      -> Maybe POSIX
      -> Maybe CacheClusterSize
      -> Maybe Text
      -> Maybe CanarySettings
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe (HashMap Text Text)
      -> Stage)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"clientCertificateId")
            Parser
  (Maybe Bool
   -> Maybe POSIX
   -> Maybe CacheClusterStatus
   -> Maybe (HashMap Text MethodSetting)
   -> Maybe POSIX
   -> Maybe CacheClusterSize
   -> Maybe Text
   -> Maybe CanarySettings
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe (HashMap Text Text)
   -> Stage)
-> Parser (Maybe Bool)
-> Parser
     (Maybe POSIX
      -> Maybe CacheClusterStatus
      -> Maybe (HashMap Text MethodSetting)
      -> Maybe POSIX
      -> Maybe CacheClusterSize
      -> Maybe Text
      -> Maybe CanarySettings
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe (HashMap Text Text)
      -> Stage)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Bool)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"tracingEnabled")
            Parser
  (Maybe POSIX
   -> Maybe CacheClusterStatus
   -> Maybe (HashMap Text MethodSetting)
   -> Maybe POSIX
   -> Maybe CacheClusterSize
   -> Maybe Text
   -> Maybe CanarySettings
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe (HashMap Text Text)
   -> Stage)
-> Parser (Maybe POSIX)
-> Parser
     (Maybe CacheClusterStatus
      -> Maybe (HashMap Text MethodSetting)
      -> Maybe POSIX
      -> Maybe CacheClusterSize
      -> Maybe Text
      -> Maybe CanarySettings
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe (HashMap Text Text)
      -> Stage)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe POSIX)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"createdDate")
            Parser
  (Maybe CacheClusterStatus
   -> Maybe (HashMap Text MethodSetting)
   -> Maybe POSIX
   -> Maybe CacheClusterSize
   -> Maybe Text
   -> Maybe CanarySettings
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe (HashMap Text Text)
   -> Stage)
-> Parser (Maybe CacheClusterStatus)
-> Parser
     (Maybe (HashMap Text MethodSetting)
      -> Maybe POSIX
      -> Maybe CacheClusterSize
      -> Maybe Text
      -> Maybe CanarySettings
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe (HashMap Text Text)
      -> Stage)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe CacheClusterStatus)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"cacheClusterStatus")
            Parser
  (Maybe (HashMap Text MethodSetting)
   -> Maybe POSIX
   -> Maybe CacheClusterSize
   -> Maybe Text
   -> Maybe CanarySettings
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe (HashMap Text Text)
   -> Stage)
-> Parser (Maybe (HashMap Text MethodSetting))
-> Parser
     (Maybe POSIX
      -> Maybe CacheClusterSize
      -> Maybe Text
      -> Maybe CanarySettings
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe (HashMap Text Text)
      -> Stage)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object
-> Text -> Parser (Maybe (Maybe (HashMap Text MethodSetting)))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"methodSettings" Parser (Maybe (Maybe (HashMap Text MethodSetting)))
-> Maybe (HashMap Text MethodSetting)
-> Parser (Maybe (HashMap Text MethodSetting))
forall a. Parser (Maybe a) -> a -> Parser a
Core..!= Maybe (HashMap Text MethodSetting)
forall a. Monoid a => a
Prelude.mempty)
            Parser
  (Maybe POSIX
   -> Maybe CacheClusterSize
   -> Maybe Text
   -> Maybe CanarySettings
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe (HashMap Text Text)
   -> Stage)
-> Parser (Maybe POSIX)
-> Parser
     (Maybe CacheClusterSize
      -> Maybe Text
      -> Maybe CanarySettings
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe (HashMap Text Text)
      -> Stage)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe POSIX)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"lastUpdatedDate")
            Parser
  (Maybe CacheClusterSize
   -> Maybe Text
   -> Maybe CanarySettings
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe (HashMap Text Text)
   -> Stage)
-> Parser (Maybe CacheClusterSize)
-> Parser
     (Maybe Text
      -> Maybe CanarySettings
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe (HashMap Text Text)
      -> Stage)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe CacheClusterSize)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"cacheClusterSize")
            Parser
  (Maybe Text
   -> Maybe CanarySettings
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe (HashMap Text Text)
   -> Stage)
-> Parser (Maybe Text)
-> Parser
     (Maybe CanarySettings
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe (HashMap Text Text)
      -> Stage)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"webAclArn")
            Parser
  (Maybe CanarySettings
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe (HashMap Text Text)
   -> Stage)
-> Parser (Maybe CanarySettings)
-> Parser
     (Maybe Bool
      -> Maybe Text -> Maybe Text -> Maybe (HashMap Text Text) -> Stage)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe CanarySettings)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"canarySettings")
            Parser
  (Maybe Bool
   -> Maybe Text -> Maybe Text -> Maybe (HashMap Text Text) -> Stage)
-> Parser (Maybe Bool)
-> Parser
     (Maybe Text -> Maybe Text -> Maybe (HashMap Text Text) -> Stage)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Bool)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"cacheClusterEnabled")
            Parser
  (Maybe Text -> Maybe Text -> Maybe (HashMap Text Text) -> Stage)
-> Parser (Maybe Text)
-> Parser (Maybe Text -> Maybe (HashMap Text Text) -> Stage)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"stageName")
            Parser (Maybe Text -> Maybe (HashMap Text Text) -> Stage)
-> Parser (Maybe Text)
-> Parser (Maybe (HashMap Text Text) -> Stage)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"description")
            Parser (Maybe (HashMap Text Text) -> Stage)
-> Parser (Maybe (HashMap Text Text)) -> Parser Stage
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe (Maybe (HashMap Text Text)))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"tags" Parser (Maybe (Maybe (HashMap Text Text)))
-> Maybe (HashMap Text Text) -> Parser (Maybe (HashMap Text Text))
forall a. Parser (Maybe a) -> a -> Parser a
Core..!= Maybe (HashMap Text Text)
forall a. Monoid a => a
Prelude.mempty)
      )

instance Prelude.Hashable Stage

instance Prelude.NFData Stage