{-# 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.AwsApiGatewayV2StageDetails
-- 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.AwsApiGatewayV2StageDetails 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.AwsApiGatewayV2RouteSettings

-- | Contains information about a version 2 stage for Amazon API Gateway.
--
-- /See:/ 'newAwsApiGatewayV2StageDetails' smart constructor.
data AwsApiGatewayV2StageDetails = AwsApiGatewayV2StageDetails'
  { -- | The status of the last deployment of a stage. Supported only if the
    -- stage has automatic deployment enabled.
    AwsApiGatewayV2StageDetails -> Maybe Text
lastDeploymentStatusMessage :: Prelude.Maybe Prelude.Text,
    -- | The identifier of the deployment that the stage is associated with.
    AwsApiGatewayV2StageDetails -> Maybe Text
deploymentId :: Prelude.Maybe Prelude.Text,
    -- | The route settings for the stage.
    AwsApiGatewayV2StageDetails -> Maybe AwsApiGatewayV2RouteSettings
routeSettings :: Prelude.Maybe AwsApiGatewayV2RouteSettings,
    -- | Information about settings for logging access for the stage.
    AwsApiGatewayV2StageDetails -> Maybe AwsApiGatewayAccessLogSettings
accessLogSettings :: Prelude.Maybe AwsApiGatewayAccessLogSettings,
    -- | The identifier of a client certificate for a stage. Supported only for
    -- WebSocket API calls.
    AwsApiGatewayV2StageDetails -> Maybe Text
clientCertificateId :: Prelude.Maybe Prelude.Text,
    -- | 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 -._~:\/?#&=,
    AwsApiGatewayV2StageDetails -> Maybe (HashMap Text Text)
stageVariables :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
    -- | Indicates whether updates to an API automatically trigger a new
    -- deployment.
    AwsApiGatewayV2StageDetails -> Maybe Bool
autoDeploy :: 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@.
    AwsApiGatewayV2StageDetails -> Maybe Text
createdDate :: Prelude.Maybe Prelude.Text,
    -- | Default route settings for the stage.
    AwsApiGatewayV2StageDetails -> Maybe AwsApiGatewayV2RouteSettings
defaultRouteSettings :: Prelude.Maybe AwsApiGatewayV2RouteSettings,
    -- | Indicates whether the stage is managed by API Gateway.
    AwsApiGatewayV2StageDetails -> Maybe Bool
apiGatewayManaged :: Prelude.Maybe Prelude.Bool,
    -- | The name of the stage.
    AwsApiGatewayV2StageDetails -> Maybe Text
stageName :: 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@.
    AwsApiGatewayV2StageDetails -> Maybe Text
lastUpdatedDate :: Prelude.Maybe Prelude.Text,
    -- | The description of the stage.
    AwsApiGatewayV2StageDetails -> Maybe Text
description :: Prelude.Maybe Prelude.Text
  }
  deriving (AwsApiGatewayV2StageDetails -> AwsApiGatewayV2StageDetails -> Bool
(AwsApiGatewayV2StageDetails
 -> AwsApiGatewayV2StageDetails -> Bool)
-> (AwsApiGatewayV2StageDetails
    -> AwsApiGatewayV2StageDetails -> Bool)
-> Eq AwsApiGatewayV2StageDetails
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: AwsApiGatewayV2StageDetails -> AwsApiGatewayV2StageDetails -> Bool
$c/= :: AwsApiGatewayV2StageDetails -> AwsApiGatewayV2StageDetails -> Bool
== :: AwsApiGatewayV2StageDetails -> AwsApiGatewayV2StageDetails -> Bool
$c== :: AwsApiGatewayV2StageDetails -> AwsApiGatewayV2StageDetails -> Bool
Prelude.Eq, ReadPrec [AwsApiGatewayV2StageDetails]
ReadPrec AwsApiGatewayV2StageDetails
Int -> ReadS AwsApiGatewayV2StageDetails
ReadS [AwsApiGatewayV2StageDetails]
(Int -> ReadS AwsApiGatewayV2StageDetails)
-> ReadS [AwsApiGatewayV2StageDetails]
-> ReadPrec AwsApiGatewayV2StageDetails
-> ReadPrec [AwsApiGatewayV2StageDetails]
-> Read AwsApiGatewayV2StageDetails
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [AwsApiGatewayV2StageDetails]
$creadListPrec :: ReadPrec [AwsApiGatewayV2StageDetails]
readPrec :: ReadPrec AwsApiGatewayV2StageDetails
$creadPrec :: ReadPrec AwsApiGatewayV2StageDetails
readList :: ReadS [AwsApiGatewayV2StageDetails]
$creadList :: ReadS [AwsApiGatewayV2StageDetails]
readsPrec :: Int -> ReadS AwsApiGatewayV2StageDetails
$creadsPrec :: Int -> ReadS AwsApiGatewayV2StageDetails
Prelude.Read, Int -> AwsApiGatewayV2StageDetails -> ShowS
[AwsApiGatewayV2StageDetails] -> ShowS
AwsApiGatewayV2StageDetails -> String
(Int -> AwsApiGatewayV2StageDetails -> ShowS)
-> (AwsApiGatewayV2StageDetails -> String)
-> ([AwsApiGatewayV2StageDetails] -> ShowS)
-> Show AwsApiGatewayV2StageDetails
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [AwsApiGatewayV2StageDetails] -> ShowS
$cshowList :: [AwsApiGatewayV2StageDetails] -> ShowS
show :: AwsApiGatewayV2StageDetails -> String
$cshow :: AwsApiGatewayV2StageDetails -> String
showsPrec :: Int -> AwsApiGatewayV2StageDetails -> ShowS
$cshowsPrec :: Int -> AwsApiGatewayV2StageDetails -> ShowS
Prelude.Show, (forall x.
 AwsApiGatewayV2StageDetails -> Rep AwsApiGatewayV2StageDetails x)
-> (forall x.
    Rep AwsApiGatewayV2StageDetails x -> AwsApiGatewayV2StageDetails)
-> Generic AwsApiGatewayV2StageDetails
forall x.
Rep AwsApiGatewayV2StageDetails x -> AwsApiGatewayV2StageDetails
forall x.
AwsApiGatewayV2StageDetails -> Rep AwsApiGatewayV2StageDetails x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep AwsApiGatewayV2StageDetails x -> AwsApiGatewayV2StageDetails
$cfrom :: forall x.
AwsApiGatewayV2StageDetails -> Rep AwsApiGatewayV2StageDetails x
Prelude.Generic)

-- |
-- Create a value of 'AwsApiGatewayV2StageDetails' 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:
--
-- 'lastDeploymentStatusMessage', 'awsApiGatewayV2StageDetails_lastDeploymentStatusMessage' - The status of the last deployment of a stage. Supported only if the
-- stage has automatic deployment enabled.
--
-- 'deploymentId', 'awsApiGatewayV2StageDetails_deploymentId' - The identifier of the deployment that the stage is associated with.
--
-- 'routeSettings', 'awsApiGatewayV2StageDetails_routeSettings' - The route settings for the stage.
--
-- 'accessLogSettings', 'awsApiGatewayV2StageDetails_accessLogSettings' - Information about settings for logging access for the stage.
--
-- 'clientCertificateId', 'awsApiGatewayV2StageDetails_clientCertificateId' - The identifier of a client certificate for a stage. Supported only for
-- WebSocket API calls.
--
-- 'stageVariables', 'awsApiGatewayV2StageDetails_stageVariables' - 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 -._~:\/?#&=,
--
-- 'autoDeploy', 'awsApiGatewayV2StageDetails_autoDeploy' - Indicates whether updates to an API automatically trigger a new
-- deployment.
--
-- 'createdDate', 'awsApiGatewayV2StageDetails_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@.
--
-- 'defaultRouteSettings', 'awsApiGatewayV2StageDetails_defaultRouteSettings' - Default route settings for the stage.
--
-- 'apiGatewayManaged', 'awsApiGatewayV2StageDetails_apiGatewayManaged' - Indicates whether the stage is managed by API Gateway.
--
-- 'stageName', 'awsApiGatewayV2StageDetails_stageName' - The name of the stage.
--
-- 'lastUpdatedDate', 'awsApiGatewayV2StageDetails_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@.
--
-- 'description', 'awsApiGatewayV2StageDetails_description' - The description of the stage.
newAwsApiGatewayV2StageDetails ::
  AwsApiGatewayV2StageDetails
newAwsApiGatewayV2StageDetails :: AwsApiGatewayV2StageDetails
newAwsApiGatewayV2StageDetails =
  AwsApiGatewayV2StageDetails' :: Maybe Text
-> Maybe Text
-> Maybe AwsApiGatewayV2RouteSettings
-> Maybe AwsApiGatewayAccessLogSettings
-> Maybe Text
-> Maybe (HashMap Text Text)
-> Maybe Bool
-> Maybe Text
-> Maybe AwsApiGatewayV2RouteSettings
-> Maybe Bool
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> AwsApiGatewayV2StageDetails
AwsApiGatewayV2StageDetails'
    { $sel:lastDeploymentStatusMessage:AwsApiGatewayV2StageDetails' :: Maybe Text
lastDeploymentStatusMessage =
        Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:deploymentId:AwsApiGatewayV2StageDetails' :: Maybe Text
deploymentId = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:routeSettings:AwsApiGatewayV2StageDetails' :: Maybe AwsApiGatewayV2RouteSettings
routeSettings = Maybe AwsApiGatewayV2RouteSettings
forall a. Maybe a
Prelude.Nothing,
      $sel:accessLogSettings:AwsApiGatewayV2StageDetails' :: Maybe AwsApiGatewayAccessLogSettings
accessLogSettings = Maybe AwsApiGatewayAccessLogSettings
forall a. Maybe a
Prelude.Nothing,
      $sel:clientCertificateId:AwsApiGatewayV2StageDetails' :: Maybe Text
clientCertificateId = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:stageVariables:AwsApiGatewayV2StageDetails' :: Maybe (HashMap Text Text)
stageVariables = Maybe (HashMap Text Text)
forall a. Maybe a
Prelude.Nothing,
      $sel:autoDeploy:AwsApiGatewayV2StageDetails' :: Maybe Bool
autoDeploy = Maybe Bool
forall a. Maybe a
Prelude.Nothing,
      $sel:createdDate:AwsApiGatewayV2StageDetails' :: Maybe Text
createdDate = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:defaultRouteSettings:AwsApiGatewayV2StageDetails' :: Maybe AwsApiGatewayV2RouteSettings
defaultRouteSettings = Maybe AwsApiGatewayV2RouteSettings
forall a. Maybe a
Prelude.Nothing,
      $sel:apiGatewayManaged:AwsApiGatewayV2StageDetails' :: Maybe Bool
apiGatewayManaged = Maybe Bool
forall a. Maybe a
Prelude.Nothing,
      $sel:stageName:AwsApiGatewayV2StageDetails' :: Maybe Text
stageName = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:lastUpdatedDate:AwsApiGatewayV2StageDetails' :: Maybe Text
lastUpdatedDate = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:description:AwsApiGatewayV2StageDetails' :: Maybe Text
description = Maybe Text
forall a. Maybe a
Prelude.Nothing
    }

-- | The status of the last deployment of a stage. Supported only if the
-- stage has automatic deployment enabled.
awsApiGatewayV2StageDetails_lastDeploymentStatusMessage :: Lens.Lens' AwsApiGatewayV2StageDetails (Prelude.Maybe Prelude.Text)
awsApiGatewayV2StageDetails_lastDeploymentStatusMessage :: (Maybe Text -> f (Maybe Text))
-> AwsApiGatewayV2StageDetails -> f AwsApiGatewayV2StageDetails
awsApiGatewayV2StageDetails_lastDeploymentStatusMessage = (AwsApiGatewayV2StageDetails -> Maybe Text)
-> (AwsApiGatewayV2StageDetails
    -> Maybe Text -> AwsApiGatewayV2StageDetails)
-> Lens
     AwsApiGatewayV2StageDetails
     AwsApiGatewayV2StageDetails
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AwsApiGatewayV2StageDetails' {Maybe Text
lastDeploymentStatusMessage :: Maybe Text
$sel:lastDeploymentStatusMessage:AwsApiGatewayV2StageDetails' :: AwsApiGatewayV2StageDetails -> Maybe Text
lastDeploymentStatusMessage} -> Maybe Text
lastDeploymentStatusMessage) (\s :: AwsApiGatewayV2StageDetails
s@AwsApiGatewayV2StageDetails' {} Maybe Text
a -> AwsApiGatewayV2StageDetails
s {$sel:lastDeploymentStatusMessage:AwsApiGatewayV2StageDetails' :: Maybe Text
lastDeploymentStatusMessage = Maybe Text
a} :: AwsApiGatewayV2StageDetails)

