{-# 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.GuardDuty.Types.ServiceInfo
-- 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.GuardDuty.Types.ServiceInfo where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.GuardDuty.Types.Action
import Amazonka.GuardDuty.Types.EbsVolumeScanDetails
import Amazonka.GuardDuty.Types.Evidence
import Amazonka.GuardDuty.Types.ServiceAdditionalInfo
import qualified Amazonka.Prelude as Prelude

-- | Contains additional information about the generated finding.
--
-- /See:/ 'newServiceInfo' smart constructor.
data ServiceInfo = ServiceInfo'
  { -- | Information about the activity that is described in a finding.
    ServiceInfo -> Maybe Action
action :: Prelude.Maybe Action,
    -- | Contains additional information about the generated finding.
    ServiceInfo -> Maybe ServiceAdditionalInfo
additionalInfo :: Prelude.Maybe ServiceAdditionalInfo,
    -- | Indicates whether this finding is archived.
    ServiceInfo -> Maybe Bool
archived :: Prelude.Maybe Prelude.Bool,
    -- | The total count of the occurrences of this finding type.
    ServiceInfo -> Maybe Int
count :: Prelude.Maybe Prelude.Int,
    -- | The detector ID for the GuardDuty service.
    ServiceInfo -> Maybe Text
detectorId :: Prelude.Maybe Prelude.Text,
    -- | Returns details from the malware scan that created a finding.
    ServiceInfo -> Maybe EbsVolumeScanDetails
ebsVolumeScanDetails :: Prelude.Maybe EbsVolumeScanDetails,
    -- | The first-seen timestamp of the activity that prompted GuardDuty to
    -- generate this finding.
    ServiceInfo -> Maybe Text
eventFirstSeen :: Prelude.Maybe Prelude.Text,
    -- | The last-seen timestamp of the activity that prompted GuardDuty to
    -- generate this finding.
    ServiceInfo -> Maybe Text
eventLastSeen :: Prelude.Maybe Prelude.Text,
    -- | An evidence object associated with the service.
    ServiceInfo -> Maybe Evidence
evidence :: Prelude.Maybe Evidence,
    -- | The name of the feature that generated a finding.
    ServiceInfo -> Maybe Text
featureName :: Prelude.Maybe Prelude.Text,
    -- | The resource role information for this finding.
    ServiceInfo -> Maybe Text
resourceRole :: Prelude.Maybe Prelude.Text,
    -- | The name of the Amazon Web Services service (GuardDuty) that generated a
    -- finding.
    ServiceInfo -> Maybe Text
serviceName :: Prelude.Maybe Prelude.Text,
    -- | Feedback that was submitted about the finding.
    ServiceInfo -> Maybe Text
userFeedback :: Prelude.Maybe Prelude.Text
  }
  deriving (ServiceInfo -> ServiceInfo -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ServiceInfo -> ServiceInfo -> Bool
$c/= :: ServiceInfo -> ServiceInfo -> Bool
== :: ServiceInfo -> ServiceInfo -> Bool
$c== :: ServiceInfo -> ServiceInfo -> Bool
Prelude.Eq, ReadPrec [ServiceInfo]
ReadPrec ServiceInfo
Int -> ReadS ServiceInfo
ReadS [ServiceInfo]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ServiceInfo]
$creadListPrec :: ReadPrec [ServiceInfo]
readPrec :: ReadPrec ServiceInfo
$creadPrec :: ReadPrec ServiceInfo
readList :: ReadS [ServiceInfo]
$creadList :: ReadS [ServiceInfo]
readsPrec :: Int -> ReadS ServiceInfo
$creadsPrec :: Int -> ReadS ServiceInfo
Prelude.Read, Int -> ServiceInfo -> ShowS
[ServiceInfo] -> ShowS
ServiceInfo -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ServiceInfo] -> ShowS
$cshowList :: [ServiceInfo] -> ShowS
show :: ServiceInfo -> String
$cshow :: ServiceInfo -> String
showsPrec :: Int -> ServiceInfo -> ShowS
$cshowsPrec :: Int -> ServiceInfo -> ShowS
Prelude.Show, forall x. Rep ServiceInfo x -> ServiceInfo
forall x. ServiceInfo -> Rep ServiceInfo x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep ServiceInfo x -> ServiceInfo
$cfrom :: forall x. ServiceInfo -> Rep ServiceInfo x
Prelude.Generic)

-- |
-- Create a value of 'ServiceInfo' 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:
--
-- 'action', 'serviceInfo_action' - Information about the activity that is described in a finding.
--
-- 'additionalInfo', 'serviceInfo_additionalInfo' - Contains additional information about the generated finding.
--
-- 'archived', 'serviceInfo_archived' - Indicates whether this finding is archived.
--
-- 'count', 'serviceInfo_count' - The total count of the occurrences of this finding type.
--
-- 'detectorId', 'serviceInfo_detectorId' - The detector ID for the GuardDuty service.
--
-- 'ebsVolumeScanDetails', 'serviceInfo_ebsVolumeScanDetails' - Returns details from the malware scan that created a finding.
--
-- 'eventFirstSeen', 'serviceInfo_eventFirstSeen' - The first-seen timestamp of the activity that prompted GuardDuty to
-- generate this finding.
--
-- 'eventLastSeen', 'serviceInfo_eventLastSeen' - The last-seen timestamp of the activity that prompted GuardDuty to
-- generate this finding.
--
-- 'evidence', 'serviceInfo_evidence' - An evidence object associated with the service.
--
-- 'featureName', 'serviceInfo_featureName' - The name of the feature that generated a finding.
--
-- 'resourceRole', 'serviceInfo_resourceRole' - The resource role information for this finding.
--
-- 'serviceName', 'serviceInfo_serviceName' - The name of the Amazon Web Services service (GuardDuty) that generated a
-- finding.
--
-- 'userFeedback', 'serviceInfo_userFeedback' - Feedback that was submitted about the finding.
newServiceInfo ::
  ServiceInfo
newServiceInfo :: ServiceInfo
newServiceInfo =
  ServiceInfo'
    { $sel:action:ServiceInfo' :: Maybe Action
action = forall a. Maybe a
Prelude.Nothing,
      $sel:additionalInfo:ServiceInfo' :: Maybe ServiceAdditionalInfo
additionalInfo = forall a. Maybe a
Prelude.Nothing,
      $sel:archived:ServiceInfo' :: Maybe Bool
archived = forall a. Maybe a
Prelude.Nothing,
      $sel:count:ServiceInfo' :: Maybe Int
count = forall a. Maybe a
Prelude.Nothing,
      $sel:detectorId:ServiceInfo' :: Maybe Text
detectorId = forall a. Maybe a
Prelude.Nothing,
      $sel:ebsVolumeScanDetails:ServiceInfo' :: Maybe EbsVolumeScanDetails
ebsVolumeScanDetails = forall a. Maybe a
Prelude.Nothing,
      $sel:eventFirstSeen:ServiceInfo' :: Maybe Text
eventFirstSeen = forall a. Maybe a
Prelude.Nothing,
      $sel:eventLastSeen:ServiceInfo' :: Maybe Text
eventLastSeen = forall a. Maybe a
Prelude.Nothing,
      $sel:evidence:ServiceInfo' :: Maybe Evidence
evidence = forall a. Maybe a
Prelude.Nothing,
      $sel:featureName:ServiceInfo' :: Maybe Text
featureName = forall a. Maybe a
Prelude.Nothing,
      $sel:resourceRole:ServiceInfo' :: Maybe Text
resourceRole = forall a. Maybe a
Prelude.Nothing,
      $sel:serviceName:ServiceInfo' :: Maybe Text
serviceName = forall a. Maybe a
Prelude.Nothing,
      $sel:userFeedback:ServiceInfo' :: Maybe Text
userFeedback = forall a. Maybe a
Prelude.Nothing
    }

-- | Information about the activity that is described in a finding.
serviceInfo_action :: Lens.Lens' ServiceInfo (Prelude.Maybe Action)
serviceInfo_action :: Lens' ServiceInfo (Maybe Action)
serviceInfo_action = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ServiceInfo' {Maybe Action
action :: Maybe Action
$sel:action:ServiceInfo' :: ServiceInfo -> Maybe Action
action} -> Maybe Action
action) (\s :: ServiceInfo
s@ServiceInfo' {} Maybe Action
a -> ServiceInfo
s {$sel:action:ServiceInfo' :: Maybe Action
action = Maybe Action
a} :: ServiceInfo)

-- | Contains additional information about the generated finding.
serviceInfo_additionalInfo :: Lens.Lens' ServiceInfo (Prelude.Maybe ServiceAdditionalInfo)
serviceInfo_additionalInfo :: Lens' ServiceInfo (Maybe ServiceAdditionalInfo)
serviceInfo_additionalInfo = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ServiceInfo' {Maybe ServiceAdditionalInfo
additionalInfo :: Maybe ServiceAdditionalInfo
$sel:additionalInfo:ServiceInfo' :: ServiceInfo -> Maybe ServiceAdditionalInfo
additionalInfo} -> Maybe ServiceAdditionalInfo
additionalInfo) (\s :: ServiceInfo
s@ServiceInfo' {} Maybe ServiceAdditionalInfo
a -> ServiceInfo
s {$sel:additionalInfo:ServiceInfo' :: Maybe ServiceAdditionalInfo
additionalInfo = Maybe ServiceAdditionalInfo
a} :: ServiceInfo)

-- | Indicates whether this finding is archived.
serviceInfo_archived :: Lens.Lens' ServiceInfo (Prelude.Maybe Prelude.Bool)
serviceInfo_archived :: Lens' ServiceInfo (Maybe Bool)
serviceInfo_archived = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ServiceInfo' {Maybe Bool
archived :: Maybe Bool
$sel:archived:ServiceInfo' :: ServiceInfo -> Maybe Bool
archived} -> Maybe Bool
archived) (\s :: ServiceInfo
s@ServiceInfo' {} Maybe Bool
a -> ServiceInfo
s {$sel:archived:ServiceInfo' :: Maybe Bool
archived = Maybe Bool
a} :: ServiceInfo)

-- | The total count of the occurrences of this finding type.
serviceInfo_count :: Lens.Lens' ServiceInfo (Prelude.Maybe Prelude.Int)
serviceInfo_count :: Lens' ServiceInfo (Maybe Int)
serviceInfo_count = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ServiceInfo' {Maybe Int
count :: Maybe Int
$sel:count:ServiceInfo' :: ServiceInfo -> Maybe Int
count} -> Maybe Int
count) (\s :: ServiceInfo
s@ServiceInfo' {} Maybe Int
a -> ServiceInfo
s {$sel:count:ServiceInfo' :: Maybe Int
count = Maybe Int
a} :: ServiceInfo)

-- | The detector ID for the GuardDuty service.
serviceInfo_detectorId :: Lens.Lens' ServiceInfo (Prelude.Maybe Prelude.Text)
serviceInfo_detectorId :: Lens' ServiceInfo (Maybe Text)
serviceInfo_detectorId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ServiceInfo' {Maybe Text
detectorId :: Maybe Text
$sel:detectorId:ServiceInfo' :: ServiceInfo -> Maybe Text
detectorId} -> Maybe Text
detectorId) (\s :: ServiceInfo
s@ServiceInfo' {} Maybe Text
a -> ServiceInfo
s {$sel:detectorId:ServiceInfo' :: Maybe Text
detectorId = Maybe Text
a} :: ServiceInfo)

-- | Returns details from the malware scan that created a finding.
serviceInfo_ebsVolumeScanDetails :: Lens.Lens' ServiceInfo (Prelude.Maybe EbsVolumeScanDetails)
serviceInfo_ebsVolumeScanDetails :: Lens' ServiceInfo (Maybe EbsVolumeScanDetails)
serviceInfo_ebsVolumeScanDetails = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ServiceInfo' {Maybe EbsVolumeScanDetails
ebsVolumeScanDetails :: Maybe EbsVolumeScanDetails
$sel:ebsVolumeScanDetails:ServiceInfo' :: ServiceInfo -> Maybe EbsVolumeScanDetails
ebsVolumeScanDetails} -> Maybe EbsVolumeScanDetails
ebsVolumeScanDetails) (\s :: ServiceInfo
s@ServiceInfo' {} Maybe EbsVolumeScanDetails
a -> ServiceInfo
s {$sel:ebsVolumeScanDetails:ServiceInfo' :: Maybe EbsVolumeScanDetails
ebsVolumeScanDetails = Maybe EbsVolumeScanDetails
a} :: ServiceInfo)

-- | The first-seen timestamp of the activity that prompted GuardDuty to
-- generate this finding.
serviceInfo_eventFirstSeen :: Lens.Lens' ServiceInfo (Prelude.Maybe Prelude.Text)
serviceInfo_eventFirstSeen :: Lens' ServiceInfo (Maybe Text)
serviceInfo_eventFirstSeen = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ServiceInfo' {Maybe Text
eventFirstSeen :: Maybe Text
$sel:eventFirstSeen:ServiceInfo' :: ServiceInfo -> Maybe Text
eventFirstSeen} -> Maybe Text
eventFirstSeen) (\s :: ServiceInfo
s@ServiceInfo' {} Maybe Text
a -> ServiceInfo
s {$sel:eventFirstSeen:ServiceInfo' :: Maybe Text
eventFirstSeen = Maybe Text
a} :: ServiceInfo)

-- | The last-seen timestamp of the activity that prompted GuardDuty to
-- generate this finding.
serviceInfo_eventLastSeen :: Lens.Lens' ServiceInfo (Prelude.Maybe Prelude.Text)
serviceInfo_eventLastSeen :: Lens' ServiceInfo (Maybe Text)
serviceInfo_eventLastSeen = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ServiceInfo' {Maybe Text
eventLastSeen :: Maybe Text
$sel:eventLastSeen:ServiceInfo' :: ServiceInfo -> Maybe Text
eventLastSeen} -> Maybe Text
eventLastSeen) (\s :: ServiceInfo
s@ServiceInfo' {} Maybe Text
a -> ServiceInfo
s {$sel:eventLastSeen:ServiceInfo' :: Maybe Text
eventLastSeen = Maybe Text
a} :: ServiceInfo)

-- | An evidence object associated with the service.
serviceInfo_evidence :: Lens.Lens' ServiceInfo (Prelude.Maybe Evidence)
serviceInfo_evidence :: Lens' ServiceInfo (Maybe Evidence)
serviceInfo_evidence = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ServiceInfo' {Maybe Evidence
evidence :: Maybe Evidence
$sel:evidence:ServiceInfo' :: ServiceInfo -> Maybe Evidence
evidence} -> Maybe Evidence
evidence) (\s :: ServiceInfo
s@ServiceInfo' {} Maybe Evidence
a -> ServiceInfo
s {$sel:evidence:ServiceInfo' :: Maybe Evidence
evidence = Maybe Evidence
a} :: ServiceInfo)

-- | The name of the feature that generated a finding.
serviceInfo_featureName :: Lens.Lens' ServiceInfo (Prelude.Maybe Prelude.Text)
serviceInfo_featureName :: Lens' ServiceInfo (Maybe Text)
serviceInfo_featureName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ServiceInfo' {Maybe Text
featureName :: Maybe Text
$sel:featureName:ServiceInfo' :: ServiceInfo -> Maybe Text
featureName} -> Maybe Text
featureName) (\s :: ServiceInfo
s@ServiceInfo' {} Maybe Text
a -> ServiceInfo
s {$sel:featureName:ServiceInfo' :: Maybe Text
featureName = Maybe Text
a} :: ServiceInfo)

-- | The resource role information for this finding.
serviceInfo_resourceRole :: Lens.Lens' ServiceInfo (Prelude.Maybe Prelude.Text)
serviceInfo_resourceRole :: Lens' ServiceInfo (Maybe Text)
serviceInfo_resourceRole = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ServiceInfo' {Maybe Text
resourceRole :: Maybe Text
$sel:resourceRole:ServiceInfo' :: ServiceInfo -> Maybe Text
resourceRole} -> Maybe Text
resourceRole) (\s :: ServiceInfo
s@ServiceInfo' {} Maybe Text
a -> ServiceInfo
s {$sel:resourceRole:ServiceInfo' :: Maybe Text
resourceRole = Maybe Text
a} :: ServiceInfo)

-- | The name of the Amazon Web Services service (GuardDuty) that generated a
-- finding.
serviceInfo_serviceName :: Lens.Lens' ServiceInfo (Prelude.Maybe Prelude.Text)
serviceInfo_serviceName :: Lens' ServiceInfo (Maybe Text)
serviceInfo_serviceName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ServiceInfo' {Maybe Text
serviceName :: Maybe Text
$sel:serviceName:ServiceInfo' :: ServiceInfo -> Maybe Text
serviceName} -> Maybe Text
serviceName) (\s :: ServiceInfo
s@ServiceInfo' {} Maybe Text
a -> ServiceInfo
s {$sel:serviceName:ServiceInfo' :: Maybe Text
serviceName = Maybe Text
a} :: ServiceInfo)

-- | Feedback that was submitted about the finding.
serviceInfo_userFeedback :: Lens.Lens' ServiceInfo (Prelude.Maybe Prelude.Text)
serviceInfo_userFeedback :: Lens' ServiceInfo (Maybe Text)
serviceInfo_userFeedback = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ServiceInfo' {Maybe Text
userFeedback :: Maybe Text
$sel:userFeedback:ServiceInfo' :: ServiceInfo -> Maybe Text
userFeedback} -> Maybe Text
userFeedback) (\s :: ServiceInfo
s@ServiceInfo' {} Maybe Text
a -> ServiceInfo
s {$sel:userFeedback:ServiceInfo' :: Maybe Text
userFeedback = Maybe Text
a} :: ServiceInfo)

instance Data.FromJSON ServiceInfo where
  parseJSON :: Value -> Parser ServiceInfo
parseJSON =
    forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
      String
"ServiceInfo"
      ( \Object
x ->
          Maybe Action
-> Maybe ServiceAdditionalInfo
-> Maybe Bool
-> Maybe Int
-> Maybe Text
-> Maybe EbsVolumeScanDetails
-> Maybe Text
-> Maybe Text
-> Maybe Evidence
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> ServiceInfo
ServiceInfo'
            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
"action")
            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
"additionalInfo")
            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
"archived")
            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
"count")
            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
"detectorId")
            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
"ebsVolumeScanDetails")
            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
"eventFirstSeen")
            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
"eventLastSeen")
            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
"evidence")
            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
"featureName")
            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
"resourceRole")
            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
"serviceName")
            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
"userFeedback")
      )

instance Prelude.Hashable ServiceInfo where
  hashWithSalt :: Int -> ServiceInfo -> Int
hashWithSalt Int
_salt ServiceInfo' {Maybe Bool
Maybe Int
Maybe Text
Maybe Action
Maybe ServiceAdditionalInfo
Maybe Evidence
Maybe EbsVolumeScanDetails
userFeedback :: Maybe Text
serviceName :: Maybe Text
resourceRole :: Maybe Text
featureName :: Maybe Text
evidence :: Maybe Evidence
eventLastSeen :: Maybe Text
eventFirstSeen :: Maybe Text
ebsVolumeScanDetails :: Maybe EbsVolumeScanDetails
detectorId :: Maybe Text
count :: Maybe Int
archived :: Maybe Bool
additionalInfo :: Maybe ServiceAdditionalInfo
action :: Maybe Action
$sel:userFeedback:ServiceInfo' :: ServiceInfo -> Maybe Text
$sel:serviceName:ServiceInfo' :: ServiceInfo -> Maybe Text
$sel:resourceRole:ServiceInfo' :: ServiceInfo -> Maybe Text
$sel:featureName:ServiceInfo' :: ServiceInfo -> Maybe Text
$sel:evidence:ServiceInfo' :: ServiceInfo -> Maybe Evidence
$sel:eventLastSeen:ServiceInfo' :: ServiceInfo -> Maybe Text
$sel:eventFirstSeen:ServiceInfo' :: ServiceInfo -> Maybe Text
$sel:ebsVolumeScanDetails:ServiceInfo' :: ServiceInfo -> Maybe EbsVolumeScanDetails
$sel:detectorId:ServiceInfo' :: ServiceInfo -> Maybe Text
$sel:count:ServiceInfo' :: ServiceInfo -> Maybe Int
$sel:archived:ServiceInfo' :: ServiceInfo -> Maybe Bool
$sel:additionalInfo:ServiceInfo' :: ServiceInfo -> Maybe ServiceAdditionalInfo
$sel:action:ServiceInfo' :: ServiceInfo -> Maybe Action
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Action
action
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ServiceAdditionalInfo
additionalInfo
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
archived
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
count
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
detectorId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe EbsVolumeScanDetails
ebsVolumeScanDetails
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
eventFirstSeen
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
eventLastSeen
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Evidence
evidence
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
featureName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
resourceRole
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
serviceName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
userFeedback

instance Prelude.NFData ServiceInfo where
  rnf :: ServiceInfo -> ()
rnf ServiceInfo' {Maybe Bool
Maybe Int
Maybe Text
Maybe Action
Maybe ServiceAdditionalInfo
Maybe Evidence
Maybe EbsVolumeScanDetails
userFeedback :: Maybe Text
serviceName :: Maybe Text
resourceRole :: Maybe Text
featureName :: Maybe Text
evidence :: Maybe Evidence
eventLastSeen :: Maybe Text
eventFirstSeen :: Maybe Text
ebsVolumeScanDetails :: Maybe EbsVolumeScanDetails
detectorId :: Maybe Text
count :: Maybe Int
archived :: Maybe Bool
additionalInfo :: Maybe ServiceAdditionalInfo
action :: Maybe Action
$sel:userFeedback:ServiceInfo' :: ServiceInfo -> Maybe Text
$sel:serviceName:ServiceInfo' :: ServiceInfo -> Maybe Text
$sel:resourceRole:ServiceInfo' :: ServiceInfo -> Maybe Text
$sel:featureName:ServiceInfo' :: ServiceInfo -> Maybe Text
$sel:evidence:ServiceInfo' :: ServiceInfo -> Maybe Evidence
$sel:eventLastSeen:ServiceInfo' :: ServiceInfo -> Maybe Text
$sel:eventFirstSeen:ServiceInfo' :: ServiceInfo -> Maybe Text
$sel:ebsVolumeScanDetails:ServiceInfo' :: ServiceInfo -> Maybe EbsVolumeScanDetails
$sel:detectorId:ServiceInfo' :: ServiceInfo -> Maybe Text
$sel:count:ServiceInfo' :: ServiceInfo -> Maybe Int
$sel:archived:ServiceInfo' :: ServiceInfo -> Maybe Bool
$sel:additionalInfo:ServiceInfo' :: ServiceInfo -> Maybe ServiceAdditionalInfo
$sel:action:ServiceInfo' :: ServiceInfo -> Maybe Action
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Action
action
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ServiceAdditionalInfo
additionalInfo
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
archived
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Int
count
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
detectorId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe EbsVolumeScanDetails
ebsVolumeScanDetails
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
eventFirstSeen
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
eventLastSeen
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Evidence
evidence
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
featureName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
resourceRole
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
serviceName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
userFeedback