{-# 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.Inspector.Types.AssessmentRun
-- 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.Inspector.Types.AssessmentRun where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.Inspector.Types.AssessmentRunNotification
import Amazonka.Inspector.Types.AssessmentRunState
import Amazonka.Inspector.Types.AssessmentRunStateChange
import Amazonka.Inspector.Types.Attribute
import Amazonka.Inspector.Types.Severity
import qualified Amazonka.Prelude as Prelude

-- | A snapshot of an Amazon Inspector assessment run that contains the
-- findings of the assessment run .
--
-- Used as the response element in the DescribeAssessmentRuns action.
--
-- /See:/ 'newAssessmentRun' smart constructor.
data AssessmentRun = AssessmentRun'
  { -- | The assessment run completion time that corresponds to the rules
    -- packages evaluation completion time or failure.
    AssessmentRun -> Maybe POSIX
completedAt :: Prelude.Maybe Data.POSIX,
    -- | The time when StartAssessmentRun was called.
    AssessmentRun -> Maybe POSIX
startedAt :: Prelude.Maybe Data.POSIX,
    -- | The ARN of the assessment run.
    AssessmentRun -> Text
arn :: Prelude.Text,
    -- | The auto-generated name for the assessment run.
    AssessmentRun -> Text
name :: Prelude.Text,
    -- | The ARN of the assessment template that is associated with the
    -- assessment run.
    AssessmentRun -> Text
assessmentTemplateArn :: Prelude.Text,
    -- | The state of the assessment run.
    AssessmentRun -> AssessmentRunState
state :: AssessmentRunState,
    -- | The duration of the assessment run.
    AssessmentRun -> Natural
durationInSeconds :: Prelude.Natural,
    -- | The rules packages selected for the assessment run.
    AssessmentRun -> NonEmpty Text
rulesPackageArns :: Prelude.NonEmpty Prelude.Text,
    -- | The user-defined attributes that are assigned to every generated
    -- finding.
    AssessmentRun -> [Attribute]
userAttributesForFindings :: [Attribute],
    -- | The time when StartAssessmentRun was called.
    AssessmentRun -> POSIX
createdAt :: Data.POSIX,
    -- | The last time when the assessment run\'s state changed.
    AssessmentRun -> POSIX
stateChangedAt :: Data.POSIX,
    -- | A Boolean value (true or false) that specifies whether the process of
    -- collecting data from the agents is completed.
    AssessmentRun -> Bool
dataCollected :: Prelude.Bool,
    -- | A list of the assessment run state changes.
    AssessmentRun -> [AssessmentRunStateChange]
stateChanges :: [AssessmentRunStateChange],
    -- | A list of notifications for the event subscriptions. A notification
    -- about a particular generated finding is added to this list only once.
    AssessmentRun -> [AssessmentRunNotification]
notifications :: [AssessmentRunNotification],
    -- | Provides a total count of generated findings per severity.
    AssessmentRun -> HashMap Severity Int
findingCounts :: Prelude.HashMap Severity Prelude.Int
  }
  deriving (AssessmentRun -> AssessmentRun -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: AssessmentRun -> AssessmentRun -> Bool
$c/= :: AssessmentRun -> AssessmentRun -> Bool
== :: AssessmentRun -> AssessmentRun -> Bool
$c== :: AssessmentRun -> AssessmentRun -> Bool
Prelude.Eq, ReadPrec [AssessmentRun]
ReadPrec AssessmentRun
Int -> ReadS AssessmentRun
ReadS [AssessmentRun]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [AssessmentRun]
$creadListPrec :: ReadPrec [AssessmentRun]
readPrec :: ReadPrec AssessmentRun
$creadPrec :: ReadPrec AssessmentRun
readList :: ReadS [AssessmentRun]
$creadList :: ReadS [AssessmentRun]
readsPrec :: Int -> ReadS AssessmentRun
$creadsPrec :: Int -> ReadS AssessmentRun
Prelude.Read, Int -> AssessmentRun -> ShowS
[AssessmentRun] -> ShowS
AssessmentRun -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [AssessmentRun] -> ShowS
$cshowList :: [AssessmentRun] -> ShowS
show :: AssessmentRun -> String
$cshow :: AssessmentRun -> String
showsPrec :: Int -> AssessmentRun -> ShowS
$cshowsPrec :: Int -> AssessmentRun -> ShowS
Prelude.Show, forall x. Rep AssessmentRun x -> AssessmentRun
forall x. AssessmentRun -> Rep AssessmentRun x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep AssessmentRun x -> AssessmentRun
$cfrom :: forall x. AssessmentRun -> Rep AssessmentRun x
Prelude.Generic)

-- |
-- Create a value of 'AssessmentRun' 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:
--
-- 'completedAt', 'assessmentRun_completedAt' - The assessment run completion time that corresponds to the rules
-- packages evaluation completion time or failure.
--
-- 'startedAt', 'assessmentRun_startedAt' - The time when StartAssessmentRun was called.
--
-- 'arn', 'assessmentRun_arn' - The ARN of the assessment run.
--
-- 'name', 'assessmentRun_name' - The auto-generated name for the assessment run.
--
-- 'assessmentTemplateArn', 'assessmentRun_assessmentTemplateArn' - The ARN of the assessment template that is associated with the
-- assessment run.
--
-- 'state', 'assessmentRun_state' - The state of the assessment run.
--
-- 'durationInSeconds', 'assessmentRun_durationInSeconds' - The duration of the assessment run.
--
-- 'rulesPackageArns', 'assessmentRun_rulesPackageArns' - The rules packages selected for the assessment run.
--
-- 'userAttributesForFindings', 'assessmentRun_userAttributesForFindings' - The user-defined attributes that are assigned to every generated
-- finding.
--
-- 'createdAt', 'assessmentRun_createdAt' - The time when StartAssessmentRun was called.
--
-- 'stateChangedAt', 'assessmentRun_stateChangedAt' - The last time when the assessment run\'s state changed.
--
-- 'dataCollected', 'assessmentRun_dataCollected' - A Boolean value (true or false) that specifies whether the process of
-- collecting data from the agents is completed.
--
-- 'stateChanges', 'assessmentRun_stateChanges' - A list of the assessment run state changes.
--
-- 'notifications', 'assessmentRun_notifications' - A list of notifications for the event subscriptions. A notification
-- about a particular generated finding is added to this list only once.
--
-- 'findingCounts', 'assessmentRun_findingCounts' - Provides a total count of generated findings per severity.
newAssessmentRun ::
  -- | 'arn'
  Prelude.Text ->
  -- | 'name'
  Prelude.Text ->
  -- | 'assessmentTemplateArn'
  Prelude.Text ->
  -- | 'state'
  AssessmentRunState ->
  -- | 'durationInSeconds'
  Prelude.Natural ->
  -- | 'rulesPackageArns'
  Prelude.NonEmpty Prelude.Text ->
  -- | 'createdAt'
  Prelude.UTCTime ->
  -- | 'stateChangedAt'
  Prelude.UTCTime ->
  -- | 'dataCollected'
  Prelude.Bool ->
  AssessmentRun
newAssessmentRun :: Text
-> Text
-> Text
-> AssessmentRunState
-> Natural
-> NonEmpty Text
-> UTCTime
-> UTCTime
-> Bool
-> AssessmentRun
newAssessmentRun
  Text
pArn_
  Text
pName_
  Text
pAssessmentTemplateArn_
  AssessmentRunState
pState_
  Natural
pDurationInSeconds_
  NonEmpty Text
pRulesPackageArns_
  UTCTime
pCreatedAt_
  UTCTime
pStateChangedAt_
  Bool
pDataCollected_ =
    AssessmentRun'
      { $sel:completedAt:AssessmentRun' :: Maybe POSIX
completedAt = forall a. Maybe a
Prelude.Nothing,
        $sel:startedAt:AssessmentRun' :: Maybe POSIX
startedAt = forall a. Maybe a
Prelude.Nothing,
        $sel:arn:AssessmentRun' :: Text
arn = Text
pArn_,
        $sel:name:AssessmentRun' :: Text
name = Text
pName_,
        $sel:assessmentTemplateArn:AssessmentRun' :: Text
assessmentTemplateArn = Text
pAssessmentTemplateArn_,
        $sel:state:AssessmentRun' :: AssessmentRunState
state = AssessmentRunState
pState_,
        $sel:durationInSeconds:AssessmentRun' :: Natural
durationInSeconds = Natural
pDurationInSeconds_,
        $sel:rulesPackageArns:AssessmentRun' :: NonEmpty Text
rulesPackageArns =
          forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced forall t b. AReview t b -> b -> t
Lens.# NonEmpty Text
pRulesPackageArns_,
        $sel:userAttributesForFindings:AssessmentRun' :: [Attribute]
userAttributesForFindings = forall a. Monoid a => a
Prelude.mempty,
        $sel:createdAt:AssessmentRun' :: POSIX
createdAt = forall (a :: Format). Iso' (Time a) UTCTime
Data._Time forall t b. AReview t b -> b -> t
Lens.# UTCTime
pCreatedAt_,
        $sel:stateChangedAt:AssessmentRun' :: POSIX
stateChangedAt = forall (a :: Format). Iso' (Time a) UTCTime
Data._Time forall t b. AReview t b -> b -> t
Lens.# UTCTime
pStateChangedAt_,
        $sel:dataCollected:AssessmentRun' :: Bool
dataCollected = Bool
pDataCollected_,
        $sel:stateChanges:AssessmentRun' :: [AssessmentRunStateChange]
stateChanges = forall a. Monoid a => a
Prelude.mempty,
        $sel:notifications:AssessmentRun' :: [AssessmentRunNotification]
notifications = forall a. Monoid a => a
Prelude.mempty,
        $sel:findingCounts:AssessmentRun' :: HashMap Severity Int
findingCounts = forall a. Monoid a => a
Prelude.mempty
      }

-- | The assessment run completion time that corresponds to the rules
-- packages evaluation completion time or failure.
assessmentRun_completedAt :: Lens.Lens' AssessmentRun (Prelude.Maybe Prelude.UTCTime)
assessmentRun_completedAt :: Lens' AssessmentRun (Maybe UTCTime)
assessmentRun_completedAt = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AssessmentRun' {Maybe POSIX
completedAt :: Maybe POSIX
$sel:completedAt:AssessmentRun' :: AssessmentRun -> Maybe POSIX
completedAt} -> Maybe POSIX
completedAt) (\s :: AssessmentRun
s@AssessmentRun' {} Maybe POSIX
a -> AssessmentRun
s {$sel:completedAt:AssessmentRun' :: Maybe POSIX
completedAt = Maybe POSIX
a} :: AssessmentRun) 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

