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

import Amazonka.ApiGatewayV2.Types.AccessLogSettings
import Amazonka.ApiGatewayV2.Types.RouteSettings
import qualified Amazonka.Core as Core
import qualified Amazonka.Lens as Lens
import qualified Amazonka.Prelude as Prelude

-- | Represents an API stage.
--
-- /See:/ 'newStage' smart constructor.
data Stage = Stage'
  { -- | Describes the status of the last deployment of a stage. Supported only
    -- for stages with autoDeploy enabled.
    Stage -> Maybe Text
lastDeploymentStatusMessage :: Prelude.Maybe Prelude.Text,
    -- | The identifier of the Deployment that the Stage is associated with.
    -- Can\'t be updated if autoDeploy is enabled.
    Stage -> Maybe Text
deploymentId :: Prelude.Maybe Prelude.Text,
    -- | Route settings for the stage, by routeKey.
    Stage -> Maybe (HashMap Text RouteSettings)
routeSettings :: Prelude.Maybe (Prelude.HashMap Prelude.Text RouteSettings),
    -- | Settings for logging access in this stage.
    Stage -> Maybe AccessLogSettings
accessLogSettings :: Prelude.Maybe AccessLogSettings,
    -- | The identifier of a client certificate for a Stage. Supported only for
    -- WebSocket APIs.
    Stage -> Maybe Text
clientCertificateId :: Prelude.Maybe Prelude.Text,
    -- | A map that defines the stage variables for a stage resource. Variable
    -- names can have alphanumeric and underscore characters, and the values
    -- must match [A-Za-z0-9-._~:\/?#&=,]+.
    Stage -> Maybe (HashMap Text Text)
stageVariables :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
    -- | Specifies whether updates to an API automatically trigger a new
    -- deployment. The default value is false.
    Stage -> Maybe Bool
autoDeploy :: Prelude.Maybe Prelude.Bool,
    -- | The timestamp when the stage was created.
    Stage -> Maybe POSIX
createdDate :: Prelude.Maybe Core.POSIX,
    -- | Default route settings for the stage.
    Stage -> Maybe RouteSettings
defaultRouteSettings :: Prelude.Maybe RouteSettings,
    -- | Specifies whether a stage is managed by API Gateway. If you created an
    -- API using quick create, the $default stage is managed by API Gateway.
    -- You can\'t modify the $default stage.
    Stage -> Maybe Bool
apiGatewayManaged :: Prelude.Maybe Prelude.Bool,
    -- | The timestamp when the stage was last updated.
    Stage -> Maybe POSIX
lastUpdatedDate :: Prelude.Maybe Core.POSIX,
    -- | The description of the stage.
    Stage -> Maybe Text
description :: Prelude.Maybe Prelude.Text,
    -- | The collection of tags. Each tag element is associated with a given
    -- resource.
    Stage -> Maybe (HashMap Text Text)
tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
    -- | The name of the stage.
    Stage -> Text
stageName :: Prelude.Text
  }
  deriving (Stage -> Stage -> Bool
(Stage -> Stage -> Bool) -> (Stage -> Stage -> Bool) -> Eq Stage
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Stage -> Stage -> Bool
$c/= :: Stage -> Stage -> Bool
== :: Stage -> Stage -> Bool
$c== :: Stage -> Stage -> Bool
Prelude.Eq, ReadPrec [Stage]
ReadPrec Stage
Int -> ReadS Stage
ReadS [Stage]
(Int -> ReadS Stage)
-> ReadS [Stage]
-> ReadPrec Stage
-> ReadPrec [Stage]
-> Read Stage
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [Stage]
$creadListPrec :: ReadPrec [Stage]
readPrec :: ReadPrec Stage
$creadPrec :: ReadPrec Stage
readList :: ReadS [Stage]
$creadList :: ReadS [Stage]
readsPrec :: Int -> ReadS Stage
$creadsPrec :: Int -> ReadS Stage
Prelude.Read, Int -> Stage -> ShowS
[Stage] -> ShowS
Stage -> String
(Int -> Stage -> ShowS)
-> (Stage -> String) -> ([Stage] -> ShowS) -> Show Stage
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Stage] -> ShowS
$cshowList :: [Stage] -> ShowS
show :: Stage -> String
$cshow :: Stage -> String
showsPrec :: Int -> Stage -> ShowS
$cshowsPrec :: Int -> Stage -> ShowS
Prelude.Show, (forall x. Stage -> Rep Stage x)
-> (forall x. Rep Stage x -> Stage) -> Generic Stage
forall x. Rep Stage x -> Stage
forall x. Stage -> Rep Stage x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep Stage x -> Stage
$cfrom :: forall x. Stage -> Rep Stage x
Prelude.Generic)

-- |
-- Create a value of 'Stage' with all optional fields omitted.
--
-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
--
-- The following record fields are available, with the corresponding lenses provided
-- for backwards compatibility:
--
-- 'lastDeploymentStatusMessage', 'stage_lastDeploymentStatusMessage' - Describes the status of the last deployment of a stage. Supported only
-- for stages with autoDeploy enabled.
--
-- 'deploymentId', 'stage_deploymentId' - The identifier of the Deployment that the Stage is associated with.
-- Can\'t be updated if autoDeploy is enabled.
--
-- 'routeSettings', 'stage_routeSettings' - Route settings for the stage, by routeKey.
--
-- 'accessLogSettings', 'stage_accessLogSettings' - Settings for logging access in this stage.
--
-- 'clientCertificateId', 'stage_clientCertificateId' - The identifier of a client certificate for a Stage. Supported only for
-- WebSocket APIs.
--
-- 'stageVariables', 'stage_stageVariables' - A map that defines the stage variables for a stage resource. Variable
-- names can have alphanumeric and underscore characters, and the values
-- must match [A-Za-z0-9-._~:\/?#&=,]+.
--
-- 'autoDeploy', 'stage_autoDeploy' - Specifies whether updates to an API automatically trigger a new
-- deployment. The default value is false.
--
-- 'createdDate', 'stage_createdDate' - The timestamp when the stage was created.
--
-- 'defaultRouteSettings', 'stage_defaultRouteSettings' - Default route settings for the stage.
--
-- 'apiGatewayManaged', 'stage_apiGatewayManaged' - Specifies whether a stage is managed by API Gateway. If you created an
-- API using quick create, the $default stage is managed by API Gateway.
-- You can\'t modify the $default stage.
--
-- 'lastUpdatedDate', 'stage_lastUpdatedDate' - The timestamp when the stage was last updated.
--
-- 'description', 'stage_description' - The description of the stage.
--
-- 'tags', 'stage_tags' - The collection of tags. Each tag element is associated with a given
-- resource.
--
-- 'stageName', 'stage_stageName' - The name of the stage.
newStage ::
  -- | 'stageName'
  Prelude.Text ->
  Stage
newStage :: Text -> Stage
newStage Text
pStageName_ =
  Stage' :: Maybe Text
-> Maybe Text
-> Maybe (HashMap Text RouteSettings)
-> Maybe AccessLogSettings
-> Maybe Text
-> Maybe (HashMap Text Text)
-> Maybe Bool
-> Maybe POSIX
-> Maybe RouteSettings
-> Maybe Bool
-> Maybe POSIX
-> Maybe Text
-> Maybe (HashMap Text Text)
-> Text
-> Stage
Stage'
    { $sel:lastDeploymentStatusMessage:Stage' :: Maybe Text
lastDeploymentStatusMessage =
        Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:deploymentId:Stage' :: Maybe Text
deploymentId = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:routeSettings:Stage' :: Maybe (HashMap Text RouteSettings)
routeSettings = Maybe (HashMap Text RouteSettings)
forall a. Maybe a
Prelude.Nothing,
      $sel:accessLogSettings:Stage' :: Maybe AccessLogSettings
accessLogSettings = Maybe AccessLogSettings
forall a. Maybe a
Prelude.Nothing,
      $sel:clientCertificateId:Stage' :: Maybe Text
clientCertificateId = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:stageVariables:Stage' :: Maybe (HashMap Text Text)
stageVariables = Maybe (HashMap Text Text)
forall a. Maybe a
Prelude.Nothing,
      $sel:autoDeploy:Stage' :: Maybe Bool
autoDeploy = Maybe Bool
forall a. Maybe a
Prelude.Nothing,
      $sel:createdDate:Stage' :: Maybe POSIX
createdDate = Maybe POSIX
forall a. Maybe a
Prelude.Nothing,
      $sel:defaultRouteSettings:Stage' :: Maybe RouteSettings
defaultRouteSettings = Maybe RouteSettings
forall a. Maybe a
Prelude.Nothing,
      $sel:apiGatewayManaged:Stage' :: Maybe Bool
apiGatewayManaged = Maybe Bool
forall a. Maybe a
Prelude.Nothing,
      $sel:lastUpdatedDate:Stage' :: Maybe POSIX
lastUpdatedDate = Maybe POSIX
forall a. Maybe a
Prelude.Nothing,
      $sel:description:Stage' :: Maybe Text
description = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:tags:Stage' :: Maybe (HashMap Text Text)
tags = Maybe (HashMap Text Text)
forall a. Maybe a
Prelude.Nothing,
      $sel:stageName:Stage' :: Text
stageName = Text
pStageName_
    }

-- | Describes the status of the last deployment of a stage. Supported only
-- for stages with autoDeploy enabled.
stage_lastDeploymentStatusMessage :: Lens.Lens' Stage (Prelude.Maybe Prelude.Text)
stage_lastDeploymentStatusMessage :: (Maybe Text -> f (Maybe Text)) -> Stage -> f Stage
stage_lastDeploymentStatusMessage = (Stage -> Maybe Text)
-> (Stage -> Maybe Text -> Stage)
-> Lens Stage Stage (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Stage' {Maybe Text
lastDeploymentStatusMessage :: Maybe Text
$sel:lastDeploymentStatusMessage:Stage' :: Stage -> Maybe Text
lastDeploymentStatusMessage} -> Maybe Text
lastDeploymentStatusMessage) (\s :: Stage
s@Stage' {} Maybe Text
a -> Stage
s {$sel:lastDeploymentStatusMessage:Stage' :: Maybe Text
lastDeploymentStatusMessage = Maybe Text
a} :: Stage)

-- | The identifier of the Deployment that the Stage is associated with.
-- Can\'t be updated if autoDeploy is enabled.
stage_deploymentId :: Lens.Lens' Stage (Prelude.Maybe Prelude.Text)
stage_deploymentId :: (Maybe Text -> f (Maybe Text)) -> Stage -> f Stage
stage_deploymentId = (Stage -> Maybe Text)
-> (Stage -> Maybe Text -> Stage)
-> Lens Stage Stage (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Stage' {Maybe Text
deploymentId :: Maybe Text
$sel:deploymentId:Stage' :: Stage -> Maybe Text
deploymentId} -> Maybe Text
deploymentId) (\s :: Stage
s@Stage' {} Maybe Text
a -> Stage
s {$sel:deploymentId:Stage' :: Maybe Text
deploymentId = Maybe Text
a} :: Stage)

-- | Route settings for the stage, by routeKey.
stage_routeSettings :: Lens.Lens' Stage (Prelude.Maybe (Prelude.HashMap Prelude.Text RouteSettings))
stage_routeSettings :: (Maybe (HashMap Text RouteSettings)
 -> f (Maybe (HashMap Text RouteSettings)))
-> Stage -> f Stage
stage_routeSettings = (Stage -> Maybe (HashMap Text RouteSettings))
-> (Stage -> Maybe (HashMap Text RouteSettings) -> Stage)
-> Lens
     Stage
     Stage
     (Maybe (HashMap Text RouteSettings))
     (Maybe (HashMap Text RouteSettings))
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Stage' {Maybe (HashMap Text RouteSettings)
routeSettings :: Maybe (HashMap Text RouteSettings)
$sel:routeSettings:Stage' :: Stage -> Maybe (HashMap Text RouteSettings)
routeSettings} -> Maybe (HashMap Text RouteSettings)
routeSettings) (\s :: Stage
s@Stage' {} Maybe (HashMap Text RouteSettings)
a -> Stage
s {$sel:routeSettings:Stage' :: Maybe (HashMap Text RouteSettings)
routeSettings = Maybe (HashMap Text RouteSettings)
a} :: Stage) ((Maybe (HashMap Text RouteSettings)
  -> f (Maybe (HashMap Text RouteSettings)))
 -> Stage -> f Stage)
-> ((Maybe (HashMap Text RouteSettings)
     -> f (Maybe (HashMap Text RouteSettings)))
    -> Maybe (HashMap Text RouteSettings)
    -> f (Maybe (HashMap Text RouteSettings)))
-> (Maybe (HashMap Text RouteSettings)
    -> f (Maybe (HashMap Text RouteSettings)))
-> Stage
-> f Stage
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso
  (HashMap Text RouteSettings)
  (HashMap Text RouteSettings)
  (HashMap Text RouteSettings)
  (HashMap Text RouteSettings)
-> Iso
     (Maybe (HashMap Text RouteSettings))
     (Maybe (HashMap Text RouteSettings))
     (Maybe (HashMap Text RouteSettings))
     (Maybe (HashMap Text RouteSettings))
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 RouteSettings)
  (HashMap Text RouteSettings)
  (HashMap Text RouteSettings)
  (HashMap Text RouteSettings)
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

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

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

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

-- | Specifies whether updates to an API automatically trigger a new
-- deployment. The default value is false.
stage_autoDeploy :: Lens.Lens' Stage (Prelude.Maybe Prelude.Bool)
stage_autoDeploy :: (Maybe Bool -> f (Maybe Bool)) -> Stage -> f Stage
stage_autoDeploy = (Stage -> Maybe Bool)
-> (Stage -> Maybe Bool -> Stage)
-> Lens Stage Stage (Maybe Bool) (Maybe Bool)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Stage' {Maybe Bool
autoDeploy :: Maybe Bool
$sel:autoDeploy:Stage' :: Stage -> Maybe Bool
autoDeploy} -> Maybe Bool
autoDeploy) (\s :: Stage
s@Stage' {} Maybe Bool
a -> Stage
s {$sel:autoDeploy:Stage' :: Maybe Bool
autoDeploy = Maybe Bool
a} :: Stage)

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

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

-- | Specifies whether a stage is managed by API Gateway. If you created an
-- API using quick create, the $default stage is managed by API Gateway.
-- You can\'t modify the $default stage.
stage_apiGatewayManaged :: Lens.Lens' Stage (Prelude.Maybe Prelude.Bool)
stage_apiGatewayManaged :: (Maybe Bool -> f (Maybe Bool)) -> Stage -> f Stage
stage_apiGatewayManaged = (Stage -> Maybe Bool)
-> (Stage -> Maybe Bool -> Stage)
-> Lens Stage Stage (Maybe Bool) (Maybe Bool)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Stage' {Maybe Bool
apiGatewayManaged :: Maybe Bool
$sel:apiGatewayManaged:Stage' :: Stage -> Maybe Bool
apiGatewayManaged} -> Maybe Bool
apiGatewayManaged) (\s :: Stage
s@Stage' {} Maybe Bool
a -> Stage
s {$sel:apiGatewayManaged:Stage' :: Maybe Bool
apiGatewayManaged = Maybe Bool
a} :: Stage)

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

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

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

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

instance Core.FromJSON Stage where
  parseJSON :: Value -> Parser Stage
parseJSON =
    String -> (Object -> Parser Stage) -> Value -> Parser Stage
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Core.withObject
      String
"Stage"
      ( \Object
x ->
          Maybe Text
-> Maybe Text
-> Maybe (HashMap Text RouteSettings)
-> Maybe AccessLogSettings
-> Maybe Text
-> Maybe (HashMap Text Text)
-> Maybe Bool
-> Maybe POSIX
-> Maybe RouteSettings
-> Maybe Bool
-> Maybe POSIX
-> Maybe Text
-> Maybe (HashMap Text Text)
-> Text
-> Stage
Stage'
            (Maybe Text
 -> Maybe Text
 -> Maybe (HashMap Text RouteSettings)
 -> Maybe AccessLogSettings
 -> Maybe Text
 -> Maybe (HashMap Text Text)
 -> Maybe Bool
 -> Maybe POSIX
 -> Maybe RouteSettings
 -> Maybe Bool
 -> Maybe POSIX
 -> Maybe Text
 -> Maybe (HashMap Text Text)
 -> Text
 -> Stage)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe (HashMap Text RouteSettings)
      -> Maybe AccessLogSettings
      -> Maybe Text
      -> Maybe (HashMap Text Text)
      -> Maybe Bool
      -> Maybe POSIX
      -> Maybe RouteSettings
      -> Maybe Bool
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe (HashMap Text Text)
      -> Text
      -> Stage)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"lastDeploymentStatusMessage")
            Parser
  (Maybe Text
   -> Maybe (HashMap Text RouteSettings)
   -> Maybe AccessLogSettings
   -> Maybe Text
   -> Maybe (HashMap Text Text)
   -> Maybe Bool
   -> Maybe POSIX
   -> Maybe RouteSettings
   -> Maybe Bool
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe (HashMap Text Text)
   -> Text
   -> Stage)
-> Parser (Maybe Text)
-> Parser
     (Maybe (HashMap Text RouteSettings)
      -> Maybe AccessLogSettings
      -> Maybe Text
      -> Maybe (HashMap Text Text)
      -> Maybe Bool
      -> Maybe POSIX
      -> Maybe RouteSettings
      -> Maybe Bool
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe (HashMap Text Text)
      -> Text
      -> Stage)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"deploymentId")
            Parser
  (Maybe (HashMap Text RouteSettings)
   -> Maybe AccessLogSettings
   -> Maybe Text
   -> Maybe (HashMap Text Text)
   -> Maybe Bool
   -> Maybe POSIX
   -> Maybe RouteSettings
   -> Maybe Bool
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe (HashMap Text Text)
   -> Text
   -> Stage)
-> Parser (Maybe (HashMap Text RouteSettings))
-> Parser
     (Maybe AccessLogSettings
      -> Maybe Text
      -> Maybe (HashMap Text Text)
      -> Maybe Bool
      -> Maybe POSIX
      -> Maybe RouteSettings
      -> Maybe Bool
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe (HashMap Text Text)
      -> Text
      -> Stage)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object
-> Text -> Parser (Maybe (Maybe (HashMap Text RouteSettings)))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"routeSettings" Parser (Maybe (Maybe (HashMap Text RouteSettings)))
-> Maybe (HashMap Text RouteSettings)
-> Parser (Maybe (HashMap Text RouteSettings))
forall a. Parser (Maybe a) -> a -> Parser a
Core..!= Maybe (HashMap Text RouteSettings)
forall a. Monoid a => a
Prelude.mempty)
            Parser
  (Maybe AccessLogSettings
   -> Maybe Text
   -> Maybe (HashMap Text Text)
   -> Maybe Bool
   -> Maybe POSIX
   -> Maybe RouteSettings
   -> Maybe Bool
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe (HashMap Text Text)
   -> Text
   -> Stage)
