{-# 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.EventFilter
-- 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.EventFilter where

import Amazonka.AWSHealth.Types.DateTimeRange
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

-- | The values to use to filter results from the
-- <https://docs.aws.amazon.com/health/latest/APIReference/API_DescribeEvents.html DescribeEvents>
-- and
-- <https://docs.aws.amazon.com/health/latest/APIReference/API_DescribeEventAggregates.html DescribeEventAggregates>
-- operations.
--
-- /See:/ 'newEventFilter' smart constructor.
data EventFilter = EventFilter'
  { -- | A list of Amazon Web Services Availability Zones.
    EventFilter -> Maybe [Text]
availabilityZones :: Prelude.Maybe [Prelude.Text],
    -- | A list of dates and times that the event ended.
    EventFilter -> Maybe (NonEmpty DateTimeRange)
endTimes :: Prelude.Maybe (Prelude.NonEmpty DateTimeRange),
    -- | A list of entity ARNs (unique identifiers).
    EventFilter -> Maybe (NonEmpty Text)
entityArns :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text),
    -- | A list of entity identifiers, such as EC2 instance IDs (@i-34ab692e@) or
    -- EBS volumes (@vol-426ab23e@).
    EventFilter -> Maybe (NonEmpty Text)
entityValues :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text),
    -- | A list of event ARNs (unique identifiers). For example:
    -- @\"arn:aws:health:us-east-1::event\/EC2\/EC2_INSTANCE_RETIREMENT_SCHEDULED\/EC2_INSTANCE_RETIREMENT_SCHEDULED_ABC123-CDE456\", \"arn:aws:health:us-west-1::event\/EBS\/AWS_EBS_LOST_VOLUME\/AWS_EBS_LOST_VOLUME_CHI789_JKL101\"@
    EventFilter -> Maybe (NonEmpty Text)
eventArns :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text),
    -- | A list of event status codes.
    EventFilter -> Maybe (NonEmpty EventStatusCode)
eventStatusCodes :: Prelude.Maybe (Prelude.NonEmpty EventStatusCode),
    -- | A list of event type category codes. Possible values are @issue@,
    -- @accountNotification@, or @scheduledChange@. Currently, the
    -- @investigation@ value isn\'t supported at this time.
    EventFilter -> Maybe (NonEmpty EventTypeCategory)
eventTypeCategories :: Prelude.Maybe (Prelude.NonEmpty EventTypeCategory),
    -- | A list of unique identifiers for event types. For example,
    -- @\"AWS_EC2_SYSTEM_MAINTENANCE_EVENT\",\"AWS_RDS_MAINTENANCE_SCHEDULED\".@
    EventFilter -> Maybe (NonEmpty Text)
eventTypeCodes :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text),
    -- | A list of dates and times that the event was last updated.
    EventFilter -> Maybe (NonEmpty DateTimeRange)
lastUpdatedTimes :: Prelude.Maybe (Prelude.NonEmpty DateTimeRange),
    -- | A list of Amazon Web Services Regions.
    EventFilter -> Maybe (NonEmpty Text)
regions :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text),
    -- | The Amazon Web Services services associated with the event. For example,
    -- @EC2@, @RDS@.
    EventFilter -> Maybe (NonEmpty Text)
services :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text),
    -- | A list of dates and times that the event began.
    EventFilter -> Maybe (NonEmpty DateTimeRange)
startTimes :: Prelude.Maybe (Prelude.NonEmpty DateTimeRange),
    -- | A map of entity tags attached to the affected entity.
    --
    -- Currently, the @tags@ property isn\'t supported.
    EventFilter -> Maybe [HashMap Text Text]
