{-# 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.IoT.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.
--
-- Requires permission to access the
-- <https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiot.html#awsiot-actions-as-permissions CreateJobTemplate>
-- action.
module Amazonka.IoT.CreateJobTemplate
  ( -- * Creating a Request
    CreateJobTemplate (..),
    newCreateJobTemplate,

    -- * Request Lenses
    createJobTemplate_abortConfig,
    createJobTemplate_document,
    createJobTemplate_documentSource,
    createJobTemplate_jobArn,
    createJobTemplate_jobExecutionsRetryConfig,
    createJobTemplate_jobExecutionsRolloutConfig,
    createJobTemplate_presignedUrlConfig,
    createJobTemplate_tags,
    createJobTemplate_timeoutConfig,
    createJobTemplate_jobTemplateId,
    createJobTemplate_description,

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

    -- * Response Lenses
    createJobTemplateResponse_jobTemplateArn,
    createJobTemplateResponse_jobTemplateId,
    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.IoT.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'
  { CreateJobTemplate -> Maybe AbortConfig
abortConfig :: Prelude.Maybe AbortConfig,
    -- | The job document. Required if you don\'t specify a value for
    -- @documentSource@.
    CreateJobTemplate -> Maybe Text
document :: Prelude.Maybe Prelude.Text,
    -- | An S3 link to the job document to use in the template. Required if you
    -- don\'t specify a value for @document@.
    --
    -- If the job document resides in an S3 bucket, you must use a placeholder
    -- link when specifying the document.
    --
    -- The placeholder link is of the following form:
    --
    -- @${aws:iot:s3-presigned-url:https:\/\/s3.amazonaws.com\/@/@bucket@/@\/@/@key@/@}@
    --
    -- where /bucket/ is your bucket name and /key/ is the object in the bucket
    -- to which you are linking.
    CreateJobTemplate -> Maybe Text
documentSource :: Prelude.Maybe Prelude.Text,
    -- | The ARN of the job to use as the basis for the job template.
    CreateJobTemplate -> Maybe Text
jobArn :: Prelude.Maybe Prelude.Text,
    -- | Allows you to create the criteria to retry a job.
    CreateJobTemplate -> Maybe JobExecutionsRetryConfig
jobExecutionsRetryConfig :: Prelude.Maybe JobExecutionsRetryConfig,
    CreateJobTemplate -> Maybe JobExecutionsRolloutConfig
jobExecutionsRolloutConfig :: Prelude.Maybe JobExecutionsRolloutConfig,
    CreateJobTemplate -> Maybe PresignedUrlConfig
presignedUrlConfig :: Prelude.Maybe PresignedUrlConfig,
    -- | Metadata that can be used to manage the job template.
    CreateJobTemplate -> Maybe [Tag]
tags :: Prelude.Maybe [Tag],
    CreateJobTemplate -> Maybe TimeoutConfig
timeoutConfig :: Prelude.Maybe TimeoutConfig,
    -- | A unique identifier for the job template. We recommend using a UUID.
    -- Alpha-numeric characters, \"-\", and \"_\" are valid for use here.
    CreateJobTemplate -> Text
jobTemplateId :: Prelude.Text,
    -- | A description of the job document.
    CreateJobTemplate -> Text
description :: Prelude.Text
  }
  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, ReadPrec [CreateJobTemplate]
ReadPrec CreateJobTemplate
Int -> ReadS CreateJobTemplate
ReadS [CreateJobTemplate]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CreateJobTemplate]
$creadListPrec :: ReadPrec [CreateJobTemplate]
readPrec :: ReadPrec CreateJobTemplate
$creadPrec :: ReadPrec CreateJobTemplate
readList :: ReadS [CreateJobTemplate]
$creadList :: ReadS [CreateJobTemplate]
readsPrec :: Int -> ReadS CreateJobTemplate
$creadsPrec :: Int -> ReadS CreateJobTemplate
Prelude.Read, 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:
--
-- 'abortConfig', 'createJobTemplate_abortConfig' - Undocumented member.
--
-- 'document', 'createJobTemplate_document' - The job document. Required if you don\'t specify a value for
-- @documentSource@.
--
-- 'documentSource', 'createJobTemplate_documentSource' - An S3 link to the job document to use in the template. Required if you
-- don\'t specify a value for @document@.
--
-- If the job document resides in an S3 bucket, you must use a placeholder
-- link when specifying the document.
--
-- The placeholder link is of the following form:
--
-- @${aws:iot:s3-presigned-url:https:\/\/s3.amazonaws.com\/@/@bucket@/@\/@/@key@/@}@
--
-- where /bucket/ is your bucket name and /key/ is the object in the bucket
-- to which you are linking.
--
-- 'jobArn', 'createJobTemplate_jobArn' - The ARN of the job to use as the basis for the job template.
--
-- 'jobExecutionsRetryConfig', 'createJobTemplate_jobExecutionsRetryConfig' - Allows you to create the criteria to retry a job.
--
-- 'jobExecutionsRolloutConfig', 'createJobTemplate_jobExecutionsRolloutConfig' - Undocumented member.
--
-- 'presignedUrlConfig', 'createJobTemplate_presignedUrlConfig' - Undocumented member.
--
-- 'tags', 'createJobTemplate_tags' - Metadata that can be used to manage the job template.
--
-- 'timeoutConfig', 'createJobTemplate_timeoutConfig' - Undocumented member.
--
-- 'jobTemplateId', 'createJobTemplate_jobTemplateId' - A unique identifier for the job template. We recommend using a UUID.
-- Alpha-numeric characters, \"-\", and \"_\" are valid for use here.
--
-- 'description', 'createJobTemplate_description' - A description of the job document.
newCreateJobTemplate ::
  -- | 'jobTemplateId'
  Prelude.Text ->
  -- | 'description'
  Prelude.Text ->
  CreateJobTemplate
newCreateJobTemplate :: Text -> Text -> CreateJobTemplate
newCreateJobTemplate Text
pJobTemplateId_ Text
pDescription_ =
  CreateJobTemplate'
    { $sel:abortConfig:CreateJobTemplate' :: Maybe AbortConfig
abortConfig = forall a. Maybe a
Prelude.Nothing,
      $sel:document:CreateJobTemplate' :: Maybe Text
document = forall a. Maybe a
Prelude.Nothing,
      $sel:documentSource:CreateJobTemplate' :: Maybe Text
documentSource = forall a. Maybe a
Prelude.Nothing,
      $sel:jobArn:CreateJobTemplate' :: Maybe Text
jobArn = forall a. Maybe a
Prelude.Nothing,
      $sel:jobExecutionsRetryConfig:CreateJobTemplate' :: Maybe JobExecutionsRetryConfig
jobExecutionsRetryConfig = forall a. Maybe a
Prelude.Nothing,
      $sel:jobExecutionsRolloutConfig:CreateJobTemplate' :: Maybe JobExecutionsRolloutConfig
jobExecutionsRolloutConfig = forall a. Maybe a
Prelude.Nothing,
      $sel:presignedUrlConfig:CreateJobTemplate' :: Maybe PresignedUrlConfig
presignedUrlConfig = forall a. Maybe a
Prelude.Nothing,
      $sel:tags:CreateJobTemplate' :: Maybe [Tag]
tags = forall a. Maybe a
Prelude.Nothing,
      $sel:timeoutConfig:CreateJobTemplate' :: Maybe TimeoutConfig
timeoutConfig = forall a. Maybe a
Prelude.Nothing,
      $sel:jobTemplateId:CreateJobTemplate' :: Text
jobTemplateId = Text
pJobTemplateId_,
      $sel:description:CreateJobTemplate' :: Text
description = Text
pDescription_
    }

-- | Undocumented member.
createJobTemplate_abortConfig :: Lens.Lens' CreateJobTemplate (Prelude.Maybe AbortConfig)
createJobTemplate_abortConfig :: Lens' CreateJobTemplate (Maybe AbortConfig)
createJobTemplate_abortConfig = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateJobTemplate' {Maybe AbortConfig
abortConfig :: Maybe AbortConfig
$sel:abortConfig:CreateJobTemplate' :: CreateJobTemplate -> Maybe AbortConfig
abortConfig} -> Maybe AbortConfig
abortConfig) (\s :: CreateJobTemplate
s@CreateJobTemplate' {} Maybe AbortConfig
a -> CreateJobTemplate
s {$sel:abortConfig:CreateJobTemplate' :: Maybe AbortConfig
abortConfig = Maybe AbortConfig
a} :: CreateJobTemplate)

-- | The job document. Required if you don\'t specify a value for
-- @documentSource@.
createJobTemplate_document :: Lens.Lens' CreateJobTemplate (Prelude.Maybe Prelude.Text)
createJobTemplate_document :: Lens' CreateJobTemplate (Maybe Text)
createJobTemplate_document = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateJobTemplate' {Maybe Text
document :: Maybe Text
$sel:document:CreateJobTemplate' :: CreateJobTemplate -> Maybe Text
document} -> Maybe Text
document) (\s :: CreateJobTemplate
s@CreateJobTemplate' {} Maybe Text
a -> CreateJobTemplate
s {$sel:document:CreateJobTemplate' :: Maybe Text
document = Maybe Text
a} :: CreateJobTemplate)

-- | An S3 link to the job document to use in the template. Required if you
-- don\'t specify a value for @document@.
--
-- If the job document resides in an S3 bucket, you must use a placeholder
-- link when specifying the document.
--
-- The placeholder link is of the following form:
--
-- @${aws:iot:s3-presigned-url:https:\/\/s3.amazonaws.com\/@/@bucket@/@\/@/@key@/@}@
--
-- where /bucket/ is your bucket name and /key/ is the object in the bucket
-- to which you are linking.
createJobTemplate_documentSource :: Lens.Lens' CreateJobTemplate (Prelude.Maybe Prelude.Text)
createJobTemplate_documentSource :: Lens' CreateJobTemplate (Maybe Text)
createJobTemplate_documentSource = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateJobTemplate' {Maybe Text
documentSource :: Maybe Text
$sel:documentSource:CreateJobTemplate' :: CreateJobTemplate -> Maybe Text
documentSource} -> Maybe Text
documentSource) (\s :: CreateJobTemplate
s@CreateJobTemplate' {} Maybe Text
a -> CreateJobTemplate
s {$sel:documentSource:CreateJobTemplate' :: Maybe Text
documentSource = Maybe Text
a} :: CreateJobTemplate)

-- | The ARN of the job to use as the basis for the job template.
createJobTemplate_jobArn :: Lens.Lens' CreateJobTemplate (Prelude.Maybe Prelude.Text)
createJobTemplate_jobArn :: Lens' CreateJobTemplate (Maybe Text)
createJobTemplate_jobArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateJobTemplate' {Maybe Text
jobArn :: Maybe Text
$sel:jobArn:CreateJobTemplate' :: CreateJobTemplate -> Maybe Text
jobArn} -> Maybe Text
jobArn) (\s :: CreateJobTemplate
s@CreateJobTemplate' {} Maybe Text
a -> CreateJobTemplate
s {$sel:jobArn:CreateJobTemplate' :: Maybe Text
jobArn = Maybe Text
a} :: CreateJobTemplate)

-- | Allows you to create the criteria to retry a job.
createJobTemplate_jobExecutionsRetryConfig :: Lens.Lens' CreateJobTemplate (Prelude.Maybe JobExecutionsRetryConfig)
createJobTemplate_jobExecutionsRetryConfig :: Lens' CreateJobTemplate (Maybe JobExecutionsRetryConfig)
createJobTemplate_jobExecutionsRetryConfig = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateJobTemplate' {Maybe JobExecutionsRetryConfig
jobExecutionsRetryConfig :: Maybe JobExecutionsRetryConfig
$sel:jobExecutionsRetryConfig:CreateJobTemplate' :: CreateJobTemplate -> Maybe JobExecutionsRetryConfig
jobExecutionsRetryConfig} -> Maybe JobExecutionsRetryConfig
jobExecutionsRetryConfig) (\s :: CreateJobTemplate
s@CreateJobTemplate' {} Maybe JobExecutionsRetryConfig
a -> CreateJobTemplate
s {$sel:jobExecutionsRetryConfig:CreateJobTemplate' :: Maybe JobExecutionsRetryConfig
jobExecutionsRetryConfig = Maybe JobExecutionsRetryConfig
a} :: CreateJobTemplate)

-- | Undocumented member.
createJobTemplate_jobExecutionsRolloutConfig :: Lens.Lens' CreateJobTemplate (Prelude.Maybe JobExecutionsRolloutConfig)
createJobTemplate_jobExecutionsRolloutConfig :: Lens' CreateJobTemplate (Maybe JobExecutionsRolloutConfig)
createJobTemplate_jobExecutionsRolloutConfig = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateJobTemplate' {Maybe JobExecutionsRolloutConfig
jobExecutionsRolloutConfig :: Maybe JobExecutionsRolloutConfig
$sel:jobExecutionsRolloutConfig:CreateJobTemplate' :: CreateJobTemplate -> Maybe JobExecutionsRolloutConfig
jobExecutionsRolloutConfig} -> Maybe JobExecutionsRolloutConfig
jobExecutionsRolloutConfig) (\s :: CreateJobTemplate
s@CreateJobTemplate' {} Maybe JobExecutionsRolloutConfig
a -> CreateJobTemplate
s {$sel:jobExecutionsRolloutConfig:CreateJobTemplate' :: Maybe JobExecutionsRolloutConfig
jobExecutionsRolloutConfig = Maybe JobExecutionsRolloutConfig
a} :: CreateJobTemplate)

-- | Undocumented member.
createJobTemplate_presignedUrlConfig :: Lens.Lens' CreateJobTemplate (Prelude.Maybe PresignedUrlConfig)
createJobTemplate_presignedUrlConfig :: Lens' CreateJobTemplate (Maybe PresignedUrlConfig)
createJobTemplate_presignedUrlConfig = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateJobTemplate' {Maybe PresignedUrlConfig
presignedUrlConfig :: Maybe PresignedUrlConfig
$sel:presignedUrlConfig:CreateJobTemplate' :: CreateJobTemplate -> Maybe PresignedUrlConfig
presignedUrlConfig} -> Maybe PresignedUrlConfig
presignedUrlConfig) (\s :: CreateJobTemplate
s@CreateJobTemplate' {} Maybe PresignedUrlConfig
a -> CreateJobTemplate
s {$sel:presignedUrlConfig:CreateJobTemplate' :: Maybe PresignedUrlConfig
presignedUrlConfig = Maybe PresignedUrlConfig
a} :: CreateJobTemplate)

-- | Metadata that can be used to manage the job template.
createJobTemplate_tags :: Lens.Lens' CreateJobTemplate (Prelude.Maybe [Tag])
createJobTemplate_tags :: Lens' CreateJobTemplate (Maybe [Tag])
createJobTemplate_tags = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateJobTemplate' {Maybe [Tag]
tags :: Maybe [Tag]
$sel:tags:CreateJobTemplate' :: CreateJobTemplate -> Maybe [Tag]
tags} -> Maybe [Tag]
tags) (\s :: CreateJobTemplate
s@CreateJobTemplate' {} Maybe [Tag]
a -> CreateJobTemplate
s {$sel:tags:CreateJobTemplate' :: Maybe [Tag]
tags = Maybe [Tag]
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

-- | Undocumented member.
createJobTemplate_timeoutConfig :: Lens.Lens' CreateJobTemplate (Prelude.Maybe TimeoutConfig)
createJobTemplate_timeoutConfig :: Lens' CreateJobTemplate (Maybe TimeoutConfig)
createJobTemplate_timeoutConfig = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateJobTemplate' {Maybe TimeoutConfig
timeoutConfig :: Maybe TimeoutConfig
$sel:timeoutConfig:CreateJobTemplate' :: CreateJobTemplate -> Maybe TimeoutConfig
timeoutConfig} -> Maybe TimeoutConfig
timeoutConfig) (\s :: CreateJobTemplate
s@CreateJobTemplate' {} Maybe TimeoutConfig
a -> CreateJobTemplate
s {$sel:timeoutConfig:CreateJobTemplate' :: Maybe TimeoutConfig
timeoutConfig = Maybe TimeoutConfig
a} :: CreateJobTemplate)

-- | A unique identifier for the job template. We recommend using a UUID.
-- Alpha-numeric characters, \"-\", and \"_\" are valid for use here.
createJobTemplate_jobTemplateId :: Lens.Lens' CreateJobTemplate Prelude.Text
createJobTemplate_jobTemplateId :: Lens' CreateJobTemplate Text
createJobTemplate_jobTemplateId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateJobTemplate' {Text
jobTemplateId :: Text
$sel:jobTemplateId:CreateJobTemplate' :: CreateJobTemplate -> Text
jobTemplateId} -> Text
jobTemplateId) (\s :: CreateJobTemplate
s@CreateJobTemplate' {} Text
a -> CreateJobTemplate
s {$sel:jobTemplateId:CreateJobTemplate' :: Text
jobTemplateId = Text
a} :: CreateJobTemplate)

-- | A description of the job document.
createJobTemplate_description :: Lens.Lens' CreateJobTemplate Prelude.Text
createJobTemplate_description :: Lens' CreateJobTemplate Text
createJobTemplate_description = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateJobTemplate' {Text
description :: Text
$sel:description:CreateJobTemplate' :: CreateJobTemplate -> Text
description} -> Text
description) (\s :: CreateJobTemplate
s@CreateJobTemplate' {} Text
a -> CreateJobTemplate
s {$sel:description:CreateJobTemplate' :: Text
description = Text
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.putJSON (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 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
"jobTemplateArn")
            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
"jobTemplateId")
            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 [Tag]
Maybe Text
Maybe AbortConfig
Maybe PresignedUrlConfig
Maybe JobExecutionsRolloutConfig
Maybe JobExecutionsRetryConfig
Maybe TimeoutConfig
Text
description :: Text
jobTemplateId :: Text
timeoutConfig :: Maybe TimeoutConfig
tags :: Maybe [Tag]
presignedUrlConfig :: Maybe PresignedUrlConfig
jobExecutionsRolloutConfig :: Maybe JobExecutionsRolloutConfig
jobExecutionsRetryConfig :: Maybe JobExecutionsRetryConfig
jobArn :: Maybe Text
documentSource :: Maybe Text
document :: Maybe Text
abortConfig :: Maybe AbortConfig
$sel:description:CreateJobTemplate' :: CreateJobTemplate -> Text
$sel:jobTemplateId:CreateJobTemplate' :: CreateJobTemplate -> Text
$sel:timeoutConfig:CreateJobTemplate' :: CreateJobTemplate -> Maybe TimeoutConfig
$sel:tags:CreateJobTemplate' :: CreateJobTemplate -> Maybe [Tag]
$sel:presignedUrlConfig:CreateJobTemplate' :: CreateJobTemplate -> Maybe PresignedUrlConfig
$sel:jobExecutionsRolloutConfig:CreateJobTemplate' :: CreateJobTemplate -> Maybe JobExecutionsRolloutConfig
$sel:jobExecutionsRetryConfig:CreateJobTemplate' :: CreateJobTemplate -> Maybe JobExecutionsRetryConfig
$sel:jobArn:CreateJobTemplate' :: CreateJobTemplate -> Maybe Text
$sel:documentSource:CreateJobTemplate' :: CreateJobTemplate -> Maybe Text
$sel:document:CreateJobTemplate' :: CreateJobTemplate -> Maybe Text
$sel:abortConfig:CreateJobTemplate' :: CreateJobTemplate -> Maybe AbortConfig
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe AbortConfig
abortConfig
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
document
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
documentSource
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
jobArn
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe JobExecutionsRetryConfig
jobExecutionsRetryConfig
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe JobExecutionsRolloutConfig
jobExecutionsRolloutConfig
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe PresignedUrlConfig
presignedUrlConfig
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Tag]
tags
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe TimeoutConfig
timeoutConfig
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
jobTemplateId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
description

instance Prelude.NFData CreateJobTemplate where
  rnf :: CreateJobTemplate -> ()
rnf CreateJobTemplate' {Maybe [Tag]
Maybe Text
Maybe AbortConfig
Maybe PresignedUrlConfig
Maybe JobExecutionsRolloutConfig
Maybe JobExecutionsRetryConfig
Maybe TimeoutConfig
Text
description :: Text
jobTemplateId :: Text
timeoutConfig :: Maybe TimeoutConfig
tags :: Maybe [Tag]
presignedUrlConfig :: Maybe PresignedUrlConfig
jobExecutionsRolloutConfig :: Maybe JobExecutionsRolloutConfig
jobExecutionsRetryConfig :: Maybe JobExecutionsRetryConfig
jobArn :: Maybe Text
documentSource :: Maybe Text
document :: Maybe Text
abortConfig :: Maybe AbortConfig
$sel:description:CreateJobTemplate' :: CreateJobTemplate -> Text
$sel:jobTemplateId:CreateJobTemplate' :: CreateJobTemplate -> Text
$sel:timeoutConfig:CreateJobTemplate' :: CreateJobTemplate -> Maybe TimeoutConfig
$sel:tags:CreateJobTemplate' :: CreateJobTemplate -> Maybe [Tag]
$sel:presignedUrlConfig:CreateJobTemplate' :: CreateJobTemplate -> Maybe PresignedUrlConfig
$sel:jobExecutionsRolloutConfig:CreateJobTemplate' :: CreateJobTemplate -> Maybe JobExecutionsRolloutConfig
$sel:jobExecutionsRetryConfig:CreateJobTemplate' :: CreateJobTemplate -> Maybe JobExecutionsRetryConfig
$sel:jobArn:CreateJobTemplate' :: CreateJobTemplate -> Maybe Text
$sel:documentSource:CreateJobTemplate' :: CreateJobTemplate -> Maybe Text
$sel:document:CreateJobTemplate' :: CreateJobTemplate -> Maybe Text
$sel:abortConfig:CreateJobTemplate' :: CreateJobTemplate -> Maybe AbortConfig
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe AbortConfig
abortConfig
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
document
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
documentSource
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
jobArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe JobExecutionsRetryConfig
jobExecutionsRetryConfig
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe JobExecutionsRolloutConfig
jobExecutionsRolloutConfig
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe PresignedUrlConfig
presignedUrlConfig
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Tag]
tags
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe TimeoutConfig
timeoutConfig
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
jobTemplateId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
description

instance Data.ToHeaders CreateJobTemplate where
  toHeaders :: CreateJobTemplate -> ResponseHeaders
toHeaders = forall a b. a -> b -> a
Prelude.const forall a. Monoid a => a
Prelude.mempty

instance Data.ToJSON CreateJobTemplate where
  toJSON :: CreateJobTemplate -> Value
toJSON CreateJobTemplate' {Maybe [Tag]
Maybe Text
Maybe AbortConfig
Maybe PresignedUrlConfig
Maybe JobExecutionsRolloutConfig
Maybe JobExecutionsRetryConfig
Maybe TimeoutConfig
Text
description :: Text
jobTemplateId :: Text
timeoutConfig :: Maybe TimeoutConfig
tags :: Maybe [Tag]
presignedUrlConfig :: Maybe PresignedUrlConfig
jobExecutionsRolloutConfig :: Maybe JobExecutionsRolloutConfig
jobExecutionsRetryConfig :: Maybe JobExecutionsRetryConfig
jobArn :: Maybe Text
documentSource :: Maybe Text
document :: Maybe Text
abortConfig :: Maybe AbortConfig
$sel:description:CreateJobTemplate' :: CreateJobTemplate -> Text
$sel:jobTemplateId:CreateJobTemplate' :: CreateJobTemplate -> Text
$sel:timeoutConfig:CreateJobTemplate' :: CreateJobTemplate -> Maybe TimeoutConfig
$sel:tags:CreateJobTemplate' :: CreateJobTemplate -> Maybe [Tag]
$sel:presignedUrlConfig:CreateJobTemplate' :: CreateJobTemplate -> Maybe PresignedUrlConfig
$sel:jobExecutionsRolloutConfig:CreateJobTemplate' :: CreateJobTemplate -> Maybe JobExecutionsRolloutConfig
$sel:jobExecutionsRetryConfig:CreateJobTemplate' :: CreateJobTemplate -> Maybe JobExecutionsRetryConfig
$sel:jobArn:CreateJobTemplate' :: CreateJobTemplate -> Maybe Text
$sel:documentSource:CreateJobTemplate' :: CreateJobTemplate -> Maybe Text
$sel:document:CreateJobTemplate' :: CreateJobTemplate -> Maybe Text
$sel:abortConfig:CreateJobTemplate' :: CreateJobTemplate -> Maybe AbortConfig
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"abortConfig" 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 AbortConfig
abortConfig,
            (Key
"document" 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
document,
            (Key
"documentSource" 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
documentSource,
            (Key
"jobArn" 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
jobArn,
            (Key
"jobExecutionsRetryConfig" 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 JobExecutionsRetryConfig
jobExecutionsRetryConfig,
            (Key
"jobExecutionsRolloutConfig" 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 JobExecutionsRolloutConfig
jobExecutionsRolloutConfig,
            (Key
"presignedUrlConfig" 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 PresignedUrlConfig
presignedUrlConfig,
            (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 [Tag]
tags,
            (Key
"timeoutConfig" 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 TimeoutConfig
timeoutConfig,
            forall a. a -> Maybe a
Prelude.Just (Key
"description" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
description)
          ]
      )

instance Data.ToPath CreateJobTemplate where
  toPath :: CreateJobTemplate -> ByteString
toPath CreateJobTemplate' {Maybe [Tag]
Maybe Text
Maybe AbortConfig
Maybe PresignedUrlConfig
Maybe JobExecutionsRolloutConfig
Maybe JobExecutionsRetryConfig
Maybe TimeoutConfig
Text
description :: Text
jobTemplateId :: Text
timeoutConfig :: Maybe TimeoutConfig
tags :: Maybe [Tag]
presignedUrlConfig :: Maybe PresignedUrlConfig
jobExecutionsRolloutConfig :: Maybe JobExecutionsRolloutConfig
jobExecutionsRetryConfig :: Maybe JobExecutionsRetryConfig
jobArn :: Maybe Text
documentSource :: Maybe Text
document :: Maybe Text
abortConfig :: Maybe AbortConfig
$sel:description:CreateJobTemplate' :: CreateJobTemplate -> Text
$sel:jobTemplateId:CreateJobTemplate' :: CreateJobTemplate -> Text
$sel:timeoutConfig:CreateJobTemplate' :: CreateJobTemplate -> Maybe TimeoutConfig
$sel:tags:CreateJobTemplate' :: CreateJobTemplate -> Maybe [Tag]
$sel:presignedUrlConfig:CreateJobTemplate' :: CreateJobTemplate -> Maybe PresignedUrlConfig
$sel:jobExecutionsRolloutConfig:CreateJobTemplate' :: CreateJobTemplate -> Maybe JobExecutionsRolloutConfig
$sel:jobExecutionsRetryConfig:CreateJobTemplate' :: CreateJobTemplate -> Maybe JobExecutionsRetryConfig
$sel:jobArn:CreateJobTemplate' :: CreateJobTemplate -> Maybe Text
$sel:documentSource:CreateJobTemplate' :: CreateJobTemplate -> Maybe Text
$sel:document:CreateJobTemplate' :: CreateJobTemplate -> Maybe Text
$sel:abortConfig:CreateJobTemplate' :: CreateJobTemplate -> Maybe AbortConfig
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ByteString
"/job-templates/", forall a. ToByteString a => a -> ByteString
Data.toBS Text
jobTemplateId]

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'
  { -- | The ARN of the job template.
    CreateJobTemplateResponse -> Maybe Text
jobTemplateArn :: Prelude.Maybe Prelude.Text,
    -- | The unique identifier of the job template.
    CreateJobTemplateResponse -> Maybe Text
jobTemplateId :: 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:
--
-- 'jobTemplateArn', 'createJobTemplateResponse_jobTemplateArn' - The ARN of the job template.
--
-- 'jobTemplateId', 'createJobTemplateResponse_jobTemplateId' - The unique identifier of the job template.
--
-- 'httpStatus', 'createJobTemplateResponse_httpStatus' - The response's http status code.
newCreateJobTemplateResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  CreateJobTemplateResponse
newCreateJobTemplateResponse :: Int -> CreateJobTemplateResponse
newCreateJobTemplateResponse Int
pHttpStatus_ =
  CreateJobTemplateResponse'
    { $sel:jobTemplateArn:CreateJobTemplateResponse' :: Maybe Text
jobTemplateArn =
        forall a. Maybe a
Prelude.Nothing,
      $sel:jobTemplateId:CreateJobTemplateResponse' :: Maybe Text
jobTemplateId = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:CreateJobTemplateResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | The ARN of the job template.
createJobTemplateResponse_jobTemplateArn :: Lens.Lens' CreateJobTemplateResponse (Prelude.Maybe Prelude.Text)
createJobTemplateResponse_jobTemplateArn :: Lens' CreateJobTemplateResponse (Maybe Text)
createJobTemplateResponse_jobTemplateArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateJobTemplateResponse' {Maybe Text
jobTemplateArn :: Maybe Text
$sel:jobTemplateArn:CreateJobTemplateResponse' :: CreateJobTemplateResponse -> Maybe Text
jobTemplateArn} -> Maybe Text
jobTemplateArn) (\s :: CreateJobTemplateResponse
s@CreateJobTemplateResponse' {} Maybe Text
a -> CreateJobTemplateResponse
s {$sel:jobTemplateArn:CreateJobTemplateResponse' :: Maybe Text
jobTemplateArn = Maybe Text
a} :: CreateJobTemplateResponse)

-- | The unique identifier of the job template.
createJobTemplateResponse_jobTemplateId :: Lens.Lens' CreateJobTemplateResponse (Prelude.Maybe Prelude.Text)
createJobTemplateResponse_jobTemplateId :: Lens' CreateJobTemplateResponse (Maybe Text)
createJobTemplateResponse_jobTemplateId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateJobTemplateResponse' {Maybe Text
jobTemplateId :: Maybe Text
$sel:jobTemplateId:CreateJobTemplateResponse' :: CreateJobTemplateResponse -> Maybe Text
jobTemplateId} -> Maybe Text
jobTemplateId) (\s :: CreateJobTemplateResponse
s@CreateJobTemplateResponse' {} Maybe Text
a -> CreateJobTemplateResponse
s {$sel:jobTemplateId:CreateJobTemplateResponse' :: Maybe Text
jobTemplateId = 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
httpStatus :: Int
jobTemplateId :: Maybe Text
jobTemplateArn :: Maybe Text
$sel:httpStatus:CreateJobTemplateResponse' :: CreateJobTemplateResponse -> Int
$sel:jobTemplateId:CreateJobTemplateResponse' :: CreateJobTemplateResponse -> Maybe Text
$sel:jobTemplateArn:CreateJobTemplateResponse' :: CreateJobTemplateResponse -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
jobTemplateArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
jobTemplateId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus