{-# 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.ListAssessmentControlInsightsByControlDomain
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Lists the latest analytics data for controls within a specific control
-- domain and a specific active assessment.
--
-- Control insights are listed only if the control belongs to the control
-- domain and assessment that was specified. Moreover, the control must
-- have collected evidence on the @lastUpdated@ date of
-- @controlInsightsByAssessment@. If neither of these conditions are met,
-- no data is listed for that control.
module Amazonka.AuditManager.ListAssessmentControlInsightsByControlDomain
  ( -- * Creating a Request
    ListAssessmentControlInsightsByControlDomain (..),
    newListAssessmentControlInsightsByControlDomain,

    -- * Request Lenses
    listAssessmentControlInsightsByControlDomain_maxResults,
    listAssessmentControlInsightsByControlDomain_nextToken,
    listAssessmentControlInsightsByControlDomain_controlDomainId,
    listAssessmentControlInsightsByControlDomain_assessmentId,

    -- * Destructuring the Response
    ListAssessmentControlInsightsByControlDomainResponse (..),
    newListAssessmentControlInsightsByControlDomainResponse,

    -- * Response Lenses
    listAssessmentControlInsightsByControlDomainResponse_controlInsightsByAssessment,
    listAssessmentControlInsightsByControlDomainResponse_nextToken,
    listAssessmentControlInsightsByControlDomainResponse_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:/ 'newListAssessmentControlInsightsByControlDomain' smart constructor.
data ListAssessmentControlInsightsByControlDomain = ListAssessmentControlInsightsByControlDomain'
  { -- | Represents the maximum number of results on a page or for an API request
    -- call.
    ListAssessmentControlInsightsByControlDomain -> Maybe Natural
maxResults :: Prelude.Maybe Prelude.Natural,
    -- | The pagination token that\'s used to fetch the next set of results.
    ListAssessmentControlInsightsByControlDomain -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text,
    -- | The unique identifier for the control domain.
    ListAssessmentControlInsightsByControlDomain -> Text
controlDomainId :: Prelude.Text,
    -- | The unique identifier for the active assessment.
    ListAssessmentControlInsightsByControlDomain -> Text
assessmentId :: Prelude.Text
  }
  deriving (ListAssessmentControlInsightsByControlDomain
-> ListAssessmentControlInsightsByControlDomain -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ListAssessmentControlInsightsByControlDomain
-> ListAssessmentControlInsightsByControlDomain -> Bool
$c/= :: ListAssessmentControlInsightsByControlDomain
-> ListAssessmentControlInsightsByControlDomain -> Bool
== :: ListAssessmentControlInsightsByControlDomain
-> ListAssessmentControlInsightsByControlDomain -> Bool
$c== :: ListAssessmentControlInsightsByControlDomain
-> ListAssessmentControlInsightsByControlDomain -> Bool
Prelude.Eq, ReadPrec [ListAssessmentControlInsightsByControlDomain]
ReadPrec ListAssessmentControlInsightsByControlDomain
Int -> ReadS ListAssessmentControlInsightsByControlDomain
ReadS [ListAssessmentControlInsightsByControlDomain]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ListAssessmentControlInsightsByControlDomain]
$creadListPrec :: ReadPrec [ListAssessmentControlInsightsByControlDomain]
readPrec :: ReadPrec ListAssessmentControlInsightsByControlDomain
$creadPrec :: ReadPrec ListAssessmentControlInsightsByControlDomain
readList :: ReadS [ListAssessmentControlInsightsByControlDomain]
$creadList :: ReadS [ListAssessmentControlInsightsByControlDomain]
readsPrec :: Int -> ReadS ListAssessmentControlInsightsByControlDomain
$creadsPrec :: Int -> ReadS ListAssessmentControlInsightsByControlDomain
Prelude.Read, Int -> ListAssessmentControlInsightsByControlDomain -> ShowS
[ListAssessmentControlInsightsByControlDomain] -> ShowS
ListAssessmentControlInsightsByControlDomain -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ListAssessmentControlInsightsByControlDomain] -> ShowS
$cshowList :: [ListAssessmentControlInsightsByControlDomain] -> ShowS
show :: ListAssessmentControlInsightsByControlDomain -> String
$cshow :: ListAssessmentControlInsightsByControlDomain -> String
showsPrec :: Int -> ListAssessmentControlInsightsByControlDomain -> ShowS
$cshowsPrec :: Int -> ListAssessmentControlInsightsByControlDomain -> ShowS
Prelude.Show, forall x.
Rep ListAssessmentControlInsightsByControlDomain x
-> ListAssessmentControlInsightsByControlDomain
forall x.
ListAssessmentControlInsightsByControlDomain
-> Rep ListAssessmentControlInsightsByControlDomain x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep ListAssessmentControlInsightsByControlDomain x
-> ListAssessmentControlInsightsByControlDomain
$cfrom :: forall x.
ListAssessmentControlInsightsByControlDomain
-> Rep ListAssessmentControlInsightsByControlDomain x
Prelude.Generic)

