-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | Amazon CloudWatch SDK.
--   
--   The types from this library are intended to be used with
--   <a>amazonka</a>, which provides mechanisms for specifying AuthN/AuthZ
--   information, sending requests, and receiving responses.
--   
--   Lenses are used for constructing and manipulating types, due to the
--   depth of nesting of AWS types and transparency regarding
--   de/serialisation into more palatable Haskell values. The provided
--   lenses should be compatible with any of the major lens libraries such
--   as <a>lens</a> or <a>lens-family-core</a>.
--   
--   See <a>Network.AWS.CloudWatch</a> or <a>the AWS documentation</a> to
--   get started.
@package amazonka-cloudwatch
@version 1.4.5


module Network.AWS.CloudWatch.Types

-- | API version <tt>2010-08-01</tt> of the Amazon CloudWatch SDK
--   configuration.
cloudWatch :: Service

-- | The quota for alarms for this customer has already been reached.
_LimitExceededFault :: AsError a => Getting (First ServiceError) a ServiceError

-- | The next token specified is invalid.
_InvalidNextToken :: AsError a => Getting (First ServiceError) a ServiceError

-- | Request processing has failed due to some unknown error, exception, or
--   failure.
_InternalServiceFault :: AsError a => Getting (First ServiceError) a ServiceError

-- | The value of an input parameter is bad or out-of-range.
_InvalidParameterValueException :: AsError a => Getting (First ServiceError) a ServiceError

-- | Data was not syntactically valid JSON.
_InvalidFormatFault :: AsError a => Getting (First ServiceError) a ServiceError

-- | An input parameter that is required is missing.
_MissingRequiredParameterException :: AsError a => Getting (First ServiceError) a ServiceError

-- | Parameters that cannot be used together were used together.
_InvalidParameterCombinationException :: AsError a => Getting (First ServiceError) a ServiceError

-- | The named resource does not exist.
_ResourceNotFound :: AsError a => Getting (First ServiceError) a ServiceError
data ComparisonOperator
GreaterThanOrEqualToThreshold :: ComparisonOperator
GreaterThanThreshold :: ComparisonOperator
LessThanOrEqualToThreshold :: ComparisonOperator
LessThanThreshold :: ComparisonOperator
data HistoryItemType
Action :: HistoryItemType
ConfigurationUpdate :: HistoryItemType
StateUpdate :: HistoryItemType
data StandardUnit
Bits :: StandardUnit
BitsSecond :: StandardUnit
Bytes :: StandardUnit
BytesSecond :: StandardUnit
Count :: StandardUnit
CountSecond :: StandardUnit
Gigabits :: StandardUnit
GigabitsSecond :: StandardUnit
Gigabytes :: StandardUnit
GigabytesSecond :: StandardUnit
Kilobits :: StandardUnit
KilobitsSecond :: StandardUnit
Kilobytes :: StandardUnit
KilobytesSecond :: StandardUnit
Megabits :: StandardUnit
MegabitsSecond :: StandardUnit
Megabytes :: StandardUnit
MegabytesSecond :: StandardUnit
Microseconds :: StandardUnit
Milliseconds :: StandardUnit
None :: StandardUnit
Percent :: StandardUnit
Seconds :: StandardUnit
Terabits :: StandardUnit
TerabitsSecond :: StandardUnit
Terabytes :: StandardUnit
TerabytesSecond :: StandardUnit
data StateValue
Alarm :: StateValue
InsufficientData :: StateValue
OK :: StateValue
data Statistic
Average :: Statistic
Maximum :: Statistic
Minimum :: Statistic
SampleCount :: Statistic
Sum :: Statistic

-- | Represents the history of a specific alarm.
--   
--   <i>See:</i> <a>alarmHistoryItem</a> smart constructor.
data AlarmHistoryItem

-- | Creates a value of <a>AlarmHistoryItem</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ahiAlarmName</a> - The descriptive name for the alarm.</li>
--   <li><a>ahiHistoryItemType</a> - The type of alarm history item.</li>
--   <li><a>ahiHistoryData</a> - Data about the alarm, in JSON format.</li>
--   <li><a>ahiHistorySummary</a> - A summary of the alarm history, in text
--   format.</li>
--   <li><a>ahiTimestamp</a> - The time stamp for the alarm history
--   item.</li>
--   </ul>
alarmHistoryItem :: AlarmHistoryItem

-- | The descriptive name for the alarm.
ahiAlarmName :: Lens' AlarmHistoryItem (Maybe Text)

-- | The type of alarm history item.
ahiHistoryItemType :: Lens' AlarmHistoryItem (Maybe HistoryItemType)

-- | Data about the alarm, in JSON format.
ahiHistoryData :: Lens' AlarmHistoryItem (Maybe Text)

-- | A summary of the alarm history, in text format.
ahiHistorySummary :: Lens' AlarmHistoryItem (Maybe Text)

-- | The time stamp for the alarm history item.
ahiTimestamp :: Lens' AlarmHistoryItem (Maybe UTCTime)

-- | Encapsulates the statistical data that Amazon CloudWatch computes from
--   metric data.
--   
--   <i>See:</i> <a>datapoint</a> smart constructor.
data Datapoint

-- | Creates a value of <a>Datapoint</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dSampleCount</a> - The number of metric values that contributed
--   to the aggregate value of this data point.</li>
--   <li><a>dMaximum</a> - The maximum metric value for the data
--   point.</li>
--   <li><a>dAverage</a> - The average of the metric values that correspond
--   to the data point.</li>
--   <li><a>dMinimum</a> - The minimum metric value for the data
--   point.</li>
--   <li><a>dExtendedStatistics</a> - The percentile statistic for the data
--   point.</li>
--   <li><a>dSum</a> - The sum of the metric values for the data
--   point.</li>
--   <li><a>dUnit</a> - The standard unit for the data point.</li>
--   <li><a>dTimestamp</a> - The time stamp used for the data point.</li>
--   </ul>
datapoint :: Datapoint

-- | The number of metric values that contributed to the aggregate value of
--   this data point.
dSampleCount :: Lens' Datapoint (Maybe Double)

-- | The maximum metric value for the data point.
dMaximum :: Lens' Datapoint (Maybe Double)

-- | The average of the metric values that correspond to the data point.
dAverage :: Lens' Datapoint (Maybe Double)

-- | The minimum metric value for the data point.
dMinimum :: Lens' Datapoint (Maybe Double)

-- | The percentile statistic for the data point.
dExtendedStatistics :: Lens' Datapoint (HashMap Text Double)

-- | The sum of the metric values for the data point.
dSum :: Lens' Datapoint (Maybe Double)

-- | The standard unit for the data point.
dUnit :: Lens' Datapoint (Maybe StandardUnit)

-- | The time stamp used for the data point.
dTimestamp :: Lens' Datapoint (Maybe UTCTime)

-- | Expands the identity of a metric.
--   
--   <i>See:</i> <a>dimension</a> smart constructor.
data Dimension

-- | Creates a value of <a>Dimension</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dName</a> - The name of the dimension.</li>
--   <li><a>dValue</a> - The value representing the dimension
--   measurement.</li>
--   </ul>
dimension :: Text -> Text -> Dimension

-- | The name of the dimension.
dName :: Lens' Dimension Text

-- | The value representing the dimension measurement.
dValue :: Lens' Dimension Text

-- | Represents filters for a dimension.
--   
--   <i>See:</i> <a>dimensionFilter</a> smart constructor.
data DimensionFilter

-- | Creates a value of <a>DimensionFilter</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dfValue</a> - The value of the dimension to be matched.</li>
--   <li><a>dfName</a> - The dimension name to be matched.</li>
--   </ul>
dimensionFilter :: Text -> DimensionFilter

-- | The value of the dimension to be matched.
dfValue :: Lens' DimensionFilter (Maybe Text)

-- | The dimension name to be matched.
dfName :: Lens' DimensionFilter Text

-- | Represents a specific metric.
--   
--   <i>See:</i> <a>metric</a> smart constructor.
data Metric

-- | Creates a value of <a>Metric</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>mMetricName</a> - The name of the metric.</li>
--   <li><a>mNamespace</a> - The namespace of the metric.</li>
--   <li><a>mDimensions</a> - The dimensions for the metric.</li>
--   </ul>
metric :: Metric

-- | The name of the metric.
mMetricName :: Lens' Metric (Maybe Text)

-- | The namespace of the metric.
mNamespace :: Lens' Metric (Maybe Text)

-- | The dimensions for the metric.
mDimensions :: Lens' Metric [Dimension]

-- | Represents an alarm.
--   
--   <i>See:</i> <a>metricAlarm</a> smart constructor.
data MetricAlarm

-- | Creates a value of <a>MetricAlarm</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>maAlarmName</a> - The name of the alarm.</li>
--   <li><a>maStateUpdatedTimestamp</a> - The time stamp of the last update
--   to the alarm state.</li>
--   <li><a>maPeriod</a> - The period, in seconds, over which the statistic
--   is applied.</li>
--   <li><a>maAlarmDescription</a> - The description of the alarm.</li>
--   <li><a>maEvaluationPeriods</a> - The number of periods over which data
--   is compared to the specified threshold.</li>
--   <li><a>maMetricName</a> - The name of the metric associated with the
--   alarm.</li>
--   <li><a>maNamespace</a> - The namespace of the metric associated with
--   the alarm.</li>
--   <li><a>maComparisonOperator</a> - The arithmetic operation to use when
--   comparing the specified statistic and threshold. The specified
--   statistic value is used as the first operand.</li>
--   <li><a>maOKActions</a> - The actions to execute when this alarm
--   transitions to the <tt>OK</tt> state from any other state. Each action
--   is specified as an Amazon Resource Name (ARN).</li>
--   <li><a>maStateValue</a> - The state value for the alarm.</li>
--   <li><a>maThreshold</a> - The value to compare with the specified
--   statistic.</li>
--   <li><a>maAlarmConfigurationUpdatedTimestamp</a> - The time stamp of
--   the last update to the alarm configuration.</li>
--   <li><a>maActionsEnabled</a> - Indicates whether actions should be
--   executed during any changes to the alarm state.</li>
--   <li><a>maInsufficientDataActions</a> - The actions to execute when
--   this alarm transitions to the <tt>INSUFFICIENT_DATA</tt> state from
--   any other state. Each action is specified as an Amazon Resource Name
--   (ARN).</li>
--   <li><a>maStateReason</a> - An explanation for the alarm state, in text
--   format.</li>
--   <li><a>maStateReasonData</a> - An explanation for the alarm state, in
--   JSON format.</li>
--   <li><a>maDimensions</a> - The dimensions for the metric associated
--   with the alarm.</li>
--   <li><a>maAlarmARN</a> - The Amazon Resource Name (ARN) of the
--   alarm.</li>
--   <li><a>maAlarmActions</a> - The actions to execute when this alarm
--   transitions to the <tt>ALARM</tt> state from any other state. Each
--   action is specified as an Amazon Resource Name (ARN).</li>
--   <li><a>maUnit</a> - The unit of the metric associated with the
--   alarm.</li>
--   <li><a>maStatistic</a> - The statistic for the metric associated with
--   the alarm, other than percentile. For percentile statistics, use
--   <tt>ExtendedStatistic</tt> .</li>
--   <li><a>maExtendedStatistic</a> - The percentile statistic for the
--   metric associated with the alarm. Specify a value between p0.0 and
--   p100.</li>
--   </ul>
metricAlarm :: MetricAlarm

-- | The name of the alarm.
maAlarmName :: Lens' MetricAlarm (Maybe Text)

-- | The time stamp of the last update to the alarm state.
maStateUpdatedTimestamp :: Lens' MetricAlarm (Maybe UTCTime)

-- | The period, in seconds, over which the statistic is applied.
maPeriod :: Lens' MetricAlarm (Maybe Natural)

-- | The description of the alarm.
maAlarmDescription :: Lens' MetricAlarm (Maybe Text)

-- | The number of periods over which data is compared to the specified
--   threshold.
maEvaluationPeriods :: Lens' MetricAlarm (Maybe Natural)

-- | The name of the metric associated with the alarm.
maMetricName :: Lens' MetricAlarm (Maybe Text)

-- | The namespace of the metric associated with the alarm.
maNamespace :: Lens' MetricAlarm (Maybe Text)

-- | The arithmetic operation to use when comparing the specified statistic
--   and threshold. The specified statistic value is used as the first
--   operand.
maComparisonOperator :: Lens' MetricAlarm (Maybe ComparisonOperator)

-- | The actions to execute when this alarm transitions to the <tt>OK</tt>
--   state from any other state. Each action is specified as an Amazon
--   Resource Name (ARN).
maOKActions :: Lens' MetricAlarm [Text]

-- | The state value for the alarm.
maStateValue :: Lens' MetricAlarm (Maybe StateValue)

-- | The value to compare with the specified statistic.
maThreshold :: Lens' MetricAlarm (Maybe Double)

-- | The time stamp of the last update to the alarm configuration.
maAlarmConfigurationUpdatedTimestamp :: Lens' MetricAlarm (Maybe UTCTime)

-- | Indicates whether actions should be executed during any changes to the
--   alarm state.
maActionsEnabled :: Lens' MetricAlarm (Maybe Bool)

-- | The actions to execute when this alarm transitions to the
--   <tt>INSUFFICIENT_DATA</tt> state from any other state. Each action is
--   specified as an Amazon Resource Name (ARN).
maInsufficientDataActions :: Lens' MetricAlarm [Text]

-- | An explanation for the alarm state, in text format.
maStateReason :: Lens' MetricAlarm (Maybe Text)

-- | An explanation for the alarm state, in JSON format.
maStateReasonData :: Lens' MetricAlarm (Maybe Text)

-- | The dimensions for the metric associated with the alarm.
maDimensions :: Lens' MetricAlarm [Dimension]

-- | The Amazon Resource Name (ARN) of the alarm.
maAlarmARN :: Lens' MetricAlarm (Maybe Text)

-- | The actions to execute when this alarm transitions to the
--   <tt>ALARM</tt> state from any other state. Each action is specified as
--   an Amazon Resource Name (ARN).
maAlarmActions :: Lens' MetricAlarm [Text]

-- | The unit of the metric associated with the alarm.
maUnit :: Lens' MetricAlarm (Maybe StandardUnit)

-- | The statistic for the metric associated with the alarm, other than
--   percentile. For percentile statistics, use <tt>ExtendedStatistic</tt>
--   .
maStatistic :: Lens' MetricAlarm (Maybe Statistic)

-- | The percentile statistic for the metric associated with the alarm.
--   Specify a value between p0.0 and p100.
maExtendedStatistic :: Lens' MetricAlarm (Maybe Text)

-- | Encapsulates the information sent to either create a metric or add new
--   values to be aggregated into an existing metric.
--   
--   <i>See:</i> <a>metricDatum</a> smart constructor.
data MetricDatum

-- | Creates a value of <a>MetricDatum</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>mdValue</a> - The value for the metric. Although the parameter
--   accepts numbers of type Double, Amazon CloudWatch rejects values that
--   are either too small or too large. Values must be in the range of
--   8.515920e-109 to 1.174271e+108 (Base 10) or 2e-360 to 2e360 (Base 2).
--   In addition, special values (for example, NaN, +Infinity, -Infinity)
--   are not supported.</li>
--   <li><a>mdDimensions</a> - The dimensions associated with the
--   metric.</li>
--   <li><a>mdUnit</a> - The unit of the metric.</li>
--   <li><a>mdTimestamp</a> - The time the metric data was received,
--   expressed as the number of milliseconds since Jan 1, 1970 00:00:00
--   UTC.</li>
--   <li><a>mdStatisticValues</a> - The statistical values for the
--   metric.</li>
--   <li><a>mdMetricName</a> - The name of the metric.</li>
--   </ul>
metricDatum :: Text -> MetricDatum

-- | The value for the metric. Although the parameter accepts numbers of
--   type Double, Amazon CloudWatch rejects values that are either too
--   small or too large. Values must be in the range of 8.515920e-109 to
--   1.174271e+108 (Base 10) or 2e-360 to 2e360 (Base 2). In addition,
--   special values (for example, NaN, +Infinity, -Infinity) are not
--   supported.
mdValue :: Lens' MetricDatum (Maybe Double)

-- | The dimensions associated with the metric.
mdDimensions :: Lens' MetricDatum [Dimension]

-- | The unit of the metric.
mdUnit :: Lens' MetricDatum (Maybe StandardUnit)

-- | The time the metric data was received, expressed as the number of
--   milliseconds since Jan 1, 1970 00:00:00 UTC.
mdTimestamp :: Lens' MetricDatum (Maybe UTCTime)

-- | The statistical values for the metric.
mdStatisticValues :: Lens' MetricDatum (Maybe StatisticSet)

-- | The name of the metric.
mdMetricName :: Lens' MetricDatum Text

-- | Represents a set of statistics that describes a specific metric.
--   
--   <i>See:</i> <a>statisticSet</a> smart constructor.
data StatisticSet

-- | Creates a value of <a>StatisticSet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ssSampleCount</a> - The number of samples used for the
--   statistic set.</li>
--   <li><a>ssSum</a> - The sum of values for the sample set.</li>
--   <li><a>ssMinimum</a> - The minimum value of the sample set.</li>
--   <li><a>ssMaximum</a> - The maximum value of the sample set.</li>
--   </ul>
statisticSet :: Double -> Double -> Double -> Double -> StatisticSet

-- | The number of samples used for the statistic set.
ssSampleCount :: Lens' StatisticSet Double

-- | The sum of values for the sample set.
ssSum :: Lens' StatisticSet Double

-- | The minimum value of the sample set.
ssMinimum :: Lens' StatisticSet Double

-- | The maximum value of the sample set.
ssMaximum :: Lens' StatisticSet Double


module Network.AWS.CloudWatch.Waiters


-- | Temporarily sets the state of an alarm for testing purposes. When the
--   updated state differs from the previous value, the action configured
--   for the appropriate state is invoked. For example, if your alarm is
--   configured to send an Amazon SNS message when an alarm is triggered,
--   temporarily changing the alarm state to <tt>ALARM</tt> sends an Amazon
--   SNS message. The alarm returns to its actual state (often within
--   seconds). Because the alarm state change happens very quickly, it is
--   typically only visible in the alarm's <b>History</b> tab in the Amazon
--   CloudWatch console or through <tt>DescribeAlarmHistory</tt> .
module Network.AWS.CloudWatch.SetAlarmState

-- | Creates a value of <a>SetAlarmState</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>sasStateReasonData</a> - The reason that this alarm is set to
--   this specific state, in JSON format.</li>
--   <li><a>sasAlarmName</a> - The name for the alarm. This name must be
--   unique within the AWS account. The maximum length is 255
--   characters.</li>
--   <li><a>sasStateValue</a> - The value of the state.</li>
--   <li><a>sasStateReason</a> - The reason that this alarm is set to this
--   specific state, in text format.</li>
--   </ul>
setAlarmState :: Text -> StateValue -> Text -> SetAlarmState

-- | <i>See:</i> <a>setAlarmState</a> smart constructor.
data SetAlarmState

-- | The reason that this alarm is set to this specific state, in JSON
--   format.
sasStateReasonData :: Lens' SetAlarmState (Maybe Text)

-- | The name for the alarm. This name must be unique within the AWS
--   account. The maximum length is 255 characters.
sasAlarmName :: Lens' SetAlarmState Text

-- | The value of the state.
sasStateValue :: Lens' SetAlarmState StateValue

-- | The reason that this alarm is set to this specific state, in text
--   format.
sasStateReason :: Lens' SetAlarmState Text

-- | Creates a value of <a>SetAlarmStateResponse</a> with the minimum
--   fields required to make a request.
setAlarmStateResponse :: SetAlarmStateResponse

-- | <i>See:</i> <a>setAlarmStateResponse</a> smart constructor.
data SetAlarmStateResponse
instance GHC.Generics.Generic Network.AWS.CloudWatch.SetAlarmState.SetAlarmStateResponse
instance Data.Data.Data Network.AWS.CloudWatch.SetAlarmState.SetAlarmStateResponse
instance GHC.Show.Show Network.AWS.CloudWatch.SetAlarmState.SetAlarmStateResponse
instance GHC.Read.Read Network.AWS.CloudWatch.SetAlarmState.SetAlarmStateResponse
instance GHC.Classes.Eq Network.AWS.CloudWatch.SetAlarmState.SetAlarmStateResponse
instance GHC.Generics.Generic Network.AWS.CloudWatch.SetAlarmState.SetAlarmState
instance Data.Data.Data Network.AWS.CloudWatch.SetAlarmState.SetAlarmState
instance GHC.Show.Show Network.AWS.CloudWatch.SetAlarmState.SetAlarmState
instance GHC.Read.Read Network.AWS.CloudWatch.SetAlarmState.SetAlarmState
instance GHC.Classes.Eq Network.AWS.CloudWatch.SetAlarmState.SetAlarmState
instance Network.AWS.Types.AWSRequest Network.AWS.CloudWatch.SetAlarmState.SetAlarmState
instance Data.Hashable.Class.Hashable Network.AWS.CloudWatch.SetAlarmState.SetAlarmState
instance Control.DeepSeq.NFData Network.AWS.CloudWatch.SetAlarmState.SetAlarmState
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.CloudWatch.SetAlarmState.SetAlarmState
instance Network.AWS.Data.Path.ToPath Network.AWS.CloudWatch.SetAlarmState.SetAlarmState
instance Network.AWS.Data.Query.ToQuery Network.AWS.CloudWatch.SetAlarmState.SetAlarmState
instance Control.DeepSeq.NFData Network.AWS.CloudWatch.SetAlarmState.SetAlarmStateResponse


-- | Publishes metric data points to Amazon CloudWatch. Amazon CloudWatch
--   associates the data points with the specified metric. If the specified
--   metric does not exist, Amazon CloudWatch creates the metric. When
--   Amazon CloudWatch creates a metric, it can take up to fifteen minutes
--   for the metric to appear in calls to <tt>ListMetrics</tt> .
--   
--   Each <tt>PutMetricData</tt> request is limited to 8 KB in size for
--   HTTP GET requests and is limited to 40 KB in size for HTTP POST
--   requests.
--   
--   Although the <tt>Value</tt> parameter accepts numbers of type
--   <tt>Double</tt> , Amazon CloudWatch rejects values that are either too
--   small or too large. Values must be in the range of 8.515920e-109 to
--   1.174271e+108 (Base 10) or 2e-360 to 2e360 (Base 2). In addition,
--   special values (e.g., NaN, +Infinity, -Infinity) are not supported.
--   
--   Data points with time stamps from 24 hours ago or longer can take at
--   least 48 hours to become available for <tt>GetMetricStatistics</tt>
--   from the time they are submitted.
module Network.AWS.CloudWatch.PutMetricData

-- | Creates a value of <a>PutMetricData</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pmdNamespace</a> - The namespace for the metric data. You
--   cannot specify a namespace that begins with "AWS<i>". Namespaces that
--   begin with "AWS</i>" are reserved for use by Amazon Web Services
--   products.</li>
--   <li><a>pmdMetricData</a> - The data for the metric.</li>
--   </ul>
putMetricData :: Text -> PutMetricData

-- | <i>See:</i> <a>putMetricData</a> smart constructor.
data PutMetricData

-- | The namespace for the metric data. You cannot specify a namespace that
--   begins with "AWS<i>". Namespaces that begin with "AWS</i>" are
--   reserved for use by Amazon Web Services products.
pmdNamespace :: Lens' PutMetricData Text

-- | The data for the metric.
pmdMetricData :: Lens' PutMetricData [MetricDatum]

-- | Creates a value of <a>PutMetricDataResponse</a> with the minimum
--   fields required to make a request.
putMetricDataResponse :: PutMetricDataResponse

-- | <i>See:</i> <a>putMetricDataResponse</a> smart constructor.
data PutMetricDataResponse
instance GHC.Generics.Generic Network.AWS.CloudWatch.PutMetricData.PutMetricDataResponse
instance Data.Data.Data Network.AWS.CloudWatch.PutMetricData.PutMetricDataResponse
instance GHC.Show.Show Network.AWS.CloudWatch.PutMetricData.PutMetricDataResponse
instance GHC.Read.Read Network.AWS.CloudWatch.PutMetricData.PutMetricDataResponse
instance GHC.Classes.Eq Network.AWS.CloudWatch.PutMetricData.PutMetricDataResponse
instance GHC.Generics.Generic Network.AWS.CloudWatch.PutMetricData.PutMetricData
instance Data.Data.Data Network.AWS.CloudWatch.PutMetricData.PutMetricData
instance GHC.Show.Show Network.AWS.CloudWatch.PutMetricData.PutMetricData
instance GHC.Read.Read Network.AWS.CloudWatch.PutMetricData.PutMetricData
instance GHC.Classes.Eq Network.AWS.CloudWatch.PutMetricData.PutMetricData
instance Network.AWS.Types.AWSRequest Network.AWS.CloudWatch.PutMetricData.PutMetricData
instance Data.Hashable.Class.Hashable Network.AWS.CloudWatch.PutMetricData.PutMetricData
instance Control.DeepSeq.NFData Network.AWS.CloudWatch.PutMetricData.PutMetricData
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.CloudWatch.PutMetricData.PutMetricData
instance Network.AWS.Data.Path.ToPath Network.AWS.CloudWatch.PutMetricData.PutMetricData
instance Network.AWS.Data.Query.ToQuery Network.AWS.CloudWatch.PutMetricData.PutMetricData
instance Control.DeepSeq.NFData Network.AWS.CloudWatch.PutMetricData.PutMetricDataResponse


-- | Creates or updates an alarm and associates it with the specified
--   metric. Optionally, this operation can associate one or more Amazon
--   SNS resources with the alarm.
--   
--   When this operation creates an alarm, the alarm state is immediately
--   set to <tt>INSUFFICIENT_DATA</tt> . The alarm is evaluated and its
--   state is set appropriately. Any actions associated with the state are
--   then executed.
--   
--   When you update an existing alarm, its state is left unchanged, but
--   the update completely overwrites the previous configuration of the
--   alarm.
--   
--   If you are an AWS Identity and Access Management (IAM) user, you must
--   have Amazon EC2 permissions for some operations:
--   
--   <ul>
--   <li><tt>ec2:DescribeInstanceStatus</tt> and
--   <tt>ec2:DescribeInstances</tt> for all alarms on EC2 instance status
--   metrics</li>
--   <li><tt>ec2:StopInstances</tt> for alarms with stop actions</li>
--   <li><tt>ec2:TerminateInstances</tt> for alarms with terminate
--   actions</li>
--   <li><tt>ec2:DescribeInstanceRecoveryAttribute</tt> and
--   <tt>ec2:RecoverInstances</tt> for alarms with recover actions</li>
--   </ul>
--   
--   If you have read/write permissions for Amazon CloudWatch but not for
--   Amazon EC2, you can still create an alarm, but the stop or terminate
--   actions won't be performed. However, if you are later granted the
--   required permissions, the alarm actions that you created earlier will
--   be performed.
--   
--   If you are using an IAM role (for example, an Amazon EC2 instance
--   profile), you cannot stop or terminate the instance using alarm
--   actions. However, you can still see the alarm state and perform any
--   other actions such as Amazon SNS notifications or Auto Scaling
--   policies.
--   
--   If you are using temporary security credentials granted using the AWS
--   Security Token Service (AWS STS), you cannot stop or terminate an
--   Amazon EC2 instance using alarm actions.
--   
--   Note that you must create at least one stop, terminate, or reboot
--   alarm using the Amazon EC2 or CloudWatch console to create the
--   <b>EC2ActionsAccess</b> IAM role. After this IAM role is created, you
--   can create stop, terminate, or reboot alarms using a command-line
--   interface or an API.
module Network.AWS.CloudWatch.PutMetricAlarm

-- | Creates a value of <a>PutMetricAlarm</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pmaAlarmDescription</a> - The description for the alarm.</li>
--   <li><a>pmaOKActions</a> - The actions to execute when this alarm
--   transitions to an <tt>OK</tt> state from any other state. Each action
--   is specified as an Amazon Resource Name (ARN). Valid Values:
--   arn:aws:automate:<i>region</i> :ec2:stop |
--   arn:aws:automate:<i>region</i> :ec2:terminate |
--   arn:aws:automate:<i>region</i> :ec2:recover Valid Values (for use with
--   IAM roles): arn:aws:swf:us-east-1:{<i>customer-account</i>
--   }:action<i>actions</i>AWS_EC2.InstanceId.Stop<i>1.0 |
--   arn:aws:swf:us-east-1:{</i>customer-account<i>
--   }:action</i>actions<i>AWS_EC2.InstanceId.Terminate</i>1.0 |
--   arn:aws:swf:us-east-1:{<i>customer-account</i>
--   }:action<i>actions</i>AWS_EC2.InstanceId.Reboot/1.0</li>
--   <li><a>pmaActionsEnabled</a> - Indicates whether actions should be
--   executed during any changes to the alarm state.</li>
--   <li><a>pmaInsufficientDataActions</a> - The actions to execute when
--   this alarm transitions to the <tt>INSUFFICIENT_DATA</tt> state from
--   any other state. Each action is specified as an Amazon Resource Name
--   (ARN). Valid Values: arn:aws:automate:<i>region</i> :ec2:stop |
--   arn:aws:automate:<i>region</i> :ec2:terminate |
--   arn:aws:automate:<i>region</i> :ec2:recover Valid Values (for use with
--   IAM roles): arn:aws:swf:us-east-1:{<i>customer-account</i>
--   }:action<i>actions</i>AWS_EC2.InstanceId.Stop<i>1.0 |
--   arn:aws:swf:us-east-1:{</i>customer-account<i>
--   }:action</i>actions<i>AWS_EC2.InstanceId.Terminate</i>1.0 |
--   arn:aws:swf:us-east-1:{<i>customer-account</i>
--   }:action<i>actions</i>AWS_EC2.InstanceId.Reboot/1.0</li>
--   <li><a>pmaDimensions</a> - The dimensions for the metric associated
--   with the alarm.</li>
--   <li><a>pmaAlarmActions</a> - The actions to execute when this alarm
--   transitions to the <tt>ALARM</tt> state from any other state. Each
--   action is specified as an Amazon Resource Name (ARN). Valid Values:
--   arn:aws:automate:<i>region</i> :ec2:stop |
--   arn:aws:automate:<i>region</i> :ec2:terminate |
--   arn:aws:automate:<i>region</i> :ec2:recover Valid Values (for use with
--   IAM roles): arn:aws:swf:us-east-1:{<i>customer-account</i>
--   }:action<i>actions</i>AWS_EC2.InstanceId.Stop<i>1.0 |
--   arn:aws:swf:us-east-1:{</i>customer-account<i>
--   }:action</i>actions<i>AWS_EC2.InstanceId.Terminate</i>1.0 |
--   arn:aws:swf:us-east-1:{<i>customer-account</i>
--   }:action<i>actions</i>AWS_EC2.InstanceId.Reboot/1.0</li>
--   <li><a>pmaUnit</a> - The unit of measure for the statistic. For
--   example, the units for the Amazon EC2 NetworkIn metric are Bytes
--   because NetworkIn tracks the number of bytes that an instance receives
--   on all network interfaces. You can also specify a unit when you create
--   a custom metric. Units help provide conceptual meaning to your data.
--   Metric data points that specify a unit of measure, such as Percent,
--   are aggregated separately. If you specify a unit, you must use a unit
--   that is appropriate for the metric. Otherwise, the Amazon CloudWatch
--   alarm can get stuck in the <tt>INSUFFICIENT DATA</tt> state.</li>
--   <li><a>pmaStatistic</a> - The statistic for the metric associated with
--   the alarm, other than percentile. For percentile statistics, use
--   <tt>ExtendedStatistic</tt> .</li>
--   <li><a>pmaExtendedStatistic</a> - The percentile statistic for the
--   metric associated with the alarm. Specify a value between p0.0 and
--   p100.</li>
--   <li><a>pmaAlarmName</a> - The name for the alarm. This name must be
--   unique within the AWS account.</li>
--   <li><a>pmaMetricName</a> - The name for the metric associated with the
--   alarm.</li>
--   <li><a>pmaNamespace</a> - The namespace for the metric associated with
--   the alarm.</li>
--   <li><a>pmaPeriod</a> - The period, in seconds, over which the
--   specified statistic is applied.</li>
--   <li><a>pmaEvaluationPeriods</a> - The number of periods over which
--   data is compared to the specified threshold.</li>
--   <li><a>pmaThreshold</a> - The value against which the specified
--   statistic is compared.</li>
--   <li><a>pmaComparisonOperator</a> - The arithmetic operation to use
--   when comparing the specified statistic and threshold. The specified
--   statistic value is used as the first operand.</li>
--   </ul>
putMetricAlarm :: Text -> Text -> Text -> Natural -> Natural -> Double -> ComparisonOperator -> PutMetricAlarm

-- | <i>See:</i> <a>putMetricAlarm</a> smart constructor.
data PutMetricAlarm

-- | The description for the alarm.
pmaAlarmDescription :: Lens' PutMetricAlarm (Maybe Text)

-- | The actions to execute when this alarm transitions to an <tt>OK</tt>
--   state from any other state. Each action is specified as an Amazon
--   Resource Name (ARN). Valid Values: arn:aws:automate:<i>region</i>
--   :ec2:stop | arn:aws:automate:<i>region</i> :ec2:terminate |
--   arn:aws:automate:<i>region</i> :ec2:recover Valid Values (for use with
--   IAM roles): arn:aws:swf:us-east-1:{<i>customer-account</i>
--   }:action<i>actions</i>AWS_EC2.InstanceId.Stop<i>1.0 |
--   arn:aws:swf:us-east-1:{</i>customer-account<i>
--   }:action</i>actions<i>AWS_EC2.InstanceId.Terminate</i>1.0 |
--   arn:aws:swf:us-east-1:{<i>customer-account</i>
--   }:action<i>actions</i>AWS_EC2.InstanceId.Reboot/1.0
pmaOKActions :: Lens' PutMetricAlarm [Text]

-- | Indicates whether actions should be executed during any changes to the
--   alarm state.
pmaActionsEnabled :: Lens' PutMetricAlarm (Maybe Bool)

-- | The actions to execute when this alarm transitions to the
--   <tt>INSUFFICIENT_DATA</tt> state from any other state. Each action is
--   specified as an Amazon Resource Name (ARN). Valid Values:
--   arn:aws:automate:<i>region</i> :ec2:stop |
--   arn:aws:automate:<i>region</i> :ec2:terminate |
--   arn:aws:automate:<i>region</i> :ec2:recover Valid Values (for use with
--   IAM roles): arn:aws:swf:us-east-1:{<i>customer-account</i>
--   }:action<i>actions</i>AWS_EC2.InstanceId.Stop<i>1.0 |
--   arn:aws:swf:us-east-1:{</i>customer-account<i>
--   }:action</i>actions<i>AWS_EC2.InstanceId.Terminate</i>1.0 |
--   arn:aws:swf:us-east-1:{<i>customer-account</i>
--   }:action<i>actions</i>AWS_EC2.InstanceId.Reboot/1.0
pmaInsufficientDataActions :: Lens' PutMetricAlarm [Text]

-- | The dimensions for the metric associated with the alarm.
pmaDimensions :: Lens' PutMetricAlarm [Dimension]

-- | The actions to execute when this alarm transitions to the
--   <tt>ALARM</tt> state from any other state. Each action is specified as
--   an Amazon Resource Name (ARN). Valid Values:
--   arn:aws:automate:<i>region</i> :ec2:stop |
--   arn:aws:automate:<i>region</i> :ec2:terminate |
--   arn:aws:automate:<i>region</i> :ec2:recover Valid Values (for use with
--   IAM roles): arn:aws:swf:us-east-1:{<i>customer-account</i>
--   }:action<i>actions</i>AWS_EC2.InstanceId.Stop<i>1.0 |
--   arn:aws:swf:us-east-1:{</i>customer-account<i>
--   }:action</i>actions<i>AWS_EC2.InstanceId.Terminate</i>1.0 |
--   arn:aws:swf:us-east-1:{<i>customer-account</i>
--   }:action<i>actions</i>AWS_EC2.InstanceId.Reboot/1.0
pmaAlarmActions :: Lens' PutMetricAlarm [Text]

-- | The unit of measure for the statistic. For example, the units for the
--   Amazon EC2 NetworkIn metric are Bytes because NetworkIn tracks the
--   number of bytes that an instance receives on all network interfaces.
--   You can also specify a unit when you create a custom metric. Units
--   help provide conceptual meaning to your data. Metric data points that
--   specify a unit of measure, such as Percent, are aggregated separately.
--   If you specify a unit, you must use a unit that is appropriate for the
--   metric. Otherwise, the Amazon CloudWatch alarm can get stuck in the
--   <tt>INSUFFICIENT DATA</tt> state.
pmaUnit :: Lens' PutMetricAlarm (Maybe StandardUnit)

-- | The statistic for the metric associated with the alarm, other than
--   percentile. For percentile statistics, use <tt>ExtendedStatistic</tt>
--   .
pmaStatistic :: Lens' PutMetricAlarm (Maybe Statistic)

-- | The percentile statistic for the metric associated with the alarm.
--   Specify a value between p0.0 and p100.
pmaExtendedStatistic :: Lens' PutMetricAlarm (Maybe Text)

-- | The name for the alarm. This name must be unique within the AWS
--   account.
pmaAlarmName :: Lens' PutMetricAlarm Text

-- | The name for the metric associated with the alarm.
pmaMetricName :: Lens' PutMetricAlarm Text

-- | The namespace for the metric associated with the alarm.
pmaNamespace :: Lens' PutMetricAlarm Text

-- | The period, in seconds, over which the specified statistic is applied.
pmaPeriod :: Lens' PutMetricAlarm Natural

-- | The number of periods over which data is compared to the specified
--   threshold.
pmaEvaluationPeriods :: Lens' PutMetricAlarm Natural

-- | The value against which the specified statistic is compared.
pmaThreshold :: Lens' PutMetricAlarm Double

-- | The arithmetic operation to use when comparing the specified statistic
--   and threshold. The specified statistic value is used as the first
--   operand.
pmaComparisonOperator :: Lens' PutMetricAlarm ComparisonOperator

-- | Creates a value of <a>PutMetricAlarmResponse</a> with the minimum
--   fields required to make a request.
putMetricAlarmResponse :: PutMetricAlarmResponse

-- | <i>See:</i> <a>putMetricAlarmResponse</a> smart constructor.
data PutMetricAlarmResponse
instance GHC.Generics.Generic Network.AWS.CloudWatch.PutMetricAlarm.PutMetricAlarmResponse
instance Data.Data.Data Network.AWS.CloudWatch.PutMetricAlarm.PutMetricAlarmResponse
instance GHC.Show.Show Network.AWS.CloudWatch.PutMetricAlarm.PutMetricAlarmResponse
instance GHC.Read.Read Network.AWS.CloudWatch.PutMetricAlarm.PutMetricAlarmResponse
instance GHC.Classes.Eq Network.AWS.CloudWatch.PutMetricAlarm.PutMetricAlarmResponse
instance GHC.Generics.Generic Network.AWS.CloudWatch.PutMetricAlarm.PutMetricAlarm
instance Data.Data.Data Network.AWS.CloudWatch.PutMetricAlarm.PutMetricAlarm
instance GHC.Show.Show Network.AWS.CloudWatch.PutMetricAlarm.PutMetricAlarm
instance GHC.Read.Read Network.AWS.CloudWatch.PutMetricAlarm.PutMetricAlarm
instance GHC.Classes.Eq Network.AWS.CloudWatch.PutMetricAlarm.PutMetricAlarm
instance Network.AWS.Types.AWSRequest Network.AWS.CloudWatch.PutMetricAlarm.PutMetricAlarm
instance Data.Hashable.Class.Hashable Network.AWS.CloudWatch.PutMetricAlarm.PutMetricAlarm
instance Control.DeepSeq.NFData Network.AWS.CloudWatch.PutMetricAlarm.PutMetricAlarm
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.CloudWatch.PutMetricAlarm.PutMetricAlarm
instance Network.AWS.Data.Path.ToPath Network.AWS.CloudWatch.PutMetricAlarm.PutMetricAlarm
instance Network.AWS.Data.Query.ToQuery Network.AWS.CloudWatch.PutMetricAlarm.PutMetricAlarm
instance Control.DeepSeq.NFData Network.AWS.CloudWatch.PutMetricAlarm.PutMetricAlarmResponse


-- | List the specified metrics. You can use the returned metrics with
--   <tt>GetMetricStatistics</tt> to obtain statistical data.
--   
--   Up to 500 results are returned for any one call. To retrieve
--   additional results, use the returned token with subsequent calls.
--   
--   After you create a metric, allow up to fifteen minutes before the
--   metric appears. Statistics about the metric, however, are available
--   sooner using <tt>GetMetricStatistics</tt> .
--   
--   This operation returns paginated results.
module Network.AWS.CloudWatch.ListMetrics

-- | Creates a value of <a>ListMetrics</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lmMetricName</a> - The name of the metric to filter
--   against.</li>
--   <li><a>lmNamespace</a> - The namespace to filter against.</li>
--   <li><a>lmNextToken</a> - The token returned by a previous call to
--   indicate that there is more data available.</li>
--   <li><a>lmDimensions</a> - The dimensions to filter against.</li>
--   </ul>
listMetrics :: ListMetrics

-- | <i>See:</i> <a>listMetrics</a> smart constructor.
data ListMetrics

-- | The name of the metric to filter against.
lmMetricName :: Lens' ListMetrics (Maybe Text)

-- | The namespace to filter against.
lmNamespace :: Lens' ListMetrics (Maybe Text)

-- | The token returned by a previous call to indicate that there is more
--   data available.
lmNextToken :: Lens' ListMetrics (Maybe Text)

-- | The dimensions to filter against.
lmDimensions :: Lens' ListMetrics [DimensionFilter]

-- | Creates a value of <a>ListMetricsResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lmrsMetrics</a> - The metrics.</li>
--   <li><a>lmrsNextToken</a> - The token that marks the start of the next
--   batch of returned results.</li>
--   <li><a>lmrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
listMetricsResponse :: Int -> ListMetricsResponse

-- | <i>See:</i> <a>listMetricsResponse</a> smart constructor.
data ListMetricsResponse

-- | The metrics.
lmrsMetrics :: Lens' ListMetricsResponse [Metric]

-- | The token that marks the start of the next batch of returned results.
lmrsNextToken :: Lens' ListMetricsResponse (Maybe Text)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
lmrsResponseStatus :: Lens' ListMetricsResponse Int
instance GHC.Generics.Generic Network.AWS.CloudWatch.ListMetrics.ListMetricsResponse
instance Data.Data.Data Network.AWS.CloudWatch.ListMetrics.ListMetricsResponse
instance GHC.Show.Show Network.AWS.CloudWatch.ListMetrics.ListMetricsResponse
instance GHC.Read.Read Network.AWS.CloudWatch.ListMetrics.ListMetricsResponse
instance GHC.Classes.Eq Network.AWS.CloudWatch.ListMetrics.ListMetricsResponse
instance GHC.Generics.Generic Network.AWS.CloudWatch.ListMetrics.ListMetrics
instance Data.Data.Data Network.AWS.CloudWatch.ListMetrics.ListMetrics
instance GHC.Show.Show Network.AWS.CloudWatch.ListMetrics.ListMetrics
instance GHC.Read.Read Network.AWS.CloudWatch.ListMetrics.ListMetrics
instance GHC.Classes.Eq Network.AWS.CloudWatch.ListMetrics.ListMetrics
instance Network.AWS.Pager.AWSPager Network.AWS.CloudWatch.ListMetrics.ListMetrics
instance Network.AWS.Types.AWSRequest Network.AWS.CloudWatch.ListMetrics.ListMetrics
instance Data.Hashable.Class.Hashable Network.AWS.CloudWatch.ListMetrics.ListMetrics
instance Control.DeepSeq.NFData Network.AWS.CloudWatch.ListMetrics.ListMetrics
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.CloudWatch.ListMetrics.ListMetrics
instance Network.AWS.Data.Path.ToPath Network.AWS.CloudWatch.ListMetrics.ListMetrics
instance Network.AWS.Data.Query.ToQuery Network.AWS.CloudWatch.ListMetrics.ListMetrics
instance Control.DeepSeq.NFData Network.AWS.CloudWatch.ListMetrics.ListMetricsResponse


-- | Gets statistics for the specified metric.
--   
--   Amazon CloudWatch retains metric data as follows:
--   
--   <ul>
--   <li>Data points with a period of 60 seconds (1 minute) are available
--   for 15 days</li>
--   <li>Data points with a period of 300 seconds (5 minute) are available
--   for 63 days</li>
--   <li>Data points with a period of 3600 seconds (1 hour) are available
--   for 455 days (15 months)</li>
--   </ul>
--   
--   Note that CloudWatch started retaining 5-minute and 1-hour metric data
--   as of 9 July 2016.
--   
--   The maximum number of data points returned from a single call is
--   1,440. If you request more than 1,440 data points, Amazon CloudWatch
--   returns an error. To reduce the number of data points, you can narrow
--   the specified time range and make multiple requests across adjacent
--   time ranges, or you can increase the specified period. A period can be
--   as short as one minute (60 seconds). Note that data points are not
--   returned in chronological order.
--   
--   Amazon CloudWatch aggregates data points based on the length of the
--   period that you specify. For example, if you request statistics with a
--   one-hour period, Amazon CloudWatch aggregates all data points with
--   time stamps that fall within each one-hour period. Therefore, the
--   number of values aggregated by CloudWatch is larger than the number of
--   data points returned.
--   
--   For a list of metrics and dimensions supported by AWS services, see
--   the <a>Amazon CloudWatch Metrics and Dimensions Reference</a> in the
--   <i>Amazon CloudWatch User Guide</i> .
module Network.AWS.CloudWatch.GetMetricStatistics

-- | Creates a value of <a>GetMetricStatistics</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>gmsExtendedStatistics</a> - The percentile statistics. Specify
--   values between p0.0 and p100.</li>
--   <li><a>gmsStatistics</a> - The metric statistics, other than
--   percentile. For percentile statistics, use <tt>ExtendedStatistic</tt>
--   .</li>
--   <li><a>gmsDimensions</a> - The dimensions. CloudWatch treats each
--   unique combination of dimensions as a separate metric. You can't
--   retrieve statistics using combinations of dimensions that were not
--   specially published. You must specify the same dimensions that were
--   used when the metrics were created. For an example, see <a>Dimension
--   Combinations</a> in the <i>Amazon CloudWatch User Guide</i> .</li>
--   <li><a>gmsUnit</a> - The unit for a given metric. Metrics may be
--   reported in multiple units. Not supplying a unit results in all units
--   being returned. If the metric only ever reports one unit, specifying a
--   unit has no effect.</li>
--   <li><a>gmsNamespace</a> - The namespace of the metric, with or without
--   spaces.</li>
--   <li><a>gmsMetricName</a> - The name of the metric, with or without
--   spaces.</li>
--   <li><a>gmsStartTime</a> - The time stamp that determines the first
--   data point to return. Note that start times are evaluated relative to
--   the time that CloudWatch receives the request. The value specified is
--   inclusive; results include data points with the specified time stamp.
--   The time stamp must be in ISO 8601 UTC format (for example,
--   2016-10-03T23:00:00Z). CloudWatch rounds the specified time stamp as
--   follows: * Start time less than 15 days ago - Round down to the
--   nearest whole minute. For example, 12:32:34 is rounded down to
--   12:32:00. * Start time between 15 and 63 days ago - Round down to the
--   nearest 5-minute clock interval. For example, 12:32:34 is rounded down
--   to 12:30:00. * Start time greater than 63 days ago - Round down to the
--   nearest 1-hour clock interval. For example, 12:32:34 is rounded down
--   to 12:00:00.</li>
--   <li><a>gmsEndTime</a> - The time stamp that determines the last data
--   point to return. The value specified is exclusive; results will
--   include data points up to the specified time stamp. The time stamp
--   must be in ISO 8601 UTC format (for example,
--   2016-10-10T23:00:00Z).</li>
--   <li><a>gmsPeriod</a> - The granularity, in seconds, of the returned
--   data points. A period can be as short as one minute (60 seconds) and
--   must be a multiple of 60. The default value is 60. If the
--   <tt>StartTime</tt> parameter specifies a time stamp that is greater
--   than 15 days ago, you must specify the period as follows or no data
--   points in that time range is returned: * Start time between 15 and 63
--   days ago - Use a multiple of 300 seconds (5 minutes). * Start time
--   greater than 63 days ago - Use a multiple of 3600 seconds (1
--   hour).</li>
--   </ul>
getMetricStatistics :: Text -> Text -> UTCTime -> UTCTime -> Natural -> GetMetricStatistics

-- | <i>See:</i> <a>getMetricStatistics</a> smart constructor.
data GetMetricStatistics

-- | The percentile statistics. Specify values between p0.0 and p100.
gmsExtendedStatistics :: Lens' GetMetricStatistics (Maybe (NonEmpty Text))

-- | The metric statistics, other than percentile. For percentile
--   statistics, use <tt>ExtendedStatistic</tt> .
gmsStatistics :: Lens' GetMetricStatistics (Maybe (NonEmpty Statistic))

-- | The dimensions. CloudWatch treats each unique combination of
--   dimensions as a separate metric. You can't retrieve statistics using
--   combinations of dimensions that were not specially published. You must
--   specify the same dimensions that were used when the metrics were
--   created. For an example, see <a>Dimension Combinations</a> in the
--   <i>Amazon CloudWatch User Guide</i> .
gmsDimensions :: Lens' GetMetricStatistics [Dimension]

-- | The unit for a given metric. Metrics may be reported in multiple
--   units. Not supplying a unit results in all units being returned. If
--   the metric only ever reports one unit, specifying a unit has no
--   effect.
gmsUnit :: Lens' GetMetricStatistics (Maybe StandardUnit)

-- | The namespace of the metric, with or without spaces.
gmsNamespace :: Lens' GetMetricStatistics Text

-- | The name of the metric, with or without spaces.
gmsMetricName :: Lens' GetMetricStatistics Text

-- | The time stamp that determines the first data point to return. Note
--   that start times are evaluated relative to the time that CloudWatch
--   receives the request. The value specified is inclusive; results
--   include data points with the specified time stamp. The time stamp must
--   be in ISO 8601 UTC format (for example, 2016-10-03T23:00:00Z).
--   CloudWatch rounds the specified time stamp as follows: * Start time
--   less than 15 days ago - Round down to the nearest whole minute. For
--   example, 12:32:34 is rounded down to 12:32:00. * Start time between 15
--   and 63 days ago - Round down to the nearest 5-minute clock interval.
--   For example, 12:32:34 is rounded down to 12:30:00. * Start time
--   greater than 63 days ago - Round down to the nearest 1-hour clock
--   interval. For example, 12:32:34 is rounded down to 12:00:00.
gmsStartTime :: Lens' GetMetricStatistics UTCTime

-- | The time stamp that determines the last data point to return. The
--   value specified is exclusive; results will include data points up to
--   the specified time stamp. The time stamp must be in ISO 8601 UTC
--   format (for example, 2016-10-10T23:00:00Z).
gmsEndTime :: Lens' GetMetricStatistics UTCTime

-- | The granularity, in seconds, of the returned data points. A period can
--   be as short as one minute (60 seconds) and must be a multiple of 60.
--   The default value is 60. If the <tt>StartTime</tt> parameter specifies
--   a time stamp that is greater than 15 days ago, you must specify the
--   period as follows or no data points in that time range is returned: *
--   Start time between 15 and 63 days ago - Use a multiple of 300 seconds
--   (5 minutes). * Start time greater than 63 days ago - Use a multiple of
--   3600 seconds (1 hour).
gmsPeriod :: Lens' GetMetricStatistics Natural

-- | Creates a value of <a>GetMetricStatisticsResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>gmsrsDatapoints</a> - The data points for the specified
--   metric.</li>
--   <li><a>gmsrsLabel</a> - A label for the specified metric.</li>
--   <li><a>gmsrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
getMetricStatisticsResponse :: Int -> GetMetricStatisticsResponse

-- | <i>See:</i> <a>getMetricStatisticsResponse</a> smart constructor.
data GetMetricStatisticsResponse

-- | The data points for the specified metric.
gmsrsDatapoints :: Lens' GetMetricStatisticsResponse [Datapoint]

-- | A label for the specified metric.
gmsrsLabel :: Lens' GetMetricStatisticsResponse (Maybe Text)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
gmsrsResponseStatus :: Lens' GetMetricStatisticsResponse Int
instance GHC.Generics.Generic Network.AWS.CloudWatch.GetMetricStatistics.GetMetricStatisticsResponse
instance Data.Data.Data Network.AWS.CloudWatch.GetMetricStatistics.GetMetricStatisticsResponse
instance GHC.Show.Show Network.AWS.CloudWatch.GetMetricStatistics.GetMetricStatisticsResponse
instance GHC.Read.Read Network.AWS.CloudWatch.GetMetricStatistics.GetMetricStatisticsResponse
instance GHC.Classes.Eq Network.AWS.CloudWatch.GetMetricStatistics.GetMetricStatisticsResponse
instance GHC.Generics.Generic Network.AWS.CloudWatch.GetMetricStatistics.GetMetricStatistics
instance Data.Data.Data Network.AWS.CloudWatch.GetMetricStatistics.GetMetricStatistics
instance GHC.Show.Show Network.AWS.CloudWatch.GetMetricStatistics.GetMetricStatistics
instance GHC.Read.Read Network.AWS.CloudWatch.GetMetricStatistics.GetMetricStatistics
instance GHC.Classes.Eq Network.AWS.CloudWatch.GetMetricStatistics.GetMetricStatistics
instance Network.AWS.Types.AWSRequest Network.AWS.CloudWatch.GetMetricStatistics.GetMetricStatistics
instance Data.Hashable.Class.Hashable Network.AWS.CloudWatch.GetMetricStatistics.GetMetricStatistics
instance Control.DeepSeq.NFData Network.AWS.CloudWatch.GetMetricStatistics.GetMetricStatistics
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.CloudWatch.GetMetricStatistics.GetMetricStatistics
instance Network.AWS.Data.Path.ToPath Network.AWS.CloudWatch.GetMetricStatistics.GetMetricStatistics
instance Network.AWS.Data.Query.ToQuery Network.AWS.CloudWatch.GetMetricStatistics.GetMetricStatistics
instance Control.DeepSeq.NFData Network.AWS.CloudWatch.GetMetricStatistics.GetMetricStatisticsResponse


-- | Enables the actions for the specified alarms.
module Network.AWS.CloudWatch.EnableAlarmActions

-- | Creates a value of <a>EnableAlarmActions</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>eaaAlarmNames</a> - The names of the alarms.</li>
--   </ul>
enableAlarmActions :: EnableAlarmActions

-- | <i>See:</i> <a>enableAlarmActions</a> smart constructor.
data EnableAlarmActions

-- | The names of the alarms.
eaaAlarmNames :: Lens' EnableAlarmActions [Text]

-- | Creates a value of <a>EnableAlarmActionsResponse</a> with the minimum
--   fields required to make a request.
enableAlarmActionsResponse :: EnableAlarmActionsResponse

-- | <i>See:</i> <a>enableAlarmActionsResponse</a> smart constructor.
data EnableAlarmActionsResponse
instance GHC.Generics.Generic Network.AWS.CloudWatch.EnableAlarmActions.EnableAlarmActionsResponse
instance Data.Data.Data Network.AWS.CloudWatch.EnableAlarmActions.EnableAlarmActionsResponse
instance GHC.Show.Show Network.AWS.CloudWatch.EnableAlarmActions.EnableAlarmActionsResponse
instance GHC.Read.Read Network.AWS.CloudWatch.EnableAlarmActions.EnableAlarmActionsResponse
instance GHC.Classes.Eq Network.AWS.CloudWatch.EnableAlarmActions.EnableAlarmActionsResponse
instance GHC.Generics.Generic Network.AWS.CloudWatch.EnableAlarmActions.EnableAlarmActions
instance Data.Data.Data Network.AWS.CloudWatch.EnableAlarmActions.EnableAlarmActions
instance GHC.Show.Show Network.AWS.CloudWatch.EnableAlarmActions.EnableAlarmActions
instance GHC.Read.Read Network.AWS.CloudWatch.EnableAlarmActions.EnableAlarmActions
instance GHC.Classes.Eq Network.AWS.CloudWatch.EnableAlarmActions.EnableAlarmActions
instance Network.AWS.Types.AWSRequest Network.AWS.CloudWatch.EnableAlarmActions.EnableAlarmActions
instance Data.Hashable.Class.Hashable Network.AWS.CloudWatch.EnableAlarmActions.EnableAlarmActions
instance Control.DeepSeq.NFData Network.AWS.CloudWatch.EnableAlarmActions.EnableAlarmActions
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.CloudWatch.EnableAlarmActions.EnableAlarmActions
instance Network.AWS.Data.Path.ToPath Network.AWS.CloudWatch.EnableAlarmActions.EnableAlarmActions
instance Network.AWS.Data.Query.ToQuery Network.AWS.CloudWatch.EnableAlarmActions.EnableAlarmActions
instance Control.DeepSeq.NFData Network.AWS.CloudWatch.EnableAlarmActions.EnableAlarmActionsResponse


-- | Disables the actions for the specified alarms. When an alarm's actions
--   are disabled, the alarm actions do not execute when the alarm state
--   changes.
module Network.AWS.CloudWatch.DisableAlarmActions

-- | Creates a value of <a>DisableAlarmActions</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>daaAlarmNames</a> - The names of the alarms.</li>
--   </ul>
disableAlarmActions :: DisableAlarmActions

-- | <i>See:</i> <a>disableAlarmActions</a> smart constructor.
data DisableAlarmActions

-- | The names of the alarms.
daaAlarmNames :: Lens' DisableAlarmActions [Text]

-- | Creates a value of <a>DisableAlarmActionsResponse</a> with the minimum
--   fields required to make a request.
disableAlarmActionsResponse :: DisableAlarmActionsResponse

-- | <i>See:</i> <a>disableAlarmActionsResponse</a> smart constructor.
data DisableAlarmActionsResponse
instance GHC.Generics.Generic Network.AWS.CloudWatch.DisableAlarmActions.DisableAlarmActionsResponse
instance Data.Data.Data Network.AWS.CloudWatch.DisableAlarmActions.DisableAlarmActionsResponse
instance GHC.Show.Show Network.AWS.CloudWatch.DisableAlarmActions.DisableAlarmActionsResponse
instance GHC.Read.Read Network.AWS.CloudWatch.DisableAlarmActions.DisableAlarmActionsResponse
instance GHC.Classes.Eq Network.AWS.CloudWatch.DisableAlarmActions.DisableAlarmActionsResponse
instance GHC.Generics.Generic Network.AWS.CloudWatch.DisableAlarmActions.DisableAlarmActions
instance Data.Data.Data Network.AWS.CloudWatch.DisableAlarmActions.DisableAlarmActions
instance GHC.Show.Show Network.AWS.CloudWatch.DisableAlarmActions.DisableAlarmActions
instance GHC.Read.Read Network.AWS.CloudWatch.DisableAlarmActions.DisableAlarmActions
instance GHC.Classes.Eq Network.AWS.CloudWatch.DisableAlarmActions.DisableAlarmActions
instance Network.AWS.Types.AWSRequest Network.AWS.CloudWatch.DisableAlarmActions.DisableAlarmActions
instance Data.Hashable.Class.Hashable Network.AWS.CloudWatch.DisableAlarmActions.DisableAlarmActions
instance Control.DeepSeq.NFData Network.AWS.CloudWatch.DisableAlarmActions.DisableAlarmActions
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.CloudWatch.DisableAlarmActions.DisableAlarmActions
instance Network.AWS.Data.Path.ToPath Network.AWS.CloudWatch.DisableAlarmActions.DisableAlarmActions
instance Network.AWS.Data.Query.ToQuery Network.AWS.CloudWatch.DisableAlarmActions.DisableAlarmActions
instance Control.DeepSeq.NFData Network.AWS.CloudWatch.DisableAlarmActions.DisableAlarmActionsResponse