tags :: Prelude.Maybe [Prelude.HashMap Prelude.Text Prelude.Text]
  }
  deriving (EventFilter -> EventFilter -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: EventFilter -> EventFilter -> Bool
$c/= :: EventFilter -> EventFilter -> Bool
== :: EventFilter -> EventFilter -> Bool
$c== :: EventFilter -> EventFilter -> Bool
Prelude.Eq, ReadPrec [EventFilter]
ReadPrec EventFilter
Int -> ReadS EventFilter
ReadS [EventFilter]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [EventFilter]
$creadListPrec :: ReadPrec [EventFilter]
readPrec :: ReadPrec EventFilter
$creadPrec :: ReadPrec EventFilter
readList :: ReadS [EventFilter]
$creadList :: ReadS [EventFilter]
readsPrec :: Int -> ReadS EventFilter
$creadsPrec :: Int -> ReadS EventFilter
Prelude.Read, Int -> EventFilter -> ShowS
[EventFilter] -> ShowS
EventFilter -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [EventFilter] -> ShowS
$cshowList :: [EventFilter] -> ShowS
show :: EventFilter -> String
$cshow :: EventFilter -> String
showsPrec :: Int -> EventFilter -> ShowS
$cshowsPrec :: Int -> EventFilter -> ShowS
Prelude.Show, forall x. Rep EventFilter x -> EventFilter
forall x. EventFilter -> Rep EventFilter x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep EventFilter x -> EventFilter
$cfrom :: forall x. EventFilter -> Rep EventFilter x
Prelude.Generic)

-- |
-- Create a value of 'EventFilter' 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:
--
-- 'availabilityZones', 'eventFilter_availabilityZones' - A list of Amazon Web Services Availability Zones.
--
-- 'endTimes', 'eventFilter_endTimes' - A list of dates and times that the event ended.
--
-- 'entityArns', 'eventFilter_entityArns' - A list of entity ARNs (unique identifiers).
--
-- 'entityValues', 'eventFilter_entityValues' - A list of entity identifiers, such as EC2 instance IDs (@i-34ab692e@) or
-- EBS volumes (@vol-426ab23e@).
--
-- 'eventArns', 'eventFilter_eventArns' - A list of event ARNs (unique identifiers). For example:
-- @\"arn:aws:health:us-east-1::event\/EC2\/EC2_INSTANCE_RETIREMENT_SCHEDULED\/EC2_INSTANCE_RETIREMENT_SCHEDULED_ABC123-CDE456\", \"arn:aws:health:us-west-1::event\/EBS\/AWS_EBS_LOST_VOLUME\/AWS_EBS_LOST_VOLUME_CHI789_JKL101\"@
--
-- 'eventStatusCodes', 'eventFilter_eventStatusCodes' - A list of event status codes.
--
-- 'eventTypeCategories', 'eventFilter_eventTypeCategories' - A list of event type category codes. Possible values are @issue@,
-- @accountNotification@, or @scheduledChange@. Currently, the
-- @investigation@ value isn\'t supported at this time.
--
-- 'eventTypeCodes', 'eventFilter_eventTypeCodes' - A list of unique identifiers for event types. For example,
-- @\"AWS_EC2_SYSTEM_MAINTENANCE_EVENT\",\"AWS_RDS_MAINTENANCE_SCHEDULED\".@
--
-- 'lastUpdatedTimes', 'eventFilter_lastUpdatedTimes' - A list of dates and times that the event was last updated.
--
-- 'regions', 'eventFilter_regions' - A list of Amazon Web Services Regions.
--
-- 'services', 'eventFilter_services' - The Amazon Web Services services associated with the event. For example,
-- @EC2@, @RDS@.
--
-- 'startTimes', 'eventFilter_startTimes' - A list of dates and times that the event began.
--
-- 'tags', 'eventFilter_tags' - A map of entity tags attached to the affected entity.
--
-- Currently, the @tags@ property isn\'t supported.
newEventFilter ::
  EventFilter
newEventFilter :: EventFilter
newEventFilter =
  EventFilter'
    { $sel:availabilityZones:EventFilter' :: Maybe [Text]
availabilityZones = forall a. Maybe a
Prelude.Nothing,
      $sel:endTimes:EventFilter' :: Maybe (NonEmpty DateTimeRange)
endTimes = forall a. Maybe a
Prelude.Nothing,
      $sel:entityArns:EventFilter' :: Maybe (NonEmpty Text)
entityArns = forall a. Maybe a
Prelude.Nothing,
      $sel:entityValues:EventFilter' :: Maybe (NonEmpty Text)
entityValues = forall a. Maybe a
Prelude.Nothing,
      $sel:eventArns:EventFilter' :: Maybe (NonEmpty Text)
eventArns = forall a. Maybe a
Prelude.Nothing,
      $sel:eventStatusCodes:EventFilter' :: Maybe (NonEmpty EventStatusCode)
eventStatusCodes = forall a. Maybe a
Prelude.Nothing,
      $sel:eventTypeCategories:EventFilter' :: Maybe (NonEmpty EventTypeCategory)
eventTypeCategories = forall a. Maybe a
Prelude.Nothing,
      $sel:eventTypeCodes:EventFilter' :: Maybe (NonEmpty Text)
eventTypeCodes = forall a. Maybe a
Prelude.Nothing,
      $sel:lastUpdatedTimes:EventFilter' :: Maybe (NonEmpty DateTimeRange)
lastUpdatedTimes = forall a. Maybe a
Prelude.Nothing,
      $sel:regions:EventFilter' :: Maybe (NonEmpty Text)
regions = forall a. Maybe a
Prelude.Nothing,
      $sel:services:EventFilter' :: Maybe (NonEmpty Text)
services = forall a. Maybe a
Prelude.Nothing,
      $sel:startTimes:EventFilter' :: Maybe (NonEmpty DateTimeRange)
startTimes = forall a. Maybe a
Prelude.Nothing,
      $sel:tags:EventFilter' :: Maybe [HashMap Text Text]
tags = forall a. Maybe a
Prelude.Nothing
    }

-- | A list of Amazon Web Services Availability Zones.
eventFilter_availabilityZones :: Lens.Lens' EventFilter (Prelude.Maybe [Prelude.Text])
eventFilter_availabilityZones :: Lens' EventFilter (Maybe [Text])
eventFilter_availabilityZones = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\EventFilter' {Maybe [Text]
availabilityZones :: Maybe [Text]
$sel:availabilityZones:EventFilter' :: EventFilter -> Maybe [Text]
availabilityZones} -> Maybe [Text]
availabilityZones) (\s :: EventFilter
s@EventFilter' {} Maybe [Text]
a -> EventFilter
s {$sel:availabilityZones:EventFilter' :: Maybe [Text]
availabilityZones = Maybe [Text]
a} :: EventFilter) 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

-- | A list of dates and times that the event ended.
eventFilter_endTimes :: Lens.Lens' EventFilter (Prelude.Maybe (Prelude.NonEmpty DateTimeRange))
eventFilter_endTimes :: Lens' EventFilter (Maybe (NonEmpty DateTimeRange))
eventFilter_endTimes = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\EventFilter' {Maybe (NonEmpty DateTimeRange)
endTimes :: Maybe (NonEmpty DateTimeRange)
$sel:endTimes:EventFilter' :: EventFilter -> Maybe (NonEmpty DateTimeRange)
endTimes} -> Maybe (NonEmpty DateTimeRange)
endTimes) (\s :: EventFilter
s@EventFilter' {} Maybe (NonEmpty DateTimeRange)
a -> EventFilter
s {$sel:endTimes:EventFilter' :: Maybe (NonEmpty DateTimeRange)
endTimes = Maybe (NonEmpty DateTimeRange)
a} :: EventFilter) 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

-- | A list of entity ARNs (unique identifiers).
eventFilter_entityArns :: Lens.Lens' EventFilter (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))
eventFilter_entityArns :: Lens' EventFilter (Maybe (NonEmpty Text))
eventFilter_entityArns = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\EventFilter' {Maybe (NonEmpty Text)
entityArns :: Maybe (NonEmpty Text)
$sel:entityArns:EventFilter' :: EventFilter -> Maybe (NonEmpty Text)
entityArns} -> Maybe (NonEmpty Text)
entityArns) (\s :: EventFilter
s@EventFilter' {} Maybe (NonEmpty Text)
a -> EventFilter
s {$sel:entityArns:EventFilter' :: Maybe (NonEmpty Text)
entityArns = Maybe (NonEmpty Text)
a} :: EventFilter) 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

-- | A list of entity identifiers, such as EC2 instance IDs (@i-34ab692e@) or
-- EBS volumes (@vol-426ab23e@).
eventFilter_entityValues :: Lens.Lens' EventFilter (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))
eventFilter_entityValues :: Lens' EventFilter (Maybe (NonEmpty Text))
eventFilter_entityValues = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\EventFilter' {Maybe (NonEmpty Text)
entityValues :: Maybe (NonEmpty Text)
$sel:entityValues:EventFilter' :: EventFilter -> Maybe (NonEmpty Text)
entityValues} -> Maybe (NonEmpty Text)
entityValues) (\s :: EventFilter
s@EventFilter' {} Maybe (NonEmpty Text)
a -> EventFilter
s {$sel:entityValues:EventFilter' :: Maybe (NonEmpty Text)
entityValues = Maybe (NonEmpty Text)
a} :: EventFilter) 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

-- | A list of event ARNs (unique identifiers). For example:
-- @\"arn:aws:health:us-east-1::event\/EC2\/EC2_INSTANCE_RETIREMENT_SCHEDULED\/EC2_INSTANCE_RETIREMENT_SCHEDULED_ABC123-CDE456\", \"arn:aws:health:us-west-1::event\/EBS\/AWS_EBS_LOST_VOLUME\/AWS_EBS_LOST_VOLUME_CHI789_JKL101\"@
eventFilter_eventArns :: Lens.Lens' EventFilter (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))
eventFilter_eventArns :: Lens' EventFilter (Maybe (NonEmpty Text))
eventFilter_eventArns = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\EventFilter' {Maybe (NonEmpty Text)
eventArns :: Maybe (NonEmpty Text)
$sel:eventArns:EventFilter' :: EventFilter -> Maybe (NonEmpty Text)
eventArns} -> Maybe (NonEmpty Text)
eventArns) (\s :: EventFilter
s@EventFilter' {} Maybe (NonEmpty Text)
a -> EventFilter
s {$sel:eventArns:EventFilter' :: Maybe (NonEmpty Text)
eventArns = Maybe (NonEmpty Text)
a} :: EventFilter) 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

-- | A list of event status codes.
eventFilter_eventStatusCodes :: Lens.Lens' EventFilter (Prelude.Maybe (Prelude.NonEmpty EventStatusCode))
eventFilter_eventStatusCodes :: Lens' EventFilter (Maybe (NonEmpty EventStatusCode))
eventFilter_eventStatusCodes = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\EventFilter' {Maybe (NonEmpty EventStatusCode)
eventStatusCodes :: Maybe (NonEmpty EventStatusCode)
$sel:eventStatusCodes:EventFilter' :: EventFilter -> Maybe (NonEmpty EventStatusCode)
eventStatusCodes} -> Maybe (NonEmpty EventStatusCode)
eventStatusCodes) (\s :: EventFilter
s@EventFilter' {} Maybe (NonEmpty EventStatusCode)
a -> EventFilter
s {$sel:eventStatusCodes:EventFilter' :: Maybe (NonEmpty EventStatusCode)
eventStatusCodes = Maybe (NonEmpty EventStatusCode)
a} :: EventFilter) 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

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

-- | A list of unique identifiers for event types. For example,
-- @\"AWS_EC2_SYSTEM_MAINTENANCE_EVENT\",\"AWS_RDS_MAINTENANCE_SCHEDULED\".@
eventFilter_eventTypeCodes :: Lens.Lens' EventFilter (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))
eventFilter_eventTypeCodes :: Lens' EventFilter (Maybe (NonEmpty Text))
eventFilter_eventTypeCodes = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\EventFilter' {Maybe (NonEmpty Text)
eventTypeCodes :: Maybe (NonEmpty Text)
$sel:eventTypeCodes:EventFilter' :: EventFilter -> Maybe (NonEmpty Text)
eventTypeCodes} -> Maybe (NonEmpty Text)
eventTypeCodes) (\s :: EventFilter
s@EventFilter' {} Maybe (NonEmpty Text)
a -> EventFilter
s {$sel:eventTypeCodes:EventFilter' :: Maybe (NonEmpty Text)
eventTypeCodes = Maybe (NonEmpty Text)
a} :: EventFilter) 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

-- | A list of dates and times that the event was last updated.
eventFilter_lastUpdatedTimes :: Lens.Lens' EventFilter (Prelude.Maybe (Prelude.NonEmpty DateTimeRange))
eventFilter_lastUpdatedTimes :: Lens' EventFilter (Maybe (NonEmpty DateTimeRange))
eventFilter_lastUpdatedTimes = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\EventFilter' {Maybe (NonEmpty DateTimeRange)
lastUpdatedTimes :: Maybe (NonEmpty DateTimeRange)
$sel:lastUpdatedTimes:EventFilter' :: EventFilter -> Maybe (NonEmpty DateTimeRange)
lastUpdatedTimes} -> Maybe (NonEmpty DateTimeRange)
lastUpdatedTimes) (\s :: EventFilter
s@EventFilter' {} Maybe (NonEmpty DateTimeRange)
a -> EventFilter
s {$sel:lastUpdatedTimes:EventFilter' :: Maybe (NonEmpty DateTimeRange)
lastUpdatedTimes = Maybe (NonEmpty DateTimeRange)
a} :: EventFilter) 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

-- | A list of Amazon Web Services Regions.
eventFilter_regions :: Lens.Lens' EventFilter (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))
eventFilter_regions :: Lens' EventFilter (Maybe (NonEmpty Text))
eventFilter_regions = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\EventFilter' {Maybe (NonEmpty Text)
regions :: Maybe (NonEmpty Text)
$sel:regions:EventFilter' :: EventFilter -> Maybe (NonEmpty Text)
regions} -> Maybe (NonEmpty Text)
regions) (\s :: EventFilter
s@EventFilter' {} Maybe (NonEmpty Text)
a -> EventFilter
s {$sel:regions:EventFilter' :: Maybe (NonEmpty Text)
regions = Maybe (NonEmpty Text)
a} :: EventFilter) 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 Web Services services associated with the event. For example,
-- @EC2@, @RDS@.
eventFilter_services :: Lens.Lens' EventFilter (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))
eventFilter_services :: Lens' EventFilter (Maybe (NonEmpty Text))
eventFilter_services = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\EventFilter' {Maybe (NonEmpty Text)
services :: Maybe (NonEmpty Text)
$sel:services:EventFilter' :: EventFilter -> Maybe (NonEmpty Text)
services} -> Maybe (NonEmpty Text)
services) (\s :: EventFilter
s@EventFilter' {} Maybe (NonEmpty Text)
a -> EventFilter
s {$sel:services:EventFilter' :: Maybe (NonEmpty Text)
services = Maybe (NonEmpty Text)
a} :: EventFilter) 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

-- | A list of dates and times that the event began.
eventFilter_startTimes :: Lens.Lens' EventFilter (Prelude.Maybe (Prelude.NonEmpty DateTimeRange))
eventFilter_startTimes :: Lens' EventFilter (Maybe (NonEmpty DateTimeRange))
eventFilter_startTimes = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\EventFilter' {Maybe (NonEmpty DateTimeRange)
startTimes :: Maybe (NonEmpty DateTimeRange)
$sel:startTimes:EventFilter' :: EventFilter -> Maybe (NonEmpty DateTimeRange)
startTimes} -> Maybe (NonEmpty DateTimeRange)
startTimes) (\s :: EventFilter
s@EventFilter' {} Maybe (NonEmpty DateTimeRange)
a -> EventFilter
s {$sel:startTimes:EventFilter' :: Maybe (NonEmpty DateTimeRange)
startTimes = Maybe (NonEmpty DateTimeRange)
a} :: EventFilter) 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

-- | A map of entity tags attached to the affected entity.
--
-- Currently, the @tags@ property isn\'t supported.
eventFilter_tags :: Lens.Lens' EventFilter (Prelude.Maybe [Prelude.HashMap Prelude.Text Prelude.Text])
eventFilter_tags :: Lens' EventFilter (Maybe [HashMap Text Text])
eventFilter_tags = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\EventFilter' {Maybe [HashMap Text Text]
tags :: Maybe [HashMap Text Text]
$sel:tags:EventFilter' :: EventFilter -> Maybe [HashMap Text Text]
tags} -> Maybe [HashMap Text Text]
tags) (\s :: EventFilter
s@EventFilter' {} Maybe [HashMap Text Text]
a -> EventFilter
s {$sel:tags:EventFilter' :: Maybe [HashMap Text Text]
tags = Maybe [HashMap Text Text]
a} :: EventFilter) 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 EventFilter where
  hashWithSalt :: Int -> EventFilter -> Int
hashWithSalt Int
_salt EventFilter' {Maybe [Text]
Maybe [HashMap Text Text]
Maybe (NonEmpty Text)
Maybe (NonEmpty DateTimeRange)
Maybe (NonEmpty EventStatusCode)
Maybe (NonEmpty EventTypeCategory)
tags :: Maybe [HashMap Text Text]
startTimes :: Maybe (NonEmpty DateTimeRange)
services :: Maybe (NonEmpty Text)
regions :: Maybe (NonEmpty Text)
lastUpdatedTimes :: Maybe (NonEmpty DateTimeRange)
eventTypeCodes :: Maybe (NonEmpty Text)
eventTypeCategories :: Maybe (NonEmpty EventTypeCategory)
eventStatusCodes :: Maybe (NonEmpty EventStatusCode)
eventArns :: Maybe (NonEmpty Text)
entityValues :: Maybe (NonEmpty Text)
entityArns :: Maybe (NonEmpty Text)
endTimes :: Maybe (NonEmpty DateTimeRange)
availabilityZones :: Maybe [Text]
$sel:tags:EventFilter' :: EventFilter -> Maybe [HashMap Text Text]
$sel:startTimes:EventFilter' :: EventFilter -> Maybe (NonEmpty DateTimeRange)
$sel:services:EventFilter' :: EventFilter -> Maybe (NonEmpty Text)
$sel:regions:EventFilter' :: EventFilter -> Maybe (NonEmpty Text)
$sel:lastUpdatedTimes:EventFilter' :: EventFilter -> Maybe (NonEmpty DateTimeRange)
$sel:eventTypeCodes:EventFilter' :: EventFilter -> Maybe (NonEmpty Text)
$sel:eventTypeCategories:EventFilter' :: EventFilter -> Maybe (NonEmpty EventTypeCategory)
$sel:eventStatusCodes:EventFilter' :: EventFilter -> Maybe (NonEmpty EventStatusCode)
$sel:eventArns:EventFilter' :: EventFilter -> Maybe (NonEmpty Text)
$sel:entityValues:EventFilter' :: EventFilter -> Maybe (NonEmpty Text)
$sel:entityArns:EventFilter' :: EventFilter -> Maybe (NonEmpty Text)
$sel:endTimes:EventFilter' :: EventFilter -> Maybe (NonEmpty DateTimeRange)
$sel:availabilityZones:EventFilter' :: EventFilter -> Maybe [Text]
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Text]
availabilityZones
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (NonEmpty DateTimeRange)
endTimes
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (NonEmpty Text)
entityArns
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (NonEmpty Text)
entityValues
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (NonEmpty Text)
eventArns
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (NonEmpty EventStatusCode)
eventStatusCodes
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (NonEmpty EventTypeCategory)
eventTypeCategories
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (NonEmpty Text)
eventTypeCodes
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (NonEmpty DateTimeRange)
lastUpdatedTimes
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (NonEmpty Text)
regions
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (NonEmpty Text)
services
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (NonEmpty DateTimeRange)
startTimes
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [HashMap Text Text]
tags

instance Prelude.NFData EventFilter where
  rnf :: EventFilter -> ()
rnf EventFilter' {Maybe [Text]
Maybe [HashMap Text Text]
Maybe (NonEmpty Text)
Maybe (NonEmpty DateTimeRange)
Maybe (NonEmpty EventStatusCode)
Maybe (NonEmpty EventTypeCategory)
tags :: Maybe [HashMap Text Text]
startTimes :: Maybe (NonEmpty DateTimeRange)
services :: Maybe (NonEmpty Text)
regions :: Maybe (NonEmpty Text)
lastUpdatedTimes :: Maybe (NonEmpty DateTimeRange)
eventTypeCodes :: Maybe (NonEmpty Text)
eventTypeCategories :: Maybe (NonEmpty EventTypeCategory)
eventStatusCodes :: Maybe (NonEmpty EventStatusCode)
eventArns :: Maybe (NonEmpty Text)
entityValues :: Maybe (NonEmpty Text)
entityArns :: Maybe (NonEmpty Text)
endTimes :: Maybe (NonEmpty DateTimeRange)
availabilityZones :: Maybe [Text]
$sel:tags:EventFilter' :: EventFilter -> Maybe [HashMap Text Text]
$sel:startTimes:EventFilter' :: EventFilter -> Maybe (NonEmpty DateTimeRange)
$sel:services:EventFilter' :: EventFilter -> Maybe (NonEmpty Text)
$sel:regions:EventFilter' :: EventFilter -> Maybe (NonEmpty Text)
$sel:lastUpdatedTimes:EventFilter' :: EventFilter -> Maybe (NonEmpty DateTimeRange)
$sel:eventTypeCodes:EventFilter' :: EventFilter -> Maybe (NonEmpty Text)
$sel:eventTypeCategories:EventFilter' :: EventFilter -> Maybe (NonEmpty EventTypeCategory)
$sel:eventStatusCodes:EventFilter' :: EventFilter -> Maybe (NonEmpty EventStatusCode)
$sel:eventArns:EventFilter' :: EventFilter -> Maybe (NonEmpty Text)
$sel:entityValues:EventFilter' :: EventFilter -> Maybe (NonEmpty Text)
$sel:entityArns:EventFilter' :: EventFilter -> Maybe (NonEmpty Text)
$sel:endTimes:EventFilter' :: EventFilter -> Maybe (NonEmpty DateTimeRange)
$sel:availabilityZones:EventFilter' :: EventFilter -> Maybe [Text]
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe [Text]
availabilityZones
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (NonEmpty DateTimeRange)
endTimes
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (NonEmpty Text)
entityArns
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (NonEmpty Text)
entityValues
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (NonEmpty Text)
eventArns
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (NonEmpty EventStatusCode)
eventStatusCodes
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (NonEmpty EventTypeCategory)
eventTypeCategories
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (NonEmpty Text)
eventTypeCodes
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (NonEmpty DateTimeRange)
lastUpdatedTimes
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (NonEmpty Text)
regions
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (NonEmpty Text)
services
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (NonEmpty DateTimeRange)
startTimes
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [HashMap Text Text]
tags

instance Data.ToJSON EventFilter where
  toJSON :: EventFilter -> Value
toJSON EventFilter' {Maybe [Text]
Maybe [HashMap Text Text]
Maybe (NonEmpty Text)
Maybe (NonEmpty DateTimeRange)
Maybe (NonEmpty EventStatusCode)
Maybe (NonEmpty EventTypeCategory)
tags :: Maybe [HashMap Text Text]
startTimes :: Maybe (NonEmpty DateTimeRange)
services :: Maybe (NonEmpty Text)
regions :: Maybe (NonEmpty Text)
lastUpdatedTimes :: Maybe (NonEmpty DateTimeRange)
eventTypeCodes :: Maybe (NonEmpty Text)
eventTypeCategories :: Maybe (NonEmpty EventTypeCategory)
eventStatusCodes :: Maybe (NonEmpty EventStatusCode)
eventArns :: Maybe (NonEmpty Text)
entityValues :: Maybe (NonEmpty Text)
entityArns :: Maybe (NonEmpty Text)
endTimes :: Maybe (NonEmpty DateTimeRange)
availabilityZones :: Maybe [Text]
$sel:tags:EventFilter' :: EventFilter -> Maybe [HashMap Text Text]
$sel:startTimes:EventFilter' :: EventFilter -> Maybe (NonEmpty DateTimeRange)
$sel:services:EventFilter' :: EventFilter -> Maybe (NonEmpty Text)
$sel:regions:EventFilter' :: EventFilter -> Maybe (NonEmpty Text)
$sel:lastUpdatedTimes:EventFilter' :: EventFilter -> Maybe (NonEmpty DateTimeRange)
$sel:eventTypeCodes:EventFilter' :: EventFilter -> Maybe (NonEmpty Text)
$sel:eventTypeCategories:EventFilter' :: EventFilter -> Maybe (NonEmpty EventTypeCategory)
$sel:eventStatusCodes:EventFilter' :: EventFilter -> Maybe (NonEmpty EventStatusCode)
$sel:eventArns:EventFilter' :: EventFilter -> Maybe (NonEmpty Text)
$sel:entityValues:EventFilter' :: EventFilter -> Maybe (NonEmpty Text)
$sel:entityArns:EventFilter' :: EventFilter -> Maybe (NonEmpty Text)
$sel:endTimes:EventFilter' :: EventFilter -> Maybe (NonEmpty DateTimeRange)
$sel:availabilityZones:EventFilter' :: EventFilter -> Maybe [Text]
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"availabilityZones" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [Text]
availabilityZones,
            (Key
"endTimes" 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 DateTimeRange)
endTimes,
            (Key
"entityArns" 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 Text)
entityArns,
            (Key
"entityValues" 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 Text)
entityValues,
            (Key
"eventArns" 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 Text)
eventArns,
            (Key
"eventStatusCodes" 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 EventStatusCode)
eventStatusCodes,
            (Key
"eventTypeCategories" 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 EventTypeCategory)
eventTypeCategories,
            (Key
"eventTypeCodes" 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 Text)
eventTypeCodes,
            (Key
"lastUpdatedTimes" 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 DateTimeRange)
lastUpdatedTimes,
            (Key
"regions" 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 Text)
regions,
            (Key
"services" 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 Text)
services,
            (Key
"startTimes" 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 DateTimeRange)
startTimes,
            (Key
"tags" 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 [HashMap Text Text]
tags
          ]
      )