packages feed

amazonka-auditmanager-2.0: gen/Amazonka/AuditManager/BatchDeleteDelegationByAssessment.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.AuditManager.BatchDeleteDelegationByAssessment
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Deletes a batch of delegations for an assessment in Audit Manager.
module Amazonka.AuditManager.BatchDeleteDelegationByAssessment
  ( -- * Creating a Request
    BatchDeleteDelegationByAssessment (..),
    newBatchDeleteDelegationByAssessment,

    -- * Request Lenses
    batchDeleteDelegationByAssessment_delegationIds,
    batchDeleteDelegationByAssessment_assessmentId,

    -- * Destructuring the Response
    BatchDeleteDelegationByAssessmentResponse (..),
    newBatchDeleteDelegationByAssessmentResponse,

    -- * Response Lenses
    batchDeleteDelegationByAssessmentResponse_errors,
    batchDeleteDelegationByAssessmentResponse_httpStatus,
  )
where

import Amazonka.AuditManager.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:/ 'newBatchDeleteDelegationByAssessment' smart constructor.
data BatchDeleteDelegationByAssessment = BatchDeleteDelegationByAssessment'
  { -- | The identifiers for the delegations.
    delegationIds :: Prelude.NonEmpty Prelude.Text,
    -- | The identifier for the assessment.
    assessmentId :: Prelude.Text
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'BatchDeleteDelegationByAssessment' 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:
--
-- 'delegationIds', 'batchDeleteDelegationByAssessment_delegationIds' - The identifiers for the delegations.
--
-- 'assessmentId', 'batchDeleteDelegationByAssessment_assessmentId' - The identifier for the assessment.
newBatchDeleteDelegationByAssessment ::
  -- | 'delegationIds'
  Prelude.NonEmpty Prelude.Text ->
  -- | 'assessmentId'
  Prelude.Text ->
  BatchDeleteDelegationByAssessment
newBatchDeleteDelegationByAssessment
  pDelegationIds_
  pAssessmentId_ =
    BatchDeleteDelegationByAssessment'
      { delegationIds =
          Lens.coerced Lens.# pDelegationIds_,
        assessmentId = pAssessmentId_
      }

-- | The identifiers for the delegations.
batchDeleteDelegationByAssessment_delegationIds :: Lens.Lens' BatchDeleteDelegationByAssessment (Prelude.NonEmpty Prelude.Text)
batchDeleteDelegationByAssessment_delegationIds = Lens.lens (\BatchDeleteDelegationByAssessment' {delegationIds} -> delegationIds) (\s@BatchDeleteDelegationByAssessment' {} a -> s {delegationIds = a} :: BatchDeleteDelegationByAssessment) Prelude.. Lens.coerced

-- | The identifier for the assessment.
batchDeleteDelegationByAssessment_assessmentId :: Lens.Lens' BatchDeleteDelegationByAssessment Prelude.Text
batchDeleteDelegationByAssessment_assessmentId = Lens.lens (\BatchDeleteDelegationByAssessment' {assessmentId} -> assessmentId) (\s@BatchDeleteDelegationByAssessment' {} a -> s {assessmentId = a} :: BatchDeleteDelegationByAssessment)

instance
  Core.AWSRequest
    BatchDeleteDelegationByAssessment
  where
  type
    AWSResponse BatchDeleteDelegationByAssessment =
      BatchDeleteDelegationByAssessmentResponse
  request overrides =
    Request.putJSON (overrides defaultService)
  response =
    Response.receiveJSON
      ( \s h x ->
          BatchDeleteDelegationByAssessmentResponse'
            Prelude.<$> (x Data..?> "errors" Core..!@ Prelude.mempty)
            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
      )

instance
  Prelude.Hashable
    BatchDeleteDelegationByAssessment
  where
  hashWithSalt
    _salt
    BatchDeleteDelegationByAssessment' {..} =
      _salt
        `Prelude.hashWithSalt` delegationIds
        `Prelude.hashWithSalt` assessmentId

instance
  Prelude.NFData
    BatchDeleteDelegationByAssessment
  where
  rnf BatchDeleteDelegationByAssessment' {..} =
    Prelude.rnf delegationIds
      `Prelude.seq` Prelude.rnf assessmentId

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

instance
  Data.ToJSON
    BatchDeleteDelegationByAssessment
  where
  toJSON BatchDeleteDelegationByAssessment' {..} =
    Data.object
      ( Prelude.catMaybes
          [ Prelude.Just
              ("delegationIds" Data..= delegationIds)
          ]
      )

instance
  Data.ToPath
    BatchDeleteDelegationByAssessment
  where
  toPath BatchDeleteDelegationByAssessment' {..} =
    Prelude.mconcat
      [ "/assessments/",
        Data.toBS assessmentId,
        "/delegations"
      ]

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

-- | /See:/ 'newBatchDeleteDelegationByAssessmentResponse' smart constructor.
data BatchDeleteDelegationByAssessmentResponse = BatchDeleteDelegationByAssessmentResponse'
  { -- | A list of errors that the @BatchDeleteDelegationByAssessment@ API
    -- returned.
    errors :: Prelude.Maybe [BatchDeleteDelegationByAssessmentError],
    -- | The response's http status code.
    httpStatus :: Prelude.Int
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'BatchDeleteDelegationByAssessmentResponse' 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:
--
-- 'errors', 'batchDeleteDelegationByAssessmentResponse_errors' - A list of errors that the @BatchDeleteDelegationByAssessment@ API
-- returned.
--
-- 'httpStatus', 'batchDeleteDelegationByAssessmentResponse_httpStatus' - The response's http status code.
newBatchDeleteDelegationByAssessmentResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  BatchDeleteDelegationByAssessmentResponse
newBatchDeleteDelegationByAssessmentResponse
  pHttpStatus_ =
    BatchDeleteDelegationByAssessmentResponse'
      { errors =
          Prelude.Nothing,
        httpStatus = pHttpStatus_
      }

-- | A list of errors that the @BatchDeleteDelegationByAssessment@ API
-- returned.
batchDeleteDelegationByAssessmentResponse_errors :: Lens.Lens' BatchDeleteDelegationByAssessmentResponse (Prelude.Maybe [BatchDeleteDelegationByAssessmentError])
batchDeleteDelegationByAssessmentResponse_errors = Lens.lens (\BatchDeleteDelegationByAssessmentResponse' {errors} -> errors) (\s@BatchDeleteDelegationByAssessmentResponse' {} a -> s {errors = a} :: BatchDeleteDelegationByAssessmentResponse) Prelude.. Lens.mapping Lens.coerced

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

instance
  Prelude.NFData
    BatchDeleteDelegationByAssessmentResponse
  where
  rnf BatchDeleteDelegationByAssessmentResponse' {..} =
    Prelude.rnf errors
      `Prelude.seq` Prelude.rnf httpStatus