{-# 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.AssessmentRunFilter
-- 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.AssessmentRunFilter 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.AssessmentRunState
import Amazonka.Inspector.Types.DurationRange
import Amazonka.Inspector.Types.TimestampRange
import qualified Amazonka.Prelude as Prelude

-- | Used as the request parameter in the ListAssessmentRuns action.
--
-- /See:/ 'newAssessmentRunFilter' smart constructor.
data AssessmentRunFilter = AssessmentRunFilter'
  { -- | For a record to match a filter, the value that is specified for this
    -- data type property must inclusively match any value between the
    -- specified minimum and maximum values of the __completedAt__ property of
    -- the AssessmentRun data type.
    AssessmentRunFilter -> Maybe TimestampRange
completionTimeRange :: Prelude.Maybe TimestampRange,
    -- | For a record to match a filter, the value that is specified for this
    -- data type property must inclusively match any value between the
    -- specified minimum and maximum values of the __durationInSeconds__
    -- property of the AssessmentRun data type.
    AssessmentRunFilter -> Maybe DurationRange
durationRange :: Prelude.Maybe DurationRange,
    -- | For a record to match a filter, an explicit value or a string containing
    -- a wildcard that is specified for this data type property must match the
    -- value of the __assessmentRunName__ property of the AssessmentRun data
    -- type.
    AssessmentRunFilter -> Maybe Text
namePattern :: Prelude.Maybe Prelude.Text,
    -- | For a record to match a filter, the value that is specified for this
    -- data type property must be contained in the list of values of the
    -- __rulesPackages__ property of the AssessmentRun data type.
    AssessmentRunFilter -> Maybe [Text]
rulesPackageArns :: Prelude.Maybe [Prelude.Text],
    -- | For a record to match a filter, the value that is specified for this
    -- data type property must inclusively match any value between the
    -- specified minimum and maximum values of the __startTime__ property of
    -- the AssessmentRun data type.
    AssessmentRunFilter -> Maybe TimestampRange
startTimeRange :: Prelude.Maybe TimestampRange,
    -- | For a record to match a filter, the value that is specified for this
    -- data type property must match the __stateChangedAt__ property of the
    -- AssessmentRun data type.
    AssessmentRunFilter -> Maybe TimestampRange
stateChangeTimeRange :: Prelude.Maybe TimestampRange,
    -- | For a record to match a filter, one of the values specified for this
    -- data type property must be the exact match of the value of the
    -- __assessmentRunState__ property of the AssessmentRun data type.
    AssessmentRunFilter -> Maybe [AssessmentRunState]
states :: Prelude.Maybe [AssessmentRunState]
  }
  deriving (AssessmentRunFilter -> AssessmentRunFilter -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: AssessmentRunFilter -> AssessmentRunFilter -> Bool
$c/= :: AssessmentRunFilter -> AssessmentRunFilter -> Bool
== :: AssessmentRunFilter -> AssessmentRunFilter -> Bool
$c== :: AssessmentRunFilter -> AssessmentRunFilter -> Bool
Prelude.Eq, ReadPrec [AssessmentRunFilter]
ReadPrec AssessmentRunFilter
Int -> ReadS AssessmentRunFilter
ReadS [AssessmentRunFilter]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [AssessmentRunFilter]
$creadListPrec :: ReadPrec [AssessmentRunFilter]
readPrec :: ReadPrec AssessmentRunFilter
$creadPrec :: ReadPrec AssessmentRunFilter
readList :: ReadS [AssessmentRunFilter]
$creadList :: ReadS [AssessmentRunFilter]
readsPrec :: Int -> ReadS AssessmentRunFilter
$creadsPrec :: Int -> ReadS AssessmentRunFilter
Prelude.Read, Int -> AssessmentRunFilter -> ShowS
[AssessmentRunFilter] -> ShowS
AssessmentRunFilter -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [AssessmentRunFilter] -> ShowS
$cshowList :: [AssessmentRunFilter] -> ShowS
show :: AssessmentRunFilter -> String
$cshow :: AssessmentRunFilter -> String
showsPrec :: Int -> AssessmentRunFilter -> ShowS
$cshowsPrec :: Int -> AssessmentRunFilter -> ShowS
Prelude.Show, forall x. Rep AssessmentRunFilter x -> AssessmentRunFilter
forall x. AssessmentRunFilter -> Rep AssessmentRunFilter x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep AssessmentRunFilter x -> AssessmentRunFilter
$cfrom :: forall x. AssessmentRunFilter -> Rep AssessmentRunFilter x
Prelude.Generic)

-- |
-- Create a value of 'AssessmentRunFilter' 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:
--
-- 'completionTimeRange', 'assessmentRunFilter_completionTimeRange' - For a record to match a filter, the value that is specified for this
-- data type property must inclusively match any value between the
-- specified minimum and maximum values of the __completedAt__ property of
-- the AssessmentRun data type.
--
-- 'durationRange', 'assessmentRunFilter_durationRange' - For a record to match a filter, the value that is specified for this
-- data type property must inclusively match any value between the
-- specified minimum and maximum values of the __durationInSeconds__
-- property of the AssessmentRun data type.
--
-- 'namePattern', 'assessmentRunFilter_namePattern' - For a record to match a filter, an explicit value or a string containing
-- a wildcard that is specified for this data type property must match the
-- value of the __assessmentRunName__ property of the AssessmentRun data
-- type.
--
-- 'rulesPackageArns', 'assessmentRunFilter_rulesPackageArns' - For a record to match a filter, the value that is specified for this
-- data type property must be contained in the list of values of the
-- __rulesPackages__ property of the AssessmentRun data type.
--
-- 'startTimeRange', 'assessmentRunFilter_startTimeRange' - For a record to match a filter, the value that is specified for this
-- data type property must inclusively match any value between the
-- specified minimum and maximum values of the __startTime__ property of
-- the AssessmentRun data type.
--
-- 'stateChangeTimeRange', 'assessmentRunFilter_stateChangeTimeRange' - For a record to match a filter, the value that is specified for this
-- data type property must match the __stateChangedAt__ property of the
-- AssessmentRun data type.
--
-- 'states', 'assessmentRunFilter_states' - For a record to match a filter, one of the values specified for this
-- data type property must be the exact match of the value of the
-- __assessmentRunState__ property of the AssessmentRun data type.
newAssessmentRunFilter ::
  AssessmentRunFilter
newAssessmentRunFilter :: AssessmentRunFilter
newAssessmentRunFilter =
  AssessmentRunFilter'
    { $sel:completionTimeRange:AssessmentRunFilter' :: Maybe TimestampRange
completionTimeRange =
        forall a. Maybe a
Prelude.Nothing,
      $sel:durationRange:AssessmentRunFilter' :: Maybe DurationRange
durationRange = forall a. Maybe a
Prelude.Nothing,
      $sel:namePattern:AssessmentRunFilter' :: Maybe Text
namePattern = forall a. Maybe a
Prelude.Nothing,
      $sel:rulesPackageArns:AssessmentRunFilter' :: Maybe [Text]
rulesPackageArns = forall a. Maybe a
Prelude.Nothing,
      $sel:startTimeRange:AssessmentRunFilter' :: Maybe TimestampRange
startTimeRange = forall a. Maybe a
Prelude.Nothing,
      $sel:stateChangeTimeRange:AssessmentRunFilter' :: Maybe TimestampRange
stateChangeTimeRange = forall a. Maybe a
Prelude.Nothing,
      $sel:states:AssessmentRunFilter' :: Maybe [AssessmentRunState]
states = forall a. Maybe a
Prelude.Nothing
    }

-- | For a record to match a filter, the value that is specified for this
-- data type property must inclusively match any value between the
-- specified minimum and maximum values of the __completedAt__ property of
-- the AssessmentRun data type.
assessmentRunFilter_completionTimeRange :: Lens.Lens' AssessmentRunFilter (Prelude.Maybe TimestampRange)
assessmentRunFilter_completionTimeRange :: Lens' AssessmentRunFilter (Maybe TimestampRange)
assessmentRunFilter_completionTimeRange = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AssessmentRunFilter' {Maybe TimestampRange
completionTimeRange :: Maybe TimestampRange
$sel:completionTimeRange:AssessmentRunFilter' :: AssessmentRunFilter -> Maybe TimestampRange
completionTimeRange} -> Maybe TimestampRange
completionTimeRange) (\s :: AssessmentRunFilter
s@AssessmentRunFilter' {} Maybe TimestampRange
a -> AssessmentRunFilter
s {$sel:completionTimeRange:AssessmentRunFilter' :: Maybe TimestampRange
completionTimeRange = Maybe TimestampRange
a} :: AssessmentRunFilter)

-- | For a record to match a filter, the value that is specified for this
-- data type property must inclusively match any value between the
-- specified minimum and maximum values of the __durationInSeconds__
-- property of the AssessmentRun data type.
assessmentRunFilter_durationRange :: Lens.Lens' AssessmentRunFilter (Prelude.Maybe DurationRange)
assessmentRunFilter_durationRange :: Lens' AssessmentRunFilter (Maybe DurationRange)
assessmentRunFilter_durationRange = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AssessmentRunFilter' {Maybe DurationRange
durationRange :: Maybe DurationRange
$sel:durationRange:AssessmentRunFilter' :: AssessmentRunFilter -> Maybe DurationRange
durationRange} -> Maybe DurationRange
durationRange) (\s :: AssessmentRunFilter
s@AssessmentRunFilter' {} Maybe DurationRange
a -> AssessmentRunFilter
s {$sel:durationRange:AssessmentRunFilter' :: Maybe DurationRange
durationRange = Maybe DurationRange
a} :: AssessmentRunFilter)

-- | For a record to match a filter, an explicit value or a string containing
-- a wildcard that is specified for this data type property must match the
-- value of the __assessmentRunName__ property of the AssessmentRun data
-- type.
assessmentRunFilter_namePattern :: Lens.Lens' AssessmentRunFilter (Prelude.Maybe Prelude.Text)
assessmentRunFilter_namePattern :: Lens' AssessmentRunFilter (Maybe Text)
assessmentRunFilter_namePattern = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AssessmentRunFilter' {Maybe Text
namePattern :: Maybe Text
$sel:namePattern:AssessmentRunFilter' :: AssessmentRunFilter -> Maybe Text
namePattern} -> Maybe Text
namePattern) (\s :: AssessmentRunFilter
s@AssessmentRunFilter' {} Maybe Text
a -> AssessmentRunFilter
s {$sel:namePattern:AssessmentRunFilter' :: Maybe Text
namePattern = Maybe Text
a} :: AssessmentRunFilter)

-- | For a record to match a filter, the value that is specified for this
-- data type property must be contained in the list of values of the
-- __rulesPackages__ property of the AssessmentRun data type.
assessmentRunFilter_rulesPackageArns :: Lens.Lens' AssessmentRunFilter (Prelude.Maybe [Prelude.Text])
assessmentRunFilter_rulesPackageArns :: Lens' AssessmentRunFilter (Maybe [Text])
assessmentRunFilter_rulesPackageArns = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AssessmentRunFilter' {Maybe [Text]
rulesPackageArns :: Maybe [Text]
$sel:rulesPackageArns:AssessmentRunFilter' :: AssessmentRunFilter -> Maybe [Text]
rulesPackageArns} -> Maybe [Text]
rulesPackageArns) (\s :: AssessmentRunFilter
s@AssessmentRunFilter' {} Maybe [Text]
a -> AssessmentRunFilter
s {$sel:rulesPackageArns:AssessmentRunFilter' :: Maybe [Text]
rulesPackageArns = Maybe [Text]
a} :: AssessmentRunFilter) 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

-- | For a record to match a filter, the value that is specified for this
-- data type property must inclusively match any value between the
-- specified minimum and maximum values of the __startTime__ property of
-- the AssessmentRun data type.
assessmentRunFilter_startTimeRange :: Lens.Lens' AssessmentRunFilter (Prelude.Maybe TimestampRange)
assessmentRunFilter_startTimeRange :: Lens' AssessmentRunFilter (Maybe TimestampRange)
assessmentRunFilter_startTimeRange = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AssessmentRunFilter' {Maybe TimestampRange
startTimeRange :: Maybe TimestampRange
$sel:startTimeRange:AssessmentRunFilter' :: AssessmentRunFilter -> Maybe TimestampRange
startTimeRange} -> Maybe TimestampRange
startTimeRange) (\s :: AssessmentRunFilter
s@AssessmentRunFilter' {} Maybe TimestampRange
a -> AssessmentRunFilter
s {$sel:startTimeRange:AssessmentRunFilter' :: Maybe TimestampRange
startTimeRange = Maybe TimestampRange
a} :: AssessmentRunFilter)

-- | For a record to match a filter, the value that is specified for this
-- data type property must match the __stateChangedAt__ property of the
-- AssessmentRun data type.
assessmentRunFilter_stateChangeTimeRange :: Lens.Lens' AssessmentRunFilter (Prelude.Maybe TimestampRange)
assessmentRunFilter_stateChangeTimeRange :: Lens' AssessmentRunFilter (Maybe TimestampRange)
assessmentRunFilter_stateChangeTimeRange = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AssessmentRunFilter' {Maybe TimestampRange
stateChangeTimeRange :: Maybe TimestampRange
$sel:stateChangeTimeRange:AssessmentRunFilter' :: AssessmentRunFilter -> Maybe TimestampRange
stateChangeTimeRange} -> Maybe TimestampRange
stateChangeTimeRange) (\s :: AssessmentRunFilter
s@AssessmentRunFilter' {} Maybe TimestampRange
a -> AssessmentRunFilter
s {$sel:stateChangeTimeRange:AssessmentRunFilter' :: Maybe TimestampRange
stateChangeTimeRange = Maybe TimestampRange
a} :: AssessmentRunFilter)

-- | For a record to match a filter, one of the values specified for this
-- data type property must be the exact match of the value of the
-- __assessmentRunState__ property of the AssessmentRun data type.
assessmentRunFilter_states :: Lens.Lens' AssessmentRunFilter (Prelude.Maybe [AssessmentRunState])
assessmentRunFilter_states :: Lens' AssessmentRunFilter (Maybe [AssessmentRunState])
assessmentRunFilter_states = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AssessmentRunFilter' {Maybe [AssessmentRunState]
states :: Maybe [AssessmentRunState]
$sel:states:AssessmentRunFilter' :: AssessmentRunFilter -> Maybe [AssessmentRunState]
states} -> Maybe [AssessmentRunState]
states) (\s :: AssessmentRunFilter
s@AssessmentRunFilter' {} Maybe [AssessmentRunState]
a -> AssessmentRunFilter
s {$sel:states:AssessmentRunFilter' :: Maybe [AssessmentRunState]
states = Maybe [AssessmentRunState]
a} :: AssessmentRunFilter) 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

instance Prelude.Hashable AssessmentRunFilter where
  hashWithSalt :: Int -> AssessmentRunFilter -> Int
hashWithSalt Int
_salt AssessmentRunFilter' {Maybe [Text]
Maybe [AssessmentRunState]
Maybe Text
Maybe DurationRange
Maybe TimestampRange
states :: Maybe [AssessmentRunState]
stateChangeTimeRange :: Maybe TimestampRange
startTimeRange :: Maybe TimestampRange
rulesPackageArns :: Maybe [Text]
namePattern :: Maybe Text
durationRange :: Maybe DurationRange
completionTimeRange :: Maybe TimestampRange
$sel:states:AssessmentRunFilter' :: AssessmentRunFilter -> Maybe [AssessmentRunState]
$sel:stateChangeTimeRange:AssessmentRunFilter' :: AssessmentRunFilter -> Maybe TimestampRange
$sel:startTimeRange:AssessmentRunFilter' :: AssessmentRunFilter -> Maybe TimestampRange
$sel:rulesPackageArns:AssessmentRunFilter' :: AssessmentRunFilter -> Maybe [Text]
$sel:namePattern:AssessmentRunFilter' :: AssessmentRunFilter -> Maybe Text
$sel:durationRange:AssessmentRunFilter' :: AssessmentRunFilter -> Maybe DurationRange
$sel:completionTimeRange:AssessmentRunFilter' :: AssessmentRunFilter -> Maybe TimestampRange
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe TimestampRange
completionTimeRange
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe DurationRange
durationRange
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
namePattern
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Text]
rulesPackageArns
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe TimestampRange
startTimeRange
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe TimestampRange
stateChangeTimeRange
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [AssessmentRunState]
states

instance Prelude.NFData AssessmentRunFilter where
  rnf :: AssessmentRunFilter -> ()
rnf AssessmentRunFilter' {Maybe [Text]
Maybe [AssessmentRunState]
Maybe Text
Maybe DurationRange
Maybe TimestampRange
states :: Maybe [AssessmentRunState]
stateChangeTimeRange :: Maybe TimestampRange
startTimeRange :: Maybe TimestampRange
rulesPackageArns :: Maybe [Text]
namePattern :: Maybe Text
durationRange :: Maybe DurationRange
completionTimeRange :: Maybe TimestampRange
$sel:states:AssessmentRunFilter' :: AssessmentRunFilter -> Maybe [AssessmentRunState]
$sel:stateChangeTimeRange:AssessmentRunFilter' :: AssessmentRunFilter -> Maybe TimestampRange
$sel:startTimeRange:AssessmentRunFilter' :: AssessmentRunFilter -> Maybe TimestampRange
$sel:rulesPackageArns:AssessmentRunFilter' :: AssessmentRunFilter -> Maybe [Text]
$sel:namePattern:AssessmentRunFilter' :: AssessmentRunFilter -> Maybe Text
$sel:durationRange:AssessmentRunFilter' :: AssessmentRunFilter -> Maybe DurationRange
$sel:completionTimeRange:AssessmentRunFilter' :: AssessmentRunFilter -> Maybe TimestampRange
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe TimestampRange
completionTimeRange
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe DurationRange
durationRange
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
namePattern
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Text]
rulesPackageArns
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe TimestampRange
startTimeRange
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe TimestampRange
stateChangeTimeRange
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [AssessmentRunState]
states

instance Data.ToJSON AssessmentRunFilter where
  toJSON :: AssessmentRunFilter -> Value
toJSON AssessmentRunFilter' {Maybe [Text]
Maybe [AssessmentRunState]
Maybe Text
Maybe DurationRange
Maybe TimestampRange
states :: Maybe [AssessmentRunState]
stateChangeTimeRange :: Maybe TimestampRange
startTimeRange :: Maybe TimestampRange
rulesPackageArns :: Maybe [Text]
namePattern :: Maybe Text
durationRange :: Maybe DurationRange
completionTimeRange :: Maybe TimestampRange
$sel:states:AssessmentRunFilter' :: AssessmentRunFilter -> Maybe [AssessmentRunState]
$sel:stateChangeTimeRange:AssessmentRunFilter' :: AssessmentRunFilter -> Maybe TimestampRange
$sel:startTimeRange:AssessmentRunFilter' :: AssessmentRunFilter -> Maybe TimestampRange
$sel:rulesPackageArns:AssessmentRunFilter' :: AssessmentRunFilter -> Maybe [Text]
$sel:namePattern:AssessmentRunFilter' :: AssessmentRunFilter -> Maybe Text
$sel:durationRange:AssessmentRunFilter' :: AssessmentRunFilter -> Maybe DurationRange
$sel:completionTimeRange:AssessmentRunFilter' :: AssessmentRunFilter -> Maybe TimestampRange
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"completionTimeRange" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe TimestampRange
completionTimeRange,
            (Key
"durationRange" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe DurationRange
durationRange,
            (Key
"namePattern" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
namePattern,
            (Key
"rulesPackageArns" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [Text]
rulesPackageArns,
            (Key
"startTimeRange" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe TimestampRange
startTimeRange,
            (Key
"stateChangeTimeRange" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe TimestampRange
stateChangeTimeRange,
            (Key
"states" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [AssessmentRunState]
states
          ]
      )