{-# 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.Inspector2.Types.CoverageFilterCriteria
-- 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.Inspector2.Types.CoverageFilterCriteria where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.Inspector2.Types.CoverageMapFilter
import Amazonka.Inspector2.Types.CoverageStringFilter
import qualified Amazonka.Prelude as Prelude

-- | A structure that identifies filter criteria for @GetCoverageStatistics@.
--
-- /See:/ 'newCoverageFilterCriteria' smart constructor.
data CoverageFilterCriteria = CoverageFilterCriteria'
  { -- | An array of Amazon Web Services account IDs to return coverage
    -- statistics for.
    CoverageFilterCriteria -> Maybe (NonEmpty CoverageStringFilter)
accountId :: Prelude.Maybe (Prelude.NonEmpty CoverageStringFilter),
    -- | The Amazon EC2 instance tags to filter on.
    CoverageFilterCriteria -> Maybe (NonEmpty CoverageMapFilter)
ec2InstanceTags :: Prelude.Maybe (Prelude.NonEmpty CoverageMapFilter),
    -- | The Amazon ECR image tags to filter on.
    CoverageFilterCriteria -> Maybe (NonEmpty CoverageStringFilter)
ecrImageTags :: Prelude.Maybe (Prelude.NonEmpty CoverageStringFilter),
    -- | The Amazon ECR repository name to filter on.
    CoverageFilterCriteria -> Maybe (NonEmpty CoverageStringFilter)
ecrRepositoryName :: Prelude.Maybe (Prelude.NonEmpty CoverageStringFilter),
    -- | Returns coverage statistics for AWS Lambda functions filtered by
    -- function names.
    CoverageFilterCriteria -> Maybe (NonEmpty CoverageStringFilter)
lambdaFunctionName :: Prelude.Maybe (Prelude.NonEmpty CoverageStringFilter),
    -- | Returns coverage statistics for AWS Lambda functions filtered by
    -- runtime.
    CoverageFilterCriteria -> Maybe (NonEmpty CoverageStringFilter)
lambdaFunctionRuntime :: Prelude.Maybe (Prelude.NonEmpty CoverageStringFilter),
    -- | Returns coverage statistics for AWS Lambda functions filtered by tag.
    CoverageFilterCriteria -> Maybe (NonEmpty CoverageMapFilter)
lambdaFunctionTags :: Prelude.Maybe (Prelude.NonEmpty CoverageMapFilter),
    -- | An array of Amazon Web Services resource IDs to return coverage
    -- statistics for.
    CoverageFilterCriteria -> Maybe (NonEmpty CoverageStringFilter)
resourceId :: Prelude.Maybe (Prelude.NonEmpty CoverageStringFilter),
    -- | An array of Amazon Web Services resource types to return coverage
    -- statistics for. The values can be @AWS_EC2_INSTANCE@ or
    -- @AWS_ECR_REPOSITORY@.
    CoverageFilterCriteria -> Maybe (NonEmpty CoverageStringFilter)
resourceType :: Prelude.Maybe (Prelude.NonEmpty CoverageStringFilter),
    -- | The scan status code to filter on.
    CoverageFilterCriteria -> Maybe (NonEmpty CoverageStringFilter)
scanStatusCode :: Prelude.Maybe (Prelude.NonEmpty CoverageStringFilter),
    -- | The scan status reason to filter on.
    CoverageFilterCriteria -> Maybe (NonEmpty CoverageStringFilter)
scanStatusReason :: Prelude.Maybe (Prelude.NonEmpty CoverageStringFilter),
    -- | An array of Amazon Inspector scan types to return coverage statistics
    -- for.
    CoverageFilterCriteria -> Maybe (NonEmpty CoverageStringFilter)
scanType :: Prelude.Maybe (Prelude.NonEmpty CoverageStringFilter)
  }
  deriving (CoverageFilterCriteria -> CoverageFilterCriteria -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CoverageFilterCriteria -> CoverageFilterCriteria -> Bool
$c/= :: CoverageFilterCriteria -> CoverageFilterCriteria -> Bool
== :: CoverageFilterCriteria -> CoverageFilterCriteria -> Bool
$c== :: CoverageFilterCriteria -> CoverageFilterCriteria -> Bool
Prelude.Eq, ReadPrec [CoverageFilterCriteria]
ReadPrec CoverageFilterCriteria
Int -> ReadS CoverageFilterCriteria
ReadS [CoverageFilterCriteria]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CoverageFilterCriteria]
$creadListPrec :: ReadPrec [CoverageFilterCriteria]
readPrec :: ReadPrec CoverageFilterCriteria
$creadPrec :: ReadPrec CoverageFilterCriteria
readList :: ReadS [CoverageFilterCriteria]
$creadList :: ReadS [CoverageFilterCriteria]
readsPrec :: Int -> ReadS CoverageFilterCriteria
$creadsPrec :: Int -> ReadS CoverageFilterCriteria
Prelude.Read, Int -> CoverageFilterCriteria -> ShowS
[CoverageFilterCriteria] -> ShowS
CoverageFilterCriteria -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CoverageFilterCriteria] -> ShowS
$cshowList :: [CoverageFilterCriteria] -> ShowS
show :: CoverageFilterCriteria -> String
$cshow :: CoverageFilterCriteria -> String
showsPrec :: Int -> CoverageFilterCriteria -> ShowS
$cshowsPrec :: Int -> CoverageFilterCriteria -> ShowS
Prelude.Show, forall x. Rep CoverageFilterCriteria x -> CoverageFilterCriteria
forall x. CoverageFilterCriteria -> Rep CoverageFilterCriteria x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep CoverageFilterCriteria x -> CoverageFilterCriteria
$cfrom :: forall x. CoverageFilterCriteria -> Rep CoverageFilterCriteria x
Prelude.Generic)

-- |
-- Create a value of 'CoverageFilterCriteria' 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:
--
-- 'accountId', 'coverageFilterCriteria_accountId' - An array of Amazon Web Services account IDs to return coverage
-- statistics for.
--
-- 'ec2InstanceTags', 'coverageFilterCriteria_ec2InstanceTags' - The Amazon EC2 instance tags to filter on.
--
-- 'ecrImageTags', 'coverageFilterCriteria_ecrImageTags' - The Amazon ECR image tags to filter on.
--
-- 'ecrRepositoryName', 'coverageFilterCriteria_ecrRepositoryName' - The Amazon ECR repository name to filter on.
--
-- 'lambdaFunctionName', 'coverageFilterCriteria_lambdaFunctionName' - Returns coverage statistics for AWS Lambda functions filtered by
-- function names.
--
-- 'lambdaFunctionRuntime', 'coverageFilterCriteria_lambdaFunctionRuntime' - Returns coverage statistics for AWS Lambda functions filtered by
-- runtime.
--
-- 'lambdaFunctionTags', 'coverageFilterCriteria_lambdaFunctionTags' - Returns coverage statistics for AWS Lambda functions filtered by tag.
--
-- 'resourceId', 'coverageFilterCriteria_resourceId' - An array of Amazon Web Services resource IDs to return coverage
-- statistics for.
--
-- 'resourceType', 'coverageFilterCriteria_resourceType' - An array of Amazon Web Services resource types to return coverage
-- statistics for. The values can be @AWS_EC2_INSTANCE@ or
-- @AWS_ECR_REPOSITORY@.
--
-- 'scanStatusCode', 'coverageFilterCriteria_scanStatusCode' - The scan status code to filter on.
--
-- 'scanStatusReason', 'coverageFilterCriteria_scanStatusReason' - The scan status reason to filter on.
--
-- 'scanType', 'coverageFilterCriteria_scanType' - An array of Amazon Inspector scan types to return coverage statistics
-- for.
newCoverageFilterCriteria ::
  CoverageFilterCriteria
newCoverageFilterCriteria :: CoverageFilterCriteria
newCoverageFilterCriteria =
  CoverageFilterCriteria'
    { $sel:accountId:CoverageFilterCriteria' :: Maybe (NonEmpty CoverageStringFilter)
accountId =
        forall a. Maybe a
Prelude.Nothing,
      $sel:ec2InstanceTags:CoverageFilterCriteria' :: Maybe (NonEmpty CoverageMapFilter)
ec2InstanceTags = forall a. Maybe a
Prelude.Nothing,
      $sel:ecrImageTags:CoverageFilterCriteria' :: Maybe (NonEmpty CoverageStringFilter)
ecrImageTags = forall a. Maybe a
Prelude.Nothing,
      $sel:ecrRepositoryName:CoverageFilterCriteria' :: Maybe (NonEmpty CoverageStringFilter)
ecrRepositoryName = forall a. Maybe a
Prelude.Nothing,
      $sel:lambdaFunctionName:CoverageFilterCriteria' :: Maybe (NonEmpty CoverageStringFilter)
lambdaFunctionName = forall a. Maybe a
Prelude.Nothing,
      $sel:lambdaFunctionRuntime:CoverageFilterCriteria' :: Maybe (NonEmpty CoverageStringFilter)
lambdaFunctionRuntime = forall a. Maybe a
Prelude.Nothing,
      $sel:lambdaFunctionTags:CoverageFilterCriteria' :: Maybe (NonEmpty CoverageMapFilter)
lambdaFunctionTags = forall a. Maybe a
Prelude.Nothing,
      $sel:resourceId:CoverageFilterCriteria' :: Maybe (NonEmpty CoverageStringFilter)
resourceId = forall a. Maybe a
Prelude.Nothing,
      $sel:resourceType:CoverageFilterCriteria' :: Maybe (NonEmpty CoverageStringFilter)
resourceType = forall a. Maybe a
Prelude.Nothing,
      $sel:scanStatusCode:CoverageFilterCriteria' :: Maybe (NonEmpty CoverageStringFilter)
scanStatusCode = forall a. Maybe a
Prelude.Nothing,
      $sel:scanStatusReason:CoverageFilterCriteria' :: Maybe (NonEmpty CoverageStringFilter)
scanStatusReason = forall a. Maybe a
Prelude.Nothing,
      $sel:scanType:CoverageFilterCriteria' :: Maybe (NonEmpty CoverageStringFilter)
scanType = forall a. Maybe a
Prelude.Nothing
    }

