packages feed

amazonka-ssm-incidents-2.0: gen/Amazonka/SSMIncidents/UpdateRelatedItems.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.SSMIncidents.UpdateRelatedItems
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Add or remove related items from the related items tab of an incident
-- record.
module Amazonka.SSMIncidents.UpdateRelatedItems
  ( -- * Creating a Request
    UpdateRelatedItems (..),
    newUpdateRelatedItems,

    -- * Request Lenses
    updateRelatedItems_clientToken,
    updateRelatedItems_incidentRecordArn,
    updateRelatedItems_relatedItemsUpdate,

    -- * Destructuring the Response
    UpdateRelatedItemsResponse (..),
    newUpdateRelatedItemsResponse,

    -- * Response Lenses
    updateRelatedItemsResponse_httpStatus,
  )
where

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

-- | /See:/ 'newUpdateRelatedItems' smart constructor.
data UpdateRelatedItems = UpdateRelatedItems'
  { -- | A token ensuring that the operation is called only once with the
    -- specified details.
    clientToken :: Prelude.Maybe Prelude.Text,
    -- | The Amazon Resource Name (ARN) of the incident record containing the
    -- related items you are updating.
    incidentRecordArn :: Prelude.Text,
    -- | Details about the item you are adding or deleting.
    relatedItemsUpdate :: RelatedItemsUpdate
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'UpdateRelatedItems' 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', 'updateRelatedItems_clientToken' - A token ensuring that the operation is called only once with the
-- specified details.
--
-- 'incidentRecordArn', 'updateRelatedItems_incidentRecordArn' - The Amazon Resource Name (ARN) of the incident record containing the
-- related items you are updating.
--
-- 'relatedItemsUpdate', 'updateRelatedItems_relatedItemsUpdate' - Details about the item you are adding or deleting.
newUpdateRelatedItems ::
  -- | 'incidentRecordArn'
  Prelude.Text ->
  -- | 'relatedItemsUpdate'
  RelatedItemsUpdate ->
  UpdateRelatedItems
newUpdateRelatedItems
  pIncidentRecordArn_
  pRelatedItemsUpdate_ =
    UpdateRelatedItems'
      { clientToken = Prelude.Nothing,
        incidentRecordArn = pIncidentRecordArn_,
        relatedItemsUpdate = pRelatedItemsUpdate_
      }

-- | A token ensuring that the operation is called only once with the
-- specified details.
updateRelatedItems_clientToken :: Lens.Lens' UpdateRelatedItems (Prelude.Maybe Prelude.Text)
updateRelatedItems_clientToken = Lens.lens (\UpdateRelatedItems' {clientToken} -> clientToken) (\s@UpdateRelatedItems' {} a -> s {clientToken = a} :: UpdateRelatedItems)

-- | The Amazon Resource Name (ARN) of the incident record containing the
-- related items you are updating.
updateRelatedItems_incidentRecordArn :: Lens.Lens' UpdateRelatedItems Prelude.Text
updateRelatedItems_incidentRecordArn = Lens.lens (\UpdateRelatedItems' {incidentRecordArn} -> incidentRecordArn) (\s@UpdateRelatedItems' {} a -> s {incidentRecordArn = a} :: UpdateRelatedItems)

-- | Details about the item you are adding or deleting.
updateRelatedItems_relatedItemsUpdate :: Lens.Lens' UpdateRelatedItems RelatedItemsUpdate
updateRelatedItems_relatedItemsUpdate = Lens.lens (\UpdateRelatedItems' {relatedItemsUpdate} -> relatedItemsUpdate) (\s@UpdateRelatedItems' {} a -> s {relatedItemsUpdate = a} :: UpdateRelatedItems)

instance Core.AWSRequest UpdateRelatedItems where
  type
    AWSResponse UpdateRelatedItems =
      UpdateRelatedItemsResponse
  request overrides =
    Request.postJSON (overrides defaultService)
  response =
    Response.receiveEmpty
      ( \s h x ->
          UpdateRelatedItemsResponse'
            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
      )

instance Prelude.Hashable UpdateRelatedItems where
  hashWithSalt _salt UpdateRelatedItems' {..} =
    _salt
      `Prelude.hashWithSalt` clientToken
      `Prelude.hashWithSalt` incidentRecordArn
      `Prelude.hashWithSalt` relatedItemsUpdate

instance Prelude.NFData UpdateRelatedItems where
  rnf UpdateRelatedItems' {..} =
    Prelude.rnf clientToken
      `Prelude.seq` Prelude.rnf incidentRecordArn
      `Prelude.seq` Prelude.rnf relatedItemsUpdate

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

instance Data.ToJSON UpdateRelatedItems where
  toJSON UpdateRelatedItems' {..} =
    Data.object
      ( Prelude.catMaybes
          [ ("clientToken" Data..=) Prelude.<$> clientToken,
            Prelude.Just
              ("incidentRecordArn" Data..= incidentRecordArn),
            Prelude.Just
              ("relatedItemsUpdate" Data..= relatedItemsUpdate)
          ]
      )

instance Data.ToPath UpdateRelatedItems where
  toPath = Prelude.const "/updateRelatedItems"

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

-- | /See:/ 'newUpdateRelatedItemsResponse' smart constructor.
data UpdateRelatedItemsResponse = UpdateRelatedItemsResponse'
  { -- | The response's http status code.
    httpStatus :: Prelude.Int
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'UpdateRelatedItemsResponse' 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', 'updateRelatedItemsResponse_httpStatus' - The response's http status code.
newUpdateRelatedItemsResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  UpdateRelatedItemsResponse
newUpdateRelatedItemsResponse pHttpStatus_ =
  UpdateRelatedItemsResponse'
    { httpStatus =
        pHttpStatus_
    }

-- | The response's http status code.
updateRelatedItemsResponse_httpStatus :: Lens.Lens' UpdateRelatedItemsResponse Prelude.Int
updateRelatedItemsResponse_httpStatus = Lens.lens (\UpdateRelatedItemsResponse' {httpStatus} -> httpStatus) (\s@UpdateRelatedItemsResponse' {} a -> s {httpStatus = a} :: UpdateRelatedItemsResponse)

instance Prelude.NFData UpdateRelatedItemsResponse where
  rnf UpdateRelatedItemsResponse' {..} =
    Prelude.rnf httpStatus