-- | The time when StartAssessmentRun was called.
assessmentRun_startedAt :: Lens.Lens' AssessmentRun (Prelude.Maybe Prelude.UTCTime)
assessmentRun_startedAt :: Lens' AssessmentRun (Maybe UTCTime)
assessmentRun_startedAt = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AssessmentRun' {Maybe POSIX
startedAt :: Maybe POSIX
$sel:startedAt:AssessmentRun' :: AssessmentRun -> Maybe POSIX
startedAt} -> Maybe POSIX
startedAt) (\s :: AssessmentRun
s@AssessmentRun' {} Maybe POSIX
a -> AssessmentRun
s {$sel:startedAt:AssessmentRun' :: Maybe POSIX
startedAt = Maybe POSIX
a} :: AssessmentRun) 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

-- | The ARN of the assessment run.
assessmentRun_arn :: Lens.Lens' AssessmentRun Prelude.Text
assessmentRun_arn :: Lens' AssessmentRun Text
assessmentRun_arn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AssessmentRun' {Text
arn :: Text
$sel:arn:AssessmentRun' :: AssessmentRun -> Text
arn} -> Text
arn) (\s :: AssessmentRun
s@AssessmentRun' {} Text
a -> AssessmentRun
s {$sel:arn:AssessmentRun' :: Text
arn = Text
a} :: AssessmentRun)

-- | The auto-generated name for the assessment run.
assessmentRun_name :: Lens.Lens' AssessmentRun Prelude.Text
assessmentRun_name :: Lens' AssessmentRun Text
assessmentRun_name = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AssessmentRun' {Text
name :: Text
$sel:name:AssessmentRun' :: AssessmentRun -> Text
name} -> Text
name) (\s :: AssessmentRun
s@AssessmentRun' {} Text
a -> AssessmentRun
s {$sel:name:AssessmentRun' :: Text
name = Text
a} :: AssessmentRun)

-- | The ARN of the assessment template that is associated with the
-- assessment run.
assessmentRun_assessmentTemplateArn :: Lens.Lens' AssessmentRun Prelude.Text
assessmentRun_assessmentTemplateArn :: Lens' AssessmentRun Text
assessmentRun_assessmentTemplateArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AssessmentRun' {Text
assessmentTemplateArn :: Text
$sel:assessmentTemplateArn:AssessmentRun' :: AssessmentRun -> Text
assessmentTemplateArn} -> Text
assessmentTemplateArn) (\s :: AssessmentRun
s@AssessmentRun' {} Text
a -> AssessmentRun
s {$sel:assessmentTemplateArn:AssessmentRun' :: Text
assessmentTemplateArn = Text
a} :: AssessmentRun)

-- | The state of the assessment run.
assessmentRun_state :: Lens.Lens' AssessmentRun AssessmentRunState
assessmentRun_state :: Lens' AssessmentRun AssessmentRunState
assessmentRun_state = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AssessmentRun' {AssessmentRunState
state :: AssessmentRunState
$sel:state:AssessmentRun' :: AssessmentRun -> AssessmentRunState
state} -> AssessmentRunState
state) (\s :: AssessmentRun
s@AssessmentRun' {} AssessmentRunState
a -> AssessmentRun
s {$sel:state:AssessmentRun' :: AssessmentRunState
state = AssessmentRunState
a} :: AssessmentRun)

-- | The duration of the assessment run.
assessmentRun_durationInSeconds :: Lens.Lens' AssessmentRun Prelude.Natural
assessmentRun_durationInSeconds :: Lens' AssessmentRun Natural
assessmentRun_durationInSeconds = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AssessmentRun' {Natural
durationInSeconds :: Natural
$sel:durationInSeconds:AssessmentRun' :: AssessmentRun -> Natural
durationInSeconds} -> Natural
durationInSeconds) (\s :: AssessmentRun
s@AssessmentRun' {} Natural
a -> AssessmentRun
s {$sel:durationInSeconds:AssessmentRun' :: Natural
durationInSeconds = Natural
a} :: AssessmentRun)

-- | The rules packages selected for the assessment run.
assessmentRun_rulesPackageArns :: Lens.Lens' AssessmentRun (Prelude.NonEmpty Prelude.Text)
assessmentRun_rulesPackageArns :: Lens' AssessmentRun (NonEmpty Text)
assessmentRun_rulesPackageArns = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AssessmentRun' {NonEmpty Text
rulesPackageArns :: NonEmpty Text
$sel:rulesPackageArns:AssessmentRun' :: AssessmentRun -> NonEmpty Text
rulesPackageArns} -> NonEmpty Text
rulesPackageArns) (\s :: AssessmentRun
s@AssessmentRun' {} NonEmpty Text
a -> AssessmentRun
s {$sel:rulesPackageArns:AssessmentRun' :: NonEmpty Text
rulesPackageArns = NonEmpty Text
a} :: AssessmentRun) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The user-defined attributes that are assigned to every generated
-- finding.
assessmentRun_userAttributesForFindings :: Lens.Lens' AssessmentRun [Attribute]
assessmentRun_userAttributesForFindings :: Lens' AssessmentRun [Attribute]
assessmentRun_userAttributesForFindings = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AssessmentRun' {[Attribute]
userAttributesForFindings :: [Attribute]
$sel:userAttributesForFindings:AssessmentRun' :: AssessmentRun -> [Attribute]
userAttributesForFindings} -> [Attribute]
userAttributesForFindings) (\s :: AssessmentRun
s@AssessmentRun' {} [Attribute]
a -> AssessmentRun
s {$sel:userAttributesForFindings:AssessmentRun' :: [Attribute]
userAttributesForFindings = [Attribute]
a} :: AssessmentRun) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The time when StartAssessmentRun was called.
assessmentRun_createdAt :: Lens.Lens' AssessmentRun Prelude.UTCTime
assessmentRun_createdAt :: Lens' AssessmentRun UTCTime
assessmentRun_createdAt = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AssessmentRun' {POSIX
createdAt :: POSIX
$sel:createdAt:AssessmentRun' :: AssessmentRun -> POSIX
createdAt} -> POSIX
createdAt) (\s :: AssessmentRun
s@AssessmentRun' {} POSIX
a -> AssessmentRun
s {$sel:createdAt:AssessmentRun' :: POSIX
createdAt = POSIX
a} :: AssessmentRun) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (a :: Format). Iso' (Time a) UTCTime
Data._Time

-- | The last time when the assessment run\'s state changed.
assessmentRun_stateChangedAt :: Lens.Lens' AssessmentRun Prelude.UTCTime
assessmentRun_stateChangedAt :: Lens' AssessmentRun UTCTime
assessmentRun_stateChangedAt = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AssessmentRun' {POSIX
stateChangedAt :: POSIX
$sel:stateChangedAt:AssessmentRun' :: AssessmentRun -> POSIX
stateChangedAt} -> POSIX
stateChangedAt) (\s :: AssessmentRun
s@AssessmentRun' {} POSIX
a -> AssessmentRun
s {$sel:stateChangedAt:AssessmentRun' :: POSIX
stateChangedAt = POSIX
a} :: AssessmentRun) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (a :: Format). Iso' (Time a) UTCTime
Data._Time

-- | A Boolean value (true or false) that specifies whether the process of
-- collecting data from the agents is completed.
assessmentRun_dataCollected :: Lens.Lens' AssessmentRun Prelude.Bool
assessmentRun_dataCollected :: Lens' AssessmentRun Bool
assessmentRun_dataCollected = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AssessmentRun' {Bool
dataCollected :: Bool
$sel:dataCollected:AssessmentRun' :: AssessmentRun -> Bool
dataCollected} -> Bool
dataCollected) (\s :: AssessmentRun
s@AssessmentRun' {} Bool
a -> AssessmentRun
s {$sel:dataCollected:AssessmentRun' :: Bool
dataCollected = Bool
a} :: AssessmentRun)

-- | A list of the assessment run state changes.
assessmentRun_stateChanges :: Lens.Lens' AssessmentRun [AssessmentRunStateChange]
assessmentRun_stateChanges :: Lens' AssessmentRun [AssessmentRunStateChange]
assessmentRun_stateChanges = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AssessmentRun' {[AssessmentRunStateChange]
stateChanges :: [AssessmentRunStateChange]
$sel:stateChanges:AssessmentRun' :: AssessmentRun -> [AssessmentRunStateChange]
stateChanges} -> [AssessmentRunStateChange]
stateChanges) (\s :: AssessmentRun
s@AssessmentRun' {} [AssessmentRunStateChange]
a -> AssessmentRun
s {$sel:stateChanges:AssessmentRun' :: [AssessmentRunStateChange]
stateChanges = [AssessmentRunStateChange]
a} :: AssessmentRun) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | A list of notifications for the event subscriptions. A notification
-- about a particular generated finding is added to this list only once.
assessmentRun_notifications :: Lens.Lens' AssessmentRun [AssessmentRunNotification]
assessmentRun_notifications :: Lens' AssessmentRun [AssessmentRunNotification]
assessmentRun_notifications = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AssessmentRun' {[AssessmentRunNotification]
notifications :: [AssessmentRunNotification]
$sel:notifications:AssessmentRun' :: AssessmentRun -> [AssessmentRunNotification]
notifications} -> [AssessmentRunNotification]
notifications) (\s :: AssessmentRun
s@AssessmentRun' {} [AssessmentRunNotification]
a -> AssessmentRun
s {$sel:notifications:AssessmentRun' :: [AssessmentRunNotification]
notifications = [AssessmentRunNotification]
a} :: AssessmentRun) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | Provides a total count of generated findings per severity.
assessmentRun_findingCounts :: Lens.Lens' AssessmentRun (Prelude.HashMap Severity Prelude.Int)
assessmentRun_findingCounts :: Lens' AssessmentRun (HashMap Severity Int)
assessmentRun_findingCounts = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AssessmentRun' {HashMap Severity Int
findingCounts :: HashMap Severity Int
$sel:findingCounts:AssessmentRun' :: AssessmentRun -> HashMap Severity Int
findingCounts} -> HashMap Severity Int
findingCounts) (\s :: AssessmentRun
s@AssessmentRun' {} HashMap Severity Int
a -> AssessmentRun
s {$sel:findingCounts:AssessmentRun' :: HashMap Severity Int
findingCounts = HashMap Severity Int
a} :: AssessmentRun) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

instance Data.FromJSON AssessmentRun where
  parseJSON :: Value -> Parser AssessmentRun
parseJSON =
    forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
      String
"AssessmentRun"
      ( \Object
x ->
          Maybe POSIX
-> Maybe POSIX
-> Text
-> Text
-> Text
-> AssessmentRunState
-> Natural
-> NonEmpty Text
-> [Attribute]
-> POSIX
-> POSIX
-> Bool
-> [AssessmentRunStateChange]
-> [AssessmentRunNotification]
-> HashMap Severity Int
-> AssessmentRun
AssessmentRun'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"completedAt")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"startedAt")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser a
Data..: Key
"arn")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser a
Data..: Key
"name")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser a
Data..: Key
"assessmentTemplateArn")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser a
Data..: Key
"state")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser a
Data..: Key
"durationInSeconds")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser a
Data..: Key
"rulesPackageArns")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( Object
x
                            forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"userAttributesForFindings"
                            forall a. Parser (Maybe a) -> a -> Parser a
Data..!= 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 -> Parser a
Data..: Key
"createdAt")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser a
Data..: Key
"stateChangedAt")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser a
Data..: Key
"dataCollected")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"stateChanges" forall a. Parser (Maybe a) -> a -> Parser a
Data..!= 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 -> Parser (Maybe a)
Data..:? Key
"notifications" forall a. Parser (Maybe a) -> a -> Parser a
Data..!= 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 -> Parser (Maybe a)
Data..:? Key
"findingCounts" forall a. Parser (Maybe a) -> a -> Parser a
Data..!= forall a. Monoid a => a
Prelude.mempty)
      )

instance Prelude.Hashable AssessmentRun where
  hashWithSalt :: Int -> AssessmentRun -> Int
hashWithSalt Int
_salt AssessmentRun' {Bool
Natural
[AssessmentRunStateChange]
[Attribute]
[AssessmentRunNotification]
Maybe POSIX
NonEmpty Text
Text
HashMap Severity Int
POSIX
AssessmentRunState
findingCounts :: HashMap Severity Int
notifications :: [AssessmentRunNotification]
stateChanges :: [AssessmentRunStateChange]
dataCollected :: Bool
stateChangedAt :: POSIX
createdAt :: POSIX
userAttributesForFindings :: [Attribute]
rulesPackageArns :: NonEmpty Text
durationInSeconds :: Natural
state :: AssessmentRunState
assessmentTemplateArn :: Text
name :: Text
arn :: Text
startedAt :: Maybe POSIX
completedAt :: Maybe POSIX
$sel:findingCounts:AssessmentRun' :: AssessmentRun -> HashMap Severity Int
$sel:notifications:AssessmentRun' :: AssessmentRun -> [AssessmentRunNotification]
$sel:stateChanges:AssessmentRun' :: AssessmentRun -> [AssessmentRunStateChange]
$sel:dataCollected:AssessmentRun' :: AssessmentRun -> Bool
$sel:stateChangedAt:AssessmentRun' :: AssessmentRun -> POSIX
$sel:createdAt:AssessmentRun' :: AssessmentRun -> POSIX
$sel:userAttributesForFindings:AssessmentRun' :: AssessmentRun -> [Attribute]
$sel:rulesPackageArns:AssessmentRun' :: AssessmentRun -> NonEmpty Text
$sel:durationInSeconds:AssessmentRun' :: AssessmentRun -> Natural
$sel:state:AssessmentRun' :: AssessmentRun -> AssessmentRunState
$sel:assessmentTemplateArn:AssessmentRun' :: AssessmentRun -> Text
$sel:name:AssessmentRun' :: AssessmentRun -> Text
$sel:arn:AssessmentRun' :: AssessmentRun -> Text
$sel:startedAt:AssessmentRun' :: AssessmentRun -> Maybe POSIX
$sel:completedAt:AssessmentRun' :: AssessmentRun -> Maybe POSIX
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe POSIX
completedAt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe POSIX
startedAt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
arn
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
name
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
assessmentTemplateArn
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` AssessmentRunState
state
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Natural
durationInSeconds
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` NonEmpty Text
rulesPackageArns
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` [Attribute]
userAttributesForFindings
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` POSIX
createdAt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` POSIX
stateChangedAt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Bool
dataCollected
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` [AssessmentRunStateChange]
stateChanges
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` [AssessmentRunNotification]
notifications
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` HashMap Severity Int
findingCounts

instance Prelude.NFData AssessmentRun where
  rnf :: AssessmentRun -> ()
rnf AssessmentRun' {Bool
Natural
[AssessmentRunStateChange]
[Attribute]
[AssessmentRunNotification]
Maybe POSIX
NonEmpty Text
Text
HashMap Severity Int
POSIX
AssessmentRunState
findingCounts :: HashMap Severity Int
notifications :: [AssessmentRunNotification]
stateChanges :: [AssessmentRunStateChange]
dataCollected :: Bool
stateChangedAt :: POSIX
createdAt :: POSIX
userAttributesForFindings :: [Attribute]
rulesPackageArns :: NonEmpty Text
durationInSeconds :: Natural
state :: AssessmentRunState
assessmentTemplateArn :: Text
name :: Text
arn :: Text
startedAt :: Maybe POSIX
completedAt :: Maybe POSIX
$sel:findingCounts:AssessmentRun' :: AssessmentRun -> HashMap Severity Int
$sel:notifications:AssessmentRun' :: AssessmentRun -> [AssessmentRunNotification]
$sel:stateChanges:AssessmentRun' :: AssessmentRun -> [AssessmentRunStateChange]
$sel:dataCollected:AssessmentRun' :: AssessmentRun -> Bool
$sel:stateChangedAt:AssessmentRun' :: AssessmentRun -> POSIX
$sel:createdAt:AssessmentRun' :: AssessmentRun -> POSIX
$sel:userAttributesForFindings:AssessmentRun' :: AssessmentRun -> [Attribute]
$sel:rulesPackageArns:AssessmentRun' :: AssessmentRun -> NonEmpty Text
$sel:durationInSeconds:AssessmentRun' :: AssessmentRun -> Natural
$sel:state:AssessmentRun' :: AssessmentRun -> AssessmentRunState
$sel:assessmentTemplateArn:AssessmentRun' :: AssessmentRun -> Text
$sel:name:AssessmentRun' :: AssessmentRun -> Text
$sel:arn:AssessmentRun' :: AssessmentRun -> Text
$sel:startedAt:AssessmentRun' :: AssessmentRun -> Maybe POSIX
$sel:completedAt:AssessmentRun' :: AssessmentRun -> Maybe POSIX
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe POSIX
completedAt
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe POSIX
startedAt
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
arn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
name
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
assessmentTemplateArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf AssessmentRunState
state
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Natural
durationInSeconds
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf NonEmpty Text
rulesPackageArns
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf [Attribute]
userAttributesForFindings
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf POSIX
createdAt
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf POSIX
stateChangedAt
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Bool
dataCollected
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf [AssessmentRunStateChange]
stateChanges
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf [AssessmentRunNotification]
notifications
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf HashMap Severity Int
findingCounts