{-# 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.EMRContainers.CreateJobTemplate
-- 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 job template. Job template stores values of StartJobRun API
-- request in a template and can be used to start a job run. Job template
-- allows two use cases: avoid repeating recurring StartJobRun API request
-- values, enforcing certain values in StartJobRun API request.
module Amazonka.EMRContainers.CreateJobTemplate
  ( -- * Creating a Request
    CreateJobTemplate (..),
    newCreateJobTemplate,

    -- * Request Lenses
    createJobTemplate_kmsKeyArn,
    createJobTemplate_tags,
    createJobTemplate_name,
    createJobTemplate_clientToken,
    createJobTemplate_jobTemplateData,

    -- * Destructuring the Response
    CreateJobTemplateResponse (..),
    newCreateJobTemplateResponse,

    -- * Response Lenses
    createJobTemplateResponse_arn,
    createJobTemplateResponse_createdAt,
    createJobTemplateResponse_id,
    createJobTemplateResponse_name,
    createJobTemplateResponse_httpStatus,
  )
where

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

-- | /See:/ 'newCreateJobTemplate' smart constructor.
data CreateJobTemplate = CreateJobTemplate'
  { -- | The KMS key ARN used to encrypt the job template.
    CreateJobTemplate -> Maybe Text
kmsKeyArn :: Prelude.Maybe Prelude.Text,
    -- | The tags that are associated with the job template.
    CreateJobTemplate -> Maybe (HashMap Text Text)
tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
    -- | The specified name of the job template.
    CreateJobTemplate -> Text
name :: Prelude.Text,
    -- | The client token of the job template.
    CreateJobTemplate -> Text
clientToken :: Prelude.Text,
    -- | The job template data which holds values of StartJobRun API request.
    CreateJobTemplate -> JobTemplateData
jobTemplateData :: JobTemplateData
  }
  deriving (CreateJobTemplate -> CreateJobTemplate -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CreateJobTemplate -> CreateJobTemplate -> Bool
$c/= :: CreateJobTemplate -> CreateJobTemplate -> Bool
== :: CreateJobTemplate -> CreateJobTemplate -> Bool
$c== :: CreateJobTemplate -> CreateJobTemplate -> Bool
Prelude.Eq, Int -> CreateJobTemplate -> ShowS
[CreateJobTemplate] -> ShowS
CreateJobTemplate -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CreateJobTemplate] -> ShowS
$cshowList :: [CreateJobTemplate] -> ShowS
show :: CreateJobTemplate -> String
$cshow :: CreateJobTemplate -> String
showsPrec :: Int -> CreateJobTemplate -> ShowS
$cshowsPrec :: Int -> CreateJobTemplate -> ShowS
Prelude.Show, forall x. Rep CreateJobTemplate x -> CreateJobTemplate
forall x. CreateJobTemplate -> Rep CreateJobTemplate x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep CreateJobTemplate x -> CreateJobTemplate
$cfrom :: forall x. CreateJobTemplate -> Rep CreateJobTemplate x
Prelude.Generic)

-- |
-- Create a value of 'CreateJobTemplate' 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:
--
-- 'kmsKeyArn', 'createJobTemplate_kmsKeyArn' - The KMS key ARN used to encrypt the job template.
--
-- 'tags', 'createJobTemplate_tags' - The tags that are associated with the job template.
--
-- 'name', 'createJobTemplate_name' - The specified name of the job template.
--
-- 'clientToken', 'createJobTemplate_clientToken' - The client token of the job template.
--
-- 'jobTemplateData', 'createJobTemplate_jobTemplateData' - The job template data which holds values of StartJobRun API request.
newCreateJobTemplate ::
  -- | 'name'
  Prelude.Text ->
  -- | 'clientToken'
  Prelude.Text ->
  -- | 'jobTemplateData'
  JobTemplateData ->
  CreateJobTemplate
newCreateJobTemplate :: Text -> Text -> JobTemplateData -> CreateJobTemplate
newCreateJobTemplate
  Text
pName_
  Text
pClientToken_
  JobTemplateData
pJobTemplateData_ =
    CreateJobTemplate'
      { $sel:kmsKeyArn:CreateJobTemplate' :: Maybe Text
kmsKeyArn = forall a. Maybe a
Prelude.Nothing,
        $sel:tags:CreateJobTemplate' :: Maybe (HashMap Text Text)
tags = forall a. Maybe a
Prelude.Nothing,
        $sel:name:CreateJobTemplate' :: Text
name = Text
pName_,
        $sel:clientToken:CreateJobTemplate' :: Text
clientToken = Text
pClientToken_,
        $sel:jobTemplateData:CreateJobTemplate' :: JobTemplateData
jobTemplateData = JobTemplateData
pJobTemplateData_
      }

-- | The KMS key ARN used to encrypt the job template.
createJobTemplate_kmsKeyArn :: Lens.Lens' CreateJobTemplate (Prelude.Maybe Prelude.Text)
createJobTemplate_kmsKeyArn :: Lens' CreateJobTemplate (Maybe Text)
createJobTemplate_kmsKeyArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateJobTemplate' {Maybe Text
kmsKeyArn :: Maybe Text
$sel:kmsKeyArn:CreateJobTemplate' :: CreateJobTemplate -> Maybe Text
kmsKeyArn} -> Maybe Text
kmsKeyArn) (\s :: CreateJobTemplate
s@CreateJobTemplate' {} Maybe Text
a -> CreateJobTemplate
s {$sel:kmsKeyArn:CreateJobTemplate' :: Maybe Text
kmsKeyArn = Maybe Text
a} :: CreateJobTemplate)

-- | The tags that are associated with the job template.
createJobTemplate_tags :: Lens.Lens' CreateJobTemplate (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
createJobTemplate_tags :: Lens' CreateJobTemplate (Maybe (HashMap Text Text))
createJobTemplate_tags = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateJobTemplate' {Maybe (HashMap Text Text)
tags :: Maybe (HashMap Text Text)
$sel:tags:CreateJobTemplate' :: CreateJobTemplate -> Maybe (HashMap Text Text)
tags} -> Maybe (HashMap Text Text)
tags) (\s :: CreateJobTemplate
s@CreateJobTemplate' {} Maybe (HashMap Text Text)
a -> CreateJobTemplate
s {$sel:tags:CreateJobTemplate' :: Maybe (HashMap Text Text)
tags = Maybe (HashMap Text Text)
a} :: CreateJobTemplate) 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 specified name of the job template.
createJobTemplate_name :: Lens.Lens' CreateJobTemplate Prelude.Text
createJobTemplate_name :: Lens' CreateJobTemplate Text
createJobTemplate_name = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateJobTemplate' {Text
name :: Text
$sel:name:CreateJobTemplate' :: CreateJobTemplate -> Text
name} -> Text
name) (\s :: CreateJobTemplate
s@CreateJobTemplate' {} Text
a -> CreateJobTemplate
s {$sel:name:CreateJobTemplate' :: Text
name = Text
a} :: CreateJobTemplate)

-- | The client token of the job template.
createJobTemplate_clientToken :: Lens.Lens' CreateJobTemplate Prelude.Text
createJobTemplate_clientToken :: Lens' CreateJobTemplate Text
createJobTemplate_clientToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateJobTemplate' {Text
clientToken :: Text
$sel:clientToken:CreateJobTemplate' :: CreateJobTemplate -> Text
clientToken} -> Text
clientToken) (\s :: CreateJobTemplate
s@CreateJobTemplate' {} Text
a -> CreateJobTemplate
s {$sel:clientToken:CreateJobTemplate' :: Text
clientToken = Text
a} :: CreateJobTemplate)

-- | The job template data which holds values of StartJobRun API request.
createJobTemplate_jobTemplateData :: Lens.Lens' CreateJobTemplate JobTemplateData
createJobTemplate_jobTemplateData :: Lens' CreateJobTemplate JobTemplateData
createJobTemplate_jobTemplateData = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateJobTemplate' {JobTemplateData
jobTemplateData :: JobTemplateData
$sel:jobTemplateData:CreateJobTemplate' :: CreateJobTemplate -> JobTemplateData
jobTemplateData} -> JobTemplateData
jobTemplateData) (\s :: CreateJobTemplate
s@CreateJobTemplate' {} JobTemplateData
a -> CreateJobTemplate
s {$sel:jobTemplateData:CreateJobTemplate' :: JobTemplateData
jobTemplateData = JobTemplateData
a} :: CreateJobTemplate)

instance Core.AWSRequest CreateJobTemplate where
  type
    AWSResponse CreateJobTemplate =
      CreateJobTemplateResponse
  request :: (Service -> Service)
-> CreateJobTemplate -> Request CreateJobTemplate
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 CreateJobTemplate
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse CreateJobTemplate)))
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 Text
-> Maybe ISO8601
-> Maybe Text
-> Maybe Text
-> Int
-> CreateJobTemplateResponse
CreateJobTemplateResponse'
            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
"arn")
            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
"createdAt")
            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
"id")
            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
"name")
            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 CreateJobTemplate where
  hashWithSalt :: Int -> CreateJobTemplate -> Int
hashWithSalt Int
_salt CreateJobTemplate' {Maybe Text
Maybe (HashMap Text Text)
Text
JobTemplateData
jobTemplateData :: JobTemplateData
clientToken :: Text
name :: Text
tags :: Maybe (HashMap Text Text)
kmsKeyArn :: Maybe Text
$sel:jobTemplateData:CreateJobTemplate' :: CreateJobTemplate -> JobTemplateData
$sel:clientToken:CreateJobTemplate' :: CreateJobTemplate -> Text
$sel:name:CreateJobTemplate' :: CreateJobTemplate -> Text
$sel:tags:CreateJobTemplate' :: CreateJobTemplate -> Maybe (HashMap Text Text)
$sel:kmsKeyArn:CreateJobTemplate' :: CreateJobTemplate -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
kmsKeyArn
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (HashMap Text Text)
tags
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
name
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
clientToken
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` JobTemplateData
jobTemplateData

instance Prelude.NFData CreateJobTemplate where
  rnf :: CreateJobTemplate -> ()
rnf CreateJobTemplate' {Maybe Text
Maybe (HashMap Text Text)
Text
JobTemplateData
jobTemplateData :: JobTemplateData
clientToken :: Text
name :: Text
tags :: Maybe (HashMap Text Text)
kmsKeyArn :: Maybe Text
$sel:jobTemplateData:CreateJobTemplate' :: CreateJobTemplate -> JobTemplateData
$sel:clientToken:CreateJobTemplate' :: CreateJobTemplate -> Text
$sel:name:CreateJobTemplate' :: CreateJobTemplate -> Text
$sel:tags:CreateJobTemplate' :: CreateJobTemplate -> Maybe (HashMap Text Text)
$sel:kmsKeyArn:CreateJobTemplate' :: CreateJobTemplate -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
kmsKeyArn
      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
name
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
clientToken
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf JobTemplateData
jobTemplateData

instance Data.ToHeaders CreateJobTemplate where
  toHeaders :: CreateJobTemplate -> 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 CreateJobTemplate where
  toJSON :: CreateJobTemplate -> Value
toJSON CreateJobTemplate' {Maybe Text
Maybe (HashMap Text Text)
Text
JobTemplateData
jobTemplateData :: JobTemplateData
clientToken :: Text
name :: Text
tags :: Maybe (HashMap Text Text)
kmsKeyArn :: Maybe Text
$sel:jobTemplateData:CreateJobTemplate' :: CreateJobTemplate -> JobTemplateData
$sel:clientToken:CreateJobTemplate' :: CreateJobTemplate -> Text
$sel:name:CreateJobTemplate' :: CreateJobTemplate -> Text
$sel:tags:CreateJobTemplate' :: CreateJobTemplate -> Maybe (HashMap Text Text)
$sel:kmsKeyArn:CreateJobTemplate' :: CreateJobTemplate -> Maybe Text
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"kmsKeyArn" 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
kmsKeyArn,
            (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
"name" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
name),
            forall a. a -> Maybe a
Prelude.Just (Key
"clientToken" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
clientToken),
            forall a. a -> Maybe a
Prelude.Just
              (Key
"jobTemplateData" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= JobTemplateData
jobTemplateData)
          ]
      )

instance Data.ToPath CreateJobTemplate where
  toPath :: CreateJobTemplate -> ByteString
toPath = forall a b. a -> b -> a
Prelude.const ByteString
"/jobtemplates"

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

-- | /See:/ 'newCreateJobTemplateResponse' smart constructor.
data CreateJobTemplateResponse = CreateJobTemplateResponse'
  { -- | This output display the ARN of the created job template.
    CreateJobTemplateResponse -> Maybe Text
arn :: Prelude.Maybe Prelude.Text,
    -- | This output displays the date and time when the job template was
    -- created.
    CreateJobTemplateResponse -> Maybe ISO8601
createdAt :: Prelude.Maybe Data.ISO8601,
    -- | This output display the created job template ID.
    CreateJobTemplateResponse -> Maybe Text
id :: Prelude.Maybe Prelude.Text,
    -- | This output displays the name of the created job template.
    CreateJobTemplateResponse -> Maybe Text
name :: Prelude.Maybe Prelude.Text,
    -- | The response's http status code.
    CreateJobTemplateResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (CreateJobTemplateResponse -> CreateJobTemplateResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CreateJobTemplateResponse -> CreateJobTemplateResponse -> Bool
$c/= :: CreateJobTemplateResponse -> CreateJobTemplateResponse -> Bool
== :: CreateJobTemplateResponse -> CreateJobTemplateResponse -> Bool
$c== :: CreateJobTemplateResponse -> CreateJobTemplateResponse -> Bool
Prelude.Eq, ReadPrec [CreateJobTemplateResponse]
ReadPrec CreateJobTemplateResponse
Int -> ReadS CreateJobTemplateResponse
ReadS [CreateJobTemplateResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CreateJobTemplateResponse]
$creadListPrec :: ReadPrec [CreateJobTemplateResponse]
readPrec :: ReadPrec CreateJobTemplateResponse
$creadPrec :: ReadPrec CreateJobTemplateResponse
readList :: ReadS [CreateJobTemplateResponse]
$creadList :: ReadS [CreateJobTemplateResponse]
readsPrec :: Int -> ReadS CreateJobTemplateResponse
$creadsPrec :: Int -> ReadS CreateJobTemplateResponse
Prelude.Read, Int -> CreateJobTemplateResponse -> ShowS
[CreateJobTemplateResponse] -> ShowS
CreateJobTemplateResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CreateJobTemplateResponse] -> ShowS
$cshowList :: [CreateJobTemplateResponse] -> ShowS
show :: CreateJobTemplateResponse -> String
$cshow :: CreateJobTemplateResponse -> String
showsPrec :: Int -> CreateJobTemplateResponse -> ShowS
$cshowsPrec :: Int -> CreateJobTemplateResponse -> ShowS
Prelude.Show, forall x.
Rep CreateJobTemplateResponse x -> CreateJobTemplateResponse
forall x.
CreateJobTemplateResponse -> Rep CreateJobTemplateResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep CreateJobTemplateResponse x -> CreateJobTemplateResponse
$cfrom :: forall x.
CreateJobTemplateResponse -> Rep CreateJobTemplateResponse x
Prelude.Generic)

-- |
-- Create a value of 'CreateJobTemplateResponse' 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:
--
-- 'arn', 'createJobTemplateResponse_arn' - This output display the ARN of the created job template.
--
-- 'createdAt', 'createJobTemplateResponse_createdAt' - This output displays the date and time when the job template was
-- created.
--
-- 'id', 'createJobTemplateResponse_id' - This output display the created job template ID.
--
-- 'name', 'createJobTemplateResponse_name' - This output displays the name of the created job template.
--
-- 'httpStatus', 'createJobTemplateResponse_httpStatus' - The response's http status code.
newCreateJobTemplateResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  CreateJobTemplateResponse
newCreateJobTemplateResponse :: Int -> CreateJobTemplateResponse
newCreateJobTemplateResponse Int
pHttpStatus_ =
  CreateJobTemplateResponse'
    { $sel:arn:CreateJobTemplateResponse' :: Maybe Text
arn = forall a. Maybe a
Prelude.Nothing,
      $sel:createdAt:CreateJobTemplateResponse' :: Maybe ISO8601
createdAt = forall a. Maybe a
Prelude.Nothing,
      $sel:id:CreateJobTemplateResponse' :: Maybe Text
id = forall a. Maybe a
Prelude.Nothing,
      $sel:name:CreateJobTemplateResponse' :: Maybe Text
name = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:CreateJobTemplateResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | This output display the ARN of the created job template.
createJobTemplateResponse_arn :: Lens.Lens' CreateJobTemplateResponse (Prelude.Maybe Prelude.Text)
createJobTemplateResponse_arn :: Lens' CreateJobTemplateResponse (Maybe Text)
createJobTemplateResponse_arn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateJobTemplateResponse' {Maybe Text
arn :: Maybe Text
$sel:arn:CreateJobTemplateResponse' :: CreateJobTemplateResponse -> Maybe Text
arn} -> Maybe Text
arn) (\s :: CreateJobTemplateResponse
s@CreateJobTemplateResponse' {} Maybe Text
a -> CreateJobTemplateResponse
s {$sel:arn:CreateJobTemplateResponse' :: Maybe Text
arn = Maybe Text
a} :: CreateJobTemplateResponse)

-- | This output displays the date and time when the job template was
-- created.
createJobTemplateResponse_createdAt :: Lens.Lens' CreateJobTemplateResponse (Prelude.Maybe Prelude.UTCTime)
createJobTemplateResponse_createdAt :: Lens' CreateJobTemplateResponse (Maybe UTCTime)
createJobTemplateResponse_createdAt = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateJobTemplateResponse' {Maybe ISO8601
createdAt :: Maybe ISO8601
$sel:createdAt:CreateJobTemplateResponse' :: CreateJobTemplateResponse -> Maybe ISO8601
createdAt} -> Maybe ISO8601
createdAt) (\s :: CreateJobTemplateResponse
s@CreateJobTemplateResponse' {} Maybe ISO8601
a -> CreateJobTemplateResponse
s {$sel:createdAt:CreateJobTemplateResponse' :: Maybe ISO8601
createdAt = Maybe ISO8601
a} :: CreateJobTemplateResponse) 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

-- | This output display the created job template ID.
createJobTemplateResponse_id :: Lens.Lens' CreateJobTemplateResponse (Prelude.Maybe Prelude.Text)
createJobTemplateResponse_id :: Lens' CreateJobTemplateResponse (Maybe Text)
createJobTemplateResponse_id = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateJobTemplateResponse' {Maybe Text
id :: Maybe Text
$sel:id:CreateJobTemplateResponse' :: CreateJobTemplateResponse -> Maybe Text
id} -> Maybe Text
id) (\s :: CreateJobTemplateResponse
s@CreateJobTemplateResponse' {} Maybe Text
a -> CreateJobTemplateResponse
s {$sel:id:CreateJobTemplateResponse' :: Maybe Text
id = Maybe Text
a} :: CreateJobTemplateResponse)

-- | This output displays the name of the created job template.
createJobTemplateResponse_name :: Lens.Lens' CreateJobTemplateResponse (Prelude.Maybe Prelude.Text)
createJobTemplateResponse_name :: Lens' CreateJobTemplateResponse (Maybe Text)
createJobTemplateResponse_name = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateJobTemplateResponse' {Maybe Text
name :: Maybe Text
$sel:name:CreateJobTemplateResponse' :: CreateJobTemplateResponse -> Maybe Text
name} -> Maybe Text
name) (\s :: CreateJobTemplateResponse
s@CreateJobTemplateResponse' {} Maybe Text
a -> CreateJobTemplateResponse
s {$sel:name:CreateJobTemplateResponse' :: Maybe Text
name = Maybe Text
a} :: CreateJobTemplateResponse)

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

instance Prelude.NFData CreateJobTemplateResponse where
  rnf :: CreateJobTemplateResponse -> ()
rnf CreateJobTemplateResponse' {Int
Maybe Text
Maybe ISO8601
httpStatus :: Int
name :: Maybe Text
id :: Maybe Text
createdAt :: Maybe ISO8601
arn :: Maybe Text
$sel:httpStatus:CreateJobTemplateResponse' :: CreateJobTemplateResponse -> Int
$sel:name:CreateJobTemplateResponse' :: CreateJobTemplateResponse -> Maybe Text
$sel:id:CreateJobTemplateResponse' :: CreateJobTemplateResponse -> Maybe Text
$sel:createdAt:CreateJobTemplateResponse' :: CreateJobTemplateResponse -> Maybe ISO8601
$sel:arn:CreateJobTemplateResponse' :: CreateJobTemplateResponse -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
arn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ISO8601
createdAt
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
id
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
name
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus