packages feed

amazonka-connect-2.0: gen/Amazonka/Connect/Types/TaskActionDefinition.hs

{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# 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.Types.TaskActionDefinition
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.Connect.Types.TaskActionDefinition where

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

-- | Information about the task action.
--
-- /See:/ 'newTaskActionDefinition' smart constructor.
data TaskActionDefinition = TaskActionDefinition'
  { -- | The description. Supports variable injection. For more information, see
    -- <https://docs.aws.amazon.com/connect/latest/adminguide/contact-lens-variable-injection.html JSONPath reference>
    -- in the /Amazon Connect Administrators Guide/.
    description :: Prelude.Maybe Prelude.Text,
    -- | Information about the reference when the @referenceType@ is @URL@.
    -- Otherwise, null. (Supports variable injection in the @Value@ field.)
    references :: Prelude.Maybe (Prelude.HashMap Prelude.Text Reference),
    -- | The name. Supports variable injection. For more information, see
    -- <https://docs.aws.amazon.com/connect/latest/adminguide/contact-lens-variable-injection.html JSONPath reference>
    -- in the /Amazon Connect Administrators Guide/.
    name :: Prelude.Text,
    -- | The identifier of the flow.
    contactFlowId :: Prelude.Text
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'TaskActionDefinition' 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:
--
-- 'description', 'taskActionDefinition_description' - The description. Supports variable injection. For more information, see
-- <https://docs.aws.amazon.com/connect/latest/adminguide/contact-lens-variable-injection.html JSONPath reference>
-- in the /Amazon Connect Administrators Guide/.
--
-- 'references', 'taskActionDefinition_references' - Information about the reference when the @referenceType@ is @URL@.
-- Otherwise, null. (Supports variable injection in the @Value@ field.)
--
-- 'name', 'taskActionDefinition_name' - The name. Supports variable injection. For more information, see
-- <https://docs.aws.amazon.com/connect/latest/adminguide/contact-lens-variable-injection.html JSONPath reference>
-- in the /Amazon Connect Administrators Guide/.
--
-- 'contactFlowId', 'taskActionDefinition_contactFlowId' - The identifier of the flow.
newTaskActionDefinition ::
  -- | 'name'
  Prelude.Text ->
  -- | 'contactFlowId'
  Prelude.Text ->
  TaskActionDefinition
newTaskActionDefinition pName_ pContactFlowId_ =
  TaskActionDefinition'
    { description =
        Prelude.Nothing,
      references = Prelude.Nothing,
      name = pName_,
      contactFlowId = pContactFlowId_
    }

-- | The description. Supports variable injection. For more information, see
-- <https://docs.aws.amazon.com/connect/latest/adminguide/contact-lens-variable-injection.html JSONPath reference>
-- in the /Amazon Connect Administrators Guide/.
taskActionDefinition_description :: Lens.Lens' TaskActionDefinition (Prelude.Maybe Prelude.Text)
taskActionDefinition_description = Lens.lens (\TaskActionDefinition' {description} -> description) (\s@TaskActionDefinition' {} a -> s {description = a} :: TaskActionDefinition)

-- | Information about the reference when the @referenceType@ is @URL@.
-- Otherwise, null. (Supports variable injection in the @Value@ field.)
taskActionDefinition_references :: Lens.Lens' TaskActionDefinition (Prelude.Maybe (Prelude.HashMap Prelude.Text Reference))
taskActionDefinition_references = Lens.lens (\TaskActionDefinition' {references} -> references) (\s@TaskActionDefinition' {} a -> s {references = a} :: TaskActionDefinition) Prelude.. Lens.mapping Lens.coerced

-- | The name. Supports variable injection. For more information, see
-- <https://docs.aws.amazon.com/connect/latest/adminguide/contact-lens-variable-injection.html JSONPath reference>
-- in the /Amazon Connect Administrators Guide/.
taskActionDefinition_name :: Lens.Lens' TaskActionDefinition Prelude.Text
taskActionDefinition_name = Lens.lens (\TaskActionDefinition' {name} -> name) (\s@TaskActionDefinition' {} a -> s {name = a} :: TaskActionDefinition)

-- | The identifier of the flow.
taskActionDefinition_contactFlowId :: Lens.Lens' TaskActionDefinition Prelude.Text
taskActionDefinition_contactFlowId = Lens.lens (\TaskActionDefinition' {contactFlowId} -> contactFlowId) (\s@TaskActionDefinition' {} a -> s {contactFlowId = a} :: TaskActionDefinition)

instance Data.FromJSON TaskActionDefinition where
  parseJSON =
    Data.withObject
      "TaskActionDefinition"
      ( \x ->
          TaskActionDefinition'
            Prelude.<$> (x Data..:? "Description")
            Prelude.<*> (x Data..:? "References" Data..!= Prelude.mempty)
            Prelude.<*> (x Data..: "Name")
            Prelude.<*> (x Data..: "ContactFlowId")
      )

instance Prelude.Hashable TaskActionDefinition where
  hashWithSalt _salt TaskActionDefinition' {..} =
    _salt
      `Prelude.hashWithSalt` description
      `Prelude.hashWithSalt` references
      `Prelude.hashWithSalt` name
      `Prelude.hashWithSalt` contactFlowId

instance Prelude.NFData TaskActionDefinition where
  rnf TaskActionDefinition' {..} =
    Prelude.rnf description
      `Prelude.seq` Prelude.rnf references
      `Prelude.seq` Prelude.rnf name
      `Prelude.seq` Prelude.rnf contactFlowId

instance Data.ToJSON TaskActionDefinition where
  toJSON TaskActionDefinition' {..} =
    Data.object
      ( Prelude.catMaybes
          [ ("Description" Data..=) Prelude.<$> description,
            ("References" Data..=) Prelude.<$> references,
            Prelude.Just ("Name" Data..= name),
            Prelude.Just
              ("ContactFlowId" Data..= contactFlowId)
          ]
      )