{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-binds #-}
{-# 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.CreateStage
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Creates a Stage for an API.
module Amazonka.ApiGatewayV2.CreateStage
  ( -- * Creating a Request
    CreateStage (..),
    newCreateStage,

    -- * Request Lenses
    createStage_accessLogSettings,
    createStage_autoDeploy,
    createStage_clientCertificateId,
    createStage_defaultRouteSettings,
    createStage_deploymentId,
    createStage_description,
    createStage_routeSettings,
    createStage_stageVariables,
    createStage_tags,
    createStage_apiId,
    createStage_stageName,

    -- * Destructuring the Response
    CreateStageResponse (..),
    newCreateStageResponse,

    -- * Response Lenses
    createStageResponse_accessLogSettings,
    createStageResponse_apiGatewayManaged,
    createStageResponse_autoDeploy,
    createStageResponse_clientCertificateId,
    createStageResponse_createdDate,
    createStageResponse_defaultRouteSettings,
    createStageResponse_deploymentId,
    createStageResponse_description,
    createStageResponse_lastDeploymentStatusMessage,
    createStageResponse_lastUpdatedDate,
    createStageResponse_routeSettings,
    createStageResponse_stageName,
    createStageResponse_stageVariables,
    createStageResponse_tags,
    createStageResponse_httpStatus,
  )
where

import Amazonka.ApiGatewayV2.Types
import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import qualified Amazonka.Prelude as Prelude
import qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response

-- | Creates a new Stage resource to represent a stage.
--
-- /See:/ 'newCreateStage' smart constructor.
data CreateStage = CreateStage'
  { -- | Settings for logging access in this stage.
    CreateStage -> Maybe AccessLogSettings
accessLogSettings :: Prelude.Maybe AccessLogSettings,
    -- | Specifies whether updates to an API automatically trigger a new
    -- deployment. The default value is false.
    CreateStage -> Maybe Bool
autoDeploy :: Prelude.Maybe Prelude.Bool,
    -- | The identifier of a client certificate for a Stage. Supported only for
    -- WebSocket APIs.
    CreateStage -> Maybe Text
clientCertificateId :: Prelude.Maybe Prelude.Text,
    -- | The default route settings for the stage.
    CreateStage -> Maybe RouteSettings
defaultRouteSettings :: Prelude.Maybe RouteSettings,
    -- | The deployment identifier of the API stage.
    CreateStage -> Maybe Text
deploymentId :: Prelude.Maybe Prelude.Text,
    -- | The description for the API stage.
    CreateStage -> Maybe Text
description :: Prelude.Maybe Prelude.Text,
    -- | Route settings for the stage, by routeKey.
    CreateStage -> Maybe (HashMap Text RouteSettings)
routeSettings :: Prelude.Maybe (Prelude.HashMap Prelude.Text RouteSettings),
    -- | A map that defines the stage variables for a Stage. Variable names can
    -- have alphanumeric and underscore characters, and the values must match
    -- [A-Za-z0-9-._~:\/?#&=,]+.
    CreateStage -> Maybe (HashMap Text Text)
stageVariables :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
    -- | The collection of tags. Each tag element is associated with a given
    -- resource.
    CreateStage -> Maybe (HashMap Text Text)
tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
    -- | The API identifier.
    CreateStage -> Text
apiId :: Prelude.Text,
    -- | The name of the stage.
    CreateStage -> Text
stageName :: Prelude.Text
  }
  deriving (CreateStage -> CreateStage -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CreateStage -> CreateStage -> Bool
$c/= :: CreateStage -> CreateStage -> Bool
== :: CreateStage -> CreateStage -> Bool
$c== :: CreateStage -> CreateStage -> Bool
Prelude.Eq, ReadPrec [CreateStage]
ReadPrec CreateStage
Int -> ReadS CreateStage
ReadS [CreateStage]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CreateStage]
$creadListPrec :: ReadPrec [CreateStage]
readPrec :: ReadPrec CreateStage
$creadPrec :: ReadPrec CreateStage
readList :: ReadS [CreateStage]
$creadList :: ReadS [CreateStage]
readsPrec :: Int -> ReadS CreateStage
$creadsPrec :: Int -> ReadS CreateStage
Prelude.Read, Int -> CreateStage -> ShowS
[CreateStage] -> ShowS
CreateStage -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CreateStage] -> ShowS
$cshowList :: [CreateStage] -> ShowS
show :: CreateStage -> String
$cshow :: CreateStage -> String
showsPrec :: Int -> CreateStage -> ShowS
$cshowsPrec :: Int -> CreateStage -> ShowS
Prelude.Show, forall x. Rep CreateStage x -> CreateStage
forall x. CreateStage -> Rep CreateStage x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep CreateStage x -> CreateStage
$cfrom :: forall x. CreateStage -> Rep CreateStage x
Prelude.Generic)

-- |
-- Create a value of 'CreateStage' 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:
--
-- 'accessLogSettings', 'createStage_accessLogSettings' - Settings for logging access in this stage.
--
-- 'autoDeploy', 'createStage_autoDeploy' - Specifies whether updates to an API automatically trigger a new
-- deployment. The default value is false.
--
-- 'clientCertificateId', 'createStage_clientCertificateId' - The identifier of a client certificate for a Stage. Supported only for
-- WebSocket APIs.
--
-- 'defaultRouteSettings', 'createStage_defaultRouteSettings' - The default route settings for the stage.
--
-- 'deploymentId', 'createStage_deploymentId' - The deployment identifier of the API stage.
--
-- 'description', 'createStage_description' - The description for the API stage.
--
-- 'routeSettings', 'createStage_routeSettings' - Route settings for the stage, by routeKey.
--
-- 'stageVariables', 'createStage_stageVariables' - A map that defines the stage variables for a Stage. Variable names can
-- have alphanumeric and underscore characters, and the values must match
-- [A-Za-z0-9-._~:\/?#&=,]+.
--
-- 'tags', 'createStage_tags' - The collection of tags. Each tag element is associated with a given
-- resource.
--
-- 'apiId', 'createStage_apiId' - The API identifier.
--
-- 'stageName', 'createStage_stageName' - The name of the stage.
newCreateStage ::
  -- | 'apiId'
  Prelude.Text ->
  -- | 'stageName'
  Prelude.Text ->
  CreateStage
newCreateStage :: Text -> Text -> CreateStage
newCreateStage Text
pApiId_ Text
pStageName_ =
  CreateStage'
    { $sel:accessLogSettings:CreateStage' :: Maybe AccessLogSettings
accessLogSettings = forall a. Maybe a
Prelude.Nothing,
      $sel:autoDeploy:CreateStage' :: Maybe Bool
autoDeploy = forall a. Maybe a
Prelude.Nothing,
      $sel:clientCertificateId:CreateStage' :: Maybe Text
clientCertificateId = forall a. Maybe a
Prelude.Nothing,
      $sel:defaultRouteSettings:CreateStage' :: Maybe RouteSettings
defaultRouteSettings = forall a. Maybe a
Prelude.Nothing,
      $sel:deploymentId:CreateStage' :: Maybe Text
deploymentId = forall a. Maybe a
Prelude.Nothing,
      $sel:description:CreateStage' :: Maybe Text
description = forall a. Maybe a
Prelude.Nothing,
      $sel:routeSettings:CreateStage' :: Maybe (HashMap Text RouteSettings)
routeSettings = forall a. Maybe a
Prelude.Nothing,
      $sel:stageVariables:CreateStage' :: Maybe (HashMap Text Text)
stageVariables = forall a. Maybe a
Prelude.Nothing,
      $sel:tags:CreateStage' :: Maybe (HashMap Text Text)
tags = forall a. Maybe a
Prelude.Nothing,
      $sel:apiId:CreateStage' :: Text
apiId = Text
pApiId_,
      $sel:stageName:CreateStage' :: Text
stageName = Text
pStageName_
    }

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

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

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

-- | The default route settings for the stage.
createStage_defaultRouteSettings :: Lens.Lens' CreateStage (Prelude.Maybe RouteSettings)
createStage_defaultRouteSettings :: Lens' CreateStage (Maybe RouteSettings)
createStage_defaultRouteSettings = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateStage' {Maybe RouteSettings
defaultRouteSettings :: Maybe RouteSettings
$sel:defaultRouteSettings:CreateStage' :: CreateStage -> Maybe RouteSettings
defaultRouteSettings} -> Maybe RouteSettings
defaultRouteSettings) (\s :: CreateStage
s@CreateStage' {} Maybe RouteSettings
a -> CreateStage
s {$sel:defaultRouteSettings:CreateStage' :: Maybe RouteSettings
defaultRouteSettings = Maybe RouteSettings
a} :: CreateStage)

