{-# 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.AWSHealth.Types.Event
-- 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.AWSHealth.Types.Event where

import Amazonka.AWSHealth.Types.EventScopeCode
import Amazonka.AWSHealth.Types.EventStatusCode
import Amazonka.AWSHealth.Types.EventTypeCategory
import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import qualified Amazonka.Prelude as Prelude

-- | Summary information about an Health event.
--
-- Health events can be public or account-specific:
--
-- -   /Public events/ might be service events that are not specific to an
--     Amazon Web Services account. For example, if there is an issue with
--     an Amazon Web Services Region, Health provides information about the
--     event, even if you don\'t use services or resources in that Region.
--
-- -   /Account-specific/ events are specific to either your Amazon Web
--     Services account or an account in your organization. For example, if
--     there\'s an issue with Amazon Elastic Compute Cloud in a Region that
--     you use, Health provides information about the event and the
--     affected resources in the account.
--
-- You can determine if an event is public or account-specific by using the
-- @eventScopeCode@ parameter. For more information, see
-- <https://docs.aws.amazon.com/health/latest/APIReference/API_Event.html#AWSHealth-Type-Event-eventScopeCode eventScopeCode>.
--
-- /See:/ 'newEvent' smart constructor.
data Event = Event'
  { -- | The unique identifier for the event. The event ARN has the
    -- @arn:aws:health:@/@event-region@/@::event\/@/@SERVICE@/@\/@/@EVENT_TYPE_CODE@/@\/@/@EVENT_TYPE_PLUS_ID@/@ @
    -- format.
    --
    -- For example, an event ARN might look like the following:
    --
    -- @arn:aws:health:us-east-1::event\/EC2\/EC2_INSTANCE_RETIREMENT_SCHEDULED\/EC2_INSTANCE_RETIREMENT_SCHEDULED_ABC123-DEF456@
    Event -> Maybe Text
arn :: Prelude.Maybe Prelude.Text,
    -- | The Amazon Web Services Availability Zone of the event. For example,
    -- us-east-1a.
    Event -> Maybe Text
availabilityZone :: Prelude.Maybe Prelude.Text,
    -- | The date and time that the event ended.
    Event -> Maybe POSIX
endTime :: Prelude.Maybe Data.POSIX,
    -- | This parameter specifies if the Health event is a public Amazon Web
    -- Services service event or an account-specific event.
    --
    -- -   If the @eventScopeCode@ value is @PUBLIC@, then the
    --     @affectedAccounts@ value is always empty.
    --
    -- -   If the @eventScopeCode@ value is @ACCOUNT_SPECIFIC@, then the
    --     @affectedAccounts@ value lists the affected Amazon Web Services
    --     accounts in your organization. For example, if an event affects a
    --     service such as Amazon Elastic Compute Cloud and you have Amazon Web
    --     Services accounts that use that service, those account IDs appear in
    --     the response.
    --
    -- -   If the @eventScopeCode@ value is @NONE@, then the @eventArn@ that
    --     you specified in the request is invalid or doesn\'t exist.
    Event -> Maybe EventScopeCode
eventScopeCode :: Prelude.Maybe EventScopeCode,
    -- | A list of event type category codes. Possible values are @issue@,
    -- @accountNotification@, or @scheduledChange@. Currently, the
    -- @investigation@ value isn\'t supported at this time.
    Event -> Maybe EventTypeCategory
eventTypeCategory :: Prelude.Maybe EventTypeCategory,
    -- | The unique identifier for the event type. The format is
    -- @AWS_@/@SERVICE@/@_@/@DESCRIPTION@/@ @; for example,
    -- @AWS_EC2_SYSTEM_MAINTENANCE_EVENT@.
    Event -> Maybe Text
eventTypeCode :: Prelude.Maybe Prelude.Text,
    -- | The most recent date and time that the event was updated.
    Event -> Maybe POSIX
lastUpdatedTime :: Prelude.Maybe Data.POSIX,
    -- | The Amazon Web Services Region name of the event.
    Event -> Maybe Text
region :: Prelude.Maybe Prelude.Text,
    -- | The Amazon Web Services service that is affected by the event. For
    -- example, @EC2@, @RDS@.
    Event -> Maybe Text
service :: Prelude.Maybe Prelude.Text,
    -- | The date and time that the event began.
    Event -> Maybe POSIX
startTime :: Prelude.Maybe Data.POSIX,
    -- | The most recent status of the event. Possible values are @open@,
    -- @closed@, and @upcoming@.
    Event -> Maybe EventStatusCode
statusCode :: Prelude.Maybe EventStatusCode
  }
  deriving (Event -> Event -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Event -> Event -> Bool
$c/= :: Event -> Event -> Bool
== :: Event -> Event -> Bool
$c== :: Event -> Event -> Bool
Prelude.Eq, ReadPrec [Event]
ReadPrec Event
Int -> ReadS Event
ReadS [Event]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [Event]
$creadListPrec :: ReadPrec [Event]
readPrec :: ReadPrec Event
$creadPrec :: ReadPrec Event
readList :: ReadS [Event]
$creadList :: ReadS [Event]
readsPrec :: Int -> ReadS Event
$creadsPrec :: Int -> ReadS Event
Prelude.Read, Int -> Event -> ShowS
[Event] -> ShowS
Event -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Event] -> ShowS
$cshowList :: [Event] -> ShowS
show :: Event -> String
$cshow :: Event -> String
showsPrec :: Int -> Event -> ShowS
$cshowsPrec :: Int -> Event -> ShowS
Prelude.Show, forall x. Rep Event x -> Event
forall x. Event -> Rep Event x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep Event x -> Event
$cfrom :: forall x. Event -> Rep Event x
Prelude.Generic)

-- |
-- Create a value of 'Event' 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:
--
-- 'arn', 'event_arn' - The unique identifier for the event. The event ARN has the
-- @arn:aws:health:@/@event-region@/@::event\/@/@SERVICE@/@\/@/@EVENT_TYPE_CODE@/@\/@/@EVENT_TYPE_PLUS_ID@/@ @
-- format.
--
-- For example, an event ARN might look like the following:
--
-- @arn:aws:health:us-east-1::event\/EC2\/EC2_INSTANCE_RETIREMENT_SCHEDULED\/EC2_INSTANCE_RETIREMENT_SCHEDULED_ABC123-DEF456@
--
-- 'availabilityZone', 'event_availabilityZone' - The Amazon Web Services Availability Zone of the event. For example,
-- us-east-1a.
--
-- 'endTime', 'event_endTime' - The date and time that the event ended.
--
-- 'eventScopeCode', 'event_eventScopeCode' - This parameter specifies if the Health event is a public Amazon Web
-- Services service event or an account-specific event.
--
-- -   If the @eventScopeCode@ value is @PUBLIC@, then the
--     @affectedAccounts@ value is always empty.
--
-- -   If the @eventScopeCode@ value is @ACCOUNT_SPECIFIC@, then the
--     @affectedAccounts@ value lists the affected Amazon Web Services
--     accounts in your organization. For example, if an event affects a
--     service such as Amazon Elastic Compute Cloud and you have Amazon Web
--     Services accounts that use that service, those account IDs appear in
--     the response.
--
-- -   If the @eventScopeCode@ value is @NONE@, then the @eventArn@ that
--     you specified in the request is invalid or doesn\'t exist.
--
-- 'eventTypeCategory', 'event_eventTypeCategory' - A list of event type category codes. Possible values are @issue@,
-- @accountNotification@, or @scheduledChange@. Currently, the
-- @investigation@ value isn\'t supported at this time.
--
-- 'eventTypeCode', 'event_eventTypeCode' - The unique identifier for the event type. The format is
-- @AWS_@/@SERVICE@/@_@/@DESCRIPTION@/@ @; for example,
-- @AWS_EC2_SYSTEM_MAINTENANCE_EVENT@.
--
-- 'lastUpdatedTime', 'event_lastUpdatedTime' - The most recent date and time that the event was updated.
--
-- 'region', 'event_region' - The Amazon Web Services Region name of the event.
--
-- 'service', 'event_service' - The Amazon Web Services service that is affected by the event. For
-- example, @EC2@, @RDS@.
--
-- 'startTime', 'event_startTime' - The date and time that the event began.
--
-- 'statusCode', 'event_statusCode' - The most recent status of the event. Possible values are @open@,
-- @closed@, and @upcoming@.
newEvent ::
  Event
newEvent :: Event
newEvent =
  Event'
    { $sel:arn:Event' :: Maybe Text
arn = forall a. Maybe a
Prelude.Nothing,
      $sel:availabilityZone:Event' :: Maybe Text
availabilityZone = forall a. Maybe a
Prelude.Nothing,
      $sel:endTime:Event' :: Maybe POSIX
endTime = forall a. Maybe a
Prelude.Nothing,
      $sel:eventScopeCode:Event' :: Maybe EventScopeCode
eventScopeCode = forall a. Maybe a
Prelude.Nothing,
      $sel:eventTypeCategory:Event' :: Maybe EventTypeCategory
eventTypeCategory = forall a. Maybe a
Prelude.Nothing,
      $sel:eventTypeCode:Event' :: Maybe Text
eventTypeCode = forall a. Maybe a
Prelude.Nothing,
      $sel:lastUpdatedTime:Event' :: Maybe POSIX
lastUpdatedTime = forall a. Maybe a
Prelude.Nothing,
      $sel:region:Event' :: Maybe Text
region = forall a. Maybe a
Prelude.Nothing,
      $sel:service:Event' :: Maybe Text
service = forall a. Maybe a
Prelude.Nothing,
      $sel:startTime:Event' :: Maybe POSIX
startTime = forall a. Maybe a
Prelude.Nothing,
      $sel:statusCode:Event' :: Maybe EventStatusCode
statusCode = forall a. Maybe a
Prelude.Nothing
    }

-- | The unique identifier for the event. The event ARN has the
-- @arn:aws:health:@/@event-region@/@::event\/@/@SERVICE@/@\/@/@EVENT_TYPE_CODE@/@\/@/@EVENT_TYPE_PLUS_ID@/@ @
-- format.
--
-- For example, an event ARN might look like the following:
--
-- @arn:aws:health:us-east-1::event\/EC2\/EC2_INSTANCE_RETIREMENT_SCHEDULED\/EC2_INSTANCE_RETIREMENT_SCHEDULED_ABC123-DEF456@
event_arn :: Lens.Lens' Event (Prelude.Maybe Prelude.Text)
event_arn :: Lens' Event (Maybe Text)
event_arn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Event' {Maybe Text
arn :: Maybe Text
$sel:arn:Event' :: Event -> Maybe Text
arn} -> Maybe Text
arn) (\s :: Event
s@Event' {} Maybe Text
a -> Event
s {$sel:arn:Event' :: Maybe Text
arn = Maybe Text
a} :: Event)

-- | The Amazon Web Services Availability Zone of the event. For example,
-- us-east-1a.
event_availabilityZone :: Lens.Lens' Event (Prelude.Maybe Prelude.Text)
event_availabilityZone :: Lens' Event (Maybe Text)
event_availabilityZone = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Event' {Maybe Text
availabilityZone :: Maybe Text
$sel:availabilityZone:Event' :: Event -> Maybe Text
availabilityZone} -> Maybe Text
availabilityZone) (\s :: Event
s@Event' {} Maybe Text
a -> Event
s {$sel:availabilityZone:Event' :: Maybe Text
availabilityZone = Maybe Text
a} :: Event)

-- | The date and time that the event ended.
event_endTime :: Lens.Lens' Event (Prelude.Maybe Prelude.UTCTime)
event_endTime :: Lens' Event (Maybe UTCTime)
event_endTime = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Event' {Maybe POSIX
endTime :: Maybe POSIX
$sel:endTime:Event' :: Event -> Maybe POSIX
endTime} -> Maybe POSIX
endTime) (\s :: Event
s@Event' {} Maybe POSIX
a -> Event
s {$sel:endTime:Event' :: Maybe POSIX
endTime = Maybe POSIX
a} :: Event) 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

-- | This parameter specifies if the Health event is a public Amazon Web
-- Services service event or an account-specific event.
--
-- -   If the @eventScopeCode@ value is @PUBLIC@, then the
--     @affectedAccounts@ value is always empty.
--
-- -   If the @eventScopeCode@ value is @ACCOUNT_SPECIFIC@, then the
--     @affectedAccounts@ value lists the affected Amazon Web Services
--     accounts in your organization. For example, if an event affects a
--     service such as Amazon Elastic Compute Cloud and you have Amazon Web
--     Services accounts that use that service, those account IDs appear in
--     the response.
--
-- -   If the @eventScopeCode@ value is @NONE@, then the @eventArn@ that
--     you specified in the request is invalid or doesn\'t exist.
event_eventScopeCode :: Lens.Lens' Event (Prelude.Maybe EventScopeCode)
event_eventScopeCode :: Lens' Event (Maybe EventScopeCode)
event_eventScopeCode = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Event' {Maybe EventScopeCode
eventScopeCode :: Maybe EventScopeCode
$sel:eventScopeCode:Event' :: Event -> Maybe EventScopeCode
eventScopeCode} -> Maybe EventScopeCode
eventScopeCode) (\s :: Event
s@Event' {} Maybe EventScopeCode
a -> Event
s {$sel:eventScopeCode:Event' :: Maybe EventScopeCode
eventScopeCode = Maybe EventScopeCode
a} :: Event)

-- | A list of event type category codes. Possible values are @issue@,
-- @accountNotification@, or @scheduledChange@. Currently, the
-- @investigation@ value isn\'t supported at this time.
event_eventTypeCategory :: Lens.Lens' Event (Prelude.Maybe EventTypeCategory)
event_eventTypeCategory :: Lens' Event (Maybe EventTypeCategory)
event_eventTypeCategory = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Event' {Maybe EventTypeCategory
eventTypeCategory :: Maybe EventTypeCategory
$sel:eventTypeCategory:Event' :: Event -> Maybe EventTypeCategory
eventTypeCategory} -> Maybe EventTypeCategory
eventTypeCategory) (\s :: Event
s@Event' {} Maybe EventTypeCategory
a -> Event
s {$sel:eventTypeCategory:Event' :: Maybe EventTypeCategory
eventTypeCategory = Maybe EventTypeCategory
a} :: Event)

-- | The unique identifier for the event type. The format is
-- @AWS_@/@SERVICE@/@_@/@DESCRIPTION@/@ @; for example,
-- @AWS_EC2_SYSTEM_MAINTENANCE_EVENT@.
event_eventTypeCode :: Lens.Lens' Event (Prelude.Maybe Prelude.Text)
event_eventTypeCode :: Lens' Event (Maybe Text)
event_eventTypeCode = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Event' {Maybe Text
eventTypeCode :: Maybe Text
$sel:eventTypeCode:Event' :: Event -> Maybe Text
eventTypeCode} -> Maybe Text
eventTypeCode) (\s :: Event
s@Event' {} Maybe Text
a -> Event
s {$sel:eventTypeCode:Event' :: Maybe Text
eventTypeCode = Maybe Text
a} :: Event)

-- | The most recent date and time that the event was updated.
event_lastUpdatedTime :: Lens.Lens' Event (Prelude.Maybe Prelude.UTCTime)
event_lastUpdatedTime :: Lens' Event (Maybe UTCTime)
event_lastUpdatedTime = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Event' {Maybe POSIX
lastUpdatedTime :: Maybe POSIX
$sel:lastUpdatedTime:Event' :: Event -> Maybe POSIX
lastUpdatedTime} -> Maybe POSIX
lastUpdatedTime) (\s :: Event
s@Event' {} Maybe POSIX
a -> Event
s {$sel:lastUpdatedTime:Event' :: Maybe POSIX
lastUpdatedTime = Maybe POSIX
a} :: Event) 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 Amazon Web Services Region name of the event.
event_region :: Lens.Lens' Event (Prelude.Maybe Prelude.Text)
event_region :: Lens' Event (Maybe Text)
event_region = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Event' {Maybe Text
region :: Maybe Text
$sel:region:Event' :: Event -> Maybe Text
region} -> Maybe Text
region) (\s :: Event
s@Event' {} Maybe Text
a -> Event
s {$sel:region:Event' :: Maybe Text
region = Maybe Text
a} :: Event)

-- | The Amazon Web Services service that is affected by the event. For
-- example, @EC2@, @RDS@.
event_service :: Lens.Lens' Event (Prelude.Maybe Prelude.Text)
event_service :: Lens' Event (Maybe Text)
event_service = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Event' {Maybe Text
service :: Maybe Text
$sel:service:Event' :: Event -> Maybe Text
service} -> Maybe Text
service) (\s :: Event
s@Event' {} Maybe Text
a -> Event
s {$sel:service:Event' :: Maybe Text
service = Maybe Text
a} :: Event)

-- | The date and time that the event began.
event_startTime :: Lens.Lens' Event (Prelude.Maybe Prelude.UTCTime)
event_startTime :: Lens' Event (Maybe UTCTime)
event_startTime = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Event' {Maybe POSIX
startTime :: Maybe POSIX
$sel:startTime:Event' :: Event -> Maybe POSIX
startTime} -> Maybe POSIX
startTime) (\s :: Event
s@Event' {} Maybe POSIX
a -> Event
s {$sel:startTime:Event' :: Maybe POSIX
startTime = Maybe POSIX
a} :: Event) 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 most recent status of the event. Possible values are @open@,
-- @closed@, and @upcoming@.
event_statusCode :: Lens.Lens' Event (Prelude.Maybe EventStatusCode)
event_statusCode :: Lens' Event (Maybe EventStatusCode)
event_statusCode = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Event' {Maybe EventStatusCode
statusCode :: Maybe EventStatusCode
$sel:statusCode:Event' :: Event -> Maybe EventStatusCode
statusCode} -> Maybe EventStatusCode
statusCode) (\s :: Event
s@Event' {} Maybe EventStatusCode
a -> Event
s {$sel:statusCode:Event' :: Maybe EventStatusCode
statusCode = Maybe EventStatusCode
a} :: Event)

instance Data.FromJSON Event where
  parseJSON :: Value -> Parser Event
parseJSON =
    forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
      String
"Event"
      ( \Object
x ->
          Maybe Text
-> Maybe Text
-> Maybe POSIX
-> Maybe EventScopeCode
-> Maybe EventTypeCategory
-> Maybe Text
-> Maybe POSIX
-> Maybe Text
-> Maybe Text
-> Maybe POSIX
-> Maybe EventStatusCode
-> Event
Event'
            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
"arn")
            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
"availabilityZone")
            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
"endTime")
            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
"eventScopeCode")
            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
"eventTypeCategory")
            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
"eventTypeCode")
            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
"lastUpdatedTime")
            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
"region")
            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
"service")
            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
"startTime")
            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
"statusCode")
      )

instance Prelude.Hashable Event where
  hashWithSalt :: Int -> Event -> Int
hashWithSalt Int
_salt Event' {Maybe Text
Maybe POSIX
Maybe EventScopeCode
Maybe EventStatusCode
Maybe EventTypeCategory
statusCode :: Maybe EventStatusCode
startTime :: Maybe POSIX
service :: Maybe Text
region :: Maybe Text
lastUpdatedTime :: Maybe POSIX
eventTypeCode :: Maybe Text
eventTypeCategory :: Maybe EventTypeCategory
eventScopeCode :: Maybe EventScopeCode
endTime :: Maybe POSIX
availabilityZone :: Maybe Text
arn :: Maybe Text
$sel:statusCode:Event' :: Event -> Maybe EventStatusCode
$sel:startTime:Event' :: Event -> Maybe POSIX
$sel:service:Event' :: Event -> Maybe Text
$sel:region:Event' :: Event -> Maybe Text
$sel:lastUpdatedTime:Event' :: Event -> Maybe POSIX
$sel:eventTypeCode:Event' :: Event -> Maybe Text
$sel:eventTypeCategory:Event' :: Event -> Maybe EventTypeCategory
$sel:eventScopeCode:Event' :: Event -> Maybe EventScopeCode
$sel:endTime:Event' :: Event -> Maybe POSIX
$sel:availabilityZone:Event' :: Event -> Maybe Text
$sel:arn:Event' :: Event -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
arn
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
availabilityZone
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe POSIX
endTime
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe EventScopeCode
eventScopeCode
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe EventTypeCategory
eventTypeCategory
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
eventTypeCode
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe POSIX
lastUpdatedTime
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
region
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
service
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe POSIX
startTime
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe EventStatusCode
statusCode

instance Prelude.NFData Event where
  rnf :: Event -> ()
rnf Event' {Maybe Text
Maybe POSIX
Maybe EventScopeCode
Maybe EventStatusCode
Maybe EventTypeCategory
statusCode :: Maybe EventStatusCode
startTime :: Maybe POSIX
service :: Maybe Text
region :: Maybe Text
lastUpdatedTime :: Maybe POSIX
eventTypeCode :: Maybe Text
eventTypeCategory :: Maybe EventTypeCategory
eventScopeCode :: Maybe EventScopeCode
endTime :: Maybe POSIX
availabilityZone :: Maybe Text
arn :: Maybe Text
$sel:statusCode:Event' :: Event -> Maybe EventStatusCode
$sel:startTime:Event' :: Event -> Maybe POSIX
$sel:service:Event' :: Event -> Maybe Text
$sel:region:Event' :: Event -> Maybe Text
$sel:lastUpdatedTime:Event' :: Event -> Maybe POSIX
$sel:eventTypeCode:Event' :: Event -> Maybe Text
$sel:eventTypeCategory:Event' :: Event -> Maybe EventTypeCategory
$sel:eventScopeCode:Event' :: Event -> Maybe EventScopeCode
$sel:endTime:Event' :: Event -> Maybe POSIX
$sel:availabilityZone:Event' :: Event -> Maybe Text
$sel:arn:Event' :: Event -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
arn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
availabilityZone
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe POSIX
endTime
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe EventScopeCode
eventScopeCode
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe EventTypeCategory
eventTypeCategory
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
eventTypeCode
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe POSIX
lastUpdatedTime
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
region
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
service
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe POSIX
startTime
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe EventStatusCode
statusCode