-> Parser (Maybe AccessLogSettings)
-> Parser
     (Maybe Text
      -> Maybe (HashMap Text Text)
      -> Maybe Bool
      -> Maybe POSIX
      -> Maybe RouteSettings
      -> Maybe Bool
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe (HashMap Text Text)
      -> Text
      -> Stage)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe AccessLogSettings)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"accessLogSettings")
            Parser
  (Maybe Text
   -> Maybe (HashMap Text Text)
   -> Maybe Bool
   -> Maybe POSIX
   -> Maybe RouteSettings
   -> Maybe Bool
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe (HashMap Text Text)
   -> Text
   -> Stage)
-> Parser (Maybe Text)
-> Parser
     (Maybe (HashMap Text Text)
      -> Maybe Bool
      -> Maybe POSIX
      -> Maybe RouteSettings
      -> Maybe Bool
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe (HashMap Text Text)
      -> Text
      -> Stage)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"clientCertificateId")
            Parser
  (Maybe (HashMap Text Text)
   -> Maybe Bool
   -> Maybe POSIX
   -> Maybe RouteSettings
   -> Maybe Bool
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe (HashMap Text Text)
   -> Text
   -> Stage)
-> Parser (Maybe (HashMap Text Text))
-> Parser
     (Maybe Bool
      -> Maybe POSIX
      -> Maybe RouteSettings
      -> Maybe Bool
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe (HashMap Text Text)
      -> Text
      -> Stage)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe (Maybe (HashMap Text Text)))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"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 POSIX
   -> Maybe RouteSettings
   -> Maybe Bool
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe (HashMap Text Text)
   -> Text
   -> Stage)
-> Parser (Maybe Bool)
-> Parser
     (Maybe POSIX
      -> Maybe RouteSettings
      -> Maybe Bool
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe (HashMap Text Text)
      -> Text
      -> Stage)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Bool)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"autoDeploy")
            Parser
  (Maybe POSIX
   -> Maybe RouteSettings
   -> Maybe Bool
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe (HashMap Text Text)
   -> Text
   -> Stage)
-> Parser (Maybe POSIX)
-> Parser
     (Maybe RouteSettings
      -> Maybe Bool
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe (HashMap Text Text)
      -> Text
      -> Stage)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe POSIX)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"createdDate")
            Parser
  (Maybe RouteSettings
   -> Maybe Bool
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe (HashMap Text Text)
   -> Text
   -> Stage)
-> Parser (Maybe RouteSettings)
-> Parser
     (Maybe Bool
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe (HashMap Text Text)
      -> Text
      -> Stage)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe RouteSettings)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"defaultRouteSettings")
            Parser
  (Maybe Bool
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe (HashMap Text Text)
   -> Text
   -> Stage)
-> Parser (Maybe Bool)
-> Parser
     (Maybe POSIX
      -> Maybe Text -> Maybe (HashMap Text Text) -> Text -> Stage)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Bool)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"apiGatewayManaged")
            Parser
  (Maybe POSIX
   -> Maybe Text -> Maybe (HashMap Text Text) -> Text -> Stage)
-> Parser (Maybe POSIX)
-> Parser
     (Maybe Text -> Maybe (HashMap Text Text) -> Text -> Stage)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe POSIX)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"lastUpdatedDate")
            Parser (Maybe Text -> Maybe (HashMap Text Text) -> Text -> Stage)
-> Parser (Maybe Text)
-> Parser (Maybe (HashMap Text Text) -> Text -> Stage)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"description")
            Parser (Maybe (HashMap Text Text) -> Text -> Stage)
-> Parser (Maybe (HashMap Text Text)) -> Parser (Text -> Stage)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe (Maybe (HashMap Text Text)))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"tags" Parser (Maybe (Maybe (HashMap Text Text)))
-> Maybe (HashMap Text Text) -> Parser (Maybe (HashMap Text Text))
forall a. Parser (Maybe a) -> a -> Parser a
Core..!= Maybe (HashMap Text Text)
forall a. Monoid a => a
Prelude.mempty)
            Parser (Text -> Stage) -> Parser Text -> Parser Stage
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser Text
forall a. FromJSON a => Object -> Text -> Parser a
Core..: Text
"stageName")
      )

instance Prelude.Hashable Stage

instance Prelude.NFData Stage