-- | The deployment identifier of the API stage.
createStage_deploymentId :: Lens.Lens' CreateStage (Prelude.Maybe Prelude.Text)
createStage_deploymentId :: Lens' CreateStage (Maybe Text)
createStage_deploymentId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateStage' {Maybe Text
deploymentId :: Maybe Text
$sel:deploymentId:CreateStage' :: CreateStage -> Maybe Text
deploymentId} -> Maybe Text
deploymentId) (\s :: CreateStage
s@CreateStage' {} Maybe Text
a -> CreateStage
s {$sel:deploymentId:CreateStage' :: Maybe Text
deploymentId = Maybe Text
a} :: CreateStage)

-- | The description for the API stage.
createStage_description :: Lens.Lens' CreateStage (Prelude.Maybe Prelude.Text)
createStage_description :: Lens' CreateStage (Maybe Text)
createStage_description = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateStage' {Maybe Text
description :: Maybe Text
$sel:description:CreateStage' :: CreateStage -> Maybe Text
description} -> Maybe Text
description) (\s :: CreateStage
s@CreateStage' {} Maybe Text
a -> CreateStage
s {$sel:description:CreateStage' :: Maybe Text
description = Maybe Text
a} :: CreateStage)

-- | Route settings for the stage, by routeKey.
createStage_routeSettings :: Lens.Lens' CreateStage (Prelude.Maybe (Prelude.HashMap Prelude.Text RouteSettings))
createStage_routeSettings :: Lens' CreateStage (Maybe (HashMap Text RouteSettings))
createStage_routeSettings = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateStage' {Maybe (HashMap Text RouteSettings)
routeSettings :: Maybe (HashMap Text RouteSettings)
$sel:routeSettings:CreateStage' :: CreateStage -> Maybe (HashMap Text RouteSettings)
routeSettings} -> Maybe (HashMap Text RouteSettings)
routeSettings) (\s :: CreateStage
s@CreateStage' {} Maybe (HashMap Text RouteSettings)
a -> CreateStage
s {$sel:routeSettings:CreateStage' :: Maybe (HashMap Text RouteSettings)
routeSettings = Maybe (HashMap Text RouteSettings)
a} :: CreateStage) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

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

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

-- | The API identifier.
createStage_apiId :: Lens.Lens' CreateStage Prelude.Text
createStage_apiId :: Lens' CreateStage Text
createStage_apiId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateStage' {Text
apiId :: Text
$sel:apiId:CreateStage' :: CreateStage -> Text
apiId} -> Text
apiId) (\s :: CreateStage
s@CreateStage' {} Text
a -> CreateStage
s {$sel:apiId:CreateStage' :: Text
apiId = Text
a} :: CreateStage)

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

instance Core.AWSRequest CreateStage where
  type AWSResponse CreateStage = CreateStageResponse
  request :: (Service -> Service) -> CreateStage -> Request CreateStage
request Service -> Service
overrides =
    forall a. (ToRequest a, ToJSON a) => Service -> a -> Request a
Request.postJSON (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy CreateStage
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse CreateStage)))
response =
    forall (m :: * -> *) a.
MonadResource m =>
(Int -> ResponseHeaders -> Object -> Either String (AWSResponse a))
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveJSON
      ( \Int
s ResponseHeaders
h Object
x ->
          Maybe AccessLogSettings
-> Maybe Bool
-> Maybe Bool
-> Maybe Text
-> Maybe ISO8601
-> Maybe RouteSettings
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe ISO8601
-> Maybe (HashMap Text RouteSettings)
-> Maybe Text
-> Maybe (HashMap Text Text)
-> Maybe (HashMap Text Text)
-> Int
-> CreateStageResponse
CreateStageResponse'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"accessLogSettings")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"apiGatewayManaged")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"autoDeploy")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"clientCertificateId")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"createdDate")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"defaultRouteSettings")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"deploymentId")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"description")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"lastDeploymentStatusMessage")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"lastUpdatedDate")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"routeSettings" forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty)
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"stageName")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"stageVariables" forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty)
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"tags" forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty)
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure (forall a. Enum a => a -> Int
Prelude.fromEnum Int
s))
      )

instance Prelude.Hashable CreateStage where
  hashWithSalt :: Int -> CreateStage -> Int