-- | The identifier of the deployment that the stage is associated with.
awsApiGatewayV2StageDetails_deploymentId :: Lens.Lens' AwsApiGatewayV2StageDetails (Prelude.Maybe Prelude.Text)
awsApiGatewayV2StageDetails_deploymentId :: (Maybe Text -> f (Maybe Text))
-> AwsApiGatewayV2StageDetails -> f AwsApiGatewayV2StageDetails
awsApiGatewayV2StageDetails_deploymentId = (AwsApiGatewayV2StageDetails -> Maybe Text)
-> (AwsApiGatewayV2StageDetails
    -> Maybe Text -> AwsApiGatewayV2StageDetails)
-> Lens
     AwsApiGatewayV2StageDetails
     AwsApiGatewayV2StageDetails
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AwsApiGatewayV2StageDetails' {Maybe Text
deploymentId :: Maybe Text
$sel:deploymentId:AwsApiGatewayV2StageDetails' :: AwsApiGatewayV2StageDetails -> Maybe Text
deploymentId} -> Maybe Text
deploymentId) (\s :: AwsApiGatewayV2StageDetails
s@AwsApiGatewayV2StageDetails' {} Maybe Text
a -> AwsApiGatewayV2StageDetails
s {$sel:deploymentId:AwsApiGatewayV2StageDetails' :: Maybe Text
deploymentId = Maybe Text
a} :: AwsApiGatewayV2StageDetails)