-- |
-- Create a value of 'ListAssessmentControlInsightsByControlDomain' 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:
--
-- 'maxResults', 'listAssessmentControlInsightsByControlDomain_maxResults' - Represents the maximum number of results on a page or for an API request
-- call.
--
-- 'nextToken', 'listAssessmentControlInsightsByControlDomain_nextToken' - The pagination token that\'s used to fetch the next set of results.
--
-- 'controlDomainId', 'listAssessmentControlInsightsByControlDomain_controlDomainId' - The unique identifier for the control domain.
--
-- 'assessmentId', 'listAssessmentControlInsightsByControlDomain_assessmentId' - The unique identifier for the active assessment.
newListAssessmentControlInsightsByControlDomain ::
  -- | 'controlDomainId'
  Prelude.Text ->
  -- | 'assessmentId'
  Prelude.Text ->
  ListAssessmentControlInsightsByControlDomain
newListAssessmentControlInsightsByControlDomain :: Text -> Text -> ListAssessmentControlInsightsByControlDomain
newListAssessmentControlInsightsByControlDomain
  Text
pControlDomainId_
  Text
pAssessmentId_ =
    ListAssessmentControlInsightsByControlDomain'
      { $sel:maxResults:ListAssessmentControlInsightsByControlDomain' :: Maybe Natural
maxResults =
          forall a. Maybe a
Prelude.Nothing,
        $sel:nextToken:ListAssessmentControlInsightsByControlDomain' :: Maybe Text
nextToken = forall a. Maybe a
Prelude.Nothing,
        $sel:controlDomainId:ListAssessmentControlInsightsByControlDomain' :: Text
controlDomainId =
          Text
pControlDomainId_,
        $sel:assessmentId:ListAssessmentControlInsightsByControlDomain' :: Text
assessmentId = Text
pAssessmentId_
      }

-- | Represents the maximum number of results on a page or for an API request
-- call.
listAssessmentControlInsightsByControlDomain_maxResults :: Lens.Lens' ListAssessmentControlInsightsByControlDomain (Prelude.Maybe Prelude.Natural)
listAssessmentControlInsightsByControlDomain_maxResults :: Lens' ListAssessmentControlInsightsByControlDomain (Maybe Natural)
listAssessmentControlInsightsByControlDomain_maxResults = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListAssessmentControlInsightsByControlDomain' {Maybe Natural
maxResults :: Maybe Natural
$sel:maxResults:ListAssessmentControlInsightsByControlDomain' :: ListAssessmentControlInsightsByControlDomain -> Maybe Natural
maxResults} -> Maybe Natural
maxResults) (\s :: ListAssessmentControlInsightsByControlDomain
s@ListAssessmentControlInsightsByControlDomain' {} Maybe Natural
a -> ListAssessmentControlInsightsByControlDomain
s {$sel:maxResults:ListAssessmentControlInsightsByControlDomain' :: Maybe Natural
maxResults = Maybe Natural
a} :: ListAssessmentControlInsightsByControlDomain)

-- | The pagination token that\'s used to fetch the next set of results.
listAssessmentControlInsightsByControlDomain_nextToken :: Lens.Lens' ListAssessmentControlInsightsByControlDomain (Prelude.Maybe Prelude.Text)
listAssessmentControlInsightsByControlDomain_nextToken :: Lens' ListAssessmentControlInsightsByControlDomain (Maybe Text)
listAssessmentControlInsightsByControlDomain_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListAssessmentControlInsightsByControlDomain' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:ListAssessmentControlInsightsByControlDomain' :: ListAssessmentControlInsightsByControlDomain -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: ListAssessmentControlInsightsByControlDomain
s@ListAssessmentControlInsightsByControlDomain' {} Maybe Text
a -> ListAssessmentControlInsightsByControlDomain
s {$sel:nextToken:ListAssessmentControlInsightsByControlDomain' :: Maybe Text
nextToken = Maybe Text
a} :: ListAssessmentControlInsightsByControlDomain)

-- | The unique identifier for the control domain.
listAssessmentControlInsightsByControlDomain_controlDomainId :: Lens.Lens' ListAssessmentControlInsightsByControlDomain Prelude.Text
listAssessmentControlInsightsByControlDomain_controlDomainId :: Lens' ListAssessmentControlInsightsByControlDomain Text
listAssessmentControlInsightsByControlDomain_controlDomainId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListAssessmentControlInsightsByControlDomain' {Text
controlDomainId :: Text
$sel:controlDomainId:ListAssessmentControlInsightsByControlDomain' :: ListAssessmentControlInsightsByControlDomain -> Text
controlDomainId} -> Text
controlDomainId) (\s :: ListAssessmentControlInsightsByControlDomain
s@ListAssessmentControlInsightsByControlDomain' {} Text
a -> ListAssessmentControlInsightsByControlDomain
s {$sel:controlDomainId:ListAssessmentControlInsightsByControlDomain' :: Text
controlDomainId = Text
a} :: ListAssessmentControlInsightsByControlDomain)

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

instance
  Core.AWSRequest
    ListAssessmentControlInsightsByControlDomain
  where
  type
    AWSResponse
      ListAssessmentControlInsightsByControlDomain =
      ListAssessmentControlInsightsByControlDomainResponse
  request :: (Service -> Service)
-> ListAssessmentControlInsightsByControlDomain
-> Request ListAssessmentControlInsightsByControlDomain
request Service -> Service
overrides =
    forall a. ToRequest a => Service -> a -> Request a
Request.get (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy ListAssessmentControlInsightsByControlDomain
-> ClientResponse ClientBody
-> m (Either
        Error
        (ClientResponse
           (AWSResponse ListAssessmentControlInsightsByControlDomain)))
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 [ControlInsightsMetadataByAssessmentItem]
-> Maybe Text
-> Int
-> ListAssessmentControlInsightsByControlDomainResponse
ListAssessmentControlInsightsByControlDomainResponse'
            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
"controlInsightsByAssessment"
                            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.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"nextToken")
            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
    ListAssessmentControlInsightsByControlDomain
  where
  hashWithSalt :: Int -> ListAssessmentControlInsightsByControlDomain -> Int
hashWithSalt
    Int
_salt
    ListAssessmentControlInsightsByControlDomain' {Maybe Natural
Maybe Text
Text
assessmentId :: Text
controlDomainId :: Text
nextToken :: Maybe Text
maxResults :: Maybe Natural
$sel:assessmentId:ListAssessmentControlInsightsByControlDomain' :: ListAssessmentControlInsightsByControlDomain -> Text
$sel:controlDomainId:ListAssessmentControlInsightsByControlDomain' :: ListAssessmentControlInsightsByControlDomain -> Text
$sel:nextToken:ListAssessmentControlInsightsByControlDomain' :: ListAssessmentControlInsightsByControlDomain -> Maybe Text
$sel:maxResults:ListAssessmentControlInsightsByControlDomain' :: ListAssessmentControlInsightsByControlDomain -> Maybe Natural
..} =
      Int
_salt
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
maxResults
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
nextToken
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
controlDomainId
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
assessmentId

instance
  Prelude.NFData
    ListAssessmentControlInsightsByControlDomain
  where
  rnf :: ListAssessmentControlInsightsByControlDomain -> ()
