import * as aws from "@pulumi/aws" ; import * as pulumi from "@pulumi/pulumi" ; import { API } from "." ; import * as cloudwatch from "../cloudwatch" ; export namespace metrics { type ApigatewayMetricName = "4XXError" | "5XXError" | "CacheHitCount" | "CacheMissCount" | "Count" | "IntegrationLatency" | "Latency" ; export interface ApigatewayMetricChange extends cloudwatch . MetricChange { /**
         * Optional [RestApi] this metric should be filtered down to.  Only one of [RestApi] or
         * [api] can be provided.
         */ restApi ? : aws . apigateway . RestApi ; /**
         * Optional [API] this metric should be filtered down to.  Only one of [RestApi] or [api]
         * can be provided.
         */ api ? : API ; /**
         * Filters API Gateway metrics for an API method of the specified API, stage, resource, and
         * method.
         *
         * API Gateway will not send such metrics unless you have explicitly enabled detailed
         * CloudWatch metrics. You can do this in the console by selecting Enable CloudWatch Metrics
         * under a stage Settings tab. Alternatively, you can call the stage:update action of the
         * API Gateway REST API to update the metricsEnabled property to true.
         *
         * Enabling such metrics will incur additional charges to your account. For pricing
         * information, see Amazon CloudWatch Pricing.
         */ method ? : string ; /**
         * Filters API Gateway metrics for an API method of the specified API, stage, resource, and
         * method.
         *
         * API Gateway will not send such metrics unless you have explicitly enabled detailed
         * CloudWatch metrics. You can do this in the console by selecting Enable CloudWatch Metrics
         * under a stage Settings tab. Alternatively, you can call the stage:update action of the
         * API Gateway REST API to update the metricsEnabled property to true.
         *
         * Enabling such metrics will incur additional charges to your account. For pricing
         * information, see Amazon CloudWatch Pricing.
         */ resource ? : string ; /**
         * Filters API Gateway metrics for an API stage of the specified API and stage.  Either
         * [restApi] or [api] must be provided with this.
         */ stage ? : string ; } /**
     * Creates an AWS/ApiGateway metric with the requested [metricName]. See
     * https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-metrics-and-dimensions.html
     * for list of all metric-names.
     *
     * Note, individual metrics can easily be obtained without supplying the name using the other
     * [metricXXX] functions.
     *
     * You can use the dimensions in the following table to filter API Gateway metrics.
     *
     * 1. "ApiName": Filters API Gateway metrics for an API of the specified API name.
     * 2. "ApiName, Method, Resource, Stage": Filters API Gateway metrics for an API method of the
     *    specified API, stage, resource, and method.
     *
     *    API Gateway will not send such metrics unless you have explicitly enabled detailed CloudWatch
     *    metrics. You can do this in the console by selecting Enable CloudWatch Metrics under a stage
     *    Settings tab. Alternatively, you can call the stage:update action of the API Gateway REST API
     *    to update the metricsEnabled property to true.
     *
     *    Enabling such metrics will incur additional charges to your account. For pricing information,
     *    see Amazon CloudWatch Pricing.
     * 3. "ApiName, Stage": Filters API Gateway metrics for an API stage of the specified API and stage.
     */ function metric ( metricName , change = { } ) { const dimensions = { } ; if ( change . restApi !== undefined ) { dimensions . ApiName = change . restApi . name ; } if ( change . api !== undefined ) { dimensions . ApiName = change . api . restAPI . name ; } if ( change . method !== undefined ) { dimensions . Method = change . method ; } if ( change . resource !== undefined ) { dimensions . Resource = change . resource ; } if ( change . stage !== undefined ) { dimensions . Stage = change . stage ; } return new cloudwatch . Metric ( { namespace : "AWS/ApiGateway" , name : metricName , ... change , } ) . withDimensions ( dimensions ) ; } /**
     * The number of client-side errors captured in a specified period.
     *
     * The Sum statistic represents this metric, namely, the total count of the 4XXError errors in the
     * given period. The Average statistic represents the 4XXError error rate, namely, the total count
     * of the 4XXError errors divided by the total number of requests during the period. The denominator
     * corresponds to the Count metric (below).
     *
     * Unit: Count
     */ export function error4XX ( change ? ) { return metric ( "4XXError" , { unit : "Count" , ... change } ) ; } /**
     * The number of server-side errors captured in a given period.
     *
     * The Sum statistic represents this metric, namely, the total count of the 5XXError errors in the
     * given period. The Average statistic represents the 5XXError error rate, namely, the total count
     * of the 5XXError errors divided by the total number of requests during the period. The denominator
     * corresponds to the Count metric (below).
     *
     * Unit: Count
     */ export function error5XX ( change ? ) { return metric ( "5XXError" , { unit : "Count" , ... change } ) ; } /**
     * The number of requests served from the API cache in a given period.
     *
     * The Sum statistic represents this metric, namely, the total count of the cache hits in the
     * specified period. The Average statistic represents the cache hit rate, namely, the total count of
     * the cache hits divided by the total number of requests during the period. The denominator
     * corresponds to the Count metric (below).
     */ export function cacheHitCount ( change ? ) { return metric ( "CacheHitCount" , { unit : "Count" , ... change } ) ; } /**
     * The number of requests served from the back end in a given period, when API caching is enabled.
     *
     * The Sum statistic represents this metric, namely, the total count of the cache misses in the
     * specified period. The Average statistic represents the cache miss rate, namely, the total count
     * of the cache hits divided by the total number of requests during the period. The denominator
     * corresponds to the Count metric (below).
     *
     * Unit: Count
     */ export function cacheMissCount ( change ? ) { return metric ( "CacheMissCount" , { unit : "Count" , ... change } ) ; } /**
     * The total number API requests in a given period.
     *
     * The SampleCount statistic represents this metric.
     *
     * Unit: Count
     */ export function count ( change ? ) { return metric ( "Count" , { unit : "Count" , ... change } ) ; } /**
     * The time between when API Gateway relays a request to the back end and when it receives a
     * response from the back end.
     *
     * Unit: Milliseconds
     */ export function integrationLatency ( change ? ) { return metric ( "IntegrationLatency" , { unit : "Milliseconds" , ... change } ) ; } /**
     * The time between when API Gateway receives a request from a client and when it returns a response
     * to the client. The latency includes the integration latency and other API Gateway overhead.
     *
     * Unit: Milliseconds
     */ export function latency ( change ? ) { return metric ( "Latency" , { unit : "Milliseconds" , ... change } ) ; } }