-- | An array of Amazon Web Services account IDs to return coverage
-- statistics for.
coverageFilterCriteria_accountId :: Lens.Lens' CoverageFilterCriteria (Prelude.Maybe (Prelude.NonEmpty CoverageStringFilter))
coverageFilterCriteria_accountId :: Lens'
  CoverageFilterCriteria (Maybe (NonEmpty CoverageStringFilter))
coverageFilterCriteria_accountId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CoverageFilterCriteria' {Maybe (NonEmpty CoverageStringFilter)
accountId :: Maybe (NonEmpty CoverageStringFilter)
$sel:accountId:CoverageFilterCriteria' :: CoverageFilterCriteria -> Maybe (NonEmpty CoverageStringFilter)
accountId} -> Maybe (NonEmpty CoverageStringFilter)
accountId) (\s :: CoverageFilterCriteria
s@CoverageFilterCriteria' {} Maybe (NonEmpty CoverageStringFilter)
a -> CoverageFilterCriteria
s {$sel:accountId:CoverageFilterCriteria' :: Maybe (NonEmpty CoverageStringFilter)
accountId = Maybe (NonEmpty CoverageStringFilter)
a} :: CoverageFilterCriteria) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The Amazon EC2 instance tags to filter on.
coverageFilterCriteria_ec2InstanceTags :: Lens.Lens' CoverageFilterCriteria (Prelude.Maybe (Prelude.NonEmpty CoverageMapFilter))
coverageFilterCriteria_ec2InstanceTags :: Lens' CoverageFilterCriteria (Maybe (NonEmpty CoverageMapFilter))
coverageFilterCriteria_ec2InstanceTags = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CoverageFilterCriteria' {Maybe (NonEmpty CoverageMapFilter)
ec2InstanceTags :: Maybe (NonEmpty CoverageMapFilter)
$sel:ec2InstanceTags:CoverageFilterCriteria' :: CoverageFilterCriteria -> Maybe (NonEmpty CoverageMapFilter)
ec2InstanceTags} -> Maybe (NonEmpty CoverageMapFilter)
ec2InstanceTags) (\s :: CoverageFilterCriteria
s@CoverageFilterCriteria' {} Maybe (NonEmpty CoverageMapFilter)
a -> CoverageFilterCriteria
s {$sel:ec2InstanceTags:CoverageFilterCriteria' :: Maybe (NonEmpty CoverageMapFilter)
ec2InstanceTags = Maybe (NonEmpty CoverageMapFilter)
a} :: CoverageFilterCriteria) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The Amazon ECR image tags to filter on.
coverageFilterCriteria_ecrImageTags :: Lens.Lens' CoverageFilterCriteria (Prelude.Maybe (Prelude.NonEmpty CoverageStringFilter))
coverageFilterCriteria_ecrImageTags :: Lens'
  CoverageFilterCriteria (Maybe (NonEmpty CoverageStringFilter))
coverageFilterCriteria_ecrImageTags = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CoverageFilterCriteria' {Maybe (NonEmpty CoverageStringFilter)
ecrImageTags :: Maybe (NonEmpty CoverageStringFilter)
$sel:ecrImageTags:CoverageFilterCriteria' :: CoverageFilterCriteria -> Maybe (NonEmpty CoverageStringFilter)
ecrImageTags} -> Maybe (NonEmpty CoverageStringFilter)
ecrImageTags) (\s :: CoverageFilterCriteria
s@CoverageFilterCriteria' {} Maybe (NonEmpty CoverageStringFilter)
a -> CoverageFilterCriteria
s {$sel:ecrImageTags:CoverageFilterCriteria' :: Maybe (NonEmpty CoverageStringFilter)
ecrImageTags = Maybe (NonEmpty CoverageStringFilter)
a} :: CoverageFilterCriteria) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The Amazon ECR repository name to filter on.
coverageFilterCriteria_ecrRepositoryName :: Lens.Lens' CoverageFilterCriteria (Prelude.Maybe (Prelude.NonEmpty CoverageStringFilter))
coverageFilterCriteria_ecrRepositoryName :: Lens'
  CoverageFilterCriteria (Maybe (NonEmpty CoverageStringFilter))
coverageFilterCriteria_ecrRepositoryName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CoverageFilterCriteria' {Maybe (NonEmpty CoverageStringFilter)
ecrRepositoryName :: Maybe (NonEmpty CoverageStringFilter)
$sel:ecrRepositoryName:CoverageFilterCriteria' :: CoverageFilterCriteria -> Maybe (NonEmpty CoverageStringFilter)
ecrRepositoryName} -> Maybe (NonEmpty CoverageStringFilter)
ecrRepositoryName) (\s :: CoverageFilterCriteria
s@CoverageFilterCriteria' {} Maybe (NonEmpty CoverageStringFilter)
a -> CoverageFilterCriteria
s {$sel:ecrRepositoryName:CoverageFilterCriteria' :: Maybe (NonEmpty CoverageStringFilter)
ecrRepositoryName = Maybe (NonEmpty CoverageStringFilter)
a} :: CoverageFilterCriteria) 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

-- | Returns coverage statistics for AWS Lambda functions filtered by
-- function names.
coverageFilterCriteria_lambdaFunctionName :: Lens.Lens' CoverageFilterCriteria (Prelude.Maybe (Prelude.NonEmpty CoverageStringFilter))
coverageFilterCriteria_lambdaFunctionName :: Lens'
  CoverageFilterCriteria (Maybe (NonEmpty CoverageStringFilter))
coverageFilterCriteria_lambdaFunctionName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CoverageFilterCriteria' {Maybe (NonEmpty CoverageStringFilter)
lambdaFunctionName :: Maybe (NonEmpty CoverageStringFilter)
$sel:lambdaFunctionName:CoverageFilterCriteria' :: CoverageFilterCriteria -> Maybe (NonEmpty CoverageStringFilter)
lambdaFunctionName} -> Maybe (NonEmpty CoverageStringFilter)
lambdaFunctionName) (\s :: CoverageFilterCriteria
s@CoverageFilterCriteria' {} Maybe (NonEmpty CoverageStringFilter)
a -> CoverageFilterCriteria
s {$sel:lambdaFunctionName:CoverageFilterCriteria' :: Maybe (NonEmpty CoverageStringFilter)
lambdaFunctionName = Maybe (NonEmpty CoverageStringFilter)
a} :: CoverageFilterCriteria) 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

-- | Returns coverage statistics for AWS Lambda functions filtered by
-- runtime.
coverageFilterCriteria_lambdaFunctionRuntime :: Lens.Lens' CoverageFilterCriteria (Prelude.Maybe (Prelude.NonEmpty CoverageStringFilter))
coverageFilterCriteria_lambdaFunctionRuntime :: Lens'
  CoverageFilterCriteria (Maybe (NonEmpty CoverageStringFilter))
coverageFilterCriteria_lambdaFunctionRuntime = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CoverageFilterCriteria' {Maybe (NonEmpty CoverageStringFilter)
lambdaFunctionRuntime :: Maybe (NonEmpty CoverageStringFilter)
$sel:lambdaFunctionRuntime:CoverageFilterCriteria' :: CoverageFilterCriteria -> Maybe (NonEmpty CoverageStringFilter)
lambdaFunctionRuntime} -> Maybe (NonEmpty CoverageStringFilter)
lambdaFunctionRuntime) (\s :: CoverageFilterCriteria
s@CoverageFilterCriteria' {} Maybe (NonEmpty CoverageStringFilter)
a -> CoverageFilterCriteria
s {$sel:lambdaFunctionRuntime:CoverageFilterCriteria' :: Maybe (NonEmpty CoverageStringFilter)
lambdaFunctionRuntime = Maybe (NonEmpty CoverageStringFilter)
a} :: CoverageFilterCriteria) 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

-- | Returns coverage statistics for AWS Lambda functions filtered by tag.
coverageFilterCriteria_lambdaFunctionTags :: Lens.Lens' CoverageFilterCriteria (Prelude.Maybe (Prelude.NonEmpty CoverageMapFilter))
coverageFilterCriteria_lambdaFunctionTags :: Lens' CoverageFilterCriteria (Maybe (NonEmpty CoverageMapFilter))
coverageFilterCriteria_lambdaFunctionTags = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CoverageFilterCriteria' {Maybe (NonEmpty CoverageMapFilter)
lambdaFunctionTags :: Maybe (NonEmpty CoverageMapFilter)
$sel:lambdaFunctionTags:CoverageFilterCriteria' :: CoverageFilterCriteria -> Maybe (NonEmpty CoverageMapFilter)
lambdaFunctionTags} -> Maybe (NonEmpty CoverageMapFilter)
lambdaFunctionTags) (\s :: CoverageFilterCriteria
s@CoverageFilterCriteria' {} Maybe (NonEmpty CoverageMapFilter)
a -> CoverageFilterCriteria
s {$sel:lambdaFunctionTags:CoverageFilterCriteria' :: Maybe (NonEmpty CoverageMapFilter)
lambdaFunctionTags = Maybe (NonEmpty CoverageMapFilter)
a} :: CoverageFilterCriteria) 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

-- | An array of Amazon Web Services resource IDs to return coverage
-- statistics for.
coverageFilterCriteria_resourceId :: Lens.Lens' CoverageFilterCriteria (Prelude.Maybe (Prelude.NonEmpty CoverageStringFilter))
coverageFilterCriteria_resourceId :: Lens'
  CoverageFilterCriteria (Maybe (NonEmpty CoverageStringFilter))
coverageFilterCriteria_resourceId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CoverageFilterCriteria' {Maybe (NonEmpty CoverageStringFilter)
resourceId :: Maybe (NonEmpty CoverageStringFilter)
$sel:resourceId:CoverageFilterCriteria' :: CoverageFilterCriteria -> Maybe (NonEmpty CoverageStringFilter)
resourceId} -> Maybe (NonEmpty CoverageStringFilter)
resourceId) (\s :: CoverageFilterCriteria
s@CoverageFilterCriteria' {} Maybe (NonEmpty CoverageStringFilter)
a -> CoverageFilterCriteria
s {$sel:resourceId:CoverageFilterCriteria' :: Maybe (NonEmpty CoverageStringFilter)
resourceId = Maybe (NonEmpty CoverageStringFilter)
a} :: CoverageFilterCriteria) 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

-- | An array of Amazon Web Services resource types to return coverage
-- statistics for. The values can be @AWS_EC2_INSTANCE@ or
-- @AWS_ECR_REPOSITORY@.
coverageFilterCriteria_resourceType :: Lens.Lens' CoverageFilterCriteria (Prelude.Maybe (Prelude.NonEmpty CoverageStringFilter))
coverageFilterCriteria_resourceType :: Lens'
  CoverageFilterCriteria (Maybe (NonEmpty CoverageStringFilter))
coverageFilterCriteria_resourceType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CoverageFilterCriteria' {Maybe (NonEmpty CoverageStringFilter)
resourceType :: Maybe (NonEmpty CoverageStringFilter)
$sel:resourceType:CoverageFilterCriteria' :: CoverageFilterCriteria -> Maybe (NonEmpty CoverageStringFilter)
resourceType} -> Maybe (NonEmpty CoverageStringFilter)
resourceType) (\s :: CoverageFilterCriteria
s@CoverageFilterCriteria' {} Maybe (NonEmpty CoverageStringFilter)
a -> CoverageFilterCriteria
s {$sel:resourceType:CoverageFilterCriteria' :: Maybe (NonEmpty CoverageStringFilter)
resourceType = Maybe (NonEmpty CoverageStringFilter)
a} :: CoverageFilterCriteria) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The scan status code to filter on.
coverageFilterCriteria_scanStatusCode :: Lens.Lens' CoverageFilterCriteria (Prelude.Maybe (Prelude.NonEmpty CoverageStringFilter))
coverageFilterCriteria_scanStatusCode :: Lens'
  CoverageFilterCriteria (Maybe (NonEmpty CoverageStringFilter))
coverageFilterCriteria_scanStatusCode = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CoverageFilterCriteria' {Maybe (NonEmpty CoverageStringFilter)
scanStatusCode :: Maybe (NonEmpty CoverageStringFilter)
$sel:scanStatusCode:CoverageFilterCriteria' :: CoverageFilterCriteria -> Maybe (NonEmpty CoverageStringFilter)
scanStatusCode} -> Maybe (NonEmpty CoverageStringFilter)
scanStatusCode) (\s :: CoverageFilterCriteria
s@CoverageFilterCriteria' {} Maybe (NonEmpty CoverageStringFilter)
a -> CoverageFilterCriteria
s {$sel:scanStatusCode:CoverageFilterCriteria' :: Maybe (NonEmpty CoverageStringFilter)
scanStatusCode = Maybe (NonEmpty CoverageStringFilter)
a} :: CoverageFilterCriteria) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The scan status reason to filter on.
coverageFilterCriteria_scanStatusReason :: Lens.Lens' CoverageFilterCriteria (Prelude.Maybe (Prelude.NonEmpty CoverageStringFilter))
coverageFilterCriteria_scanStatusReason :: Lens'
  CoverageFilterCriteria (Maybe (NonEmpty CoverageStringFilter))
coverageFilterCriteria_scanStatusReason = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CoverageFilterCriteria' {Maybe (NonEmpty CoverageStringFilter)
scanStatusReason :: Maybe (NonEmpty CoverageStringFilter)
$sel:scanStatusReason:CoverageFilterCriteria' :: CoverageFilterCriteria -> Maybe (NonEmpty CoverageStringFilter)
scanStatusReason} -> Maybe (NonEmpty CoverageStringFilter)
scanStatusReason) (\s :: CoverageFilterCriteria
s@CoverageFilterCriteria' {} Maybe (NonEmpty CoverageStringFilter)
a -> CoverageFilterCriteria
s {$sel:scanStatusReason:CoverageFilterCriteria' :: Maybe (NonEmpty CoverageStringFilter)
scanStatusReason = Maybe (NonEmpty CoverageStringFilter)
a} :: CoverageFilterCriteria) 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

-- | An array of Amazon Inspector scan types to return coverage statistics
-- for.
coverageFilterCriteria_scanType :: Lens.Lens' CoverageFilterCriteria (Prelude.Maybe (Prelude.NonEmpty CoverageStringFilter))
coverageFilterCriteria_scanType :: Lens'
  CoverageFilterCriteria (Maybe (NonEmpty CoverageStringFilter))
coverageFilterCriteria_scanType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CoverageFilterCriteria' {Maybe (NonEmpty CoverageStringFilter)
scanType :: Maybe (NonEmpty CoverageStringFilter)
$sel:scanType:CoverageFilterCriteria' :: CoverageFilterCriteria -> Maybe (NonEmpty CoverageStringFilter)
scanType} -> Maybe (NonEmpty CoverageStringFilter)
scanType) (\s :: CoverageFilterCriteria
s@CoverageFilterCriteria' {} Maybe (NonEmpty CoverageStringFilter)
a -> CoverageFilterCriteria
s {$sel:scanType:CoverageFilterCriteria' :: Maybe (NonEmpty CoverageStringFilter)
scanType = Maybe (NonEmpty CoverageStringFilter)
a} :: CoverageFilterCriteria) 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 CoverageFilterCriteria where
  hashWithSalt :: Int -> CoverageFilterCriteria -> Int
hashWithSalt Int
_salt CoverageFilterCriteria' {Maybe (NonEmpty CoverageMapFilter)
Maybe (NonEmpty CoverageStringFilter)
scanType :: Maybe (NonEmpty CoverageStringFilter)
scanStatusReason :: Maybe (NonEmpty CoverageStringFilter)
scanStatusCode :: Maybe (NonEmpty CoverageStringFilter)
resourceType :: Maybe (NonEmpty CoverageStringFilter)
resourceId :: Maybe (NonEmpty CoverageStringFilter)
lambdaFunctionTags :: Maybe (NonEmpty CoverageMapFilter)
lambdaFunctionRuntime :: Maybe (NonEmpty CoverageStringFilter)
lambdaFunctionName :: Maybe (NonEmpty CoverageStringFilter)
ecrRepositoryName :: Maybe (NonEmpty CoverageStringFilter)
ecrImageTags :: Maybe (NonEmpty CoverageStringFilter)
ec2InstanceTags :: Maybe (NonEmpty CoverageMapFilter)
accountId :: Maybe (NonEmpty CoverageStringFilter)
$sel:scanType:CoverageFilterCriteria' :: CoverageFilterCriteria -> Maybe (NonEmpty CoverageStringFilter)
$sel:scanStatusReason:CoverageFilterCriteria' :: CoverageFilterCriteria -> Maybe (NonEmpty CoverageStringFilter)
$sel:scanStatusCode:CoverageFilterCriteria' :: CoverageFilterCriteria -> Maybe (NonEmpty CoverageStringFilter)
$sel:resourceType:CoverageFilterCriteria' :: CoverageFilterCriteria -> Maybe (NonEmpty CoverageStringFilter)
$sel:resourceId:CoverageFilterCriteria' :: CoverageFilterCriteria -> Maybe (NonEmpty CoverageStringFilter)
$sel:lambdaFunctionTags:CoverageFilterCriteria' :: CoverageFilterCriteria -> Maybe (NonEmpty CoverageMapFilter)
$sel:lambdaFunctionRuntime:CoverageFilterCriteria' :: CoverageFilterCriteria -> Maybe (NonEmpty CoverageStringFilter)
$sel:lambdaFunctionName:CoverageFilterCriteria' :: CoverageFilterCriteria -> Maybe (NonEmpty CoverageStringFilter)
$sel:ecrRepositoryName:CoverageFilterCriteria' :: CoverageFilterCriteria -> Maybe (NonEmpty CoverageStringFilter)
$sel:ecrImageTags:CoverageFilterCriteria' :: CoverageFilterCriteria -> Maybe (NonEmpty CoverageStringFilter)
$sel:ec2InstanceTags:CoverageFilterCriteria' :: CoverageFilterCriteria -> Maybe (NonEmpty CoverageMapFilter)
$sel:accountId:CoverageFilterCriteria' :: CoverageFilterCriteria -> Maybe (NonEmpty CoverageStringFilter)
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (NonEmpty CoverageStringFilter)
accountId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (NonEmpty CoverageMapFilter)
ec2InstanceTags
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (NonEmpty CoverageStringFilter)
ecrImageTags
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (NonEmpty CoverageStringFilter)
ecrRepositoryName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (NonEmpty CoverageStringFilter)
lambdaFunctionName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (NonEmpty CoverageStringFilter)
lambdaFunctionRuntime
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (NonEmpty CoverageMapFilter)
lambdaFunctionTags
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (NonEmpty CoverageStringFilter)
resourceId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (NonEmpty CoverageStringFilter)
resourceType
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (NonEmpty CoverageStringFilter)
scanStatusCode
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (NonEmpty CoverageStringFilter)
scanStatusReason
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (NonEmpty CoverageStringFilter)
scanType

instance Prelude.NFData CoverageFilterCriteria where
  rnf :: CoverageFilterCriteria -> ()
rnf CoverageFilterCriteria' {Maybe (NonEmpty CoverageMapFilter)
Maybe (NonEmpty CoverageStringFilter)
scanType :: Maybe (NonEmpty CoverageStringFilter)
scanStatusReason :: Maybe (NonEmpty CoverageStringFilter)
scanStatusCode :: Maybe (NonEmpty CoverageStringFilter)
resourceType :: Maybe (NonEmpty CoverageStringFilter)
resourceId :: Maybe (NonEmpty CoverageStringFilter)
lambdaFunctionTags :: Maybe (NonEmpty CoverageMapFilter)
lambdaFunctionRuntime :: Maybe (NonEmpty CoverageStringFilter)
lambdaFunctionName :: Maybe (NonEmpty CoverageStringFilter)
ecrRepositoryName :: Maybe (NonEmpty CoverageStringFilter)
ecrImageTags :: Maybe (NonEmpty CoverageStringFilter)
ec2InstanceTags :: Maybe (NonEmpty CoverageMapFilter)
accountId :: Maybe (NonEmpty CoverageStringFilter)
$sel:scanType:CoverageFilterCriteria' :: CoverageFilterCriteria -> Maybe (NonEmpty CoverageStringFilter)
$sel:scanStatusReason:CoverageFilterCriteria' :: CoverageFilterCriteria -> Maybe (NonEmpty CoverageStringFilter)
$sel:scanStatusCode:CoverageFilterCriteria' :: CoverageFilterCriteria -> Maybe (NonEmpty CoverageStringFilter)
$sel:resourceType:CoverageFilterCriteria' :: CoverageFilterCriteria -> Maybe (NonEmpty CoverageStringFilter)
$sel:resourceId:CoverageFilterCriteria' :: CoverageFilterCriteria -> Maybe (NonEmpty CoverageStringFilter)
$sel:lambdaFunctionTags:CoverageFilterCriteria' :: CoverageFilterCriteria -> Maybe (NonEmpty CoverageMapFilter)
$sel:lambdaFunctionRuntime:CoverageFilterCriteria' :: CoverageFilterCriteria -> Maybe (NonEmpty CoverageStringFilter)
$sel:lambdaFunctionName:CoverageFilterCriteria' :: CoverageFilterCriteria -> Maybe (NonEmpty CoverageStringFilter)
$sel:ecrRepositoryName:CoverageFilterCriteria' :: CoverageFilterCriteria -> Maybe (NonEmpty CoverageStringFilter)
$sel:ecrImageTags:CoverageFilterCriteria' :: CoverageFilterCriteria -> Maybe (NonEmpty CoverageStringFilter)
$sel:ec2InstanceTags:CoverageFilterCriteria' :: CoverageFilterCriteria -> Maybe (NonEmpty CoverageMapFilter)
$sel:accountId:CoverageFilterCriteria' :: CoverageFilterCriteria -> Maybe (NonEmpty CoverageStringFilter)
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe (NonEmpty CoverageStringFilter)
accountId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (NonEmpty CoverageMapFilter)
ec2InstanceTags
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (NonEmpty CoverageStringFilter)
ecrImageTags
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (NonEmpty CoverageStringFilter)
ecrRepositoryName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (NonEmpty CoverageStringFilter)
lambdaFunctionName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (NonEmpty CoverageStringFilter)
lambdaFunctionRuntime
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (NonEmpty CoverageMapFilter)
lambdaFunctionTags
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (NonEmpty CoverageStringFilter)
resourceId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (NonEmpty CoverageStringFilter)
resourceType
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (NonEmpty CoverageStringFilter)
scanStatusCode
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (NonEmpty CoverageStringFilter)
scanStatusReason
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (NonEmpty CoverageStringFilter)
scanType

instance Data.ToJSON CoverageFilterCriteria where
  toJSON :: CoverageFilterCriteria -> Value
toJSON CoverageFilterCriteria' {Maybe (NonEmpty CoverageMapFilter)
Maybe (NonEmpty CoverageStringFilter)
scanType :: Maybe (NonEmpty CoverageStringFilter)
scanStatusReason :: Maybe (NonEmpty CoverageStringFilter)
scanStatusCode :: Maybe (NonEmpty CoverageStringFilter)
resourceType :: Maybe (NonEmpty CoverageStringFilter)
resourceId :: Maybe (NonEmpty CoverageStringFilter)
lambdaFunctionTags :: Maybe (NonEmpty CoverageMapFilter)
lambdaFunctionRuntime :: Maybe (NonEmpty CoverageStringFilter)
lambdaFunctionName :: Maybe (NonEmpty CoverageStringFilter)
ecrRepositoryName :: Maybe (NonEmpty CoverageStringFilter)
ecrImageTags :: Maybe (NonEmpty CoverageStringFilter)
ec2InstanceTags :: Maybe (NonEmpty CoverageMapFilter)
accountId :: Maybe (NonEmpty CoverageStringFilter)
$sel:scanType:CoverageFilterCriteria' :: CoverageFilterCriteria -> Maybe (NonEmpty CoverageStringFilter)
$sel:scanStatusReason:CoverageFilterCriteria' :: CoverageFilterCriteria -> Maybe (NonEmpty CoverageStringFilter)
$sel:scanStatusCode:CoverageFilterCriteria' :: CoverageFilterCriteria -> Maybe (NonEmpty CoverageStringFilter)
$sel:resourceType:CoverageFilterCriteria' :: CoverageFilterCriteria -> Maybe (NonEmpty CoverageStringFilter)
$sel:resourceId:CoverageFilterCriteria' :: CoverageFilterCriteria -> Maybe (NonEmpty CoverageStringFilter)
$sel:lambdaFunctionTags:CoverageFilterCriteria' :: CoverageFilterCriteria -> Maybe (NonEmpty CoverageMapFilter)
$sel:lambdaFunctionRuntime:CoverageFilterCriteria' :: CoverageFilterCriteria -> Maybe (NonEmpty CoverageStringFilter)
$sel:lambdaFunctionName:CoverageFilterCriteria' :: CoverageFilterCriteria -> Maybe (NonEmpty CoverageStringFilter)
$sel:ecrRepositoryName:CoverageFilterCriteria' :: CoverageFilterCriteria -> Maybe (NonEmpty CoverageStringFilter)
$sel:ecrImageTags:CoverageFilterCriteria' :: CoverageFilterCriteria -> Maybe (NonEmpty CoverageStringFilter)
$sel:ec2InstanceTags:CoverageFilterCriteria' :: CoverageFilterCriteria -> Maybe (NonEmpty CoverageMapFilter)
$sel:accountId:CoverageFilterCriteria' :: CoverageFilterCriteria -> Maybe (NonEmpty CoverageStringFilter)
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"accountId" 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 (NonEmpty CoverageStringFilter)
accountId,
            (Key
"ec2InstanceTags" 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 (NonEmpty CoverageMapFilter)
ec2InstanceTags,
            (Key
"ecrImageTags" 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 (NonEmpty CoverageStringFilter)
ecrImageTags,
            (Key
"ecrRepositoryName" 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 (NonEmpty CoverageStringFilter)
ecrRepositoryName,
            (Key
"lambdaFunctionName" 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 (NonEmpty CoverageStringFilter)
lambdaFunctionName,
            (Key
"lambdaFunctionRuntime" 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 (NonEmpty CoverageStringFilter)
lambdaFunctionRuntime,
            (Key
"lambdaFunctionTags" 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 (NonEmpty CoverageMapFilter)
lambdaFunctionTags,
            (Key
"resourceId" 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 (NonEmpty CoverageStringFilter)
resourceId,
            (Key
"resourceType" 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 (NonEmpty CoverageStringFilter)
resourceType,
            (Key
"scanStatusCode" 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 (NonEmpty CoverageStringFilter)
scanStatusCode,
            (Key
"scanStatusReason" 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 (NonEmpty CoverageStringFilter)
scanStatusReason,
            (Key
"scanType" 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 (NonEmpty CoverageStringFilter)
scanType
          ]
      )