rnf ListAssessmentControlInsightsByControlDomain' {Maybe Natural
Maybe Text
Text
assessmentId :: Text
controlDomainId :: Text
nextToken :: Maybe Text
maxResults :: Maybe Natural
$sel:assessmentId:ListAssessmentControlInsightsByControlDomain' :: ListAssessmentControlInsightsByControlDomain -> Text
$sel:controlDomainId:ListAssessmentControlInsightsByControlDomain' :: ListAssessmentControlInsightsByControlDomain -> Text
$sel:nextToken:ListAssessmentControlInsightsByControlDomain' :: ListAssessmentControlInsightsByControlDomain -> Maybe Text
$sel:maxResults:ListAssessmentControlInsightsByControlDomain' :: ListAssessmentControlInsightsByControlDomain -> Maybe Natural
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Natural
maxResults
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
nextToken
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
controlDomainId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
assessmentId

instance
  Data.ToHeaders
    ListAssessmentControlInsightsByControlDomain
  where
  toHeaders :: ListAssessmentControlInsightsByControlDomain -> 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.ToPath
    ListAssessmentControlInsightsByControlDomain
  where
  toPath :: ListAssessmentControlInsightsByControlDomain -> ByteString
toPath =
    forall a b. a -> b -> a
Prelude.const ByteString
"/insights/controls-by-assessment"

instance
  Data.ToQuery
    ListAssessmentControlInsightsByControlDomain
  where
  toQuery :: ListAssessmentControlInsightsByControlDomain -> QueryString
toQuery
    ListAssessmentControlInsightsByControlDomain' {Maybe Natural
Maybe Text
Text
assessmentId :: Text
controlDomainId :: Text
nextToken :: Maybe Text
maxResults :: Maybe Natural
$sel:assessmentId:ListAssessmentControlInsightsByControlDomain' :: ListAssessmentControlInsightsByControlDomain -> Text
$sel:controlDomainId:ListAssessmentControlInsightsByControlDomain' :: ListAssessmentControlInsightsByControlDomain -> Text
$sel:nextToken:ListAssessmentControlInsightsByControlDomain' :: ListAssessmentControlInsightsByControlDomain -> Maybe Text
$sel:maxResults:ListAssessmentControlInsightsByControlDomain' :: ListAssessmentControlInsightsByControlDomain -> Maybe Natural
..} =
      forall a. Monoid a => [a] -> a
Prelude.mconcat
        [ ByteString
"maxResults" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Natural
maxResults,
          ByteString
"nextToken" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
nextToken,
          ByteString
"controlDomainId" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Text
controlDomainId,
          ByteString
"assessmentId" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Text
assessmentId
        ]

