{-# 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.GamesParks.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 new stage for stage-by-stage game development and deployment.
module Amazonka.GamesParks.CreateStage
  ( -- * Creating a Request
    CreateStage (..),
    newCreateStage,

    -- * Request Lenses
    createStage_clientToken,
    createStage_description,
    createStage_tags,
    createStage_gameName,
    createStage_role,
    createStage_stageName,

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

    -- * Response Lenses
    createStageResponse_stage,
    createStageResponse_httpStatus,
  )
where

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

-- | /See:/ 'newCreateStage' smart constructor.
data CreateStage = CreateStage'
  { -- | A client-defined token. With an active client token in the request, this
    -- action is idempotent.
    CreateStage -> Maybe Text
clientToken :: Prelude.Maybe Prelude.Text,
    -- | The description of the stage.
    CreateStage -> Maybe Text
description :: Prelude.Maybe Prelude.Text,
    -- | The list of tags to apply to the stage.
    CreateStage -> Maybe (HashMap Text Text)
tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
    -- | The name of the game.
    CreateStage -> Text
gameName :: Prelude.Text,
    -- | The Amazon Resource Name (ARN) of the role to run the game with. This
    -- role can be a game-defined role or the default role that GameSparks
    -- created.
    CreateStage -> Text
role' :: 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:
--
-- 'clientToken', 'createStage_clientToken' - A client-defined token. With an active client token in the request, this
-- action is idempotent.
--
-- 'description', 'createStage_description' - The description of the stage.
--
-- 'tags', 'createStage_tags' - The list of tags to apply to the stage.
--
-- 'gameName', 'createStage_gameName' - The name of the game.
--
-- 'role'', 'createStage_role' - The Amazon Resource Name (ARN) of the role to run the game with. This
-- role can be a game-defined role or the default role that GameSparks
-- created.
--
-- 'stageName', 'createStage_stageName' - The name of the stage.
newCreateStage ::
  -- | 'gameName'
  Prelude.Text ->
  -- | 'role''
  Prelude.Text ->
  -- | 'stageName'
  Prelude.Text ->
  CreateStage
newCreateStage :: Text -> Text -> Text -> CreateStage
newCreateStage Text
pGameName_ Text
pRole_ Text
pStageName_ =
  CreateStage'
    { $sel:clientToken:CreateStage' :: Maybe Text
clientToken = forall a. Maybe a
Prelude.Nothing,
      $sel:description:CreateStage' :: Maybe Text
description = forall a. Maybe a
Prelude.Nothing,
      $sel:tags:CreateStage' :: Maybe (HashMap Text Text)
tags = forall a. Maybe a
Prelude.Nothing,
      $sel:gameName:CreateStage' :: Text
gameName = Text
pGameName_,
      $sel:role':CreateStage' :: Text
role' = Text
pRole_,
      $sel:stageName:CreateStage' :: Text
stageName = Text
pStageName_
    }

-- | A client-defined token. With an active client token in the request, this
-- action is idempotent.
createStage_clientToken :: Lens.Lens' CreateStage (Prelude.Maybe Prelude.Text)
createStage_clientToken :: Lens' CreateStage (Maybe Text)
createStage_clientToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateStage' {Maybe Text
clientToken :: Maybe Text
$sel:clientToken:CreateStage' :: CreateStage -> Maybe Text
clientToken} -> Maybe Text
clientToken) (\s :: CreateStage
s@CreateStage' {} Maybe Text
a -> CreateStage
s {$sel:clientToken:CreateStage' :: Maybe Text
clientToken = Maybe Text
a} :: CreateStage)

-- | The description of the 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)

-- | The list of tags to apply to the stage.
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 name of the game.
createStage_gameName :: Lens.Lens' CreateStage Prelude.Text
createStage_gameName :: Lens' CreateStage Text
createStage_gameName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateStage' {Text
gameName :: Text
$sel:gameName:CreateStage' :: CreateStage -> Text
gameName} -> Text
gameName) (\s :: CreateStage
s@CreateStage' {} Text
a -> CreateStage
s {$sel:gameName:CreateStage' :: Text
gameName = Text
a} :: CreateStage)

-- | The Amazon Resource Name (ARN) of the role to run the game with. This
-- role can be a game-defined role or the default role that GameSparks
-- created.
createStage_role :: Lens.Lens' CreateStage Prelude.Text
createStage_role :: Lens' CreateStage Text
createStage_role = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateStage' {Text
role' :: Text
$sel:role':CreateStage' :: CreateStage -> Text
role'} -> Text
role') (\s :: CreateStage
s@CreateStage' {} Text
a -> CreateStage
s {$sel:role':CreateStage' :: Text
role' = 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 StageDetails -> 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
"Stage")
            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 Text
Maybe (HashMap Text Text)
Text
stageName :: Text
role' :: Text
gameName :: Text
tags :: Maybe (HashMap Text Text)
description :: Maybe Text
clientToken :: Maybe Text
$sel:stageName:CreateStage' :: CreateStage -> Text
$sel:role':CreateStage' :: CreateStage -> Text
$sel:gameName:CreateStage' :: CreateStage -> Text
$sel:tags:CreateStage' :: CreateStage -> Maybe (HashMap Text Text)
$sel:description:CreateStage' :: CreateStage -> Maybe Text
$sel:clientToken:CreateStage' :: CreateStage -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
clientToken
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
description
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (HashMap Text Text)
tags
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
gameName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
role'
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
stageName

instance Prelude.NFData CreateStage where
  rnf :: CreateStage -> ()
rnf CreateStage' {Maybe Text
Maybe (HashMap Text Text)
Text
stageName :: Text
role' :: Text
gameName :: Text
tags :: Maybe (HashMap Text Text)
description :: Maybe Text
clientToken :: Maybe Text
$sel:stageName:CreateStage' :: CreateStage -> Text
$sel:role':CreateStage' :: CreateStage -> Text
$sel:gameName:CreateStage' :: CreateStage -> Text
$sel:tags:CreateStage' :: CreateStage -> Maybe (HashMap Text Text)
$sel:description:CreateStage' :: CreateStage -> Maybe Text
$sel:clientToken:CreateStage' :: CreateStage -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
clientToken
      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 Text)
tags
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
gameName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
role'
      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 Text
Maybe (HashMap Text Text)
Text
stageName :: Text
role' :: Text
gameName :: Text
tags :: Maybe (HashMap Text Text)
description :: Maybe Text
clientToken :: Maybe Text
$sel:stageName:CreateStage' :: CreateStage -> Text
$sel:role':CreateStage' :: CreateStage -> Text
$sel:gameName:CreateStage' :: CreateStage -> Text
$sel:tags:CreateStage' :: CreateStage -> Maybe (HashMap Text Text)
$sel:description:CreateStage' :: CreateStage -> Maybe Text
$sel:clientToken:CreateStage' :: CreateStage -> Maybe Text
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"ClientToken" 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
clientToken,
            (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
"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
"Role" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
role'),
            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 Text
Maybe (HashMap Text Text)
Text
stageName :: Text
role' :: Text
gameName :: Text
tags :: Maybe (HashMap Text Text)
description :: Maybe Text
clientToken :: Maybe Text
$sel:stageName:CreateStage' :: CreateStage -> Text
$sel:role':CreateStage' :: CreateStage -> Text
$sel:gameName:CreateStage' :: CreateStage -> Text
$sel:tags:CreateStage' :: CreateStage -> Maybe (HashMap Text Text)
$sel:description:CreateStage' :: CreateStage -> Maybe Text
$sel:clientToken:CreateStage' :: CreateStage -> Maybe Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ByteString
"/game/", forall a. ToByteString a => a -> ByteString
Data.toBS Text
gameName, ByteString
"/stage"]

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'
  { -- | Properties that describe the stage.
    CreateStageResponse -> Maybe StageDetails
stage :: Prelude.Maybe StageDetails,
    -- | 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:
--
-- 'stage', 'createStageResponse_stage' - Properties that describe the stage.
--
-- 'httpStatus', 'createStageResponse_httpStatus' - The response's http status code.
newCreateStageResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  CreateStageResponse
newCreateStageResponse :: Int -> CreateStageResponse
newCreateStageResponse Int
pHttpStatus_ =
  CreateStageResponse'
    { $sel:stage:CreateStageResponse' :: Maybe StageDetails
stage = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:CreateStageResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | Properties that describe the stage.
createStageResponse_stage :: Lens.Lens' CreateStageResponse (Prelude.Maybe StageDetails)
createStageResponse_stage :: Lens' CreateStageResponse (Maybe StageDetails)
createStageResponse_stage = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateStageResponse' {Maybe StageDetails
stage :: Maybe StageDetails
$sel:stage:CreateStageResponse' :: CreateStageResponse -> Maybe StageDetails
stage} -> Maybe StageDetails
stage) (\s :: CreateStageResponse
s@CreateStageResponse' {} Maybe StageDetails
a -> CreateStageResponse
s {$sel:stage:CreateStageResponse' :: Maybe StageDetails
stage = Maybe StageDetails
a} :: CreateStageResponse)

-- | 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 StageDetails
httpStatus :: Int
stage :: Maybe StageDetails
$sel:httpStatus:CreateStageResponse' :: CreateStageResponse -> Int
$sel:stage:CreateStageResponse' :: CreateStageResponse -> Maybe StageDetails
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe StageDetails
stage
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus