{-# 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.IAM.GetOrganizationsAccessReport
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Retrieves the service last accessed data report for Organizations that
-- was previously generated using the
-- @ @@GenerateOrganizationsAccessReport@@ @ operation. This operation
-- retrieves the status of your report job and the report contents.
--
-- Depending on the parameters that you passed when you generated the
-- report, the data returned could include different information. For
-- details, see GenerateOrganizationsAccessReport.
--
-- To call this operation, you must be signed in to the management account
-- in your organization. SCPs must be enabled for your organization root.
-- You must have permissions to perform this operation. For more
-- information, see
-- <https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_access-advisor.html Refining permissions using service last accessed data>
-- in the /IAM User Guide/.
--
-- For each service that principals in an account (root users, IAM users,
-- or IAM roles) could access using SCPs, the operation returns details
-- about the most recent access attempt. If there was no attempt, the
-- service is listed without details about the most recent attempt to
-- access the service. If the operation fails, it returns the reason that
-- it failed.
--
-- By default, the list is sorted by service namespace.
module Amazonka.IAM.GetOrganizationsAccessReport
  ( -- * Creating a Request
    GetOrganizationsAccessReport (..),
    newGetOrganizationsAccessReport,

    -- * Request Lenses
    getOrganizationsAccessReport_marker,
    getOrganizationsAccessReport_maxItems,
    getOrganizationsAccessReport_sortKey,
    getOrganizationsAccessReport_jobId,

    -- * Destructuring the Response
    GetOrganizationsAccessReportResponse (..),
    newGetOrganizationsAccessReportResponse,

    -- * Response Lenses
    getOrganizationsAccessReportResponse_accessDetails,
    getOrganizationsAccessReportResponse_errorDetails,
    getOrganizationsAccessReportResponse_isTruncated,
    getOrganizationsAccessReportResponse_jobCompletionDate,
    getOrganizationsAccessReportResponse_marker,
    getOrganizationsAccessReportResponse_numberOfServicesAccessible,
    getOrganizationsAccessReportResponse_numberOfServicesNotAccessed,
    getOrganizationsAccessReportResponse_httpStatus,
    getOrganizationsAccessReportResponse_jobStatus,
    getOrganizationsAccessReportResponse_jobCreationDate,
  )
where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.IAM.Types
import qualified Amazonka.Prelude as Prelude
import qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response

-- | /See:/ 'newGetOrganizationsAccessReport' smart constructor.
data GetOrganizationsAccessReport = GetOrganizationsAccessReport'
  { -- | Use this parameter only when paginating results and only after you
    -- receive a response indicating that the results are truncated. Set it to
    -- the value of the @Marker@ element in the response that you received to
    -- indicate where the next call should start.
    GetOrganizationsAccessReport -> Maybe Text
marker :: Prelude.Maybe Prelude.Text,
    -- | Use this only when paginating results to indicate the maximum number of
    -- items you want in the response. If additional items exist beyond the
    -- maximum you specify, the @IsTruncated@ response element is @true@.
    --
    -- If you do not include this parameter, the number of items defaults to
    -- 100. Note that IAM might return fewer results, even when there are more
    -- results available. In that case, the @IsTruncated@ response element
    -- returns @true@, and @Marker@ contains a value to include in the
    -- subsequent call that tells the service where to continue from.
    GetOrganizationsAccessReport -> Maybe Natural
maxItems :: Prelude.Maybe Prelude.Natural,
    -- | The key that is used to sort the results. If you choose the namespace
    -- key, the results are returned in alphabetical order. If you choose the
    -- time key, the results are sorted numerically by the date and time.
    GetOrganizationsAccessReport -> Maybe SortKeyType
sortKey :: Prelude.Maybe SortKeyType,
    -- | The identifier of the request generated by the
    -- GenerateOrganizationsAccessReport operation.
    GetOrganizationsAccessReport -> Text
jobId :: Prelude.Text
  }
  deriving (GetOrganizationsAccessReport
-> GetOrganizationsAccessReport -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GetOrganizationsAccessReport
-> GetOrganizationsAccessReport -> Bool
$c/= :: GetOrganizationsAccessReport
-> GetOrganizationsAccessReport -> Bool
== :: GetOrganizationsAccessReport
-> GetOrganizationsAccessReport -> Bool
$c== :: GetOrganizationsAccessReport
-> GetOrganizationsAccessReport -> Bool
Prelude.Eq, ReadPrec [GetOrganizationsAccessReport]
ReadPrec GetOrganizationsAccessReport
Int -> ReadS GetOrganizationsAccessReport
ReadS [GetOrganizationsAccessReport]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [GetOrganizationsAccessReport]
$creadListPrec :: ReadPrec [GetOrganizationsAccessReport]
readPrec :: ReadPrec GetOrganizationsAccessReport
$creadPrec :: ReadPrec GetOrganizationsAccessReport
readList :: ReadS [GetOrganizationsAccessReport]
$creadList :: ReadS [GetOrganizationsAccessReport]
readsPrec :: Int -> ReadS GetOrganizationsAccessReport
$creadsPrec :: Int -> ReadS GetOrganizationsAccessReport
Prelude.Read, Int -> GetOrganizationsAccessReport -> ShowS
[GetOrganizationsAccessReport] -> ShowS
GetOrganizationsAccessReport -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GetOrganizationsAccessReport] -> ShowS
$cshowList :: [GetOrganizationsAccessReport] -> ShowS
show :: GetOrganizationsAccessReport -> String
$cshow :: GetOrganizationsAccessReport -> String
showsPrec :: Int -> GetOrganizationsAccessReport -> ShowS
$cshowsPrec :: Int -> GetOrganizationsAccessReport -> ShowS
Prelude.Show, forall x.
Rep GetOrganizationsAccessReport x -> GetOrganizationsAccessReport
forall x.
GetOrganizationsAccessReport -> Rep GetOrganizationsAccessReport x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep GetOrganizationsAccessReport x -> GetOrganizationsAccessReport
$cfrom :: forall x.
GetOrganizationsAccessReport -> Rep GetOrganizationsAccessReport x
Prelude.Generic)

-- |
-- Create a value of 'GetOrganizationsAccessReport' 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:
--
-- 'marker', 'getOrganizationsAccessReport_marker' - Use this parameter only when paginating results and only after you
-- receive a response indicating that the results are truncated. Set it to
-- the value of the @Marker@ element in the response that you received to
-- indicate where the next call should start.
--
-- 'maxItems', 'getOrganizationsAccessReport_maxItems' - Use this only when paginating results to indicate the maximum number of
-- items you want in the response. If additional items exist beyond the
-- maximum you specify, the @IsTruncated@ response element is @true@.
--
-- If you do not include this parameter, the number of items defaults to
-- 100. Note that IAM might return fewer results, even when there are more
-- results available. In that case, the @IsTruncated@ response element
-- returns @true@, and @Marker@ contains a value to include in the
-- subsequent call that tells the service where to continue from.
--
-- 'sortKey', 'getOrganizationsAccessReport_sortKey' - The key that is used to sort the results. If you choose the namespace
-- key, the results are returned in alphabetical order. If you choose the
-- time key, the results are sorted numerically by the date and time.
--
-- 'jobId', 'getOrganizationsAccessReport_jobId' - The identifier of the request generated by the
-- GenerateOrganizationsAccessReport operation.
newGetOrganizationsAccessReport ::
  -- | 'jobId'
  Prelude.Text ->
  GetOrganizationsAccessReport
newGetOrganizationsAccessReport :: Text -> GetOrganizationsAccessReport
newGetOrganizationsAccessReport Text
pJobId_ =
  GetOrganizationsAccessReport'
    { $sel:marker:GetOrganizationsAccessReport' :: Maybe Text
marker =
        forall a. Maybe a
Prelude.Nothing,
      $sel:maxItems:GetOrganizationsAccessReport' :: Maybe Natural
maxItems = forall a. Maybe a
Prelude.Nothing,
      $sel:sortKey:GetOrganizationsAccessReport' :: Maybe SortKeyType
sortKey = forall a. Maybe a
Prelude.Nothing,
      $sel:jobId:GetOrganizationsAccessReport' :: Text
jobId = Text
pJobId_
    }

-- | Use this parameter only when paginating results and only after you
-- receive a response indicating that the results are truncated. Set it to
-- the value of the @Marker@ element in the response that you received to
-- indicate where the next call should start.
getOrganizationsAccessReport_marker :: Lens.Lens' GetOrganizationsAccessReport (Prelude.Maybe Prelude.Text)
getOrganizationsAccessReport_marker :: Lens' GetOrganizationsAccessReport (Maybe Text)
getOrganizationsAccessReport_marker = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetOrganizationsAccessReport' {Maybe Text
marker :: Maybe Text
$sel:marker:GetOrganizationsAccessReport' :: GetOrganizationsAccessReport -> Maybe Text
marker} -> Maybe Text
marker) (\s :: GetOrganizationsAccessReport
s@GetOrganizationsAccessReport' {} Maybe Text
a -> GetOrganizationsAccessReport
s {$sel:marker:GetOrganizationsAccessReport' :: Maybe Text
marker = Maybe Text
a} :: GetOrganizationsAccessReport)

-- | Use this only when paginating results to indicate the maximum number of
-- items you want in the response. If additional items exist beyond the
-- maximum you specify, the @IsTruncated@ response element is @true@.
--
-- If you do not include this parameter, the number of items defaults to
-- 100. Note that IAM might return fewer results, even when there are more
-- results available. In that case, the @IsTruncated@ response element
-- returns @true@, and @Marker@ contains a value to include in the
-- subsequent call that tells the service where to continue from.
getOrganizationsAccessReport_maxItems :: Lens.Lens' GetOrganizationsAccessReport (Prelude.Maybe Prelude.Natural)
getOrganizationsAccessReport_maxItems :: Lens' GetOrganizationsAccessReport (Maybe Natural)
getOrganizationsAccessReport_maxItems = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetOrganizationsAccessReport' {Maybe Natural
maxItems :: Maybe Natural
$sel:maxItems:GetOrganizationsAccessReport' :: GetOrganizationsAccessReport -> Maybe Natural
maxItems} -> Maybe Natural
maxItems) (\s :: GetOrganizationsAccessReport
s@GetOrganizationsAccessReport' {} Maybe Natural
a -> GetOrganizationsAccessReport
s {$sel:maxItems:GetOrganizationsAccessReport' :: Maybe Natural
maxItems = Maybe Natural
a} :: GetOrganizationsAccessReport)

-- | The key that is used to sort the results. If you choose the namespace
-- key, the results are returned in alphabetical order. If you choose the
-- time key, the results are sorted numerically by the date and time.
getOrganizationsAccessReport_sortKey :: Lens.Lens' GetOrganizationsAccessReport (Prelude.Maybe SortKeyType)
getOrganizationsAccessReport_sortKey :: Lens' GetOrganizationsAccessReport (Maybe SortKeyType)
getOrganizationsAccessReport_sortKey = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetOrganizationsAccessReport' {Maybe SortKeyType
sortKey :: Maybe SortKeyType
$sel:sortKey:GetOrganizationsAccessReport' :: GetOrganizationsAccessReport -> Maybe SortKeyType
sortKey} -> Maybe SortKeyType
sortKey) (\s :: GetOrganizationsAccessReport
s@GetOrganizationsAccessReport' {} Maybe SortKeyType
a -> GetOrganizationsAccessReport
s {$sel:sortKey:GetOrganizationsAccessReport' :: Maybe SortKeyType
sortKey = Maybe SortKeyType
a} :: GetOrganizationsAccessReport)

-- | The identifier of the request generated by the
-- GenerateOrganizationsAccessReport operation.
getOrganizationsAccessReport_jobId :: Lens.Lens' GetOrganizationsAccessReport Prelude.Text
getOrganizationsAccessReport_jobId :: Lens' GetOrganizationsAccessReport Text
getOrganizationsAccessReport_jobId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetOrganizationsAccessReport' {Text
jobId :: Text
$sel:jobId:GetOrganizationsAccessReport' :: GetOrganizationsAccessReport -> Text
jobId} -> Text
jobId) (\s :: GetOrganizationsAccessReport
s@GetOrganizationsAccessReport' {} Text
a -> GetOrganizationsAccessReport
s {$sel:jobId:GetOrganizationsAccessReport' :: Text
jobId = Text
a} :: GetOrganizationsAccessReport)

instance Core.AWSRequest GetOrganizationsAccessReport where
  type
    AWSResponse GetOrganizationsAccessReport =
      GetOrganizationsAccessReportResponse
  request :: (Service -> Service)
-> GetOrganizationsAccessReport
-> Request GetOrganizationsAccessReport
request Service -> Service
overrides =
    forall a. ToRequest a => Service -> a -> Request a
Request.postQuery (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy GetOrganizationsAccessReport
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse GetOrganizationsAccessReport)))
response =
    forall (m :: * -> *) a.
MonadResource m =>
Text
-> (Int
    -> ResponseHeaders -> [Node] -> Either String (AWSResponse a))
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveXMLWrapper
      Text
"GetOrganizationsAccessReportResult"
      ( \Int
s ResponseHeaders
h [Node]
x ->
          Maybe [AccessDetail]
-> Maybe ErrorDetails
-> Maybe Bool
-> Maybe ISO8601
-> Maybe Text
-> Maybe Int
-> Maybe Int
-> Int
-> JobStatusType
-> ISO8601
-> GetOrganizationsAccessReportResponse
GetOrganizationsAccessReportResponse'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> ( [Node]
x
                            forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"AccessDetails"
                            forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty
                            forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
Prelude.>>= forall (f :: * -> *) a b.
Applicative f =>
([a] -> f b) -> [a] -> f (Maybe b)
Core.may (forall a. FromXML a => Text -> [Node] -> Either String [a]
Data.parseXMLList Text
"member")
                        )
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"ErrorDetails")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"IsTruncated")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"JobCompletionDate")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"Marker")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"NumberOfServicesAccessible")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"NumberOfServicesNotAccessed")
            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))
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String a
Data..@ Text
"JobStatus")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String a
Data..@ Text
"JobCreationDate")
      )

instance
  Prelude.Hashable
    GetOrganizationsAccessReport
  where
  hashWithSalt :: Int -> GetOrganizationsAccessReport -> Int
hashWithSalt Int
_salt GetOrganizationsAccessReport' {Maybe Natural
Maybe Text
Maybe SortKeyType
Text
jobId :: Text
sortKey :: Maybe SortKeyType
maxItems :: Maybe Natural
marker :: Maybe Text
$sel:jobId:GetOrganizationsAccessReport' :: GetOrganizationsAccessReport -> Text
$sel:sortKey:GetOrganizationsAccessReport' :: GetOrganizationsAccessReport -> Maybe SortKeyType
$sel:maxItems:GetOrganizationsAccessReport' :: GetOrganizationsAccessReport -> Maybe Natural
$sel:marker:GetOrganizationsAccessReport' :: GetOrganizationsAccessReport -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
marker
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
maxItems
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe SortKeyType
sortKey
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
jobId

instance Prelude.NFData GetOrganizationsAccessReport where
  rnf :: GetOrganizationsAccessReport -> ()
rnf GetOrganizationsAccessReport' {Maybe Natural
Maybe Text
Maybe SortKeyType
Text
jobId :: Text
sortKey :: Maybe SortKeyType
maxItems :: Maybe Natural
marker :: Maybe Text
$sel:jobId:GetOrganizationsAccessReport' :: GetOrganizationsAccessReport -> Text
$sel:sortKey:GetOrganizationsAccessReport' :: GetOrganizationsAccessReport -> Maybe SortKeyType
$sel:maxItems:GetOrganizationsAccessReport' :: GetOrganizationsAccessReport -> Maybe Natural
$sel:marker:GetOrganizationsAccessReport' :: GetOrganizationsAccessReport -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
marker
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Natural
maxItems
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe SortKeyType
sortKey
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
jobId

instance Data.ToHeaders GetOrganizationsAccessReport where
  toHeaders :: GetOrganizationsAccessReport -> ResponseHeaders
toHeaders = forall a b. a -> b -> a
Prelude.const forall a. Monoid a => a
Prelude.mempty

instance Data.ToPath GetOrganizationsAccessReport where
  toPath :: GetOrganizationsAccessReport -> ByteString
toPath = forall a b. a -> b -> a
Prelude.const ByteString
"/"

instance Data.ToQuery GetOrganizationsAccessReport where
  toQuery :: GetOrganizationsAccessReport -> QueryString
toQuery GetOrganizationsAccessReport' {Maybe Natural
Maybe Text
Maybe SortKeyType
Text
jobId :: Text
sortKey :: Maybe SortKeyType
maxItems :: Maybe Natural
marker :: Maybe Text
$sel:jobId:GetOrganizationsAccessReport' :: GetOrganizationsAccessReport -> Text
$sel:sortKey:GetOrganizationsAccessReport' :: GetOrganizationsAccessReport -> Maybe SortKeyType
$sel:maxItems:GetOrganizationsAccessReport' :: GetOrganizationsAccessReport -> Maybe Natural
$sel:marker:GetOrganizationsAccessReport' :: GetOrganizationsAccessReport -> Maybe Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"Action"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: ( ByteString
"GetOrganizationsAccessReport" ::
                      Prelude.ByteString
                  ),
        ByteString
"Version"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: (ByteString
"2010-05-08" :: Prelude.ByteString),
        ByteString
"Marker" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
marker,
        ByteString
"MaxItems" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Natural
maxItems,
        ByteString
"SortKey" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe SortKeyType
sortKey,
        ByteString
"JobId" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Text
jobId
      ]

-- | /See:/ 'newGetOrganizationsAccessReportResponse' smart constructor.
data GetOrganizationsAccessReportResponse = GetOrganizationsAccessReportResponse'
  { -- | An object that contains details about the most recent attempt to access
    -- the service.
    GetOrganizationsAccessReportResponse -> Maybe [AccessDetail]
accessDetails :: Prelude.Maybe [AccessDetail],
    GetOrganizationsAccessReportResponse -> Maybe ErrorDetails
errorDetails :: Prelude.Maybe ErrorDetails,
    -- | A flag that indicates whether there are more items to return. If your
    -- results were truncated, you can make a subsequent pagination request
    -- using the @Marker@ request parameter to retrieve more items. Note that
    -- IAM might return fewer than the @MaxItems@ number of results even when
    -- there are more results available. We recommend that you check
    -- @IsTruncated@ after every call to ensure that you receive all your
    -- results.
    GetOrganizationsAccessReportResponse -> Maybe Bool
isTruncated :: Prelude.Maybe Prelude.Bool,
    -- | The date and time,
    -- in <http://www.iso.org/iso/iso8601 ISO 8601 date-time format>, when the
    -- generated report job was completed or failed.
    --
    -- This field is null if the job is still in progress, as indicated by a
    -- job status value of @IN_PROGRESS@.
    GetOrganizationsAccessReportResponse -> Maybe ISO8601
jobCompletionDate :: Prelude.Maybe Data.ISO8601,
    -- | When @IsTruncated@ is @true@, this element is present and contains the
    -- value to use for the @Marker@ parameter in a subsequent pagination
    -- request.
    GetOrganizationsAccessReportResponse -> Maybe Text
marker :: Prelude.Maybe Prelude.Text,
    -- | The number of services that the applicable SCPs allow account principals
    -- to access.
    GetOrganizationsAccessReportResponse -> Maybe Int
numberOfServicesAccessible :: Prelude.Maybe Prelude.Int,
    -- | The number of services that account principals are allowed but did not
    -- attempt to access.
    GetOrganizationsAccessReportResponse -> Maybe Int
numberOfServicesNotAccessed :: Prelude.Maybe Prelude.Int,
    -- | The response's http status code.
    GetOrganizationsAccessReportResponse -> Int
httpStatus :: Prelude.Int,
    -- | The status of the job.
    GetOrganizationsAccessReportResponse -> JobStatusType
jobStatus :: JobStatusType,
    -- | The date and time,
    -- in <http://www.iso.org/iso/iso8601 ISO 8601 date-time format>, when the
    -- report job was created.
    GetOrganizationsAccessReportResponse -> ISO8601
jobCreationDate :: Data.ISO8601
  }
  deriving (GetOrganizationsAccessReportResponse
-> GetOrganizationsAccessReportResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GetOrganizationsAccessReportResponse
-> GetOrganizationsAccessReportResponse -> Bool
$c/= :: GetOrganizationsAccessReportResponse
-> GetOrganizationsAccessReportResponse -> Bool
== :: GetOrganizationsAccessReportResponse
-> GetOrganizationsAccessReportResponse -> Bool
$c== :: GetOrganizationsAccessReportResponse
-> GetOrganizationsAccessReportResponse -> Bool
Prelude.Eq, ReadPrec [GetOrganizationsAccessReportResponse]
ReadPrec GetOrganizationsAccessReportResponse
Int -> ReadS GetOrganizationsAccessReportResponse
ReadS [GetOrganizationsAccessReportResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [GetOrganizationsAccessReportResponse]
$creadListPrec :: ReadPrec [GetOrganizationsAccessReportResponse]
readPrec :: ReadPrec GetOrganizationsAccessReportResponse
$creadPrec :: ReadPrec GetOrganizationsAccessReportResponse
readList :: ReadS [GetOrganizationsAccessReportResponse]
$creadList :: ReadS [GetOrganizationsAccessReportResponse]
readsPrec :: Int -> ReadS GetOrganizationsAccessReportResponse
$creadsPrec :: Int -> ReadS GetOrganizationsAccessReportResponse
Prelude.Read, Int -> GetOrganizationsAccessReportResponse -> ShowS
[GetOrganizationsAccessReportResponse] -> ShowS
GetOrganizationsAccessReportResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GetOrganizationsAccessReportResponse] -> ShowS
$cshowList :: [GetOrganizationsAccessReportResponse] -> ShowS
show :: GetOrganizationsAccessReportResponse -> String
$cshow :: GetOrganizationsAccessReportResponse -> String
showsPrec :: Int -> GetOrganizationsAccessReportResponse -> ShowS
$cshowsPrec :: Int -> GetOrganizationsAccessReportResponse -> ShowS
Prelude.Show, forall x.
Rep GetOrganizationsAccessReportResponse x
-> GetOrganizationsAccessReportResponse
forall x.
GetOrganizationsAccessReportResponse
-> Rep GetOrganizationsAccessReportResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep GetOrganizationsAccessReportResponse x
-> GetOrganizationsAccessReportResponse
$cfrom :: forall x.
GetOrganizationsAccessReportResponse
-> Rep GetOrganizationsAccessReportResponse x
Prelude.Generic)

-- |
-- Create a value of 'GetOrganizationsAccessReportResponse' 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:
--
-- 'accessDetails', 'getOrganizationsAccessReportResponse_accessDetails' - An object that contains details about the most recent attempt to access
-- the service.
--
-- 'errorDetails', 'getOrganizationsAccessReportResponse_errorDetails' - Undocumented member.
--
-- 'isTruncated', 'getOrganizationsAccessReportResponse_isTruncated' - A flag that indicates whether there are more items to return. If your
-- results were truncated, you can make a subsequent pagination request
-- using the @Marker@ request parameter to retrieve more items. Note that
-- IAM might return fewer than the @MaxItems@ number of results even when
-- there are more results available. We recommend that you check
-- @IsTruncated@ after every call to ensure that you receive all your
-- results.
--
-- 'jobCompletionDate', 'getOrganizationsAccessReportResponse_jobCompletionDate' - The date and time,
-- in <http://www.iso.org/iso/iso8601 ISO 8601 date-time format>, when the
-- generated report job was completed or failed.
--
-- This field is null if the job is still in progress, as indicated by a
-- job status value of @IN_PROGRESS@.
--
-- 'marker', 'getOrganizationsAccessReportResponse_marker' - When @IsTruncated@ is @true@, this element is present and contains the
-- value to use for the @Marker@ parameter in a subsequent pagination
-- request.
--
-- 'numberOfServicesAccessible', 'getOrganizationsAccessReportResponse_numberOfServicesAccessible' - The number of services that the applicable SCPs allow account principals
-- to access.
--
-- 'numberOfServicesNotAccessed', 'getOrganizationsAccessReportResponse_numberOfServicesNotAccessed' - The number of services that account principals are allowed but did not
-- attempt to access.
--
-- 'httpStatus', 'getOrganizationsAccessReportResponse_httpStatus' - The response's http status code.
--
-- 'jobStatus', 'getOrganizationsAccessReportResponse_jobStatus' - The status of the job.
--
-- 'jobCreationDate', 'getOrganizationsAccessReportResponse_jobCreationDate' - The date and time,
-- in <http://www.iso.org/iso/iso8601 ISO 8601 date-time format>, when the
-- report job was created.
newGetOrganizationsAccessReportResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  -- | 'jobStatus'
  JobStatusType ->
  -- | 'jobCreationDate'
  Prelude.UTCTime ->
  GetOrganizationsAccessReportResponse
newGetOrganizationsAccessReportResponse :: Int
-> JobStatusType -> UTCTime -> GetOrganizationsAccessReportResponse
newGetOrganizationsAccessReportResponse
  Int
pHttpStatus_
  JobStatusType
pJobStatus_
  UTCTime
pJobCreationDate_ =
    GetOrganizationsAccessReportResponse'
      { $sel:accessDetails:GetOrganizationsAccessReportResponse' :: Maybe [AccessDetail]
accessDetails =
          forall a. Maybe a
Prelude.Nothing,
        $sel:errorDetails:GetOrganizationsAccessReportResponse' :: Maybe ErrorDetails
errorDetails = forall a. Maybe a
Prelude.Nothing,
        $sel:isTruncated:GetOrganizationsAccessReportResponse' :: Maybe Bool
isTruncated = forall a. Maybe a
Prelude.Nothing,
        $sel:jobCompletionDate:GetOrganizationsAccessReportResponse' :: Maybe ISO8601
jobCompletionDate = forall a. Maybe a
Prelude.Nothing,
        $sel:marker:GetOrganizationsAccessReportResponse' :: Maybe Text
marker = forall a. Maybe a
Prelude.Nothing,
        $sel:numberOfServicesAccessible:GetOrganizationsAccessReportResponse' :: Maybe Int
numberOfServicesAccessible =
          forall a. Maybe a
Prelude.Nothing,
        $sel:numberOfServicesNotAccessed:GetOrganizationsAccessReportResponse' :: Maybe Int
numberOfServicesNotAccessed =
          forall a. Maybe a
Prelude.Nothing,
        $sel:httpStatus:GetOrganizationsAccessReportResponse' :: Int
httpStatus = Int
pHttpStatus_,
        $sel:jobStatus:GetOrganizationsAccessReportResponse' :: JobStatusType
jobStatus = JobStatusType
pJobStatus_,
        $sel:jobCreationDate:GetOrganizationsAccessReportResponse' :: ISO8601
jobCreationDate =
          forall (a :: Format). Iso' (Time a) UTCTime
Data._Time forall t b. AReview t b -> b -> t
Lens.# UTCTime
pJobCreationDate_
      }

-- | An object that contains details about the most recent attempt to access
-- the service.
getOrganizationsAccessReportResponse_accessDetails :: Lens.Lens' GetOrganizationsAccessReportResponse (Prelude.Maybe [AccessDetail])
getOrganizationsAccessReportResponse_accessDetails :: Lens' GetOrganizationsAccessReportResponse (Maybe [AccessDetail])
getOrganizationsAccessReportResponse_accessDetails = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetOrganizationsAccessReportResponse' {Maybe [AccessDetail]
accessDetails :: Maybe [AccessDetail]
$sel:accessDetails:GetOrganizationsAccessReportResponse' :: GetOrganizationsAccessReportResponse -> Maybe [AccessDetail]
accessDetails} -> Maybe [AccessDetail]
accessDetails) (\s :: GetOrganizationsAccessReportResponse
s@GetOrganizationsAccessReportResponse' {} Maybe [AccessDetail]
a -> GetOrganizationsAccessReportResponse
s {$sel:accessDetails:GetOrganizationsAccessReportResponse' :: Maybe [AccessDetail]
accessDetails = Maybe [AccessDetail]
a} :: GetOrganizationsAccessReportResponse) 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

-- | Undocumented member.
getOrganizationsAccessReportResponse_errorDetails :: Lens.Lens' GetOrganizationsAccessReportResponse (Prelude.Maybe ErrorDetails)
getOrganizationsAccessReportResponse_errorDetails :: Lens' GetOrganizationsAccessReportResponse (Maybe ErrorDetails)
getOrganizationsAccessReportResponse_errorDetails = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetOrganizationsAccessReportResponse' {Maybe ErrorDetails
errorDetails :: Maybe ErrorDetails
$sel:errorDetails:GetOrganizationsAccessReportResponse' :: GetOrganizationsAccessReportResponse -> Maybe ErrorDetails
errorDetails} -> Maybe ErrorDetails
errorDetails) (\s :: GetOrganizationsAccessReportResponse
s@GetOrganizationsAccessReportResponse' {} Maybe ErrorDetails
a -> GetOrganizationsAccessReportResponse
s {$sel:errorDetails:GetOrganizationsAccessReportResponse' :: Maybe ErrorDetails
errorDetails = Maybe ErrorDetails
a} :: GetOrganizationsAccessReportResponse)

-- | A flag that indicates whether there are more items to return. If your
-- results were truncated, you can make a subsequent pagination request
-- using the @Marker@ request parameter to retrieve more items. Note that
-- IAM might return fewer than the @MaxItems@ number of results even when
-- there are more results available. We recommend that you check
-- @IsTruncated@ after every call to ensure that you receive all your
-- results.
getOrganizationsAccessReportResponse_isTruncated :: Lens.Lens' GetOrganizationsAccessReportResponse (Prelude.Maybe Prelude.Bool)
getOrganizationsAccessReportResponse_isTruncated :: Lens' GetOrganizationsAccessReportResponse (Maybe Bool)
getOrganizationsAccessReportResponse_isTruncated = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetOrganizationsAccessReportResponse' {Maybe Bool
isTruncated :: Maybe Bool
$sel:isTruncated:GetOrganizationsAccessReportResponse' :: GetOrganizationsAccessReportResponse -> Maybe Bool
isTruncated} -> Maybe Bool
isTruncated) (\s :: GetOrganizationsAccessReportResponse
s@GetOrganizationsAccessReportResponse' {} Maybe Bool
a -> GetOrganizationsAccessReportResponse
s {$sel:isTruncated:GetOrganizationsAccessReportResponse' :: Maybe Bool
isTruncated = Maybe Bool
a} :: GetOrganizationsAccessReportResponse)

-- | The date and time,
-- in <http://www.iso.org/iso/iso8601 ISO 8601 date-time format>, when the
-- generated report job was completed or failed.
--
-- This field is null if the job is still in progress, as indicated by a
-- job status value of @IN_PROGRESS@.
getOrganizationsAccessReportResponse_jobCompletionDate :: Lens.Lens' GetOrganizationsAccessReportResponse (Prelude.Maybe Prelude.UTCTime)
getOrganizationsAccessReportResponse_jobCompletionDate :: Lens' GetOrganizationsAccessReportResponse (Maybe UTCTime)
getOrganizationsAccessReportResponse_jobCompletionDate = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetOrganizationsAccessReportResponse' {Maybe ISO8601
jobCompletionDate :: Maybe ISO8601
$sel:jobCompletionDate:GetOrganizationsAccessReportResponse' :: GetOrganizationsAccessReportResponse -> Maybe ISO8601
jobCompletionDate} -> Maybe ISO8601
jobCompletionDate) (\s :: GetOrganizationsAccessReportResponse
s@GetOrganizationsAccessReportResponse' {} Maybe ISO8601
a -> GetOrganizationsAccessReportResponse
s {$sel:jobCompletionDate:GetOrganizationsAccessReportResponse' :: Maybe ISO8601
jobCompletionDate = Maybe ISO8601
a} :: GetOrganizationsAccessReportResponse) 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 (a :: Format). Iso' (Time a) UTCTime
Data._Time

-- | When @IsTruncated@ is @true@, this element is present and contains the
-- value to use for the @Marker@ parameter in a subsequent pagination
-- request.
getOrganizationsAccessReportResponse_marker :: Lens.Lens' GetOrganizationsAccessReportResponse (Prelude.Maybe Prelude.Text)
getOrganizationsAccessReportResponse_marker :: Lens' GetOrganizationsAccessReportResponse (Maybe Text)
getOrganizationsAccessReportResponse_marker = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetOrganizationsAccessReportResponse' {Maybe Text
marker :: Maybe Text
$sel:marker:GetOrganizationsAccessReportResponse' :: GetOrganizationsAccessReportResponse -> Maybe Text
marker} -> Maybe Text
marker) (\s :: GetOrganizationsAccessReportResponse
s@GetOrganizationsAccessReportResponse' {} Maybe Text
a -> GetOrganizationsAccessReportResponse
s {$sel:marker:GetOrganizationsAccessReportResponse' :: Maybe Text
marker = Maybe Text
a} :: GetOrganizationsAccessReportResponse)

-- | The number of services that the applicable SCPs allow account principals
-- to access.
getOrganizationsAccessReportResponse_numberOfServicesAccessible :: Lens.Lens' GetOrganizationsAccessReportResponse (Prelude.Maybe Prelude.Int)
getOrganizationsAccessReportResponse_numberOfServicesAccessible :: Lens' GetOrganizationsAccessReportResponse (Maybe Int)
getOrganizationsAccessReportResponse_numberOfServicesAccessible = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetOrganizationsAccessReportResponse' {Maybe Int
numberOfServicesAccessible :: Maybe Int
$sel:numberOfServicesAccessible:GetOrganizationsAccessReportResponse' :: GetOrganizationsAccessReportResponse -> Maybe Int
numberOfServicesAccessible} -> Maybe Int
numberOfServicesAccessible) (\s :: GetOrganizationsAccessReportResponse
s@GetOrganizationsAccessReportResponse' {} Maybe Int
a -> GetOrganizationsAccessReportResponse
s {$sel:numberOfServicesAccessible:GetOrganizationsAccessReportResponse' :: Maybe Int
numberOfServicesAccessible = Maybe Int
a} :: GetOrganizationsAccessReportResponse)

-- | The number of services that account principals are allowed but did not
-- attempt to access.
getOrganizationsAccessReportResponse_numberOfServicesNotAccessed :: Lens.Lens' GetOrganizationsAccessReportResponse (Prelude.Maybe Prelude.Int)
getOrganizationsAccessReportResponse_numberOfServicesNotAccessed :: Lens' GetOrganizationsAccessReportResponse (Maybe Int)
getOrganizationsAccessReportResponse_numberOfServicesNotAccessed = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetOrganizationsAccessReportResponse' {Maybe Int
numberOfServicesNotAccessed :: Maybe Int
$sel:numberOfServicesNotAccessed:GetOrganizationsAccessReportResponse' :: GetOrganizationsAccessReportResponse -> Maybe Int
numberOfServicesNotAccessed} -> Maybe Int
numberOfServicesNotAccessed) (\s :: GetOrganizationsAccessReportResponse
s@GetOrganizationsAccessReportResponse' {} Maybe Int
a -> GetOrganizationsAccessReportResponse
s {$sel:numberOfServicesNotAccessed:GetOrganizationsAccessReportResponse' :: Maybe Int
numberOfServicesNotAccessed = Maybe Int
a} :: GetOrganizationsAccessReportResponse)

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

-- | The status of the job.
getOrganizationsAccessReportResponse_jobStatus :: Lens.Lens' GetOrganizationsAccessReportResponse JobStatusType
getOrganizationsAccessReportResponse_jobStatus :: Lens' GetOrganizationsAccessReportResponse JobStatusType
getOrganizationsAccessReportResponse_jobStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetOrganizationsAccessReportResponse' {JobStatusType
jobStatus :: JobStatusType
$sel:jobStatus:GetOrganizationsAccessReportResponse' :: GetOrganizationsAccessReportResponse -> JobStatusType
jobStatus} -> JobStatusType
jobStatus) (\s :: GetOrganizationsAccessReportResponse
s@GetOrganizationsAccessReportResponse' {} JobStatusType
a -> GetOrganizationsAccessReportResponse
s {$sel:jobStatus:GetOrganizationsAccessReportResponse' :: JobStatusType
jobStatus = JobStatusType
a} :: GetOrganizationsAccessReportResponse)

-- | The date and time,
-- in <http://www.iso.org/iso/iso8601 ISO 8601 date-time format>, when the
-- report job was created.
getOrganizationsAccessReportResponse_jobCreationDate :: Lens.Lens' GetOrganizationsAccessReportResponse Prelude.UTCTime
getOrganizationsAccessReportResponse_jobCreationDate :: Lens' GetOrganizationsAccessReportResponse UTCTime
getOrganizationsAccessReportResponse_jobCreationDate = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetOrganizationsAccessReportResponse' {ISO8601
jobCreationDate :: ISO8601
$sel:jobCreationDate:GetOrganizationsAccessReportResponse' :: GetOrganizationsAccessReportResponse -> ISO8601
jobCreationDate} -> ISO8601
jobCreationDate) (\s :: GetOrganizationsAccessReportResponse
s@GetOrganizationsAccessReportResponse' {} ISO8601
a -> GetOrganizationsAccessReportResponse
s {$sel:jobCreationDate:GetOrganizationsAccessReportResponse' :: ISO8601
jobCreationDate = ISO8601
a} :: GetOrganizationsAccessReportResponse) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (a :: Format). Iso' (Time a) UTCTime
Data._Time

instance
  Prelude.NFData
    GetOrganizationsAccessReportResponse
  where
  rnf :: GetOrganizationsAccessReportResponse -> ()
rnf GetOrganizationsAccessReportResponse' {Int
Maybe Bool
Maybe Int
Maybe [AccessDetail]
Maybe Text
Maybe ISO8601
Maybe ErrorDetails
ISO8601
JobStatusType
jobCreationDate :: ISO8601
jobStatus :: JobStatusType
httpStatus :: Int
numberOfServicesNotAccessed :: Maybe Int
numberOfServicesAccessible :: Maybe Int
marker :: Maybe Text
jobCompletionDate :: Maybe ISO8601
isTruncated :: Maybe Bool
errorDetails :: Maybe ErrorDetails
accessDetails :: Maybe [AccessDetail]
$sel:jobCreationDate:GetOrganizationsAccessReportResponse' :: GetOrganizationsAccessReportResponse -> ISO8601
$sel:jobStatus:GetOrganizationsAccessReportResponse' :: GetOrganizationsAccessReportResponse -> JobStatusType
$sel:httpStatus:GetOrganizationsAccessReportResponse' :: GetOrganizationsAccessReportResponse -> Int
$sel:numberOfServicesNotAccessed:GetOrganizationsAccessReportResponse' :: GetOrganizationsAccessReportResponse -> Maybe Int
$sel:numberOfServicesAccessible:GetOrganizationsAccessReportResponse' :: GetOrganizationsAccessReportResponse -> Maybe Int
$sel:marker:GetOrganizationsAccessReportResponse' :: GetOrganizationsAccessReportResponse -> Maybe Text
$sel:jobCompletionDate:GetOrganizationsAccessReportResponse' :: GetOrganizationsAccessReportResponse -> Maybe ISO8601
$sel:isTruncated:GetOrganizationsAccessReportResponse' :: GetOrganizationsAccessReportResponse -> Maybe Bool
$sel:errorDetails:GetOrganizationsAccessReportResponse' :: GetOrganizationsAccessReportResponse -> Maybe ErrorDetails
$sel:accessDetails:GetOrganizationsAccessReportResponse' :: GetOrganizationsAccessReportResponse -> Maybe [AccessDetail]
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe [AccessDetail]
accessDetails
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ErrorDetails
errorDetails
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
isTruncated
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ISO8601
jobCompletionDate
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
marker
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Int
numberOfServicesAccessible
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Int
numberOfServicesNotAccessed
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf JobStatusType
jobStatus
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf ISO8601
jobCreationDate