{-# 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.Connect.CreateTaskTemplate
-- 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 task template in the specified Amazon Connect instance.
module Amazonka.Connect.CreateTaskTemplate
  ( -- * Creating a Request
    CreateTaskTemplate (..),
    newCreateTaskTemplate,

    -- * Request Lenses
    createTaskTemplate_clientToken,
    createTaskTemplate_constraints,
    createTaskTemplate_contactFlowId,
    createTaskTemplate_defaults,
    createTaskTemplate_description,
    createTaskTemplate_status,
    createTaskTemplate_instanceId,
    createTaskTemplate_name,
    createTaskTemplate_fields,

    -- * Destructuring the Response
    CreateTaskTemplateResponse (..),
    newCreateTaskTemplateResponse,

    -- * Response Lenses
    createTaskTemplateResponse_httpStatus,
    createTaskTemplateResponse_id,
    createTaskTemplateResponse_arn,
  )
where

import Amazonka.Connect.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

-- | /See:/ 'newCreateTaskTemplate' smart constructor.
data CreateTaskTemplate = CreateTaskTemplate'
  { -- | A unique, case-sensitive identifier that you provide to ensure the
    -- idempotency of the request. If not provided, the Amazon Web Services SDK
    -- populates this field. For more information about idempotency, see
    -- <https://aws.amazon.com/builders-library/making-retries-safe-with-idempotent-APIs/ Making retries safe with idempotent APIs>.
    CreateTaskTemplate -> Maybe Text
clientToken :: Prelude.Maybe Prelude.Text,
    -- | Constraints that are applicable to the fields listed.
    CreateTaskTemplate -> Maybe TaskTemplateConstraints
constraints :: Prelude.Maybe TaskTemplateConstraints,
    -- | The identifier of the flow that runs by default when a task is created
    -- by referencing this template.
    CreateTaskTemplate -> Maybe Text
contactFlowId :: Prelude.Maybe Prelude.Text,
    -- | The default values for fields when a task is created by referencing this
    -- template.
    CreateTaskTemplate -> Maybe TaskTemplateDefaults
defaults :: Prelude.Maybe TaskTemplateDefaults,
    -- | The description of the task template.
    CreateTaskTemplate -> Maybe Text
description :: Prelude.Maybe Prelude.Text,
    -- | Marks a template as @ACTIVE@ or @INACTIVE@ for a task to refer to it.
    -- Tasks can only be created from @ACTIVE@ templates. If a template is
    -- marked as @INACTIVE@, then a task that refers to this template cannot be
    -- created.
    CreateTaskTemplate -> Maybe TaskTemplateStatus
status :: Prelude.Maybe TaskTemplateStatus,
    -- | The identifier of the Amazon Connect instance. You can find the
    -- instanceId in the ARN of the instance.
    CreateTaskTemplate -> Text
instanceId :: Prelude.Text,
    -- | The name of the task template.
    CreateTaskTemplate -> Text
name :: Prelude.Text,
    -- | Fields that are part of the template.
    CreateTaskTemplate -> [TaskTemplateField]
fields :: [TaskTemplateField]
  }
  deriving (CreateTaskTemplate -> CreateTaskTemplate -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CreateTaskTemplate -> CreateTaskTemplate -> Bool
$c/= :: CreateTaskTemplate -> CreateTaskTemplate -> Bool
== :: CreateTaskTemplate -> CreateTaskTemplate -> Bool
$c== :: CreateTaskTemplate -> CreateTaskTemplate -> Bool
Prelude.Eq, ReadPrec [CreateTaskTemplate]
ReadPrec CreateTaskTemplate
Int -> ReadS CreateTaskTemplate
ReadS [CreateTaskTemplate]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CreateTaskTemplate]
$creadListPrec :: ReadPrec [CreateTaskTemplate]
readPrec :: ReadPrec CreateTaskTemplate
$creadPrec :: ReadPrec CreateTaskTemplate
readList :: ReadS [CreateTaskTemplate]
$creadList :: ReadS [CreateTaskTemplate]
readsPrec :: Int -> ReadS CreateTaskTemplate
$creadsPrec :: Int -> ReadS CreateTaskTemplate
Prelude.Read, Int -> CreateTaskTemplate -> ShowS
[CreateTaskTemplate] -> ShowS
CreateTaskTemplate -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CreateTaskTemplate] -> ShowS
$cshowList :: [CreateTaskTemplate] -> ShowS
show :: CreateTaskTemplate -> String
$cshow :: CreateTaskTemplate -> String
showsPrec :: Int -> CreateTaskTemplate -> ShowS
$cshowsPrec :: Int -> CreateTaskTemplate -> ShowS
Prelude.Show, forall x. Rep CreateTaskTemplate x -> CreateTaskTemplate
forall x. CreateTaskTemplate -> Rep CreateTaskTemplate x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep CreateTaskTemplate x -> CreateTaskTemplate
$cfrom :: forall x. CreateTaskTemplate -> Rep CreateTaskTemplate x
Prelude.Generic)

-- |
-- Create a value of 'CreateTaskTemplate' 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', 'createTaskTemplate_clientToken' - A unique, case-sensitive identifier that you provide to ensure the
-- idempotency of the request. If not provided, the Amazon Web Services SDK
-- populates this field. For more information about idempotency, see
-- <https://aws.amazon.com/builders-library/making-retries-safe-with-idempotent-APIs/ Making retries safe with idempotent APIs>.
--
-- 'constraints', 'createTaskTemplate_constraints' - Constraints that are applicable to the fields listed.
--
-- 'contactFlowId', 'createTaskTemplate_contactFlowId' - The identifier of the flow that runs by default when a task is created
-- by referencing this template.
--
-- 'defaults', 'createTaskTemplate_defaults' - The default values for fields when a task is created by referencing this
-- template.
--
-- 'description', 'createTaskTemplate_description' - The description of the task template.
--
-- 'status', 'createTaskTemplate_status' - Marks a template as @ACTIVE@ or @INACTIVE@ for a task to refer to it.
-- Tasks can only be created from @ACTIVE@ templates. If a template is
-- marked as @INACTIVE@, then a task that refers to this template cannot be
-- created.
--
-- 'instanceId', 'createTaskTemplate_instanceId' - The identifier of the Amazon Connect instance. You can find the
-- instanceId in the ARN of the instance.
--
-- 'name', 'createTaskTemplate_name' - The name of the task template.
--
-- 'fields', 'createTaskTemplate_fields' - Fields that are part of the template.
newCreateTaskTemplate ::
  -- | 'instanceId'
  Prelude.Text ->
  -- | 'name'
  Prelude.Text ->
  CreateTaskTemplate
newCreateTaskTemplate :: Text -> Text -> CreateTaskTemplate
newCreateTaskTemplate Text
pInstanceId_ Text
pName_ =
  CreateTaskTemplate'
    { $sel:clientToken:CreateTaskTemplate' :: Maybe Text
clientToken = forall a. Maybe a
Prelude.Nothing,
      $sel:constraints:CreateTaskTemplate' :: Maybe TaskTemplateConstraints
constraints = forall a. Maybe a
Prelude.Nothing,
      $sel:contactFlowId:CreateTaskTemplate' :: Maybe Text
contactFlowId = forall a. Maybe a
Prelude.Nothing,
      $sel:defaults:CreateTaskTemplate' :: Maybe TaskTemplateDefaults
defaults = forall a. Maybe a
Prelude.Nothing,
      $sel:description:CreateTaskTemplate' :: Maybe Text
description = forall a. Maybe a
Prelude.Nothing,
      $sel:status:CreateTaskTemplate' :: Maybe TaskTemplateStatus
status = forall a. Maybe a
Prelude.Nothing,
      $sel:instanceId:CreateTaskTemplate' :: Text
instanceId = Text
pInstanceId_,
      $sel:name:CreateTaskTemplate' :: Text
name = Text
pName_,
      $sel:fields:CreateTaskTemplate' :: [TaskTemplateField]
fields = forall a. Monoid a => a
Prelude.mempty
    }

-- | A unique, case-sensitive identifier that you provide to ensure the
-- idempotency of the request. If not provided, the Amazon Web Services SDK
-- populates this field. For more information about idempotency, see
-- <https://aws.amazon.com/builders-library/making-retries-safe-with-idempotent-APIs/ Making retries safe with idempotent APIs>.
createTaskTemplate_clientToken :: Lens.Lens' CreateTaskTemplate (Prelude.Maybe Prelude.Text)
createTaskTemplate_clientToken :: Lens' CreateTaskTemplate (Maybe Text)
createTaskTemplate_clientToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateTaskTemplate' {Maybe Text
clientToken :: Maybe Text
$sel:clientToken:CreateTaskTemplate' :: CreateTaskTemplate -> Maybe Text
clientToken} -> Maybe Text
clientToken) (\s :: CreateTaskTemplate
s@CreateTaskTemplate' {} Maybe Text
a -> CreateTaskTemplate
s {$sel:clientToken:CreateTaskTemplate' :: Maybe Text
clientToken = Maybe Text
a} :: CreateTaskTemplate)

-- | Constraints that are applicable to the fields listed.
createTaskTemplate_constraints :: Lens.Lens' CreateTaskTemplate (Prelude.Maybe TaskTemplateConstraints)
createTaskTemplate_constraints :: Lens' CreateTaskTemplate (Maybe TaskTemplateConstraints)
createTaskTemplate_constraints = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateTaskTemplate' {Maybe TaskTemplateConstraints
constraints :: Maybe TaskTemplateConstraints
$sel:constraints:CreateTaskTemplate' :: CreateTaskTemplate -> Maybe TaskTemplateConstraints
constraints} -> Maybe TaskTemplateConstraints
constraints) (\s :: CreateTaskTemplate
s@CreateTaskTemplate' {} Maybe TaskTemplateConstraints
a -> CreateTaskTemplate
s {$sel:constraints:CreateTaskTemplate' :: Maybe TaskTemplateConstraints
constraints = Maybe TaskTemplateConstraints
a} :: CreateTaskTemplate)

-- | The identifier of the flow that runs by default when a task is created
-- by referencing this template.
createTaskTemplate_contactFlowId :: Lens.Lens' CreateTaskTemplate (Prelude.Maybe Prelude.Text)
createTaskTemplate_contactFlowId :: Lens' CreateTaskTemplate (Maybe Text)
createTaskTemplate_contactFlowId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateTaskTemplate' {Maybe Text
contactFlowId :: Maybe Text
$sel:contactFlowId:CreateTaskTemplate' :: CreateTaskTemplate -> Maybe Text
contactFlowId} -> Maybe Text
contactFlowId) (\s :: CreateTaskTemplate
s@CreateTaskTemplate' {} Maybe Text
a -> CreateTaskTemplate
s {$sel:contactFlowId:CreateTaskTemplate' :: Maybe Text
contactFlowId = Maybe Text
a} :: CreateTaskTemplate)

-- | The default values for fields when a task is created by referencing this
-- template.
createTaskTemplate_defaults :: Lens.Lens' CreateTaskTemplate (Prelude.Maybe TaskTemplateDefaults)
createTaskTemplate_defaults :: Lens' CreateTaskTemplate (Maybe TaskTemplateDefaults)
createTaskTemplate_defaults = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateTaskTemplate' {Maybe TaskTemplateDefaults
defaults :: Maybe TaskTemplateDefaults
$sel:defaults:CreateTaskTemplate' :: CreateTaskTemplate -> Maybe TaskTemplateDefaults
defaults} -> Maybe TaskTemplateDefaults
defaults) (\s :: CreateTaskTemplate
s@CreateTaskTemplate' {} Maybe TaskTemplateDefaults
a -> CreateTaskTemplate
s {$sel:defaults:CreateTaskTemplate' :: Maybe TaskTemplateDefaults
defaults = Maybe TaskTemplateDefaults
a} :: CreateTaskTemplate)

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

-- | Marks a template as @ACTIVE@ or @INACTIVE@ for a task to refer to it.
-- Tasks can only be created from @ACTIVE@ templates. If a template is
-- marked as @INACTIVE@, then a task that refers to this template cannot be
-- created.
createTaskTemplate_status :: Lens.Lens' CreateTaskTemplate (Prelude.Maybe TaskTemplateStatus)
createTaskTemplate_status :: Lens' CreateTaskTemplate (Maybe TaskTemplateStatus)
createTaskTemplate_status = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateTaskTemplate' {Maybe TaskTemplateStatus
status :: Maybe TaskTemplateStatus
$sel:status:CreateTaskTemplate' :: CreateTaskTemplate -> Maybe TaskTemplateStatus
status} -> Maybe TaskTemplateStatus
status) (\s :: CreateTaskTemplate
s@CreateTaskTemplate' {} Maybe TaskTemplateStatus
a -> CreateTaskTemplate
s {$sel:status:CreateTaskTemplate' :: Maybe TaskTemplateStatus
status = Maybe TaskTemplateStatus
a} :: CreateTaskTemplate)

-- | The identifier of the Amazon Connect instance. You can find the
-- instanceId in the ARN of the instance.
createTaskTemplate_instanceId :: Lens.Lens' CreateTaskTemplate Prelude.Text
createTaskTemplate_instanceId :: Lens' CreateTaskTemplate Text
createTaskTemplate_instanceId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateTaskTemplate' {Text
instanceId :: Text
$sel:instanceId:CreateTaskTemplate' :: CreateTaskTemplate -> Text
instanceId} -> Text
instanceId) (\s :: CreateTaskTemplate
s@CreateTaskTemplate' {} Text
a -> CreateTaskTemplate
s {$sel:instanceId:CreateTaskTemplate' :: Text
instanceId = Text
a} :: CreateTaskTemplate)

-- | The name of the task template.
createTaskTemplate_name :: Lens.Lens' CreateTaskTemplate Prelude.Text
createTaskTemplate_name :: Lens' CreateTaskTemplate Text
createTaskTemplate_name = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateTaskTemplate' {Text
name :: Text
$sel:name:CreateTaskTemplate' :: CreateTaskTemplate -> Text
name} -> Text
name) (\s :: CreateTaskTemplate
s@CreateTaskTemplate' {} Text
a -> CreateTaskTemplate
s {$sel:name:CreateTaskTemplate' :: Text
name = Text
a} :: CreateTaskTemplate)

-- | Fields that are part of the template.
createTaskTemplate_fields :: Lens.Lens' CreateTaskTemplate [TaskTemplateField]
createTaskTemplate_fields :: Lens' CreateTaskTemplate [TaskTemplateField]
createTaskTemplate_fields = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateTaskTemplate' {[TaskTemplateField]
fields :: [TaskTemplateField]
$sel:fields:CreateTaskTemplate' :: CreateTaskTemplate -> [TaskTemplateField]
fields} -> [TaskTemplateField]
fields) (\s :: CreateTaskTemplate
s@CreateTaskTemplate' {} [TaskTemplateField]
a -> CreateTaskTemplate
s {$sel:fields:CreateTaskTemplate' :: [TaskTemplateField]
fields = [TaskTemplateField]
a} :: CreateTaskTemplate) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

instance Core.AWSRequest CreateTaskTemplate where
  type
    AWSResponse CreateTaskTemplate =
      CreateTaskTemplateResponse
  request :: (Service -> Service)
-> CreateTaskTemplate -> Request CreateTaskTemplate
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 CreateTaskTemplate
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse CreateTaskTemplate)))
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 ->
          Int -> Text -> Text -> CreateTaskTemplateResponse
CreateTaskTemplateResponse'
            forall (f :: * -> *) a b. Functor 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))
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String 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 a
Data..:> Key
"Arn")
      )

instance Prelude.Hashable CreateTaskTemplate where
  hashWithSalt :: Int -> CreateTaskTemplate -> Int
hashWithSalt Int
_salt CreateTaskTemplate' {[TaskTemplateField]
Maybe Text
Maybe TaskTemplateDefaults
Maybe TaskTemplateConstraints
Maybe TaskTemplateStatus
Text
fields :: [TaskTemplateField]
name :: Text
instanceId :: Text
status :: Maybe TaskTemplateStatus
description :: Maybe Text
defaults :: Maybe TaskTemplateDefaults
contactFlowId :: Maybe Text
constraints :: Maybe TaskTemplateConstraints
clientToken :: Maybe Text
$sel:fields:CreateTaskTemplate' :: CreateTaskTemplate -> [TaskTemplateField]
$sel:name:CreateTaskTemplate' :: CreateTaskTemplate -> Text
$sel:instanceId:CreateTaskTemplate' :: CreateTaskTemplate -> Text
$sel:status:CreateTaskTemplate' :: CreateTaskTemplate -> Maybe TaskTemplateStatus
$sel:description:CreateTaskTemplate' :: CreateTaskTemplate -> Maybe Text
$sel:defaults:CreateTaskTemplate' :: CreateTaskTemplate -> Maybe TaskTemplateDefaults
$sel:contactFlowId:CreateTaskTemplate' :: CreateTaskTemplate -> Maybe Text
$sel:constraints:CreateTaskTemplate' :: CreateTaskTemplate -> Maybe TaskTemplateConstraints
$sel:clientToken:CreateTaskTemplate' :: CreateTaskTemplate -> 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 TaskTemplateConstraints
constraints
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
contactFlowId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe TaskTemplateDefaults
defaults
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
description
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe TaskTemplateStatus
status
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
instanceId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
name
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` [TaskTemplateField]
fields

instance Prelude.NFData CreateTaskTemplate where
  rnf :: CreateTaskTemplate -> ()
rnf CreateTaskTemplate' {[TaskTemplateField]
Maybe Text
Maybe TaskTemplateDefaults
Maybe TaskTemplateConstraints
Maybe TaskTemplateStatus
Text
fields :: [TaskTemplateField]
name :: Text
instanceId :: Text
status :: Maybe TaskTemplateStatus
description :: Maybe Text
defaults :: Maybe TaskTemplateDefaults
contactFlowId :: Maybe Text
constraints :: Maybe TaskTemplateConstraints
clientToken :: Maybe Text
$sel:fields:CreateTaskTemplate' :: CreateTaskTemplate -> [TaskTemplateField]
$sel:name:CreateTaskTemplate' :: CreateTaskTemplate -> Text
$sel:instanceId:CreateTaskTemplate' :: CreateTaskTemplate -> Text
$sel:status:CreateTaskTemplate' :: CreateTaskTemplate -> Maybe TaskTemplateStatus
$sel:description:CreateTaskTemplate' :: CreateTaskTemplate -> Maybe Text
$sel:defaults:CreateTaskTemplate' :: CreateTaskTemplate -> Maybe TaskTemplateDefaults
$sel:contactFlowId:CreateTaskTemplate' :: CreateTaskTemplate -> Maybe Text
$sel:constraints:CreateTaskTemplate' :: CreateTaskTemplate -> Maybe TaskTemplateConstraints
$sel:clientToken:CreateTaskTemplate' :: CreateTaskTemplate -> 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 TaskTemplateConstraints
constraints
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
contactFlowId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe TaskTemplateDefaults
defaults
      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 TaskTemplateStatus
status
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
instanceId
      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 [TaskTemplateField]
fields

instance Data.ToHeaders CreateTaskTemplate where
  toHeaders :: CreateTaskTemplate -> 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 CreateTaskTemplate where
  toJSON :: CreateTaskTemplate -> Value
toJSON CreateTaskTemplate' {[TaskTemplateField]
Maybe Text
Maybe TaskTemplateDefaults
Maybe TaskTemplateConstraints
Maybe TaskTemplateStatus
Text
fields :: [TaskTemplateField]
name :: Text
instanceId :: Text
status :: Maybe TaskTemplateStatus
description :: Maybe Text
defaults :: Maybe TaskTemplateDefaults
contactFlowId :: Maybe Text
constraints :: Maybe TaskTemplateConstraints
clientToken :: Maybe Text
$sel:fields:CreateTaskTemplate' :: CreateTaskTemplate -> [TaskTemplateField]
$sel:name:CreateTaskTemplate' :: CreateTaskTemplate -> Text
$sel:instanceId:CreateTaskTemplate' :: CreateTaskTemplate -> Text
$sel:status:CreateTaskTemplate' :: CreateTaskTemplate -> Maybe TaskTemplateStatus
$sel:description:CreateTaskTemplate' :: CreateTaskTemplate -> Maybe Text
$sel:defaults:CreateTaskTemplate' :: CreateTaskTemplate -> Maybe TaskTemplateDefaults
$sel:contactFlowId:CreateTaskTemplate' :: CreateTaskTemplate -> Maybe Text
$sel:constraints:CreateTaskTemplate' :: CreateTaskTemplate -> Maybe TaskTemplateConstraints
$sel:clientToken:CreateTaskTemplate' :: CreateTaskTemplate -> 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
"Constraints" 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 TaskTemplateConstraints
constraints,
            (Key
"ContactFlowId" 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
contactFlowId,
            (Key
"Defaults" 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 TaskTemplateDefaults
defaults,
            (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
"Status" 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 TaskTemplateStatus
status,
            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
"Fields" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= [TaskTemplateField]
fields)
          ]
      )

instance Data.ToPath CreateTaskTemplate where
  toPath :: CreateTaskTemplate -> ByteString
toPath CreateTaskTemplate' {[TaskTemplateField]
Maybe Text
Maybe TaskTemplateDefaults
Maybe TaskTemplateConstraints
Maybe TaskTemplateStatus
Text
fields :: [TaskTemplateField]
name :: Text
instanceId :: Text
status :: Maybe TaskTemplateStatus
description :: Maybe Text
defaults :: Maybe TaskTemplateDefaults
contactFlowId :: Maybe Text
constraints :: Maybe TaskTemplateConstraints
clientToken :: Maybe Text
$sel:fields:CreateTaskTemplate' :: CreateTaskTemplate -> [TaskTemplateField]
$sel:name:CreateTaskTemplate' :: CreateTaskTemplate -> Text
$sel:instanceId:CreateTaskTemplate' :: CreateTaskTemplate -> Text
$sel:status:CreateTaskTemplate' :: CreateTaskTemplate -> Maybe TaskTemplateStatus
$sel:description:CreateTaskTemplate' :: CreateTaskTemplate -> Maybe Text
$sel:defaults:CreateTaskTemplate' :: CreateTaskTemplate -> Maybe TaskTemplateDefaults
$sel:contactFlowId:CreateTaskTemplate' :: CreateTaskTemplate -> Maybe Text
$sel:constraints:CreateTaskTemplate' :: CreateTaskTemplate -> Maybe TaskTemplateConstraints
$sel:clientToken:CreateTaskTemplate' :: CreateTaskTemplate -> Maybe Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"/instance/",
        forall a. ToByteString a => a -> ByteString
Data.toBS Text
instanceId,
        ByteString
"/task/template"
      ]

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

-- | /See:/ 'newCreateTaskTemplateResponse' smart constructor.
data CreateTaskTemplateResponse = CreateTaskTemplateResponse'
  { -- | The response's http status code.
    CreateTaskTemplateResponse -> Int
httpStatus :: Prelude.Int,
    -- | The identifier of the task template resource.
    CreateTaskTemplateResponse -> Text
id :: Prelude.Text,
    -- | The Amazon Resource Name (ARN) for the task template resource.
    CreateTaskTemplateResponse -> Text
arn :: Prelude.Text
  }
  deriving (CreateTaskTemplateResponse -> CreateTaskTemplateResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CreateTaskTemplateResponse -> CreateTaskTemplateResponse -> Bool
$c/= :: CreateTaskTemplateResponse -> CreateTaskTemplateResponse -> Bool
== :: CreateTaskTemplateResponse -> CreateTaskTemplateResponse -> Bool
$c== :: CreateTaskTemplateResponse -> CreateTaskTemplateResponse -> Bool
Prelude.Eq, ReadPrec [CreateTaskTemplateResponse]
ReadPrec CreateTaskTemplateResponse
Int -> ReadS CreateTaskTemplateResponse
ReadS [CreateTaskTemplateResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CreateTaskTemplateResponse]
$creadListPrec :: ReadPrec [CreateTaskTemplateResponse]
readPrec :: ReadPrec CreateTaskTemplateResponse
$creadPrec :: ReadPrec CreateTaskTemplateResponse
readList :: ReadS [CreateTaskTemplateResponse]
$creadList :: ReadS [CreateTaskTemplateResponse]
readsPrec :: Int -> ReadS CreateTaskTemplateResponse
$creadsPrec :: Int -> ReadS CreateTaskTemplateResponse
Prelude.Read, Int -> CreateTaskTemplateResponse -> ShowS
[CreateTaskTemplateResponse] -> ShowS
CreateTaskTemplateResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CreateTaskTemplateResponse] -> ShowS
$cshowList :: [CreateTaskTemplateResponse] -> ShowS
show :: CreateTaskTemplateResponse -> String
$cshow :: CreateTaskTemplateResponse -> String
showsPrec :: Int -> CreateTaskTemplateResponse -> ShowS
$cshowsPrec :: Int -> CreateTaskTemplateResponse -> ShowS
Prelude.Show, forall x.
Rep CreateTaskTemplateResponse x -> CreateTaskTemplateResponse
forall x.
CreateTaskTemplateResponse -> Rep CreateTaskTemplateResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep CreateTaskTemplateResponse x -> CreateTaskTemplateResponse
$cfrom :: forall x.
CreateTaskTemplateResponse -> Rep CreateTaskTemplateResponse x
Prelude.Generic)

-- |
-- Create a value of 'CreateTaskTemplateResponse' 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:
--
-- 'httpStatus', 'createTaskTemplateResponse_httpStatus' - The response's http status code.
--
-- 'id', 'createTaskTemplateResponse_id' - The identifier of the task template resource.
--
-- 'arn', 'createTaskTemplateResponse_arn' - The Amazon Resource Name (ARN) for the task template resource.
newCreateTaskTemplateResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  -- | 'id'
  Prelude.Text ->
  -- | 'arn'
  Prelude.Text ->
  CreateTaskTemplateResponse
newCreateTaskTemplateResponse :: Int -> Text -> Text -> CreateTaskTemplateResponse
newCreateTaskTemplateResponse Int
pHttpStatus_ Text
pId_ Text
pArn_ =
  CreateTaskTemplateResponse'
    { $sel:httpStatus:CreateTaskTemplateResponse' :: Int
httpStatus =
        Int
pHttpStatus_,
      $sel:id:CreateTaskTemplateResponse' :: Text
id = Text
pId_,
      $sel:arn:CreateTaskTemplateResponse' :: Text
arn = Text
pArn_
    }

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

-- | The identifier of the task template resource.
createTaskTemplateResponse_id :: Lens.Lens' CreateTaskTemplateResponse Prelude.Text
createTaskTemplateResponse_id :: Lens' CreateTaskTemplateResponse Text
createTaskTemplateResponse_id = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateTaskTemplateResponse' {Text
id :: Text
$sel:id:CreateTaskTemplateResponse' :: CreateTaskTemplateResponse -> Text
id} -> Text
id) (\s :: CreateTaskTemplateResponse
s@CreateTaskTemplateResponse' {} Text
a -> CreateTaskTemplateResponse
s {$sel:id:CreateTaskTemplateResponse' :: Text
id = Text
a} :: CreateTaskTemplateResponse)

-- | The Amazon Resource Name (ARN) for the task template resource.
createTaskTemplateResponse_arn :: Lens.Lens' CreateTaskTemplateResponse Prelude.Text
createTaskTemplateResponse_arn :: Lens' CreateTaskTemplateResponse Text
createTaskTemplateResponse_arn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateTaskTemplateResponse' {Text
arn :: Text
$sel:arn:CreateTaskTemplateResponse' :: CreateTaskTemplateResponse -> Text
arn} -> Text
arn) (\s :: CreateTaskTemplateResponse
s@CreateTaskTemplateResponse' {} Text
a -> CreateTaskTemplateResponse
s {$sel:arn:CreateTaskTemplateResponse' :: Text
arn = Text
a} :: CreateTaskTemplateResponse)

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