{-# 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.CloudWatch.Types.MetricDataQuery -- 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.CloudWatch.Types.MetricDataQuery where import Amazonka.CloudWatch.Types.MetricStat 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 -- | This structure is used in both @GetMetricData@ and @PutMetricAlarm@. The -- supported use of this structure is different for those two operations. -- -- When used in @GetMetricData@, it indicates the metric data to return, -- and whether this call is just retrieving a batch set of data for one -- metric, or is performing a Metrics Insights query or a math expression. -- A single @GetMetricData@ call can include up to 500 @MetricDataQuery@ -- structures. -- -- When used in @PutMetricAlarm@, it enables you to create an alarm based -- on a metric math expression. Each @MetricDataQuery@ in the array -- specifies either a metric to retrieve, or a math expression to be -- performed on retrieved metrics. A single @PutMetricAlarm@ call can -- include up to 20 @MetricDataQuery@ structures in the array. The 20 -- structures can include as many as 10 structures that contain a -- @MetricStat@ parameter to retrieve a metric, and as many as 10 -- structures that contain the @Expression@ parameter to perform a math -- expression. Of those @Expression@ structures, one must have @true@ as -- the value for @ReturnData@. The result of this expression is the value -- the alarm watches. -- -- Any expression used in a @PutMetricAlarm@ operation must return a single -- time series. For more information, see -- <https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/using-metric-math.html#metric-math-syntax Metric Math Syntax and Functions> -- in the /Amazon CloudWatch User Guide/. -- -- Some of the parameters of this structure also have different uses -- whether you are using this structure in a @GetMetricData@ operation or a -- @PutMetricAlarm@ operation. These differences are explained in the -- following parameter list. -- -- /See:/ 'newMetricDataQuery' smart constructor. data MetricDataQuery = MetricDataQuery' { -- | The ID of the account where the metrics are located. -- -- If you are performing a @GetMetricData@ operation in a monitoring -- account, use this to specify which account to retrieve this metric from. -- -- If you are performing a @PutMetricAlarm@ operation, use this to specify -- which account contains the metric that the alarm is watching. MetricDataQuery -> Maybe Text accountId :: Prelude.Maybe Prelude.Text, -- | This field can contain either a Metrics Insights query, or a metric math -- expression to be performed on the returned data. For more information -- about Metrics Insights queries, see -- <https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch-metrics-insights-querylanguage Metrics Insights query components and syntax> -- in the /Amazon CloudWatch User Guide/. -- -- A math expression can use the @Id@ of the other metrics or queries to -- refer to those metrics, and can also use the @Id@ of other expressions -- to use the result of those expressions. For more information about -- metric math expressions, see -- <https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/using-metric-math.html#metric-math-syntax Metric Math Syntax and Functions> -- in the /Amazon CloudWatch User Guide/. -- -- Within each MetricDataQuery object, you must specify either @Expression@ -- or @MetricStat@ but not both. MetricDataQuery -> Maybe Text expression :: Prelude.Maybe Prelude.Text, -- | A human-readable label for this metric or expression. This is especially -- useful if this is an expression, so that you know what the value -- represents. If the metric or expression is shown in a CloudWatch -- dashboard widget, the label is shown. If Label is omitted, CloudWatch -- generates a default. -- -- You can put dynamic expressions into a label, so that it is more -- descriptive. For more information, see -- <https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/graph-dynamic-labels.html Using Dynamic Labels>. MetricDataQuery -> Maybe Text label :: Prelude.Maybe Prelude.Text, -- | The metric to be returned, along with statistics, period, and units. Use -- this parameter only if this object is retrieving a metric and not -- performing a math expression on returned data. -- -- Within one MetricDataQuery object, you must specify either @Expression@ -- or @MetricStat@ but not both. MetricDataQuery -> Maybe MetricStat metricStat :: Prelude.Maybe MetricStat, -- | The granularity, in seconds, of the returned data points. For metrics -- with regular resolution, a period can be as short as one minute (60 -- seconds) and must be a multiple of 60. For high-resolution metrics that -- are collected at intervals of less than one minute, the period can be 1, -- 5, 10, 30, 60, or any multiple of 60. High-resolution metrics are those -- metrics stored by a @PutMetricData@ operation that includes a -- @StorageResolution of 1 second@. MetricDataQuery -> Maybe Natural period :: Prelude.Maybe Prelude.Natural, -- | When used in @GetMetricData@, this option indicates whether to return -- the timestamps and raw data values of this metric. If you are performing -- this call just to do math expressions and do not also need the raw data -- returned, you can specify @false@. If you omit this, the default of -- @true@ is used. -- -- When used in @PutMetricAlarm@, specify @true@ for the one expression -- result to use as the alarm. For all other metrics and expressions in the -- same @PutMetricAlarm@ operation, specify @ReturnData@ as False. MetricDataQuery -> Maybe Bool returnData :: Prelude.Maybe Prelude.Bool, -- | A short name used to tie this object to the results in the response. -- This name must be unique within a single call to @GetMetricData@. If you -- are performing math expressions on this set of data, this name -- represents that data and can serve as a variable in the mathematical -- expression. The valid characters are letters, numbers, and underscore. -- The first character must be a lowercase letter. MetricDataQuery -> Text id :: Prelude.Text } deriving (MetricDataQuery -> MetricDataQuery -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: MetricDataQuery -> MetricDataQuery -> Bool $c/= :: MetricDataQuery -> MetricDataQuery -> Bool == :: MetricDataQuery -> MetricDataQuery -> Bool $c== :: MetricDataQuery -> MetricDataQuery -> Bool Prelude.Eq, ReadPrec [MetricDataQuery] ReadPrec MetricDataQuery Int -> ReadS MetricDataQuery ReadS [MetricDataQuery] forall a. (Int -> ReadS a) -> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a readListPrec :: ReadPrec [MetricDataQuery] $creadListPrec :: ReadPrec [MetricDataQuery] readPrec :: ReadPrec MetricDataQuery $creadPrec :: ReadPrec MetricDataQuery readList :: ReadS [MetricDataQuery] $creadList :: ReadS [MetricDataQuery] readsPrec :: Int -> ReadS MetricDataQuery $creadsPrec :: Int -> ReadS MetricDataQuery Prelude.Read, Int -> MetricDataQuery -> ShowS [MetricDataQuery] -> ShowS MetricDataQuery -> String forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a showList :: [MetricDataQuery] -> ShowS $cshowList :: [MetricDataQuery] -> ShowS show :: MetricDataQuery -> String $cshow :: MetricDataQuery -> String showsPrec :: Int -> MetricDataQuery -> ShowS $cshowsPrec :: Int -> MetricDataQuery -> ShowS Prelude.Show, forall x. Rep MetricDataQuery x -> MetricDataQuery forall x. MetricDataQuery -> Rep MetricDataQuery x forall a. (forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a $cto :: forall x. Rep MetricDataQuery x -> MetricDataQuery $cfrom :: forall x. MetricDataQuery -> Rep MetricDataQuery x Prelude.Generic) -- | -- Create a value of 'MetricDataQuery' 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: -- -- 'accountId', 'metricDataQuery_accountId' - The ID of the account where the metrics are located. -- -- If you are performing a @GetMetricData@ operation in a monitoring -- account, use this to specify which account to retrieve this metric from. -- -- If you are performing a @PutMetricAlarm@ operation, use this to specify -- which account contains the metric that the alarm is watching. -- -- 'expression', 'metricDataQuery_expression' - This field can contain either a Metrics Insights query, or a metric math -- expression to be performed on the returned data. For more information -- about Metrics Insights queries, see -- <https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch-metrics-insights-querylanguage Metrics Insights query components and syntax> -- in the /Amazon CloudWatch User Guide/. -- -- A math expression can use the @Id@ of the other metrics or queries to -- refer to those metrics, and can also use the @Id@ of other expressions -- to use the result of those expressions. For more information about -- metric math expressions, see -- <https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/using-metric-math.html#metric-math-syntax Metric Math Syntax and Functions> -- in the /Amazon CloudWatch User Guide/. -- -- Within each MetricDataQuery object, you must specify either @Expression@ -- or @MetricStat@ but not both. -- -- 'label', 'metricDataQuery_label' - A human-readable label for this metric or expression. This is especially -- useful if this is an expression, so that you know what the value -- represents. If the metric or expression is shown in a CloudWatch -- dashboard widget, the label is shown. If Label is omitted, CloudWatch -- generates a default. -- -- You can put dynamic expressions into a label, so that it is more -- descriptive. For more information, see -- <https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/graph-dynamic-labels.html Using Dynamic Labels>. -- -- 'metricStat', 'metricDataQuery_metricStat' - The metric to be returned, along with statistics, period, and units. Use -- this parameter only if this object is retrieving a metric and not -- performing a math expression on returned data. -- -- Within one MetricDataQuery object, you must specify either @Expression@ -- or @MetricStat@ but not both. -- -- 'period', 'metricDataQuery_period' - The granularity, in seconds, of the returned data points. For metrics -- with regular resolution, a period can be as short as one minute (60 -- seconds) and must be a multiple of 60. For high-resolution metrics that -- are collected at intervals of less than one minute, the period can be 1, -- 5, 10, 30, 60, or any multiple of 60. High-resolution metrics are those -- metrics stored by a @PutMetricData@ operation that includes a -- @StorageResolution of 1 second@. -- -- 'returnData', 'metricDataQuery_returnData' - When used in @GetMetricData@, this option indicates whether to return -- the timestamps and raw data values of this metric. If you are performing -- this call just to do math expressions and do not also need the raw data -- returned, you can specify @false@. If you omit this, the default of -- @true@ is used. -- -- When used in @PutMetricAlarm@, specify @true@ for the one expression -- result to use as the alarm. For all other metrics and expressions in the -- same @PutMetricAlarm@ operation, specify @ReturnData@ as False. -- -- 'id', 'metricDataQuery_id' - A short name used to tie this object to the results in the response. -- This name must be unique within a single call to @GetMetricData@. If you -- are performing math expressions on this set of data, this name -- represents that data and can serve as a variable in the mathematical -- expression. The valid characters are letters, numbers, and underscore. -- The first character must be a lowercase letter. newMetricDataQuery :: -- | 'id' Prelude.Text -> MetricDataQuery newMetricDataQuery :: Text -> MetricDataQuery newMetricDataQuery Text pId_ = MetricDataQuery' { $sel:accountId:MetricDataQuery' :: Maybe Text accountId = forall a. Maybe a Prelude.Nothing, $sel:expression:MetricDataQuery' :: Maybe Text expression = forall a. Maybe a Prelude.Nothing, $sel:label:MetricDataQuery' :: Maybe Text label = forall a. Maybe a Prelude.Nothing, $sel:metricStat:MetricDataQuery' :: Maybe MetricStat metricStat = forall a. Maybe a Prelude.Nothing, $sel:period:MetricDataQuery' :: Maybe Natural period = forall a. Maybe a Prelude.Nothing, $sel:returnData:MetricDataQuery' :: Maybe Bool returnData = forall a. Maybe a Prelude.Nothing, $sel:id:MetricDataQuery' :: Text id = Text pId_ } -- | The ID of the account where the metrics are located. -- -- If you are performing a @GetMetricData@ operation in a monitoring -- account, use this to specify which account to retrieve this metric from. -- -- If you are performing a @PutMetricAlarm@ operation, use this to specify -- which account contains the metric that the alarm is watching. metricDataQuery_accountId :: Lens.Lens' MetricDataQuery (Prelude.Maybe Prelude.Text) metricDataQuery_accountId :: Lens' MetricDataQuery (Maybe Text) metricDataQuery_accountId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b Lens.lens (\MetricDataQuery' {Maybe Text accountId :: Maybe Text $sel:accountId:MetricDataQuery' :: MetricDataQuery -> Maybe Text accountId} -> Maybe Text accountId) (\s :: MetricDataQuery s@MetricDataQuery' {} Maybe Text a -> MetricDataQuery s {$sel:accountId:MetricDataQuery' :: Maybe Text accountId = Maybe Text a} :: MetricDataQuery) -- | This field can contain either a Metrics Insights query, or a metric math -- expression to be performed on the returned data. For more information -- about Metrics Insights queries, see -- <https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch-metrics-insights-querylanguage Metrics Insights query components and syntax> -- in the /Amazon CloudWatch User Guide/. -- -- A math expression can use the @Id@ of the other metrics or queries to -- refer to those metrics, and can also use the @Id@ of other expressions -- to use the result of those expressions. For more information about -- metric math expressions, see -- <https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/using-metric-math.html#metric-math-syntax Metric Math Syntax and Functions> -- in the /Amazon CloudWatch User Guide/. -- -- Within each MetricDataQuery object, you must specify either @Expression@ -- or @MetricStat@ but not both. metricDataQuery_expression :: Lens.Lens' MetricDataQuery (Prelude.Maybe Prelude.Text) metricDataQuery_expression :: Lens' MetricDataQuery (Maybe Text) metricDataQuery_expression = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b Lens.lens (\MetricDataQuery' {Maybe Text expression :: Maybe Text $sel:expression:MetricDataQuery' :: MetricDataQuery -> Maybe Text expression} -> Maybe Text expression) (\s :: MetricDataQuery s@MetricDataQuery' {} Maybe Text a -> MetricDataQuery s {$sel:expression:MetricDataQuery' :: Maybe Text expression = Maybe Text a} :: MetricDataQuery) -- | A human-readable label for this metric or expression. This is especially -- useful if this is an expression, so that you know what the value -- represents. If the metric or expression is shown in a CloudWatch -- dashboard widget, the label is shown. If Label is omitted, CloudWatch -- generates a default. -- -- You can put dynamic expressions into a label, so that it is more -- descriptive. For more information, see -- <https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/graph-dynamic-labels.html Using Dynamic Labels>. metricDataQuery_label :: Lens.Lens' MetricDataQuery (Prelude.Maybe Prelude.Text) metricDataQuery_label :: Lens' MetricDataQuery (Maybe Text) metricDataQuery_label = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b Lens.lens (\MetricDataQuery' {Maybe Text label :: Maybe Text $sel:label:MetricDataQuery' :: MetricDataQuery -> Maybe Text label} -> Maybe Text label) (\s :: MetricDataQuery s@MetricDataQuery' {} Maybe Text a -> MetricDataQuery s {$sel:label:MetricDataQuery' :: Maybe Text label = Maybe Text a} :: MetricDataQuery) -- | The metric to be returned, along with statistics, period, and units. Use -- this parameter only if this object is retrieving a metric and not -- performing a math expression on returned data. -- -- Within one MetricDataQuery object, you must specify either @Expression@ -- or @MetricStat@ but not both. metricDataQuery_metricStat :: Lens.Lens' MetricDataQuery (Prelude.Maybe MetricStat) metricDataQuery_metricStat :: Lens' MetricDataQuery (Maybe MetricStat) metricDataQuery_metricStat = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b Lens.lens (\MetricDataQuery' {Maybe MetricStat metricStat :: Maybe MetricStat $sel:metricStat:MetricDataQuery' :: MetricDataQuery -> Maybe MetricStat metricStat} -> Maybe MetricStat metricStat) (\s :: MetricDataQuery s@MetricDataQuery' {} Maybe MetricStat a -> MetricDataQuery s {$sel:metricStat:MetricDataQuery' :: Maybe MetricStat metricStat = Maybe MetricStat a} :: MetricDataQuery) -- | The granularity, in seconds, of the returned data points. For metrics -- with regular resolution, a period can be as short as one minute (60 -- seconds) and must be a multiple of 60. For high-resolution metrics that -- are collected at intervals of less than one minute, the period can be 1, -- 5, 10, 30, 60, or any multiple of 60. High-resolution metrics are those -- metrics stored by a @PutMetricData@ operation that includes a -- @StorageResolution of 1 second@. metricDataQuery_period :: Lens.Lens' MetricDataQuery (Prelude.Maybe Prelude.Natural) metricDataQuery_period :: Lens' MetricDataQuery (Maybe Natural) metricDataQuery_period = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b Lens.lens (\MetricDataQuery' {Maybe Natural period :: Maybe Natural $sel:period:MetricDataQuery' :: MetricDataQuery -> Maybe Natural period} -> Maybe Natural period) (\s :: MetricDataQuery s@MetricDataQuery' {} Maybe Natural a -> MetricDataQuery s {$sel:period:MetricDataQuery' :: Maybe Natural period = Maybe Natural a} :: MetricDataQuery) -- | When used in @GetMetricData@, this option indicates whether to return -- the timestamps and raw data values of this metric. If you are performing -- this call just to do math expressions and do not also need the raw data -- returned, you can specify @false@. If you omit this, the default of -- @true@ is used. -- -- When used in @PutMetricAlarm@, specify @true@ for the one expression -- result to use as the alarm. For all other metrics and expressions in the -- same @PutMetricAlarm@ operation, specify @ReturnData@ as False. metricDataQuery_returnData :: Lens.Lens' MetricDataQuery (Prelude.Maybe Prelude.Bool) metricDataQuery_returnData :: Lens' MetricDataQuery (Maybe Bool) metricDataQuery_returnData = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b Lens.lens (\MetricDataQuery' {Maybe Bool returnData :: Maybe Bool $sel:returnData:MetricDataQuery' :: MetricDataQuery -> Maybe Bool returnData} -> Maybe Bool returnData) (\s :: MetricDataQuery s@MetricDataQuery' {} Maybe Bool a -> MetricDataQuery s {$sel:returnData:MetricDataQuery' :: Maybe Bool returnData = Maybe Bool a} :: MetricDataQuery) -- | A short name used to tie this object to the results in the response. -- This name must be unique within a single call to @GetMetricData@. If you -- are performing math expressions on this set of data, this name -- represents that data and can serve as a variable in the mathematical -- expression. The valid characters are letters, numbers, and underscore. -- The first character must be a lowercase letter. metricDataQuery_id :: Lens.Lens' MetricDataQuery Prelude.Text metricDataQuery_id :: Lens' MetricDataQuery Text metricDataQuery_id = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b Lens.lens (\MetricDataQuery' {Text id :: Text $sel:id:MetricDataQuery' :: MetricDataQuery -> Text id} -> Text id) (\s :: MetricDataQuery s@MetricDataQuery' {} Text a -> MetricDataQuery s {$sel:id:MetricDataQuery' :: Text id = Text a} :: MetricDataQuery) instance Data.FromXML MetricDataQuery where parseXML :: [Node] -> Either String MetricDataQuery parseXML [Node] x = Maybe Text -> Maybe Text -> Maybe Text -> Maybe MetricStat -> Maybe Natural -> Maybe Bool -> Text -> MetricDataQuery MetricDataQuery' forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b Prelude.<$> ([Node] x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a) Data..@? Text "AccountId") forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b Prelude.<*> ([Node] x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a) Data..@? Text "Expression") forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b Prelude.<*> ([Node] x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a) Data..@? Text "Label") forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b Prelude.<*> ([Node] x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a) Data..@? Text "MetricStat") forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b Prelude.<*> ([Node] x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a) Data..@? Text "Period") forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b Prelude.<*> ([Node] x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a) Data..@? Text "ReturnData") forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b Prelude.<*> ([Node] x forall a. FromXML a => [Node] -> Text -> Either String a Data..@ Text "Id") instance Prelude.Hashable MetricDataQuery where hashWithSalt :: Int -> MetricDataQuery -> Int hashWithSalt Int _salt MetricDataQuery' {Maybe Bool Maybe Natural Maybe Text Maybe MetricStat Text id :: Text returnData :: Maybe Bool period :: Maybe Natural metricStat :: Maybe MetricStat label :: Maybe Text expression :: Maybe Text accountId :: Maybe Text $sel:id:MetricDataQuery' :: MetricDataQuery -> Text $sel:returnData:MetricDataQuery' :: MetricDataQuery -> Maybe Bool $sel:period:MetricDataQuery' :: MetricDataQuery -> Maybe Natural $sel:metricStat:MetricDataQuery' :: MetricDataQuery -> Maybe MetricStat $sel:label:MetricDataQuery' :: MetricDataQuery -> Maybe Text $sel:expression:MetricDataQuery' :: MetricDataQuery -> Maybe Text $sel:accountId:MetricDataQuery' :: MetricDataQuery -> Maybe Text ..} = Int _salt forall a. Hashable a => Int -> a -> Int `Prelude.hashWithSalt` Maybe Text accountId forall a. Hashable a => Int -> a -> Int `Prelude.hashWithSalt` Maybe Text expression forall a. Hashable a => Int -> a -> Int `Prelude.hashWithSalt` Maybe Text label forall a. Hashable a => Int -> a -> Int `Prelude.hashWithSalt` Maybe MetricStat metricStat forall a. Hashable a => Int -> a -> Int `Prelude.hashWithSalt` Maybe Natural period forall a. Hashable a => Int -> a -> Int `Prelude.hashWithSalt` Maybe Bool returnData forall a. Hashable a => Int -> a -> Int `Prelude.hashWithSalt` Text id instance Prelude.NFData MetricDataQuery where rnf :: MetricDataQuery -> () rnf MetricDataQuery' {Maybe Bool Maybe Natural Maybe Text Maybe MetricStat Text id :: Text returnData :: Maybe Bool period :: Maybe Natural metricStat :: Maybe MetricStat label :: Maybe Text expression :: Maybe Text accountId :: Maybe Text $sel:id:MetricDataQuery' :: MetricDataQuery -> Text $sel:returnData:MetricDataQuery' :: MetricDataQuery -> Maybe Bool $sel:period:MetricDataQuery' :: MetricDataQuery -> Maybe Natural $sel:metricStat:MetricDataQuery' :: MetricDataQuery -> Maybe MetricStat $sel:label:MetricDataQuery' :: MetricDataQuery -> Maybe Text $sel:expression:MetricDataQuery' :: MetricDataQuery -> Maybe Text $sel:accountId:MetricDataQuery' :: MetricDataQuery -> Maybe Text ..} = forall a. NFData a => a -> () Prelude.rnf Maybe Text accountId seq :: forall a b. a -> b -> b `Prelude.seq` forall a. NFData a => a -> () Prelude.rnf Maybe Text expression seq :: forall a b. a -> b -> b `Prelude.seq` forall a. NFData a => a -> () Prelude.rnf Maybe Text label seq :: forall a b. a -> b -> b `Prelude.seq` forall a. NFData a => a -> () Prelude.rnf Maybe MetricStat metricStat seq :: forall a b. a -> b -> b `Prelude.seq` forall a. NFData a => a -> () Prelude.rnf Maybe Natural period seq :: forall a b. a -> b -> b `Prelude.seq` forall a. NFData a => a -> () Prelude.rnf Maybe Bool returnData seq :: forall a b. a -> b -> b `Prelude.seq` forall a. NFData a => a -> () Prelude.rnf Text id instance Data.ToQuery MetricDataQuery where toQuery :: MetricDataQuery -> QueryString toQuery MetricDataQuery' {Maybe Bool Maybe Natural Maybe Text Maybe MetricStat Text id :: Text returnData :: Maybe Bool period :: Maybe Natural metricStat :: Maybe MetricStat label :: Maybe Text expression :: Maybe Text accountId :: Maybe Text $sel:id:MetricDataQuery' :: MetricDataQuery -> Text $sel:returnData:MetricDataQuery' :: MetricDataQuery -> Maybe Bool $sel:period:MetricDataQuery' :: MetricDataQuery -> Maybe Natural $sel:metricStat:MetricDataQuery' :: MetricDataQuery -> Maybe MetricStat $sel:label:MetricDataQuery' :: MetricDataQuery -> Maybe Text $sel:expression:MetricDataQuery' :: MetricDataQuery -> Maybe Text $sel:accountId:MetricDataQuery' :: MetricDataQuery -> Maybe Text ..} = forall a. Monoid a => [a] -> a Prelude.mconcat [ ByteString "AccountId" forall a. ToQuery a => ByteString -> a -> QueryString Data.=: Maybe Text accountId, ByteString "Expression" forall a. ToQuery a => ByteString -> a -> QueryString Data.=: Maybe Text expression, ByteString "Label" forall a. ToQuery a => ByteString -> a -> QueryString Data.=: Maybe Text label, ByteString "MetricStat" forall a. ToQuery a => ByteString -> a -> QueryString Data.=: Maybe MetricStat metricStat, ByteString "Period" forall a. ToQuery a => ByteString -> a -> QueryString Data.=: Maybe Natural period, ByteString "ReturnData" forall a. ToQuery a => ByteString -> a -> QueryString Data.=: Maybe Bool returnData, ByteString "Id" forall a. ToQuery a => ByteString -> a -> QueryString Data.=: Text id ]