{-# 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.SecurityHub.Types.AwsApiGatewayStageDetails
-- 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.SecurityHub.Types.AwsApiGatewayStageDetails where

import qualified Amazonka.Core as Core
import qualified Amazonka.Lens as Lens
import qualified Amazonka.Prelude as Prelude
import Amazonka.SecurityHub.Types.AwsApiGatewayAccessLogSettings
import Amazonka.SecurityHub.Types.AwsApiGatewayCanarySettings
import Amazonka.SecurityHub.Types.AwsApiGatewayMethodSettings

-- | Provides information about a version 1 Amazon API Gateway stage.
--
-- /See:/ 'newAwsApiGatewayStageDetails' smart constructor.
data AwsApiGatewayStageDetails = AwsApiGatewayStageDetails'
  { -- | The identifier of the deployment that the stage points to.
    AwsApiGatewayStageDetails -> Maybe Text
deploymentId :: Prelude.Maybe Prelude.Text,
    -- | Settings for logging access for the stage.
    AwsApiGatewayStageDetails -> Maybe AwsApiGatewayAccessLogSettings
accessLogSettings :: Prelude.Maybe AwsApiGatewayAccessLogSettings,
    -- | A map that defines the stage variables for the stage.
    --
    -- Variable names can have alphanumeric and underscore characters.
    --
    -- Variable values can contain the following characters:
    --
    -- -   Uppercase and lowercase letters
    --
    -- -   Numbers
    --
    -- -   Special characters -._~:\/?#&=,
    AwsApiGatewayStageDetails -> Maybe (HashMap Text Text)
variables :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
    -- | The version of the API documentation that is associated with the stage.
    AwsApiGatewayStageDetails -> Maybe Text
documentationVersion :: Prelude.Maybe Prelude.Text,
    -- | The identifier of the client certificate for the stage.
    AwsApiGatewayStageDetails -> Maybe Text
clientCertificateId :: Prelude.Maybe Prelude.Text,
    -- | Indicates whether active tracing with X-Ray is enabled for the stage.
    AwsApiGatewayStageDetails -> Maybe Bool
tracingEnabled :: Prelude.Maybe Prelude.Bool,
    -- | Indicates when the stage was created.
    --
    -- Uses the @date-time@ format specified in
    -- <https://tools.ietf.org/html/rfc3339#section-5.6 RFC 3339 section 5.6, Internet Date\/Time Format>.
    -- The value cannot contain spaces. For example,
    -- @2020-03-22T13:22:13.933Z@.
    AwsApiGatewayStageDetails -> Maybe Text
createdDate :: Prelude.Maybe Prelude.Text,
    -- | Defines the method settings for the stage.
    AwsApiGatewayStageDetails -> Maybe [AwsApiGatewayMethodSettings]
methodSettings :: Prelude.Maybe [AwsApiGatewayMethodSettings],
    -- | If a cache cluster is enabled, the status of the cache cluster.
    AwsApiGatewayStageDetails -> Maybe Text
cacheClusterStatus :: Prelude.Maybe Prelude.Text,
    -- | The ARN of the web ACL associated with the stage.
    AwsApiGatewayStageDetails -> Maybe Text
webAclArn :: Prelude.Maybe Prelude.Text,
    -- | The name of the stage.
    AwsApiGatewayStageDetails -> Maybe Text
stageName :: Prelude.Maybe Prelude.Text,
    -- | Indicates whether a cache cluster is enabled for the stage.
    AwsApiGatewayStageDetails -> Maybe Bool
cacheClusterEnabled :: Prelude.Maybe Prelude.Bool,
    -- | If a cache cluster is enabled, the size of the cache cluster.
    AwsApiGatewayStageDetails -> Maybe Text
cacheClusterSize :: Prelude.Maybe Prelude.Text,
    -- | Indicates when the stage was most recently updated.
    --
    -- Uses the @date-time@ format specified in
    -- <https://tools.ietf.org/html/rfc3339#section-5.6 RFC 3339 section 5.6, Internet Date\/Time Format>.
    -- The value cannot contain spaces. For example,
    -- @2020-03-22T13:22:13.933Z@.
    AwsApiGatewayStageDetails -> Maybe Text
lastUpdatedDate :: Prelude.Maybe Prelude.Text,
    -- | Information about settings for canary deployment in the stage.
    AwsApiGatewayStageDetails -> Maybe AwsApiGatewayCanarySettings
canarySettings :: Prelude.Maybe AwsApiGatewayCanarySettings,
    -- | A description of the stage.
    AwsApiGatewayStageDetails -> Maybe Text
description :: Prelude.Maybe Prelude.Text
  }
  deriving (AwsApiGatewayStageDetails -> AwsApiGatewayStageDetails -> Bool
(AwsApiGatewayStageDetails -> AwsApiGatewayStageDetails -> Bool)
-> (AwsApiGatewayStageDetails -> AwsApiGatewayStageDetails -> Bool)
-> Eq AwsApiGatewayStageDetails
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: AwsApiGatewayStageDetails -> AwsApiGatewayStageDetails -> Bool
$c/= :: AwsApiGatewayStageDetails -> AwsApiGatewayStageDetails -> Bool
== :: AwsApiGatewayStageDetails -> AwsApiGatewayStageDetails -> Bool
$c== :: AwsApiGatewayStageDetails -> AwsApiGatewayStageDetails -> Bool
Prelude.Eq, ReadPrec [AwsApiGatewayStageDetails]
ReadPrec AwsApiGatewayStageDetails
Int -> ReadS AwsApiGatewayStageDetails
ReadS [AwsApiGatewayStageDetails]
(Int -> ReadS AwsApiGatewayStageDetails)
-> ReadS [AwsApiGatewayStageDetails]
-> ReadPrec AwsApiGatewayStageDetails
-> ReadPrec [AwsApiGatewayStageDetails]
-> Read AwsApiGatewayStageDetails
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [AwsApiGatewayStageDetails]
$creadListPrec :: ReadPrec [AwsApiGatewayStageDetails]
readPrec :: ReadPrec AwsApiGatewayStageDetails
$creadPrec :: ReadPrec AwsApiGatewayStageDetails
readList :: ReadS [AwsApiGatewayStageDetails]
$creadList :: ReadS [AwsApiGatewayStageDetails]
readsPrec :: Int -> ReadS AwsApiGatewayStageDetails
$creadsPrec :: Int -> ReadS AwsApiGatewayStageDetails
Prelude.Read, Int -> AwsApiGatewayStageDetails -> ShowS
[AwsApiGatewayStageDetails] -> ShowS
AwsApiGatewayStageDetails -> String
(Int -> AwsApiGatewayStageDetails -> ShowS)
-> (AwsApiGatewayStageDetails -> String)
-> ([AwsApiGatewayStageDetails] -> ShowS)
-> Show AwsApiGatewayStageDetails
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [AwsApiGatewayStageDetails] -> ShowS
$cshowList :: [AwsApiGatewayStageDetails] -> ShowS
show :: AwsApiGatewayStageDetails -> String
$cshow :: AwsApiGatewayStageDetails -> String
showsPrec :: Int -> AwsApiGatewayStageDetails -> ShowS
$cshowsPrec :: Int -> AwsApiGatewayStageDetails -> ShowS
Prelude.Show, (forall x.
 AwsApiGatewayStageDetails -> Rep AwsApiGatewayStageDetails x)
-> (forall x.
    Rep AwsApiGatewayStageDetails x -> AwsApiGatewayStageDetails)
-> Generic AwsApiGatewayStageDetails
forall x.
Rep AwsApiGatewayStageDetails x -> AwsApiGatewayStageDetails
forall x.
AwsApiGatewayStageDetails -> Rep AwsApiGatewayStageDetails x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep AwsApiGatewayStageDetails x -> AwsApiGatewayStageDetails
$cfrom :: forall x.
AwsApiGatewayStageDetails -> Rep AwsApiGatewayStageDetails x
Prelude.Generic)

-- |
-- Create a value of 'AwsApiGatewayStageDetails' 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', 'awsApiGatewayStageDetails_deploymentId' - The identifier of the deployment that the stage points to.
--
-- 'accessLogSettings', 'awsApiGatewayStageDetails_accessLogSettings' - Settings for logging access for the stage.
--
-- 'variables', 'awsApiGatewayStageDetails_variables' - A map that defines the stage variables for the stage.
--
-- Variable names can have alphanumeric and underscore characters.
--
-- Variable values can contain the following characters:
--
-- -   Uppercase and lowercase letters
--
-- -   Numbers
--
-- -   Special characters -._~:\/?#&=,
--
-- 'documentationVersion', 'awsApiGatewayStageDetails_documentationVersion' - The version of the API documentation that is associated with the stage.
--
-- 'clientCertificateId', 'awsApiGatewayStageDetails_clientCertificateId' - The identifier of the client certificate for the stage.
--
-- 'tracingEnabled', 'awsApiGatewayStageDetails_tracingEnabled' - Indicates whether active tracing with X-Ray is enabled for the stage.
--
-- 'createdDate', 'awsApiGatewayStageDetails_createdDate' - Indicates when the stage was created.
--
-- Uses the @date-time@ format specified in
-- <https://tools.ietf.org/html/rfc3339#section-5.6 RFC 3339 section 5.6, Internet Date\/Time Format>.
-- The value cannot contain spaces. For example,
-- @2020-03-22T13:22:13.933Z@.
--
-- 'methodSettings', 'awsApiGatewayStageDetails_methodSettings' - Defines the method settings for the stage.
--
-- 'cacheClusterStatus', 'awsApiGatewayStageDetails_cacheClusterStatus' - If a cache cluster is enabled, the status of the cache cluster.
--
-- 'webAclArn', 'awsApiGatewayStageDetails_webAclArn' - The ARN of the web ACL associated with the stage.
--
-- 'stageName', 'awsApiGatewayStageDetails_stageName' - The name of the stage.
--
-- 'cacheClusterEnabled', 'awsApiGatewayStageDetails_cacheClusterEnabled' - Indicates whether a cache cluster is enabled for the stage.
--
-- 'cacheClusterSize', 'awsApiGatewayStageDetails_cacheClusterSize' - If a cache cluster is enabled, the size of the cache cluster.
--
-- 'lastUpdatedDate', 'awsApiGatewayStageDetails_lastUpdatedDate' - Indicates when the stage was most recently updated.
--
-- Uses the @date-time@ format specified in
-- <https://tools.ietf.org/html/rfc3339#section-5.6 RFC 3339 section 5.6, Internet Date\/Time Format>.
-- The value cannot contain spaces. For example,
-- @2020-03-22T13:22:13.933Z@.
--
-- 'canarySettings', 'awsApiGatewayStageDetails_canarySettings' - Information about settings for canary deployment in the stage.
--
-- 'description', 'awsApiGatewayStageDetails_description' - A description of the stage.
newAwsApiGatewayStageDetails ::
  AwsApiGatewayStageDetails
newAwsApiGatewayStageDetails :: AwsApiGatewayStageDetails
newAwsApiGatewayStageDetails =
  AwsApiGatewayStageDetails' :: Maybe Text
-> Maybe AwsApiGatewayAccessLogSettings
-> Maybe (HashMap Text Text)
-> Maybe Text
-> Maybe Text
-> Maybe Bool
-> Maybe Text
-> Maybe [AwsApiGatewayMethodSettings]
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Bool
-> Maybe Text
-> Maybe Text
-> Maybe AwsApiGatewayCanarySettings
-> Maybe Text
-> AwsApiGatewayStageDetails
AwsApiGatewayStageDetails'
    { $sel:deploymentId:AwsApiGatewayStageDetails' :: Maybe Text
deploymentId =
        Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:accessLogSettings:AwsApiGatewayStageDetails' :: Maybe AwsApiGatewayAccessLogSettings
accessLogSettings = Maybe AwsApiGatewayAccessLogSettings
forall a. Maybe a
Prelude.Nothing,
      $sel:variables:AwsApiGatewayStageDetails' :: Maybe (HashMap Text Text)
variables = Maybe (HashMap Text Text)
forall a. Maybe a
Prelude.Nothing,
      $sel:documentationVersion:AwsApiGatewayStageDetails' :: Maybe Text
documentationVersion = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:clientCertificateId:AwsApiGatewayStageDetails' :: Maybe Text
clientCertificateId = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:tracingEnabled:AwsApiGatewayStageDetails' :: Maybe Bool
tracingEnabled = Maybe Bool
forall a. Maybe a
Prelude.Nothing,
      $sel:createdDate:AwsApiGatewayStageDetails' :: Maybe Text
createdDate = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:methodSettings:AwsApiGatewayStageDetails' :: Maybe [AwsApiGatewayMethodSettings]
methodSettings = Maybe [AwsApiGatewayMethodSettings]
forall a. Maybe a
Prelude.Nothing,
      $sel:cacheClusterStatus:AwsApiGatewayStageDetails' :: Maybe Text
cacheClusterStatus = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:webAclArn:AwsApiGatewayStageDetails' :: Maybe Text
webAclArn = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:stageName:AwsApiGatewayStageDetails' :: Maybe Text
stageName = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:cacheClusterEnabled:AwsApiGatewayStageDetails' :: Maybe Bool
cacheClusterEnabled = Maybe Bool
forall a. Maybe a
Prelude.Nothing,
      $sel:cacheClusterSize:AwsApiGatewayStageDetails' :: Maybe Text
cacheClusterSize = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:lastUpdatedDate:AwsApiGatewayStageDetails' :: Maybe Text
lastUpdatedDate = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:canarySettings:AwsApiGatewayStageDetails' :: Maybe AwsApiGatewayCanarySettings
canarySettings = Maybe AwsApiGatewayCanarySettings
forall a. Maybe a
Prelude.Nothing,
      $sel:description:AwsApiGatewayStageDetails' :: Maybe Text
description = Maybe Text
forall a. Maybe a
Prelude.Nothing
    }

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

-- | Settings for logging access for the stage.
awsApiGatewayStageDetails_accessLogSettings :: Lens.Lens' AwsApiGatewayStageDetails (Prelude.Maybe AwsApiGatewayAccessLogSettings)
awsApiGatewayStageDetails_accessLogSettings :: (Maybe AwsApiGatewayAccessLogSettings
 -> f (Maybe AwsApiGatewayAccessLogSettings))
-> AwsApiGatewayStageDetails -> f AwsApiGatewayStageDetails
awsApiGatewayStageDetails_accessLogSettings = (AwsApiGatewayStageDetails -> Maybe AwsApiGatewayAccessLogSettings)
-> (AwsApiGatewayStageDetails
    -> Maybe AwsApiGatewayAccessLogSettings
    -> AwsApiGatewayStageDetails)
-> Lens
     AwsApiGatewayStageDetails
     AwsApiGatewayStageDetails
     (Maybe AwsApiGatewayAccessLogSettings)
     (Maybe AwsApiGatewayAccessLogSettings)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AwsApiGatewayStageDetails' {Maybe AwsApiGatewayAccessLogSettings
accessLogSettings :: Maybe AwsApiGatewayAccessLogSettings
$sel:accessLogSettings:AwsApiGatewayStageDetails' :: AwsApiGatewayStageDetails -> Maybe AwsApiGatewayAccessLogSettings
accessLogSettings} -> Maybe AwsApiGatewayAccessLogSettings
accessLogSettings) (\s :: AwsApiGatewayStageDetails
s@AwsApiGatewayStageDetails' {} Maybe AwsApiGatewayAccessLogSettings
a -> AwsApiGatewayStageDetails
s {$sel:accessLogSettings:AwsApiGatewayStageDetails' :: Maybe AwsApiGatewayAccessLogSettings
accessLogSettings = Maybe AwsApiGatewayAccessLogSettings
a} :: AwsApiGatewayStageDetails)

-- | A map that defines the stage variables for the stage.
--
-- Variable names can have alphanumeric and underscore characters.
--
-- Variable values can contain the following characters:
--
-- -   Uppercase and lowercase letters
--
-- -   Numbers
--
-- -   Special characters -._~:\/?#&=,
awsApiGatewayStageDetails_variables :: Lens.Lens' AwsApiGatewayStageDetails (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
awsApiGatewayStageDetails_variables :: (Maybe (HashMap Text Text) -> f (Maybe (HashMap Text Text)))
-> AwsApiGatewayStageDetails -> f AwsApiGatewayStageDetails
awsApiGatewayStageDetails_variables = (AwsApiGatewayStageDetails -> Maybe (HashMap Text Text))
-> (AwsApiGatewayStageDetails
    -> Maybe (HashMap Text Text) -> AwsApiGatewayStageDetails)
-> Lens
     AwsApiGatewayStageDetails
     AwsApiGatewayStageDetails
     (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 (\AwsApiGatewayStageDetails' {Maybe (HashMap Text Text)
variables :: Maybe (HashMap Text Text)
$sel:variables:AwsApiGatewayStageDetails' :: AwsApiGatewayStageDetails -> Maybe (HashMap Text Text)
variables} -> Maybe (HashMap Text Text)
variables) (\s :: AwsApiGatewayStageDetails
s@AwsApiGatewayStageDetails' {} Maybe (HashMap Text Text)
a -> AwsApiGatewayStageDetails
s {$sel:variables:AwsApiGatewayStageDetails' :: Maybe (HashMap Text Text)
variables = Maybe (HashMap Text Text)
a} :: AwsApiGatewayStageDetails) ((Maybe (HashMap Text Text) -> f (Maybe (HashMap Text Text)))
 -> AwsApiGatewayStageDetails -> f AwsApiGatewayStageDetails)
-> ((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)))
-> AwsApiGatewayStageDetails
-> f AwsApiGatewayStageDetails
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

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

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

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

-- | Indicates when the stage was created.
--
-- Uses the @date-time@ format specified in
-- <https://tools.ietf.org/html/rfc3339#section-5.6 RFC 3339 section 5.6, Internet Date\/Time Format>.
-- The value cannot contain spaces. For example,
-- @2020-03-22T13:22:13.933Z@.
awsApiGatewayStageDetails_createdDate :: Lens.Lens' AwsApiGatewayStageDetails (Prelude.Maybe Prelude.Text)
awsApiGatewayStageDetails_createdDate :: (Maybe Text -> f (Maybe Text))
-> AwsApiGatewayStageDetails -> f AwsApiGatewayStageDetails
awsApiGatewayStageDetails_createdDate = (AwsApiGatewayStageDetails -> Maybe Text)
-> (AwsApiGatewayStageDetails
    -> Maybe Text -> AwsApiGatewayStageDetails)
-> Lens
     AwsApiGatewayStageDetails
     AwsApiGatewayStageDetails
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AwsApiGatewayStageDetails' {Maybe Text
createdDate :: Maybe Text
$sel:createdDate:AwsApiGatewayStageDetails' :: AwsApiGatewayStageDetails -> Maybe Text
createdDate} -> Maybe Text
createdDate) (\s :: AwsApiGatewayStageDetails
s@AwsApiGatewayStageDetails' {} Maybe Text
a -> AwsApiGatewayStageDetails
s {$sel:createdDate:AwsApiGatewayStageDetails' :: Maybe Text
createdDate = Maybe Text
a} :: AwsApiGatewayStageDetails)

-- | Defines the method settings for the stage.
awsApiGatewayStageDetails_methodSettings :: Lens.Lens' AwsApiGatewayStageDetails (Prelude.Maybe [AwsApiGatewayMethodSettings])
awsApiGatewayStageDetails_methodSettings :: (Maybe [AwsApiGatewayMethodSettings]
 -> f (Maybe [AwsApiGatewayMethodSettings]))
-> AwsApiGatewayStageDetails -> f AwsApiGatewayStageDetails
awsApiGatewayStageDetails_methodSettings = (AwsApiGatewayStageDetails -> Maybe [AwsApiGatewayMethodSettings])
-> (AwsApiGatewayStageDetails
    -> Maybe [AwsApiGatewayMethodSettings]
    -> AwsApiGatewayStageDetails)
-> Lens
     AwsApiGatewayStageDetails
     AwsApiGatewayStageDetails
     (Maybe [AwsApiGatewayMethodSettings])
     (Maybe [AwsApiGatewayMethodSettings])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AwsApiGatewayStageDetails' {Maybe [AwsApiGatewayMethodSettings]
methodSettings :: Maybe [AwsApiGatewayMethodSettings]
$sel:methodSettings:AwsApiGatewayStageDetails' :: AwsApiGatewayStageDetails -> Maybe [AwsApiGatewayMethodSettings]
methodSettings} -> Maybe [AwsApiGatewayMethodSettings]
methodSettings) (\s :: AwsApiGatewayStageDetails
s@AwsApiGatewayStageDetails' {} Maybe [AwsApiGatewayMethodSettings]
a -> AwsApiGatewayStageDetails
s {$sel:methodSettings:AwsApiGatewayStageDetails' :: Maybe [AwsApiGatewayMethodSettings]
methodSettings = Maybe [AwsApiGatewayMethodSettings]
a} :: AwsApiGatewayStageDetails) ((Maybe [AwsApiGatewayMethodSettings]
  -> f (Maybe [AwsApiGatewayMethodSettings]))
 -> AwsApiGatewayStageDetails -> f AwsApiGatewayStageDetails)
-> ((Maybe [AwsApiGatewayMethodSettings]
     -> f (Maybe [AwsApiGatewayMethodSettings]))
    -> Maybe [AwsApiGatewayMethodSettings]
    -> f (Maybe [AwsApiGatewayMethodSettings]))
-> (Maybe [AwsApiGatewayMethodSettings]
    -> f (Maybe [AwsApiGatewayMethodSettings]))
-> AwsApiGatewayStageDetails
-> f AwsApiGatewayStageDetails
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso
  [AwsApiGatewayMethodSettings]
  [AwsApiGatewayMethodSettings]
  [AwsApiGatewayMethodSettings]
  [AwsApiGatewayMethodSettings]
-> Iso
     (Maybe [AwsApiGatewayMethodSettings])
     (Maybe [AwsApiGatewayMethodSettings])
     (Maybe [AwsApiGatewayMethodSettings])
     (Maybe [AwsApiGatewayMethodSettings])
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
  [AwsApiGatewayMethodSettings]
  [AwsApiGatewayMethodSettings]
  [AwsApiGatewayMethodSettings]
  [AwsApiGatewayMethodSettings]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | If a cache cluster is enabled, the status of the cache cluster.
awsApiGatewayStageDetails_cacheClusterStatus :: Lens.Lens' AwsApiGatewayStageDetails (Prelude.Maybe Prelude.Text)
awsApiGatewayStageDetails_cacheClusterStatus :: (Maybe Text -> f (Maybe Text))
-> AwsApiGatewayStageDetails -> f AwsApiGatewayStageDetails
awsApiGatewayStageDetails_cacheClusterStatus = (AwsApiGatewayStageDetails -> Maybe Text)
-> (AwsApiGatewayStageDetails
    -> Maybe Text -> AwsApiGatewayStageDetails)
-> Lens
     AwsApiGatewayStageDetails
     AwsApiGatewayStageDetails
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AwsApiGatewayStageDetails' {Maybe Text
cacheClusterStatus :: Maybe Text
$sel:cacheClusterStatus:AwsApiGatewayStageDetails' :: AwsApiGatewayStageDetails -> Maybe Text
cacheClusterStatus} -> Maybe Text
cacheClusterStatus) (\s :: AwsApiGatewayStageDetails
s@AwsApiGatewayStageDetails' {} Maybe Text
a -> AwsApiGatewayStageDetails
s {$sel:cacheClusterStatus:AwsApiGatewayStageDetails' :: Maybe Text
cacheClusterStatus = Maybe Text
a} :: AwsApiGatewayStageDetails)

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

-- | The name of the stage.
awsApiGatewayStageDetails_stageName :: Lens.Lens' AwsApiGatewayStageDetails (Prelude.Maybe Prelude.Text)
awsApiGatewayStageDetails_stageName :: (Maybe Text -> f (Maybe Text))
-> AwsApiGatewayStageDetails -> f AwsApiGatewayStageDetails
awsApiGatewayStageDetails_stageName = (AwsApiGatewayStageDetails -> Maybe Text)
-> (AwsApiGatewayStageDetails
    -> Maybe Text -> AwsApiGatewayStageDetails)
-> Lens
     AwsApiGatewayStageDetails
     AwsApiGatewayStageDetails
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AwsApiGatewayStageDetails' {Maybe Text
stageName :: Maybe Text
$sel:stageName:AwsApiGatewayStageDetails' :: AwsApiGatewayStageDetails -> Maybe Text
stageName} -> Maybe Text
stageName) (\s :: AwsApiGatewayStageDetails
s@AwsApiGatewayStageDetails' {} Maybe Text
a -> AwsApiGatewayStageDetails
s {$sel:stageName:AwsApiGatewayStageDetails' :: Maybe Text
stageName = Maybe Text
a} :: AwsApiGatewayStageDetails)

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

-- | If a cache cluster is enabled, the size of the cache cluster.
awsApiGatewayStageDetails_cacheClusterSize :: Lens.Lens' AwsApiGatewayStageDetails (Prelude.Maybe Prelude.Text)
awsApiGatewayStageDetails_cacheClusterSize :: (Maybe Text -> f (Maybe Text))
-> AwsApiGatewayStageDetails -> f AwsApiGatewayStageDetails
awsApiGatewayStageDetails_cacheClusterSize = (AwsApiGatewayStageDetails -> Maybe Text)
-> (AwsApiGatewayStageDetails
    -> Maybe Text -> AwsApiGatewayStageDetails)
-> Lens
     AwsApiGatewayStageDetails
     AwsApiGatewayStageDetails
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AwsApiGatewayStageDetails' {Maybe Text
cacheClusterSize :: Maybe Text
$sel:cacheClusterSize:AwsApiGatewayStageDetails' :: AwsApiGatewayStageDetails -> Maybe Text
cacheClusterSize} -> Maybe Text
cacheClusterSize) (\s :: AwsApiGatewayStageDetails
s@AwsApiGatewayStageDetails' {} Maybe Text
a -> AwsApiGatewayStageDetails
s {$sel:cacheClusterSize:AwsApiGatewayStageDetails' :: Maybe Text
cacheClusterSize = Maybe Text
a} :: AwsApiGatewayStageDetails)

-- | Indicates when the stage was most recently updated.
--
-- Uses the @date-time@ format specified in
-- <https://tools.ietf.org/html/rfc3339#section-5.6 RFC 3339 section 5.6, Internet Date\/Time Format>.
-- The value cannot contain spaces. For example,
-- @2020-03-22T13:22:13.933Z@.
awsApiGatewayStageDetails_lastUpdatedDate :: Lens.Lens' AwsApiGatewayStageDetails (Prelude.Maybe Prelude.Text)
awsApiGatewayStageDetails_lastUpdatedDate :: (Maybe Text -> f (Maybe Text))
-> AwsApiGatewayStageDetails -> f AwsApiGatewayStageDetails
awsApiGatewayStageDetails_lastUpdatedDate = (AwsApiGatewayStageDetails -> Maybe Text)
-> (AwsApiGatewayStageDetails
    -> Maybe Text -> AwsApiGatewayStageDetails)
-> Lens
     AwsApiGatewayStageDetails
     AwsApiGatewayStageDetails
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AwsApiGatewayStageDetails' {Maybe Text
lastUpdatedDate :: Maybe Text
$sel:lastUpdatedDate:AwsApiGatewayStageDetails' :: AwsApiGatewayStageDetails -> Maybe Text
lastUpdatedDate} -> Maybe Text
lastUpdatedDate) (\s :: AwsApiGatewayStageDetails
s@AwsApiGatewayStageDetails' {} Maybe Text
a -> AwsApiGatewayStageDetails
s {$sel:lastUpdatedDate:AwsApiGatewayStageDetails' :: Maybe Text
lastUpdatedDate = Maybe Text
a} :: AwsApiGatewayStageDetails)

-- | Information about settings for canary deployment in the stage.
awsApiGatewayStageDetails_canarySettings :: Lens.Lens' AwsApiGatewayStageDetails (Prelude.Maybe AwsApiGatewayCanarySettings)
awsApiGatewayStageDetails_canarySettings :: (Maybe AwsApiGatewayCanarySettings
 -> f (Maybe AwsApiGatewayCanarySettings))
-> AwsApiGatewayStageDetails -> f AwsApiGatewayStageDetails
awsApiGatewayStageDetails_canarySettings = (AwsApiGatewayStageDetails -> Maybe AwsApiGatewayCanarySettings)
-> (AwsApiGatewayStageDetails
    -> Maybe AwsApiGatewayCanarySettings -> AwsApiGatewayStageDetails)
-> Lens
     AwsApiGatewayStageDetails
     AwsApiGatewayStageDetails
     (Maybe AwsApiGatewayCanarySettings)
     (Maybe AwsApiGatewayCanarySettings)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AwsApiGatewayStageDetails' {Maybe AwsApiGatewayCanarySettings
canarySettings :: Maybe AwsApiGatewayCanarySettings
$sel:canarySettings:AwsApiGatewayStageDetails' :: AwsApiGatewayStageDetails -> Maybe AwsApiGatewayCanarySettings
canarySettings} -> Maybe AwsApiGatewayCanarySettings
canarySettings) (\s :: AwsApiGatewayStageDetails
s@AwsApiGatewayStageDetails' {} Maybe AwsApiGatewayCanarySettings
a -> AwsApiGatewayStageDetails
s {$sel:canarySettings:AwsApiGatewayStageDetails' :: Maybe AwsApiGatewayCanarySettings
canarySettings = Maybe AwsApiGatewayCanarySettings
a} :: AwsApiGatewayStageDetails)

-- | A description of the stage.
awsApiGatewayStageDetails_description :: Lens.Lens' AwsApiGatewayStageDetails (Prelude.Maybe Prelude.Text)
awsApiGatewayStageDetails_description :: (Maybe Text -> f (Maybe Text))
-> AwsApiGatewayStageDetails -> f AwsApiGatewayStageDetails
awsApiGatewayStageDetails_description = (AwsApiGatewayStageDetails -> Maybe Text)
-> (AwsApiGatewayStageDetails
    -> Maybe Text -> AwsApiGatewayStageDetails)
-> Lens
     AwsApiGatewayStageDetails
     AwsApiGatewayStageDetails
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AwsApiGatewayStageDetails' {Maybe Text
description :: Maybe Text
$sel:description:AwsApiGatewayStageDetails' :: AwsApiGatewayStageDetails -> Maybe Text
description} -> Maybe Text
description) (\s :: AwsApiGatewayStageDetails
s@AwsApiGatewayStageDetails' {} Maybe Text
a -> AwsApiGatewayStageDetails
s {$sel:description:AwsApiGatewayStageDetails' :: Maybe Text
description = Maybe Text
a} :: AwsApiGatewayStageDetails)

instance Core.FromJSON AwsApiGatewayStageDetails where
  parseJSON :: Value -> Parser AwsApiGatewayStageDetails
parseJSON =
    String
-> (Object -> Parser AwsApiGatewayStageDetails)
-> Value
-> Parser AwsApiGatewayStageDetails
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Core.withObject
      String
"AwsApiGatewayStageDetails"
      ( \Object
x ->
          Maybe Text
-> Maybe AwsApiGatewayAccessLogSettings
-> Maybe (HashMap Text Text)
-> Maybe Text
-> Maybe Text
-> Maybe Bool
-> Maybe Text
-> Maybe [AwsApiGatewayMethodSettings]
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Bool
-> Maybe Text
-> Maybe Text
-> Maybe AwsApiGatewayCanarySettings
-> Maybe Text
-> AwsApiGatewayStageDetails
AwsApiGatewayStageDetails'
            (Maybe Text
 -> Maybe AwsApiGatewayAccessLogSettings
 -> Maybe (HashMap Text Text)
 -> Maybe Text
 -> Maybe Text
 -> Maybe Bool
 -> Maybe Text
 -> Maybe [AwsApiGatewayMethodSettings]
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe Bool
 -> Maybe Text
 -> Maybe Text
 -> Maybe AwsApiGatewayCanarySettings
 -> Maybe Text
 -> AwsApiGatewayStageDetails)
-> Parser (Maybe Text)
-> Parser
     (Maybe AwsApiGatewayAccessLogSettings
      -> Maybe (HashMap Text Text)
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe [AwsApiGatewayMethodSettings]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe AwsApiGatewayCanarySettings
      -> Maybe Text
      -> AwsApiGatewayStageDetails)
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 AwsApiGatewayAccessLogSettings
   -> Maybe (HashMap Text Text)
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe [AwsApiGatewayMethodSettings]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe AwsApiGatewayCanarySettings
   -> Maybe Text
   -> AwsApiGatewayStageDetails)
-> Parser (Maybe AwsApiGatewayAccessLogSettings)
-> Parser
     (Maybe (HashMap Text Text)
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe [AwsApiGatewayMethodSettings]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe AwsApiGatewayCanarySettings
      -> Maybe Text
      -> AwsApiGatewayStageDetails)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe AwsApiGatewayAccessLogSettings)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"AccessLogSettings")
            Parser
  (Maybe (HashMap Text Text)
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe [AwsApiGatewayMethodSettings]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe AwsApiGatewayCanarySettings
   -> Maybe Text
   -> AwsApiGatewayStageDetails)
-> Parser (Maybe (HashMap Text Text))
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe [AwsApiGatewayMethodSettings]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe AwsApiGatewayCanarySettings
      -> Maybe Text
      -> AwsApiGatewayStageDetails)
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 Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe [AwsApiGatewayMethodSettings]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe AwsApiGatewayCanarySettings
   -> Maybe Text
   -> AwsApiGatewayStageDetails)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe [AwsApiGatewayMethodSettings]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe AwsApiGatewayCanarySettings
      -> Maybe Text
      -> AwsApiGatewayStageDetails)
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 Text
   -> Maybe [AwsApiGatewayMethodSettings]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe AwsApiGatewayCanarySettings
   -> Maybe Text
   -> AwsApiGatewayStageDetails)
-> Parser (Maybe Text)
-> Parser
     (Maybe Bool
      -> Maybe Text
      -> Maybe [AwsApiGatewayMethodSettings]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe AwsApiGatewayCanarySettings
      -> Maybe Text
      -> AwsApiGatewayStageDetails)
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 Text
   -> Maybe [AwsApiGatewayMethodSettings]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe AwsApiGatewayCanarySettings
   -> Maybe Text
   -> AwsApiGatewayStageDetails)
-> Parser (Maybe Bool)
-> Parser
     (Maybe Text
      -> Maybe [AwsApiGatewayMethodSettings]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe AwsApiGatewayCanarySettings
      -> Maybe Text
      -> AwsApiGatewayStageDetails)
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 Text
   -> Maybe [AwsApiGatewayMethodSettings]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe AwsApiGatewayCanarySettings
   -> Maybe Text
   -> AwsApiGatewayStageDetails)
-> Parser (Maybe Text)
-> Parser
     (Maybe [AwsApiGatewayMethodSettings]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe AwsApiGatewayCanarySettings
      -> Maybe Text
      -> AwsApiGatewayStageDetails)
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
"CreatedDate")
            Parser
  (Maybe [AwsApiGatewayMethodSettings]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe AwsApiGatewayCanarySettings
   -> Maybe Text
   -> AwsApiGatewayStageDetails)
-> Parser (Maybe [AwsApiGatewayMethodSettings])
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe AwsApiGatewayCanarySettings
      -> Maybe Text
      -> AwsApiGatewayStageDetails)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object
-> Text -> Parser (Maybe (Maybe [AwsApiGatewayMethodSettings]))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"MethodSettings" Parser (Maybe (Maybe [AwsApiGatewayMethodSettings]))
-> Maybe [AwsApiGatewayMethodSettings]
-> Parser (Maybe [AwsApiGatewayMethodSettings])
forall a. Parser (Maybe a) -> a -> Parser a
Core..!= Maybe [AwsApiGatewayMethodSettings]
forall a. Monoid a => a
Prelude.mempty)
            Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe AwsApiGatewayCanarySettings
   -> Maybe Text
   -> AwsApiGatewayStageDetails)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe AwsApiGatewayCanarySettings
      -> Maybe Text
      -> AwsApiGatewayStageDetails)
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
"CacheClusterStatus")
            Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe AwsApiGatewayCanarySettings
   -> Maybe Text
   -> AwsApiGatewayStageDetails)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe AwsApiGatewayCanarySettings
      -> Maybe Text
      -> AwsApiGatewayStageDetails)
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 Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe AwsApiGatewayCanarySettings
   -> Maybe Text
   -> AwsApiGatewayStageDetails)
-> Parser (Maybe Text)
-> Parser
     (Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe AwsApiGatewayCanarySettings
      -> Maybe Text
      -> AwsApiGatewayStageDetails)
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 Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe AwsApiGatewayCanarySettings
   -> Maybe Text
   -> AwsApiGatewayStageDetails)
-> Parser (Maybe Bool)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe AwsApiGatewayCanarySettings
      -> Maybe Text
      -> AwsApiGatewayStageDetails)
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 AwsApiGatewayCanarySettings
   -> Maybe Text
   -> AwsApiGatewayStageDetails)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe AwsApiGatewayCanarySettings
      -> Maybe Text
      -> AwsApiGatewayStageDetails)
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
"CacheClusterSize")
            Parser
  (Maybe Text
   -> Maybe AwsApiGatewayCanarySettings
   -> Maybe Text
   -> AwsApiGatewayStageDetails)
-> Parser (Maybe Text)
-> Parser
     (Maybe AwsApiGatewayCanarySettings
      -> Maybe Text -> AwsApiGatewayStageDetails)
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
"LastUpdatedDate")
            Parser
  (Maybe AwsApiGatewayCanarySettings
   -> Maybe Text -> AwsApiGatewayStageDetails)
-> Parser (Maybe AwsApiGatewayCanarySettings)
-> Parser (Maybe Text -> AwsApiGatewayStageDetails)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe AwsApiGatewayCanarySettings)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"CanarySettings")
            Parser (Maybe Text -> AwsApiGatewayStageDetails)
-> Parser (Maybe Text) -> Parser AwsApiGatewayStageDetails
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")
      )

instance Prelude.Hashable AwsApiGatewayStageDetails

instance Prelude.NFData AwsApiGatewayStageDetails

instance Core.ToJSON AwsApiGatewayStageDetails where
  toJSON :: AwsApiGatewayStageDetails -> Value
toJSON AwsApiGatewayStageDetails' {Maybe Bool
Maybe [AwsApiGatewayMethodSettings]
Maybe Text
Maybe (HashMap Text Text)
Maybe AwsApiGatewayAccessLogSettings
Maybe AwsApiGatewayCanarySettings
description :: Maybe Text
canarySettings :: Maybe AwsApiGatewayCanarySettings
lastUpdatedDate :: Maybe Text
cacheClusterSize :: Maybe Text
cacheClusterEnabled :: Maybe Bool
stageName :: Maybe Text
webAclArn :: Maybe Text
cacheClusterStatus :: Maybe Text
methodSettings :: Maybe [AwsApiGatewayMethodSettings]
createdDate :: Maybe Text
tracingEnabled :: Maybe Bool
clientCertificateId :: Maybe Text
documentationVersion :: Maybe Text
variables :: Maybe (HashMap Text Text)
accessLogSettings :: Maybe AwsApiGatewayAccessLogSettings
deploymentId :: Maybe Text
$sel:description:AwsApiGatewayStageDetails' :: AwsApiGatewayStageDetails -> Maybe Text
$sel:canarySettings:AwsApiGatewayStageDetails' :: AwsApiGatewayStageDetails -> Maybe AwsApiGatewayCanarySettings
$sel:lastUpdatedDate:AwsApiGatewayStageDetails' :: AwsApiGatewayStageDetails -> Maybe Text
$sel:cacheClusterSize:AwsApiGatewayStageDetails' :: AwsApiGatewayStageDetails -> Maybe Text
$sel:cacheClusterEnabled:AwsApiGatewayStageDetails' :: AwsApiGatewayStageDetails -> Maybe Bool
$sel:stageName:AwsApiGatewayStageDetails' :: AwsApiGatewayStageDetails -> Maybe Text
$sel:webAclArn:AwsApiGatewayStageDetails' :: AwsApiGatewayStageDetails -> Maybe Text
$sel:cacheClusterStatus:AwsApiGatewayStageDetails' :: AwsApiGatewayStageDetails -> Maybe Text
$sel:methodSettings:AwsApiGatewayStageDetails' :: AwsApiGatewayStageDetails -> Maybe [AwsApiGatewayMethodSettings]
$sel:createdDate:AwsApiGatewayStageDetails' :: AwsApiGatewayStageDetails -> Maybe Text
$sel:tracingEnabled:AwsApiGatewayStageDetails' :: AwsApiGatewayStageDetails -> Maybe Bool
$sel:clientCertificateId:AwsApiGatewayStageDetails' :: AwsApiGatewayStageDetails -> Maybe Text
$sel:documentationVersion:AwsApiGatewayStageDetails' :: AwsApiGatewayStageDetails -> Maybe Text
$sel:variables:AwsApiGatewayStageDetails' :: AwsApiGatewayStageDetails -> Maybe (HashMap Text Text)
$sel:accessLogSettings:AwsApiGatewayStageDetails' :: AwsApiGatewayStageDetails -> Maybe AwsApiGatewayAccessLogSettings
$sel:deploymentId:AwsApiGatewayStageDetails' :: AwsApiGatewayStageDetails -> Maybe Text
..} =
    [Pair] -> Value
Core.object
      ( [Maybe Pair] -> [Pair]
forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Text
"DeploymentId" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (Text -> Pair) -> Maybe Text -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
deploymentId,
            (Text
"AccessLogSettings" Text -> AwsApiGatewayAccessLogSettings -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (AwsApiGatewayAccessLogSettings -> Pair)
-> Maybe AwsApiGatewayAccessLogSettings -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe AwsApiGatewayAccessLogSettings
accessLogSettings,
            (Text
"Variables" Text -> HashMap Text Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (HashMap Text Text -> Pair)
-> Maybe (HashMap Text Text) -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe (HashMap Text Text)
variables,
            (Text
"DocumentationVersion" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (Text -> Pair) -> Maybe Text -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
documentationVersion,
            (Text
"ClientCertificateId" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (Text -> Pair) -> Maybe Text -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
clientCertificateId,
            (Text
"TracingEnabled" Text -> Bool -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (Bool -> Pair) -> Maybe Bool -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Bool
tracingEnabled,
            (Text
"CreatedDate" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (Text -> Pair) -> Maybe Text -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
createdDate,
            (Text
"MethodSettings" Text -> [AwsApiGatewayMethodSettings] -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              ([AwsApiGatewayMethodSettings] -> Pair)
-> Maybe [AwsApiGatewayMethodSettings] -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [AwsApiGatewayMethodSettings]
methodSettings,
            (Text
"CacheClusterStatus" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (Text -> Pair) -> Maybe Text -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
cacheClusterStatus,
            (Text
"WebAclArn" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (Text -> Pair) -> Maybe Text -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
webAclArn,
            (Text
"StageName" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (Text -> Pair) -> Maybe Text -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
stageName,
            (Text
"CacheClusterEnabled" Text -> Bool -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (Bool -> Pair) -> Maybe Bool -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Bool
cacheClusterEnabled,
            (Text
"CacheClusterSize" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (Text -> Pair) -> Maybe Text -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
cacheClusterSize,
            (Text
"LastUpdatedDate" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (Text -> Pair) -> Maybe Text -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
lastUpdatedDate,
            (Text
"CanarySettings" Text -> AwsApiGatewayCanarySettings -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (AwsApiGatewayCanarySettings -> Pair)
-> Maybe AwsApiGatewayCanarySettings -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe AwsApiGatewayCanarySettings
canarySettings,
            (Text
"Description" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (Text -> Pair) -> Maybe Text -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
description
          ]
      )