text: ﻿/*
  * Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.
  *
  * Licensed under the Apache License, Version 2.0 (the "License").
  * You may not use this file except in compliance with the License.
  * A copy of the License is located at
  *
  *  http://aws.amazon.com/apache2.0
  *
  * or in the "license" file accompanying this file. This file is distributed
  * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
  * express or implied. See the License for the specific language governing
  * permissions and limitations under the License.
  */
  
  #pragma once
  #include <aws/lightsail/Lightsail_EXPORTS.h>
  #include <aws/lightsail/LightsailRequest.h>
  #include <aws/core/utils/memory/stl/AWSString.h>
  #include <aws/lightsail/model/LoadBalancerMetricName.h>
  #include <aws/core/utils/DateTime.h>
  #include <aws/lightsail/model/MetricUnit.h>
  #include <aws/core/utils/memory/stl/AWSVector.h>
  #include <aws/lightsail/model/MetricStatistic.h>
  #include <utility>
  
  namespace Aws
  {
  namespace Lightsail
  {
  namespace Model
  {
  
    /**
     */
    class AWS_LIGHTSAIL_API GetLoadBalancerMetricDataRequest : public LightsailRequest
    {
    public:
      GetLoadBalancerMetricDataRequest();
  
      // Service request name is the Operation name which will send this request out,
      // each operation should has unique request name, so that we can get operation's name from this request.
      // Note: this is not true for response, multiple operations may have the same response name,
      // so we can not get operation's name from response.
      inline virtual const char* GetServiceRequestName() const override { return "GetLoadBalancerMetricData"; }
  
      Aws::String SerializePayload() const override;
  
      Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override;
  
  
      /**
       * <p>The name of the load balancer.</p>
       */
      inline const Aws::String& GetLoadBalancerName() const{ return m_loadBalancerName; }
  
      /**
       * <p>The name of the load balancer.</p>
       */
      inline bool LoadBalancerNameHasBeenSet() const { return m_loadBalancerNameHasBeenSet; }
  
      /**
       * <p>The name of the load balancer.</p>
       */
      inline void SetLoadBalancerName(const Aws::String& value) { m_loadBalancerNameHasBeenSet = true; m_loadBalancerName = value; }
  
      /**
       * <p>The name of the load balancer.</p>
       */
      inline void SetLoadBalancerName(Aws::String&& value) { m_loadBalancerNameHasBeenSet = true; m_loadBalancerName = std::move(value); }
  
      /**
       * <p>The name of the load balancer.</p>
       */
      inline void SetLoadBalancerName(const char* value) { m_loadBalancerNameHasBeenSet = true; m_loadBalancerName.assign(value); }
  
      /**
       * <p>The name of the load balancer.</p>
       */
      inline GetLoadBalancerMetricDataRequest& WithLoadBalancerName(const Aws::String& value) { SetLoadBalancerName(value); return *this;}
  
      /**
       * <p>The name of the load balancer.</p>
       */
      inline GetLoadBalancerMetricDataRequest& WithLoadBalancerName(Aws::String&& value) { SetLoadBalancerName(std::move(value)); return *this;}
  
      /**
       * <p>The name of the load balancer.</p>
       */
      inline GetLoadBalancerMetricDataRequest& WithLoadBalancerName(const char* value) { SetLoadBalancerName(value); return *this;}
  
  
      /**
       * <p>The metric for which you want to return information.</p> <p>Valid load
       * balancer metric names are listed below, along with the most useful
       * <code>statistics</code> to include in your request, and the published
       * <code>unit</code> value.</p> <ul> <li> <p> <b>
       * <code>ClientTLSNegotiationErrorCount</code> </b> - The number of TLS connections
       * initiated by the client that did not establish a session with the load balancer
       * due to a TLS error generated by the load balancer. Possible causes include a
       * mismatch of ciphers or protocols.</p> <p> <code>Statistics</code>: The most
       * useful statistic is <code>Sum</code>.</p> <p> <code>Unit</code>: The published
       * unit is <code>Count</code>.</p> </li> <li> <p> <b> <code>HealthyHostCount</code>
       * </b> - The number of target instances that are considered healthy.</p> <p>
       * <code>Statistics</code>: The most useful statistic are <code>Average</code>,
       * <code>Minimum</code>, and <code>Maximum</code>.</p> <p> <code>Unit</code>: The
       * published unit is <code>Count</code>.</p> </li> <li> <p> <b>
       * <code>HTTPCode_Instance_2XX_Count</code> </b> - The number of HTTP 2XX response
       * codes generated by the target instances. This does not include any response
       * codes generated by the load balancer.</p> <p> <code>Statistics</code>: The most
       * useful statistic is <code>Sum</code>. Note that <code>Minimum</code>,
       * <code>Maximum</code>, and <code>Average</code> all return <code>1</code>.</p>
       * <p> <code>Unit</code>: The published unit is <code>Count</code>.</p> </li> <li>
       * <p> <b> <code>HTTPCode_Instance_3XX_Count</code> </b> - The number of HTTP 3XX
       * response codes generated by the target instances. This does not include any
       * response codes generated by the load balancer.</p> <p> <code>Statistics</code>:
       * The most useful statistic is <code>Sum</code>. Note that <code>Minimum</code>,
       * <code>Maximum</code>, and <code>Average</code> all return <code>1</code>.</p>
       * <p> <code>Unit</code>: The published unit is <code>Count</code>.</p> </li> <li>
       * <p> <b> <code>HTTPCode_Instance_4XX_Count</code> </b> - The number of HTTP 4XX
       * response codes generated by the target instances. This does not include any
       * response codes generated by the load balancer.</p> <p> <code>Statistics</code>:
       * The most useful statistic is <code>Sum</code>. Note that <code>Minimum</code>,
       * <code>Maximum</code>, and <code>Average</code> all return <code>1</code>.</p>
       * <p> <code>Unit</code>: The published unit is <code>Count</code>.</p> </li> <li>
       * <p> <b> <code>HTTPCode_Instance_5XX_Count</code> </b> - The number of HTTP 5XX
       * response codes generated by the target instances. This does not include any
       * response codes generated by the load balancer.</p> <p> <code>Statistics</code>:
       * The most useful statistic is <code>Sum</code>. Note that <code>Minimum</code>,
       * <code>Maximum</code>, and <code>Average</code> all return <code>1</code>.</p>
       * <p> <code>Unit</code>: The published unit is <code>Count</code>.</p> </li> <li>
       * <p> <b> <code>HTTPCode_LB_4XX_Count</code> </b> - The number of HTTP 4XX client
       * error codes that originated from the load balancer. Client errors are generated
       * when requests are malformed or incomplete. These requests were not received by
       * the target instance. This count does not include response codes generated by the
       * target instances.</p> <p> <code>Statistics</code>: The most useful statistic is
       * <code>Sum</code>. Note that <code>Minimum</code>, <code>Maximum</code>, and
       * <code>Average</code> all return <code>1</code>.</p> <p> <code>Unit</code>: The
       * published unit is <code>Count</code>.</p> </li> <li> <p> <b>
       * <code>HTTPCode_LB_5XX_Count</code> </b> - The number of HTTP 5XX server error
       * codes that originated from the load balancer. This does not include any response
       * codes generated by the target instance. This metric is reported if there are no
       * healthy instances attached to the load balancer, or if the request rate exceeds
       * the capacity of the instances (spillover) or the load balancer.</p> <p>
       * <code>Statistics</code>: The most useful statistic is <code>Sum</code>. Note
       * that <code>Minimum</code>, <code>Maximum</code>, and <code>Average</code> all
       * return <code>1</code>.</p> <p> <code>Unit</code>: The published unit is
       * <code>Count</code>.</p> </li> <li> <p> <b> <code>InstanceResponseTime</code>
       * </b> - The time elapsed, in seconds, after the request leaves the load balancer
       * until a response from the target instance is received.</p> <p>
       * <code>Statistics</code>: The most useful statistic is <code>Average</code>.</p>
       * <p> <code>Unit</code>: The published unit is <code>Seconds</code>.</p> </li>
       * <li> <p> <b> <code>RejectedConnectionCount</code> </b> - The number of
       * connections that were rejected because the load balancer had reached its maximum
       * number of connections.</p> <p> <code>Statistics</code>: The most useful
       * statistic is <code>Sum</code>.</p> <p> <code>Unit</code>: The published unit is
       * <code>Count</code>.</p> </li> <li> <p> <b> <code>RequestCount</code> </b> - The
       * number of requests processed over IPv4. This count includes only the requests
       * with a response generated by a target instance of the load balancer.</p> <p>
       * <code>Statistics</code>: The most useful statistic is <code>Sum</code>. Note
       * that <code>Minimum</code>, <code>Maximum</code>, and <code>Average</code> all
       * return <code>1</code>.</p> <p> <code>Unit</code>: The published unit is
       * <code>Count</code>.</p> </li> <li> <p> <b> <code>UnhealthyHostCount</code> </b>
       * - The number of target instances that are considered unhealthy.</p> <p>
       * <code>Statistics</code>: The most useful statistic are <code>Average</code>,
       * <code>Minimum</code>, and <code>Maximum</code>.</p> <p> <code>Unit</code>: The
       * published unit is <code>Count</code>.</p> </li> </ul>
       */
      inline const LoadBalancerMetricName& GetMetricName() const{ return m_metricName; }
  
      /**
       * <p>The metric for which you want to return information.</p> <p>Valid load
       * balancer metric names are listed below, along with the most useful
       * <code>statistics</code> to include in your request, and the published
       * <code>unit</code> value.</p> <ul> <li> <p> <b>
       * <code>ClientTLSNegotiationErrorCount</code> </b> - The number of TLS connections
       * initiated by the client that did not establish a session with the load balancer
       * due to a TLS error generated by the load balancer. Possible causes include a
       * mismatch of ciphers or protocols.</p> <p> <code>Statistics</code>: The most
       * useful statistic is <code>Sum</code>.</p> <p> <code>Unit</code>: The published
       * unit is <code>Count</code>.</p> </li> <li> <p> <b> <code>HealthyHostCount</code>
       * </b> - The number of target instances that are considered healthy.</p> <p>
       * <code>Statistics</code>: The most useful statistic are <code>Average</code>,
       * <code>Minimum</code>, and <code>Maximum</code>.</p> <p> <code>Unit</code>: The
       * published unit is <code>Count</code>.</p> </li> <li> <p> <b>
       * <code>HTTPCode_Instance_2XX_Count</code> </b> - The number of HTTP 2XX response
       * codes generated by the target instances. This does not include any response
       * codes generated by the load balancer.</p> <p> <code>Statistics</code>: The most
       * useful statistic is <code>Sum</code>. Note that <code>Minimum</code>,
       * <code>Maximum</code>, and <code>Average</code> all return <code>1</code>.</p>
       * <p> <code>Unit</code>: The published unit is <code>Count</code>.</p> </li> <li>
       * <p> <b> <code>HTTPCode_Instance_3XX_Count</code> </b> - The number of HTTP 3XX
       * response codes generated by the target instances. This does not include any
       * response codes generated by the load balancer.</p> <p> <code>Statistics</code>:
       * The most useful statistic is <code>Sum</code>. Note that <code>Minimum</code>,
       * <code>Maximum</code>, and <code>Average</code> all return <code>1</code>.</p>
       * <p> <code>Unit</code>: The published unit is <code>Count</code>.</p> </li> <li>
       * <p> <b> <code>HTTPCode_Instance_4XX_Count</code> </b> - The number of HTTP 4XX
       * response codes generated by the target instances. This does not include any
       * response codes generated by the load balancer.</p> <p> <code>Statistics</code>:
       * The most useful statistic is <code>Sum</code>. Note that <code>Minimum</code>,
       * <code>Maximum</code>, and <code>Average</code> all return <code>1</code>.</p>
       * <p> <code>Unit</code>: The published unit is <code>Count</code>.</p> </li> <li>
       * <p> <b> <code>HTTPCode_Instance_5XX_Count</code> </b> - The number of HTTP 5XX
       * response codes generated by the target instances. This does not include any
       * response codes generated by the load balancer.</p> <p> <code>Statistics</code>:
       * The most useful statistic is <code>Sum</code>. Note that <code>Minimum</code>,
       * <code>Maximum</code>, and <code>Average</code> all return <code>1</code>.</p>
       * <p> <code>Unit</code>: The published unit is <code>Count</code>.</p> </li> <li>
       * <p> <b> <code>HTTPCode_LB_4XX_Count</code> </b> - The number of HTTP 4XX client
       * error codes that originated from the load balancer. Client errors are generated
       * when requests are malformed or incomplete. These requests were not received by
       * the target instance. This count does not include response codes generated by the
       * target instances.</p> <p> <code>Statistics</code>: The most useful statistic is
       * <code>Sum</code>. Note that <code>Minimum</code>, <code>Maximum</code>, and
       * <code>Average</code> all return <code>1</code>.</p> <p> <code>Unit</code>: The
       * published unit is <code>Count</code>.</p> </li> <li> <p> <b>
       * <code>HTTPCode_LB_5XX_Count</code> </b> - The number of HTTP 5XX server error
       * codes that originated from the load balancer. This does not include any response
       * codes generated by the target instance. This metric is reported if there are no
       * healthy instances attached to the load balancer, or if the request rate exceeds
       * the capacity of the instances (spillover) or the load balancer.</p> <p>
       * <code>Statistics</code>: The most useful statistic is <code>Sum</code>. Note
       * that <code>Minimum</code>, <code>Maximum</code>, and <code>Average</code> all
       * return <code>1</code>.</p> <p> <code>Unit</code>: The published unit is
       * <code>Count</code>.</p> </li> <li> <p> <b> <code>InstanceResponseTime</code>
       * </b> - The time elapsed, in seconds, after the request leaves the load balancer
       * until a response from the target instance is received.</p> <p>
       * <code>Statistics</code>: The most useful statistic is <code>Average</code>.</p>
       * <p> <code>Unit</code>: The published unit is <code>Seconds</code>.</p> </li>
       * <li> <p> <b> <code>RejectedConnectionCount</code> </b> - The number of
       * connections that were rejected because the load balancer had reached its maximum
       * number of connections.</p> <p> <code>Statistics</code>: The most useful
       * statistic is <code>Sum</code>.</p> <p> <code>Unit</code>: The published unit is
       * <code>Count</code>.</p> </li> <li> <p> <b> <code>RequestCount</code> </b> - The
       * number of requests processed over IPv4. This count includes only the requests
       * with a response generated by a target instance of the load balancer.</p> <p>
       * <code>Statistics</code>: The most useful statistic is <code>Sum</code>. Note
       * that <code>Minimum</code>, <code>Maximum</code>, and <code>Average</code> all
       * return <code>1</code>.</p> <p> <code>Unit</code>: The published unit is
       * <code>Count</code>.</p> </li> <li> <p> <b> <code>UnhealthyHostCount</code> </b>
       * - The number of target instances that are considered unhealthy.</p> <p>
       * <code>Statistics</code>: The most useful statistic are <code>Average</code>,
       * <code>Minimum</code>, and <code>Maximum</code>.</p> <p> <code>Unit</code>: The
       * published unit is <code>Count</code>.</p> </li> </ul>
       */
      inline bool MetricNameHasBeenSet() const { return m_metricNameHasBeenSet; }
  
      /**
       * <p>The metric for which you want to return information.</p> <p>Valid load
       * balancer metric names are listed below, along with the most useful
       * <code>statistics</code> to include in your request, and the published
       * <code>unit</code> value.</p> <ul> <li> <p> <b>
       * <code>ClientTLSNegotiationErrorCount</code> </b> - The number of TLS connections
       * initiated by the client that did not establish a session with the load balancer
       * due to a TLS error generated by the load balancer. Possible causes include a
       * mismatch of ciphers or protocols.</p> <p> <code>Statistics</code>: The most
       * useful statistic is <code>Sum</code>.</p> <p> <code>Unit</code>: The published
       * unit is <code>Count</code>.</p> </li> <li> <p> <b> <code>HealthyHostCount</code>
       * </b> - The number of target instances that are considered healthy.</p> <p>
       * <code>Statistics</code>: The most useful statistic are <code>Average</code>,
       * <code>Minimum</code>, and <code>Maximum</code>.</p> <p> <code>Unit</code>: The
       * published unit is <code>Count</code>.</p> </li> <li> <p> <b>
       * <code>HTTPCode_Instance_2XX_Count</code> </b> - The number of HTTP 2XX response
       * codes generated by the target instances. This does not include any response
       * codes generated by the load balancer.</p> <p> <code>Statistics</code>: The most
       * useful statistic is <code>Sum</code>. Note that <code>Minimum</code>,
       * <code>Maximum</code>, and <code>Average</code> all return <code>1</code>.</p>
       * <p> <code>Unit</code>: The published unit is <code>Count</code>.</p> </li> <li>
       * <p> <b> <code>HTTPCode_Instance_3XX_Count</code> </b> - The number of HTTP 3XX
       * response codes generated by the target instances. This does not include any
       * response codes generated by the load balancer.</p> <p> <code>Statistics</code>:
       * The most useful statistic is <code>Sum</code>. Note that <code>Minimum</code>,
       * <code>Maximum</code>, and <code>Average</code> all return <code>1</code>.</p>
       * <p> <code>Unit</code>: The published unit is <code>Count</code>.</p> </li> <li>
       * <p> <b> <code>HTTPCode_Instance_4XX_Count</code> </b> - The number of HTTP 4XX
       * response codes generated by the target instances. This does not include any
       * response codes generated by the load balancer.</p> <p> <code>Statistics</code>:
       * The most useful statistic is <code>Sum</code>. Note that <code>Minimum</code>,
       * <code>Maximum</code>, and <code>Average</code> all return <code>1</code>.</p>
       * <p> <code>Unit</code>: The published unit is <code>Count</code>.</p> </li> <li>
       * <p> <b> <code>HTTPCode_Instance_5XX_Count</code> </b> - The number of HTTP 5XX
       * response codes generated by the target instances. This does not include any
       * response codes generated by the load balancer.</p> <p> <code>Statistics</code>:
       * The most useful statistic is <code>Sum</code>. Note that <code>Minimum</code>,
       * <code>Maximum</code>, and <code>Average</code> all return <code>1</code>.</p>
       * <p> <code>Unit</code>: The published unit is <code>Count</code>.</p> </li> <li>
       * <p> <b> <code>HTTPCode_LB_4XX_Count</code> </b> - The number of HTTP 4XX client
       * error codes that originated from the load balancer. Client errors are generated
       * when requests are malformed or incomplete. These requests were not received by
       * the target instance. This count does not include response codes generated by the
       * target instances.</p> <p> <code>Statistics</code>: The most useful statistic is
       * <code>Sum</code>. Note that <code>Minimum</code>, <code>Maximum</code>, and
       * <code>Average</code> all return <code>1</code>.</p> <p> <code>Unit</code>: The
       * published unit is <code>Count</code>.</p> </li> <li> <p> <b>
       * <code>HTTPCode_LB_5XX_Count</code> </b> - The number of HTTP 5XX server error
       * codes that originated from the load balancer. This does not include any response
       * codes generated by the target instance. This metric is reported if there are no
       * healthy instances attached to the load balancer, or if the request rate exceeds
       * the capacity of the instances (spillover) or the load balancer.</p> <p>
       * <code>Statistics</code>: The most useful statistic is <code>Sum</code>. Note
       * that <code>Minimum</code>, <code>Maximum</code>, and <code>Average</code> all
       * return <code>1</code>.</p> <p> <code>Unit</code>: The published unit is
       * <code>Count</code>.</p> </li> <li> <p> <b> <code>InstanceResponseTime</code>
       * </b> - The time elapsed, in seconds, after the request leaves the load balancer
       * until a response from the target instance is received.</p> <p>
       * <code>Statistics</code>: The most useful statistic is <code>Average</code>.</p>
       * <p> <code>Unit</code>: The published unit is <code>Seconds</code>.</p> </li>
       * <li> <p> <b> <code>RejectedConnectionCount</code> </b> - The number of
       * connections that were rejected because the load balancer had reached its maximum
       * number of connections.</p> <p> <code>Statistics</code>: The most useful
       * statistic is <code>Sum</code>.</p> <p> <code>Unit</code>: The published unit is
       * <code>Count</code>.</p> </li> <li> <p> <b> <code>RequestCount</code> </b> - The
       * number of requests processed over IPv4. This count includes only the requests
       * with a response generated by a target instance of the load balancer.</p> <p>
       * <code>Statistics</code>: The most useful statistic is <code>Sum</code>. Note
       * that <code>Minimum</code>, <code>Maximum</code>, and <code>Average</code> all
       * return <code>1</code>.</p> <p> <code>Unit</code>: The published unit is
       * <code>Count</code>.</p> </li> <li> <p> <b> <code>UnhealthyHostCount</code> </b>
       * - The number of target instances that are considered unhealthy.</p> <p>
       * <code>Statistics</code>: The most useful statistic are <code>Average</code>,
       * <code>Minimum</code>, and <code>Maximum</code>.</p> <p> <code>Unit</code>: The
       * published unit is <code>Count</code>.</p> </li> </ul>
       */
      inline void SetMetricName(const LoadBalancerMetricName& value) { m_metricNameHasBeenSet = true; m_metricName = value; }
  
      /**
       * <p>The metric for which you want to return information.</p> <p>Valid load
       * balancer metric names are listed below, along with the most useful
       * <code>statistics</code> to include in your request, and the published
       * <code>unit</code> value.</p> <ul> <li> <p> <b>
       * <code>ClientTLSNegotiationErrorCount</code> </b> - The number of TLS connections
       * initiated by the client that did not establish a session with the load balancer
       * due to a TLS error generated by the load balancer. Possible causes include a
       * mismatch of ciphers or protocols.</p> <p> <code>Statistics</code>: The most
       * useful statistic is <code>Sum</code>.</p> <p> <code>Unit</code>: The published
       * unit is <code>Count</code>.</p> </li> <li> <p> <b> <code>HealthyHostCount</code>
       * </b> - The number of target instances that are considered healthy.</p> <p>
       * <code>Statistics</code>: The most useful statistic are <code>Average</code>,
       * <code>Minimum</code>, and <code>Maximum</code>.</p> <p> <code>Unit</code>: The
       * published unit is <code>Count</code>.</p> </li> <li> <p> <b>
       * <code>HTTPCode_Instance_2XX_Count</code> </b> - The number of HTTP 2XX response
       * codes generated by the target instances. This does not include any response
       * codes generated by the load balancer.</p> <p> <code>Statistics</code>: The most
       * useful statistic is <code>Sum</code>. Note that <code>Minimum</code>,
       * <code>Maximum</code>, and <code>Average</code> all return <code>1</code>.</p>
       * <p> <code>Unit</code>: The published unit is <code>Count</code>.</p> </li> <li>
       * <p> <b> <code>HTTPCode_Instance_3XX_Count</code> </b> - The number of HTTP 3XX
       * response codes generated by the target instances. This does not include any
       * response codes generated by the load balancer.</p> <p> <code>Statistics</code>:
       * The most useful statistic is <code>Sum</code>. Note that <code>Minimum</code>,
       * <code>Maximum</code>, and <code>Average</code> all return <code>1</code>.</p>
       * <p> <code>Unit</code>: The published unit is <code>Count</code>.</p> </li> <li>
       * <p> <b> <code>HTTPCode_Instance_4XX_Count</code> </b> - The number of HTTP 4XX
       * response codes generated by the target instances. This does not include any
       * response codes generated by the load balancer.</p> <p> <code>Statistics</code>:
       * The most useful statistic is <code>Sum</code>. Note that <code>Minimum</code>,
       * <code>Maximum</code>, and <code>Average</code> all return <code>1</code>.</p>
       * <p> <code>Unit</code>: The published unit is <code>Count</code>.</p> </li> <li>
       * <p> <b> <code>HTTPCode_Instance_5XX_Count</code> </b> - The number of HTTP 5XX
       * response codes generated by the target instances. This does not include any
       * response codes generated by the load balancer.</p> <p> <code>Statistics</code>:
       * The most useful statistic is <code>Sum</code>. Note that <code>Minimum</code>,
       * <code>Maximum</code>, and <code>Average</code> all return <code>1</code>.</p>
       * <p> <code>Unit</code>: The published unit is <code>Count</code>.</p> </li> <li>
       * <p> <b> <code>HTTPCode_LB_4XX_Count</code> </b> - The number of HTTP 4XX client
       * error codes that originated from the load balancer. Client errors are generated
       * when requests are malformed or incomplete. These requests were not received by
       * the target instance. This count does not include response codes generated by the
       * target instances.</p> <p> <code>Statistics</code>: The most useful statistic is
       * <code>Sum</code>. Note that <code>Minimum</code>, <code>Maximum</code>, and
       * <code>Average</code> all return <code>1</code>.</p> <p> <code>Unit</code>: The
       * published unit is <code>Count</code>.</p> </li> <li> <p> <b>
       * <code>HTTPCode_LB_5XX_Count</code> </b> - The number of HTTP 5XX server error
       * codes that originated from the load balancer. This does not include any response
       * codes generated by the target instance. This metric is reported if there are no
       * healthy instances attached to the load balancer, or if the request rate exceeds
       * the capacity of the instances (spillover) or the load balancer.</p> <p>
       * <code>Statistics</code>: The most useful statistic is <code>Sum</code>. Note
       * that <code>Minimum</code>, <code>Maximum</code>, and <code>Average</code> all
       * return <code>1</code>.</p> <p> <code>Unit</code>: The published unit is
       * <code>Count</code>.</p> </li> <li> <p> <b> <code>InstanceResponseTime</code>
       * </b> - The time elapsed, in seconds, after the request leaves the load balancer
       * until a response from the target instance is received.</p> <p>
       * <code>Statistics</code>: The most useful statistic is <code>Average</code>.</p>
       * <p> <code>Unit</code>: The published unit is <code>Seconds</code>.</p> </li>
       * <li> <p> <b> <code>RejectedConnectionCount</code> </b> - The number of
       * connections that were rejected because the load balancer had reached its maximum
       * number of connections.</p> <p> <code>Statistics</code>: The most useful
       * statistic is <code>Sum</code>.</p> <p> <code>Unit</code>: The published unit is
       * <code>Count</code>.</p> </li> <li> <p> <b> <code>RequestCount</code> </b> - The
       * number of requests processed over IPv4. This count includes only the requests
       * with a response generated by a target instance of the load balancer.</p> <p>
       * <code>Statistics</code>: The most useful statistic is <code>Sum</code>. Note
       * that <code>Minimum</code>, <code>Maximum</code>, and <code>Average</code> all
       * return <code>1</code>.</p> <p> <code>Unit</code>: The published unit is
       * <code>Count</code>.</p> </li> <li> <p> <b> <code>UnhealthyHostCount</code> </b>
       * - The number of target instances that are considered unhealthy.</p> <p>
       * <code>Statistics</code>: The most useful statistic are <code>Average</code>,
       * <code>Minimum</code>, and <code>Maximum</code>.</p> <p> <code>Unit</code>: The
       * published unit is <code>Count</code>.</p> </li> </ul>
       */
      inline void SetMetricName(LoadBalancerMetricName&& value) { m_metricNameHasBeenSet = true; m_metricName = std::move(value); }
  
      /**
       * <p>The metric for which you want to return information.</p> <p>Valid load
       * balancer metric names are listed below, along with the most useful
       * <code>statistics</code> to include in your request, and the published
       * <code>unit</code> value.</p> <ul> <li> <p> <b>
       * <code>ClientTLSNegotiationErrorCount</code> </b> - The number of TLS connections
       * initiated by the client that did not establish a session with the load balancer
       * due to a TLS error generated by the load balancer. Possible causes include a
       * mismatch of ciphers or protocols.</p> <p> <code>Statistics</code>: The most
       * useful statistic is <code>Sum</code>.</p> <p> <code>Unit</code>: The published
       * unit is <code>Count</code>.</p> </li> <li> <p> <b> <code>HealthyHostCount</code>
       * </b> - The number of target instances that are considered healthy.</p> <p>
       * <code>Statistics</code>: The most useful statistic are <code>Average</code>,
       * <code>Minimum</code>, and <code>Maximum</code>.</p> <p> <code>Unit</code>: The
       * published unit is <code>Count</code>.</p> </li> <li> <p> <b>
       * <code>HTTPCode_Instance_2XX_Count</code> </b> - The number of HTTP 2XX response
       * codes generated by the target instances. This does not include any response
       * codes generated by the load balancer.</p> <p> <code>Statistics</code>: The most
       * useful statistic is <code>Sum</code>. Note that <code>Minimum</code>,
       * <code>Maximum</code>, and <code>Average</code> all return <code>1</code>.</p>
       * <p> <code>Unit</code>: The published unit is <code>Count</code>.</p> </li> <li>
       * <p> <b> <code>HTTPCode_Instance_3XX_Count</code> </b> - The number of HTTP 3XX
       * response codes generated by the target instances. This does not include any
       * response codes generated by the load balancer.</p> <p> <code>Statistics</code>:
       * The most useful statistic is <code>Sum</code>. Note that <code>Minimum</code>,
       * <code>Maximum</code>, and <code>Average</code> all return <code>1</code>.</p>
       * <p> <code>Unit</code>: The published unit is <code>Count</code>.</p> </li> <li>
       * <p> <b> <code>HTTPCode_Instance_4XX_Count</code> </b> - The number of HTTP 4XX
       * response codes generated by the target instances. This does not include any
       * response codes generated by the load balancer.</p> <p> <code>Statistics</code>:
       * The most useful statistic is <code>Sum</code>. Note that <code>Minimum</code>,
       * <code>Maximum</code>, and <code>Average</code> all return <code>1</code>.</p>
       * <p> <code>Unit</code>: The published unit is <code>Count</code>.</p> </li> <li>
       * <p> <b> <code>HTTPCode_Instance_5XX_Count</code> </b> - The number of HTTP 5XX
       * response codes generated by the target instances. This does not include any
       * response codes generated by the load balancer.</p> <p> <code>Statistics</code>:
       * The most useful statistic is <code>Sum</code>. Note that <code>Minimum</code>,
       * <code>Maximum</code>, and <code>Average</code> all return <code>1</code>.</p>
       * <p> <code>Unit</code>: The published unit is <code>Count</code>.</p> </li> <li>
       * <p> <b> <code>HTTPCode_LB_4XX_Count</code> </b> - The number of HTTP 4XX client
       * error codes that originated from the load balancer. Client errors are generated
       * when requests are malformed or incomplete. These requests were not received by
       * the target instance. This count does not include response codes generated by the
       * target instances.</p> <p> <code>Statistics</code>: The most useful statistic is
       * <code>Sum</code>. Note that <code>Minimum</code>, <code>Maximum</code>, and
       * <code>Average</code> all return <code>1</code>.</p> <p> <code>Unit</code>: The
       * published unit is <code>Count</code>.</p> </li> <li> <p> <b>
       * <code>HTTPCode_LB_5XX_Count</code> </b> - The number of HTTP 5XX server error
       * codes that originated from the load balancer. This does not include any response
       * codes generated by the target instance. This metric is reported if there are no
       * healthy instances attached to the load balancer, or if the request rate exceeds
       * the capacity of the instances (spillover) or the load balancer.</p> <p>
       * <code>Statistics</code>: The most useful statistic is <code>Sum</code>. Note
       * that <code>Minimum</code>, <code>Maximum</code>, and <code>Average</code> all
       * return <code>1</code>.</p> <p> <code>Unit</code>: The published unit is
       * <code>Count</code>.</p> </li> <li> <p> <b> <code>InstanceResponseTime</code>
       * </b> - The time elapsed, in seconds, after the request leaves the load balancer
       * until a response from the target instance is received.</p> <p>
       * <code>Statistics</code>: The most useful statistic is <code>Average</code>.</p>
       * <p> <code>Unit</code>: The published unit is <code>Seconds</code>.</p> </li>
       * <li> <p> <b> <code>RejectedConnectionCount</code> </b> - The number of
       * connections that were rejected because the load balancer had reached its maximum
       * number of connections.</p> <p> <code>Statistics</code>: The most useful
       * statistic is <code>Sum</code>.</p> <p> <code>Unit</code>: The published unit is
       * <code>Count</code>.</p> </li> <li> <p> <b> <code>RequestCount</code> </b> - The
       * number of requests processed over IPv4. This count includes only the requests
       * with a response generated by a target instance of the load balancer.</p> <p>
       * <code>Statistics</code>: The most useful statistic is <code>Sum</code>. Note
       * that <code>Minimum</code>, <code>Maximum</code>, and <code>Average</code> all
       * return <code>1</code>.</p> <p> <code>Unit</code>: The published unit is
       * <code>Count</code>.</p> </li> <li> <p> <b> <code>UnhealthyHostCount</code> </b>
       * - The number of target instances that are considered unhealthy.</p> <p>
       * <code>Statistics</code>: The most useful statistic are <code>Average</code>,
       * <code>Minimum</code>, and <code>Maximum</code>.</p> <p> <code>Unit</code>: The
       * published unit is <code>Count</code>.</p> </li> </ul>
       */
      inline GetLoadBalancerMetricDataRequest& WithMetricName(const LoadBalancerMetricName& value) { SetMetricName(value); return *this;}
  
      /**
       * <p>The metric for which you want to return information.</p> <p>Valid load
       * balancer metric names are listed below, along with the most useful
       * <code>statistics</code> to include in your request, and the published
       * <code>unit</code> value.</p> <ul> <li> <p> <b>
       * <code>ClientTLSNegotiationErrorCount</code> </b> - The number of TLS connections
       * initiated by the client that did not establish a session with the load balancer
       * due to a TLS error generated by the load balancer. Possible causes include a
       * mismatch of ciphers or protocols.</p> <p> <code>Statistics</code>: The most
       * useful statistic is <code>Sum</code>.</p> <p> <code>Unit</code>: The published
       * unit is <code>Count</code>.</p> </li> <li> <p> <b> <code>HealthyHostCount</code>
       * </b> - The number of target instances that are considered healthy.</p> <p>
       * <code>Statistics</code>: The most useful statistic are <code>Average</code>,
       * <code>Minimum</code>, and <code>Maximum</code>.</p> <p> <code>Unit</code>: The
       * published unit is <code>Count</code>.</p> </li> <li> <p> <b>
       * <code>HTTPCode_Instance_2XX_Count</code> </b> - The number of HTTP 2XX response
       * codes generated by the target instances. This does not include any response
       * codes generated by the load balancer.</p> <p> <code>Statistics</code>: The most
       * useful statistic is <code>Sum</code>. Note that <code>Minimum</code>,
       * <code>Maximum</code>, and <code>Average</code> all return <code>1</code>.</p>
       * <p> <code>Unit</code>: The published unit is <code>Count</code>.</p> </li> <li>
       * <p> <b> <code>HTTPCode_Instance_3XX_Count</code> </b> - The number of HTTP 3XX
       * response codes generated by the target instances. This does not include any
       * response codes generated by the load balancer.</p> <p> <code>Statistics</code>:
       * The most useful statistic is <code>Sum</code>. Note that <code>Minimum</code>,
       * <code>Maximum</code>, and <code>Average</code> all return <code>1</code>.</p>
       * <p> <code>Unit</code>: The published unit is <code>Count</code>.</p> </li> <li>
       * <p> <b> <code>HTTPCode_Instance_4XX_Count</code> </b> - The number of HTTP 4XX
       * response codes generated by the target instances. This does not include any
       * response codes generated by the load balancer.</p> <p> <code>Statistics</code>:
       * The most useful statistic is <code>Sum</code>. Note that <code>Minimum</code>,
       * <code>Maximum</code>, and <code>Average</code> all return <code>1</code>.</p>
       * <p> <code>Unit</code>: The published unit is <code>Count</code>.</p> </li> <li>
       * <p> <b> <code>HTTPCode_Instance_5XX_Count</code> </b> - The number of HTTP 5XX
       * response codes generated by the target instances. This does not include any
       * response codes generated by the load balancer.</p> <p> <code>Statistics</code>:
       * The most useful statistic is <code>Sum</code>. Note that <code>Minimum</code>,
       * <code>Maximum</code>, and <code>Average</code> all return <code>1</code>.</p>
       * <p> <code>Unit</code>: The published unit is <code>Count</code>.</p> </li> <li>
       * <p> <b> <code>HTTPCode_LB_4XX_Count</code> </b> - The number of HTTP 4XX client
       * error codes that originated from the load balancer. Client errors are generated
       * when requests are malformed or incomplete. These requests were not received by
       * the target instance. This count does not include response codes generated by the
       * target instances.</p> <p> <code>Statistics</code>: The most useful statistic is
       * <code>Sum</code>. Note that <code>Minimum</code>, <code>Maximum</code>, and
       * <code>Average</code> all return <code>1</code>.</p> <p> <code>Unit</code>: The
       * published unit is <code>Count</code>.</p> </li> <li> <p> <b>
       * <code>HTTPCode_LB_5XX_Count</code> </b> - The number of HTTP 5XX server error
       * codes that originated from the load balancer. This does not include any response
       * codes generated by the target instance. This metric is reported if there are no
       * healthy instances attached to the load balancer, or if the request rate exceeds
       * the capacity of the instances (spillover) or the load balancer.</p> <p>
       * <code>Statistics</code>: The most useful statistic is <code>Sum</code>. Note
       * that <code>Minimum</code>, <code>Maximum</code>, and <code>Average</code> all
       * return <code>1</code>.</p> <p> <code>Unit</code>: The published unit is
       * <code>Count</code>.</p> </li> <li> <p> <b> <code>InstanceResponseTime</code>
       * </b> - The time elapsed, in seconds, after the request leaves the load balancer
       * until a response from the target instance is received.</p> <p>
       * <code>Statistics</code>: The most useful statistic is <code>Average</code>.</p>
       * <p> <code>Unit</code>: The published unit is <code>Seconds</code>.</p> </li>
       * <li> <p> <b> <code>RejectedConnectionCount</code> </b> - The number of
       * connections that were rejected because the load balancer had reached its maximum
       * number of connections.</p> <p> <code>Statistics</code>: The most useful
       * statistic is <code>Sum</code>.</p> <p> <code>Unit</code>: The published unit is
       * <code>Count</code>.</p> </li> <li> <p> <b> <code>RequestCount</code> </b> - The
       * number of requests processed over IPv4. This count includes only the requests
       * with a response generated by a target instance of the load balancer.</p> <p>
       * <code>Statistics</code>: The most useful statistic is <code>Sum</code>. Note
       * that <code>Minimum</code>, <code>Maximum</code>, and <code>Average</code> all
       * return <code>1</code>.</p> <p> <code>Unit</code>: The published unit is
       * <code>Count</code>.</p> </li> <li> <p> <b> <code>UnhealthyHostCount</code> </b>
       * - The number of target instances that are considered unhealthy.</p> <p>
       * <code>Statistics</code>: The most useful statistic are <code>Average</code>,
       * <code>Minimum</code>, and <code>Maximum</code>.</p> <p> <code>Unit</code>: The
       * published unit is <code>Count</code>.</p> </li> </ul>
       */
      inline GetLoadBalancerMetricDataRequest& WithMetricName(LoadBalancerMetricName&& value) { SetMetricName(std::move(value)); return *this;}
  
  
      /**
       * <p>The granularity, in seconds, of the returned data points.</p>
       */
      inline int GetPeriod() const{ return m_period; }
  
      /**
       * <p>The granularity, in seconds, of the returned data points.</p>
       */
      inline bool PeriodHasBeenSet() const { return m_periodHasBeenSet; }
  
      /**
       * <p>The granularity, in seconds, of the returned data points.</p>
       */
      inline void SetPeriod(int value) { m_periodHasBeenSet = true; m_period = value; }
  
      /**
       * <p>The granularity, in seconds, of the returned data points.</p>
       */
      inline GetLoadBalancerMetricDataRequest& WithPeriod(int value) { SetPeriod(value); return *this;}
  
  
      /**
       * <p>The start time of the period.</p>
       */
      inline const Aws::Utils::DateTime& GetStartTime() const{ return m_startTime; }
  
      /**
       * <p>The start time of the period.</p>
       */
      inline bool StartTimeHasBeenSet() const { return m_startTimeHasBeenSet; }
  
      /**
       * <p>The start time of the period.</p>
       */
      inline void SetStartTime(const Aws::Utils::DateTime& value) { m_startTimeHasBeenSet = true; m_startTime = value; }
  
      /**
       * <p>The start time of the period.</p>
       */
      inline void SetStartTime(Aws::Utils::DateTime&& value) { m_startTimeHasBeenSet = true; m_startTime = std::move(value); }
  
      /**
       * <p>The start time of the period.</p>
       */
      inline GetLoadBalancerMetricDataRequest& WithStartTime(const Aws::Utils::DateTime& value) { SetStartTime(value); return *this;}
  
      /**
       * <p>The start time of the period.</p>
       */
      inline GetLoadBalancerMetricDataRequest& WithStartTime(Aws::Utils::DateTime&& value) { SetStartTime(std::move(value)); return *this;}
  
  
      /**
       * <p>The end time of the period.</p>
       */
      inline const Aws::Utils::DateTime& GetEndTime() const{ return m_endTime; }
  
      /**
       * <p>The end time of the period.</p>
       */
      inline bool EndTimeHasBeenSet() const { return m_endTimeHasBeenSet; }
  
      /**
       * <p>The end time of the period.</p>
       */
      inline void SetEndTime(const Aws::Utils::DateTime& value) { m_endTimeHasBeenSet = true; m_endTime = value; }
  
      /**
       * <p>The end time of the period.</p>
       */
      inline void SetEndTime(Aws::Utils::DateTime&& value) { m_endTimeHasBeenSet = true; m_endTime = std::move(value); }
  
      /**
       * <p>The end time of the period.</p>
       */
      inline GetLoadBalancerMetricDataRequest& WithEndTime(const Aws::Utils::DateTime& value) { SetEndTime(value); return *this;}
  
      /**
       * <p>The end time of the period.</p>
       */
      inline GetLoadBalancerMetricDataRequest& WithEndTime(Aws::Utils::DateTime&& value) { SetEndTime(std::move(value)); return *this;}
  
  
      /**
       * <p>The unit for the metric data request. Valid units depend on the metric data
       * being required. For the valid units with each available metric, see the
       * <code>metricName</code> parameter.</p>
       */
      inline const MetricUnit& GetUnit() const{ return m_unit; }
  
      /**
       * <p>The unit for the metric data request. Valid units depend on the metric data
       * being required. For the valid units with each available metric, see the
       * <code>metricName</code> parameter.</p>
       */
      inline bool UnitHasBeenSet() const { return m_unitHasBeenSet; }
  
      /**
       * <p>The unit for the metric data request. Valid units depend on the metric data
       * being required. For the valid units with each available metric, see the
       * <code>metricName</code> parameter.</p>
       */
      inline void SetUnit(const MetricUnit& value) { m_unitHasBeenSet = true; m_unit = value; }
  
      /**
       * <p>The unit for the metric data request. Valid units depend on the metric data
       * being required. For the valid units with each available metric, see the
       * <code>metricName</code> parameter.</p>
       */
      inline void SetUnit(MetricUnit&& value) { m_unitHasBeenSet = true; m_unit = std::move(value); }
  
      /**
       * <p>The unit for the metric data request. Valid units depend on the metric data
       * being required. For the valid units with each available metric, see the
       * <code>metricName</code> parameter.</p>
       */
      inline GetLoadBalancerMetricDataRequest& WithUnit(const MetricUnit& value) { SetUnit(value); return *this;}
  
      /**
       * <p>The unit for the metric data request. Valid units depend on the metric data
       * being required. For the valid units with each available metric, see the
       * <code>metricName</code> parameter.</p>
       */
      inline GetLoadBalancerMetricDataRequest& WithUnit(MetricUnit&& value) { SetUnit(std::move(value)); return *this;}
  
  
      /**
       * <p>The statistic for the metric.</p> <p>The following statistics are
       * available:</p> <ul> <li> <p> <code>Minimum</code> - The lowest value observed
       * during the specified period. Use this value to determine low volumes of activity
       * for your application.</p> </li> <li> <p> <code>Maximum</code> - The highest
       * value observed during the specified period. Use this value to determine high
       * volumes of activity for your application.</p> </li> <li> <p> <code>Sum</code> -
       * All values submitted for the matching metric added together. You can use this
       * statistic to determine the total volume of a metric.</p> </li> <li> <p>
       * <code>Average</code> - The value of Sum / SampleCount during the specified
       * period. By comparing this statistic with the Minimum and Maximum values, you can
       * determine the full scope of a metric and how close the average use is to the
       * Minimum and Maximum values. This comparison helps you to know when to increase
       * or decrease your resources.</p> </li> <li> <p> <code>SampleCount</code> - The
       * count, or number, of data points used for the statistical calculation.</p> </li>
       * </ul>
       */
      inline const Aws::Vector<MetricStatistic>& GetStatistics() const{ return m_statistics; }
  
      /**
       * <p>The statistic for the metric.</p> <p>The following statistics are
       * available:</p> <ul> <li> <p> <code>Minimum</code> - The lowest value observed
       * during the specified period. Use this value to determine low volumes of activity
       * for your application.</p> </li> <li> <p> <code>Maximum</code> - The highest
       * value observed during the specified period. Use this value to determine high
       * volumes of activity for your application.</p> </li> <li> <p> <code>Sum</code> -
       * All values submitted for the matching metric added together. You can use this
       * statistic to determine the total volume of a metric.</p> </li> <li> <p>
       * <code>Average</code> - The value of Sum / SampleCount during the specified
       * period. By comparing this statistic with the Minimum and Maximum values, you can
       * determine the full scope of a metric and how close the average use is to the
       * Minimum and Maximum values. This comparison helps you to know when to increase
       * or decrease your resources.</p> </li> <li> <p> <code>SampleCount</code> - The
       * count, or number, of data points used for the statistical calculation.</p> </li>
       * </ul>
       */
      inline bool StatisticsHasBeenSet() const { return m_statisticsHasBeenSet; }
  
      /**
       * <p>The statistic for the metric.</p> <p>The following statistics are
       * available:</p> <ul> <li> <p> <code>Minimum</code> - The lowest value observed
       * during the specified period. Use this value to determine low volumes of activity
       * for your application.</p> </li> <li> <p> <code>Maximum</code> - The highest
       * value observed during the specified period. Use this value to determine high
       * volumes of activity for your application.</p> </li> <li> <p> <code>Sum</code> -
       * All values submitted for the matching metric added together. You can use this
       * statistic to determine the total volume of a metric.</p> </li> <li> <p>
       * <code>Average</code> - The value of Sum / SampleCount during the specified
       * period. By comparing this statistic with the Minimum and Maximum values, you can
       * determine the full scope of a metric and how close the average use is to the
       * Minimum and Maximum values. This comparison helps you to know when to increase
       * or decrease your resources.</p> </li> <li> <p> <code>SampleCount</code> - The
       * count, or number, of data points used for the statistical calculation.</p> </li>
       * </ul>
       */
      inline void SetStatistics(const Aws::Vector<MetricStatistic>& value) { m_statisticsHasBeenSet = true; m_statistics = value; }
  
      /**
       * <p>The statistic for the metric.</p> <p>The following statistics are
       * available:</p> <ul> <li> <p> <code>Minimum</code> - The lowest value observed
       * during the specified period. Use this value to determine low volumes of activity
       * for your application.</p> </li> <li> <p> <code>Maximum</code> - The highest
       * value observed during the specified period. Use this value to determine high
       * volumes of activity for your application.</p> </li> <li> <p> <code>Sum</code> -
       * All values submitted for the matching metric added together. You can use this
       * statistic to determine the total volume of a metric.</p> </li> <li> <p>
       * <code>Average</code> - The value of Sum / SampleCount during the specified
       * period. By comparing this statistic with the Minimum and Maximum values, you can
       * determine the full scope of a metric and how close the average use is to the
       * Minimum and Maximum values. This comparison helps you to know when to increase
       * or decrease your resources.</p> </li> <li> <p> <code>SampleCount</code> - The
       * count, or number, of data points used for the statistical calculation.</p> </li>
       * </ul>
       */
      inline void SetStatistics(Aws::Vector<MetricStatistic>&& value) { m_statisticsHasBeenSet = true; m_statistics = std::move(value); }
  
      /**
       * <p>The statistic for the metric.</p> <p>The following statistics are
       * available:</p> <ul> <li> <p> <code>Minimum</code> - The lowest value observed
       * during the specified period. Use this value to determine low volumes of activity
       * for your application.</p> </li> <li> <p> <code>Maximum</code> - The highest
       * value observed during the specified period. Use this value to determine high
       * volumes of activity for your application.</p> </li> <li> <p> <code>Sum</code> -
       * All values submitted for the matching metric added together. You can use this
       * statistic to determine the total volume of a metric.</p> </li> <li> <p>
       * <code>Average</code> - The value of Sum / SampleCount during the specified
       * period. By comparing this statistic with the Minimum and Maximum values, you can
       * determine the full scope of a metric and how close the average use is to the
       * Minimum and Maximum values. This comparison helps you to know when to increase
       * or decrease your resources.</p> </li> <li> <p> <code>SampleCount</code> - The
       * count, or number, of data points used for the statistical calculation.</p> </li>
       * </ul>
       */
      inline GetLoadBalancerMetricDataRequest& WithStatistics(const Aws::Vector<MetricStatistic>& value) { SetStatistics(value); return *this;}
  
      /**
       * <p>The statistic for the metric.</p> <p>The following statistics are
       * available:</p> <ul> <li> <p> <code>Minimum</code> - The lowest value observed
       * during the specified period. Use this value to determine low volumes of activity
       * for your application.</p> </li> <li> <p> <code>Maximum</code> - The highest
       * value observed during the specified period. Use this value to determine high
       * volumes of activity for your application.</p> </li> <li> <p> <code>Sum</code> -
       * All values submitted for the matching metric added together. You can use this
       * statistic to determine the total volume of a metric.</p> </li> <li> <p>
       * <code>Average</code> - The value of Sum / SampleCount during the specified
       * period. By comparing this statistic with the Minimum and Maximum values, you can
       * determine the full scope of a metric and how close the average use is to the
       * Minimum and Maximum values. This comparison helps you to know when to increase
       * or decrease your resources.</p> </li> <li> <p> <code>SampleCount</code> - The
       * count, or number, of data points used for the statistical calculation.</p> </li>
       * </ul>
       */
      inline GetLoadBalancerMetricDataRequest& WithStatistics(Aws::Vector<MetricStatistic>&& value) { SetStatistics(std::move(value)); return *this;}
  
      /**
       * <p>The statistic for the metric.</p> <p>The following statistics are
       * available:</p> <ul> <li> <p> <code>Minimum</code> - The lowest value observed
       * during the specified period. Use this value to determine low volumes of activity
       * for your application.</p> </li> <li> <p> <code>Maximum</code> - The highest
       * value observed during the specified period. Use this value to determine high
       * volumes of activity for your application.</p> </li> <li> <p> <code>Sum</code> -
       * All values submitted for the matching metric added together. You can use this
       * statistic to determine the total volume of a metric.</p> </li> <li> <p>
       * <code>Average</code> - The value of Sum / SampleCount during the specified
       * period. By comparing this statistic with the Minimum and Maximum values, you can
       * determine the full scope of a metric and how close the average use is to the
       * Minimum and Maximum values. This comparison helps you to know when to increase
       * or decrease your resources.</p> </li> <li> <p> <code>SampleCount</code> - The
       * count, or number, of data points used for the statistical calculation.</p> </li>
       * </ul>
       */
      inline GetLoadBalancerMetricDataRequest& AddStatistics(const MetricStatistic& value) { m_statisticsHasBeenSet = true; m_statistics.push_back(value); return *this; }
  
      /**
       * <p>The statistic for the metric.</p> <p>The following statistics are
       * available:</p> <ul> <li> <p> <code>Minimum</code> - The lowest value observed
       * during the specified period. Use this value to determine low volumes of activity
       * for your application.</p> </li> <li> <p> <code>Maximum</code> - The highest
       * value observed during the specified period. Use this value to determine high
       * volumes of activity for your application.</p> </li> <li> <p> <code>Sum</code> -
       * All values submitted for the matching metric added together. You can use this
       * statistic to determine the total volume of a metric.</p> </li> <li> <p>
       * <code>Average</code> - The value of Sum / SampleCount during the specified
       * period. By comparing this statistic with the Minimum and Maximum values, you can
       * determine the full scope of a metric and how close the average use is to the
       * Minimum and Maximum values. This comparison helps you to know when to increase
       * or decrease your resources.</p> </li> <li> <p> <code>SampleCount</code> - The
       * count, or number, of data points used for the statistical calculation.</p> </li>
       * </ul>
       */
      inline GetLoadBalancerMetricDataRequest& AddStatistics(MetricStatistic&& value) { m_statisticsHasBeenSet = true; m_statistics.push_back(std::move(value)); return *this; }
  
    private:
  
      Aws::String m_loadBalancerName;
      bool m_loadBalancerNameHasBeenSet;
  
      LoadBalancerMetricName m_metricName;
      bool m_metricNameHasBeenSet;
  
      int m_period;
      bool m_periodHasBeenSet;
  
      Aws::Utils::DateTime m_startTime;
      bool m_startTimeHasBeenSet;
  
      Aws::Utils::DateTime m_endTime;
      bool m_endTimeHasBeenSet;
  
      MetricUnit m_unit;
      bool m_unitHasBeenSet;
  
      Aws::Vector<MetricStatistic> m_statistics;
      bool m_statisticsHasBeenSet;
    };
  
  } // namespace Model
  } // namespace Lightsail
  } // namespace Aws
  