hashWithSalt Int
_salt CreateStage' {Maybe Bool
Maybe Text
Maybe (HashMap Text Text)
Maybe (HashMap Text RouteSettings)
Maybe AccessLogSettings
Maybe RouteSettings
Text
stageName :: Text
apiId :: Text
tags :: Maybe (HashMap Text Text)
stageVariables :: Maybe (HashMap Text Text)
routeSettings :: Maybe (HashMap Text RouteSettings)
description :: Maybe Text
deploymentId :: Maybe Text
defaultRouteSettings :: Maybe RouteSettings
clientCertificateId :: Maybe Text
autoDeploy :: Maybe Bool
accessLogSettings :: Maybe AccessLogSettings
$sel:stageName:CreateStage' :: CreateStage -> Text
$sel:apiId:CreateStage' :: CreateStage -> Text
$sel:tags:CreateStage' :: CreateStage -> Maybe (HashMap Text Text)
$sel:stageVariables:CreateStage' :: CreateStage -> Maybe (HashMap Text Text)
$sel:routeSettings:CreateStage' :: CreateStage -> Maybe (HashMap Text RouteSettings)
$sel:description:CreateStage' :: CreateStage -> Maybe Text
$sel:deploymentId:CreateStage' :: CreateStage -> Maybe Text
$sel:defaultRouteSettings:CreateStage' :: CreateStage -> Maybe RouteSettings
$sel:clientCertificateId:CreateStage' :: CreateStage -> Maybe Text
$sel:autoDeploy:CreateStage' :: CreateStage -> Maybe Bool
$sel:accessLogSettings:CreateStage' :: CreateStage -> Maybe AccessLogSettings
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe AccessLogSettings
accessLogSettings
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
autoDeploy
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
clientCertificateId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe RouteSettings
defaultRouteSettings
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
deploymentId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
description
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (HashMap Text RouteSettings)
routeSettings
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (HashMap Text Text)
stageVariables
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (HashMap Text Text)
tags
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
apiId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
stageName

instance Prelude.NFData CreateStage where
  rnf :: CreateStage -> ()
rnf CreateStage' {Maybe Bool
Maybe Text
Maybe (HashMap Text Text)
Maybe (HashMap Text RouteSettings)
Maybe AccessLogSettings
Maybe RouteSettings
Text
stageName :: Text
apiId :: Text
tags :: Maybe (HashMap Text Text)
stageVariables :: Maybe (HashMap Text Text)
routeSettings :: Maybe (HashMap Text RouteSettings)
description :: Maybe Text
deploymentId :: Maybe Text
defaultRouteSettings :: Maybe RouteSettings
clientCertificateId :: Maybe Text
autoDeploy :: Maybe Bool
accessLogSettings :: Maybe AccessLogSettings
$sel:stageName:CreateStage' :: CreateStage -> Text
$sel:apiId:CreateStage' :: CreateStage -> Text
$sel:tags:CreateStage' :: CreateStage -> Maybe (HashMap Text Text)
$sel:stageVariables:CreateStage' :: CreateStage -> Maybe (HashMap Text Text)
$sel:routeSettings:CreateStage' :: CreateStage -> Maybe (HashMap Text RouteSettings)
$sel:description:CreateStage' :: CreateStage -> Maybe Text
$sel:deploymentId:CreateStage' :: CreateStage -> Maybe Text
$sel:defaultRouteSettings:CreateStage' :: CreateStage -> Maybe RouteSettings
$sel:clientCertificateId:CreateStage' :: CreateStage -> Maybe Text
$sel:autoDeploy:CreateStage' :: CreateStage -> Maybe Bool
$sel:accessLogSettings:CreateStage' :: CreateStage -> Maybe AccessLogSettings
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe AccessLogSettings
accessLogSettings
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
autoDeploy
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
clientCertificateId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe RouteSettings
defaultRouteSettings
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
deploymentId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
description
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (HashMap Text RouteSettings)
routeSettings
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (HashMap Text Text)
stageVariables
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (HashMap Text Text)
tags
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
apiId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
stageName

instance Data.ToHeaders CreateStage where
  toHeaders :: CreateStage -> ResponseHeaders
toHeaders =
    forall a b. a -> b -> a
Prelude.const
      ( forall a. Monoid a => [a] -> a
Prelude.mconcat
          [ HeaderName
"Content-Type"
              forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# ( ByteString
"application/x-amz-json-1.1" ::
                          Prelude.ByteString
                      )
          ]
      )

instance Data.ToJSON CreateStage where
  toJSON :: CreateStage -> Value
toJSON CreateStage' {Maybe Bool
Maybe Text
Maybe (HashMap Text Text)
Maybe (HashMap Text RouteSettings)
Maybe AccessLogSettings
Maybe RouteSettings
Text
stageName :: Text
apiId :: Text
tags :: Maybe (HashMap Text Text)
stageVariables :: Maybe (HashMap Text Text)
routeSettings :: Maybe (HashMap Text RouteSettings)
description :: Maybe Text
deploymentId :: Maybe Text
defaultRouteSettings :: Maybe RouteSettings
clientCertificateId :: Maybe Text
autoDeploy :: Maybe Bool
accessLogSettings :: Maybe AccessLogSettings
$sel:stageName:CreateStage' :: CreateStage -> Text
$sel:apiId:CreateStage' :: CreateStage -> Text
$sel:tags:CreateStage' :: CreateStage -> Maybe (HashMap Text Text)
$sel:stageVariables:CreateStage' :: CreateStage -> Maybe (HashMap Text Text)
$sel:routeSettings:CreateStage' :: CreateStage -> Maybe (HashMap Text RouteSettings)
$sel:description:CreateStage' :: CreateStage -> Maybe Text
$sel:deploymentId:CreateStage' :: CreateStage -> Maybe Text
$sel:defaultRouteSettings:CreateStage' :: CreateStage -> Maybe RouteSettings
$sel:clientCertificateId:CreateStage' :: CreateStage -> Maybe Text
$sel:autoDeploy:CreateStage' :: CreateStage -> Maybe Bool
$sel:accessLogSettings:CreateStage' :: CreateStage -> Maybe AccessLogSettings
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"accessLogSettings" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe AccessLogSettings
accessLogSettings,
            (Key
"autoDeploy" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Bool
autoDeploy,
            (Key
"clientCertificateId" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
clientCertificateId,
            (Key
"defaultRouteSettings" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe RouteSettings
defaultRouteSettings,
            (Key
"deploymentId" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
deploymentId,
            (Key
"description" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
description,
            (Key
"routeSettings" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe (HashMap Text RouteSettings)
routeSettings,
            (Key
"stageVariables" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe (HashMap Text Text)
stageVariables,
            (Key
"tags" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe (HashMap Text Text)
tags,
            forall a. a -> Maybe a
Prelude.Just (Key
"stageName" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
stageName)
          ]
      )

instance Data.ToPath CreateStage where
  toPath :: CreateStage -> ByteString
toPath CreateStage' {Maybe Bool
Maybe Text
Maybe (HashMap Text Text)
Maybe (HashMap Text RouteSettings)
Maybe AccessLogSettings
Maybe RouteSettings
Text
stageName :: Text
apiId :: Text
tags :: Maybe (HashMap Text Text)
stageVariables :: Maybe (HashMap Text Text)
routeSettings :: Maybe (HashMap Text RouteSettings)
description :: Maybe Text
deploymentId :: Maybe Text
defaultRouteSettings :: Maybe RouteSettings
clientCertificateId :: Maybe Text
autoDeploy :: Maybe Bool
accessLogSettings :: Maybe AccessLogSettings
$sel:stageName:CreateStage' :: CreateStage -> Text
$sel:apiId:CreateStage' :: CreateStage -> Text
$sel:tags:CreateStage' :: CreateStage -> Maybe (HashMap Text Text)
$sel:stageVariables:CreateStage' :: CreateStage -> Maybe (HashMap Text Text)
$sel:routeSettings:CreateStage' :: CreateStage -> Maybe (HashMap Text RouteSettings)
$sel:description:CreateStage' :: CreateStage -> Maybe Text
$sel:deploymentId:CreateStage' :: CreateStage -> Maybe Text
$sel:defaultRouteSettings:CreateStage' :: CreateStage -> Maybe RouteSettings
$sel:clientCertificateId:CreateStage' :: CreateStage -> Maybe Text
$sel:autoDeploy:CreateStage' :: CreateStage -> Maybe Bool
$sel:accessLogSettings:CreateStage' :: CreateStage -> Maybe AccessLogSettings
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ByteString
"/v2/apis/", forall a. ToByteString a => a -> ByteString
Data.toBS Text
apiId, ByteString
"/stages"]

instance Data.ToQuery CreateStage where
  toQuery :: CreateStage -> QueryString
toQuery = forall a b. a -> b -> a
Prelude.const forall a. Monoid a => a
Prelude.mempty

-- | /See:/ 'newCreateStageResponse' smart constructor.
data CreateStageResponse = CreateStageResponse'
  { -- | Settings for logging access in this stage.
    CreateStageResponse -> Maybe AccessLogSettings
accessLogSettings :: Prelude.Maybe AccessLogSettings,
    -- | 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.
    CreateStageResponse -> Maybe Bool
apiGatewayManaged :: Prelude.Maybe Prelude.Bool,
    -- | Specifies whether updates to an API automatically trigger a new
    -- deployment. The default value is false.
    CreateStageResponse -> Maybe Bool
autoDeploy :: Prelude.Maybe Prelude.Bool,
    -- | The identifier of a client certificate for a Stage. Supported only for
    -- WebSocket APIs.
    CreateStageResponse -> Maybe Text
clientCertificateId :: Prelude.Maybe Prelude.Text,
    -- | The timestamp when the stage was created.
    CreateStageResponse -> Maybe ISO8601
createdDate :: Prelude.Maybe Data.ISO8601,
    -- | Default route settings for the stage.
    CreateStageResponse -> Maybe RouteSettings
defaultRouteSettings :: Prelude.Maybe RouteSettings,
    -- | The identifier of the Deployment that the Stage is associated with.
    -- Can\'t be updated if autoDeploy is enabled.
    CreateStageResponse -> Maybe Text
deploymentId :: Prelude.Maybe Prelude.Text,
    -- | The description of the stage.
    CreateStageResponse -> Maybe Text
description :: Prelude.Maybe Prelude.Text,
    -- | Describes the status of the last deployment of a stage. Supported only
    -- for stages with autoDeploy enabled.
    CreateStageResponse -> Maybe Text
lastDeploymentStatusMessage :: Prelude.Maybe Prelude.Text,
    -- | The timestamp when the stage was last updated.
    CreateStageResponse -> Maybe ISO8601
lastUpdatedDate :: Prelude.Maybe Data.ISO8601,
    -- | Route settings for the stage, by routeKey.
    CreateStageResponse -> Maybe (HashMap Text RouteSettings)
routeSettings :: Prelude.Maybe (Prelude.HashMap Prelude.Text RouteSettings),
    -- | The name of the stage.
    CreateStageResponse -> Maybe Text
stageName :: 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-._~:\/?#&=,]+.
    CreateStageResponse -> Maybe (HashMap Text Text)
stageVariables :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
    -- | The collection of tags. Each tag element is associated with a given
    -- resource.
    CreateStageResponse -> Maybe (HashMap Text Text)
tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
    -- | The response's http status code.
    CreateStageResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (CreateStageResponse -> CreateStageResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CreateStageResponse -> CreateStageResponse -> Bool
$c/= :: CreateStageResponse -> CreateStageResponse -> Bool
== :: CreateStageResponse -> CreateStageResponse -> Bool
$c== :: CreateStageResponse -> CreateStageResponse -> Bool
Prelude.Eq, ReadPrec [CreateStageResponse]
ReadPrec CreateStageResponse
Int -> ReadS CreateStageResponse
ReadS [CreateStageResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CreateStageResponse]
$creadListPrec :: ReadPrec [CreateStageResponse]
readPrec :: ReadPrec CreateStageResponse
$creadPrec :: ReadPrec CreateStageResponse
readList :: ReadS [CreateStageResponse]
$creadList :: ReadS [CreateStageResponse]
readsPrec :: Int -> ReadS CreateStageResponse
$creadsPrec :: Int -> ReadS CreateStageResponse
Prelude.Read, Int -> CreateStageResponse -> ShowS
[CreateStageResponse] -> ShowS
CreateStageResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CreateStageResponse] -> ShowS
$cshowList :: [CreateStageResponse] -> ShowS
show :: CreateStageResponse -> String
$cshow :: CreateStageResponse -> String
showsPrec :: Int -> CreateStageResponse -> ShowS
$cshowsPrec :: Int -> CreateStageResponse -> ShowS
Prelude.Show, forall x. Rep CreateStageResponse x -> CreateStageResponse
forall x. CreateStageResponse -> Rep CreateStageResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep CreateStageResponse x -> CreateStageResponse
$cfrom :: forall x. CreateStageResponse -> Rep CreateStageResponse x
Prelude.Generic)

-- |
-- Create a value of 'CreateStageResponse' 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:
--
-- 'accessLogSettings', 'createStageResponse_accessLogSettings' - Settings for logging access in this stage.
--
-- 'apiGatewayManaged', 'createStageResponse_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.
--
-- 'autoDeploy', 'createStageResponse_autoDeploy' - Specifies whether updates to an API automatically trigger a new
-- deployment. The default value is false.
--
-- 'clientCertificateId', 'createStageResponse_clientCertificateId' - The identifier of a client certificate for a Stage. Supported only for
-- WebSocket APIs.
--
-- 'createdDate', 'createStageResponse_createdDate' - The timestamp when the stage was created.
--
-- 'defaultRouteSettings', 'createStageResponse_defaultRouteSettings' - Default route settings for the stage.
--
-- 'deploymentId', 'createStageResponse_deploymentId' - The identifier of the Deployment that the Stage is associated with.
-- Can\'t be updated if autoDeploy is enabled.
--
-- 'description', 'createStageResponse_description' - The description of the stage.
--
-- 'lastDeploymentStatusMessage', 'createStageResponse_lastDeploymentStatusMessage' - Describes the status of the last deployment of a stage. Supported only
-- for stages with autoDeploy enabled.
--
-- 'lastUpdatedDate', 'createStageResponse_lastUpdatedDate' - The timestamp when the stage was last updated.
--
-- 'routeSettings', 'createStageResponse_routeSettings' - Route settings for the stage, by routeKey.
--
-- 'stageName', 'createStageResponse_stageName' - The name of the stage.
--
-- 'stageVariables', 'createStageResponse_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-._~:\/?#&=,]+.
--
-- 'tags', 'createStageResponse_tags' - The collection of tags. Each tag element is associated with a given
-- resource.
--
-- 'httpStatus', 'createStageResponse_httpStatus' - The response's http status code.
newCreateStageResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  CreateStageResponse
newCreateStageResponse :: Int -> CreateStageResponse
newCreateStageResponse Int
pHttpStatus_ =
  CreateStageResponse'
    { $sel:accessLogSettings:CreateStageResponse' :: Maybe AccessLogSettings
accessLogSettings =
        forall a. Maybe a
Prelude.Nothing,
      $sel:apiGatewayManaged:CreateStageResponse' :: Maybe Bool
apiGatewayManaged = forall a. Maybe a
Prelude.Nothing,
      $sel:autoDeploy:CreateStageResponse' :: Maybe Bool
autoDeploy = forall a. Maybe a
Prelude.Nothing,
      $sel:clientCertificateId:CreateStageResponse' :: Maybe Text
clientCertificateId = forall a. Maybe a
Prelude.Nothing,
      $sel:createdDate:CreateStageResponse' :: Maybe ISO8601
createdDate = forall a. Maybe a
Prelude.Nothing,
      $sel:defaultRouteSettings:CreateStageResponse' :: Maybe RouteSettings
defaultRouteSettings = forall a. Maybe a
Prelude.Nothing,
      $sel:deploymentId:CreateStageResponse' :: Maybe Text
deploymentId = forall a. Maybe a
Prelude.Nothing,
      $sel:description:CreateStageResponse' :: Maybe Text
description = forall a. Maybe a
Prelude.Nothing,
      $sel:lastDeploymentStatusMessage:CreateStageResponse' :: Maybe Text
lastDeploymentStatusMessage = forall a. Maybe a
Prelude.Nothing,
      $sel:lastUpdatedDate:CreateStageResponse' :: Maybe ISO8601
lastUpdatedDate = forall a. Maybe a
Prelude.Nothing,
      $sel:routeSettings:CreateStageResponse' :: Maybe (HashMap Text RouteSettings)
routeSettings = forall a. Maybe a
Prelude.Nothing,
      $sel:stageName:CreateStageResponse' :: Maybe Text
stageName = forall a. Maybe a
Prelude.Nothing,
      $sel:stageVariables:CreateStageResponse' :: Maybe (HashMap Text Text)
stageVariables = forall a. Maybe a
Prelude.Nothing,
      $sel:tags:CreateStageResponse' :: Maybe (HashMap Text Text)
tags = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:CreateStageResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

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

-- | 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.
createStageResponse_apiGatewayManaged :: Lens.Lens' CreateStageResponse (Prelude.Maybe Prelude.Bool)
createStageResponse_apiGatewayManaged :: Lens' CreateStageResponse (Maybe Bool)
createStageResponse_apiGatewayManaged = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateStageResponse' {Maybe Bool
apiGatewayManaged :: Maybe Bool
$sel:apiGatewayManaged:CreateStageResponse' :: CreateStageResponse -> Maybe Bool
apiGatewayManaged} -> Maybe Bool
apiGatewayManaged) (\s :: CreateStageResponse
s@CreateStageResponse' {} Maybe Bool
a -> CreateStageResponse
s {$sel:apiGatewayManaged:CreateStageResponse' :: Maybe Bool
apiGatewayManaged = Maybe Bool
a} :: CreateStageResponse)

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

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

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

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

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

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

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

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

-- | Route settings for the stage, by routeKey.
createStageResponse_routeSettings :: Lens.Lens' CreateStageResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text RouteSettings))
createStageResponse_routeSettings :: Lens' CreateStageResponse (Maybe (HashMap Text RouteSettings))
createStageResponse_routeSettings = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateStageResponse' {Maybe (HashMap Text RouteSettings)
routeSettings :: Maybe (HashMap Text RouteSettings)
$sel:routeSettings:CreateStageResponse' :: CreateStageResponse -> Maybe (HashMap Text RouteSettings)
routeSettings} -> Maybe (HashMap Text RouteSettings)
routeSettings) (\s :: CreateStageResponse
s@CreateStageResponse' {} Maybe (HashMap Text RouteSettings)
a -> CreateStageResponse
s {$sel:routeSettings:CreateStageResponse' :: Maybe (HashMap Text RouteSettings)
routeSettings = Maybe (HashMap Text RouteSettings)
a} :: CreateStageResponse) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

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

-- | 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-._~:\/?#&=,]+.
createStageResponse_stageVariables :: Lens.Lens' CreateStageResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
createStageResponse_stageVariables :: Lens' CreateStageResponse (Maybe (HashMap Text Text))
createStageResponse_stageVariables = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateStageResponse' {Maybe (HashMap Text Text)
stageVariables :: Maybe (HashMap Text Text)
$sel:stageVariables:CreateStageResponse' :: CreateStageResponse -> Maybe (HashMap Text Text)
stageVariables} -> Maybe (HashMap Text Text)
stageVariables) (\s :: CreateStageResponse
s@CreateStageResponse' {} Maybe (HashMap Text Text)
a -> CreateStageResponse
s {$sel:stageVariables:CreateStageResponse' :: Maybe (HashMap Text Text)
stageVariables = Maybe (HashMap Text Text)
a} :: CreateStageResponse) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

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

-- | The response's http status code.
createStageResponse_httpStatus :: Lens.Lens' CreateStageResponse Prelude.Int
createStageResponse_httpStatus :: Lens' CreateStageResponse Int
createStageResponse_httpStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateStageResponse' {Int
httpStatus :: Int
$sel:httpStatus:CreateStageResponse' :: CreateStageResponse -> Int
httpStatus} -> Int
httpStatus) (\s :: CreateStageResponse
s@CreateStageResponse' {} Int
a -> CreateStageResponse
s {$sel:httpStatus:CreateStageResponse' :: Int
httpStatus = Int
a} :: CreateStageResponse)

instance Prelude.NFData CreateStageResponse where
  rnf :: CreateStageResponse -> ()
rnf CreateStageResponse' {Int
Maybe Bool
Maybe Text
Maybe (HashMap Text Text)
Maybe (HashMap Text RouteSettings)
Maybe ISO8601
Maybe AccessLogSettings
Maybe RouteSettings
httpStatus :: Int
tags :: Maybe (HashMap Text Text)
stageVariables :: Maybe (HashMap Text Text)
stageName :: Maybe Text
routeSettings :: Maybe (HashMap Text RouteSettings)
lastUpdatedDate :: Maybe ISO8601
lastDeploymentStatusMessage :: Maybe Text
description :: Maybe Text
deploymentId :: Maybe Text
defaultRouteSettings :: Maybe RouteSettings
createdDate :: Maybe ISO8601
clientCertificateId :: Maybe Text
autoDeploy :: Maybe Bool
apiGatewayManaged :: Maybe Bool
accessLogSettings :: Maybe AccessLogSettings
$sel:httpStatus:CreateStageResponse' :: CreateStageResponse -> Int
$sel:tags:CreateStageResponse' :: CreateStageResponse -> Maybe (HashMap Text Text)
$sel:stageVariables:CreateStageResponse' :: CreateStageResponse -> Maybe (HashMap Text Text)
$sel:stageName:CreateStageResponse' :: CreateStageResponse -> Maybe Text
$sel:routeSettings:CreateStageResponse' :: CreateStageResponse -> Maybe (HashMap Text RouteSettings)
$sel:lastUpdatedDate:CreateStageResponse' :: CreateStageResponse -> Maybe ISO8601
$sel:lastDeploymentStatusMessage:CreateStageResponse' :: CreateStageResponse -> Maybe Text
$sel:description:CreateStageResponse' :: CreateStageResponse -> Maybe Text
$sel:deploymentId:CreateStageResponse' :: CreateStageResponse -> Maybe Text
$sel:defaultRouteSettings:CreateStageResponse' :: CreateStageResponse -> Maybe RouteSettings
$sel:createdDate:CreateStageResponse' :: CreateStageResponse -> Maybe ISO8601
$sel:clientCertificateId:CreateStageResponse' :: CreateStageResponse -> Maybe Text
$sel:autoDeploy:CreateStageResponse' :: CreateStageResponse -> Maybe Bool
$sel:apiGatewayManaged:CreateStageResponse' :: CreateStageResponse -> Maybe Bool
$sel:accessLogSettings:CreateStageResponse' :: CreateStageResponse -> Maybe AccessLogSettings
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe AccessLogSettings
accessLogSettings
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
apiGatewayManaged
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
autoDeploy
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
clientCertificateId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ISO8601
createdDate
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe RouteSettings
defaultRouteSettings
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
deploymentId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
description
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
lastDeploymentStatusMessage
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ISO8601
lastUpdatedDate
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (HashMap Text RouteSettings)
routeSettings
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
stageName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (HashMap Text Text)
stageVariables
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (HashMap Text Text)
tags
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus