{-# 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.BatchImportEvidenceToAssessmentControl
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Uploads one or more pieces of evidence to a control in an Audit Manager
-- assessment. You can upload manual evidence from any Amazon Simple
-- Storage Service (Amazon S3) bucket by specifying the S3 URI of the
-- evidence.
--
-- You must upload manual evidence to your S3 bucket before you can upload
-- it to your assessment. For instructions, see
-- <https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html CreateBucket>
-- and
-- <https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html PutObject>
-- in the /Amazon Simple Storage Service API Reference./
--
-- The following restrictions apply to this action:
--
-- -   Maximum size of an individual evidence file: 100 MB
--
-- -   Number of daily manual evidence uploads per control: 100
--
-- -   Supported file formats: See
--     <https://docs.aws.amazon.com/audit-manager/latest/userguide/upload-evidence.html#supported-manual-evidence-files Supported file types for manual evidence>
--     in the /Audit Manager User Guide/
--
-- For more information about Audit Manager service restrictions, see
-- <https://docs.aws.amazon.com/audit-manager/latest/userguide/service-quotas.html Quotas and restrictions for Audit Manager>.
module Amazonka.AuditManager.BatchImportEvidenceToAssessmentControl
  ( -- * Creating a Request
    BatchImportEvidenceToAssessmentControl (..),
    newBatchImportEvidenceToAssessmentControl,

    -- * Request Lenses
    batchImportEvidenceToAssessmentControl_assessmentId,
    batchImportEvidenceToAssessmentControl_controlSetId,
    batchImportEvidenceToAssessmentControl_controlId,
    batchImportEvidenceToAssessmentControl_manualEvidence,

    -- * Destructuring the Response
    BatchImportEvidenceToAssessmentControlResponse (..),
    newBatchImportEvidenceToAssessmentControlResponse,

    -- * Response Lenses
    batchImportEvidenceToAssessmentControlResponse_errors,
    batchImportEvidenceToAssessmentControlResponse_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:/ 'newBatchImportEvidenceToAssessmentControl' smart constructor.
data BatchImportEvidenceToAssessmentControl = BatchImportEvidenceToAssessmentControl'
  { -- | The identifier for the assessment.
    BatchImportEvidenceToAssessmentControl -> Text
assessmentId :: Prelude.Text,
    -- | The identifier for the control set.
    BatchImportEvidenceToAssessmentControl -> Text
controlSetId :: Prelude.Text,
    -- | The identifier for the control.
    BatchImportEvidenceToAssessmentControl -> Text
controlId :: Prelude.Text,
    -- | The list of manual evidence objects.
    BatchImportEvidenceToAssessmentControl -> NonEmpty ManualEvidence
manualEvidence :: Prelude.NonEmpty ManualEvidence
  }
  deriving (BatchImportEvidenceToAssessmentControl
-> BatchImportEvidenceToAssessmentControl -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: BatchImportEvidenceToAssessmentControl
-> BatchImportEvidenceToAssessmentControl -> Bool
$c/= :: BatchImportEvidenceToAssessmentControl
-> BatchImportEvidenceToAssessmentControl -> Bool
== :: BatchImportEvidenceToAssessmentControl
-> BatchImportEvidenceToAssessmentControl -> Bool
$c== :: BatchImportEvidenceToAssessmentControl
-> BatchImportEvidenceToAssessmentControl -> Bool
Prelude.Eq, ReadPrec [BatchImportEvidenceToAssessmentControl]
ReadPrec BatchImportEvidenceToAssessmentControl
Int -> ReadS BatchImportEvidenceToAssessmentControl
ReadS [BatchImportEvidenceToAssessmentControl]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [BatchImportEvidenceToAssessmentControl]
$creadListPrec :: ReadPrec [BatchImportEvidenceToAssessmentControl]
readPrec :: ReadPrec BatchImportEvidenceToAssessmentControl
$creadPrec :: ReadPrec BatchImportEvidenceToAssessmentControl
readList :: ReadS [BatchImportEvidenceToAssessmentControl]
$creadList :: ReadS [BatchImportEvidenceToAssessmentControl]
readsPrec :: Int -> ReadS BatchImportEvidenceToAssessmentControl
$creadsPrec :: Int -> ReadS BatchImportEvidenceToAssessmentControl
Prelude.Read, Int -> BatchImportEvidenceToAssessmentControl -> ShowS
[BatchImportEvidenceToAssessmentControl] -> ShowS
BatchImportEvidenceToAssessmentControl -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [BatchImportEvidenceToAssessmentControl] -> ShowS
$cshowList :: [BatchImportEvidenceToAssessmentControl] -> ShowS
show :: BatchImportEvidenceToAssessmentControl -> String
$cshow :: BatchImportEvidenceToAssessmentControl -> String
showsPrec :: Int -> BatchImportEvidenceToAssessmentControl -> ShowS
$cshowsPrec :: Int -> BatchImportEvidenceToAssessmentControl -> ShowS
Prelude.Show, forall x.
Rep BatchImportEvidenceToAssessmentControl x
-> BatchImportEvidenceToAssessmentControl
forall x.
BatchImportEvidenceToAssessmentControl
-> Rep BatchImportEvidenceToAssessmentControl x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep BatchImportEvidenceToAssessmentControl x
-> BatchImportEvidenceToAssessmentControl
$cfrom :: forall x.
BatchImportEvidenceToAssessmentControl
-> Rep BatchImportEvidenceToAssessmentControl x
Prelude.Generic)

-- |
-- Create a value of 'BatchImportEvidenceToAssessmentControl' 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', 'batchImportEvidenceToAssessmentControl_assessmentId' - The identifier for the assessment.
--
-- 'controlSetId', 'batchImportEvidenceToAssessmentControl_controlSetId' - The identifier for the control set.
--
-- 'controlId', 'batchImportEvidenceToAssessmentControl_controlId' - The identifier for the control.
--
-- 'manualEvidence', 'batchImportEvidenceToAssessmentControl_manualEvidence' - The list of manual evidence objects.
newBatchImportEvidenceToAssessmentControl ::
  -- | 'assessmentId'
  Prelude.Text ->
  -- | 'controlSetId'
  Prelude.Text ->
  -- | 'controlId'
  Prelude.Text ->
  -- | 'manualEvidence'
  Prelude.NonEmpty ManualEvidence ->
  BatchImportEvidenceToAssessmentControl
newBatchImportEvidenceToAssessmentControl :: Text
-> Text
-> Text
-> NonEmpty ManualEvidence
-> BatchImportEvidenceToAssessmentControl
newBatchImportEvidenceToAssessmentControl
  Text
pAssessmentId_
  Text
pControlSetId_
  Text
pControlId_
  NonEmpty ManualEvidence
pManualEvidence_ =
    BatchImportEvidenceToAssessmentControl'
      { $sel:assessmentId:BatchImportEvidenceToAssessmentControl' :: Text
assessmentId =
          Text
pAssessmentId_,
        $sel:controlSetId:BatchImportEvidenceToAssessmentControl' :: Text
controlSetId = Text
pControlSetId_,
        $sel:controlId:BatchImportEvidenceToAssessmentControl' :: Text
controlId = Text
pControlId_,
        $sel:manualEvidence:BatchImportEvidenceToAssessmentControl' :: NonEmpty ManualEvidence
manualEvidence =
          forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced
            forall t b. AReview t b -> b -> t
Lens.# NonEmpty ManualEvidence
pManualEvidence_
      }

-- | The identifier for the assessment.
batchImportEvidenceToAssessmentControl_assessmentId :: Lens.Lens' BatchImportEvidenceToAssessmentControl Prelude.Text
batchImportEvidenceToAssessmentControl_assessmentId :: Lens' BatchImportEvidenceToAssessmentControl Text
batchImportEvidenceToAssessmentControl_assessmentId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\BatchImportEvidenceToAssessmentControl' {Text
assessmentId :: Text
$sel:assessmentId:BatchImportEvidenceToAssessmentControl' :: BatchImportEvidenceToAssessmentControl -> Text
assessmentId} -> Text
assessmentId) (\s :: BatchImportEvidenceToAssessmentControl
s@BatchImportEvidenceToAssessmentControl' {} Text
a -> BatchImportEvidenceToAssessmentControl
s {$sel:assessmentId:BatchImportEvidenceToAssessmentControl' :: Text
assessmentId = Text
a} :: BatchImportEvidenceToAssessmentControl)

-- | The identifier for the control set.
batchImportEvidenceToAssessmentControl_controlSetId :: Lens.Lens' BatchImportEvidenceToAssessmentControl Prelude.Text
batchImportEvidenceToAssessmentControl_controlSetId :: Lens' BatchImportEvidenceToAssessmentControl Text
batchImportEvidenceToAssessmentControl_controlSetId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\BatchImportEvidenceToAssessmentControl' {Text
controlSetId :: Text
$sel:controlSetId:BatchImportEvidenceToAssessmentControl' :: BatchImportEvidenceToAssessmentControl -> Text
controlSetId} -> Text
controlSetId) (\s :: BatchImportEvidenceToAssessmentControl
s@BatchImportEvidenceToAssessmentControl' {} Text
a -> BatchImportEvidenceToAssessmentControl
s {$sel:controlSetId:BatchImportEvidenceToAssessmentControl' :: Text
controlSetId = Text
a} :: BatchImportEvidenceToAssessmentControl)

-- | The identifier for the control.
batchImportEvidenceToAssessmentControl_controlId :: Lens.Lens' BatchImportEvidenceToAssessmentControl Prelude.Text
batchImportEvidenceToAssessmentControl_controlId :: Lens' BatchImportEvidenceToAssessmentControl Text
batchImportEvidenceToAssessmentControl_controlId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\BatchImportEvidenceToAssessmentControl' {Text
controlId :: Text
$sel:controlId:BatchImportEvidenceToAssessmentControl' :: BatchImportEvidenceToAssessmentControl -> Text
controlId} -> Text
controlId) (\s :: BatchImportEvidenceToAssessmentControl
s@BatchImportEvidenceToAssessmentControl' {} Text
a -> BatchImportEvidenceToAssessmentControl
s {$sel:controlId:BatchImportEvidenceToAssessmentControl' :: Text
controlId = Text
a} :: BatchImportEvidenceToAssessmentControl)

-- | The list of manual evidence objects.
batchImportEvidenceToAssessmentControl_manualEvidence :: Lens.Lens' BatchImportEvidenceToAssessmentControl (Prelude.NonEmpty ManualEvidence)
batchImportEvidenceToAssessmentControl_manualEvidence :: Lens'
  BatchImportEvidenceToAssessmentControl (NonEmpty ManualEvidence)
batchImportEvidenceToAssessmentControl_manualEvidence = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\BatchImportEvidenceToAssessmentControl' {NonEmpty ManualEvidence
manualEvidence :: NonEmpty ManualEvidence
$sel:manualEvidence:BatchImportEvidenceToAssessmentControl' :: BatchImportEvidenceToAssessmentControl -> NonEmpty ManualEvidence
manualEvidence} -> NonEmpty ManualEvidence
manualEvidence) (\s :: BatchImportEvidenceToAssessmentControl
s@BatchImportEvidenceToAssessmentControl' {} NonEmpty ManualEvidence
a -> BatchImportEvidenceToAssessmentControl
s {$sel:manualEvidence:BatchImportEvidenceToAssessmentControl' :: NonEmpty ManualEvidence
manualEvidence = NonEmpty ManualEvidence
a} :: BatchImportEvidenceToAssessmentControl) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

instance
  Core.AWSRequest
    BatchImportEvidenceToAssessmentControl
  where
  type
    AWSResponse
      BatchImportEvidenceToAssessmentControl =
      BatchImportEvidenceToAssessmentControlResponse
  request :: (Service -> Service)
-> BatchImportEvidenceToAssessmentControl
-> Request BatchImportEvidenceToAssessmentControl
request Service -> Service
overrides =
    forall a. (ToRequest a, ToJSON a) => Service -> a -> Request a
Request.postJSON (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy BatchImportEvidenceToAssessmentControl
-> ClientResponse ClientBody
-> m (Either
        Error
        (ClientResponse
           (AWSResponse BatchImportEvidenceToAssessmentControl)))
response =
    forall (m :: * -> *) a.
MonadResource m =>
(Int -> ResponseHeaders -> Object -> Either String (AWSResponse a))
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveJSON
      ( \Int
s ResponseHeaders
h Object
x ->
          Maybe [BatchImportEvidenceToAssessmentControlError]
-> Int -> BatchImportEvidenceToAssessmentControlResponse
BatchImportEvidenceToAssessmentControlResponse'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"errors" forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty)
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure (forall a. Enum a => a -> Int
Prelude.fromEnum Int
s))
      )

instance
  Prelude.Hashable
    BatchImportEvidenceToAssessmentControl
  where
  hashWithSalt :: Int -> BatchImportEvidenceToAssessmentControl -> Int
hashWithSalt
    Int
_salt
    BatchImportEvidenceToAssessmentControl' {NonEmpty ManualEvidence