-- | The route settings for the stage.
awsApiGatewayV2StageDetails_routeSettings :: Lens.Lens' AwsApiGatewayV2StageDetails (Prelude.Maybe AwsApiGatewayV2RouteSettings)
awsApiGatewayV2StageDetails_routeSettings :: (Maybe AwsApiGatewayV2RouteSettings
 -> f (Maybe AwsApiGatewayV2RouteSettings))
-> AwsApiGatewayV2StageDetails -> f AwsApiGatewayV2StageDetails
awsApiGatewayV2StageDetails_routeSettings = (AwsApiGatewayV2StageDetails -> Maybe AwsApiGatewayV2RouteSettings)
-> (AwsApiGatewayV2StageDetails
    -> Maybe AwsApiGatewayV2RouteSettings
    -> AwsApiGatewayV2StageDetails)
-> Lens
     AwsApiGatewayV2StageDetails
     AwsApiGatewayV2StageDetails
     (Maybe AwsApiGatewayV2RouteSettings)
     (Maybe AwsApiGatewayV2RouteSettings)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AwsApiGatewayV2StageDetails' {Maybe AwsApiGatewayV2RouteSettings
routeSettings :: Maybe AwsApiGatewayV2RouteSettings
$sel:routeSettings:AwsApiGatewayV2StageDetails' :: AwsApiGatewayV2StageDetails -> Maybe AwsApiGatewayV2RouteSettings
routeSettings} -> Maybe AwsApiGatewayV2RouteSettings
routeSettings) (\s :: AwsApiGatewayV2StageDetails
s@AwsApiGatewayV2StageDetails' {} Maybe AwsApiGatewayV2RouteSettings
a -> AwsApiGatewayV2StageDetails
s {$sel:routeSettings:AwsApiGatewayV2StageDetails' :: Maybe AwsApiGatewayV2RouteSettings
routeSettings = Maybe AwsApiGatewayV2RouteSettings
a} :: AwsApiGatewayV2StageDetails)

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

-- | The identifier of a client certificate for a stage. Supported only for
-- WebSocket API calls.
awsApiGatewayV2StageDetails_clientCertificateId :: Lens.Lens' AwsApiGatewayV2StageDetails (Prelude.Maybe Prelude.Text)
awsApiGatewayV2StageDetails_clientCertificateId :: (Maybe Text -> f (Maybe Text))
-> AwsApiGatewayV2StageDetails -> f AwsApiGatewayV2StageDetails
awsApiGatewayV2StageDetails_clientCertificateId = (AwsApiGatewayV2StageDetails -> Maybe Text)
-> (AwsApiGatewayV2StageDetails
    -> Maybe Text -> AwsApiGatewayV2StageDetails)
-> Lens
     AwsApiGatewayV2StageDetails
     AwsApiGatewayV2StageDetails
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AwsApiGatewayV2StageDetails' {Maybe Text
clientCertificateId :: Maybe Text
$sel:clientCertificateId:AwsApiGatewayV2StageDetails' :: AwsApiGatewayV2StageDetails -> Maybe Text
clientCertificateId} -> Maybe Text
clientCertificateId) (\s :: AwsApiGatewayV2StageDetails
s@AwsApiGatewayV2StageDetails' {} Maybe Text
a -> AwsApiGatewayV2StageDetails
s {$sel:clientCertificateId:AwsApiGatewayV2StageDetails' :: Maybe Text
clientCertificateId = Maybe Text
a} :: AwsApiGatewayV2StageDetails)

-- | 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 -._~:\/?#&=,
awsApiGatewayV2StageDetails_stageVariables :: Lens.Lens' AwsApiGatewayV2StageDetails (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
awsApiGatewayV2StageDetails_stageVariables :: (Maybe (HashMap Text Text) -> f (Maybe (HashMap Text Text)))
-> AwsApiGatewayV2StageDetails -> f AwsApiGatewayV2StageDetails
awsApiGatewayV2StageDetails_stageVariables = (AwsApiGatewayV2StageDetails -> Maybe (HashMap Text Text))
-> (AwsApiGatewayV2StageDetails
    -> Maybe (HashMap Text Text) -> AwsApiGatewayV2StageDetails)
-> Lens
     AwsApiGatewayV2StageDetails
     AwsApiGatewayV2StageDetails
     (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 (\AwsApiGatewayV2StageDetails' {Maybe (HashMap Text Text)
stageVariables :: Maybe (HashMap Text Text)
$sel:stageVariables:AwsApiGatewayV2StageDetails' :: AwsApiGatewayV2StageDetails -> Maybe (HashMap Text Text)
stageVariables} -> Maybe (HashMap Text Text)
stageVariables) (\s :: AwsApiGatewayV2StageDetails
s@AwsApiGatewayV2StageDetails' {} Maybe (HashMap Text Text)
a -> AwsApiGatewayV2StageDetails
s {$sel:stageVariables:AwsApiGatewayV2StageDetails' :: Maybe (HashMap Text Text)
stageVariables = Maybe (HashMap Text Text)
a} :: AwsApiGatewayV2StageDetails) ((Maybe (HashMap Text Text) -> f (Maybe (HashMap Text Text)))
 -> AwsApiGatewayV2StageDetails -> f AwsApiGatewayV2StageDetails)
-> ((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)))
-> AwsApiGatewayV2StageDetails
-> f AwsApiGatewayV2StageDetails
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

-- | Indicates whether updates to an API automatically trigger a new
-- deployment.
awsApiGatewayV2StageDetails_autoDeploy :: Lens.Lens' AwsApiGatewayV2StageDetails (Prelude.Maybe Prelude.Bool)
awsApiGatewayV2StageDetails_autoDeploy :: (Maybe Bool -> f (Maybe Bool))
-> AwsApiGatewayV2StageDetails -> f AwsApiGatewayV2StageDetails
awsApiGatewayV2StageDetails_autoDeploy = (AwsApiGatewayV2StageDetails -> Maybe Bool)
-> (AwsApiGatewayV2StageDetails
    -> Maybe Bool -> AwsApiGatewayV2StageDetails)
-> Lens
     AwsApiGatewayV2StageDetails
     AwsApiGatewayV2StageDetails
     (Maybe Bool)
     (Maybe Bool)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AwsApiGatewayV2StageDetails' {Maybe Bool
autoDeploy :: Maybe Bool
$sel:autoDeploy:AwsApiGatewayV2StageDetails' :: AwsApiGatewayV2StageDetails -> Maybe Bool
autoDeploy} -> Maybe Bool
autoDeploy) (\s :: AwsApiGatewayV2StageDetails
s@AwsApiGatewayV2StageDetails' {} Maybe Bool
a -> AwsApiGatewayV2StageDetails
s {$sel:autoDeploy:AwsApiGatewayV2StageDetails' :: Maybe Bool
autoDeploy = Maybe Bool
a} :: AwsApiGatewayV2StageDetails)

-- | 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@.
awsApiGatewayV2StageDetails_createdDate :: Lens.Lens' AwsApiGatewayV2StageDetails (Prelude.Maybe Prelude.Text)
awsApiGatewayV2StageDetails_createdDate :: (Maybe Text -> f (Maybe Text))
-> AwsApiGatewayV2StageDetails -> f AwsApiGatewayV2StageDetails
awsApiGatewayV2StageDetails_createdDate = (AwsApiGatewayV2StageDetails -> Maybe Text)
-> (AwsApiGatewayV2StageDetails
    -> Maybe Text -> AwsApiGatewayV2StageDetails)
-> Lens
     AwsApiGatewayV2StageDetails
     AwsApiGatewayV2StageDetails
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AwsApiGatewayV2StageDetails' {Maybe Text
createdDate :: Maybe Text
$sel:createdDate:AwsApiGatewayV2StageDetails' :: AwsApiGatewayV2StageDetails -> Maybe Text
createdDate} -> Maybe Text
createdDate) (\s :: AwsApiGatewayV2StageDetails
s@AwsApiGatewayV2StageDetails' {} Maybe Text
a -> AwsApiGatewayV2StageDetails
s {$sel:createdDate:AwsApiGatewayV2StageDetails' :: Maybe Text
createdDate = Maybe Text
a} :: AwsApiGatewayV2StageDetails)

-- | Default route settings for the stage.
awsApiGatewayV2StageDetails_defaultRouteSettings :: Lens.Lens' AwsApiGatewayV2StageDetails (Prelude.Maybe AwsApiGatewayV2RouteSettings)
awsApiGatewayV2StageDetails_defaultRouteSettings :: (Maybe AwsApiGatewayV2RouteSettings
 -> f (Maybe AwsApiGatewayV2RouteSettings))
-> AwsApiGatewayV2StageDetails -> f AwsApiGatewayV2StageDetails
awsApiGatewayV2StageDetails_defaultRouteSettings = (AwsApiGatewayV2StageDetails -> Maybe AwsApiGatewayV2RouteSettings)
-> (AwsApiGatewayV2StageDetails
    -> Maybe AwsApiGatewayV2RouteSettings
    -> AwsApiGatewayV2StageDetails)
-> Lens
     AwsApiGatewayV2StageDetails
     AwsApiGatewayV2StageDetails
     (Maybe AwsApiGatewayV2RouteSettings)
     (Maybe AwsApiGatewayV2RouteSettings)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AwsApiGatewayV2StageDetails' {Maybe AwsApiGatewayV2RouteSettings
defaultRouteSettings :: Maybe AwsApiGatewayV2RouteSettings
$sel:defaultRouteSettings:AwsApiGatewayV2StageDetails' :: AwsApiGatewayV2StageDetails -> Maybe AwsApiGatewayV2RouteSettings
defaultRouteSettings} -> Maybe AwsApiGatewayV2RouteSettings
defaultRouteSettings) (\s :: AwsApiGatewayV2StageDetails
s@AwsApiGatewayV2StageDetails' {} Maybe AwsApiGatewayV2RouteSettings
a -> AwsApiGatewayV2StageDetails
s {$sel:defaultRouteSettings:AwsApiGatewayV2StageDetails' :: Maybe AwsApiGatewayV2RouteSettings
defaultRouteSettings = Maybe AwsApiGatewayV2RouteSettings
a} :: AwsApiGatewayV2StageDetails)

-- | Indicates whether the stage is managed by API Gateway.
awsApiGatewayV2StageDetails_apiGatewayManaged :: Lens.Lens' AwsApiGatewayV2StageDetails (Prelude.Maybe Prelude.Bool)
awsApiGatewayV2StageDetails_apiGatewayManaged :: (Maybe Bool -> f (Maybe Bool))
-> AwsApiGatewayV2StageDetails -> f AwsApiGatewayV2StageDetails
awsApiGatewayV2StageDetails_apiGatewayManaged = (AwsApiGatewayV2StageDetails -> Maybe Bool)
-> (AwsApiGatewayV2StageDetails
    -> Maybe Bool -> AwsApiGatewayV2StageDetails)
-> Lens
     AwsApiGatewayV2StageDetails
     AwsApiGatewayV2StageDetails
     (Maybe Bool)
     (Maybe Bool)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AwsApiGatewayV2StageDetails' {Maybe Bool
apiGatewayManaged :: Maybe Bool
$sel:apiGatewayManaged:AwsApiGatewayV2StageDetails' :: AwsApiGatewayV2StageDetails -> Maybe Bool
apiGatewayManaged} -> Maybe Bool
apiGatewayManaged) (\s :: AwsApiGatewayV2StageDetails
s@AwsApiGatewayV2StageDetails' {} Maybe Bool
a -> AwsApiGatewayV2StageDetails
s {$sel:apiGatewayManaged:AwsApiGatewayV2StageDetails' :: Maybe Bool
apiGatewayManaged = Maybe Bool
a} :: AwsApiGatewayV2StageDetails)

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

-- | 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@.
awsApiGatewayV2StageDetails_lastUpdatedDate :: Lens.Lens' AwsApiGatewayV2StageDetails (Prelude.Maybe Prelude.Text)
awsApiGatewayV2StageDetails_lastUpdatedDate :: (Maybe Text -> f (Maybe Text))
-> AwsApiGatewayV2StageDetails -> f AwsApiGatewayV2StageDetails
awsApiGatewayV2StageDetails_lastUpdatedDate = (AwsApiGatewayV2StageDetails -> Maybe Text)
-> (AwsApiGatewayV2StageDetails
    -> Maybe Text -> AwsApiGatewayV2StageDetails)
-> Lens
     AwsApiGatewayV2StageDetails
     AwsApiGatewayV2StageDetails
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AwsApiGatewayV2StageDetails' {Maybe Text
lastUpdatedDate :: Maybe Text
$sel:lastUpdatedDate:AwsApiGatewayV2StageDetails' :: AwsApiGatewayV2StageDetails -> Maybe Text
lastUpdatedDate} -> Maybe Text
lastUpdatedDate) (\s :: AwsApiGatewayV2StageDetails
s@AwsApiGatewayV2StageDetails' {} Maybe Text
a -> AwsApiGatewayV2StageDetails
s {$sel:lastUpdatedDate:AwsApiGatewayV2StageDetails' :: Maybe Text
lastUpdatedDate = Maybe Text
a} :: AwsApiGatewayV2StageDetails)

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

instance Core.FromJSON AwsApiGatewayV2StageDetails where
  parseJSON :: Value -> Parser AwsApiGatewayV2StageDetails
parseJSON =
    String
-> (Object -> Parser AwsApiGatewayV2StageDetails)
-> Value
-> Parser AwsApiGatewayV2StageDetails
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Core.withObject
      String
"AwsApiGatewayV2StageDetails"
      ( \Object
x ->
          Maybe Text
-> Maybe Text
-> Maybe AwsApiGatewayV2RouteSettings
-> Maybe AwsApiGatewayAccessLogSettings
-> Maybe Text
-> Maybe (HashMap Text Text)
-> Maybe Bool
-> Maybe Text
-> Maybe AwsApiGatewayV2RouteSettings
-> Maybe Bool
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> AwsApiGatewayV2StageDetails
AwsApiGatewayV2StageDetails'
            (Maybe Text
 -> Maybe Text
 -> Maybe AwsApiGatewayV2RouteSettings
 -> Maybe AwsApiGatewayAccessLogSettings
 -> Maybe Text
 -> Maybe (HashMap Text Text)
 -> Maybe Bool
 -> Maybe Text
 -> Maybe AwsApiGatewayV2RouteSettings
 -> Maybe Bool
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> AwsApiGatewayV2StageDetails)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe AwsApiGatewayV2RouteSettings
      -> Maybe AwsApiGatewayAccessLogSettings
      -> Maybe Text
      -> Maybe (HashMap Text Text)
      -> Maybe Bool
      -> Maybe Text
      -> Maybe AwsApiGatewayV2RouteSettings
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> AwsApiGatewayV2StageDetails)
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
"LastDeploymentStatusMessage")
            Parser
  (Maybe Text
   -> Maybe AwsApiGatewayV2RouteSettings
   -> Maybe AwsApiGatewayAccessLogSettings
   -> Maybe Text
   -> Maybe (HashMap Text Text)
   -> Maybe Bool
   -> Maybe Text
   -> Maybe AwsApiGatewayV2RouteSettings
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> AwsApiGatewayV2StageDetails)
-> Parser (Maybe Text)
-> Parser
     (Maybe AwsApiGatewayV2RouteSettings
      -> Maybe AwsApiGatewayAccessLogSettings
      -> Maybe Text
      -> Maybe (HashMap Text Text)
      -> Maybe Bool
      -> Maybe Text
      -> Maybe AwsApiGatewayV2RouteSettings
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> AwsApiGatewayV2StageDetails)
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
"DeploymentId")
            Parser
  (Maybe AwsApiGatewayV2RouteSettings
   -> Maybe AwsApiGatewayAccessLogSettings
   -> Maybe Text
   -> Maybe (HashMap Text Text)
   -> Maybe Bool
   -> Maybe Text
   -> Maybe AwsApiGatewayV2RouteSettings
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> AwsApiGatewayV2StageDetails)
-> Parser (Maybe AwsApiGatewayV2RouteSettings)
-> Parser
     (Maybe AwsApiGatewayAccessLogSettings
      -> Maybe Text
      -> Maybe (HashMap Text Text)
      -> Maybe Bool
      -> Maybe Text
      -> Maybe AwsApiGatewayV2RouteSettings
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> AwsApiGatewayV2StageDetails)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe AwsApiGatewayV2RouteSettings)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"RouteSettings")
            Parser
  (Maybe AwsApiGatewayAccessLogSettings
   -> Maybe Text
   -> Maybe (HashMap Text Text)
   -> Maybe Bool
   -> Maybe Text
   -> Maybe AwsApiGatewayV2RouteSettings
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> AwsApiGatewayV2StageDetails)
-> Parser (Maybe AwsApiGatewayAccessLogSettings)
-> Parser
     (Maybe Text
      -> Maybe (HashMap Text Text)
      -> Maybe Bool
      -> Maybe Text
      -> Maybe AwsApiGatewayV2RouteSettings
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> AwsApiGatewayV2StageDetails)
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 Text
   -> Maybe (HashMap Text Text)
   -> Maybe Bool
   -> Maybe Text
   -> Maybe AwsApiGatewayV2RouteSettings
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> AwsApiGatewayV2StageDetails)
-> Parser (Maybe Text)
-> Parser
     (Maybe (HashMap Text Text)
      -> Maybe Bool
      -> Maybe Text
      -> Maybe AwsApiGatewayV2RouteSettings
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> AwsApiGatewayV2StageDetails)
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 (HashMap Text Text)
   -> Maybe Bool
   -> Maybe Text
   -> Maybe AwsApiGatewayV2RouteSettings
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> AwsApiGatewayV2StageDetails)
-> Parser (Maybe (HashMap Text Text))
-> Parser
     (Maybe Bool
      -> Maybe Text
      -> Maybe AwsApiGatewayV2RouteSettings
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> AwsApiGatewayV2StageDetails)
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
"StageVariables" 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 Bool
   -> Maybe Text
   -> Maybe AwsApiGatewayV2RouteSettings
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> AwsApiGatewayV2StageDetails)
-> Parser (Maybe Bool)
-> Parser
     (Maybe Text
      -> Maybe AwsApiGatewayV2RouteSettings
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> AwsApiGatewayV2StageDetails)
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
"AutoDeploy")
            Parser
  (Maybe Text
   -> Maybe AwsApiGatewayV2RouteSettings
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> AwsApiGatewayV2StageDetails)
-> Parser (Maybe Text)
-> Parser
     (Maybe AwsApiGatewayV2RouteSettings
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> AwsApiGatewayV2StageDetails)
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 AwsApiGatewayV2RouteSettings
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> AwsApiGatewayV2StageDetails)
-> Parser (Maybe AwsApiGatewayV2RouteSettings)
-> Parser
     (Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> AwsApiGatewayV2StageDetails)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe AwsApiGatewayV2RouteSettings)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"DefaultRouteSettings")
            Parser
  (Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> AwsApiGatewayV2StageDetails)
-> Parser (Maybe Bool)
-> Parser
     (Maybe Text
      -> Maybe Text -> Maybe Text -> AwsApiGatewayV2StageDetails)
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
"ApiGatewayManaged")
            Parser
  (Maybe Text
   -> Maybe Text -> Maybe Text -> AwsApiGatewayV2StageDetails)
-> Parser (Maybe Text)
-> Parser (Maybe Text -> Maybe Text -> AwsApiGatewayV2StageDetails)
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 Text -> AwsApiGatewayV2StageDetails)
-> Parser (Maybe Text)
-> Parser (Maybe Text -> AwsApiGatewayV2StageDetails)
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 Text -> AwsApiGatewayV2StageDetails)
-> Parser (Maybe Text) -> Parser AwsApiGatewayV2StageDetails
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 AwsApiGatewayV2StageDetails

instance Prelude.NFData AwsApiGatewayV2StageDetails

instance Core.ToJSON AwsApiGatewayV2StageDetails where
  toJSON :: AwsApiGatewayV2StageDetails -> Value
toJSON AwsApiGatewayV2StageDetails' {Maybe Bool
Maybe Text
Maybe (HashMap Text Text)
Maybe AwsApiGatewayAccessLogSettings
Maybe AwsApiGatewayV2RouteSettings
description :: Maybe Text
lastUpdatedDate :: Maybe Text
stageName :: Maybe Text
apiGatewayManaged :: Maybe Bool
defaultRouteSettings :: Maybe AwsApiGatewayV2RouteSettings
createdDate :: Maybe Text
autoDeploy :: Maybe Bool
stageVariables :: Maybe (HashMap Text Text)
clientCertificateId :: Maybe Text
accessLogSettings :: Maybe AwsApiGatewayAccessLogSettings
routeSettings :: Maybe AwsApiGatewayV2RouteSettings
deploymentId :: Maybe Text
lastDeploymentStatusMessage :: Maybe Text
$sel:description:AwsApiGatewayV2StageDetails' :: AwsApiGatewayV2StageDetails -> Maybe Text
$sel:lastUpdatedDate:AwsApiGatewayV2StageDetails' :: AwsApiGatewayV2StageDetails -> Maybe Text
$sel:stageName:AwsApiGatewayV2StageDetails' :: AwsApiGatewayV2StageDetails -> Maybe Text
$sel:apiGatewayManaged:AwsApiGatewayV2StageDetails' :: AwsApiGatewayV2StageDetails -> Maybe Bool
$sel:defaultRouteSettings:AwsApiGatewayV2StageDetails' :: AwsApiGatewayV2StageDetails -> Maybe AwsApiGatewayV2RouteSettings
$sel:createdDate:AwsApiGatewayV2StageDetails' :: AwsApiGatewayV2StageDetails -> Maybe Text
$sel:autoDeploy:AwsApiGatewayV2StageDetails' :: AwsApiGatewayV2StageDetails -> Maybe Bool
$sel:stageVariables:AwsApiGatewayV2StageDetails' :: AwsApiGatewayV2StageDetails -> Maybe (HashMap Text Text)
$sel:clientCertificateId:AwsApiGatewayV2StageDetails' :: AwsApiGatewayV2StageDetails -> Maybe Text
$sel:accessLogSettings:AwsApiGatewayV2StageDetails' :: AwsApiGatewayV2StageDetails -> Maybe AwsApiGatewayAccessLogSettings
$sel:routeSettings:AwsApiGatewayV2StageDetails' :: AwsApiGatewayV2StageDetails -> Maybe AwsApiGatewayV2RouteSettings
$sel:deploymentId:AwsApiGatewayV2StageDetails' :: AwsApiGatewayV2StageDetails -> Maybe Text
$sel:lastDeploymentStatusMessage:AwsApiGatewayV2StageDetails' :: AwsApiGatewayV2StageDetails -> Maybe Text
..} =
    [Pair] -> Value
Core.object
      ( [Maybe Pair] -> [Pair]
forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Text
"LastDeploymentStatusMessage" 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
lastDeploymentStatusMessage,
            (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
"RouteSettings" Text -> AwsApiGatewayV2RouteSettings -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (AwsApiGatewayV2RouteSettings -> Pair)
-> Maybe AwsApiGatewayV2RouteSettings -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe AwsApiGatewayV2RouteSettings
routeSettings,
            (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
"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
"StageVariables" 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)
stageVariables,
            (Text
"AutoDeploy" 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
autoDeploy,
            (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
"DefaultRouteSettings" Text -> AwsApiGatewayV2RouteSettings -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (AwsApiGatewayV2RouteSettings -> Pair)
-> Maybe AwsApiGatewayV2RouteSettings -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe AwsApiGatewayV2RouteSettings
defaultRouteSettings,
            (Text
"ApiGatewayManaged" 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
apiGatewayManaged,
            (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
"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
"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
          ]
      )