packages feed

amazonka-connect-2.0: gen/Amazonka/Connect/UpdateRule.hs

{-# 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.UpdateRule
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Updates a rule for the specified Amazon Connect instance.
--
-- Use the
-- <https://docs.aws.amazon.com/connect/latest/APIReference/connect-rules-language.html Rules Function language>
-- to code conditions for the rule.
module Amazonka.Connect.UpdateRule
  ( -- * Creating a Request
    UpdateRule (..),
    newUpdateRule,

    -- * Request Lenses
    updateRule_ruleId,
    updateRule_instanceId,
    updateRule_name,
    updateRule_function,
    updateRule_actions,
    updateRule_publishStatus,

    -- * Destructuring the Response
    UpdateRuleResponse (..),
    newUpdateRuleResponse,
  )
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:/ 'newUpdateRule' smart constructor.
data UpdateRule = UpdateRule'
  { -- | A unique identifier for the rule.
    ruleId :: Prelude.Text,
    -- | The identifier of the Amazon Connect instance. You can find the
    -- instanceId in the ARN of the instance.
    instanceId :: Prelude.Text,
    -- | The name of the rule. You can change the name only if
    -- @TriggerEventSource@ is one of the following values:
    -- @OnZendeskTicketCreate@ | @OnZendeskTicketStatusUpdate@ |
    -- @OnSalesforceCaseCreate@
    name :: Prelude.Text,
    -- | The conditions of the rule.
    function :: Prelude.Text,
    -- | A list of actions to be run when the rule is triggered.
    actions :: [RuleAction],
    -- | The publish status of the rule.
    publishStatus :: RulePublishStatus
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'UpdateRule' 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:
--
-- 'ruleId', 'updateRule_ruleId' - A unique identifier for the rule.
--
-- 'instanceId', 'updateRule_instanceId' - The identifier of the Amazon Connect instance. You can find the
-- instanceId in the ARN of the instance.
--
-- 'name', 'updateRule_name' - The name of the rule. You can change the name only if
-- @TriggerEventSource@ is one of the following values:
-- @OnZendeskTicketCreate@ | @OnZendeskTicketStatusUpdate@ |
-- @OnSalesforceCaseCreate@
--
-- 'function', 'updateRule_function' - The conditions of the rule.
--
-- 'actions', 'updateRule_actions' - A list of actions to be run when the rule is triggered.
--
-- 'publishStatus', 'updateRule_publishStatus' - The publish status of the rule.
newUpdateRule ::
  -- | 'ruleId'
  Prelude.Text ->
  -- | 'instanceId'
  Prelude.Text ->
  -- | 'name'
  Prelude.Text ->
  -- | 'function'
  Prelude.Text ->
  -- | 'publishStatus'
  RulePublishStatus ->
  UpdateRule
newUpdateRule
  pRuleId_
  pInstanceId_
  pName_
  pFunction_
  pPublishStatus_ =
    UpdateRule'
      { ruleId = pRuleId_,
        instanceId = pInstanceId_,
        name = pName_,
        function = pFunction_,
        actions = Prelude.mempty,
        publishStatus = pPublishStatus_
      }

-- | A unique identifier for the rule.
updateRule_ruleId :: Lens.Lens' UpdateRule Prelude.Text
updateRule_ruleId = Lens.lens (\UpdateRule' {ruleId} -> ruleId) (\s@UpdateRule' {} a -> s {ruleId = a} :: UpdateRule)

-- | The identifier of the Amazon Connect instance. You can find the
-- instanceId in the ARN of the instance.
updateRule_instanceId :: Lens.Lens' UpdateRule Prelude.Text
updateRule_instanceId = Lens.lens (\UpdateRule' {instanceId} -> instanceId) (\s@UpdateRule' {} a -> s {instanceId = a} :: UpdateRule)

-- | The name of the rule. You can change the name only if
-- @TriggerEventSource@ is one of the following values:
-- @OnZendeskTicketCreate@ | @OnZendeskTicketStatusUpdate@ |
-- @OnSalesforceCaseCreate@
updateRule_name :: Lens.Lens' UpdateRule Prelude.Text
updateRule_name = Lens.lens (\UpdateRule' {name} -> name) (\s@UpdateRule' {} a -> s {name = a} :: UpdateRule)

-- | The conditions of the rule.
updateRule_function :: Lens.Lens' UpdateRule Prelude.Text
updateRule_function = Lens.lens (\UpdateRule' {function} -> function) (\s@UpdateRule' {} a -> s {function = a} :: UpdateRule)

-- | A list of actions to be run when the rule is triggered.
updateRule_actions :: Lens.Lens' UpdateRule [RuleAction]
updateRule_actions = Lens.lens (\UpdateRule' {actions} -> actions) (\s@UpdateRule' {} a -> s {actions = a} :: UpdateRule) Prelude.. Lens.coerced

-- | The publish status of the rule.
updateRule_publishStatus :: Lens.Lens' UpdateRule RulePublishStatus
updateRule_publishStatus = Lens.lens (\UpdateRule' {publishStatus} -> publishStatus) (\s@UpdateRule' {} a -> s {publishStatus = a} :: UpdateRule)

instance Core.AWSRequest UpdateRule where
  type AWSResponse UpdateRule = UpdateRuleResponse
  request overrides =
    Request.putJSON (overrides defaultService)
  response = Response.receiveNull UpdateRuleResponse'

instance Prelude.Hashable UpdateRule where
  hashWithSalt _salt UpdateRule' {..} =
    _salt
      `Prelude.hashWithSalt` ruleId
      `Prelude.hashWithSalt` instanceId
      `Prelude.hashWithSalt` name
      `Prelude.hashWithSalt` function
      `Prelude.hashWithSalt` actions
      `Prelude.hashWithSalt` publishStatus

instance Prelude.NFData UpdateRule where
  rnf UpdateRule' {..} =
    Prelude.rnf ruleId
      `Prelude.seq` Prelude.rnf instanceId
      `Prelude.seq` Prelude.rnf name
      `Prelude.seq` Prelude.rnf function
      `Prelude.seq` Prelude.rnf actions
      `Prelude.seq` Prelude.rnf publishStatus

instance Data.ToHeaders UpdateRule where
  toHeaders =
    Prelude.const
      ( Prelude.mconcat
          [ "Content-Type"
              Data.=# ( "application/x-amz-json-1.1" ::
                          Prelude.ByteString
                      )
          ]
      )

instance Data.ToJSON UpdateRule where
  toJSON UpdateRule' {..} =
    Data.object
      ( Prelude.catMaybes
          [ Prelude.Just ("Name" Data..= name),
            Prelude.Just ("Function" Data..= function),
            Prelude.Just ("Actions" Data..= actions),
            Prelude.Just
              ("PublishStatus" Data..= publishStatus)
          ]
      )

instance Data.ToPath UpdateRule where
  toPath UpdateRule' {..} =
    Prelude.mconcat
      [ "/rules/",
        Data.toBS instanceId,
        "/",
        Data.toBS ruleId
      ]

instance Data.ToQuery UpdateRule where
  toQuery = Prelude.const Prelude.mempty

-- | /See:/ 'newUpdateRuleResponse' smart constructor.
data UpdateRuleResponse = UpdateRuleResponse'
  {
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'UpdateRuleResponse' 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.
newUpdateRuleResponse ::
  UpdateRuleResponse
newUpdateRuleResponse = UpdateRuleResponse'

instance Prelude.NFData UpdateRuleResponse where
  rnf _ = ()