packages feed

amazonka-auditmanager-2.0: gen/Amazonka/AuditManager/UpdateAssessmentControlSetStatus.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.UpdateAssessmentControlSetStatus
-- 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 the status of a control set in an Audit Manager assessment.
module Amazonka.AuditManager.UpdateAssessmentControlSetStatus
  ( -- * Creating a Request
    UpdateAssessmentControlSetStatus (..),
    newUpdateAssessmentControlSetStatus,

    -- * Request Lenses
    updateAssessmentControlSetStatus_assessmentId,
    updateAssessmentControlSetStatus_controlSetId,
    updateAssessmentControlSetStatus_status,
    updateAssessmentControlSetStatus_comment,

    -- * Destructuring the Response
    UpdateAssessmentControlSetStatusResponse (..),
    newUpdateAssessmentControlSetStatusResponse,

    -- * Response Lenses
    updateAssessmentControlSetStatusResponse_controlSet,
    updateAssessmentControlSetStatusResponse_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:/ 'newUpdateAssessmentControlSetStatus' smart constructor.
data UpdateAssessmentControlSetStatus = UpdateAssessmentControlSetStatus'
  { -- | The unique identifier for the assessment.
    assessmentId :: Prelude.Text,
    -- | The unique identifier for the control set.
    controlSetId :: Prelude.Text,
    -- | The status of the control set that\'s being updated.
    status :: ControlSetStatus,
    -- | The comment that\'s related to the status update.
    comment :: Prelude.Text
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'UpdateAssessmentControlSetStatus' 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:
--
-- 'assessmentId', 'updateAssessmentControlSetStatus_assessmentId' - The unique identifier for the assessment.
--
-- 'controlSetId', 'updateAssessmentControlSetStatus_controlSetId' - The unique identifier for the control set.
--
-- 'status', 'updateAssessmentControlSetStatus_status' - The status of the control set that\'s being updated.
--
-- 'comment', 'updateAssessmentControlSetStatus_comment' - The comment that\'s related to the status update.
newUpdateAssessmentControlSetStatus ::
  -- | 'assessmentId'
  Prelude.Text ->
  -- | 'controlSetId'
  Prelude.Text ->
  -- | 'status'
  ControlSetStatus ->
  -- | 'comment'
  Prelude.Text ->
  UpdateAssessmentControlSetStatus
newUpdateAssessmentControlSetStatus
  pAssessmentId_
  pControlSetId_
  pStatus_
  pComment_ =
    UpdateAssessmentControlSetStatus'
      { assessmentId =
          pAssessmentId_,
        controlSetId = pControlSetId_,
        status = pStatus_,
        comment = pComment_
      }

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

-- | The unique identifier for the control set.
updateAssessmentControlSetStatus_controlSetId :: Lens.Lens' UpdateAssessmentControlSetStatus Prelude.Text
updateAssessmentControlSetStatus_controlSetId = Lens.lens (\UpdateAssessmentControlSetStatus' {controlSetId} -> controlSetId) (\s@UpdateAssessmentControlSetStatus' {} a -> s {controlSetId = a} :: UpdateAssessmentControlSetStatus)

-- | The status of the control set that\'s being updated.
updateAssessmentControlSetStatus_status :: Lens.Lens' UpdateAssessmentControlSetStatus ControlSetStatus
updateAssessmentControlSetStatus_status = Lens.lens (\UpdateAssessmentControlSetStatus' {status} -> status) (\s@UpdateAssessmentControlSetStatus' {} a -> s {status = a} :: UpdateAssessmentControlSetStatus)

-- | The comment that\'s related to the status update.
updateAssessmentControlSetStatus_comment :: Lens.Lens' UpdateAssessmentControlSetStatus Prelude.Text
updateAssessmentControlSetStatus_comment = Lens.lens (\UpdateAssessmentControlSetStatus' {comment} -> comment) (\s@UpdateAssessmentControlSetStatus' {} a -> s {comment = a} :: UpdateAssessmentControlSetStatus)

instance
  Core.AWSRequest
    UpdateAssessmentControlSetStatus
  where
  type
    AWSResponse UpdateAssessmentControlSetStatus =
      UpdateAssessmentControlSetStatusResponse
  request overrides =
    Request.putJSON (overrides defaultService)
  response =
    Response.receiveJSON
      ( \s h x ->
          UpdateAssessmentControlSetStatusResponse'
            Prelude.<$> (x Data..?> "controlSet")
            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
      )

instance
  Prelude.Hashable
    UpdateAssessmentControlSetStatus
  where
  hashWithSalt
    _salt
    UpdateAssessmentControlSetStatus' {..} =
      _salt
        `Prelude.hashWithSalt` assessmentId
        `Prelude.hashWithSalt` controlSetId
        `Prelude.hashWithSalt` status
        `Prelude.hashWithSalt` comment

instance
  Prelude.NFData
    UpdateAssessmentControlSetStatus
  where
  rnf UpdateAssessmentControlSetStatus' {..} =
    Prelude.rnf assessmentId
      `Prelude.seq` Prelude.rnf controlSetId
      `Prelude.seq` Prelude.rnf status
      `Prelude.seq` Prelude.rnf comment

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

instance Data.ToJSON UpdateAssessmentControlSetStatus where
  toJSON UpdateAssessmentControlSetStatus' {..} =
    Data.object
      ( Prelude.catMaybes
          [ Prelude.Just ("status" Data..= status),
            Prelude.Just ("comment" Data..= comment)
          ]
      )

instance Data.ToPath UpdateAssessmentControlSetStatus where
  toPath UpdateAssessmentControlSetStatus' {..} =
    Prelude.mconcat
      [ "/assessments/",
        Data.toBS assessmentId,
        "/controlSets/",
        Data.toBS controlSetId,
        "/status"
      ]

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

-- | /See:/ 'newUpdateAssessmentControlSetStatusResponse' smart constructor.
data UpdateAssessmentControlSetStatusResponse = UpdateAssessmentControlSetStatusResponse'
  { -- | The name of the updated control set that the
    -- @UpdateAssessmentControlSetStatus@ API returned.
    controlSet :: Prelude.Maybe AssessmentControlSet,
    -- | The response's http status code.
    httpStatus :: Prelude.Int
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'UpdateAssessmentControlSetStatusResponse' 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:
--
-- 'controlSet', 'updateAssessmentControlSetStatusResponse_controlSet' - The name of the updated control set that the
-- @UpdateAssessmentControlSetStatus@ API returned.
--
-- 'httpStatus', 'updateAssessmentControlSetStatusResponse_httpStatus' - The response's http status code.
newUpdateAssessmentControlSetStatusResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  UpdateAssessmentControlSetStatusResponse
newUpdateAssessmentControlSetStatusResponse
  pHttpStatus_ =
    UpdateAssessmentControlSetStatusResponse'
      { controlSet =
          Prelude.Nothing,
        httpStatus = pHttpStatus_
      }

-- | The name of the updated control set that the
-- @UpdateAssessmentControlSetStatus@ API returned.
updateAssessmentControlSetStatusResponse_controlSet :: Lens.Lens' UpdateAssessmentControlSetStatusResponse (Prelude.Maybe AssessmentControlSet)
updateAssessmentControlSetStatusResponse_controlSet = Lens.lens (\UpdateAssessmentControlSetStatusResponse' {controlSet} -> controlSet) (\s@UpdateAssessmentControlSetStatusResponse' {} a -> s {controlSet = a} :: UpdateAssessmentControlSetStatusResponse)

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

instance
  Prelude.NFData
    UpdateAssessmentControlSetStatusResponse
  where
  rnf UpdateAssessmentControlSetStatusResponse' {..} =
    Prelude.rnf controlSet
      `Prelude.seq` Prelude.rnf httpStatus