{-# 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.OrganizationEvent
-- 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.OrganizationEvent 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 event, returned by the
-- <https://docs.aws.amazon.com/health/latest/APIReference/API_DescribeEventsForOrganization.html DescribeEventsForOrganization>
-- operation.
--
-- /See:/ 'newOrganizationEvent' smart constructor.
data OrganizationEvent = OrganizationEvent'
  { -- | 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@
    OrganizationEvent -> Maybe Text
arn :: Prelude.Maybe Prelude.Text,
    -- | The date and time that the event ended.
    OrganizationEvent -> 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.
    OrganizationEvent -> 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.
    OrganizationEvent -> 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@.
    OrganizationEvent -> Maybe Text
eventTypeCode :: Prelude.Maybe Prelude.Text,
    -- | The most recent date and time that the event was updated.
    OrganizationEvent -> Maybe POSIX
lastUpdatedTime :: Prelude.Maybe Data.POSIX,
    -- | The Amazon Web Services Region name of the event.
    OrganizationEvent -> Maybe Text
region :: Prelude.Maybe Prelude.Text,
    -- | The Amazon Web Services service that is affected by the event, such as
    -- EC2 and RDS.
    OrganizationEvent -> Maybe Text
service :: Prelude.Maybe Prelude.Text,
    -- | The date and time that the event began.
    OrganizationEvent -> Maybe POSIX
startTime :: Prelude.Maybe Data.POSIX,
    -- | The most recent status of the event. Possible values are @open@,
    -- @closed@, and @upcoming@.
    OrganizationEvent -> Maybe EventStatusCode
statusCode :: Prelude.Maybe EventStatusCode
  }
  deriving (OrganizationEvent -> OrganizationEvent -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: OrganizationEvent -> OrganizationEvent -> Bool
$c/= :: OrganizationEvent -> OrganizationEvent -> Bool
== :: OrganizationEvent -> OrganizationEvent -> Bool
$c== :: OrganizationEvent -> OrganizationEvent -> Bool
Prelude.Eq, ReadPrec [OrganizationEvent]
ReadPrec OrganizationEvent
Int -> ReadS OrganizationEvent
ReadS [OrganizationEvent]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [OrganizationEvent]
$creadListPrec :: ReadPrec [OrganizationEvent]
readPrec :: ReadPrec OrganizationEvent
$creadPrec :: ReadPrec OrganizationEvent
readList :: ReadS [OrganizationEvent]
$creadList :: ReadS [OrganizationEvent]
readsPrec :: Int -> ReadS OrganizationEvent
$creadsPrec :: Int -> ReadS OrganizationEvent
Prelude.Read, Int -> OrganizationEvent -> ShowS
[OrganizationEvent] -> ShowS
OrganizationEvent -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [OrganizationEvent] -> ShowS
$cshowList :: [OrganizationEvent] -> ShowS
show :: OrganizationEvent -> String
$cshow :: OrganizationEvent -> String
showsPrec :: Int -> OrganizationEvent -> ShowS
$cshowsPrec :: Int -> OrganizationEvent -> ShowS
Prelude.Show, forall x. Rep OrganizationEvent x -> OrganizationEvent
forall x. OrganizationEvent -> Rep OrganizationEvent x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep OrganizationEvent x -> OrganizationEvent
$cfrom :: forall x. OrganizationEvent -> Rep OrganizationEvent x
Prelude.Generic)

-- |
-- Create a value of 'OrganizationEvent' 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', 'organizationEvent_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@
--
-- 'endTime', 'organizationEvent_endTime' - The date and time that the event ended.
--
-- 'eventScopeCode', 'organizationEvent_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', 'organizationEvent_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', 'organizationEvent_eventTypeCode' - The unique identifier for the event type. The format is
-- @AWS_SERVICE_DESCRIPTION@. For example,
-- @AWS_EC2_SYSTEM_MAINTENANCE_EVENT@.
--
-- 'lastUpdatedTime', 'organizationEvent_lastUpdatedTime' - The most recent date and time that the event was updated.
--
-- 'region', 'organizationEvent_region' - The Amazon Web Services Region name of the event.
--
-- 'service', 'organizationEvent_service' - The Amazon Web Services service that is affected by the event, such as
-- EC2 and RDS.
--
-- 'startTime', 'organizationEvent_startTime' - The date and time that the event began.
--
-- 'statusCode', 'organizationEvent_statusCode' - The most recent status of the event. Possible values are @open@,
-- @closed@, and @upcoming@.
newOrganizationEvent ::
  OrganizationEvent
newOrganizationEvent :: OrganizationEvent
newOrganizationEvent =
  OrganizationEvent'
    { $sel:arn:OrganizationEvent' :: Maybe Text
arn = forall a. Maybe a
Prelude.Nothing,
      $sel:endTime:OrganizationEvent' :: Maybe POSIX
endTime = forall a. Maybe a
Prelude.Nothing,
      $sel:eventScopeCode:OrganizationEvent' :: Maybe EventScopeCode
eventScopeCode = forall a. Maybe a
Prelude.Nothing,
      $sel:eventTypeCategory:OrganizationEvent' :: Maybe EventTypeCategory
eventTypeCategory = forall a. Maybe a
Prelude.Nothing,
      $sel:eventTypeCode:OrganizationEvent' :: Maybe Text
eventTypeCode = forall a. Maybe a
Prelude.Nothing,
      $sel:lastUpdatedTime:OrganizationEvent' :: Maybe POSIX
lastUpdatedTime = forall a. Maybe a
Prelude.Nothing,
      $sel:region:OrganizationEvent' :: Maybe Text
region = forall a. Maybe a
Prelude.Nothing,
      $sel:service:OrganizationEvent' :: Maybe Text
service = forall a. Maybe a
Prelude.Nothing,
      $sel:startTime:OrganizationEvent' :: Maybe POSIX
startTime = forall a. Maybe a
Prelude.Nothing,
      $sel:statusCode:OrganizationEvent' :: 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@
organizationEvent_arn :: Lens.Lens' OrganizationEvent (Prelude.Maybe Prelude.Text)
organizationEvent_arn :: Lens' OrganizationEvent (Maybe Text)
organizationEvent_arn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\OrganizationEvent' {Maybe Text
arn :: Maybe Text
$sel:arn:OrganizationEvent' :: OrganizationEvent -> Maybe Text
arn} -> Maybe Text
arn) (\s :: OrganizationEvent
s@OrganizationEvent' {} Maybe Text
a -> OrganizationEvent
s {$sel:arn:OrganizationEvent' :: Maybe Text
arn = Maybe Text
a} :: OrganizationEvent)

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

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

-- | The unique identifier for the event type. The format is
-- @AWS_SERVICE_DESCRIPTION@. For example,
-- @AWS_EC2_SYSTEM_MAINTENANCE_EVENT@.
organizationEvent_eventTypeCode :: Lens.Lens' OrganizationEvent (Prelude.Maybe Prelude.Text)
organizationEvent_eventTypeCode :: Lens' OrganizationEvent (Maybe Text)
organizationEvent_eventTypeCode = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\OrganizationEvent' {Maybe Text
eventTypeCode :: Maybe Text
$sel:eventTypeCode:OrganizationEvent' :: OrganizationEvent -> Maybe Text
eventTypeCode} -> Maybe Text
eventTypeCode) (\s :: OrganizationEvent
s@OrganizationEvent' {} Maybe Text
a -> OrganizationEvent
s {$sel:eventTypeCode:OrganizationEvent' :: Maybe Text
eventTypeCode = Maybe Text
a} :: OrganizationEvent)

-- | The most recent date and time that the event was updated.
organizationEvent_lastUpdatedTime :: Lens.Lens' OrganizationEvent (Prelude.Maybe Prelude.UTCTime)
organizationEvent_lastUpdatedTime :: Lens' OrganizationEvent (Maybe UTCTime)
organizationEvent_lastUpdatedTime = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\OrganizationEvent' {Maybe POSIX
lastUpdatedTime :: Maybe POSIX
$sel:lastUpdatedTime:OrganizationEvent' :: OrganizationEvent -> Maybe POSIX
lastUpdatedTime} -> Maybe POSIX
lastUpdatedTime) (\s :: OrganizationEvent
s@OrganizationEvent' {} Maybe POSIX
a -> OrganizationEvent
s {$sel:lastUpdatedTime:OrganizationEvent' :: Maybe POSIX
lastUpdatedTime = Maybe POSIX
a} :: OrganizationEvent) 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.
organizationEvent_region :: Lens.Lens' OrganizationEvent (Prelude.Maybe Prelude.Text)
organizationEvent_region :: Lens' OrganizationEvent (Maybe Text)
organizationEvent_region = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\OrganizationEvent' {Maybe Text
region :: Maybe Text
$sel:region:OrganizationEvent' :: OrganizationEvent -> Maybe Text
region} -> Maybe Text
region) (\s :: OrganizationEvent
s@OrganizationEvent' {} Maybe Text
a -> OrganizationEvent
s {$sel:region:OrganizationEvent' :: Maybe Text
region = Maybe Text
a} :: OrganizationEvent)

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

-- | The date and time that the event began.
organizationEvent_startTime :: Lens.Lens' OrganizationEvent (Prelude.Maybe Prelude.UTCTime)
organizationEvent_startTime :: Lens' OrganizationEvent (Maybe UTCTime)
organizationEvent_startTime = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\OrganizationEvent' {Maybe POSIX
startTime :: Maybe POSIX
$sel:startTime:OrganizationEvent' :: OrganizationEvent -> Maybe POSIX
startTime} -> Maybe POSIX
startTime) (\s :: OrganizationEvent
s@OrganizationEvent' {} Maybe POSIX
a -> OrganizationEvent
s {$sel:startTime:OrganizationEvent' :: Maybe POSIX
startTime = Maybe POSIX
a} :: OrganizationEvent) 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@.
organizationEvent_statusCode :: Lens.Lens' OrganizationEvent (Prelude.Maybe EventStatusCode)
organizationEvent_statusCode :: Lens' OrganizationEvent (Maybe EventStatusCode)
organizationEvent_statusCode = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\OrganizationEvent' {Maybe EventStatusCode
statusCode :: Maybe EventStatusCode
$sel:statusCode:OrganizationEvent' :: OrganizationEvent -> Maybe EventStatusCode
statusCode} -> Maybe EventStatusCode
statusCode) (\s :: OrganizationEvent
s@OrganizationEvent' {} Maybe EventStatusCode
a -> OrganizationEvent
s {$sel:statusCode:OrganizationEvent' :: Maybe EventStatusCode
statusCode = Maybe EventStatusCode
a} :: OrganizationEvent)

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