Text
manualEvidence :: NonEmpty ManualEvidence
controlId :: Text
controlSetId :: Text
assessmentId :: Text
$sel:manualEvidence:BatchImportEvidenceToAssessmentControl' :: BatchImportEvidenceToAssessmentControl -> NonEmpty ManualEvidence
$sel:controlId:BatchImportEvidenceToAssessmentControl' :: BatchImportEvidenceToAssessmentControl -> Text
$sel:controlSetId:BatchImportEvidenceToAssessmentControl' :: BatchImportEvidenceToAssessmentControl -> Text
$sel:assessmentId:BatchImportEvidenceToAssessmentControl' :: BatchImportEvidenceToAssessmentControl -> Text
..} =
      Int
_salt
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
assessmentId
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
controlSetId
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
controlId
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` NonEmpty ManualEvidence
manualEvidence

instance
  Prelude.NFData
    BatchImportEvidenceToAssessmentControl
  where
  rnf :: BatchImportEvidenceToAssessmentControl -> ()
rnf BatchImportEvidenceToAssessmentControl' {NonEmpty ManualEvidence
Text
manualEvidence :: NonEmpty ManualEvidence
controlId :: Text
controlSetId :: Text
assessmentId :: Text
$sel:manualEvidence:BatchImportEvidenceToAssessmentControl' :: BatchImportEvidenceToAssessmentControl -> NonEmpty ManualEvidence
$sel:controlId:BatchImportEvidenceToAssessmentControl' :: BatchImportEvidenceToAssessmentControl -> Text
$sel:controlSetId:BatchImportEvidenceToAssessmentControl' :: BatchImportEvidenceToAssessmentControl -> Text
$sel:assessmentId:BatchImportEvidenceToAssessmentControl' :: BatchImportEvidenceToAssessmentControl -> Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Text
assessmentId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
controlSetId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
controlId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf NonEmpty ManualEvidence
manualEvidence

instance
  Data.ToHeaders
    BatchImportEvidenceToAssessmentControl
  where
  toHeaders :: BatchImportEvidenceToAssessmentControl -> ResponseHeaders
toHeaders =
    forall a b. a -> b -> a
Prelude.const
      ( forall a. Monoid a => [a] -> a
Prelude.mconcat
          [ HeaderName
"Content-Type"
              forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# ( ByteString
"application/x-amz-json-1.1" ::
                          Prelude.ByteString
                      )
          ]
      )

instance
  Data.ToJSON
    BatchImportEvidenceToAssessmentControl
  where
  toJSON :: BatchImportEvidenceToAssessmentControl -> Value
toJSON BatchImportEvidenceToAssessmentControl' {NonEmpty ManualEvidence
Text
manualEvidence :: NonEmpty ManualEvidence
controlId :: Text
controlSetId :: Text
assessmentId :: Text
$sel:manualEvidence:BatchImportEvidenceToAssessmentControl' :: BatchImportEvidenceToAssessmentControl -> NonEmpty ManualEvidence
$sel:controlId:BatchImportEvidenceToAssessmentControl' :: BatchImportEvidenceToAssessmentControl -> Text
$sel:controlSetId:BatchImportEvidenceToAssessmentControl' :: BatchImportEvidenceToAssessmentControl -> Text
$sel:assessmentId:BatchImportEvidenceToAssessmentControl' :: BatchImportEvidenceToAssessmentControl -> Text
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ forall a. a -> Maybe a
Prelude.Just
              (Key
"manualEvidence" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= NonEmpty ManualEvidence
manualEvidence)
          ]
      )

instance
  Data.ToPath
    BatchImportEvidenceToAssessmentControl
  where
  toPath :: BatchImportEvidenceToAssessmentControl -> ByteString
toPath BatchImportEvidenceToAssessmentControl' {NonEmpty ManualEvidence
Text
manualEvidence :: NonEmpty ManualEvidence
controlId :: Text
controlSetId :: Text
assessmentId :: Text
$sel:manualEvidence:BatchImportEvidenceToAssessmentControl' :: BatchImportEvidenceToAssessmentControl -> NonEmpty ManualEvidence
$sel:controlId:BatchImportEvidenceToAssessmentControl' :: BatchImportEvidenceToAssessmentControl -> Text
$sel:controlSetId:BatchImportEvidenceToAssessmentControl' :: BatchImportEvidenceToAssessmentControl -> Text
$sel:assessmentId:BatchImportEvidenceToAssessmentControl' :: BatchImportEvidenceToAssessmentControl -> Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"/assessments/",
        forall a. ToByteString a => a -> ByteString
Data.toBS Text
assessmentId,
        ByteString
"/controlSets/",
        forall a. ToByteString a => a -> ByteString
Data.toBS Text
controlSetId,
        ByteString
"/controls/",
        forall a. ToByteString a => a -> ByteString
Data.toBS Text
controlId,
        ByteString
"/evidence"
      ]

instance
  Data.ToQuery
    BatchImportEvidenceToAssessmentControl
  where
  toQuery :: BatchImportEvidenceToAssessmentControl -> QueryString
toQuery = forall a b. a -> b -> a
Prelude.const forall a. Monoid a => a
Prelude.mempty

-- | /See:/ 'newBatchImportEvidenceToAssessmentControlResponse' smart constructor.
data BatchImportEvidenceToAssessmentControlResponse = BatchImportEvidenceToAssessmentControlResponse'
  { -- | A list of errors that the @BatchImportEvidenceToAssessmentControl@ API
    -- returned.
    BatchImportEvidenceToAssessmentControlResponse
-> Maybe [BatchImportEvidenceToAssessmentControlError]
errors :: Prelude.Maybe [BatchImportEvidenceToAssessmentControlError],
    -- | The response's http status code.
    BatchImportEvidenceToAssessmentControlResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (BatchImportEvidenceToAssessmentControlResponse
-> BatchImportEvidenceToAssessmentControlResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: BatchImportEvidenceToAssessmentControlResponse
-> BatchImportEvidenceToAssessmentControlResponse -> Bool
$c/= :: BatchImportEvidenceToAssessmentControlResponse
-> BatchImportEvidenceToAssessmentControlResponse -> Bool
== :: BatchImportEvidenceToAssessmentControlResponse
-> BatchImportEvidenceToAssessmentControlResponse -> Bool
$c== :: BatchImportEvidenceToAssessmentControlResponse
-> BatchImportEvidenceToAssessmentControlResponse -> Bool
Prelude.Eq, ReadPrec [BatchImportEvidenceToAssessmentControlResponse]
ReadPrec BatchImportEvidenceToAssessmentControlResponse
Int -> ReadS BatchImportEvidenceToAssessmentControlResponse
ReadS [BatchImportEvidenceToAssessmentControlResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [BatchImportEvidenceToAssessmentControlResponse]
$creadListPrec :: ReadPrec [BatchImportEvidenceToAssessmentControlResponse]
readPrec :: ReadPrec BatchImportEvidenceToAssessmentControlResponse
$creadPrec :: ReadPrec BatchImportEvidenceToAssessmentControlResponse
readList :: ReadS [BatchImportEvidenceToAssessmentControlResponse]
$creadList :: ReadS [BatchImportEvidenceToAssessmentControlResponse]
readsPrec :: Int -> ReadS BatchImportEvidenceToAssessmentControlResponse
$creadsPrec :: Int -> ReadS BatchImportEvidenceToAssessmentControlResponse
Prelude.Read, Int -> BatchImportEvidenceToAssessmentControlResponse -> ShowS
[BatchImportEvidenceToAssessmentControlResponse] -> ShowS
BatchImportEvidenceToAssessmentControlResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [BatchImportEvidenceToAssessmentControlResponse] -> ShowS
$cshowList :: [BatchImportEvidenceToAssessmentControlResponse] -> ShowS
show :: BatchImportEvidenceToAssessmentControlResponse -> String
$cshow :: BatchImportEvidenceToAssessmentControlResponse -> String
showsPrec :: Int -> BatchImportEvidenceToAssessmentControlResponse -> ShowS
$cshowsPrec :: Int -> BatchImportEvidenceToAssessmentControlResponse -> ShowS
Prelude.Show, forall x.
Rep BatchImportEvidenceToAssessmentControlResponse x
-> BatchImportEvidenceToAssessmentControlResponse
forall x.
BatchImportEvidenceToAssessmentControlResponse
-> Rep BatchImportEvidenceToAssessmentControlResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep BatchImportEvidenceToAssessmentControlResponse x
-> BatchImportEvidenceToAssessmentControlResponse
$cfrom :: forall x.
BatchImportEvidenceToAssessmentControlResponse
-> Rep BatchImportEvidenceToAssessmentControlResponse x
Prelude.Generic)

-- |
-- Create a value of 'BatchImportEvidenceToAssessmentControlResponse' 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', 'batchImportEvidenceToAssessmentControlResponse_errors' - A list of errors that the @BatchImportEvidenceToAssessmentControl@ API
-- returned.
--
-- 'httpStatus', 'batchImportEvidenceToAssessmentControlResponse_httpStatus' - The response's http status code.
newBatchImportEvidenceToAssessmentControlResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  BatchImportEvidenceToAssessmentControlResponse
newBatchImportEvidenceToAssessmentControlResponse :: Int -> BatchImportEvidenceToAssessmentControlResponse
newBatchImportEvidenceToAssessmentControlResponse
  Int
pHttpStatus_ =
    BatchImportEvidenceToAssessmentControlResponse'
      { $sel:errors:BatchImportEvidenceToAssessmentControlResponse' :: Maybe [BatchImportEvidenceToAssessmentControlError]
errors =
          forall a. Maybe a
Prelude.Nothing,
        $sel:httpStatus:BatchImportEvidenceToAssessmentControlResponse' :: Int
httpStatus = Int
pHttpStatus_
      }

-- | A list of errors that the @BatchImportEvidenceToAssessmentControl@ API
-- returned.
batchImportEvidenceToAssessmentControlResponse_errors :: Lens.Lens' BatchImportEvidenceToAssessmentControlResponse (Prelude.Maybe [BatchImportEvidenceToAssessmentControlError])
batchImportEvidenceToAssessmentControlResponse_errors :: Lens'
  BatchImportEvidenceToAssessmentControlResponse
  (Maybe [BatchImportEvidenceToAssessmentControlError])
batchImportEvidenceToAssessmentControlResponse_errors = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\BatchImportEvidenceToAssessmentControlResponse' {Maybe [BatchImportEvidenceToAssessmentControlError]
errors :: Maybe [BatchImportEvidenceToAssessmentControlError]
$sel:errors:BatchImportEvidenceToAssessmentControlResponse' :: BatchImportEvidenceToAssessmentControlResponse
-> Maybe [BatchImportEvidenceToAssessmentControlError]
errors} -> Maybe [BatchImportEvidenceToAssessmentControlError]
errors) (\s :: BatchImportEvidenceToAssessmentControlResponse
s@BatchImportEvidenceToAssessmentControlResponse' {} Maybe [BatchImportEvidenceToAssessmentControlError]
a -> BatchImportEvidenceToAssessmentControlResponse
s {$sel:errors:BatchImportEvidenceToAssessmentControlResponse' :: Maybe [BatchImportEvidenceToAssessmentControlError]
errors = Maybe [BatchImportEvidenceToAssessmentControlError]
a} :: BatchImportEvidenceToAssessmentControlResponse) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The response's http status code.
batchImportEvidenceToAssessmentControlResponse_httpStatus :: Lens.Lens' BatchImportEvidenceToAssessmentControlResponse Prelude.Int
batchImportEvidenceToAssessmentControlResponse_httpStatus :: Lens' BatchImportEvidenceToAssessmentControlResponse Int
batchImportEvidenceToAssessmentControlResponse_httpStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\BatchImportEvidenceToAssessmentControlResponse' {Int
httpStatus :: Int
$sel:httpStatus:BatchImportEvidenceToAssessmentControlResponse' :: BatchImportEvidenceToAssessmentControlResponse -> Int
httpStatus} -> Int
httpStatus) (\s :: BatchImportEvidenceToAssessmentControlResponse
s@BatchImportEvidenceToAssessmentControlResponse' {} Int
a -> BatchImportEvidenceToAssessmentControlResponse
s {$sel:httpStatus:BatchImportEvidenceToAssessmentControlResponse' :: Int
httpStatus = Int
a} :: BatchImportEvidenceToAssessmentControlResponse)

instance
  Prelude.NFData
    BatchImportEvidenceToAssessmentControlResponse
  where
  rnf :: BatchImportEvidenceToAssessmentControlResponse -> ()
rnf
    BatchImportEvidenceToAssessmentControlResponse' {Int
Maybe [BatchImportEvidenceToAssessmentControlError]
httpStatus :: Int
errors :: Maybe [BatchImportEvidenceToAssessmentControlError]
$sel:httpStatus:BatchImportEvidenceToAssessmentControlResponse' :: BatchImportEvidenceToAssessmentControlResponse -> Int
$sel:errors:BatchImportEvidenceToAssessmentControlResponse' :: BatchImportEvidenceToAssessmentControlResponse
-> Maybe [BatchImportEvidenceToAssessmentControlError]
..} =
      forall a. NFData a => a -> ()
Prelude.rnf Maybe [BatchImportEvidenceToAssessmentControlError]
errors
        seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus