packages feed

amazonka-auditmanager-2.0: gen/Amazonka/AuditManager/Types/AssessmentEvidenceFolder.hs

{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# 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.Types.AssessmentEvidenceFolder
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.AuditManager.Types.AssessmentEvidenceFolder where

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

-- | The folder where Audit Manager stores evidence for an assessment.
--
-- /See:/ 'newAssessmentEvidenceFolder' smart constructor.
data AssessmentEvidenceFolder = AssessmentEvidenceFolder'
  { -- | The identifier for the assessment.
    assessmentId :: Prelude.Maybe Prelude.Text,
    -- | The total count of evidence that\'s included in the assessment report.
    assessmentReportSelectionCount :: Prelude.Maybe Prelude.Int,
    -- | The name of the user who created the evidence folder.
    author :: Prelude.Maybe Prelude.Text,
    -- | The unique identifier for the control.
    controlId :: Prelude.Maybe Prelude.Text,
    -- | The name of the control.
    controlName :: Prelude.Maybe Prelude.Text,
    -- | The identifier for the control set.
    controlSetId :: Prelude.Maybe Prelude.Text,
    -- | The Amazon Web Service that the evidence was collected from.
    dataSource :: Prelude.Maybe Prelude.Text,
    -- | The date when the first evidence was added to the evidence folder.
    date :: Prelude.Maybe Data.POSIX,
    -- | The total number of Amazon Web Services resources that were assessed to
    -- generate the evidence.
    evidenceAwsServiceSourceCount :: Prelude.Maybe Prelude.Int,
    -- | The number of evidence that falls under the compliance check category.
    -- This evidence is collected from Config or Security Hub.
    evidenceByTypeComplianceCheckCount :: Prelude.Maybe Prelude.Int,
    -- | The total number of issues that were reported directly from Security
    -- Hub, Config, or both.
    evidenceByTypeComplianceCheckIssuesCount :: Prelude.Maybe Prelude.Int,
    -- | The number of evidence that falls under the configuration data category.
    -- This evidence is collected from configuration snapshots of other Amazon
    -- Web Services such as Amazon EC2, Amazon S3, or IAM.
    evidenceByTypeConfigurationDataCount :: Prelude.Maybe Prelude.Int,
    -- | The number of evidence that falls under the manual category. This
    -- evidence is imported manually.
    evidenceByTypeManualCount :: Prelude.Maybe Prelude.Int,
    -- | The number of evidence that falls under the user activity category. This
    -- evidence is collected from CloudTrail logs.
    evidenceByTypeUserActivityCount :: Prelude.Maybe Prelude.Int,
    -- | The amount of evidence that\'s included in the evidence folder.
    evidenceResourcesIncludedCount :: Prelude.Maybe Prelude.Int,
    -- | The identifier for the folder that the evidence is stored in.
    id :: Prelude.Maybe Prelude.Text,
    -- | The name of the evidence folder.
    name :: Prelude.Maybe Prelude.Text,
    -- | The total amount of evidence in the evidence folder.
    totalEvidence :: Prelude.Maybe Prelude.Int
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'AssessmentEvidenceFolder' 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', 'assessmentEvidenceFolder_assessmentId' - The identifier for the assessment.
--
-- 'assessmentReportSelectionCount', 'assessmentEvidenceFolder_assessmentReportSelectionCount' - The total count of evidence that\'s included in the assessment report.
--
-- 'author', 'assessmentEvidenceFolder_author' - The name of the user who created the evidence folder.
--
-- 'controlId', 'assessmentEvidenceFolder_controlId' - The unique identifier for the control.
--
-- 'controlName', 'assessmentEvidenceFolder_controlName' - The name of the control.
--
-- 'controlSetId', 'assessmentEvidenceFolder_controlSetId' - The identifier for the control set.
--
-- 'dataSource', 'assessmentEvidenceFolder_dataSource' - The Amazon Web Service that the evidence was collected from.
--
-- 'date', 'assessmentEvidenceFolder_date' - The date when the first evidence was added to the evidence folder.
--
-- 'evidenceAwsServiceSourceCount', 'assessmentEvidenceFolder_evidenceAwsServiceSourceCount' - The total number of Amazon Web Services resources that were assessed to
-- generate the evidence.
--
-- 'evidenceByTypeComplianceCheckCount', 'assessmentEvidenceFolder_evidenceByTypeComplianceCheckCount' - The number of evidence that falls under the compliance check category.
-- This evidence is collected from Config or Security Hub.
--
-- 'evidenceByTypeComplianceCheckIssuesCount', 'assessmentEvidenceFolder_evidenceByTypeComplianceCheckIssuesCount' - The total number of issues that were reported directly from Security
-- Hub, Config, or both.
--
-- 'evidenceByTypeConfigurationDataCount', 'assessmentEvidenceFolder_evidenceByTypeConfigurationDataCount' - The number of evidence that falls under the configuration data category.
-- This evidence is collected from configuration snapshots of other Amazon
-- Web Services such as Amazon EC2, Amazon S3, or IAM.
--
-- 'evidenceByTypeManualCount', 'assessmentEvidenceFolder_evidenceByTypeManualCount' - The number of evidence that falls under the manual category. This
-- evidence is imported manually.
--
-- 'evidenceByTypeUserActivityCount', 'assessmentEvidenceFolder_evidenceByTypeUserActivityCount' - The number of evidence that falls under the user activity category. This
-- evidence is collected from CloudTrail logs.
--
-- 'evidenceResourcesIncludedCount', 'assessmentEvidenceFolder_evidenceResourcesIncludedCount' - The amount of evidence that\'s included in the evidence folder.
--
-- 'id', 'assessmentEvidenceFolder_id' - The identifier for the folder that the evidence is stored in.
--
-- 'name', 'assessmentEvidenceFolder_name' - The name of the evidence folder.
--
-- 'totalEvidence', 'assessmentEvidenceFolder_totalEvidence' - The total amount of evidence in the evidence folder.
newAssessmentEvidenceFolder ::
  AssessmentEvidenceFolder
newAssessmentEvidenceFolder =
  AssessmentEvidenceFolder'
    { assessmentId =
        Prelude.Nothing,
      assessmentReportSelectionCount = Prelude.Nothing,
      author = Prelude.Nothing,
      controlId = Prelude.Nothing,
      controlName = Prelude.Nothing,
      controlSetId = Prelude.Nothing,
      dataSource = Prelude.Nothing,
      date = Prelude.Nothing,
      evidenceAwsServiceSourceCount = Prelude.Nothing,
      evidenceByTypeComplianceCheckCount =
        Prelude.Nothing,
      evidenceByTypeComplianceCheckIssuesCount =
        Prelude.Nothing,
      evidenceByTypeConfigurationDataCount =
        Prelude.Nothing,
      evidenceByTypeManualCount = Prelude.Nothing,
      evidenceByTypeUserActivityCount = Prelude.Nothing,
      evidenceResourcesIncludedCount = Prelude.Nothing,
      id = Prelude.Nothing,
      name = Prelude.Nothing,
      totalEvidence = Prelude.Nothing
    }

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

-- | The total count of evidence that\'s included in the assessment report.
assessmentEvidenceFolder_assessmentReportSelectionCount :: Lens.Lens' AssessmentEvidenceFolder (Prelude.Maybe Prelude.Int)
assessmentEvidenceFolder_assessmentReportSelectionCount = Lens.lens (\AssessmentEvidenceFolder' {assessmentReportSelectionCount} -> assessmentReportSelectionCount) (\s@AssessmentEvidenceFolder' {} a -> s {assessmentReportSelectionCount = a} :: AssessmentEvidenceFolder)

-- | The name of the user who created the evidence folder.
assessmentEvidenceFolder_author :: Lens.Lens' AssessmentEvidenceFolder (Prelude.Maybe Prelude.Text)
assessmentEvidenceFolder_author = Lens.lens (\AssessmentEvidenceFolder' {author} -> author) (\s@AssessmentEvidenceFolder' {} a -> s {author = a} :: AssessmentEvidenceFolder)

-- | The unique identifier for the control.
assessmentEvidenceFolder_controlId :: Lens.Lens' AssessmentEvidenceFolder (Prelude.Maybe Prelude.Text)
assessmentEvidenceFolder_controlId = Lens.lens (\AssessmentEvidenceFolder' {controlId} -> controlId) (\s@AssessmentEvidenceFolder' {} a -> s {controlId = a} :: AssessmentEvidenceFolder)

-- | The name of the control.
assessmentEvidenceFolder_controlName :: Lens.Lens' AssessmentEvidenceFolder (Prelude.Maybe Prelude.Text)
assessmentEvidenceFolder_controlName = Lens.lens (\AssessmentEvidenceFolder' {controlName} -> controlName) (\s@AssessmentEvidenceFolder' {} a -> s {controlName = a} :: AssessmentEvidenceFolder)

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

-- | The Amazon Web Service that the evidence was collected from.
assessmentEvidenceFolder_dataSource :: Lens.Lens' AssessmentEvidenceFolder (Prelude.Maybe Prelude.Text)
assessmentEvidenceFolder_dataSource = Lens.lens (\AssessmentEvidenceFolder' {dataSource} -> dataSource) (\s@AssessmentEvidenceFolder' {} a -> s {dataSource = a} :: AssessmentEvidenceFolder)

-- | The date when the first evidence was added to the evidence folder.
assessmentEvidenceFolder_date :: Lens.Lens' AssessmentEvidenceFolder (Prelude.Maybe Prelude.UTCTime)
assessmentEvidenceFolder_date = Lens.lens (\AssessmentEvidenceFolder' {date} -> date) (\s@AssessmentEvidenceFolder' {} a -> s {date = a} :: AssessmentEvidenceFolder) Prelude.. Lens.mapping Data._Time

-- | The total number of Amazon Web Services resources that were assessed to
-- generate the evidence.
assessmentEvidenceFolder_evidenceAwsServiceSourceCount :: Lens.Lens' AssessmentEvidenceFolder (Prelude.Maybe Prelude.Int)
assessmentEvidenceFolder_evidenceAwsServiceSourceCount = Lens.lens (\AssessmentEvidenceFolder' {evidenceAwsServiceSourceCount} -> evidenceAwsServiceSourceCount) (\s@AssessmentEvidenceFolder' {} a -> s {evidenceAwsServiceSourceCount = a} :: AssessmentEvidenceFolder)

-- | The number of evidence that falls under the compliance check category.
-- This evidence is collected from Config or Security Hub.
assessmentEvidenceFolder_evidenceByTypeComplianceCheckCount :: Lens.Lens' AssessmentEvidenceFolder (Prelude.Maybe Prelude.Int)
assessmentEvidenceFolder_evidenceByTypeComplianceCheckCount = Lens.lens (\AssessmentEvidenceFolder' {evidenceByTypeComplianceCheckCount} -> evidenceByTypeComplianceCheckCount) (\s@AssessmentEvidenceFolder' {} a -> s {evidenceByTypeComplianceCheckCount = a} :: AssessmentEvidenceFolder)

-- | The total number of issues that were reported directly from Security
-- Hub, Config, or both.
assessmentEvidenceFolder_evidenceByTypeComplianceCheckIssuesCount :: Lens.Lens' AssessmentEvidenceFolder (Prelude.Maybe Prelude.Int)
assessmentEvidenceFolder_evidenceByTypeComplianceCheckIssuesCount = Lens.lens (\AssessmentEvidenceFolder' {evidenceByTypeComplianceCheckIssuesCount} -> evidenceByTypeComplianceCheckIssuesCount) (\s@AssessmentEvidenceFolder' {} a -> s {evidenceByTypeComplianceCheckIssuesCount = a} :: AssessmentEvidenceFolder)

-- | The number of evidence that falls under the configuration data category.
-- This evidence is collected from configuration snapshots of other Amazon
-- Web Services such as Amazon EC2, Amazon S3, or IAM.
assessmentEvidenceFolder_evidenceByTypeConfigurationDataCount :: Lens.Lens' AssessmentEvidenceFolder (Prelude.Maybe Prelude.Int)
assessmentEvidenceFolder_evidenceByTypeConfigurationDataCount = Lens.lens (\AssessmentEvidenceFolder' {evidenceByTypeConfigurationDataCount} -> evidenceByTypeConfigurationDataCount) (\s@AssessmentEvidenceFolder' {} a -> s {evidenceByTypeConfigurationDataCount = a} :: AssessmentEvidenceFolder)

-- | The number of evidence that falls under the manual category. This
-- evidence is imported manually.
assessmentEvidenceFolder_evidenceByTypeManualCount :: Lens.Lens' AssessmentEvidenceFolder (Prelude.Maybe Prelude.Int)
assessmentEvidenceFolder_evidenceByTypeManualCount = Lens.lens (\AssessmentEvidenceFolder' {evidenceByTypeManualCount} -> evidenceByTypeManualCount) (\s@AssessmentEvidenceFolder' {} a -> s {evidenceByTypeManualCount = a} :: AssessmentEvidenceFolder)

-- | The number of evidence that falls under the user activity category. This
-- evidence is collected from CloudTrail logs.
assessmentEvidenceFolder_evidenceByTypeUserActivityCount :: Lens.Lens' AssessmentEvidenceFolder (Prelude.Maybe Prelude.Int)
assessmentEvidenceFolder_evidenceByTypeUserActivityCount = Lens.lens (\AssessmentEvidenceFolder' {evidenceByTypeUserActivityCount} -> evidenceByTypeUserActivityCount) (\s@AssessmentEvidenceFolder' {} a -> s {evidenceByTypeUserActivityCount = a} :: AssessmentEvidenceFolder)

-- | The amount of evidence that\'s included in the evidence folder.
assessmentEvidenceFolder_evidenceResourcesIncludedCount :: Lens.Lens' AssessmentEvidenceFolder (Prelude.Maybe Prelude.Int)
assessmentEvidenceFolder_evidenceResourcesIncludedCount = Lens.lens (\AssessmentEvidenceFolder' {evidenceResourcesIncludedCount} -> evidenceResourcesIncludedCount) (\s@AssessmentEvidenceFolder' {} a -> s {evidenceResourcesIncludedCount = a} :: AssessmentEvidenceFolder)

-- | The identifier for the folder that the evidence is stored in.
assessmentEvidenceFolder_id :: Lens.Lens' AssessmentEvidenceFolder (Prelude.Maybe Prelude.Text)
assessmentEvidenceFolder_id = Lens.lens (\AssessmentEvidenceFolder' {id} -> id) (\s@AssessmentEvidenceFolder' {} a -> s {id = a} :: AssessmentEvidenceFolder)

-- | The name of the evidence folder.
assessmentEvidenceFolder_name :: Lens.Lens' AssessmentEvidenceFolder (Prelude.Maybe Prelude.Text)
assessmentEvidenceFolder_name = Lens.lens (\AssessmentEvidenceFolder' {name} -> name) (\s@AssessmentEvidenceFolder' {} a -> s {name = a} :: AssessmentEvidenceFolder)

-- | The total amount of evidence in the evidence folder.
assessmentEvidenceFolder_totalEvidence :: Lens.Lens' AssessmentEvidenceFolder (Prelude.Maybe Prelude.Int)
assessmentEvidenceFolder_totalEvidence = Lens.lens (\AssessmentEvidenceFolder' {totalEvidence} -> totalEvidence) (\s@AssessmentEvidenceFolder' {} a -> s {totalEvidence = a} :: AssessmentEvidenceFolder)

instance Data.FromJSON AssessmentEvidenceFolder where
  parseJSON =
    Data.withObject
      "AssessmentEvidenceFolder"
      ( \x ->
          AssessmentEvidenceFolder'
            Prelude.<$> (x Data..:? "assessmentId")
            Prelude.<*> (x Data..:? "assessmentReportSelectionCount")
            Prelude.<*> (x Data..:? "author")
            Prelude.<*> (x Data..:? "controlId")
            Prelude.<*> (x Data..:? "controlName")
            Prelude.<*> (x Data..:? "controlSetId")
            Prelude.<*> (x Data..:? "dataSource")
            Prelude.<*> (x Data..:? "date")
            Prelude.<*> (x Data..:? "evidenceAwsServiceSourceCount")
            Prelude.<*> (x Data..:? "evidenceByTypeComplianceCheckCount")
            Prelude.<*> ( x
                            Data..:? "evidenceByTypeComplianceCheckIssuesCount"
                        )
            Prelude.<*> (x Data..:? "evidenceByTypeConfigurationDataCount")
            Prelude.<*> (x Data..:? "evidenceByTypeManualCount")
            Prelude.<*> (x Data..:? "evidenceByTypeUserActivityCount")
            Prelude.<*> (x Data..:? "evidenceResourcesIncludedCount")
            Prelude.<*> (x Data..:? "id")
            Prelude.<*> (x Data..:? "name")
            Prelude.<*> (x Data..:? "totalEvidence")
      )

instance Prelude.Hashable AssessmentEvidenceFolder where
  hashWithSalt _salt AssessmentEvidenceFolder' {..} =
    _salt
      `Prelude.hashWithSalt` assessmentId
      `Prelude.hashWithSalt` assessmentReportSelectionCount
      `Prelude.hashWithSalt` author
      `Prelude.hashWithSalt` controlId
      `Prelude.hashWithSalt` controlName
      `Prelude.hashWithSalt` controlSetId
      `Prelude.hashWithSalt` dataSource
      `Prelude.hashWithSalt` date
      `Prelude.hashWithSalt` evidenceAwsServiceSourceCount
      `Prelude.hashWithSalt` evidenceByTypeComplianceCheckCount
      `Prelude.hashWithSalt` evidenceByTypeComplianceCheckIssuesCount
      `Prelude.hashWithSalt` evidenceByTypeConfigurationDataCount
      `Prelude.hashWithSalt` evidenceByTypeManualCount
      `Prelude.hashWithSalt` evidenceByTypeUserActivityCount
      `Prelude.hashWithSalt` evidenceResourcesIncludedCount
      `Prelude.hashWithSalt` id
      `Prelude.hashWithSalt` name
      `Prelude.hashWithSalt` totalEvidence

instance Prelude.NFData AssessmentEvidenceFolder where
  rnf AssessmentEvidenceFolder' {..} =
    Prelude.rnf assessmentId
      `Prelude.seq` Prelude.rnf assessmentReportSelectionCount
      `Prelude.seq` Prelude.rnf author
      `Prelude.seq` Prelude.rnf controlId
      `Prelude.seq` Prelude.rnf controlName
      `Prelude.seq` Prelude.rnf controlSetId
      `Prelude.seq` Prelude.rnf dataSource
      `Prelude.seq` Prelude.rnf date
      `Prelude.seq` Prelude.rnf evidenceAwsServiceSourceCount
      `Prelude.seq` Prelude.rnf evidenceByTypeComplianceCheckCount
      `Prelude.seq` Prelude.rnf
        evidenceByTypeComplianceCheckIssuesCount
      `Prelude.seq` Prelude.rnf
        evidenceByTypeConfigurationDataCount
      `Prelude.seq` Prelude.rnf evidenceByTypeManualCount
      `Prelude.seq` Prelude.rnf
        evidenceByTypeUserActivityCount
      `Prelude.seq` Prelude.rnf
        evidenceResourcesIncludedCount
      `Prelude.seq` Prelude.rnf id
      `Prelude.seq` Prelude.rnf name
      `Prelude.seq` Prelude.rnf totalEvidence