-- | /See:/ 'newListAssessmentControlInsightsByControlDomainResponse' smart constructor.
data ListAssessmentControlInsightsByControlDomainResponse = ListAssessmentControlInsightsByControlDomainResponse'
  { -- | The assessment control analytics data that the
    -- @ListAssessmentControlInsightsByControlDomain@ API returned.
    ListAssessmentControlInsightsByControlDomainResponse
-> Maybe [ControlInsightsMetadataByAssessmentItem]
controlInsightsByAssessment :: Prelude.Maybe [ControlInsightsMetadataByAssessmentItem],
    -- | The pagination token that\'s used to fetch the next set of results.
    ListAssessmentControlInsightsByControlDomainResponse -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text,
    -- | The response's http status code.
    ListAssessmentControlInsightsByControlDomainResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (ListAssessmentControlInsightsByControlDomainResponse
-> ListAssessmentControlInsightsByControlDomainResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ListAssessmentControlInsightsByControlDomainResponse
-> ListAssessmentControlInsightsByControlDomainResponse -> Bool
$c/= :: ListAssessmentControlInsightsByControlDomainResponse
-> ListAssessmentControlInsightsByControlDomainResponse -> Bool
== :: ListAssessmentControlInsightsByControlDomainResponse
-> ListAssessmentControlInsightsByControlDomainResponse -> Bool
$c== :: ListAssessmentControlInsightsByControlDomainResponse
-> ListAssessmentControlInsightsByControlDomainResponse -> Bool
Prelude.Eq, ReadPrec [ListAssessmentControlInsightsByControlDomainResponse]
ReadPrec ListAssessmentControlInsightsByControlDomainResponse
Int -> ReadS ListAssessmentControlInsightsByControlDomainResponse
ReadS [ListAssessmentControlInsightsByControlDomainResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ListAssessmentControlInsightsByControlDomainResponse]
$creadListPrec :: ReadPrec [ListAssessmentControlInsightsByControlDomainResponse]
readPrec :: ReadPrec ListAssessmentControlInsightsByControlDomainResponse
$creadPrec :: ReadPrec ListAssessmentControlInsightsByControlDomainResponse
readList :: ReadS [ListAssessmentControlInsightsByControlDomainResponse]
$creadList :: ReadS [ListAssessmentControlInsightsByControlDomainResponse]
readsPrec :: Int -> ReadS ListAssessmentControlInsightsByControlDomainResponse
$creadsPrec :: Int -> ReadS ListAssessmentControlInsightsByControlDomainResponse
Prelude.Read, Int
-> ListAssessmentControlInsightsByControlDomainResponse -> ShowS
[ListAssessmentControlInsightsByControlDomainResponse] -> ShowS
ListAssessmentControlInsightsByControlDomainResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ListAssessmentControlInsightsByControlDomainResponse] -> ShowS
$cshowList :: [ListAssessmentControlInsightsByControlDomainResponse] -> ShowS
show :: ListAssessmentControlInsightsByControlDomainResponse -> String
$cshow :: ListAssessmentControlInsightsByControlDomainResponse -> String
showsPrec :: Int
-> ListAssessmentControlInsightsByControlDomainResponse -> ShowS
$cshowsPrec :: Int
-> ListAssessmentControlInsightsByControlDomainResponse -> ShowS
Prelude.Show, forall x.
Rep ListAssessmentControlInsightsByControlDomainResponse x
-> ListAssessmentControlInsightsByControlDomainResponse
forall x.
ListAssessmentControlInsightsByControlDomainResponse
-> Rep ListAssessmentControlInsightsByControlDomainResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep ListAssessmentControlInsightsByControlDomainResponse x
-> ListAssessmentControlInsightsByControlDomainResponse
$cfrom :: forall x.
ListAssessmentControlInsightsByControlDomainResponse
-> Rep ListAssessmentControlInsightsByControlDomainResponse x
Prelude.Generic)

-- |
-- Create a value of 'ListAssessmentControlInsightsByControlDomainResponse' 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:
--
-- 'controlInsightsByAssessment', 'listAssessmentControlInsightsByControlDomainResponse_controlInsightsByAssessment' - The assessment control analytics data that the
-- @ListAssessmentControlInsightsByControlDomain@ API returned.
--
-- 'nextToken', 'listAssessmentControlInsightsByControlDomainResponse_nextToken' - The pagination token that\'s used to fetch the next set of results.
--
-- 'httpStatus', 'listAssessmentControlInsightsByControlDomainResponse_httpStatus' - The response's http status code.
newListAssessmentControlInsightsByControlDomainResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  ListAssessmentControlInsightsByControlDomainResponse
newListAssessmentControlInsightsByControlDomainResponse :: Int -> ListAssessmentControlInsightsByControlDomainResponse
newListAssessmentControlInsightsByControlDomainResponse
  Int
pHttpStatus_ =
    ListAssessmentControlInsightsByControlDomainResponse'
      { $sel:controlInsightsByAssessment:ListAssessmentControlInsightsByControlDomainResponse' :: Maybe [ControlInsightsMetadataByAssessmentItem]
controlInsightsByAssessment =
          forall a. Maybe a
Prelude.Nothing,
        $sel:nextToken:ListAssessmentControlInsightsByControlDomainResponse' :: Maybe Text
nextToken =
          forall a. Maybe a
Prelude.Nothing,
        $sel:httpStatus:ListAssessmentControlInsightsByControlDomainResponse' :: Int
httpStatus =
          Int
pHttpStatus_
      }

