-- 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.6.0


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 specified dashboard does not exist.
_DashboardNotFoundError :: 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

-- | Some part of the dashboard data is invalid.
_DashboardInvalidInputError :: 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 were used together that cannot be 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 ScanBy
TimestampAscending :: ScanBy
TimestampDescending :: ScanBy
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
data StatusCode
Complete :: StatusCode
InternalError :: StatusCode
PartialData :: StatusCode

-- | 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)

-- | Represents a specific dashboard.
--   
--   <i>See:</i> <a>dashboardEntry</a> smart constructor.
data DashboardEntry

-- | Creates a value of <a>DashboardEntry</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>deSize</a> - The size of the dashboard, in bytes.</li>
--   <li><a>deDashboardName</a> - The name of the dashboard.</li>
--   <li><a>deLastModified</a> - The time stamp of when the dashboard was
--   last modified, either by an API call or through the console. This
--   number is expressed as the number of milliseconds since Jan 1, 1970
--   00:00:00 UTC.</li>
--   <li><a>deDashboardARN</a> - The Amazon Resource Name (ARN) of the
--   dashboard.</li>
--   </ul>
dashboardEntry :: DashboardEntry

-- | The size of the dashboard, in bytes.
deSize :: Lens' DashboardEntry (Maybe Integer)

-- | The name of the dashboard.
deDashboardName :: Lens' DashboardEntry (Maybe Text)

-- | The time stamp of when the dashboard was last modified, either by an
--   API call or through the console. This number is expressed as the
--   number of milliseconds since Jan 1, 1970 00:00:00 UTC.
deLastModified :: Lens' DashboardEntry (Maybe UTCTime)

-- | The Amazon Resource Name (ARN) of the dashboard.
deDashboardARN :: Lens' DashboardEntry (Maybe Text)

-- | An error or warning for the operation.
--   
--   <i>See:</i> <a>dashboardValidationMessage</a> smart constructor.
data DashboardValidationMessage

-- | Creates a value of <a>DashboardValidationMessage</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>dvmDataPath</a> - The data path related to the message.</li>
--   <li><a>dvmMessage</a> - A message describing the error or
--   warning.</li>
--   </ul>
dashboardValidationMessage :: DashboardValidationMessage

-- | The data path related to the message.
dvmDataPath :: Lens' DashboardValidationMessage (Maybe Text)

-- | A message describing the error or warning.
dvmMessage :: Lens' DashboardValidationMessage (Maybe Text)

-- | Encapsulates the statistical data that 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

-- | A message returned by the <tt>GetMetricData</tt> API, including a code
--   and a description.
--   
--   <i>See:</i> <a>messageData</a> smart constructor.
data MessageData

-- | Creates a value of <a>MessageData</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>mValue</a> - The message text.</li>
--   <li><a>mCode</a> - The error code or status code associated with the
--   message.</li>
--   </ul>
messageData :: MessageData

-- | The message text.
mValue :: Lens' MessageData (Maybe Text)

-- | The error code or status code associated with the message.
mCode :: Lens' MessageData (Maybe 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>maTreatMissingData</a> - Sets how this alarm is to handle
--   missing data points. If this parameter is omitted, the default
--   behavior of <tt>missing</tt> is used.</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>maEvaluateLowSampleCountPercentile</a> - Used only for alarms
--   based on percentiles. If <tt>ignore</tt> , the alarm state does not
--   change during periods with too few data points to be statistically
--   significant. If <tt>evaluate</tt> or this parameter is not used, the
--   alarm is always evaluated and possibly changes state no matter how
--   many data points are available.</li>
--   <li><a>maStateValue</a> - The state value for the alarm.</li>
--   <li><a>maDatapointsToAlarm</a> - The number of datapoints that must be
--   breaching to trigger 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)

-- | Sets how this alarm is to handle missing data points. If this
--   parameter is omitted, the default behavior of <tt>missing</tt> is
--   used.
maTreatMissingData :: Lens' MetricAlarm (Maybe Text)

-- | 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]

-- | Used only for alarms based on percentiles. If <tt>ignore</tt> , the
--   alarm state does not change during periods with too few data points to
--   be statistically significant. If <tt>evaluate</tt> or this parameter
--   is not used, the alarm is always evaluated and possibly changes state
--   no matter how many data points are available.
maEvaluateLowSampleCountPercentile :: Lens' MetricAlarm (Maybe Text)

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

-- | The number of datapoints that must be breaching to trigger the alarm.
maDatapointsToAlarm :: Lens' MetricAlarm (Maybe Natural)

-- | 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)

-- | This structure indicates the metric data to return, and whether this
--   call is just retrieving a batch set of data for one metric, or is
--   performing a math expression on metric data. A single
--   <tt>GetMetricData</tt> call can include up to 100
--   <tt>MetricDataQuery</tt> structures.
--   
--   <i>See:</i> <a>metricDataQuery</a> smart constructor.
data MetricDataQuery

-- | Creates a value of <a>MetricDataQuery</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>mdqReturnData</a> - Indicates whether to return the time stamps
--   and raw data values of this metric. If you are performing this call
--   just to do math expressions and do not also need the raw data
--   returned, you can specify <tt>False</tt> . If you omit this, the
--   default of <tt>True</tt> is used.</li>
--   <li><a>mdqExpression</a> - The math expression to be performed on the
--   returned data, if this structure is performing a math expression. For
--   more information about metric math expressions, see <a>Metric Math
--   Syntax and Functions</a> in the <i>Amazon CloudWatch User Guide</i> .
--   Within one MetricDataQuery structure, you must specify either
--   <tt>Expression</tt> or <tt>MetricStat</tt> but not both.</li>
--   <li><a>mdqLabel</a> - A human-readable label for this metric or
--   expression. This is especially useful if this is an expression, so
--   that you know what the value represents. If the metric or expression
--   is shown in a CloudWatch dashboard widget, the label is shown. If
--   Label is omitted, CloudWatch generates a default.</li>
--   <li><a>mdqMetricStat</a> - The metric to be returned, along with
--   statistics, period, and units. Use this parameter only if this
--   structure is performing a data retrieval and not performing a math
--   expression on the returned data. Within one MetricDataQuery structure,
--   you must specify either <tt>Expression</tt> or <tt>MetricStat</tt> but
--   not both.</li>
--   <li><a>mdqId</a> - A short name used to tie this structure to the
--   results in the response. This name must be unique within a single call
--   to <tt>GetMetricData</tt> . If you are performing math expressions on
--   this set of data, this name represents that data and can serve as a
--   variable in the mathematical expression. The valid characters are
--   letters, numbers, and underscore. The first character must be a
--   lowercase letter.</li>
--   </ul>
metricDataQuery :: Text -> MetricDataQuery

-- | Indicates whether to return the time stamps and raw data values of
--   this metric. If you are performing this call just to do math
--   expressions and do not also need the raw data returned, you can
--   specify <tt>False</tt> . If you omit this, the default of
--   <tt>True</tt> is used.
mdqReturnData :: Lens' MetricDataQuery (Maybe Bool)

-- | The math expression to be performed on the returned data, if this
--   structure is performing a math expression. For more information about
--   metric math expressions, see <a>Metric Math Syntax and Functions</a>
--   in the <i>Amazon CloudWatch User Guide</i> . Within one
--   MetricDataQuery structure, you must specify either <tt>Expression</tt>
--   or <tt>MetricStat</tt> but not both.
mdqExpression :: Lens' MetricDataQuery (Maybe Text)

-- | A human-readable label for this metric or expression. This is
--   especially useful if this is an expression, so that you know what the
--   value represents. If the metric or expression is shown in a CloudWatch
--   dashboard widget, the label is shown. If Label is omitted, CloudWatch
--   generates a default.
mdqLabel :: Lens' MetricDataQuery (Maybe Text)

-- | The metric to be returned, along with statistics, period, and units.
--   Use this parameter only if this structure is performing a data
--   retrieval and not performing a math expression on the returned data.
--   Within one MetricDataQuery structure, you must specify either
--   <tt>Expression</tt> or <tt>MetricStat</tt> but not both.
mdqMetricStat :: Lens' MetricDataQuery (Maybe MetricStat)

-- | A short name used to tie this structure to the results in the
--   response. This name must be unique within a single call to
--   <tt>GetMetricData</tt> . If you are performing math expressions on
--   this set of data, this name represents that data and can serve as a
--   variable in the mathematical expression. The valid characters are
--   letters, numbers, and underscore. The first character must be a
--   lowercase letter.
mdqId :: Lens' MetricDataQuery Text

-- | A <tt>GetMetricData</tt> call returns an array of
--   <tt>MetricDataResult</tt> structures. Each of these structures
--   includes the data points for that metric, along with the time stamps
--   of those data points and other identifying information.
--   
--   <i>See:</i> <a>metricDataResult</a> smart constructor.
data MetricDataResult

-- | Creates a value of <a>MetricDataResult</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>mdrValues</a> - The data points for the metric corresponding to
--   <tt>Timestamps</tt> . The number of values always matches the number
--   of time stamps and the time stamp for Values[x] is Timestamps[x].</li>
--   <li><a>mdrId</a> - The short name you specified to represent this
--   metric.</li>
--   <li><a>mdrTimestamps</a> - The time stamps for the data points,
--   formatted in Unix timestamp format. The number of time stamps always
--   matches the number of values and the value for Timestamps[x] is
--   Values[x].</li>
--   <li><a>mdrMessages</a> - A list of messages with additional
--   information about the data returned.</li>
--   <li><a>mdrLabel</a> - The human-readable label associated with the
--   data.</li>
--   <li><a>mdrStatusCode</a> - The status of the returned data.
--   <tt>Complete</tt> indicates that all data points in the requested time
--   range were returned. <tt>PartialData</tt> means that an incomplete set
--   of data points were returned. You can use the <tt>NextToken</tt> value
--   that was returned and repeat your request to get more data points.
--   <tt>NextToken</tt> is not returned if you are performing a math
--   expression. <tt>InternalError</tt> indicates that an error occurred.
--   Retry your request using <tt>NextToken</tt> , if present.</li>
--   </ul>
metricDataResult :: MetricDataResult

-- | The data points for the metric corresponding to <tt>Timestamps</tt> .
--   The number of values always matches the number of time stamps and the
--   time stamp for Values[x] is Timestamps[x].
mdrValues :: Lens' MetricDataResult [Double]

-- | The short name you specified to represent this metric.
mdrId :: Lens' MetricDataResult (Maybe Text)

-- | The time stamps for the data points, formatted in Unix timestamp
--   format. The number of time stamps always matches the number of values
--   and the value for Timestamps[x] is Values[x].
mdrTimestamps :: Lens' MetricDataResult [UTCTime]

-- | A list of messages with additional information about the data
--   returned.
mdrMessages :: Lens' MetricDataResult [MessageData]

-- | The human-readable label associated with the data.
mdrLabel :: Lens' MetricDataResult (Maybe Text)

-- | The status of the returned data. <tt>Complete</tt> indicates that all
--   data points in the requested time range were returned.
--   <tt>PartialData</tt> means that an incomplete set of data points were
--   returned. You can use the <tt>NextToken</tt> value that was returned
--   and repeat your request to get more data points. <tt>NextToken</tt> is
--   not returned if you are performing a math expression.
--   <tt>InternalError</tt> indicates that an error occurred. Retry your
--   request using <tt>NextToken</tt> , if present.
mdrStatusCode :: Lens' MetricDataResult (Maybe StatusCode)

-- | 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, 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>mdStorageResolution</a> - Valid values are 1 and 60. Setting
--   this to 1 specifies this metric as a high-resolution metric, so that
--   CloudWatch stores the metric with sub-minute resolution down to one
--   second. Setting this to 60 specifies this metric as a
--   regular-resolution metric, which CloudWatch stores at 1-minute
--   resolution. Currently, high resolution is available only for custom
--   metrics. For more information about high-resolution metrics, see
--   <a>High-Resolution Metrics</a> in the <i>Amazon CloudWatch User
--   Guide</i> . This field is optional, if you do not specify it the
--   default of 60 is used.</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, 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)

-- | Valid values are 1 and 60. Setting this to 1 specifies this metric as
--   a high-resolution metric, so that CloudWatch stores the metric with
--   sub-minute resolution down to one second. Setting this to 60 specifies
--   this metric as a regular-resolution metric, which CloudWatch stores at
--   1-minute resolution. Currently, high resolution is available only for
--   custom metrics. For more information about high-resolution metrics,
--   see <a>High-Resolution Metrics</a> in the <i>Amazon CloudWatch User
--   Guide</i> . This field is optional, if you do not specify it the
--   default of 60 is used.
mdStorageResolution :: Lens' MetricDatum (Maybe Natural)

-- | 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

-- | This structure defines the metric to be returned, along with the
--   statistics, period, and units.
--   
--   <i>See:</i> <a>metricStat</a> smart constructor.
data MetricStat

-- | Creates a value of <a>MetricStat</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>msUnit</a> - The unit to use for the returned data points.</li>
--   <li><a>msMetric</a> - The metric to return, including the metric name,
--   namespace, and dimensions.</li>
--   <li><a>msPeriod</a> - The period to use when retrieving the
--   metric.</li>
--   <li><a>msStat</a> - The statistic to return. It can include any
--   CloudWatch statistic or extended statistic.</li>
--   </ul>
metricStat :: Metric -> Natural -> Text -> MetricStat

-- | The unit to use for the returned data points.
msUnit :: Lens' MetricStat (Maybe StandardUnit)

-- | The metric to return, including the metric name, namespace, and
--   dimensions.
msMetric :: Lens' MetricStat Metric

-- | The period to use when retrieving the metric.
msPeriod :: Lens' MetricStat Natural

-- | The statistic to return. It can include any CloudWatch statistic or
--   extended statistic.
msStat :: Lens' MetricStat 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


-- | 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 SNS
--   message. The alarm returns to its actual state (often within seconds).
--   Because the alarm state change happens 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 Control.DeepSeq.NFData Network.AWS.CloudWatch.SetAlarmState.SetAlarmStateResponse
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


-- | Publishes metric data points to Amazon CloudWatch. CloudWatch
--   associates the data points with the specified metric. If the specified
--   metric does not exist, CloudWatch creates the metric. When 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 40 KB in size for
--   HTTP POST requests.
--   
--   Although the <tt>Value</tt> parameter accepts numbers of type
--   <tt>Double</tt> , 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.
--   
--   You can use up to 10 dimensions per metric to further clarify what
--   data the metric collects. For more information about specifying
--   dimensions, see <a>Publishing Metrics</a> in the <i>Amazon CloudWatch
--   User Guide</i> .
--   
--   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.
--   
--   CloudWatch needs raw data points to calculate percentile statistics.
--   If you publish data using a statistic set instead, you can only
--   retrieve percentile statistics for this data if one of the following
--   conditions is true:
--   
--   <ul>
--   <li>The SampleCount value of the statistic set is 1</li>
--   <li>The Min and the Max values of the statistic set are equal</li>
--   </ul>
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 Control.DeepSeq.NFData Network.AWS.CloudWatch.PutMetricData.PutMetricDataResponse
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


-- | 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 IAM user, you must have Amazon EC2 permissions for some
--   operations:
--   
--   <ul>
--   <li><tt>iam:CreateServiceLinkedRole</tt> for all alarms with EC2
--   actions</li>
--   <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 are not performed. However, if you are later granted the
--   required permissions, the alarm actions that you created earlier are
--   performed.
--   
--   If you are using an IAM role (for example, an 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 AWS STS,
--   you cannot stop or terminate an EC2 instance using alarm actions.
--   
--   You must create at least one stop, terminate, or reboot alarm using
--   either the Amazon EC2 or CloudWatch consoles 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 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>pmaTreatMissingData</a> - Sets how this alarm is to handle
--   missing data points. If <tt>TreatMissingData</tt> is omitted, the
--   default behavior of <tt>missing</tt> is used. For more information,
--   see <a>Configuring How CloudWatch Alarms Treats Missing Data</a> .
--   Valid Values: <tt>breaching | notBreaching | ignore |
--   missing</tt></li>
--   <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 |
--   arn:aws:sns:<i>region</i> :<i>account-id</i> :<i>sns-topic-name</i> |
--   arn:aws:autoscaling:<i>region</i> :<i>account-id</i>
--   :scalingPolicy:<i>policy-id</i>
--   autoScalingGroupName/<i>group-friendly-name</i>
--   :policyName/<i>policy-friendly-name</i> Valid Values (for use with IAM
--   roles): arn:aws:swf:<i>region</i> :{<i>account-id</i>
--   }:action<i>actions</i>AWS_EC2.InstanceId.Stop<i>1.0 |
--   arn:aws:swf:</i>region<i> :{</i>account-id<i>
--   }:action</i>actions<i>AWS_EC2.InstanceId.Terminate</i>1.0 |
--   arn:aws:swf:<i>region</i> :{<i>account-id</i>
--   }:action<i>actions</i>AWS_EC2.InstanceId.Reboot/1.0</li>
--   <li><a>pmaEvaluateLowSampleCountPercentile</a> - Used only for alarms
--   based on percentiles. If you specify <tt>ignore</tt> , the alarm state
--   does not change during periods with too few data points to be
--   statistically significant. If you specify <tt>evaluate</tt> or omit
--   this parameter, the alarm is always evaluated and possibly changes
--   state no matter how many data points are available. For more
--   information, see <a>Percentile-Based CloudWatch Alarms and Low Data
--   Samples</a> . Valid Values: <tt>evaluate | ignore</tt></li>
--   <li><a>pmaDatapointsToAlarm</a> - The number of datapoints that must
--   be breaching to trigger the alarm. This is used only if you are
--   setting an "M out of N" alarm. In that case, this value is the M. For
--   more information, see <a>Evaluating an Alarm</a> in the <i>Amazon
--   CloudWatch User Guide</i> .</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 |
--   arn:aws:sns:<i>region</i> :<i>account-id</i> :<i>sns-topic-name</i> |
--   arn:aws:autoscaling:<i>region</i> :<i>account-id</i>
--   :scalingPolicy:<i>policy-id</i>
--   autoScalingGroupName/<i>group-friendly-name</i>
--   :policyName/<i>policy-friendly-name</i> Valid Values (for use with IAM
--   roles): arn:aws:swf:<i>region</i> :{<i>account-id</i>
--   }:action<i>actions</i>AWS_EC2.InstanceId.Stop<i>1.0 |
--   arn:aws:swf:</i>region<i> :{</i>account-id<i>
--   }:action</i>actions<i>AWS_EC2.InstanceId.Terminate</i>1.0 |
--   arn:aws:swf:<i>region</i> :{<i>account-id</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 |
--   arn:aws:sns:<i>region</i> :<i>account-id</i> :<i>sns-topic-name</i> |
--   arn:aws:autoscaling:<i>region</i> :<i>account-id</i>
--   :scalingPolicy:<i>policy-id</i>
--   autoScalingGroupName/<i>group-friendly-name</i>
--   :policyName/<i>policy-friendly-name</i> Valid Values (for use with IAM
--   roles): arn:aws:swf:<i>region</i> :{<i>account-id</i>
--   }:action<i>actions</i>AWS_EC2.InstanceId.Stop<i>1.0 |
--   arn:aws:swf:</i>region<i> :{</i>account-id<i>
--   }:action</i>actions<i>AWS_EC2.InstanceId.Terminate</i>1.0 |
--   arn:aws:swf:<i>region</i> :{<i>account-id</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 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> . When you call <tt>PutMetricAlarm</tt> ,
--   you must specify either <tt>Statistic</tt> or
--   <tt>ExtendedStatistic,</tt> but not both.</li>
--   <li><a>pmaExtendedStatistic</a> - The percentile statistic for the
--   metric associated with the alarm. Specify a value between p0.0 and
--   p100. When you call <tt>PutMetricAlarm</tt> , you must specify either
--   <tt>Statistic</tt> or <tt>ExtendedStatistic,</tt> but not both.</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. Valid values are 10, 30, and any
--   multiple of 60. Be sure to specify 10 or 30 only for metrics that are
--   stored by a <tt>PutMetricData</tt> call with a
--   <tt>StorageResolution</tt> of 1. If you specify a period of 10 or 30
--   for a metric that does not have sub-minute resolution, the alarm still
--   attempts to gather data at the period rate that you specify. In this
--   case, it does not receive data for the attempts that do not correspond
--   to a one-minute data resolution, and the alarm may often lapse into
--   INSUFFICENT_DATA status. Specifying 10 or 30 also sets this alarm as a
--   high-resolution alarm, which has a higher charge than other alarms.
--   For more information about pricing, see <a>Amazon CloudWatch
--   Pricing</a> . An alarm's total current evaluation period can be no
--   longer than one day, so <tt>Period</tt> multiplied by
--   <tt>EvaluationPeriods</tt> cannot be more than 86,400 seconds.</li>
--   <li><a>pmaEvaluationPeriods</a> - The number of periods over which
--   data is compared to the specified threshold. If you are setting an
--   alarm which requires that a number of consecutive data points be
--   breaching to trigger the alarm, this value specifies that number. If
--   you are setting an "M out of N" alarm, this value is the N. An alarm's
--   total current evaluation period can be no longer than one day, so this
--   number multiplied by <tt>Period</tt> cannot be more than 86,400
--   seconds.</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

-- | Sets how this alarm is to handle missing data points. If
--   <tt>TreatMissingData</tt> is omitted, the default behavior of
--   <tt>missing</tt> is used. For more information, see <a>Configuring How
--   CloudWatch Alarms Treats Missing Data</a> . Valid Values:
--   <tt>breaching | notBreaching | ignore | missing</tt>
pmaTreatMissingData :: Lens' PutMetricAlarm (Maybe Text)

-- | 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 |
--   arn:aws:sns:<i>region</i> :<i>account-id</i> :<i>sns-topic-name</i> |
--   arn:aws:autoscaling:<i>region</i> :<i>account-id</i>
--   :scalingPolicy:<i>policy-id</i>
--   autoScalingGroupName/<i>group-friendly-name</i>
--   :policyName/<i>policy-friendly-name</i> Valid Values (for use with IAM
--   roles): arn:aws:swf:<i>region</i> :{<i>account-id</i>
--   }:action<i>actions</i>AWS_EC2.InstanceId.Stop<i>1.0 |
--   arn:aws:swf:</i>region<i> :{</i>account-id<i>
--   }:action</i>actions<i>AWS_EC2.InstanceId.Terminate</i>1.0 |
--   arn:aws:swf:<i>region</i> :{<i>account-id</i>
--   }:action<i>actions</i>AWS_EC2.InstanceId.Reboot/1.0
pmaOKActions :: Lens' PutMetricAlarm [Text]

-- | Used only for alarms based on percentiles. If you specify
--   <tt>ignore</tt> , the alarm state does not change during periods with
--   too few data points to be statistically significant. If you specify
--   <tt>evaluate</tt> or omit this parameter, the alarm is always
--   evaluated and possibly changes state no matter how many data points
--   are available. For more information, see <a>Percentile-Based
--   CloudWatch Alarms and Low Data Samples</a> . Valid Values:
--   <tt>evaluate | ignore</tt>
pmaEvaluateLowSampleCountPercentile :: Lens' PutMetricAlarm (Maybe Text)

-- | The number of datapoints that must be breaching to trigger the alarm.
--   This is used only if you are setting an "M out of N" alarm. In that
--   case, this value is the M. For more information, see <a>Evaluating an
--   Alarm</a> in the <i>Amazon CloudWatch User Guide</i> .
pmaDatapointsToAlarm :: Lens' PutMetricAlarm (Maybe Natural)

-- | 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 |
--   arn:aws:sns:<i>region</i> :<i>account-id</i> :<i>sns-topic-name</i> |
--   arn:aws:autoscaling:<i>region</i> :<i>account-id</i>
--   :scalingPolicy:<i>policy-id</i>
--   autoScalingGroupName/<i>group-friendly-name</i>
--   :policyName/<i>policy-friendly-name</i> Valid Values (for use with IAM
--   roles): arn:aws:swf:<i>region</i> :{<i>account-id</i>
--   }:action<i>actions</i>AWS_EC2.InstanceId.Stop<i>1.0 |
--   arn:aws:swf:</i>region<i> :{</i>account-id<i>
--   }:action</i>actions<i>AWS_EC2.InstanceId.Terminate</i>1.0 |
--   arn:aws:swf:<i>region</i> :{<i>account-id</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 |
--   arn:aws:sns:<i>region</i> :<i>account-id</i> :<i>sns-topic-name</i> |
--   arn:aws:autoscaling:<i>region</i> :<i>account-id</i>
--   :scalingPolicy:<i>policy-id</i>
--   autoScalingGroupName/<i>group-friendly-name</i>
--   :policyName/<i>policy-friendly-name</i> Valid Values (for use with IAM
--   roles): arn:aws:swf:<i>region</i> :{<i>account-id</i>
--   }:action<i>actions</i>AWS_EC2.InstanceId.Stop<i>1.0 |
--   arn:aws:swf:</i>region<i> :{</i>account-id<i>
--   }:action</i>actions<i>AWS_EC2.InstanceId.Terminate</i>1.0 |
--   arn:aws:swf:<i>region</i> :{<i>account-id</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 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>
--   . When you call <tt>PutMetricAlarm</tt> , you must specify either
--   <tt>Statistic</tt> or <tt>ExtendedStatistic,</tt> but not both.
pmaStatistic :: Lens' PutMetricAlarm (Maybe Statistic)

-- | The percentile statistic for the metric associated with the alarm.
--   Specify a value between p0.0 and p100. When you call
--   <tt>PutMetricAlarm</tt> , you must specify either <tt>Statistic</tt>
--   or <tt>ExtendedStatistic,</tt> but not both.
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.
--   Valid values are 10, 30, and any multiple of 60. Be sure to specify 10
--   or 30 only for metrics that are stored by a <tt>PutMetricData</tt>
--   call with a <tt>StorageResolution</tt> of 1. If you specify a period
--   of 10 or 30 for a metric that does not have sub-minute resolution, the
--   alarm still attempts to gather data at the period rate that you
--   specify. In this case, it does not receive data for the attempts that
--   do not correspond to a one-minute data resolution, and the alarm may
--   often lapse into INSUFFICENT_DATA status. Specifying 10 or 30 also
--   sets this alarm as a high-resolution alarm, which has a higher charge
--   than other alarms. For more information about pricing, see <a>Amazon
--   CloudWatch Pricing</a> . An alarm's total current evaluation period
--   can be no longer than one day, so <tt>Period</tt> multiplied by
--   <tt>EvaluationPeriods</tt> cannot be more than 86,400 seconds.
pmaPeriod :: Lens' PutMetricAlarm Natural

-- | The number of periods over which data is compared to the specified
--   threshold. If you are setting an alarm which requires that a number of
--   consecutive data points be breaching to trigger the alarm, this value
--   specifies that number. If you are setting an "M out of N" alarm, this
--   value is the N. An alarm's total current evaluation period can be no
--   longer than one day, so this number multiplied by <tt>Period</tt>
--   cannot be more than 86,400 seconds.
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 Control.DeepSeq.NFData Network.AWS.CloudWatch.PutMetricAlarm.PutMetricAlarmResponse
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


-- | Creates a dashboard if it does not already exist, or updates an
--   existing dashboard. If you update a dashboard, the entire contents are
--   replaced with what you specify here.
--   
--   You can have up to 500 dashboards per account. All dashboards in your
--   account are global, not region-specific.
--   
--   A simple way to create a dashboard using <tt>PutDashboard</tt> is to
--   copy an existing dashboard. To copy an existing dashboard using the
--   console, you can load the dashboard and then use the View/edit source
--   command in the Actions menu to display the JSON block for that
--   dashboard. Another way to copy a dashboard is to use
--   <tt>GetDashboard</tt> , and then use the data returned within
--   <tt>DashboardBody</tt> as the template for the new dashboard when you
--   call <tt>PutDashboard</tt> .
--   
--   When you create a dashboard with <tt>PutDashboard</tt> , a good
--   practice is to add a text widget at the top of the dashboard with a
--   message that the dashboard was created by script and should not be
--   changed in the console. This message could also point console users to
--   the location of the <tt>DashboardBody</tt> script or the
--   CloudFormation template used to create the dashboard.
module Network.AWS.CloudWatch.PutDashboard

-- | Creates a value of <a>PutDashboard</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>pdDashboardName</a> - The name of the dashboard. If a dashboard
--   with this name already exists, this call modifies that dashboard,
--   replacing its current contents. Otherwise, a new dashboard is created.
--   The maximum length is 255, and valid characters are A-Z, a-z, 0-9,
--   "-", and "_". This parameter is required.</li>
--   <li><a>pdDashboardBody</a> - The detailed information about the
--   dashboard in JSON format, including the widgets to include and their
--   location on the dashboard. This parameter is required. For more
--   information about the syntax, see
--   'CloudWatch-Dashboard-Body-Structure' .</li>
--   </ul>
putDashboard :: Text -> Text -> PutDashboard

-- | <i>See:</i> <a>putDashboard</a> smart constructor.
data PutDashboard

-- | The name of the dashboard. If a dashboard with this name already
--   exists, this call modifies that dashboard, replacing its current
--   contents. Otherwise, a new dashboard is created. The maximum length is
--   255, and valid characters are A-Z, a-z, 0-9, "-", and "_". This
--   parameter is required.
pdDashboardName :: Lens' PutDashboard Text

-- | The detailed information about the dashboard in JSON format, including
--   the widgets to include and their location on the dashboard. This
--   parameter is required. For more information about the syntax, see
--   'CloudWatch-Dashboard-Body-Structure' .
pdDashboardBody :: Lens' PutDashboard Text

-- | Creates a value of <a>PutDashboardResponse</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>pdrsDashboardValidationMessages</a> - If the input for
--   <tt>PutDashboard</tt> was correct and the dashboard was successfully
--   created or modified, this result is empty. If this result includes
--   only warning messages, then the input was valid enough for the
--   dashboard to be created or modified, but some elements of the
--   dashboard may not render. If this result includes error messages, the
--   input was not valid and the operation failed.</li>
--   <li><a>pdrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
putDashboardResponse :: Int -> PutDashboardResponse

-- | <i>See:</i> <a>putDashboardResponse</a> smart constructor.
data PutDashboardResponse

-- | If the input for <tt>PutDashboard</tt> was correct and the dashboard
--   was successfully created or modified, this result is empty. If this
--   result includes only warning messages, then the input was valid enough
--   for the dashboard to be created or modified, but some elements of the
--   dashboard may not render. If this result includes error messages, the
--   input was not valid and the operation failed.
pdrsDashboardValidationMessages :: Lens' PutDashboardResponse [DashboardValidationMessage]

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


-- | 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.Types.AWSRequest Network.AWS.CloudWatch.ListMetrics.ListMetrics
instance Control.DeepSeq.NFData Network.AWS.CloudWatch.ListMetrics.ListMetricsResponse
instance Network.AWS.Pager.AWSPager 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


-- | Returns a list of the dashboards for your account. If you include
--   <tt>DashboardNamePrefix</tt> , only those dashboards with names
--   starting with the prefix are listed. Otherwise, all dashboards in your
--   account are listed.
--   
--   This operation returns paginated results.
module Network.AWS.CloudWatch.ListDashboards

-- | Creates a value of <a>ListDashboards</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>ldDashboardNamePrefix</a> - If you specify this parameter, only
--   the dashboards with names starting with the specified string are
--   listed. The maximum length is 255, and valid characters are A-Z, a-z,
--   0-9, ".", "-", and "_".</li>
--   <li><a>ldNextToken</a> - The token returned by a previous call to
--   indicate that there is more data available.</li>
--   </ul>
listDashboards :: ListDashboards

-- | <i>See:</i> <a>listDashboards</a> smart constructor.
data ListDashboards

-- | If you specify this parameter, only the dashboards with names starting
--   with the specified string are listed. The maximum length is 255, and
--   valid characters are A-Z, a-z, 0-9, ".", "-", and "_".
ldDashboardNamePrefix :: Lens' ListDashboards (Maybe Text)

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

-- | Creates a value of <a>ListDashboardsResponse</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>ldrsDashboardEntries</a> - The list of matching
--   dashboards.</li>
--   <li><a>ldrsNextToken</a> - The token that marks the start of the next
--   batch of returned results.</li>
--   <li><a>ldrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
listDashboardsResponse :: Int -> ListDashboardsResponse

-- | <i>See:</i> <a>listDashboardsResponse</a> smart constructor.
data ListDashboardsResponse

-- | The list of matching dashboards.
ldrsDashboardEntries :: Lens' ListDashboardsResponse [DashboardEntry]

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

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


-- | Gets statistics for the specified metric.
--   
--   The maximum number of data points returned from a single call is
--   1,440. If you request more than 1,440 data points, 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. Data points are not
--   returned in chronological order.
--   
--   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, 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.
--   
--   CloudWatch needs raw data points to calculate percentile statistics.
--   If you publish data using a statistic set instead, you can only
--   retrieve percentile statistics for this data if one of the following
--   conditions is true:
--   
--   <ul>
--   <li>The SampleCount value of the statistic set is 1.</li>
--   <li>The Min and the Max values of the statistic set are equal.</li>
--   </ul>
--   
--   Amazon CloudWatch retains metric data as follows:
--   
--   <ul>
--   <li>Data points with a period of less than 60 seconds are available
--   for 3 hours. These data points are high-resolution metrics and are
--   available only for custom metrics that have been defined with a
--   <tt>StorageResolution</tt> of 1.</li>
--   <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>
--   
--   Data points that are initially published with a shorter period are
--   aggregated together for long-term storage. For example, if you collect
--   data using a period of 1 minute, the data remains available for 15
--   days with 1-minute resolution. After 15 days, this data is still
--   available, but is aggregated and retrievable only with a resolution of
--   5 minutes. After 63 days, the data is further aggregated and is
--   available with a resolution of 1 hour.
--   
--   CloudWatch started retaining 5-minute and 1-hour metric data as of
--   July 9, 2016.
--   
--   For information about 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. When calling
--   <tt>GetMetricStatistics</tt> , you must specify either
--   <tt>Statistics</tt> or <tt>ExtendedStatistics</tt> , but not
--   both.</li>
--   <li><a>gmsStatistics</a> - The metric statistics, other than
--   percentile. For percentile statistics, use <tt>ExtendedStatistics</tt>
--   . When calling <tt>GetMetricStatistics</tt> , you must specify either
--   <tt>Statistics</tt> or <tt>ExtendedStatistics</tt> , but not
--   both.</li>
--   <li><a>gmsDimensions</a> - The dimensions. If the metric contains
--   multiple dimensions, you must include a value for each dimension.
--   CloudWatch treats each unique combination of dimensions as a separate
--   metric. If a specific combination of dimensions was not published, you
--   can't retrieve statistics for it. 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> . For more information about specifying dimensions, see
--   <a>Publishing Metrics</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 you specify only a unit that the metric does not
--   report, the results of the call are null.</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. 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. If you set <tt>Period</tt> to 5, 10, or 30, the start
--   time of your request is rounded down to the nearest time that
--   corresponds to even 5-, 10-, or 30-second divisions of a minute. For
--   example, if you make a query at (HH:mm:ss) 01:05:23 for the previous
--   10-second period, the start time of your request is rounded down and
--   you receive data from 01:05:10 to 01:05:20. If you make a query at
--   15:07:17 for the previous 5 minutes of data, using a period of 5
--   seconds, you receive data timestamped between 15:02:15 and
--   15:07:15.</li>
--   <li><a>gmsEndTime</a> - The time stamp that determines the last data
--   point to return. The value specified is exclusive; results 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. For metrics with regular resolution, a period can be as
--   short as one minute (60 seconds) and must be a multiple of 60. For
--   high-resolution metrics that are collected at intervals of less than
--   one minute, the period can be 1, 5, 10, 30, 60, or any multiple of 60.
--   High-resolution metrics are those metrics stored by a
--   <tt>PutMetricData</tt> call that includes a <tt>StorageResolution</tt>
--   of 1 second. If the <tt>StartTime</tt> parameter specifies a time
--   stamp that is greater than 3 hours ago, you must specify the period as
--   follows or no data points in that time range is returned: * Start time
--   between 3 hours and 15 days ago - Use a multiple of 60 seconds (1
--   minute). * 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. When
--   calling <tt>GetMetricStatistics</tt> , you must specify either
--   <tt>Statistics</tt> or <tt>ExtendedStatistics</tt> , but not both.
gmsExtendedStatistics :: Lens' GetMetricStatistics (Maybe (NonEmpty Text))

-- | The metric statistics, other than percentile. For percentile
--   statistics, use <tt>ExtendedStatistics</tt> . When calling
--   <tt>GetMetricStatistics</tt> , you must specify either
--   <tt>Statistics</tt> or <tt>ExtendedStatistics</tt> , but not both.
gmsStatistics :: Lens' GetMetricStatistics (Maybe (NonEmpty Statistic))

-- | The dimensions. If the metric contains multiple dimensions, you must
--   include a value for each dimension. CloudWatch treats each unique
--   combination of dimensions as a separate metric. If a specific
--   combination of dimensions was not published, you can't retrieve
--   statistics for it. 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> . For more
--   information about specifying dimensions, see <a>Publishing Metrics</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
--   you specify only a unit that the metric does not report, the results
--   of the call are null.
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. 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. If you set
--   <tt>Period</tt> to 5, 10, or 30, the start time of your request is
--   rounded down to the nearest time that corresponds to even 5-, 10-, or
--   30-second divisions of a minute. For example, if you make a query at
--   (HH:mm:ss) 01:05:23 for the previous 10-second period, the start time
--   of your request is rounded down and you receive data from 01:05:10 to
--   01:05:20. If you make a query at 15:07:17 for the previous 5 minutes
--   of data, using a period of 5 seconds, you receive data timestamped
--   between 15:02:15 and 15:07:15.
gmsStartTime :: Lens' GetMetricStatistics UTCTime

-- | The time stamp that determines the last data point to return. The
--   value specified is exclusive; results 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. For metrics
--   with regular resolution, a period can be as short as one minute (60
--   seconds) and must be a multiple of 60. For high-resolution metrics
--   that are collected at intervals of less than one minute, the period
--   can be 1, 5, 10, 30, 60, or any multiple of 60. High-resolution
--   metrics are those metrics stored by a <tt>PutMetricData</tt> call that
--   includes a <tt>StorageResolution</tt> of 1 second. If the
--   <tt>StartTime</tt> parameter specifies a time stamp that is greater
--   than 3 hours ago, you must specify the period as follows or no data
--   points in that time range is returned: * Start time between 3 hours
--   and 15 days ago - Use a multiple of 60 seconds (1 minute). * 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 Control.DeepSeq.NFData Network.AWS.CloudWatch.GetMetricStatistics.GetMetricStatisticsResponse
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


-- | You can use the <tt>GetMetricData</tt> API to retrieve as many as 100
--   different metrics in a single request, with a total of as many as
--   100,800 datapoints. You can also optionally perform math expressions
--   on the values of the returned statistics, to create new time series
--   that represent new insights into your data. For example, using Lambda
--   metrics, you could divide the Errors metric by the Invocations metric
--   to get an error rate time series. For more information about metric
--   math expressions, see <a>Metric Math Syntax and Functions</a> in the
--   <i>Amazon CloudWatch User Guide</i> .
--   
--   Calls to the <tt>GetMetricData</tt> API have a different pricing
--   structure than calls to <tt>GetMetricStatistics</tt> . For more
--   information about pricing, see <a>Amazon CloudWatch Pricing</a> .
module Network.AWS.CloudWatch.GetMetricData

-- | Creates a value of <a>GetMetricData</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>gmdMaxDatapoints</a> - The maximum number of data points the
--   request should return before paginating. If you omit this, the default
--   of 100,800 is used.</li>
--   <li><a>gmdNextToken</a> - Include this value, if it was returned by
--   the previous call, to get the next set of data points.</li>
--   <li><a>gmdScanBy</a> - The order in which data points should be
--   returned. <tt>TimestampDescending</tt> returns the newest data first
--   and paginates when the <tt>MaxDatapoints</tt> limit is reached.
--   <tt>TimestampAscending</tt> returns the oldest data first and
--   paginates when the <tt>MaxDatapoints</tt> limit is reached.</li>
--   <li><a>gmdMetricDataQueries</a> - The metric queries to be returned. A
--   single <tt>GetMetricData</tt> call can include as many as 100
--   <tt>MetricDataQuery</tt> structures. Each of these structures can
--   specify either a metric to retrieve, or a math expression to perform
--   on retrieved data.</li>
--   <li><a>gmdStartTime</a> - The time stamp indicating the earliest data
--   to be returned.</li>
--   <li><a>gmdEndTime</a> - The time stamp indicating the latest data to
--   be returned.</li>
--   </ul>
getMetricData :: UTCTime -> UTCTime -> GetMetricData

-- | <i>See:</i> <a>getMetricData</a> smart constructor.
data GetMetricData

-- | The maximum number of data points the request should return before
--   paginating. If you omit this, the default of 100,800 is used.
gmdMaxDatapoints :: Lens' GetMetricData (Maybe Int)

-- | Include this value, if it was returned by the previous call, to get
--   the next set of data points.
gmdNextToken :: Lens' GetMetricData (Maybe Text)

-- | The order in which data points should be returned.
--   <tt>TimestampDescending</tt> returns the newest data first and
--   paginates when the <tt>MaxDatapoints</tt> limit is reached.
--   <tt>TimestampAscending</tt> returns the oldest data first and
--   paginates when the <tt>MaxDatapoints</tt> limit is reached.
gmdScanBy :: Lens' GetMetricData (Maybe ScanBy)

-- | The metric queries to be returned. A single <tt>GetMetricData</tt>
--   call can include as many as 100 <tt>MetricDataQuery</tt> structures.
--   Each of these structures can specify either a metric to retrieve, or a
--   math expression to perform on retrieved data.
gmdMetricDataQueries :: Lens' GetMetricData [MetricDataQuery]

-- | The time stamp indicating the earliest data to be returned.
gmdStartTime :: Lens' GetMetricData UTCTime

-- | The time stamp indicating the latest data to be returned.
gmdEndTime :: Lens' GetMetricData UTCTime

-- | Creates a value of <a>GetMetricDataResponse</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>gmdrsMetricDataResults</a> - The metrics that are returned,
--   including the metric name, namespace, and dimensions.</li>
--   <li><a>gmdrsNextToken</a> - A token that marks the next batch of
--   returned results.</li>
--   <li><a>gmdrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
getMetricDataResponse :: Int -> GetMetricDataResponse

-- | <i>See:</i> <a>getMetricDataResponse</a> smart constructor.
data GetMetricDataResponse

-- | The metrics that are returned, including the metric name, namespace,
--   and dimensions.
gmdrsMetricDataResults :: Lens' GetMetricDataResponse [MetricDataResult]

-- | A token that marks the next batch of returned results.
gmdrsNextToken :: Lens' GetMetricDataResponse (Maybe Text)

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


-- | Displays the details of the dashboard that you specify.
--   
--   To copy an existing dashboard, use <tt>GetDashboard</tt> , and then
--   use the data returned within <tt>DashboardBody</tt> as the template
--   for the new dashboard when you call <tt>PutDashboard</tt> to create
--   the copy.
module Network.AWS.CloudWatch.GetDashboard

-- | Creates a value of <a>GetDashboard</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>gdDashboardName</a> - The name of the dashboard to be
--   described.</li>
--   </ul>
getDashboard :: Text -> GetDashboard

-- | <i>See:</i> <a>getDashboard</a> smart constructor.
data GetDashboard

-- | The name of the dashboard to be described.
gdDashboardName :: Lens' GetDashboard Text

-- | Creates a value of <a>GetDashboardResponse</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>gdrsDashboardName</a> - The name of the dashboard.</li>
--   <li><a>gdrsDashboardBody</a> - The detailed information about the
--   dashboard, including what widgets are included and their location on
--   the dashboard. For more information about the <tt>DashboardBody</tt>
--   syntax, see 'CloudWatch-Dashboard-Body-Structure' .</li>
--   <li><a>gdrsDashboardARN</a> - The Amazon Resource Name (ARN) of the
--   dashboard.</li>
--   <li><a>gdrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
getDashboardResponse :: Int -> GetDashboardResponse

-- | <i>See:</i> <a>getDashboardResponse</a> smart constructor.
data GetDashboardResponse

-- | The name of the dashboard.
gdrsDashboardName :: Lens' GetDashboardResponse (Maybe Text)

-- | The detailed information about the dashboard, including what widgets
--   are included and their location on the dashboard. For more information
--   about the <tt>DashboardBody</tt> syntax, see
--   'CloudWatch-Dashboard-Body-Structure' .
gdrsDashboardBody :: Lens' GetDashboardResponse (Maybe Text)

-- | The Amazon Resource Name (ARN) of the dashboard.
gdrsDashboardARN :: Lens' GetDashboardResponse (Maybe Text)

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


-- | 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 Control.DeepSeq.NFData Network.AWS.CloudWatch.EnableAlarmActions.EnableAlarmActionsResponse
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


-- | 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 Control.DeepSeq.NFData Network.AWS.CloudWatch.DisableAlarmActions.DisableAlarmActionsResponse
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


-- | Retrieves the alarms for the specified metric. To filter the results,
--   specify a statistic, period, or unit.
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 Control.DeepSeq.NFData Network.AWS.CloudWatch.DescribeAlarmsForMetric.DescribeAlarmsForMetricResponse
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


-- | 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. If this
--   parameter is specified, you cannot specify <tt>AlarmNames</tt> .</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. If this parameter is specified, you cannot
--   specify <tt>AlarmNames</tt> .
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.Types.AWSRequest Network.AWS.CloudWatch.DescribeAlarms.DescribeAlarms
instance Control.DeepSeq.NFData Network.AWS.CloudWatch.DescribeAlarms.DescribeAlarmsResponse
instance Network.AWS.Pager.AWSPager 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


-- | 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.
--   
--   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.Types.AWSRequest Network.AWS.CloudWatch.DescribeAlarmHistory.DescribeAlarmHistory
instance Control.DeepSeq.NFData Network.AWS.CloudWatch.DescribeAlarmHistory.DescribeAlarmHistoryResponse
instance Network.AWS.Pager.AWSPager 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


-- | Deletes all dashboards that you specify. You may specify up to 100
--   dashboards to delete. If there is an error during this call, no
--   dashboards are deleted.
module Network.AWS.CloudWatch.DeleteDashboards

-- | Creates a value of <a>DeleteDashboards</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>ddDashboardNames</a> - The dashboards to be deleted. This
--   parameter is required.</li>
--   </ul>
deleteDashboards :: DeleteDashboards

-- | <i>See:</i> <a>deleteDashboards</a> smart constructor.
data DeleteDashboards

-- | The dashboards to be deleted. This parameter is required.
ddDashboardNames :: Lens' DeleteDashboards [Text]

-- | Creates a value of <a>DeleteDashboardsResponse</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>ddrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
deleteDashboardsResponse :: Int -> DeleteDashboardsResponse

-- | <i>See:</i> <a>deleteDashboardsResponse</a> smart constructor.
data DeleteDashboardsResponse

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


-- | 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 Control.DeepSeq.NFData Network.AWS.CloudWatch.DeleteAlarms.DeleteAlarmsResponse
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


module Network.AWS.CloudWatch.Waiters

-- | Polls <a>DescribeAlarms</a> every 5 seconds until a successful state
--   is reached. An error is returned after 40 failed checks.
alarmExists :: Wait DescribeAlarms


-- | 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 change 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 EC2 instances. 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 specified dashboard does not exist.
_DashboardNotFoundError :: 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

-- | Some part of the dashboard data is invalid.
_DashboardInvalidInputError :: 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 were used together that cannot be used together.
_InvalidParameterCombinationException :: AsError a => Getting (First ServiceError) a ServiceError

-- | The named resource does not exist.
_ResourceNotFound :: AsError a => Getting (First ServiceError) a ServiceError

-- | Polls <a>DescribeAlarms</a> every 5 seconds until a successful state
--   is reached. An error is returned after 40 failed checks.
alarmExists :: Wait DescribeAlarms
data ComparisonOperator
GreaterThanOrEqualToThreshold :: ComparisonOperator
GreaterThanThreshold :: ComparisonOperator
LessThanOrEqualToThreshold :: ComparisonOperator
LessThanThreshold :: ComparisonOperator
data HistoryItemType
Action :: HistoryItemType
ConfigurationUpdate :: HistoryItemType
StateUpdate :: HistoryItemType
data ScanBy
TimestampAscending :: ScanBy
TimestampDescending :: ScanBy
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
data StatusCode
Complete :: StatusCode
InternalError :: StatusCode
PartialData :: StatusCode

-- | 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)

-- | Represents a specific dashboard.
--   
--   <i>See:</i> <a>dashboardEntry</a> smart constructor.
data DashboardEntry

-- | Creates a value of <a>DashboardEntry</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>deSize</a> - The size of the dashboard, in bytes.</li>
--   <li><a>deDashboardName</a> - The name of the dashboard.</li>
--   <li><a>deLastModified</a> - The time stamp of when the dashboard was
--   last modified, either by an API call or through the console. This
--   number is expressed as the number of milliseconds since Jan 1, 1970
--   00:00:00 UTC.</li>
--   <li><a>deDashboardARN</a> - The Amazon Resource Name (ARN) of the
--   dashboard.</li>
--   </ul>
dashboardEntry :: DashboardEntry

-- | The size of the dashboard, in bytes.
deSize :: Lens' DashboardEntry (Maybe Integer)

-- | The name of the dashboard.
deDashboardName :: Lens' DashboardEntry (Maybe Text)

-- | The time stamp of when the dashboard was last modified, either by an
--   API call or through the console. This number is expressed as the
--   number of milliseconds since Jan 1, 1970 00:00:00 UTC.
deLastModified :: Lens' DashboardEntry (Maybe UTCTime)

-- | The Amazon Resource Name (ARN) of the dashboard.
deDashboardARN :: Lens' DashboardEntry (Maybe Text)

-- | An error or warning for the operation.
--   
--   <i>See:</i> <a>dashboardValidationMessage</a> smart constructor.
data DashboardValidationMessage

-- | Creates a value of <a>DashboardValidationMessage</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>dvmDataPath</a> - The data path related to the message.</li>
--   <li><a>dvmMessage</a> - A message describing the error or
--   warning.</li>
--   </ul>
dashboardValidationMessage :: DashboardValidationMessage

-- | The data path related to the message.
dvmDataPath :: Lens' DashboardValidationMessage (Maybe Text)

-- | A message describing the error or warning.
dvmMessage :: Lens' DashboardValidationMessage (Maybe Text)

-- | Encapsulates the statistical data that 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

-- | A message returned by the <tt>GetMetricData</tt> API, including a code
--   and a description.
--   
--   <i>See:</i> <a>messageData</a> smart constructor.
data MessageData

-- | Creates a value of <a>MessageData</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>mValue</a> - The message text.</li>
--   <li><a>mCode</a> - The error code or status code associated with the
--   message.</li>
--   </ul>
messageData :: MessageData

-- | The message text.
mValue :: Lens' MessageData (Maybe Text)

-- | The error code or status code associated with the message.
mCode :: Lens' MessageData (Maybe 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>maTreatMissingData</a> - Sets how this alarm is to handle
--   missing data points. If this parameter is omitted, the default
--   behavior of <tt>missing</tt> is used.</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>maEvaluateLowSampleCountPercentile</a> - Used only for alarms
--   based on percentiles. If <tt>ignore</tt> , the alarm state does not
--   change during periods with too few data points to be statistically
--   significant. If <tt>evaluate</tt> or this parameter is not used, the
--   alarm is always evaluated and possibly changes state no matter how
--   many data points are available.</li>
--   <li><a>maStateValue</a> - The state value for the alarm.</li>
--   <li><a>maDatapointsToAlarm</a> - The number of datapoints that must be
--   breaching to trigger 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)

-- | Sets how this alarm is to handle missing data points. If this
--   parameter is omitted, the default behavior of <tt>missing</tt> is
--   used.
maTreatMissingData :: Lens' MetricAlarm (Maybe Text)

-- | 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]

-- | Used only for alarms based on percentiles. If <tt>ignore</tt> , the
--   alarm state does not change during periods with too few data points to
--   be statistically significant. If <tt>evaluate</tt> or this parameter
--   is not used, the alarm is always evaluated and possibly changes state
--   no matter how many data points are available.
maEvaluateLowSampleCountPercentile :: Lens' MetricAlarm (Maybe Text)

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

-- | The number of datapoints that must be breaching to trigger the alarm.
maDatapointsToAlarm :: Lens' MetricAlarm (Maybe Natural)

-- | 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)

-- | This structure indicates the metric data to return, and whether this
--   call is just retrieving a batch set of data for one metric, or is
--   performing a math expression on metric data. A single
--   <tt>GetMetricData</tt> call can include up to 100
--   <tt>MetricDataQuery</tt> structures.
--   
--   <i>See:</i> <a>metricDataQuery</a> smart constructor.
data MetricDataQuery

-- | Creates a value of <a>MetricDataQuery</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>mdqReturnData</a> - Indicates whether to return the time stamps
--   and raw data values of this metric. If you are performing this call
--   just to do math expressions and do not also need the raw data
--   returned, you can specify <tt>False</tt> . If you omit this, the
--   default of <tt>True</tt> is used.</li>
--   <li><a>mdqExpression</a> - The math expression to be performed on the
--   returned data, if this structure is performing a math expression. For
--   more information about metric math expressions, see <a>Metric Math
--   Syntax and Functions</a> in the <i>Amazon CloudWatch User Guide</i> .
--   Within one MetricDataQuery structure, you must specify either
--   <tt>Expression</tt> or <tt>MetricStat</tt> but not both.</li>
--   <li><a>mdqLabel</a> - A human-readable label for this metric or
--   expression. This is especially useful if this is an expression, so
--   that you know what the value represents. If the metric or expression
--   is shown in a CloudWatch dashboard widget, the label is shown. If
--   Label is omitted, CloudWatch generates a default.</li>
--   <li><a>mdqMetricStat</a> - The metric to be returned, along with
--   statistics, period, and units. Use this parameter only if this
--   structure is performing a data retrieval and not performing a math
--   expression on the returned data. Within one MetricDataQuery structure,
--   you must specify either <tt>Expression</tt> or <tt>MetricStat</tt> but
--   not both.</li>
--   <li><a>mdqId</a> - A short name used to tie this structure to the
--   results in the response. This name must be unique within a single call
--   to <tt>GetMetricData</tt> . If you are performing math expressions on
--   this set of data, this name represents that data and can serve as a
--   variable in the mathematical expression. The valid characters are
--   letters, numbers, and underscore. The first character must be a
--   lowercase letter.</li>
--   </ul>
metricDataQuery :: Text -> MetricDataQuery

-- | Indicates whether to return the time stamps and raw data values of
--   this metric. If you are performing this call just to do math
--   expressions and do not also need the raw data returned, you can
--   specify <tt>False</tt> . If you omit this, the default of
--   <tt>True</tt> is used.
mdqReturnData :: Lens' MetricDataQuery (Maybe Bool)

-- | The math expression to be performed on the returned data, if this
--   structure is performing a math expression. For more information about
--   metric math expressions, see <a>Metric Math Syntax and Functions</a>
--   in the <i>Amazon CloudWatch User Guide</i> . Within one
--   MetricDataQuery structure, you must specify either <tt>Expression</tt>
--   or <tt>MetricStat</tt> but not both.
mdqExpression :: Lens' MetricDataQuery (Maybe Text)

-- | A human-readable label for this metric or expression. This is
--   especially useful if this is an expression, so that you know what the
--   value represents. If the metric or expression is shown in a CloudWatch
--   dashboard widget, the label is shown. If Label is omitted, CloudWatch
--   generates a default.
mdqLabel :: Lens' MetricDataQuery (Maybe Text)

-- | The metric to be returned, along with statistics, period, and units.
--   Use this parameter only if this structure is performing a data
--   retrieval and not performing a math expression on the returned data.
--   Within one MetricDataQuery structure, you must specify either
--   <tt>Expression</tt> or <tt>MetricStat</tt> but not both.
mdqMetricStat :: Lens' MetricDataQuery (Maybe MetricStat)

-- | A short name used to tie this structure to the results in the
--   response. This name must be unique within a single call to
--   <tt>GetMetricData</tt> . If you are performing math expressions on
--   this set of data, this name represents that data and can serve as a
--   variable in the mathematical expression. The valid characters are
--   letters, numbers, and underscore. The first character must be a
--   lowercase letter.
mdqId :: Lens' MetricDataQuery Text

-- | A <tt>GetMetricData</tt> call returns an array of
--   <tt>MetricDataResult</tt> structures. Each of these structures
--   includes the data points for that metric, along with the time stamps
--   of those data points and other identifying information.
--   
--   <i>See:</i> <a>metricDataResult</a> smart constructor.
data MetricDataResult

-- | Creates a value of <a>MetricDataResult</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>mdrValues</a> - The data points for the metric corresponding to
--   <tt>Timestamps</tt> . The number of values always matches the number
--   of time stamps and the time stamp for Values[x] is Timestamps[x].</li>
--   <li><a>mdrId</a> - The short name you specified to represent this
--   metric.</li>
--   <li><a>mdrTimestamps</a> - The time stamps for the data points,
--   formatted in Unix timestamp format. The number of time stamps always
--   matches the number of values and the value for Timestamps[x] is
--   Values[x].</li>
--   <li><a>mdrMessages</a> - A list of messages with additional
--   information about the data returned.</li>
--   <li><a>mdrLabel</a> - The human-readable label associated with the
--   data.</li>
--   <li><a>mdrStatusCode</a> - The status of the returned data.
--   <tt>Complete</tt> indicates that all data points in the requested time
--   range were returned. <tt>PartialData</tt> means that an incomplete set
--   of data points were returned. You can use the <tt>NextToken</tt> value
--   that was returned and repeat your request to get more data points.
--   <tt>NextToken</tt> is not returned if you are performing a math
--   expression. <tt>InternalError</tt> indicates that an error occurred.
--   Retry your request using <tt>NextToken</tt> , if present.</li>
--   </ul>
metricDataResult :: MetricDataResult

-- | The data points for the metric corresponding to <tt>Timestamps</tt> .
--   The number of values always matches the number of time stamps and the
--   time stamp for Values[x] is Timestamps[x].
mdrValues :: Lens' MetricDataResult [Double]

-- | The short name you specified to represent this metric.
mdrId :: Lens' MetricDataResult (Maybe Text)

-- | The time stamps for the data points, formatted in Unix timestamp
--   format. The number of time stamps always matches the number of values
--   and the value for Timestamps[x] is Values[x].
mdrTimestamps :: Lens' MetricDataResult [UTCTime]

-- | A list of messages with additional information about the data
--   returned.
mdrMessages :: Lens' MetricDataResult [MessageData]

-- | The human-readable label associated with the data.
mdrLabel :: Lens' MetricDataResult (Maybe Text)

-- | The status of the returned data. <tt>Complete</tt> indicates that all
--   data points in the requested time range were returned.
--   <tt>PartialData</tt> means that an incomplete set of data points were
--   returned. You can use the <tt>NextToken</tt> value that was returned
--   and repeat your request to get more data points. <tt>NextToken</tt> is
--   not returned if you are performing a math expression.
--   <tt>InternalError</tt> indicates that an error occurred. Retry your
--   request using <tt>NextToken</tt> , if present.
mdrStatusCode :: Lens' MetricDataResult (Maybe StatusCode)

-- | 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, 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>mdStorageResolution</a> - Valid values are 1 and 60. Setting
--   this to 1 specifies this metric as a high-resolution metric, so that
--   CloudWatch stores the metric with sub-minute resolution down to one
--   second. Setting this to 60 specifies this metric as a
--   regular-resolution metric, which CloudWatch stores at 1-minute
--   resolution. Currently, high resolution is available only for custom
--   metrics. For more information about high-resolution metrics, see
--   <a>High-Resolution Metrics</a> in the <i>Amazon CloudWatch User
--   Guide</i> . This field is optional, if you do not specify it the
--   default of 60 is used.</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, 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)

-- | Valid values are 1 and 60. Setting this to 1 specifies this metric as
--   a high-resolution metric, so that CloudWatch stores the metric with
--   sub-minute resolution down to one second. Setting this to 60 specifies
--   this metric as a regular-resolution metric, which CloudWatch stores at
--   1-minute resolution. Currently, high resolution is available only for
--   custom metrics. For more information about high-resolution metrics,
--   see <a>High-Resolution Metrics</a> in the <i>Amazon CloudWatch User
--   Guide</i> . This field is optional, if you do not specify it the
--   default of 60 is used.
mdStorageResolution :: Lens' MetricDatum (Maybe Natural)

-- | 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

-- | This structure defines the metric to be returned, along with the
--   statistics, period, and units.
--   
--   <i>See:</i> <a>metricStat</a> smart constructor.
data MetricStat

-- | Creates a value of <a>MetricStat</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>msUnit</a> - The unit to use for the returned data points.</li>
--   <li><a>msMetric</a> - The metric to return, including the metric name,
--   namespace, and dimensions.</li>
--   <li><a>msPeriod</a> - The period to use when retrieving the
--   metric.</li>
--   <li><a>msStat</a> - The statistic to return. It can include any
--   CloudWatch statistic or extended statistic.</li>
--   </ul>
metricStat :: Metric -> Natural -> Text -> MetricStat

-- | The unit to use for the returned data points.
msUnit :: Lens' MetricStat (Maybe StandardUnit)

-- | The metric to return, including the metric name, namespace, and
--   dimensions.
msMetric :: Lens' MetricStat Metric

-- | The period to use when retrieving the metric.
msPeriod :: Lens' MetricStat Natural

-- | The statistic to return. It can include any CloudWatch statistic or
--   extended statistic.
msStat :: Lens' MetricStat 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