-- | Retrieves the alarms for the specified metric. Specify a statistic,
--   period, or unit to filter the results.
module Network.AWS.CloudWatch.DescribeAlarmsForMetric

-- | Creates a value of <a>DescribeAlarmsForMetric</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dafmPeriod</a> - The period, in seconds, over which the
--   statistic is applied.</li>
--   <li><a>dafmDimensions</a> - The dimensions associated with the metric.
--   If the metric has any associated dimensions, you must specify them in
--   order for the call to succeed.</li>
--   <li><a>dafmUnit</a> - The unit for the metric.</li>
--   <li><a>dafmStatistic</a> - The statistic for the metric, other than
--   percentiles. For percentile statistics, use
--   <tt>ExtendedStatistics</tt> .</li>
--   <li><a>dafmExtendedStatistic</a> - The percentile statistic for the
--   metric. Specify a value between p0.0 and p100.</li>
--   <li><a>dafmMetricName</a> - The name of the metric.</li>
--   <li><a>dafmNamespace</a> - The namespace of the metric.</li>
--   </ul>
describeAlarmsForMetric :: Text -> Text -> DescribeAlarmsForMetric

-- | <i>See:</i> <a>describeAlarmsForMetric</a> smart constructor.
data DescribeAlarmsForMetric

-- | The period, in seconds, over which the statistic is applied.
dafmPeriod :: Lens' DescribeAlarmsForMetric (Maybe Natural)

-- | The dimensions associated with the metric. If the metric has any
--   associated dimensions, you must specify them in order for the call to
--   succeed.
dafmDimensions :: Lens' DescribeAlarmsForMetric [Dimension]

-- | The unit for the metric.
dafmUnit :: Lens' DescribeAlarmsForMetric (Maybe StandardUnit)

-- | The statistic for the metric, other than percentiles. For percentile
--   statistics, use <tt>ExtendedStatistics</tt> .
dafmStatistic :: Lens' DescribeAlarmsForMetric (Maybe Statistic)

-- | The percentile statistic for the metric. Specify a value between p0.0
--   and p100.
dafmExtendedStatistic :: Lens' DescribeAlarmsForMetric (Maybe Text)

-- | The name of the metric.
dafmMetricName :: Lens' DescribeAlarmsForMetric Text

-- | The namespace of the metric.
dafmNamespace :: Lens' DescribeAlarmsForMetric Text

-- | Creates a value of <a>DescribeAlarmsForMetricResponse</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dafmrsMetricAlarms</a> - The information for each alarm with
--   the specified metric.</li>
--   <li><a>dafmrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
describeAlarmsForMetricResponse :: Int -> DescribeAlarmsForMetricResponse

-- | <i>See:</i> <a>describeAlarmsForMetricResponse</a> smart constructor.
data DescribeAlarmsForMetricResponse

-- | The information for each alarm with the specified metric.
dafmrsMetricAlarms :: Lens' DescribeAlarmsForMetricResponse [MetricAlarm]

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
dafmrsResponseStatus :: Lens' DescribeAlarmsForMetricResponse Int
instance GHC.Generics.Generic Network.AWS.CloudWatch.DescribeAlarmsForMetric.DescribeAlarmsForMetricResponse
instance Data.Data.Data Network.AWS.CloudWatch.DescribeAlarmsForMetric.DescribeAlarmsForMetricResponse
instance GHC.Show.Show Network.AWS.CloudWatch.DescribeAlarmsForMetric.DescribeAlarmsForMetricResponse
instance GHC.Read.Read Network.AWS.CloudWatch.DescribeAlarmsForMetric.DescribeAlarmsForMetricResponse
instance GHC.Classes.Eq Network.AWS.CloudWatch.DescribeAlarmsForMetric.DescribeAlarmsForMetricResponse
instance GHC.Generics.Generic Network.AWS.CloudWatch.DescribeAlarmsForMetric.DescribeAlarmsForMetric
instance Data.Data.Data Network.AWS.CloudWatch.DescribeAlarmsForMetric.DescribeAlarmsForMetric
instance GHC.Show.Show Network.AWS.CloudWatch.DescribeAlarmsForMetric.DescribeAlarmsForMetric
instance GHC.Read.Read Network.AWS.CloudWatch.DescribeAlarmsForMetric.DescribeAlarmsForMetric
instance GHC.Classes.Eq Network.AWS.CloudWatch.DescribeAlarmsForMetric.DescribeAlarmsForMetric
instance Network.AWS.Types.AWSRequest Network.AWS.CloudWatch.DescribeAlarmsForMetric.DescribeAlarmsForMetric
instance Data.Hashable.Class.Hashable Network.AWS.CloudWatch.DescribeAlarmsForMetric.DescribeAlarmsForMetric
instance Control.DeepSeq.NFData Network.AWS.CloudWatch.DescribeAlarmsForMetric.DescribeAlarmsForMetric
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.CloudWatch.DescribeAlarmsForMetric.DescribeAlarmsForMetric
instance Network.AWS.Data.Path.ToPath Network.AWS.CloudWatch.DescribeAlarmsForMetric.DescribeAlarmsForMetric
instance Network.AWS.Data.Query.ToQuery Network.AWS.CloudWatch.DescribeAlarmsForMetric.DescribeAlarmsForMetric
instance Control.DeepSeq.NFData Network.AWS.CloudWatch.DescribeAlarmsForMetric.DescribeAlarmsForMetricResponse


-- | Retrieves the specified alarms. If no alarms are specified, all alarms
--   are returned. Alarms can be retrieved by using only a prefix for the
--   alarm name, the alarm state, or a prefix for any action.
--   
--   This operation returns paginated results.
module Network.AWS.CloudWatch.DescribeAlarms

-- | Creates a value of <a>DescribeAlarms</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>daAlarmNamePrefix</a> - The alarm name prefix. You cannot
--   specify <tt>AlarmNames</tt> if this parameter is specified.</li>
--   <li><a>daActionPrefix</a> - The action name prefix.</li>
--   <li><a>daNextToken</a> - The token returned by a previous call to
--   indicate that there is more data available.</li>
--   <li><a>daStateValue</a> - The state value to be used in matching
--   alarms.</li>
--   <li><a>daAlarmNames</a> - The names of the alarms.</li>
--   <li><a>daMaxRecords</a> - The maximum number of alarm descriptions to
--   retrieve.</li>
--   </ul>
describeAlarms :: DescribeAlarms

-- | <i>See:</i> <a>describeAlarms</a> smart constructor.
data DescribeAlarms

-- | The alarm name prefix. You cannot specify <tt>AlarmNames</tt> if this
--   parameter is specified.
daAlarmNamePrefix :: Lens' DescribeAlarms (Maybe Text)

-- | The action name prefix.
daActionPrefix :: Lens' DescribeAlarms (Maybe Text)

-- | The token returned by a previous call to indicate that there is more
--   data available.
daNextToken :: Lens' DescribeAlarms (Maybe Text)

-- | The state value to be used in matching alarms.
daStateValue :: Lens' DescribeAlarms (Maybe StateValue)

-- | The names of the alarms.
daAlarmNames :: Lens' DescribeAlarms [Text]

-- | The maximum number of alarm descriptions to retrieve.
daMaxRecords :: Lens' DescribeAlarms (Maybe Natural)

-- | Creates a value of <a>DescribeAlarmsResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>darsMetricAlarms</a> - The information for the specified
--   alarms.</li>
--   <li><a>darsNextToken</a> - The token that marks the start of the next
--   batch of returned results.</li>
--   <li><a>darsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
describeAlarmsResponse :: Int -> DescribeAlarmsResponse

-- | <i>See:</i> <a>describeAlarmsResponse</a> smart constructor.
data DescribeAlarmsResponse

-- | The information for the specified alarms.
darsMetricAlarms :: Lens' DescribeAlarmsResponse [MetricAlarm]

-- | The token that marks the start of the next batch of returned results.
darsNextToken :: Lens' DescribeAlarmsResponse (Maybe Text)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
darsResponseStatus :: Lens' DescribeAlarmsResponse Int
instance GHC.Generics.Generic Network.AWS.CloudWatch.DescribeAlarms.DescribeAlarmsResponse
instance Data.Data.Data Network.AWS.CloudWatch.DescribeAlarms.DescribeAlarmsResponse
instance GHC.Show.Show Network.AWS.CloudWatch.DescribeAlarms.DescribeAlarmsResponse
instance GHC.Read.Read Network.AWS.CloudWatch.DescribeAlarms.DescribeAlarmsResponse
instance GHC.Classes.Eq Network.AWS.CloudWatch.DescribeAlarms.DescribeAlarmsResponse
instance GHC.Generics.Generic Network.AWS.CloudWatch.DescribeAlarms.DescribeAlarms
instance Data.Data.Data Network.AWS.CloudWatch.DescribeAlarms.DescribeAlarms
instance GHC.Show.Show Network.AWS.CloudWatch.DescribeAlarms.DescribeAlarms
instance GHC.Read.Read Network.AWS.CloudWatch.DescribeAlarms.DescribeAlarms
instance GHC.Classes.Eq Network.AWS.CloudWatch.DescribeAlarms.DescribeAlarms
instance Network.AWS.Pager.AWSPager Network.AWS.CloudWatch.DescribeAlarms.DescribeAlarms
instance Network.AWS.Types.AWSRequest Network.AWS.CloudWatch.DescribeAlarms.DescribeAlarms
instance Data.Hashable.Class.Hashable Network.AWS.CloudWatch.DescribeAlarms.DescribeAlarms
instance Control.DeepSeq.NFData Network.AWS.CloudWatch.DescribeAlarms.DescribeAlarms
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.CloudWatch.DescribeAlarms.DescribeAlarms
instance Network.AWS.Data.Path.ToPath Network.AWS.CloudWatch.DescribeAlarms.DescribeAlarms
instance Network.AWS.Data.Query.ToQuery Network.AWS.CloudWatch.DescribeAlarms.DescribeAlarms
instance Control.DeepSeq.NFData Network.AWS.CloudWatch.DescribeAlarms.DescribeAlarmsResponse


-- | Retrieves the history for the specified alarm. You can filter the
--   results by date range or item type. If an alarm name is not specified,
--   the histories for all alarms are returned.
--   
--   Note that Amazon CloudWatch retains the history of an alarm even if
--   you delete the alarm.
--   
--   This operation returns paginated results.
module Network.AWS.CloudWatch.DescribeAlarmHistory

-- | Creates a value of <a>DescribeAlarmHistory</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dahAlarmName</a> - The name of the alarm.</li>
--   <li><a>dahHistoryItemType</a> - The type of alarm histories to
--   retrieve.</li>
--   <li><a>dahEndDate</a> - The ending date to retrieve alarm
--   history.</li>
--   <li><a>dahStartDate</a> - The starting date to retrieve alarm
--   history.</li>
--   <li><a>dahNextToken</a> - The token returned by a previous call to
--   indicate that there is more data available.</li>
--   <li><a>dahMaxRecords</a> - The maximum number of alarm history records
--   to retrieve.</li>
--   </ul>
describeAlarmHistory :: DescribeAlarmHistory

-- | <i>See:</i> <a>describeAlarmHistory</a> smart constructor.
data DescribeAlarmHistory

-- | The name of the alarm.
dahAlarmName :: Lens' DescribeAlarmHistory (Maybe Text)

-- | The type of alarm histories to retrieve.
dahHistoryItemType :: Lens' DescribeAlarmHistory (Maybe HistoryItemType)

-- | The ending date to retrieve alarm history.
dahEndDate :: Lens' DescribeAlarmHistory (Maybe UTCTime)

-- | The starting date to retrieve alarm history.
dahStartDate :: Lens' DescribeAlarmHistory (Maybe UTCTime)

-- | The token returned by a previous call to indicate that there is more
--   data available.
dahNextToken :: Lens' DescribeAlarmHistory (Maybe Text)

-- | The maximum number of alarm history records to retrieve.
dahMaxRecords :: Lens' DescribeAlarmHistory (Maybe Natural)

-- | Creates a value of <a>DescribeAlarmHistoryResponse</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dahrsAlarmHistoryItems</a> - The alarm histories, in JSON
--   format.</li>
--   <li><a>dahrsNextToken</a> - The token that marks the start of the next
--   batch of returned results.</li>
--   <li><a>dahrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
describeAlarmHistoryResponse :: Int -> DescribeAlarmHistoryResponse

-- | <i>See:</i> <a>describeAlarmHistoryResponse</a> smart constructor.
data DescribeAlarmHistoryResponse

-- | The alarm histories, in JSON format.
dahrsAlarmHistoryItems :: Lens' DescribeAlarmHistoryResponse [AlarmHistoryItem]

-- | The token that marks the start of the next batch of returned results.
dahrsNextToken :: Lens' DescribeAlarmHistoryResponse (Maybe Text)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
dahrsResponseStatus :: Lens' DescribeAlarmHistoryResponse Int
instance GHC.Generics.Generic Network.AWS.CloudWatch.DescribeAlarmHistory.DescribeAlarmHistoryResponse
instance Data.Data.Data Network.AWS.CloudWatch.DescribeAlarmHistory.DescribeAlarmHistoryResponse
instance GHC.Show.Show Network.AWS.CloudWatch.DescribeAlarmHistory.DescribeAlarmHistoryResponse
instance GHC.Read.Read Network.AWS.CloudWatch.DescribeAlarmHistory.DescribeAlarmHistoryResponse
instance GHC.Classes.Eq Network.AWS.CloudWatch.DescribeAlarmHistory.DescribeAlarmHistoryResponse
instance GHC.Generics.Generic Network.AWS.CloudWatch.DescribeAlarmHistory.DescribeAlarmHistory
instance Data.Data.Data Network.AWS.CloudWatch.DescribeAlarmHistory.DescribeAlarmHistory
instance GHC.Show.Show Network.AWS.CloudWatch.DescribeAlarmHistory.DescribeAlarmHistory
instance GHC.Read.Read Network.AWS.CloudWatch.DescribeAlarmHistory.DescribeAlarmHistory
instance GHC.Classes.Eq Network.AWS.CloudWatch.DescribeAlarmHistory.DescribeAlarmHistory
instance Network.AWS.Pager.AWSPager Network.AWS.CloudWatch.DescribeAlarmHistory.DescribeAlarmHistory
instance Network.AWS.Types.AWSRequest Network.AWS.CloudWatch.DescribeAlarmHistory.DescribeAlarmHistory
instance Data.Hashable.Class.Hashable Network.AWS.CloudWatch.DescribeAlarmHistory.DescribeAlarmHistory
instance Control.DeepSeq.NFData Network.AWS.CloudWatch.DescribeAlarmHistory.DescribeAlarmHistory
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.CloudWatch.DescribeAlarmHistory.DescribeAlarmHistory
instance Network.AWS.Data.Path.ToPath Network.AWS.CloudWatch.DescribeAlarmHistory.DescribeAlarmHistory
instance Network.AWS.Data.Query.ToQuery Network.AWS.CloudWatch.DescribeAlarmHistory.DescribeAlarmHistory
instance Control.DeepSeq.NFData Network.AWS.CloudWatch.DescribeAlarmHistory.DescribeAlarmHistoryResponse


-- | Deletes the specified alarms. In the event of an error, no alarms are
--   deleted.
module Network.AWS.CloudWatch.DeleteAlarms

-- | Creates a value of <a>DeleteAlarms</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dAlarmNames</a> - The alarms to be deleted.</li>
--   </ul>
deleteAlarms :: DeleteAlarms

-- | <i>See:</i> <a>deleteAlarms</a> smart constructor.
data DeleteAlarms

-- | The alarms to be deleted.
dAlarmNames :: Lens' DeleteAlarms [Text]

-- | Creates a value of <a>DeleteAlarmsResponse</a> with the minimum fields
--   required to make a request.
deleteAlarmsResponse :: DeleteAlarmsResponse

-- | <i>See:</i> <a>deleteAlarmsResponse</a> smart constructor.
data DeleteAlarmsResponse
instance GHC.Generics.Generic Network.AWS.CloudWatch.DeleteAlarms.DeleteAlarmsResponse
instance Data.Data.Data Network.AWS.CloudWatch.DeleteAlarms.DeleteAlarmsResponse
instance GHC.Show.Show Network.AWS.CloudWatch.DeleteAlarms.DeleteAlarmsResponse
instance GHC.Read.Read Network.AWS.CloudWatch.DeleteAlarms.DeleteAlarmsResponse
instance GHC.Classes.Eq Network.AWS.CloudWatch.DeleteAlarms.DeleteAlarmsResponse
instance GHC.Generics.Generic Network.AWS.CloudWatch.DeleteAlarms.DeleteAlarms
instance Data.Data.Data Network.AWS.CloudWatch.DeleteAlarms.DeleteAlarms
instance GHC.Show.Show Network.AWS.CloudWatch.DeleteAlarms.DeleteAlarms
instance GHC.Read.Read Network.AWS.CloudWatch.DeleteAlarms.DeleteAlarms
instance GHC.Classes.Eq Network.AWS.CloudWatch.DeleteAlarms.DeleteAlarms
instance Network.AWS.Types.AWSRequest Network.AWS.CloudWatch.DeleteAlarms.DeleteAlarms
instance Data.Hashable.Class.Hashable Network.AWS.CloudWatch.DeleteAlarms.DeleteAlarms
instance Control.DeepSeq.NFData Network.AWS.CloudWatch.DeleteAlarms.DeleteAlarms
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.CloudWatch.DeleteAlarms.DeleteAlarms
instance Network.AWS.Data.Path.ToPath Network.AWS.CloudWatch.DeleteAlarms.DeleteAlarms
instance Network.AWS.Data.Query.ToQuery Network.AWS.CloudWatch.DeleteAlarms.DeleteAlarms
instance Control.DeepSeq.NFData Network.AWS.CloudWatch.DeleteAlarms.DeleteAlarmsResponse


-- | Amazon CloudWatch monitors your Amazon Web Services (AWS) resources
--   and the applications you run on AWS in real-time. You can use
--   CloudWatch to collect and track metrics, which are the variables you
--   want to measure for your resources and applications.
--   
--   CloudWatch alarms send notifications or automatically make changes to
--   the resources you are monitoring based on rules that you define. For
--   example, you can monitor the CPU usage and disk reads and writes of
--   your Amazon Elastic Compute Cloud (Amazon EC2) instances and then use
--   this data to determine whether you should launch additional instances
--   to handle increased load. You can also use this data to stop
--   under-used instances to save money.
--   
--   In addition to monitoring the built-in metrics that come with AWS, you
--   can monitor your own custom metrics. With CloudWatch, you gain
--   system-wide visibility into resource utilization, application
--   performance, and operational health.
module Network.AWS.CloudWatch

-- | API version <tt>2010-08-01</tt> of the Amazon CloudWatch SDK
--   configuration.
cloudWatch :: Service

-- | The quota for alarms for this customer has already been reached.
_LimitExceededFault :: AsError a => Getting (First ServiceError) a ServiceError

-- | The next token specified is invalid.
_InvalidNextToken :: AsError a => Getting (First ServiceError) a ServiceError

-- | Request processing has failed due to some unknown error, exception, or
--   failure.
_InternalServiceFault :: AsError a => Getting (First ServiceError) a ServiceError

-- | The value of an input parameter is bad or out-of-range.
_InvalidParameterValueException :: AsError a => Getting (First ServiceError) a ServiceError

-- | Data was not syntactically valid JSON.
_InvalidFormatFault :: AsError a => Getting (First ServiceError) a ServiceError

-- | An input parameter that is required is missing.
_MissingRequiredParameterException :: AsError a => Getting (First ServiceError) a ServiceError

-- | Parameters that cannot be used together were used together.
_InvalidParameterCombinationException :: AsError a => Getting (First ServiceError) a ServiceError

-- | The named resource does not exist.
_ResourceNotFound :: AsError a => Getting (First ServiceError) a ServiceError
data ComparisonOperator
GreaterThanOrEqualToThreshold :: ComparisonOperator
GreaterThanThreshold :: ComparisonOperator
LessThanOrEqualToThreshold :: ComparisonOperator
LessThanThreshold :: ComparisonOperator
data HistoryItemType
Action :: HistoryItemType
ConfigurationUpdate :: HistoryItemType
StateUpdate :: HistoryItemType
data StandardUnit
Bits :: StandardUnit
BitsSecond :: StandardUnit
Bytes :: StandardUnit
BytesSecond :: StandardUnit
Count :: StandardUnit
CountSecond :: StandardUnit
Gigabits :: StandardUnit
GigabitsSecond :: StandardUnit
Gigabytes :: StandardUnit
GigabytesSecond :: StandardUnit
Kilobits :: StandardUnit
KilobitsSecond :: StandardUnit
Kilobytes :: StandardUnit
KilobytesSecond :: StandardUnit
Megabits :: StandardUnit
MegabitsSecond :: StandardUnit
Megabytes :: StandardUnit
MegabytesSecond :: StandardUnit
Microseconds :: StandardUnit
Milliseconds :: StandardUnit
None :: StandardUnit
Percent :: StandardUnit
Seconds :: StandardUnit
Terabits :: StandardUnit
TerabitsSecond :: StandardUnit
Terabytes :: StandardUnit
TerabytesSecond :: StandardUnit
data StateValue
Alarm :: StateValue
InsufficientData :: StateValue
OK :: StateValue
data Statistic
Average :: Statistic
Maximum :: Statistic
Minimum :: Statistic
SampleCount :: Statistic
Sum :: Statistic

-- | Represents the history of a specific alarm.
--   
--   <i>See:</i> <a>alarmHistoryItem</a> smart constructor.
data AlarmHistoryItem

-- | Creates a value of <a>AlarmHistoryItem</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ahiAlarmName</a> - The descriptive name for the alarm.</li>
--   <li><a>ahiHistoryItemType</a> - The type of alarm history item.</li>
--   <li><a>ahiHistoryData</a> - Data about the alarm, in JSON format.</li>
--   <li><a>ahiHistorySummary</a> - A summary of the alarm history, in text
--   format.</li>
--   <li><a>ahiTimestamp</a> - The time stamp for the alarm history
--   item.</li>
--   </ul>
alarmHistoryItem :: AlarmHistoryItem

-- | The descriptive name for the alarm.
ahiAlarmName :: Lens' AlarmHistoryItem (Maybe Text)

-- | The type of alarm history item.
ahiHistoryItemType :: Lens' AlarmHistoryItem (Maybe HistoryItemType)

-- | Data about the alarm, in JSON format.
ahiHistoryData :: Lens' AlarmHistoryItem (Maybe Text)

-- | A summary of the alarm history, in text format.
ahiHistorySummary :: Lens' AlarmHistoryItem (Maybe Text)

-- | The time stamp for the alarm history item.
ahiTimestamp :: Lens' AlarmHistoryItem (Maybe UTCTime)

-- | Encapsulates the statistical data that Amazon CloudWatch computes from
--   metric data.
--   
--   <i>See:</i> <a>datapoint</a> smart constructor.
data Datapoint

-- | Creates a value of <a>Datapoint</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dSampleCount</a> - The number of metric values that contributed
--   to the aggregate value of this data point.</li>
--   <li><a>dMaximum</a> - The maximum metric value for the data
--   point.</li>
--   <li><a>dAverage</a> - The average of the metric values that correspond
--   to the data point.</li>
--   <li><a>dMinimum</a> - The minimum metric value for the data
--   point.</li>
--   <li><a>dExtendedStatistics</a> - The percentile statistic for the data
--   point.</li>
--   <li><a>dSum</a> - The sum of the metric values for the data
--   point.</li>
--   <li><a>dUnit</a> - The standard unit for the data point.</li>
--   <li><a>dTimestamp</a> - The time stamp used for the data point.</li>
--   </ul>
datapoint :: Datapoint

-- | The number of metric values that contributed to the aggregate value of
--   this data point.
dSampleCount :: Lens' Datapoint (Maybe Double)

-- | The maximum metric value for the data point.
dMaximum :: Lens' Datapoint (Maybe Double)

-- | The average of the metric values that correspond to the data point.
dAverage :: Lens' Datapoint (Maybe Double)

-- | The minimum metric value for the data point.
dMinimum :: Lens' Datapoint (Maybe Double)

-- | The percentile statistic for the data point.
dExtendedStatistics :: Lens' Datapoint (HashMap Text Double)

-- | The sum of the metric values for the data point.
dSum :: Lens' Datapoint (Maybe Double)

-- | The standard unit for the data point.
dUnit :: Lens' Datapoint (Maybe StandardUnit)

-- | The time stamp used for the data point.
dTimestamp :: Lens' Datapoint (Maybe UTCTime)

-- | Expands the identity of a metric.
--   
--   <i>See:</i> <a>dimension</a> smart constructor.
data Dimension

-- | Creates a value of <a>Dimension</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dName</a> - The name of the dimension.</li>
--   <li><a>dValue</a> - The value representing the dimension
--   measurement.</li>
--   </ul>
dimension :: Text -> Text -> Dimension

-- | The name of the dimension.
dName :: Lens' Dimension Text

-- | The value representing the dimension measurement.
dValue :: Lens' Dimension Text

-- | Represents filters for a dimension.
--   
--   <i>See:</i> <a>dimensionFilter</a> smart constructor.
data DimensionFilter

-- | Creates a value of <a>DimensionFilter</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dfValue</a> - The value of the dimension to be matched.</li>
--   <li><a>dfName</a> - The dimension name to be matched.</li>
--   </ul>
dimensionFilter :: Text -> DimensionFilter

-- | The value of the dimension to be matched.
dfValue :: Lens' DimensionFilter (Maybe Text)

-- | The dimension name to be matched.
dfName :: Lens' DimensionFilter Text

-- | Represents a specific metric.
--   
--   <i>See:</i> <a>metric</a> smart constructor.
data Metric

-- | Creates a value of <a>Metric</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>mMetricName</a> - The name of the metric.</li>
--   <li><a>mNamespace</a> - The namespace of the metric.</li>
--   <li><a>mDimensions</a> - The dimensions for the metric.</li>
--   </ul>
metric :: Metric

-- | The name of the metric.
mMetricName :: Lens' Metric (Maybe Text)

-- | The namespace of the metric.
mNamespace :: Lens' Metric (Maybe Text)

-- | The dimensions for the metric.
mDimensions :: Lens' Metric [Dimension]

-- | Represents an alarm.
--   
--   <i>See:</i> <a>metricAlarm</a> smart constructor.
data MetricAlarm

-- | Creates a value of <a>MetricAlarm</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>maAlarmName</a> - The name of the alarm.</li>
--   <li><a>maStateUpdatedTimestamp</a> - The time stamp of the last update
--   to the alarm state.</li>
--   <li><a>maPeriod</a> - The period, in seconds, over which the statistic
--   is applied.</li>
--   <li><a>maAlarmDescription</a> - The description of the alarm.</li>
--   <li><a>maEvaluationPeriods</a> - The number of periods over which data
--   is compared to the specified threshold.</li>
--   <li><a>maMetricName</a> - The name of the metric associated with the
--   alarm.</li>
--   <li><a>maNamespace</a> - The namespace of the metric associated with
--   the alarm.</li>
--   <li><a>maComparisonOperator</a> - The arithmetic operation to use when
--   comparing the specified statistic and threshold. The specified
--   statistic value is used as the first operand.</li>
--   <li><a>maOKActions</a> - The actions to execute when this alarm
--   transitions to the <tt>OK</tt> state from any other state. Each action
--   is specified as an Amazon Resource Name (ARN).</li>
--   <li><a>maStateValue</a> - The state value for the alarm.</li>
--   <li><a>maThreshold</a> - The value to compare with the specified
--   statistic.</li>
--   <li><a>maAlarmConfigurationUpdatedTimestamp</a> - The time stamp of
--   the last update to the alarm configuration.</li>
--   <li><a>maActionsEnabled</a> - Indicates whether actions should be
--   executed during any changes to the alarm state.</li>
--   <li><a>maInsufficientDataActions</a> - The actions to execute when
--   this alarm transitions to the <tt>INSUFFICIENT_DATA</tt> state from
--   any other state. Each action is specified as an Amazon Resource Name
--   (ARN).</li>
--   <li><a>maStateReason</a> - An explanation for the alarm state, in text
--   format.</li>
--   <li><a>maStateReasonData</a> - An explanation for the alarm state, in
--   JSON format.</li>
--   <li><a>maDimensions</a> - The dimensions for the metric associated
--   with the alarm.</li>
--   <li><a>maAlarmARN</a> - The Amazon Resource Name (ARN) of the
--   alarm.</li>
--   <li><a>maAlarmActions</a> - The actions to execute when this alarm
--   transitions to the <tt>ALARM</tt> state from any other state. Each
--   action is specified as an Amazon Resource Name (ARN).</li>
--   <li><a>maUnit</a> - The unit of the metric associated with the
--   alarm.</li>
--   <li><a>maStatistic</a> - The statistic for the metric associated with
--   the alarm, other than percentile. For percentile statistics, use
--   <tt>ExtendedStatistic</tt> .</li>
--   <li><a>maExtendedStatistic</a> - The percentile statistic for the
--   metric associated with the alarm. Specify a value between p0.0 and
--   p100.</li>
--   </ul>
metricAlarm :: MetricAlarm

-- | The name of the alarm.
maAlarmName :: Lens' MetricAlarm (Maybe Text)

-- | The time stamp of the last update to the alarm state.
maStateUpdatedTimestamp :: Lens' MetricAlarm (Maybe UTCTime)

-- | The period, in seconds, over which the statistic is applied.
maPeriod :: Lens' MetricAlarm (Maybe Natural)

-- | The description of the alarm.
maAlarmDescription :: Lens' MetricAlarm (Maybe Text)

-- | The number of periods over which data is compared to the specified
--   threshold.
maEvaluationPeriods :: Lens' MetricAlarm (Maybe Natural)

-- | The name of the metric associated with the alarm.
maMetricName :: Lens' MetricAlarm (Maybe Text)

-- | The namespace of the metric associated with the alarm.
maNamespace :: Lens' MetricAlarm (Maybe Text)

-- | The arithmetic operation to use when comparing the specified statistic
--   and threshold. The specified statistic value is used as the first
--   operand.
maComparisonOperator :: Lens' MetricAlarm (Maybe ComparisonOperator)

-- | The actions to execute when this alarm transitions to the <tt>OK</tt>
--   state from any other state. Each action is specified as an Amazon
--   Resource Name (ARN).
maOKActions :: Lens' MetricAlarm [Text]

-- | The state value for the alarm.
maStateValue :: Lens' MetricAlarm (Maybe StateValue)

-- | The value to compare with the specified statistic.
maThreshold :: Lens' MetricAlarm (Maybe Double)

-- | The time stamp of the last update to the alarm configuration.
maAlarmConfigurationUpdatedTimestamp :: Lens' MetricAlarm (Maybe UTCTime)

-- | Indicates whether actions should be executed during any changes to the
--   alarm state.
maActionsEnabled :: Lens' MetricAlarm (Maybe Bool)

-- | The actions to execute when this alarm transitions to the
--   <tt>INSUFFICIENT_DATA</tt> state from any other state. Each action is
--   specified as an Amazon Resource Name (ARN).
maInsufficientDataActions :: Lens' MetricAlarm [Text]

-- | An explanation for the alarm state, in text format.
maStateReason :: Lens' MetricAlarm (Maybe Text)

-- | An explanation for the alarm state, in JSON format.
maStateReasonData :: Lens' MetricAlarm (Maybe Text)

-- | The dimensions for the metric associated with the alarm.
maDimensions :: Lens' MetricAlarm [Dimension]

-- | The Amazon Resource Name (ARN) of the alarm.
maAlarmARN :: Lens' MetricAlarm (Maybe Text)

-- | The actions to execute when this alarm transitions to the
--   <tt>ALARM</tt> state from any other state. Each action is specified as
--   an Amazon Resource Name (ARN).
maAlarmActions :: Lens' MetricAlarm [Text]

-- | The unit of the metric associated with the alarm.
maUnit :: Lens' MetricAlarm (Maybe StandardUnit)

-- | The statistic for the metric associated with the alarm, other than
--   percentile. For percentile statistics, use <tt>ExtendedStatistic</tt>
--   .
maStatistic :: Lens' MetricAlarm (Maybe Statistic)

-- | The percentile statistic for the metric associated with the alarm.
--   Specify a value between p0.0 and p100.
maExtendedStatistic :: Lens' MetricAlarm (Maybe Text)

-- | Encapsulates the information sent to either create a metric or add new
--   values to be aggregated into an existing metric.
--   
--   <i>See:</i> <a>metricDatum</a> smart constructor.
data MetricDatum

-- | Creates a value of <a>MetricDatum</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>mdValue</a> - The value for the metric. Although the parameter
--   accepts numbers of type Double, Amazon CloudWatch rejects values that
--   are either too small or too large. Values must be in the range of
--   8.515920e-109 to 1.174271e+108 (Base 10) or 2e-360 to 2e360 (Base 2).
--   In addition, special values (for example, NaN, +Infinity, -Infinity)
--   are not supported.</li>
--   <li><a>mdDimensions</a> - The dimensions associated with the
--   metric.</li>
--   <li><a>mdUnit</a> - The unit of the metric.</li>
--   <li><a>mdTimestamp</a> - The time the metric data was received,
--   expressed as the number of milliseconds since Jan 1, 1970 00:00:00
--   UTC.</li>
--   <li><a>mdStatisticValues</a> - The statistical values for the
--   metric.</li>
--   <li><a>mdMetricName</a> - The name of the metric.</li>
--   </ul>
metricDatum :: Text -> MetricDatum

-- | The value for the metric. Although the parameter accepts numbers of
--   type Double, Amazon CloudWatch rejects values that are either too
--   small or too large. Values must be in the range of 8.515920e-109 to
--   1.174271e+108 (Base 10) or 2e-360 to 2e360 (Base 2). In addition,
--   special values (for example, NaN, +Infinity, -Infinity) are not
--   supported.
mdValue :: Lens' MetricDatum (Maybe Double)

-- | The dimensions associated with the metric.
mdDimensions :: Lens' MetricDatum [Dimension]

-- | The unit of the metric.
mdUnit :: Lens' MetricDatum (Maybe StandardUnit)

-- | The time the metric data was received, expressed as the number of
--   milliseconds since Jan 1, 1970 00:00:00 UTC.
mdTimestamp :: Lens' MetricDatum (Maybe UTCTime)

-- | The statistical values for the metric.
mdStatisticValues :: Lens' MetricDatum (Maybe StatisticSet)

-- | The name of the metric.
mdMetricName :: Lens' MetricDatum Text

-- | Represents a set of statistics that describes a specific metric.
--   
--   <i>See:</i> <a>statisticSet</a> smart constructor.
data StatisticSet

-- | Creates a value of <a>StatisticSet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ssSampleCount</a> - The number of samples used for the
--   statistic set.</li>
--   <li><a>ssSum</a> - The sum of values for the sample set.</li>
--   <li><a>ssMinimum</a> - The minimum value of the sample set.</li>
--   <li><a>ssMaximum</a> - The maximum value of the sample set.</li>
--   </ul>
statisticSet :: Double -> Double -> Double -> Double -> StatisticSet

-- | The number of samples used for the statistic set.
ssSampleCount :: Lens' StatisticSet Double

-- | The sum of values for the sample set.
ssSum :: Lens' StatisticSet Double

-- | The minimum value of the sample set.
ssMinimum :: Lens' StatisticSet Double

-- | The maximum value of the sample set.
ssMaximum :: Lens' StatisticSet Double