-- | The assessment control analytics data that the
-- @ListAssessmentControlInsightsByControlDomain@ API returned.
listAssessmentControlInsightsByControlDomainResponse_controlInsightsByAssessment :: Lens.Lens' ListAssessmentControlInsightsByControlDomainResponse (Prelude.Maybe [ControlInsightsMetadataByAssessmentItem])
listAssessmentControlInsightsByControlDomainResponse_controlInsightsByAssessment :: Lens'
  ListAssessmentControlInsightsByControlDomainResponse
  (Maybe [ControlInsightsMetadataByAssessmentItem])
listAssessmentControlInsightsByControlDomainResponse_controlInsightsByAssessment = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListAssessmentControlInsightsByControlDomainResponse' {Maybe [ControlInsightsMetadataByAssessmentItem]
controlInsightsByAssessment :: Maybe [ControlInsightsMetadataByAssessmentItem]
$sel:controlInsightsByAssessment:ListAssessmentControlInsightsByControlDomainResponse' :: ListAssessmentControlInsightsByControlDomainResponse
-> Maybe [ControlInsightsMetadataByAssessmentItem]
controlInsightsByAssessment} -> Maybe [ControlInsightsMetadataByAssessmentItem]
controlInsightsByAssessment) (\s :: ListAssessmentControlInsightsByControlDomainResponse
s@ListAssessmentControlInsightsByControlDomainResponse' {} Maybe [ControlInsightsMetadataByAssessmentItem]
a -> ListAssessmentControlInsightsByControlDomainResponse
s {$sel:controlInsightsByAssessment:ListAssessmentControlInsightsByControlDomainResponse' :: Maybe [ControlInsightsMetadataByAssessmentItem]
controlInsightsByAssessment = Maybe [ControlInsightsMetadataByAssessmentItem]
a} :: ListAssessmentControlInsightsByControlDomainResponse) 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 pagination token that\'s used to fetch the next set of results.
listAssessmentControlInsightsByControlDomainResponse_nextToken :: Lens.Lens' ListAssessmentControlInsightsByControlDomainResponse (Prelude.Maybe Prelude.Text)
listAssessmentControlInsightsByControlDomainResponse_nextToken :: Lens'
  ListAssessmentControlInsightsByControlDomainResponse (Maybe Text)
listAssessmentControlInsightsByControlDomainResponse_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListAssessmentControlInsightsByControlDomainResponse' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:ListAssessmentControlInsightsByControlDomainResponse' :: ListAssessmentControlInsightsByControlDomainResponse -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: ListAssessmentControlInsightsByControlDomainResponse
s@ListAssessmentControlInsightsByControlDomainResponse' {} Maybe Text
a -> ListAssessmentControlInsightsByControlDomainResponse
s {$sel:nextToken:ListAssessmentControlInsightsByControlDomainResponse' :: Maybe Text
nextToken = Maybe Text
a} :: ListAssessmentControlInsightsByControlDomainResponse)

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

instance
  Prelude.NFData
    ListAssessmentControlInsightsByControlDomainResponse
  where
  rnf :: ListAssessmentControlInsightsByControlDomainResponse -> ()
rnf
    ListAssessmentControlInsightsByControlDomainResponse' {Int
Maybe [ControlInsightsMetadataByAssessmentItem]
Maybe Text
httpStatus :: Int
nextToken :: Maybe Text
controlInsightsByAssessment :: Maybe [ControlInsightsMetadataByAssessmentItem]
$sel:httpStatus:ListAssessmentControlInsightsByControlDomainResponse' :: ListAssessmentControlInsightsByControlDomainResponse -> Int
$sel:nextToken:ListAssessmentControlInsightsByControlDomainResponse' :: ListAssessmentControlInsightsByControlDomainResponse -> Maybe Text
$sel:controlInsightsByAssessment:ListAssessmentControlInsightsByControlDomainResponse' :: ListAssessmentControlInsightsByControlDomainResponse
-> Maybe [ControlInsightsMetadataByAssessmentItem]
..} =
      forall a. NFData a => a -> ()
Prelude.rnf Maybe [ControlInsightsMetadataByAssessmentItem]
controlInsightsByAssessment
        seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
nextToken
        seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus