{-# 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.CostExplorer.Types.AnomalyMonitor
-- 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.CostExplorer.Types.AnomalyMonitor where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import Amazonka.CostExplorer.Types.Expression
import Amazonka.CostExplorer.Types.MonitorDimension
import Amazonka.CostExplorer.Types.MonitorType
import qualified Amazonka.Data as Data
import qualified Amazonka.Prelude as Prelude

-- | This object continuously inspects your account\'s cost data for
-- anomalies. It\'s based on @MonitorType@ and @MonitorSpecification@. The
-- content consists of detailed metadata and the current status of the
-- monitor object.
--
-- /See:/ 'newAnomalyMonitor' smart constructor.
data AnomalyMonitor = AnomalyMonitor'
  { -- | The date when the monitor was created.
    AnomalyMonitor -> Maybe Text
creationDate :: Prelude.Maybe Prelude.Text,
    -- | The value for evaluated dimensions.
    AnomalyMonitor -> Maybe Natural
dimensionalValueCount :: Prelude.Maybe Prelude.Natural,
    -- | The date when the monitor last evaluated for anomalies.
    AnomalyMonitor -> Maybe Text
lastEvaluatedDate :: Prelude.Maybe Prelude.Text,
    -- | The date when the monitor was last updated.
    AnomalyMonitor -> Maybe Text
lastUpdatedDate :: Prelude.Maybe Prelude.Text,
    -- | The Amazon Resource Name (ARN) value.
    AnomalyMonitor -> Maybe Text
monitorArn :: Prelude.Maybe Prelude.Text,
    -- | The dimensions to evaluate.
    AnomalyMonitor -> Maybe MonitorDimension
monitorDimension :: Prelude.Maybe MonitorDimension,
    AnomalyMonitor -> Maybe Expression
monitorSpecification :: Prelude.Maybe Expression,
    -- | The name of the monitor.
    AnomalyMonitor -> Text
monitorName :: Prelude.Text,
    -- | The possible type values.
    AnomalyMonitor -> MonitorType
monitorType :: MonitorType
  }
  deriving (AnomalyMonitor -> AnomalyMonitor -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: AnomalyMonitor -> AnomalyMonitor -> Bool
$c/= :: AnomalyMonitor -> AnomalyMonitor -> Bool
== :: AnomalyMonitor -> AnomalyMonitor -> Bool
$c== :: AnomalyMonitor -> AnomalyMonitor -> Bool
Prelude.Eq, ReadPrec [AnomalyMonitor]
ReadPrec AnomalyMonitor
Int -> ReadS AnomalyMonitor
ReadS [AnomalyMonitor]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [AnomalyMonitor]
$creadListPrec :: ReadPrec [AnomalyMonitor]
readPrec :: ReadPrec AnomalyMonitor
$creadPrec :: ReadPrec AnomalyMonitor
readList :: ReadS [AnomalyMonitor]
$creadList :: ReadS [AnomalyMonitor]
readsPrec :: Int -> ReadS AnomalyMonitor
$creadsPrec :: Int -> ReadS AnomalyMonitor
Prelude.Read, Int -> AnomalyMonitor -> ShowS
[AnomalyMonitor] -> ShowS
AnomalyMonitor -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [AnomalyMonitor] -> ShowS
$cshowList :: [AnomalyMonitor] -> ShowS
show :: AnomalyMonitor -> String
$cshow :: AnomalyMonitor -> String
showsPrec :: Int -> AnomalyMonitor -> ShowS
$cshowsPrec :: Int -> AnomalyMonitor -> ShowS
Prelude.Show, forall x. Rep AnomalyMonitor x -> AnomalyMonitor
forall x. AnomalyMonitor -> Rep AnomalyMonitor x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep AnomalyMonitor x -> AnomalyMonitor
$cfrom :: forall x. AnomalyMonitor -> Rep AnomalyMonitor x
Prelude.Generic)

-- |
-- Create a value of 'AnomalyMonitor' 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:
--
-- 'creationDate', 'anomalyMonitor_creationDate' - The date when the monitor was created.
--
-- 'dimensionalValueCount', 'anomalyMonitor_dimensionalValueCount' - The value for evaluated dimensions.
--
-- 'lastEvaluatedDate', 'anomalyMonitor_lastEvaluatedDate' - The date when the monitor last evaluated for anomalies.
--
-- 'lastUpdatedDate', 'anomalyMonitor_lastUpdatedDate' - The date when the monitor was last updated.
--
-- 'monitorArn', 'anomalyMonitor_monitorArn' - The Amazon Resource Name (ARN) value.
--
-- 'monitorDimension', 'anomalyMonitor_monitorDimension' - The dimensions to evaluate.
--
-- 'monitorSpecification', 'anomalyMonitor_monitorSpecification' - Undocumented member.
--
-- 'monitorName', 'anomalyMonitor_monitorName' - The name of the monitor.
--
-- 'monitorType', 'anomalyMonitor_monitorType' - The possible type values.
newAnomalyMonitor ::
  -- | 'monitorName'
  Prelude.Text ->
  -- | 'monitorType'
  MonitorType ->
  AnomalyMonitor
newAnomalyMonitor :: Text -> MonitorType -> AnomalyMonitor
newAnomalyMonitor Text
pMonitorName_ MonitorType
pMonitorType_ =
  AnomalyMonitor'
    { $sel:creationDate:AnomalyMonitor' :: Maybe Text
creationDate = forall a. Maybe a
Prelude.Nothing,
      $sel:dimensionalValueCount:AnomalyMonitor' :: Maybe Natural
dimensionalValueCount = forall a. Maybe a
Prelude.Nothing,
      $sel:lastEvaluatedDate:AnomalyMonitor' :: Maybe Text
lastEvaluatedDate = forall a. Maybe a
Prelude.Nothing,
      $sel:lastUpdatedDate:AnomalyMonitor' :: Maybe Text
lastUpdatedDate = forall a. Maybe a
Prelude.Nothing,
      $sel:monitorArn:AnomalyMonitor' :: Maybe Text
monitorArn = forall a. Maybe a
Prelude.Nothing,
      $sel:monitorDimension:AnomalyMonitor' :: Maybe MonitorDimension
monitorDimension = forall a. Maybe a
Prelude.Nothing,
      $sel:monitorSpecification:AnomalyMonitor' :: Maybe Expression
monitorSpecification = forall a. Maybe a
Prelude.Nothing,
      $sel:monitorName:AnomalyMonitor' :: Text
monitorName = Text
pMonitorName_,
      $sel:monitorType:AnomalyMonitor' :: MonitorType
monitorType = MonitorType
pMonitorType_
    }

-- | The date when the monitor was created.
anomalyMonitor_creationDate :: Lens.Lens' AnomalyMonitor (Prelude.Maybe Prelude.Text)
anomalyMonitor_creationDate :: Lens' AnomalyMonitor (Maybe Text)
anomalyMonitor_creationDate = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AnomalyMonitor' {Maybe Text
creationDate :: Maybe Text
$sel:creationDate:AnomalyMonitor' :: AnomalyMonitor -> Maybe Text
creationDate} -> Maybe Text
creationDate) (\s :: AnomalyMonitor
s@AnomalyMonitor' {} Maybe Text
a -> AnomalyMonitor
s {$sel:creationDate:AnomalyMonitor' :: Maybe Text
creationDate = Maybe Text
a} :: AnomalyMonitor)

-- | The value for evaluated dimensions.
anomalyMonitor_dimensionalValueCount :: Lens.Lens' AnomalyMonitor (Prelude.Maybe Prelude.Natural)
anomalyMonitor_dimensionalValueCount :: Lens' AnomalyMonitor (Maybe Natural)
anomalyMonitor_dimensionalValueCount = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AnomalyMonitor' {Maybe Natural
dimensionalValueCount :: Maybe Natural
$sel:dimensionalValueCount:AnomalyMonitor' :: AnomalyMonitor -> Maybe Natural
dimensionalValueCount} -> Maybe Natural
dimensionalValueCount) (\s :: AnomalyMonitor
s@AnomalyMonitor' {} Maybe Natural
a -> AnomalyMonitor
s {$sel:dimensionalValueCount:AnomalyMonitor' :: Maybe Natural
dimensionalValueCount = Maybe Natural
a} :: AnomalyMonitor)

-- | The date when the monitor last evaluated for anomalies.
anomalyMonitor_lastEvaluatedDate :: Lens.Lens' AnomalyMonitor (Prelude.Maybe Prelude.Text)
anomalyMonitor_lastEvaluatedDate :: Lens' AnomalyMonitor (Maybe Text)
anomalyMonitor_lastEvaluatedDate = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AnomalyMonitor' {Maybe Text
lastEvaluatedDate :: Maybe Text
$sel:lastEvaluatedDate:AnomalyMonitor' :: AnomalyMonitor -> Maybe Text
lastEvaluatedDate} -> Maybe Text
lastEvaluatedDate) (\s :: AnomalyMonitor
s@AnomalyMonitor' {} Maybe Text
a -> AnomalyMonitor
s {$sel:lastEvaluatedDate:AnomalyMonitor' :: Maybe Text
lastEvaluatedDate = Maybe Text
a} :: AnomalyMonitor)

-- | The date when the monitor was last updated.
anomalyMonitor_lastUpdatedDate :: Lens.Lens' AnomalyMonitor (Prelude.Maybe Prelude.Text)
anomalyMonitor_lastUpdatedDate :: Lens' AnomalyMonitor (Maybe Text)
anomalyMonitor_lastUpdatedDate = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AnomalyMonitor' {Maybe Text
lastUpdatedDate :: Maybe Text
$sel:lastUpdatedDate:AnomalyMonitor' :: AnomalyMonitor -> Maybe Text
lastUpdatedDate} -> Maybe Text
lastUpdatedDate) (\s :: AnomalyMonitor
s@AnomalyMonitor' {} Maybe Text
a -> AnomalyMonitor
s {$sel:lastUpdatedDate:AnomalyMonitor' :: Maybe Text
lastUpdatedDate = Maybe Text
a} :: AnomalyMonitor)

-- | The Amazon Resource Name (ARN) value.
anomalyMonitor_monitorArn :: Lens.Lens' AnomalyMonitor (Prelude.Maybe Prelude.Text)
anomalyMonitor_monitorArn :: Lens' AnomalyMonitor (Maybe Text)
anomalyMonitor_monitorArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AnomalyMonitor' {Maybe Text
monitorArn :: Maybe Text
$sel:monitorArn:AnomalyMonitor' :: AnomalyMonitor -> Maybe Text
monitorArn} -> Maybe Text
monitorArn) (\s :: AnomalyMonitor
s@AnomalyMonitor' {} Maybe Text
a -> AnomalyMonitor
s {$sel:monitorArn:AnomalyMonitor' :: Maybe Text
monitorArn = Maybe Text
a} :: AnomalyMonitor)

-- | The dimensions to evaluate.
anomalyMonitor_monitorDimension :: Lens.Lens' AnomalyMonitor (Prelude.Maybe MonitorDimension)
anomalyMonitor_monitorDimension :: Lens' AnomalyMonitor (Maybe MonitorDimension)
anomalyMonitor_monitorDimension = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AnomalyMonitor' {Maybe MonitorDimension
monitorDimension :: Maybe MonitorDimension
$sel:monitorDimension:AnomalyMonitor' :: AnomalyMonitor -> Maybe MonitorDimension
monitorDimension} -> Maybe MonitorDimension
monitorDimension) (\s :: AnomalyMonitor
s@AnomalyMonitor' {} Maybe MonitorDimension
a -> AnomalyMonitor
s {$sel:monitorDimension:AnomalyMonitor' :: Maybe MonitorDimension
monitorDimension = Maybe MonitorDimension
a} :: AnomalyMonitor)

-- | Undocumented member.
anomalyMonitor_monitorSpecification :: Lens.Lens' AnomalyMonitor (Prelude.Maybe Expression)
anomalyMonitor_monitorSpecification :: Lens' AnomalyMonitor (Maybe Expression)
anomalyMonitor_monitorSpecification = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AnomalyMonitor' {Maybe Expression
monitorSpecification :: Maybe Expression
$sel:monitorSpecification:AnomalyMonitor' :: AnomalyMonitor -> Maybe Expression
monitorSpecification} -> Maybe Expression
monitorSpecification) (\s :: AnomalyMonitor
s@AnomalyMonitor' {} Maybe Expression
a -> AnomalyMonitor
s {$sel:monitorSpecification:AnomalyMonitor' :: Maybe Expression
monitorSpecification = Maybe Expression
a} :: AnomalyMonitor)

-- | The name of the monitor.
anomalyMonitor_monitorName :: Lens.Lens' AnomalyMonitor Prelude.Text
anomalyMonitor_monitorName :: Lens' AnomalyMonitor Text
anomalyMonitor_monitorName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AnomalyMonitor' {Text
monitorName :: Text
$sel:monitorName:AnomalyMonitor' :: AnomalyMonitor -> Text
monitorName} -> Text
monitorName) (\s :: AnomalyMonitor
s@AnomalyMonitor' {} Text
a -> AnomalyMonitor
s {$sel:monitorName:AnomalyMonitor' :: Text
monitorName = Text
a} :: AnomalyMonitor)

-- | The possible type values.
anomalyMonitor_monitorType :: Lens.Lens' AnomalyMonitor MonitorType
anomalyMonitor_monitorType :: Lens' AnomalyMonitor MonitorType
anomalyMonitor_monitorType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AnomalyMonitor' {MonitorType
monitorType :: MonitorType
$sel:monitorType:AnomalyMonitor' :: AnomalyMonitor -> MonitorType
monitorType} -> MonitorType
monitorType) (\s :: AnomalyMonitor
s@AnomalyMonitor' {} MonitorType
a -> AnomalyMonitor
s {$sel:monitorType:AnomalyMonitor' :: MonitorType
monitorType = MonitorType
a} :: AnomalyMonitor)

instance Data.FromJSON AnomalyMonitor where
  parseJSON :: Value -> Parser AnomalyMonitor
parseJSON =
    forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
      String
"AnomalyMonitor"
      ( \Object
x ->
          Maybe Text
-> Maybe Natural
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe MonitorDimension
-> Maybe Expression
-> Text
-> MonitorType
-> AnomalyMonitor
AnomalyMonitor'
            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
"CreationDate")
            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
"DimensionalValueCount")
            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
"LastEvaluatedDate")
            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
"LastUpdatedDate")
            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
"MonitorArn")
            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
"MonitorDimension")
            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
"MonitorSpecification")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser a
Data..: Key
"MonitorName")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser a
Data..: Key
"MonitorType")
      )

instance Prelude.Hashable AnomalyMonitor where
  hashWithSalt :: Int -> AnomalyMonitor -> Int
hashWithSalt Int
_salt AnomalyMonitor' {Maybe Natural
Maybe Text
Maybe MonitorDimension
Maybe Expression
Text
MonitorType
monitorType :: MonitorType
monitorName :: Text
monitorSpecification :: Maybe Expression
monitorDimension :: Maybe MonitorDimension
monitorArn :: Maybe Text
lastUpdatedDate :: Maybe Text
lastEvaluatedDate :: Maybe Text
dimensionalValueCount :: Maybe Natural
creationDate :: Maybe Text
$sel:monitorType:AnomalyMonitor' :: AnomalyMonitor -> MonitorType
$sel:monitorName:AnomalyMonitor' :: AnomalyMonitor -> Text
$sel:monitorSpecification:AnomalyMonitor' :: AnomalyMonitor -> Maybe Expression
$sel:monitorDimension:AnomalyMonitor' :: AnomalyMonitor -> Maybe MonitorDimension
$sel:monitorArn:AnomalyMonitor' :: AnomalyMonitor -> Maybe Text
$sel:lastUpdatedDate:AnomalyMonitor' :: AnomalyMonitor -> Maybe Text
$sel:lastEvaluatedDate:AnomalyMonitor' :: AnomalyMonitor -> Maybe Text
$sel:dimensionalValueCount:AnomalyMonitor' :: AnomalyMonitor -> Maybe Natural
$sel:creationDate:AnomalyMonitor' :: AnomalyMonitor -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
creationDate
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
dimensionalValueCount
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
lastEvaluatedDate
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
lastUpdatedDate
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
monitorArn
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe MonitorDimension
monitorDimension
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Expression
monitorSpecification
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
monitorName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` MonitorType
monitorType

instance Prelude.NFData AnomalyMonitor where
  rnf :: AnomalyMonitor -> ()
rnf AnomalyMonitor' {Maybe Natural
Maybe Text
Maybe MonitorDimension
Maybe Expression
Text
MonitorType
monitorType :: MonitorType
monitorName :: Text
monitorSpecification :: Maybe Expression
monitorDimension :: Maybe MonitorDimension
monitorArn :: Maybe Text
lastUpdatedDate :: Maybe Text
lastEvaluatedDate :: Maybe Text
dimensionalValueCount :: Maybe Natural
creationDate :: Maybe Text
$sel:monitorType:AnomalyMonitor' :: AnomalyMonitor -> MonitorType
$sel:monitorName:AnomalyMonitor' :: AnomalyMonitor -> Text
$sel:monitorSpecification:AnomalyMonitor' :: AnomalyMonitor -> Maybe Expression
$sel:monitorDimension:AnomalyMonitor' :: AnomalyMonitor -> Maybe MonitorDimension
$sel:monitorArn:AnomalyMonitor' :: AnomalyMonitor -> Maybe Text
$sel:lastUpdatedDate:AnomalyMonitor' :: AnomalyMonitor -> Maybe Text
$sel:lastEvaluatedDate:AnomalyMonitor' :: AnomalyMonitor -> Maybe Text
$sel:dimensionalValueCount:AnomalyMonitor' :: AnomalyMonitor -> Maybe Natural
$sel:creationDate:AnomalyMonitor' :: AnomalyMonitor -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
creationDate
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Natural
dimensionalValueCount
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
lastEvaluatedDate
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
lastUpdatedDate
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
monitorArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe MonitorDimension
monitorDimension
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Expression
monitorSpecification
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
monitorName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf MonitorType
monitorType

instance Data.ToJSON AnomalyMonitor where
  toJSON :: AnomalyMonitor -> Value
toJSON AnomalyMonitor' {Maybe Natural
Maybe Text
Maybe MonitorDimension
Maybe Expression
Text
MonitorType
monitorType :: MonitorType
monitorName :: Text
monitorSpecification :: Maybe Expression
monitorDimension :: Maybe MonitorDimension
monitorArn :: Maybe Text
lastUpdatedDate :: Maybe Text
lastEvaluatedDate :: Maybe Text
dimensionalValueCount :: Maybe Natural
creationDate :: Maybe Text
$sel:monitorType:AnomalyMonitor' :: AnomalyMonitor -> MonitorType
$sel:monitorName:AnomalyMonitor' :: AnomalyMonitor -> Text
$sel:monitorSpecification:AnomalyMonitor' :: AnomalyMonitor -> Maybe Expression
$sel:monitorDimension:AnomalyMonitor' :: AnomalyMonitor -> Maybe MonitorDimension
$sel:monitorArn:AnomalyMonitor' :: AnomalyMonitor -> Maybe Text
$sel:lastUpdatedDate:AnomalyMonitor' :: AnomalyMonitor -> Maybe Text
$sel:lastEvaluatedDate:AnomalyMonitor' :: AnomalyMonitor -> Maybe Text
$sel:dimensionalValueCount:AnomalyMonitor' :: AnomalyMonitor -> Maybe Natural
$sel:creationDate:AnomalyMonitor' :: AnomalyMonitor -> Maybe Text
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"CreationDate" 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
creationDate,
            (Key
"DimensionalValueCount" 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 Natural
dimensionalValueCount,
            (Key
"LastEvaluatedDate" 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
lastEvaluatedDate,
            (Key
"LastUpdatedDate" 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
lastUpdatedDate,
            (Key
"MonitorArn" 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
monitorArn,
            (Key
"MonitorDimension" 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 MonitorDimension
monitorDimension,
            (Key
"MonitorSpecification" 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 Expression
monitorSpecification,
            forall a. a -> Maybe a
Prelude.Just (Key
"MonitorName" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
monitorName),
            forall a. a -> Maybe a
Prelude.Just (Key
"MonitorType" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= MonitorType
monitorType)
          ]
      )