{
  "parameters": {
    "quotaUser": {
      "location": "query",
      "type": "string",
      "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters."
    },
    "access_token": {
      "location": "query",
      "type": "string",
      "description": "OAuth access token."
    },
    "uploadType": {
      "type": "string",
      "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
      "location": "query"
    },
    "$.xgafv": {
      "description": "V1 error format.",
      "enum": [
        "1",
        "2"
      ],
      "type": "string",
      "enumDescriptions": [
        "v1 error format",
        "v2 error format"
      ],
      "location": "query"
    },
    "fields": {
      "location": "query",
      "type": "string",
      "description": "Selector specifying which fields to include in a partial response."
    },
    "key": {
      "location": "query",
      "type": "string",
      "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token."
    },
    "oauth_token": {
      "type": "string",
      "description": "OAuth 2.0 token for the current user.",
      "location": "query"
    },
    "prettyPrint": {
      "type": "boolean",
      "description": "Returns response with indentations and line breaks.",
      "default": "true",
      "location": "query"
    },
    "upload_protocol": {
      "type": "string",
      "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
      "location": "query"
    },
    "alt": {
      "default": "json",
      "type": "string",
      "enumDescriptions": [
        "Responses with Content-Type of application/json",
        "Media download with context-dependent Content-Type",
        "Responses with Content-Type of application/x-protobuf"
      ],
      "location": "query",
      "description": "Data format for response.",
      "enum": [
        "json",
        "media",
        "proto"
      ]
    },
    "callback": {
      "location": "query",
      "type": "string",
      "description": "JSONP"
    }
  },
  "batchPath": "batch",
  "icons": {
    "x16": "",
    "x32": ""
  },
  "id": "monitoring:v3",
  "fullyEncodeReservedExpansion": true,
  "ownerDomain": "google.com",
  "servicePath": "",
  "auth": {
    "oauth2": {
      "scopes": {
        "https://www.googleapis.com/auth/monitoring.read": {
          "description": "View monitoring data for all of your Google Cloud and third-party projects"
        },
        "https://www.googleapis.com/auth/cloud-platform": {
          "description": "See, edit, configure, and delete your Google Cloud data and see the email address for your Google Account."
        },
        "https://www.googleapis.com/auth/monitoring": {
          "description": "View and write monitoring data for all of your Google and third-party Cloud and API projects"
        },
        "https://www.googleapis.com/auth/monitoring.write": {
          "description": "Publish metric data to your Google Cloud projects"
        }
      }
    }
  },
  "version_module": true,
  "ownerName": "Google",
  "basePath": "",
  "kind": "discovery#restDescription",
  "protocol": "rest",
  "description": "",
  "resources": {
    "folders": {
      "resources": {
        "timeSeries": {
          "methods": {
            "list": {
              "path": "v3/{+name}/timeSeries",
              "description": "Lists time series that match a filter.",
              "parameterOrder": [
                "name"
              ],
              "parameters": {
                "view": {
                  "enum": [
                    "FULL",
                    "HEADERS"
                  ],
                  "description": "Required. Specifies which information is returned about the time series.",
                  "location": "query",
                  "enumDescriptions": [
                    "Returns the identity of the metric(s), the time series, and the time series data.",
                    "Returns the identity of the metric and the time series resource, but not the time series data."
                  ],
                  "type": "string"
                },
                "pageToken": {
                  "description": "If this field is not empty then it must contain the `nextPageToken` value returned by a previous call to this method. Using this field causes the method to return additional results from the previous method call.",
                  "type": "string",
                  "location": "query"
                },
                "aggregation.alignmentPeriod": {
                  "description": "The `alignment_period` specifies a time interval, in seconds, that is used to divide the data in all the time series into consistent blocks of time. This will be done before the per-series aligner can be applied to the data. The value must be at least 60 seconds. If a per-series aligner other than `ALIGN_NONE` is specified, this field is required or an error is returned. If no per-series aligner is specified, or the aligner `ALIGN_NONE` is specified, then this field is ignored. The maximum value of the `alignment_period` is 104 weeks (2 years) for charts, and 90,000 seconds (25 hours) for alerting policies.",
                  "type": "string",
                  "location": "query",
                  "format": "google-duration"
                },
                "secondaryAggregation.groupByFields": {
                  "location": "query",
                  "repeated": true,
                  "description": "The set of fields to preserve when `cross_series_reducer` is specified. The `group_by_fields` determine how the time series are partitioned into subsets prior to applying the aggregation operation. Each subset contains time series that have the same value for each of the grouping fields. Each individual time series is a member of exactly one subset. The `cross_series_reducer` is applied to each subset of time series. It is not possible to reduce across different resource types, so this field implicitly contains `resource.type`. Fields not specified in `group_by_fields` are aggregated away. If `group_by_fields` is not specified and all the time series have the same resource type, then the time series are aggregated into a single output time series. If `cross_series_reducer` is not defined, this field is ignored.",
                  "type": "string"
                },
                "interval.endTime": {
                  "location": "query",
                  "format": "google-datetime",
                  "description": "Required. The end of the time interval.",
                  "type": "string"
                },
                "secondaryAggregation.perSeriesAligner": {
                  "type": "string",
                  "location": "query",
                  "enumDescriptions": [
                    "No alignment. Raw data is returned. Not valid if cross-series reduction is requested. The `value_type` of the result is the same as the `value_type` of the input.",
                    "Align and convert to DELTA. The output is `delta = y1 - y0`. This alignment is valid for CUMULATIVE and `DELTA` metrics. If the selected alignment period results in periods with no data, then the aligned value for such a period is created by interpolation. The `value_type` of the aligned result is the same as the `value_type` of the input.",
                    "Align and convert to a rate. The result is computed as `rate = (y1 - y0)/(t1 - t0)`, or \"delta over time\". Think of this aligner as providing the slope of the line that passes through the value at the start and at the end of the `alignment_period`. This aligner is valid for `CUMULATIVE` and `DELTA` metrics with numeric values. If the selected alignment period results in periods with no data, then the aligned value for such a period is created by interpolation. The output is a `GAUGE` metric with `value_type` `DOUBLE`. If, by \"rate\", you mean \"percentage change\", see the `ALIGN_PERCENT_CHANGE` aligner instead.",
                    "Align by interpolating between adjacent points around the alignment period boundary. This aligner is valid for `GAUGE` metrics with numeric values. The `value_type` of the aligned result is the same as the `value_type` of the input.",
                    "Align by moving the most recent data point before the end of the alignment period to the boundary at the end of the alignment period. This aligner is valid for `GAUGE` metrics. The `value_type` of the aligned result is the same as the `value_type` of the input.",
                    "Align the time series by returning the minimum value in each alignment period. This aligner is valid for `GAUGE` and `DELTA` metrics with numeric values. The `value_type` of the aligned result is the same as the `value_type` of the input.",
                    "Align the time series by returning the maximum value in each alignment period. This aligner is valid for `GAUGE` and `DELTA` metrics with numeric values. The `value_type` of the aligned result is the same as the `value_type` of the input.",
                    "Align the time series by returning the mean value in each alignment period. This aligner is valid for `GAUGE` and `DELTA` metrics with numeric values. The `value_type` of the aligned result is `DOUBLE`.",
                    "Align the time series by returning the number of values in each alignment period. This aligner is valid for `GAUGE` and `DELTA` metrics with numeric or Boolean values. The `value_type` of the aligned result is `INT64`.",
                    "Align the time series by returning the sum of the values in each alignment period. This aligner is valid for `GAUGE` and `DELTA` metrics with numeric and distribution values. The `value_type` of the aligned result is the same as the `value_type` of the input.",
                    "Align the time series by returning the standard deviation of the values in each alignment period. This aligner is valid for `GAUGE` and `DELTA` metrics with numeric values. The `value_type` of the output is `DOUBLE`.",
                    "Align the time series by returning the number of `True` values in each alignment period. This aligner is valid for `GAUGE` metrics with Boolean values. The `value_type` of the output is `INT64`.",
                    "Align the time series by returning the number of `False` values in each alignment period. This aligner is valid for `GAUGE` metrics with Boolean values. The `value_type` of the output is `INT64`.",
                    "Align the time series by returning the ratio of the number of `True` values to the total number of values in each alignment period. This aligner is valid for `GAUGE` metrics with Boolean values. The output value is in the range [0.0, 1.0] and has `value_type` `DOUBLE`.",
                    "Align the time series by using [percentile aggregation](https://en.wikipedia.org/wiki/Percentile). The resulting data point in each alignment period is the 99th percentile of all data points in the period. This aligner is valid for `GAUGE` and `DELTA` metrics with distribution values. The output is a `GAUGE` metric with `value_type` `DOUBLE`.",
                    "Align the time series by using [percentile aggregation](https://en.wikipedia.org/wiki/Percentile). The resulting data point in each alignment period is the 95th percentile of all data points in the period. This aligner is valid for `GAUGE` and `DELTA` metrics with distribution values. The output is a `GAUGE` metric with `value_type` `DOUBLE`.",
                    "Align the time series by using [percentile aggregation](https://en.wikipedia.org/wiki/Percentile). The resulting data point in each alignment period is the 50th percentile of all data points in the period. This aligner is valid for `GAUGE` and `DELTA` metrics with distribution values. The output is a `GAUGE` metric with `value_type` `DOUBLE`.",
                    "Align the time series by using [percentile aggregation](https://en.wikipedia.org/wiki/Percentile). The resulting data point in each alignment period is the 5th percentile of all data points in the period. This aligner is valid for `GAUGE` and `DELTA` metrics with distribution values. The output is a `GAUGE` metric with `value_type` `DOUBLE`.",
                    "Align and convert to a percentage change. This aligner is valid for `GAUGE` and `DELTA` metrics with numeric values. This alignment returns `((current - previous)/previous) * 100`, where the value of `previous` is determined based on the `alignment_period`. If the values of `current` and `previous` are both 0, then the returned value is 0. If only `previous` is 0, the returned value is infinity. A 10-minute moving mean is computed at each point of the alignment period prior to the above calculation to smooth the metric and prevent false positives from very short-lived spikes. The moving mean is only applicable for data whose values are `\u003e= 0`. Any values `\u003c 0` are treated as a missing datapoint, and are ignored. While `DELTA` metrics are accepted by this alignment, special care should be taken that the values for the metric will always be positive. The output is a `GAUGE` metric with `value_type` `DOUBLE`."
                  ],
                  "description": "An `Aligner` describes how to bring the data points in a single time series into temporal alignment. Except for `ALIGN_NONE`, all alignments cause all the data points in an `alignment_period` to be mathematically grouped together, resulting in a single data point for each `alignment_period` with end timestamp at the end of the period. Not all alignment operations may be applied to all time series. The valid choices depend on the `metric_kind` and `value_type` of the original time series. Alignment can change the `metric_kind` or the `value_type` of the time series. Time series data must be aligned in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified and not equal to `ALIGN_NONE` and `alignment_period` must be specified; otherwise, an error is returned.",
                  "enum": [
                    "ALIGN_NONE",
                    "ALIGN_DELTA",
                    "ALIGN_RATE",
                    "ALIGN_INTERPOLATE",
                    "ALIGN_NEXT_OLDER",
                    "ALIGN_MIN",
                    "ALIGN_MAX",
                    "ALIGN_MEAN",
                    "ALIGN_COUNT",
                    "ALIGN_SUM",
                    "ALIGN_STDDEV",
                    "ALIGN_COUNT_TRUE",
                    "ALIGN_COUNT_FALSE",
                    "ALIGN_FRACTION_TRUE",
                    "ALIGN_PERCENTILE_99",
                    "ALIGN_PERCENTILE_95",
                    "ALIGN_PERCENTILE_50",
                    "ALIGN_PERCENTILE_05",
                    "ALIGN_PERCENT_CHANGE"
                  ]
                },
                "secondaryAggregation.crossSeriesReducer": {
                  "enum": [
                    "REDUCE_NONE",
                    "REDUCE_MEAN",
                    "REDUCE_MIN",
                    "REDUCE_MAX",
                    "REDUCE_SUM",
                    "REDUCE_STDDEV",
                    "REDUCE_COUNT",
                    "REDUCE_COUNT_TRUE",
                    "REDUCE_COUNT_FALSE",
                    "REDUCE_FRACTION_TRUE",
                    "REDUCE_PERCENTILE_99",
                    "REDUCE_PERCENTILE_95",
                    "REDUCE_PERCENTILE_50",
                    "REDUCE_PERCENTILE_05"
                  ],
                  "description": "The reduction operation to be used to combine time series into a single time series, where the value of each data point in the resulting series is a function of all the already aligned values in the input time series. Not all reducer operations can be applied to all time series. The valid choices depend on the `metric_kind` and the `value_type` of the original time series. Reduction can yield a time series with a different `metric_kind` or `value_type` than the input time series. Time series data must first be aligned (see `per_series_aligner`) in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified, and must not be `ALIGN_NONE`. An `alignment_period` must also be specified; otherwise, an error is returned.",
                  "location": "query",
                  "enumDescriptions": [
                    "No cross-time series reduction. The output of the `Aligner` is returned.",
                    "Reduce by computing the mean value across time series for each alignment period. This reducer is valid for DELTA and GAUGE metrics with numeric or distribution values. The `value_type` of the output is DOUBLE.",
                    "Reduce by computing the minimum value across time series for each alignment period. This reducer is valid for `DELTA` and `GAUGE` metrics with numeric values. The `value_type` of the output is the same as the `value_type` of the input.",
                    "Reduce by computing the maximum value across time series for each alignment period. This reducer is valid for `DELTA` and `GAUGE` metrics with numeric values. The `value_type` of the output is the same as the `value_type` of the input.",
                    "Reduce by computing the sum across time series for each alignment period. This reducer is valid for `DELTA` and `GAUGE` metrics with numeric and distribution values. The `value_type` of the output is the same as the `value_type` of the input.",
                    "Reduce by computing the standard deviation across time series for each alignment period. This reducer is valid for `DELTA` and `GAUGE` metrics with numeric or distribution values. The `value_type` of the output is `DOUBLE`.",
                    "Reduce by computing the number of data points across time series for each alignment period. This reducer is valid for `DELTA` and `GAUGE` metrics of numeric, Boolean, distribution, and string `value_type`. The `value_type` of the output is `INT64`.",
                    "Reduce by computing the number of `True`-valued data points across time series for each alignment period. This reducer is valid for `DELTA` and `GAUGE` metrics of Boolean `value_type`. The `value_type` of the output is `INT64`.",
                    "Reduce by computing the number of `False`-valued data points across time series for each alignment period. This reducer is valid for `DELTA` and `GAUGE` metrics of Boolean `value_type`. The `value_type` of the output is `INT64`.",
                    "Reduce by computing the ratio of the number of `True`-valued data points to the total number of data points for each alignment period. This reducer is valid for `DELTA` and `GAUGE` metrics of Boolean `value_type`. The output value is in the range [0.0, 1.0] and has `value_type` `DOUBLE`.",
                    "Reduce by computing the [99th percentile](https://en.wikipedia.org/wiki/Percentile) of data points across time series for each alignment period. This reducer is valid for `GAUGE` and `DELTA` metrics of numeric and distribution type. The value of the output is `DOUBLE`.",
                    "Reduce by computing the [95th percentile](https://en.wikipedia.org/wiki/Percentile) of data points across time series for each alignment period. This reducer is valid for `GAUGE` and `DELTA` metrics of numeric and distribution type. The value of the output is `DOUBLE`.",
                    "Reduce by computing the [50th percentile](https://en.wikipedia.org/wiki/Percentile) of data points across time series for each alignment period. This reducer is valid for `GAUGE` and `DELTA` metrics of numeric and distribution type. The value of the output is `DOUBLE`.",
                    "Reduce by computing the [5th percentile](https://en.wikipedia.org/wiki/Percentile) of data points across time series for each alignment period. This reducer is valid for `GAUGE` and `DELTA` metrics of numeric and distribution type. The value of the output is `DOUBLE`."
                  ],
                  "type": "string"
                },
                "interval.startTime": {
                  "location": "query",
                  "format": "google-datetime",
                  "description": "Optional. The beginning of the time interval. The default value for the start time is the end time. The start time must not be later than the end time.",
                  "type": "string"
                },
                "aggregation.crossSeriesReducer": {
                  "location": "query",
                  "enumDescriptions": [
                    "No cross-time series reduction. The output of the `Aligner` is returned.",
                    "Reduce by computing the mean value across time series for each alignment period. This reducer is valid for DELTA and GAUGE metrics with numeric or distribution values. The `value_type` of the output is DOUBLE.",
                    "Reduce by computing the minimum value across time series for each alignment period. This reducer is valid for `DELTA` and `GAUGE` metrics with numeric values. The `value_type` of the output is the same as the `value_type` of the input.",
                    "Reduce by computing the maximum value across time series for each alignment period. This reducer is valid for `DELTA` and `GAUGE` metrics with numeric values. The `value_type` of the output is the same as the `value_type` of the input.",
                    "Reduce by computing the sum across time series for each alignment period. This reducer is valid for `DELTA` and `GAUGE` metrics with numeric and distribution values. The `value_type` of the output is the same as the `value_type` of the input.",
                    "Reduce by computing the standard deviation across time series for each alignment period. This reducer is valid for `DELTA` and `GAUGE` metrics with numeric or distribution values. The `value_type` of the output is `DOUBLE`.",
                    "Reduce by computing the number of data points across time series for each alignment period. This reducer is valid for `DELTA` and `GAUGE` metrics of numeric, Boolean, distribution, and string `value_type`. The `value_type` of the output is `INT64`.",
                    "Reduce by computing the number of `True`-valued data points across time series for each alignment period. This reducer is valid for `DELTA` and `GAUGE` metrics of Boolean `value_type`. The `value_type` of the output is `INT64`.",
                    "Reduce by computing the number of `False`-valued data points across time series for each alignment period. This reducer is valid for `DELTA` and `GAUGE` metrics of Boolean `value_type`. The `value_type` of the output is `INT64`.",
                    "Reduce by computing the ratio of the number of `True`-valued data points to the total number of data points for each alignment period. This reducer is valid for `DELTA` and `GAUGE` metrics of Boolean `value_type`. The output value is in the range [0.0, 1.0] and has `value_type` `DOUBLE`.",
                    "Reduce by computing the [99th percentile](https://en.wikipedia.org/wiki/Percentile) of data points across time series for each alignment period. This reducer is valid for `GAUGE` and `DELTA` metrics of numeric and distribution type. The value of the output is `DOUBLE`.",
                    "Reduce by computing the [95th percentile](https://en.wikipedia.org/wiki/Percentile) of data points across time series for each alignment period. This reducer is valid for `GAUGE` and `DELTA` metrics of numeric and distribution type. The value of the output is `DOUBLE`.",
                    "Reduce by computing the [50th percentile](https://en.wikipedia.org/wiki/Percentile) of data points across time series for each alignment period. This reducer is valid for `GAUGE` and `DELTA` metrics of numeric and distribution type. The value of the output is `DOUBLE`.",
                    "Reduce by computing the [5th percentile](https://en.wikipedia.org/wiki/Percentile) of data points across time series for each alignment period. This reducer is valid for `GAUGE` and `DELTA` metrics of numeric and distribution type. The value of the output is `DOUBLE`."
                  ],
                  "type": "string",
                  "enum": [
                    "REDUCE_NONE",
                    "REDUCE_MEAN",
                    "REDUCE_MIN",
                    "REDUCE_MAX",
                    "REDUCE_SUM",
                    "REDUCE_STDDEV",
                    "REDUCE_COUNT",
                    "REDUCE_COUNT_TRUE",
                    "REDUCE_COUNT_FALSE",
                    "REDUCE_FRACTION_TRUE",
                    "REDUCE_PERCENTILE_99",
                    "REDUCE_PERCENTILE_95",
                    "REDUCE_PERCENTILE_50",
                    "REDUCE_PERCENTILE_05"
                  ],
                  "description": "The reduction operation to be used to combine time series into a single time series, where the value of each data point in the resulting series is a function of all the already aligned values in the input time series. Not all reducer operations can be applied to all time series. The valid choices depend on the `metric_kind` and the `value_type` of the original time series. Reduction can yield a time series with a different `metric_kind` or `value_type` than the input time series. Time series data must first be aligned (see `per_series_aligner`) in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified, and must not be `ALIGN_NONE`. An `alignment_period` must also be specified; otherwise, an error is returned."
                },
                "pageSize": {
                  "format": "int32",
                  "location": "query",
                  "description": "A positive number that is the maximum number of results to return. If `page_size` is empty or more than 100,000 results, the effective `page_size` is 100,000 results. If `view` is set to `FULL`, this is the maximum number of `Points` returned. If `view` is set to `HEADERS`, this is the maximum number of `TimeSeries` returned.",
                  "type": "integer"
                },
                "orderBy": {
                  "description": "Unsupported: must be left blank. The points in each time series are currently returned in reverse time order (most recent to oldest).",
                  "type": "string",
                  "location": "query"
                },
                "filter": {
                  "location": "query",
                  "description": "Required. A [monitoring filter](https://documentation.s3ns.fr/monitoring/api/v3/filters) that specifies which time series should be returned. The filter must specify a single metric type, and can additionally specify metric labels and other information. For example: metric.type = \"compute.googleapis.com/instance/cpu/usage_time\" AND metric.labels.instance_name = \"my-instance-name\"",
                  "type": "string"
                },
                "secondaryAggregation.alignmentPeriod": {
                  "description": "The `alignment_period` specifies a time interval, in seconds, that is used to divide the data in all the time series into consistent blocks of time. This will be done before the per-series aligner can be applied to the data. The value must be at least 60 seconds. If a per-series aligner other than `ALIGN_NONE` is specified, this field is required or an error is returned. If no per-series aligner is specified, or the aligner `ALIGN_NONE` is specified, then this field is ignored. The maximum value of the `alignment_period` is 104 weeks (2 years) for charts, and 90,000 seconds (25 hours) for alerting policies.",
                  "type": "string",
                  "location": "query",
                  "format": "google-duration"
                },
                "aggregation.perSeriesAligner": {
                  "type": "string",
                  "location": "query",
                  "enumDescriptions": [
                    "No alignment. Raw data is returned. Not valid if cross-series reduction is requested. The `value_type` of the result is the same as the `value_type` of the input.",
                    "Align and convert to DELTA. The output is `delta = y1 - y0`. This alignment is valid for CUMULATIVE and `DELTA` metrics. If the selected alignment period results in periods with no data, then the aligned value for such a period is created by interpolation. The `value_type` of the aligned result is the same as the `value_type` of the input.",
                    "Align and convert to a rate. The result is computed as `rate = (y1 - y0)/(t1 - t0)`, or \"delta over time\". Think of this aligner as providing the slope of the line that passes through the value at the start and at the end of the `alignment_period`. This aligner is valid for `CUMULATIVE` and `DELTA` metrics with numeric values. If the selected alignment period results in periods with no data, then the aligned value for such a period is created by interpolation. The output is a `GAUGE` metric with `value_type` `DOUBLE`. If, by \"rate\", you mean \"percentage change\", see the `ALIGN_PERCENT_CHANGE` aligner instead.",
                    "Align by interpolating between adjacent points around the alignment period boundary. This aligner is valid for `GAUGE` metrics with numeric values. The `value_type` of the aligned result is the same as the `value_type` of the input.",
                    "Align by moving the most recent data point before the end of the alignment period to the boundary at the end of the alignment period. This aligner is valid for `GAUGE` metrics. The `value_type` of the aligned result is the same as the `value_type` of the input.",
                    "Align the time series by returning the minimum value in each alignment period. This aligner is valid for `GAUGE` and `DELTA` metrics with numeric values. The `value_type` of the aligned result is the same as the `value_type` of the input.",
                    "Align the time series by returning the maximum value in each alignment period. This aligner is valid for `GAUGE` and `DELTA` metrics with numeric values. The `value_type` of the aligned result is the same as the `value_type` of the input.",
                    "Align the time series by returning the mean value in each alignment period. This aligner is valid for `GAUGE` and `DELTA` metrics with numeric values. The `value_type` of the aligned result is `DOUBLE`.",
                    "Align the time series by returning the number of values in each alignment period. This aligner is valid for `GAUGE` and `DELTA` metrics with numeric or Boolean values. The `value_type` of the aligned result is `INT64`.",
                    "Align the time series by returning the sum of the values in each alignment period. This aligner is valid for `GAUGE` and `DELTA` metrics with numeric and distribution values. The `value_type` of the aligned result is the same as the `value_type` of the input.",
                    "Align the time series by returning the standard deviation of the values in each alignment period. This aligner is valid for `GAUGE` and `DELTA` metrics with numeric values. The `value_type` of the output is `DOUBLE`.",
                    "Align the time series by returning the number of `True` values in each alignment period. This aligner is valid for `GAUGE` metrics with Boolean values. The `value_type` of the output is `INT64`.",
                    "Align the time series by returning the number of `False` values in each alignment period. This aligner is valid for `GAUGE` metrics with Boolean values. The `value_type` of the output is `INT64`.",
                    "Align the time series by returning the ratio of the number of `True` values to the total number of values in each alignment period. This aligner is valid for `GAUGE` metrics with Boolean values. The output value is in the range [0.0, 1.0] and has `value_type` `DOUBLE`.",
                    "Align the time series by using [percentile aggregation](https://en.wikipedia.org/wiki/Percentile). The resulting data point in each alignment period is the 99th percentile of all data points in the period. This aligner is valid for `GAUGE` and `DELTA` metrics with distribution values. The output is a `GAUGE` metric with `value_type` `DOUBLE`.",
                    "Align the time series by using [percentile aggregation](https://en.wikipedia.org/wiki/Percentile). The resulting data point in each alignment period is the 95th percentile of all data points in the period. This aligner is valid for `GAUGE` and `DELTA` metrics with distribution values. The output is a `GAUGE` metric with `value_type` `DOUBLE`.",
                    "Align the time series by using [percentile aggregation](https://en.wikipedia.org/wiki/Percentile). The resulting data point in each alignment period is the 50th percentile of all data points in the period. This aligner is valid for `GAUGE` and `DELTA` metrics with distribution values. The output is a `GAUGE` metric with `value_type` `DOUBLE`.",
                    "Align the time series by using [percentile aggregation](https://en.wikipedia.org/wiki/Percentile). The resulting data point in each alignment period is the 5th percentile of all data points in the period. This aligner is valid for `GAUGE` and `DELTA` metrics with distribution values. The output is a `GAUGE` metric with `value_type` `DOUBLE`.",
                    "Align and convert to a percentage change. This aligner is valid for `GAUGE` and `DELTA` metrics with numeric values. This alignment returns `((current - previous)/previous) * 100`, where the value of `previous` is determined based on the `alignment_period`. If the values of `current` and `previous` are both 0, then the returned value is 0. If only `previous` is 0, the returned value is infinity. A 10-minute moving mean is computed at each point of the alignment period prior to the above calculation to smooth the metric and prevent false positives from very short-lived spikes. The moving mean is only applicable for data whose values are `\u003e= 0`. Any values `\u003c 0` are treated as a missing datapoint, and are ignored. While `DELTA` metrics are accepted by this alignment, special care should be taken that the values for the metric will always be positive. The output is a `GAUGE` metric with `value_type` `DOUBLE`."
                  ],
                  "description": "An `Aligner` describes how to bring the data points in a single time series into temporal alignment. Except for `ALIGN_NONE`, all alignments cause all the data points in an `alignment_period` to be mathematically grouped together, resulting in a single data point for each `alignment_period` with end timestamp at the end of the period. Not all alignment operations may be applied to all time series. The valid choices depend on the `metric_kind` and `value_type` of the original time series. Alignment can change the `metric_kind` or the `value_type` of the time series. Time series data must be aligned in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified and not equal to `ALIGN_NONE` and `alignment_period` must be specified; otherwise, an error is returned.",
                  "enum": [
                    "ALIGN_NONE",
                    "ALIGN_DELTA",
                    "ALIGN_RATE",
                    "ALIGN_INTERPOLATE",
                    "ALIGN_NEXT_OLDER",
                    "ALIGN_MIN",
                    "ALIGN_MAX",
                    "ALIGN_MEAN",
                    "ALIGN_COUNT",
                    "ALIGN_SUM",
                    "ALIGN_STDDEV",
                    "ALIGN_COUNT_TRUE",
                    "ALIGN_COUNT_FALSE",
                    "ALIGN_FRACTION_TRUE",
                    "ALIGN_PERCENTILE_99",
                    "ALIGN_PERCENTILE_95",
                    "ALIGN_PERCENTILE_50",
                    "ALIGN_PERCENTILE_05",
                    "ALIGN_PERCENT_CHANGE"
                  ]
                },
                "aggregation.groupByFields": {
                  "location": "query",
                  "repeated": true,
                  "description": "The set of fields to preserve when `cross_series_reducer` is specified. The `group_by_fields` determine how the time series are partitioned into subsets prior to applying the aggregation operation. Each subset contains time series that have the same value for each of the grouping fields. Each individual time series is a member of exactly one subset. The `cross_series_reducer` is applied to each subset of time series. It is not possible to reduce across different resource types, so this field implicitly contains `resource.type`. Fields not specified in `group_by_fields` are aggregated away. If `group_by_fields` is not specified and all the time series have the same resource type, then the time series are aggregated into a single output time series. If `cross_series_reducer` is not defined, this field is ignored.",
                  "type": "string"
                },
                "name": {
                  "pattern": "^folders/[^/]+$",
                  "description": "Required. The [project](https://documentation.s3ns.fr/monitoring/api/v3#project_name), organization or folder on which to execute the request. The format is: projects/[PROJECT_ID_OR_NUMBER] organizations/[ORGANIZATION_ID] folders/[FOLDER_ID]",
                  "type": "string",
                  "required": true,
                  "location": "path"
                }
              },
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform",
                "https://www.googleapis.com/auth/monitoring",
                "https://www.googleapis.com/auth/monitoring.read"
              ],
              "id": "monitoring.folders.timeSeries.list",
              "flatPath": "v3/folders/{foldersId}/timeSeries",
              "httpMethod": "GET",
              "response": {
                "$ref": "ListTimeSeriesResponse"
              }
            }
          }
        }
      }
    },
    "organizations": {
      "resources": {
        "timeSeries": {
          "methods": {
            "list": {
              "id": "monitoring.organizations.timeSeries.list",
              "flatPath": "v3/organizations/{organizationsId}/timeSeries",
              "httpMethod": "GET",
              "response": {
                "$ref": "ListTimeSeriesResponse"
              },
              "path": "v3/{+name}/timeSeries",
              "description": "Lists time series that match a filter.",
              "parameterOrder": [
                "name"
              ],
              "parameters": {
                "interval.endTime": {
                  "description": "Required. The end of the time interval.",
                  "type": "string",
                  "format": "google-datetime",
                  "location": "query"
                },
                "secondaryAggregation.perSeriesAligner": {
                  "enum": [
                    "ALIGN_NONE",
                    "ALIGN_DELTA",
                    "ALIGN_RATE",
                    "ALIGN_INTERPOLATE",
                    "ALIGN_NEXT_OLDER",
                    "ALIGN_MIN",
                    "ALIGN_MAX",
                    "ALIGN_MEAN",
                    "ALIGN_COUNT",
                    "ALIGN_SUM",
                    "ALIGN_STDDEV",
                    "ALIGN_COUNT_TRUE",
                    "ALIGN_COUNT_FALSE",
                    "ALIGN_FRACTION_TRUE",
                    "ALIGN_PERCENTILE_99",
                    "ALIGN_PERCENTILE_95",
                    "ALIGN_PERCENTILE_50",
                    "ALIGN_PERCENTILE_05",
                    "ALIGN_PERCENT_CHANGE"
                  ],
                  "description": "An `Aligner` describes how to bring the data points in a single time series into temporal alignment. Except for `ALIGN_NONE`, all alignments cause all the data points in an `alignment_period` to be mathematically grouped together, resulting in a single data point for each `alignment_period` with end timestamp at the end of the period. Not all alignment operations may be applied to all time series. The valid choices depend on the `metric_kind` and `value_type` of the original time series. Alignment can change the `metric_kind` or the `value_type` of the time series. Time series data must be aligned in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified and not equal to `ALIGN_NONE` and `alignment_period` must be specified; otherwise, an error is returned.",
                  "location": "query",
                  "enumDescriptions": [
                    "No alignment. Raw data is returned. Not valid if cross-series reduction is requested. The `value_type` of the result is the same as the `value_type` of the input.",
                    "Align and convert to DELTA. The output is `delta = y1 - y0`. This alignment is valid for CUMULATIVE and `DELTA` metrics. If the selected alignment period results in periods with no data, then the aligned value for such a period is created by interpolation. The `value_type` of the aligned result is the same as the `value_type` of the input.",
                    "Align and convert to a rate. The result is computed as `rate = (y1 - y0)/(t1 - t0)`, or \"delta over time\". Think of this aligner as providing the slope of the line that passes through the value at the start and at the end of the `alignment_period`. This aligner is valid for `CUMULATIVE` and `DELTA` metrics with numeric values. If the selected alignment period results in periods with no data, then the aligned value for such a period is created by interpolation. The output is a `GAUGE` metric with `value_type` `DOUBLE`. If, by \"rate\", you mean \"percentage change\", see the `ALIGN_PERCENT_CHANGE` aligner instead.",
                    "Align by interpolating between adjacent points around the alignment period boundary. This aligner is valid for `GAUGE` metrics with numeric values. The `value_type` of the aligned result is the same as the `value_type` of the input.",
                    "Align by moving the most recent data point before the end of the alignment period to the boundary at the end of the alignment period. This aligner is valid for `GAUGE` metrics. The `value_type` of the aligned result is the same as the `value_type` of the input.",
                    "Align the time series by returning the minimum value in each alignment period. This aligner is valid for `GAUGE` and `DELTA` metrics with numeric values. The `value_type` of the aligned result is the same as the `value_type` of the input.",
                    "Align the time series by returning the maximum value in each alignment period. This aligner is valid for `GAUGE` and `DELTA` metrics with numeric values. The `value_type` of the aligned result is the same as the `value_type` of the input.",
                    "Align the time series by returning the mean value in each alignment period. This aligner is valid for `GAUGE` and `DELTA` metrics with numeric values. The `value_type` of the aligned result is `DOUBLE`.",
                    "Align the time series by returning the number of values in each alignment period. This aligner is valid for `GAUGE` and `DELTA` metrics with numeric or Boolean values. The `value_type` of the aligned result is `INT64`.",
                    "Align the time series by returning the sum of the values in each alignment period. This aligner is valid for `GAUGE` and `DELTA` metrics with numeric and distribution values. The `value_type` of the aligned result is the same as the `value_type` of the input.",
                    "Align the time series by returning the standard deviation of the values in each alignment period. This aligner is valid for `GAUGE` and `DELTA` metrics with numeric values. The `value_type` of the output is `DOUBLE`.",
                    "Align the time series by returning the number of `True` values in each alignment period. This aligner is valid for `GAUGE` metrics with Boolean values. The `value_type` of the output is `INT64`.",
                    "Align the time series by returning the number of `False` values in each alignment period. This aligner is valid for `GAUGE` metrics with Boolean values. The `value_type` of the output is `INT64`.",
                    "Align the time series by returning the ratio of the number of `True` values to the total number of values in each alignment period. This aligner is valid for `GAUGE` metrics with Boolean values. The output value is in the range [0.0, 1.0] and has `value_type` `DOUBLE`.",
                    "Align the time series by using [percentile aggregation](https://en.wikipedia.org/wiki/Percentile). The resulting data point in each alignment period is the 99th percentile of all data points in the period. This aligner is valid for `GAUGE` and `DELTA` metrics with distribution values. The output is a `GAUGE` metric with `value_type` `DOUBLE`.",
                    "Align the time series by using [percentile aggregation](https://en.wikipedia.org/wiki/Percentile). The resulting data point in each alignment period is the 95th percentile of all data points in the period. This aligner is valid for `GAUGE` and `DELTA` metrics with distribution values. The output is a `GAUGE` metric with `value_type` `DOUBLE`.",
                    "Align the time series by using [percentile aggregation](https://en.wikipedia.org/wiki/Percentile). The resulting data point in each alignment period is the 50th percentile of all data points in the period. This aligner is valid for `GAUGE` and `DELTA` metrics with distribution values. The output is a `GAUGE` metric with `value_type` `DOUBLE`.",
                    "Align the time series by using [percentile aggregation](https://en.wikipedia.org/wiki/Percentile). The resulting data point in each alignment period is the 5th percentile of all data points in the period. This aligner is valid for `GAUGE` and `DELTA` metrics with distribution values. The output is a `GAUGE` metric with `value_type` `DOUBLE`.",
                    "Align and convert to a percentage change. This aligner is valid for `GAUGE` and `DELTA` metrics with numeric values. This alignment returns `((current - previous)/previous) * 100`, where the value of `previous` is determined based on the `alignment_period`. If the values of `current` and `previous` are both 0, then the returned value is 0. If only `previous` is 0, the returned value is infinity. A 10-minute moving mean is computed at each point of the alignment period prior to the above calculation to smooth the metric and prevent false positives from very short-lived spikes. The moving mean is only applicable for data whose values are `\u003e= 0`. Any values `\u003c 0` are treated as a missing datapoint, and are ignored. While `DELTA` metrics are accepted by this alignment, special care should be taken that the values for the metric will always be positive. The output is a `GAUGE` metric with `value_type` `DOUBLE`."
                  ],
                  "type": "string"
                },
                "aggregation.crossSeriesReducer": {
                  "description": "The reduction operation to be used to combine time series into a single time series, where the value of each data point in the resulting series is a function of all the already aligned values in the input time series. Not all reducer operations can be applied to all time series. The valid choices depend on the `metric_kind` and the `value_type` of the original time series. Reduction can yield a time series with a different `metric_kind` or `value_type` than the input time series. Time series data must first be aligned (see `per_series_aligner`) in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified, and must not be `ALIGN_NONE`. An `alignment_period` must also be specified; otherwise, an error is returned.",
                  "enum": [
                    "REDUCE_NONE",
                    "REDUCE_MEAN",
                    "REDUCE_MIN",
                    "REDUCE_MAX",
                    "REDUCE_SUM",
                    "REDUCE_STDDEV",
                    "REDUCE_COUNT",
                    "REDUCE_COUNT_TRUE",
                    "REDUCE_COUNT_FALSE",
                    "REDUCE_FRACTION_TRUE",
                    "REDUCE_PERCENTILE_99",
                    "REDUCE_PERCENTILE_95",
                    "REDUCE_PERCENTILE_50",
                    "REDUCE_PERCENTILE_05"
                  ],
                  "type": "string",
                  "location": "query",
                  "enumDescriptions": [
                    "No cross-time series reduction. The output of the `Aligner` is returned.",
                    "Reduce by computing the mean value across time series for each alignment period. This reducer is valid for DELTA and GAUGE metrics with numeric or distribution values. The `value_type` of the output is DOUBLE.",
                    "Reduce by computing the minimum value across time series for each alignment period. This reducer is valid for `DELTA` and `GAUGE` metrics with numeric values. The `value_type` of the output is the same as the `value_type` of the input.",
                    "Reduce by computing the maximum value across time series for each alignment period. This reducer is valid for `DELTA` and `GAUGE` metrics with numeric values. The `value_type` of the output is the same as the `value_type` of the input.",
                    "Reduce by computing the sum across time series for each alignment period. This reducer is valid for `DELTA` and `GAUGE` metrics with numeric and distribution values. The `value_type` of the output is the same as the `value_type` of the input.",
                    "Reduce by computing the standard deviation across time series for each alignment period. This reducer is valid for `DELTA` and `GAUGE` metrics with numeric or distribution values. The `value_type` of the output is `DOUBLE`.",
                    "Reduce by computing the number of data points across time series for each alignment period. This reducer is valid for `DELTA` and `GAUGE` metrics of numeric, Boolean, distribution, and string `value_type`. The `value_type` of the output is `INT64`.",
                    "Reduce by computing the number of `True`-valued data points across time series for each alignment period. This reducer is valid for `DELTA` and `GAUGE` metrics of Boolean `value_type`. The `value_type` of the output is `INT64`.",
                    "Reduce by computing the number of `False`-valued data points across time series for each alignment period. This reducer is valid for `DELTA` and `GAUGE` metrics of Boolean `value_type`. The `value_type` of the output is `INT64`.",
                    "Reduce by computing the ratio of the number of `True`-valued data points to the total number of data points for each alignment period. This reducer is valid for `DELTA` and `GAUGE` metrics of Boolean `value_type`. The output value is in the range [0.0, 1.0] and has `value_type` `DOUBLE`.",
                    "Reduce by computing the [99th percentile](https://en.wikipedia.org/wiki/Percentile) of data points across time series for each alignment period. This reducer is valid for `GAUGE` and `DELTA` metrics of numeric and distribution type. The value of the output is `DOUBLE`.",
                    "Reduce by computing the [95th percentile](https://en.wikipedia.org/wiki/Percentile) of data points across time series for each alignment period. This reducer is valid for `GAUGE` and `DELTA` metrics of numeric and distribution type. The value of the output is `DOUBLE`.",
                    "Reduce by computing the [50th percentile](https://en.wikipedia.org/wiki/Percentile) of data points across time series for each alignment period. This reducer is valid for `GAUGE` and `DELTA` metrics of numeric and distribution type. The value of the output is `DOUBLE`.",
                    "Reduce by computing the [5th percentile](https://en.wikipedia.org/wiki/Percentile) of data points across time series for each alignment period. This reducer is valid for `GAUGE` and `DELTA` metrics of numeric and distribution type. The value of the output is `DOUBLE`."
                  ]
                },
                "interval.startTime": {
                  "description": "Optional. The beginning of the time interval. The default value for the start time is the end time. The start time must not be later than the end time.",
                  "type": "string",
                  "location": "query",
                  "format": "google-datetime"
                },
                "secondaryAggregation.crossSeriesReducer": {
                  "location": "query",
                  "enumDescriptions": [
                    "No cross-time series reduction. The output of the `Aligner` is returned.",
                    "Reduce by computing the mean value across time series for each alignment period. This reducer is valid for DELTA and GAUGE metrics with numeric or distribution values. The `value_type` of the output is DOUBLE.",
                    "Reduce by computing the minimum value across time series for each alignment period. This reducer is valid for `DELTA` and `GAUGE` metrics with numeric values. The `value_type` of the output is the same as the `value_type` of the input.",
                    "Reduce by computing the maximum value across time series for each alignment period. This reducer is valid for `DELTA` and `GAUGE` metrics with numeric values. The `value_type` of the output is the same as the `value_type` of the input.",
                    "Reduce by computing the sum across time series for each alignment period. This reducer is valid for `DELTA` and `GAUGE` metrics with numeric and distribution values. The `value_type` of the output is the same as the `value_type` of the input.",
                    "Reduce by computing the standard deviation across time series for each alignment period. This reducer is valid for `DELTA` and `GAUGE` metrics with numeric or distribution values. The `value_type` of the output is `DOUBLE`.",
                    "Reduce by computing the number of data points across time series for each alignment period. This reducer is valid for `DELTA` and `GAUGE` metrics of numeric, Boolean, distribution, and string `value_type`. The `value_type` of the output is `INT64`.",
                    "Reduce by computing the number of `True`-valued data points across time series for each alignment period. This reducer is valid for `DELTA` and `GAUGE` metrics of Boolean `value_type`. The `value_type` of the output is `INT64`.",
                    "Reduce by computing the number of `False`-valued data points across time series for each alignment period. This reducer is valid for `DELTA` and `GAUGE` metrics of Boolean `value_type`. The `value_type` of the output is `INT64`.",
                    "Reduce by computing the ratio of the number of `True`-valued data points to the total number of data points for each alignment period. This reducer is valid for `DELTA` and `GAUGE` metrics of Boolean `value_type`. The output value is in the range [0.0, 1.0] and has `value_type` `DOUBLE`.",
                    "Reduce by computing the [99th percentile](https://en.wikipedia.org/wiki/Percentile) of data points across time series for each alignment period. This reducer is valid for `GAUGE` and `DELTA` metrics of numeric and distribution type. The value of the output is `DOUBLE`.",
                    "Reduce by computing the [95th percentile](https://en.wikipedia.org/wiki/Percentile) of data points across time series for each alignment period. This reducer is valid for `GAUGE` and `DELTA` metrics of numeric and distribution type. The value of the output is `DOUBLE`.",
                    "Reduce by computing the [50th percentile](https://en.wikipedia.org/wiki/Percentile) of data points across time series for each alignment period. This reducer is valid for `GAUGE` and `DELTA` metrics of numeric and distribution type. The value of the output is `DOUBLE`.",
                    "Reduce by computing the [5th percentile](https://en.wikipedia.org/wiki/Percentile) of data points across time series for each alignment period. This reducer is valid for `GAUGE` and `DELTA` metrics of numeric and distribution type. The value of the output is `DOUBLE`."
                  ],
                  "type": "string",
                  "enum": [
                    "REDUCE_NONE",
                    "REDUCE_MEAN",
                    "REDUCE_MIN",
                    "REDUCE_MAX",
                    "REDUCE_SUM",
                    "REDUCE_STDDEV",
                    "REDUCE_COUNT",
                    "REDUCE_COUNT_TRUE",
                    "REDUCE_COUNT_FALSE",
                    "REDUCE_FRACTION_TRUE",
                    "REDUCE_PERCENTILE_99",
                    "REDUCE_PERCENTILE_95",
                    "REDUCE_PERCENTILE_50",
                    "REDUCE_PERCENTILE_05"
                  ],
                  "description": "The reduction operation to be used to combine time series into a single time series, where the value of each data point in the resulting series is a function of all the already aligned values in the input time series. Not all reducer operations can be applied to all time series. The valid choices depend on the `metric_kind` and the `value_type` of the original time series. Reduction can yield a time series with a different `metric_kind` or `value_type` than the input time series. Time series data must first be aligned (see `per_series_aligner`) in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified, and must not be `ALIGN_NONE`. An `alignment_period` must also be specified; otherwise, an error is returned."
                },
                "pageToken": {
                  "location": "query",
                  "description": "If this field is not empty then it must contain the `nextPageToken` value returned by a previous call to this method. Using this field causes the method to return additional results from the previous method call.",
                  "type": "string"
                },
                "view": {
                  "type": "string",
                  "location": "query",
                  "enumDescriptions": [
                    "Returns the identity of the metric(s), the time series, and the time series data.",
                    "Returns the identity of the metric and the time series resource, but not the time series data."
                  ],
                  "description": "Required. Specifies which information is returned about the time series.",
                  "enum": [
                    "FULL",
                    "HEADERS"
                  ]
                },
                "secondaryAggregation.groupByFields": {
                  "description": "The set of fields to preserve when `cross_series_reducer` is specified. The `group_by_fields` determine how the time series are partitioned into subsets prior to applying the aggregation operation. Each subset contains time series that have the same value for each of the grouping fields. Each individual time series is a member of exactly one subset. The `cross_series_reducer` is applied to each subset of time series. It is not possible to reduce across different resource types, so this field implicitly contains `resource.type`. Fields not specified in `group_by_fields` are aggregated away. If `group_by_fields` is not specified and all the time series have the same resource type, then the time series are aggregated into a single output time series. If `cross_series_reducer` is not defined, this field is ignored.",
                  "type": "string",
                  "location": "query",
                  "repeated": true
                },
                "aggregation.alignmentPeriod": {
                  "location": "query",
                  "format": "google-duration",
                  "description": "The `alignment_period` specifies a time interval, in seconds, that is used to divide the data in all the time series into consistent blocks of time. This will be done before the per-series aligner can be applied to the data. The value must be at least 60 seconds. If a per-series aligner other than `ALIGN_NONE` is specified, this field is required or an error is returned. If no per-series aligner is specified, or the aligner `ALIGN_NONE` is specified, then this field is ignored. The maximum value of the `alignment_period` is 104 weeks (2 years) for charts, and 90,000 seconds (25 hours) for alerting policies.",
                  "type": "string"
                },
                "aggregation.perSeriesAligner": {
                  "description": "An `Aligner` describes how to bring the data points in a single time series into temporal alignment. Except for `ALIGN_NONE`, all alignments cause all the data points in an `alignment_period` to be mathematically grouped together, resulting in a single data point for each `alignment_period` with end timestamp at the end of the period. Not all alignment operations may be applied to all time series. The valid choices depend on the `metric_kind` and `value_type` of the original time series. Alignment can change the `metric_kind` or the `value_type` of the time series. Time series data must be aligned in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified and not equal to `ALIGN_NONE` and `alignment_period` must be specified; otherwise, an error is returned.",
                  "enum": [
                    "ALIGN_NONE",
                    "ALIGN_DELTA",
                    "ALIGN_RATE",
                    "ALIGN_INTERPOLATE",
                    "ALIGN_NEXT_OLDER",
                    "ALIGN_MIN",
                    "ALIGN_MAX",
                    "ALIGN_MEAN",
                    "ALIGN_COUNT",
                    "ALIGN_SUM",
                    "ALIGN_STDDEV",
                    "ALIGN_COUNT_TRUE",
                    "ALIGN_COUNT_FALSE",
                    "ALIGN_FRACTION_TRUE",
                    "ALIGN_PERCENTILE_99",
                    "ALIGN_PERCENTILE_95",
                    "ALIGN_PERCENTILE_50",
                    "ALIGN_PERCENTILE_05",
                    "ALIGN_PERCENT_CHANGE"
                  ],
                  "type": "string",
                  "location": "query",
                  "enumDescriptions": [
                    "No alignment. Raw data is returned. Not valid if cross-series reduction is requested. The `value_type` of the result is the same as the `value_type` of the input.",
                    "Align and convert to DELTA. The output is `delta = y1 - y0`. This alignment is valid for CUMULATIVE and `DELTA` metrics. If the selected alignment period results in periods with no data, then the aligned value for such a period is created by interpolation. The `value_type` of the aligned result is the same as the `value_type` of the input.",
                    "Align and convert to a rate. The result is computed as `rate = (y1 - y0)/(t1 - t0)`, or \"delta over time\". Think of this aligner as providing the slope of the line that passes through the value at the start and at the end of the `alignment_period`. This aligner is valid for `CUMULATIVE` and `DELTA` metrics with numeric values. If the selected alignment period results in periods with no data, then the aligned value for such a period is created by interpolation. The output is a `GAUGE` metric with `value_type` `DOUBLE`. If, by \"rate\", you mean \"percentage change\", see the `ALIGN_PERCENT_CHANGE` aligner instead.",
                    "Align by interpolating between adjacent points around the alignment period boundary. This aligner is valid for `GAUGE` metrics with numeric values. The `value_type` of the aligned result is the same as the `value_type` of the input.",
                    "Align by moving the most recent data point before the end of the alignment period to the boundary at the end of the alignment period. This aligner is valid for `GAUGE` metrics. The `value_type` of the aligned result is the same as the `value_type` of the input.",
                    "Align the time series by returning the minimum value in each alignment period. This aligner is valid for `GAUGE` and `DELTA` metrics with numeric values. The `value_type` of the aligned result is the same as the `value_type` of the input.",
                    "Align the time series by returning the maximum value in each alignment period. This aligner is valid for `GAUGE` and `DELTA` metrics with numeric values. The `value_type` of the aligned result is the same as the `value_type` of the input.",
                    "Align the time series by returning the mean value in each alignment period. This aligner is valid for `GAUGE` and `DELTA` metrics with numeric values. The `value_type` of the aligned result is `DOUBLE`.",
                    "Align the time series by returning the number of values in each alignment period. This aligner is valid for `GAUGE` and `DELTA` metrics with numeric or Boolean values. The `value_type` of the aligned result is `INT64`.",
                    "Align the time series by returning the sum of the values in each alignment period. This aligner is valid for `GAUGE` and `DELTA` metrics with numeric and distribution values. The `value_type` of the aligned result is the same as the `value_type` of the input.",
                    "Align the time series by returning the standard deviation of the values in each alignment period. This aligner is valid for `GAUGE` and `DELTA` metrics with numeric values. The `value_type` of the output is `DOUBLE`.",
                    "Align the time series by returning the number of `True` values in each alignment period. This aligner is valid for `GAUGE` metrics with Boolean values. The `value_type` of the output is `INT64`.",
                    "Align the time series by returning the number of `False` values in each alignment period. This aligner is valid for `GAUGE` metrics with Boolean values. The `value_type` of the output is `INT64`.",
                    "Align the time series by returning the ratio of the number of `True` values to the total number of values in each alignment period. This aligner is valid for `GAUGE` metrics with Boolean values. The output value is in the range [0.0, 1.0] and has `value_type` `DOUBLE`.",
                    "Align the time series by using [percentile aggregation](https://en.wikipedia.org/wiki/Percentile). The resulting data point in each alignment period is the 99th percentile of all data points in the period. This aligner is valid for `GAUGE` and `DELTA` metrics with distribution values. The output is a `GAUGE` metric with `value_type` `DOUBLE`.",
                    "Align the time series by using [percentile aggregation](https://en.wikipedia.org/wiki/Percentile). The resulting data point in each alignment period is the 95th percentile of all data points in the period. This aligner is valid for `GAUGE` and `DELTA` metrics with distribution values. The output is a `GAUGE` metric with `value_type` `DOUBLE`.",
                    "Align the time series by using [percentile aggregation](https://en.wikipedia.org/wiki/Percentile). The resulting data point in each alignment period is the 50th percentile of all data points in the period. This aligner is valid for `GAUGE` and `DELTA` metrics with distribution values. The output is a `GAUGE` metric with `value_type` `DOUBLE`.",
                    "Align the time series by using [percentile aggregation](https://en.wikipedia.org/wiki/Percentile). The resulting data point in each alignment period is the 5th percentile of all data points in the period. This aligner is valid for `GAUGE` and `DELTA` metrics with distribution values. The output is a `GAUGE` metric with `value_type` `DOUBLE`.",
                    "Align and convert to a percentage change. This aligner is valid for `GAUGE` and `DELTA` metrics with numeric values. This alignment returns `((current - previous)/previous) * 100`, where the value of `previous` is determined based on the `alignment_period`. If the values of `current` and `previous` are both 0, then the returned value is 0. If only `previous` is 0, the returned value is infinity. A 10-minute moving mean is computed at each point of the alignment period prior to the above calculation to smooth the metric and prevent false positives from very short-lived spikes. The moving mean is only applicable for data whose values are `\u003e= 0`. Any values `\u003c 0` are treated as a missing datapoint, and are ignored. While `DELTA` metrics are accepted by this alignment, special care should be taken that the values for the metric will always be positive. The output is a `GAUGE` metric with `value_type` `DOUBLE`."
                  ]
                },
                "aggregation.groupByFields": {
                  "description": "The set of fields to preserve when `cross_series_reducer` is specified. The `group_by_fields` determine how the time series are partitioned into subsets prior to applying the aggregation operation. Each subset contains time series that have the same value for each of the grouping fields. Each individual time series is a member of exactly one subset. The `cross_series_reducer` is applied to each subset of time series. It is not possible to reduce across different resource types, so this field implicitly contains `resource.type`. Fields not specified in `group_by_fields` are aggregated away. If `group_by_fields` is not specified and all the time series have the same resource type, then the time series are aggregated into a single output time series. If `cross_series_reducer` is not defined, this field is ignored.",
                  "type": "string",
                  "location": "query",
                  "repeated": true
                },
                "name": {
                  "pattern": "^organizations/[^/]+$",
                  "description": "Required. The [project](https://documentation.s3ns.fr/monitoring/api/v3#project_name), organization or folder on which to execute the request. The format is: projects/[PROJECT_ID_OR_NUMBER] organizations/[ORGANIZATION_ID] folders/[FOLDER_ID]",
                  "type": "string",
                  "required": true,
                  "location": "path"
                },
                "pageSize": {
                  "format": "int32",
                  "location": "query",
                  "description": "A positive number that is the maximum number of results to return. If `page_size` is empty or more than 100,000 results, the effective `page_size` is 100,000 results. If `view` is set to `FULL`, this is the maximum number of `Points` returned. If `view` is set to `HEADERS`, this is the maximum number of `TimeSeries` returned.",
                  "type": "integer"
                },
                "filter": {
                  "description": "Required. A [monitoring filter](https://documentation.s3ns.fr/monitoring/api/v3/filters) that specifies which time series should be returned. The filter must specify a single metric type, and can additionally specify metric labels and other information. For example: metric.type = \"compute.googleapis.com/instance/cpu/usage_time\" AND metric.labels.instance_name = \"my-instance-name\"",
                  "type": "string",
                  "location": "query"
                },
                "secondaryAggregation.alignmentPeriod": {
                  "description": "The `alignment_period` specifies a time interval, in seconds, that is used to divide the data in all the time series into consistent blocks of time. This will be done before the per-series aligner can be applied to the data. The value must be at least 60 seconds. If a per-series aligner other than `ALIGN_NONE` is specified, this field is required or an error is returned. If no per-series aligner is specified, or the aligner `ALIGN_NONE` is specified, then this field is ignored. The maximum value of the `alignment_period` is 104 weeks (2 years) for charts, and 90,000 seconds (25 hours) for alerting policies.",
                  "type": "string",
                  "format": "google-duration",
                  "location": "query"
                },
                "orderBy": {
                  "location": "query",
                  "description": "Unsupported: must be left blank. The points in each time series are currently returned in reverse time order (most recent to oldest).",
                  "type": "string"
                }
              },
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform",
                "https://www.googleapis.com/auth/monitoring",
                "https://www.googleapis.com/auth/monitoring.read"
              ]
            }
          }
        }
      }
    },
    "projects": {
      "resources": {
        "metricDescriptors": {
          "methods": {
            "list": {
              "id": "monitoring.projects.metricDescriptors.list",
              "flatPath": "v3/projects/{projectsId}/metricDescriptors",
              "httpMethod": "GET",
              "response": {
                "$ref": "ListMetricDescriptorsResponse"
              },
              "parameterOrder": [
                "name"
              ],
              "parameters": {
                "name": {
                  "description": "Required. The [project](https://documentation.s3ns.fr/monitoring/api/v3#project_name) on which to execute the request. The format is: projects/[PROJECT_ID_OR_NUMBER]",
                  "pattern": "^projects/[^/]+$",
                  "location": "path",
                  "required": true,
                  "type": "string"
                },
                "filter": {
                  "location": "query",
                  "description": "Optional. If this field is empty, all custom and system-defined metric descriptors are returned. Otherwise, the [filter](https://documentation.s3ns.fr/monitoring/api/v3/filters) specifies which metric descriptors are to be returned. For example, the following filter matches all [custom metrics](https://documentation.s3ns.fr/monitoring/custom-metrics): metric.type = starts_with(\"custom.googleapis.com/\")",
                  "type": "string"
                },
                "pageSize": {
                  "format": "int32",
                  "location": "query",
                  "description": "Optional. A positive number that is the maximum number of results to return. The default and maximum value is 10,000. If a page_size \u003c= 0 or \u003e 10,000 is submitted, will instead return a maximum of 10,000 results.",
                  "type": "integer"
                },
                "pageToken": {
                  "description": "Optional. If this field is not empty then it must contain the `nextPageToken` value returned by a previous call to this method. Using this field causes the method to return additional results from the previous method call.",
                  "type": "string",
                  "location": "query"
                },
                "activeOnly": {
                  "description": "Optional. If true, only metrics and monitored resource types that have recent data (within roughly 25 hours) will be included in the response. - If a metric descriptor enumerates monitored resource types, only the monitored resource types for which the metric type has recent data will be included in the returned metric descriptor, and if none of them have recent data, the metric descriptor will not be returned. - If a metric descriptor does not enumerate the compatible monitored resource types, it will be returned only if the metric type has recent data for some monitored resource type. The returned descriptor will not enumerate any monitored resource types.",
                  "type": "boolean",
                  "location": "query"
                }
              },
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform",
                "https://www.googleapis.com/auth/monitoring",
                "https://www.googleapis.com/auth/monitoring.read",
                "https://www.googleapis.com/auth/monitoring.write"
              ],
              "path": "v3/{+name}/metricDescriptors",
              "description": "Lists metric descriptors that match a filter."
            },
            "delete": {
              "response": {
                "$ref": "Empty"
              },
              "httpMethod": "DELETE",
              "flatPath": "v3/projects/{projectsId}/metricDescriptors/{metricDescriptorsId}",
              "id": "monitoring.projects.metricDescriptors.delete",
              "parameters": {
                "name": {
                  "type": "string",
                  "location": "path",
                  "required": true,
                  "description": "Required. The metric descriptor on which to execute the request. The format is: projects/[PROJECT_ID_OR_NUMBER]/metricDescriptors/[METRIC_ID] An example of `[METRIC_ID]` is: `\"custom.googleapis.com/my_test_metric\"`.",
                  "pattern": "^projects/[^/]+/metricDescriptors/.*$"
                }
              },
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform",
                "https://www.googleapis.com/auth/monitoring"
              ],
              "parameterOrder": [
                "name"
              ],
              "path": "v3/{+name}",
              "description": "Deletes a metric descriptor. Only user-created [custom metrics](https://cloud.google.com/monitoring/custom-metrics) can be deleted."
            },
            "get": {
              "parameters": {
                "name": {
                  "pattern": "^projects/[^/]+/metricDescriptors/.*$",
                  "description": "Required. The metric descriptor on which to execute the request. The format is: projects/[PROJECT_ID_OR_NUMBER]/metricDescriptors/[METRIC_ID] An example value of `[METRIC_ID]` is `\"compute.googleapis.com/instance/disk/read_bytes_count\"`.",
                  "type": "string",
                  "required": true,
                  "location": "path"
                }
              },
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform",
                "https://www.googleapis.com/auth/monitoring",
                "https://www.googleapis.com/auth/monitoring.read",
                "https://www.googleapis.com/auth/monitoring.write"
              ],
              "parameterOrder": [
                "name"
              ],
              "path": "v3/{+name}",
              "description": "Gets a single metric descriptor.",
              "httpMethod": "GET",
              "response": {
                "$ref": "MetricDescriptor"
              },
              "id": "monitoring.projects.metricDescriptors.get",
              "flatPath": "v3/projects/{projectsId}/metricDescriptors/{metricDescriptorsId}"
            },
            "create": {
              "path": "v3/{+name}/metricDescriptors",
              "description": "Creates a new metric descriptor. The creation is executed asynchronously. User-created metric descriptors define [custom metrics](https://cloud.google.com/monitoring/custom-metrics). The metric descriptor is updated if it already exists, except that metric labels are never removed.",
              "parameters": {
                "name": {
                  "location": "path",
                  "required": true,
                  "type": "string",
                  "description": "Required. The [project](https://documentation.s3ns.fr/monitoring/api/v3#project_name) on which to execute the request. The format is: 4 projects/[PROJECT_ID_OR_NUMBER]",
                  "pattern": "^projects/[^/]+$"
                }
              },
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform",
                "https://www.googleapis.com/auth/monitoring",
                "https://www.googleapis.com/auth/monitoring.write"
              ],
              "parameterOrder": [
                "name"
              ],
              "httpMethod": "POST",
              "response": {
                "$ref": "MetricDescriptor"
              },
              "id": "monitoring.projects.metricDescriptors.create",
              "request": {
                "$ref": "MetricDescriptor"
              },
              "flatPath": "v3/projects/{projectsId}/metricDescriptors"
            }
          }
        },
        "monitoredResourceDescriptors": {
          "methods": {
            "list": {
              "flatPath": "v3/projects/{projectsId}/monitoredResourceDescriptors",
              "id": "monitoring.projects.monitoredResourceDescriptors.list",
              "response": {
                "$ref": "ListMonitoredResourceDescriptorsResponse"
              },
              "httpMethod": "GET",
              "parameterOrder": [
                "name"
              ],
              "parameters": {
                "name": {
                  "pattern": "^projects/[^/]+$",
                  "description": "Required. The [project](https://documentation.s3ns.fr/monitoring/api/v3#project_name) on which to execute the request. The format is: projects/[PROJECT_ID_OR_NUMBER]",
                  "type": "string",
                  "required": true,
                  "location": "path"
                },
                "filter": {
                  "location": "query",
                  "description": "An optional [filter](https://documentation.s3ns.fr/monitoring/api/v3/filters) describing the descriptors to be returned. The filter can reference the descriptor's type and labels. For example, the following filter returns only Cloud de Confiance Compute Engine descriptors that have an `id` label: resource.type = starts_with(\"gce_\") AND resource.label:id",
                  "type": "string"
                },
                "pageSize": {
                  "format": "int32",
                  "location": "query",
                  "description": "A positive number that is the maximum number of results to return.",
                  "type": "integer"
                },
                "pageToken": {
                  "location": "query",
                  "description": "If this field is not empty then it must contain the `nextPageToken` value returned by a previous call to this method. Using this field causes the method to return additional results from the previous method call.",
                  "type": "string"
                }
              },
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform",
                "https://www.googleapis.com/auth/monitoring",
                "https://www.googleapis.com/auth/monitoring.read",
                "https://www.googleapis.com/auth/monitoring.write"
              ],
              "path": "v3/{+name}/monitoredResourceDescriptors",
              "description": "Lists monitored resource descriptors that match a filter."
            },
            "get": {
              "id": "monitoring.projects.monitoredResourceDescriptors.get",
              "flatPath": "v3/projects/{projectsId}/monitoredResourceDescriptors/{monitoredResourceDescriptorsId}",
              "httpMethod": "GET",
              "response": {
                "$ref": "MonitoredResourceDescriptor"
              },
              "path": "v3/{+name}",
              "description": "Gets a single monitored resource descriptor.",
              "parameterOrder": [
                "name"
              ],
              "parameters": {
                "name": {
                  "location": "path",
                  "required": true,
                  "type": "string",
                  "description": "Required. The monitored resource descriptor to get. The format is: projects/[PROJECT_ID_OR_NUMBER]/monitoredResourceDescriptors/[RESOURCE_TYPE] The `[RESOURCE_TYPE]` is a predefined type, such as `cloudsql_database`.",
                  "pattern": "^projects/[^/]+/monitoredResourceDescriptors/.*$"
                }
              },
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform",
                "https://www.googleapis.com/auth/monitoring",
                "https://www.googleapis.com/auth/monitoring.read",
                "https://www.googleapis.com/auth/monitoring.write"
              ]
            }
          }
        },
        "timeSeries": {
          "methods": {
            "create": {
              "path": "v3/{+name}/timeSeries",
              "description": "Creates or adds data to one or more time series. The response is empty if all time series in the request were written. If any time series could not be written, a corresponding failure message is included in the error response. This method does not support [resource locations constraint of an organization policy](https://documentation.s3ns.fr/resource-manager/docs/organization-policy/defining-locations#setting_the_organization_policy).",
              "parameters": {
                "name": {
                  "description": "Required. The [project](https://documentation.s3ns.fr/monitoring/api/v3#project_name) on which to execute the request. The format is: projects/[PROJECT_ID_OR_NUMBER]",
                  "pattern": "^projects/[^/]+$",
                  "type": "string",
                  "location": "path",
                  "required": true
                }
              },
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform",
                "https://www.googleapis.com/auth/monitoring",
                "https://www.googleapis.com/auth/monitoring.write"
              ],
              "parameterOrder": [
                "name"
              ],
              "httpMethod": "POST",
              "response": {
                "$ref": "Empty"
              },
              "id": "monitoring.projects.timeSeries.create",
              "request": {
                "$ref": "CreateTimeSeriesRequest"
              },
              "flatPath": "v3/projects/{projectsId}/timeSeries"
            },
            "createService": {
              "parameterOrder": [
                "name"
              ],
              "parameters": {
                "name": {
                  "pattern": "^projects/[^/]+$",
                  "description": "Required. The [project](https://documentation.s3ns.fr/monitoring/api/v3#project_name) on which to execute the request. The format is: projects/[PROJECT_ID_OR_NUMBER]",
                  "type": "string",
                  "required": true,
                  "location": "path"
                }
              },
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform",
                "https://www.googleapis.com/auth/monitoring",
                "https://www.googleapis.com/auth/monitoring.write"
              ],
              "path": "v3/{+name}/timeSeries:createService",
              "description": "Creates or adds data to one or more service time series. A service time series is a time series for a metric from a Google Cloud service. The response is empty if all time series in the request were written. If any time series could not be written, a corresponding failure message is included in the error response. This endpoint rejects writes to user-defined metrics. This method is only for use by Google Cloud services. Use projects.timeSeries.create instead.",
              "id": "monitoring.projects.timeSeries.createService",
              "request": {
                "$ref": "CreateTimeSeriesRequest"
              },
              "flatPath": "v3/projects/{projectsId}/timeSeries:createService",
              "httpMethod": "POST",
              "response": {
                "$ref": "Empty"
              }
            },
            "list": {
              "parameterOrder": [
                "name"
              ],
              "parameters": {
                "pageSize": {
                  "format": "int32",
                  "location": "query",
                  "description": "A positive number that is the maximum number of results to return. If `page_size` is empty or more than 100,000 results, the effective `page_size` is 100,000 results. If `view` is set to `FULL`, this is the maximum number of `Points` returned. If `view` is set to `HEADERS`, this is the maximum number of `TimeSeries` returned.",
                  "type": "integer"
                },
                "filter": {
                  "description": "Required. A [monitoring filter](https://documentation.s3ns.fr/monitoring/api/v3/filters) that specifies which time series should be returned. The filter must specify a single metric type, and can additionally specify metric labels and other information. For example: metric.type = \"compute.googleapis.com/instance/cpu/usage_time\" AND metric.labels.instance_name = \"my-instance-name\"",
                  "type": "string",
                  "location": "query"
                },
                "secondaryAggregation.alignmentPeriod": {
                  "format": "google-duration",
                  "location": "query",
                  "description": "The `alignment_period` specifies a time interval, in seconds, that is used to divide the data in all the time series into consistent blocks of time. This will be done before the per-series aligner can be applied to the data. The value must be at least 60 seconds. If a per-series aligner other than `ALIGN_NONE` is specified, this field is required or an error is returned. If no per-series aligner is specified, or the aligner `ALIGN_NONE` is specified, then this field is ignored. The maximum value of the `alignment_period` is 104 weeks (2 years) for charts, and 90,000 seconds (25 hours) for alerting policies.",
                  "type": "string"
                },
                "orderBy": {
                  "location": "query",
                  "description": "Unsupported: must be left blank. The points in each time series are currently returned in reverse time order (most recent to oldest).",
                  "type": "string"
                },
                "aggregation.perSeriesAligner": {
                  "type": "string",
                  "location": "query",
                  "enumDescriptions": [
                    "No alignment. Raw data is returned. Not valid if cross-series reduction is requested. The `value_type` of the result is the same as the `value_type` of the input.",
                    "Align and convert to DELTA. The output is `delta = y1 - y0`. This alignment is valid for CUMULATIVE and `DELTA` metrics. If the selected alignment period results in periods with no data, then the aligned value for such a period is created by interpolation. The `value_type` of the aligned result is the same as the `value_type` of the input.",
                    "Align and convert to a rate. The result is computed as `rate = (y1 - y0)/(t1 - t0)`, or \"delta over time\". Think of this aligner as providing the slope of the line that passes through the value at the start and at the end of the `alignment_period`. This aligner is valid for `CUMULATIVE` and `DELTA` metrics with numeric values. If the selected alignment period results in periods with no data, then the aligned value for such a period is created by interpolation. The output is a `GAUGE` metric with `value_type` `DOUBLE`. If, by \"rate\", you mean \"percentage change\", see the `ALIGN_PERCENT_CHANGE` aligner instead.",
                    "Align by interpolating between adjacent points around the alignment period boundary. This aligner is valid for `GAUGE` metrics with numeric values. The `value_type` of the aligned result is the same as the `value_type` of the input.",
                    "Align by moving the most recent data point before the end of the alignment period to the boundary at the end of the alignment period. This aligner is valid for `GAUGE` metrics. The `value_type` of the aligned result is the same as the `value_type` of the input.",
                    "Align the time series by returning the minimum value in each alignment period. This aligner is valid for `GAUGE` and `DELTA` metrics with numeric values. The `value_type` of the aligned result is the same as the `value_type` of the input.",
                    "Align the time series by returning the maximum value in each alignment period. This aligner is valid for `GAUGE` and `DELTA` metrics with numeric values. The `value_type` of the aligned result is the same as the `value_type` of the input.",
                    "Align the time series by returning the mean value in each alignment period. This aligner is valid for `GAUGE` and `DELTA` metrics with numeric values. The `value_type` of the aligned result is `DOUBLE`.",
                    "Align the time series by returning the number of values in each alignment period. This aligner is valid for `GAUGE` and `DELTA` metrics with numeric or Boolean values. The `value_type` of the aligned result is `INT64`.",
                    "Align the time series by returning the sum of the values in each alignment period. This aligner is valid for `GAUGE` and `DELTA` metrics with numeric and distribution values. The `value_type` of the aligned result is the same as the `value_type` of the input.",
                    "Align the time series by returning the standard deviation of the values in each alignment period. This aligner is valid for `GAUGE` and `DELTA` metrics with numeric values. The `value_type` of the output is `DOUBLE`.",
                    "Align the time series by returning the number of `True` values in each alignment period. This aligner is valid for `GAUGE` metrics with Boolean values. The `value_type` of the output is `INT64`.",
                    "Align the time series by returning the number of `False` values in each alignment period. This aligner is valid for `GAUGE` metrics with Boolean values. The `value_type` of the output is `INT64`.",
                    "Align the time series by returning the ratio of the number of `True` values to the total number of values in each alignment period. This aligner is valid for `GAUGE` metrics with Boolean values. The output value is in the range [0.0, 1.0] and has `value_type` `DOUBLE`.",
                    "Align the time series by using [percentile aggregation](https://en.wikipedia.org/wiki/Percentile). The resulting data point in each alignment period is the 99th percentile of all data points in the period. This aligner is valid for `GAUGE` and `DELTA` metrics with distribution values. The output is a `GAUGE` metric with `value_type` `DOUBLE`.",
                    "Align the time series by using [percentile aggregation](https://en.wikipedia.org/wiki/Percentile). The resulting data point in each alignment period is the 95th percentile of all data points in the period. This aligner is valid for `GAUGE` and `DELTA` metrics with distribution values. The output is a `GAUGE` metric with `value_type` `DOUBLE`.",
                    "Align the time series by using [percentile aggregation](https://en.wikipedia.org/wiki/Percentile). The resulting data point in each alignment period is the 50th percentile of all data points in the period. This aligner is valid for `GAUGE` and `DELTA` metrics with distribution values. The output is a `GAUGE` metric with `value_type` `DOUBLE`.",
                    "Align the time series by using [percentile aggregation](https://en.wikipedia.org/wiki/Percentile). The resulting data point in each alignment period is the 5th percentile of all data points in the period. This aligner is valid for `GAUGE` and `DELTA` metrics with distribution values. The output is a `GAUGE` metric with `value_type` `DOUBLE`.",
                    "Align and convert to a percentage change. This aligner is valid for `GAUGE` and `DELTA` metrics with numeric values. This alignment returns `((current - previous)/previous) * 100`, where the value of `previous` is determined based on the `alignment_period`. If the values of `current` and `previous` are both 0, then the returned value is 0. If only `previous` is 0, the returned value is infinity. A 10-minute moving mean is computed at each point of the alignment period prior to the above calculation to smooth the metric and prevent false positives from very short-lived spikes. The moving mean is only applicable for data whose values are `\u003e= 0`. Any values `\u003c 0` are treated as a missing datapoint, and are ignored. While `DELTA` metrics are accepted by this alignment, special care should be taken that the values for the metric will always be positive. The output is a `GAUGE` metric with `value_type` `DOUBLE`."
                  ],
                  "description": "An `Aligner` describes how to bring the data points in a single time series into temporal alignment. Except for `ALIGN_NONE`, all alignments cause all the data points in an `alignment_period` to be mathematically grouped together, resulting in a single data point for each `alignment_period` with end timestamp at the end of the period. Not all alignment operations may be applied to all time series. The valid choices depend on the `metric_kind` and `value_type` of the original time series. Alignment can change the `metric_kind` or the `value_type` of the time series. Time series data must be aligned in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified and not equal to `ALIGN_NONE` and `alignment_period` must be specified; otherwise, an error is returned.",
                  "enum": [
                    "ALIGN_NONE",
                    "ALIGN_DELTA",
                    "ALIGN_RATE",
                    "ALIGN_INTERPOLATE",
                    "ALIGN_NEXT_OLDER",
                    "ALIGN_MIN",
                    "ALIGN_MAX",
                    "ALIGN_MEAN",
                    "ALIGN_COUNT",
                    "ALIGN_SUM",
                    "ALIGN_STDDEV",
                    "ALIGN_COUNT_TRUE",
                    "ALIGN_COUNT_FALSE",
                    "ALIGN_FRACTION_TRUE",
                    "ALIGN_PERCENTILE_99",
                    "ALIGN_PERCENTILE_95",
                    "ALIGN_PERCENTILE_50",
                    "ALIGN_PERCENTILE_05",
                    "ALIGN_PERCENT_CHANGE"
                  ]
                },
                "aggregation.groupByFields": {
                  "location": "query",
                  "repeated": true,
                  "description": "The set of fields to preserve when `cross_series_reducer` is specified. The `group_by_fields` determine how the time series are partitioned into subsets prior to applying the aggregation operation. Each subset contains time series that have the same value for each of the grouping fields. Each individual time series is a member of exactly one subset. The `cross_series_reducer` is applied to each subset of time series. It is not possible to reduce across different resource types, so this field implicitly contains `resource.type`. Fields not specified in `group_by_fields` are aggregated away. If `group_by_fields` is not specified and all the time series have the same resource type, then the time series are aggregated into a single output time series. If `cross_series_reducer` is not defined, this field is ignored.",
                  "type": "string"
                },
                "name": {
                  "required": true,
                  "location": "path",
                  "type": "string",
                  "pattern": "^projects/[^/]+$",
                  "description": "Required. The [project](https://documentation.s3ns.fr/monitoring/api/v3#project_name), organization or folder on which to execute the request. The format is: projects/[PROJECT_ID_OR_NUMBER] organizations/[ORGANIZATION_ID] folders/[FOLDER_ID]"
                },
                "pageToken": {
                  "location": "query",
                  "description": "If this field is not empty then it must contain the `nextPageToken` value returned by a previous call to this method. Using this field causes the method to return additional results from the previous method call.",
                  "type": "string"
                },
                "view": {
                  "type": "string",
                  "location": "query",
                  "enumDescriptions": [
                    "Returns the identity of the metric(s), the time series, and the time series data.",
                    "Returns the identity of the metric and the time series resource, but not the time series data."
                  ],
                  "description": "Required. Specifies which information is returned about the time series.",
                  "enum": [
                    "FULL",
                    "HEADERS"
                  ]
                },
                "secondaryAggregation.groupByFields": {
                  "location": "query",
                  "repeated": true,
                  "description": "The set of fields to preserve when `cross_series_reducer` is specified. The `group_by_fields` determine how the time series are partitioned into subsets prior to applying the aggregation operation. Each subset contains time series that have the same value for each of the grouping fields. Each individual time series is a member of exactly one subset. The `cross_series_reducer` is applied to each subset of time series. It is not possible to reduce across different resource types, so this field implicitly contains `resource.type`. Fields not specified in `group_by_fields` are aggregated away. If `group_by_fields` is not specified and all the time series have the same resource type, then the time series are aggregated into a single output time series. If `cross_series_reducer` is not defined, this field is ignored.",
                  "type": "string"
                },
                "aggregation.alignmentPeriod": {
                  "description": "The `alignment_period` specifies a time interval, in seconds, that is used to divide the data in all the time series into consistent blocks of time. This will be done before the per-series aligner can be applied to the data. The value must be at least 60 seconds. If a per-series aligner other than `ALIGN_NONE` is specified, this field is required or an error is returned. If no per-series aligner is specified, or the aligner `ALIGN_NONE` is specified, then this field is ignored. The maximum value of the `alignment_period` is 104 weeks (2 years) for charts, and 90,000 seconds (25 hours) for alerting policies.",
                  "type": "string",
                  "location": "query",
                  "format": "google-duration"
                },
                "interval.endTime": {
                  "description": "Required. The end of the time interval.",
                  "type": "string",
                  "format": "google-datetime",
                  "location": "query"
                },
                "secondaryAggregation.perSeriesAligner": {
                  "description": "An `Aligner` describes how to bring the data points in a single time series into temporal alignment. Except for `ALIGN_NONE`, all alignments cause all the data points in an `alignment_period` to be mathematically grouped together, resulting in a single data point for each `alignment_period` with end timestamp at the end of the period. Not all alignment operations may be applied to all time series. The valid choices depend on the `metric_kind` and `value_type` of the original time series. Alignment can change the `metric_kind` or the `value_type` of the time series. Time series data must be aligned in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified and not equal to `ALIGN_NONE` and `alignment_period` must be specified; otherwise, an error is returned.",
                  "enum": [
                    "ALIGN_NONE",
                    "ALIGN_DELTA",
                    "ALIGN_RATE",
                    "ALIGN_INTERPOLATE",
                    "ALIGN_NEXT_OLDER",
                    "ALIGN_MIN",
                    "ALIGN_MAX",
                    "ALIGN_MEAN",
                    "ALIGN_COUNT",
                    "ALIGN_SUM",
                    "ALIGN_STDDEV",
                    "ALIGN_COUNT_TRUE",
                    "ALIGN_COUNT_FALSE",
                    "ALIGN_FRACTION_TRUE",
                    "ALIGN_PERCENTILE_99",
                    "ALIGN_PERCENTILE_95",
                    "ALIGN_PERCENTILE_50",
                    "ALIGN_PERCENTILE_05",
                    "ALIGN_PERCENT_CHANGE"
                  ],
                  "type": "string",
                  "location": "query",
                  "enumDescriptions": [
                    "No alignment. Raw data is returned. Not valid if cross-series reduction is requested. The `value_type` of the result is the same as the `value_type` of the input.",
                    "Align and convert to DELTA. The output is `delta = y1 - y0`. This alignment is valid for CUMULATIVE and `DELTA` metrics. If the selected alignment period results in periods with no data, then the aligned value for such a period is created by interpolation. The `value_type` of the aligned result is the same as the `value_type` of the input.",
                    "Align and convert to a rate. The result is computed as `rate = (y1 - y0)/(t1 - t0)`, or \"delta over time\". Think of this aligner as providing the slope of the line that passes through the value at the start and at the end of the `alignment_period`. This aligner is valid for `CUMULATIVE` and `DELTA` metrics with numeric values. If the selected alignment period results in periods with no data, then the aligned value for such a period is created by interpolation. The output is a `GAUGE` metric with `value_type` `DOUBLE`. If, by \"rate\", you mean \"percentage change\", see the `ALIGN_PERCENT_CHANGE` aligner instead.",
                    "Align by interpolating between adjacent points around the alignment period boundary. This aligner is valid for `GAUGE` metrics with numeric values. The `value_type` of the aligned result is the same as the `value_type` of the input.",
                    "Align by moving the most recent data point before the end of the alignment period to the boundary at the end of the alignment period. This aligner is valid for `GAUGE` metrics. The `value_type` of the aligned result is the same as the `value_type` of the input.",
                    "Align the time series by returning the minimum value in each alignment period. This aligner is valid for `GAUGE` and `DELTA` metrics with numeric values. The `value_type` of the aligned result is the same as the `value_type` of the input.",
                    "Align the time series by returning the maximum value in each alignment period. This aligner is valid for `GAUGE` and `DELTA` metrics with numeric values. The `value_type` of the aligned result is the same as the `value_type` of the input.",
                    "Align the time series by returning the mean value in each alignment period. This aligner is valid for `GAUGE` and `DELTA` metrics with numeric values. The `value_type` of the aligned result is `DOUBLE`.",
                    "Align the time series by returning the number of values in each alignment period. This aligner is valid for `GAUGE` and `DELTA` metrics with numeric or Boolean values. The `value_type` of the aligned result is `INT64`.",
                    "Align the time series by returning the sum of the values in each alignment period. This aligner is valid for `GAUGE` and `DELTA` metrics with numeric and distribution values. The `value_type` of the aligned result is the same as the `value_type` of the input.",
                    "Align the time series by returning the standard deviation of the values in each alignment period. This aligner is valid for `GAUGE` and `DELTA` metrics with numeric values. The `value_type` of the output is `DOUBLE`.",
                    "Align the time series by returning the number of `True` values in each alignment period. This aligner is valid for `GAUGE` metrics with Boolean values. The `value_type` of the output is `INT64`.",
                    "Align the time series by returning the number of `False` values in each alignment period. This aligner is valid for `GAUGE` metrics with Boolean values. The `value_type` of the output is `INT64`.",
                    "Align the time series by returning the ratio of the number of `True` values to the total number of values in each alignment period. This aligner is valid for `GAUGE` metrics with Boolean values. The output value is in the range [0.0, 1.0] and has `value_type` `DOUBLE`.",
                    "Align the time series by using [percentile aggregation](https://en.wikipedia.org/wiki/Percentile). The resulting data point in each alignment period is the 99th percentile of all data points in the period. This aligner is valid for `GAUGE` and `DELTA` metrics with distribution values. The output is a `GAUGE` metric with `value_type` `DOUBLE`.",
                    "Align the time series by using [percentile aggregation](https://en.wikipedia.org/wiki/Percentile). The resulting data point in each alignment period is the 95th percentile of all data points in the period. This aligner is valid for `GAUGE` and `DELTA` metrics with distribution values. The output is a `GAUGE` metric with `value_type` `DOUBLE`.",
                    "Align the time series by using [percentile aggregation](https://en.wikipedia.org/wiki/Percentile). The resulting data point in each alignment period is the 50th percentile of all data points in the period. This aligner is valid for `GAUGE` and `DELTA` metrics with distribution values. The output is a `GAUGE` metric with `value_type` `DOUBLE`.",
                    "Align the time series by using [percentile aggregation](https://en.wikipedia.org/wiki/Percentile). The resulting data point in each alignment period is the 5th percentile of all data points in the period. This aligner is valid for `GAUGE` and `DELTA` metrics with distribution values. The output is a `GAUGE` metric with `value_type` `DOUBLE`.",
                    "Align and convert to a percentage change. This aligner is valid for `GAUGE` and `DELTA` metrics with numeric values. This alignment returns `((current - previous)/previous) * 100`, where the value of `previous` is determined based on the `alignment_period`. If the values of `current` and `previous` are both 0, then the returned value is 0. If only `previous` is 0, the returned value is infinity. A 10-minute moving mean is computed at each point of the alignment period prior to the above calculation to smooth the metric and prevent false positives from very short-lived spikes. The moving mean is only applicable for data whose values are `\u003e= 0`. Any values `\u003c 0` are treated as a missing datapoint, and are ignored. While `DELTA` metrics are accepted by this alignment, special care should be taken that the values for the metric will always be positive. The output is a `GAUGE` metric with `value_type` `DOUBLE`."
                  ]
                },
                "interval.startTime": {
                  "description": "Optional. The beginning of the time interval. The default value for the start time is the end time. The start time must not be later than the end time.",
                  "type": "string",
                  "location": "query",
                  "format": "google-datetime"
                },
                "aggregation.crossSeriesReducer": {
                  "enum": [
                    "REDUCE_NONE",
                    "REDUCE_MEAN",
                    "REDUCE_MIN",
                    "REDUCE_MAX",
                    "REDUCE_SUM",
                    "REDUCE_STDDEV",
                    "REDUCE_COUNT",
                    "REDUCE_COUNT_TRUE",
                    "REDUCE_COUNT_FALSE",
                    "REDUCE_FRACTION_TRUE",
                    "REDUCE_PERCENTILE_99",
                    "REDUCE_PERCENTILE_95",
                    "REDUCE_PERCENTILE_50",
                    "REDUCE_PERCENTILE_05"
                  ],
                  "description": "The reduction operation to be used to combine time series into a single time series, where the value of each data point in the resulting series is a function of all the already aligned values in the input time series. Not all reducer operations can be applied to all time series. The valid choices depend on the `metric_kind` and the `value_type` of the original time series. Reduction can yield a time series with a different `metric_kind` or `value_type` than the input time series. Time series data must first be aligned (see `per_series_aligner`) in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified, and must not be `ALIGN_NONE`. An `alignment_period` must also be specified; otherwise, an error is returned.",
                  "location": "query",
                  "enumDescriptions": [
                    "No cross-time series reduction. The output of the `Aligner` is returned.",
                    "Reduce by computing the mean value across time series for each alignment period. This reducer is valid for DELTA and GAUGE metrics with numeric or distribution values. The `value_type` of the output is DOUBLE.",
                    "Reduce by computing the minimum value across time series for each alignment period. This reducer is valid for `DELTA` and `GAUGE` metrics with numeric values. The `value_type` of the output is the same as the `value_type` of the input.",
                    "Reduce by computing the maximum value across time series for each alignment period. This reducer is valid for `DELTA` and `GAUGE` metrics with numeric values. The `value_type` of the output is the same as the `value_type` of the input.",
                    "Reduce by computing the sum across time series for each alignment period. This reducer is valid for `DELTA` and `GAUGE` metrics with numeric and distribution values. The `value_type` of the output is the same as the `value_type` of the input.",
                    "Reduce by computing the standard deviation across time series for each alignment period. This reducer is valid for `DELTA` and `GAUGE` metrics with numeric or distribution values. The `value_type` of the output is `DOUBLE`.",
                    "Reduce by computing the number of data points across time series for each alignment period. This reducer is valid for `DELTA` and `GAUGE` metrics of numeric, Boolean, distribution, and string `value_type`. The `value_type` of the output is `INT64`.",
                    "Reduce by computing the number of `True`-valued data points across time series for each alignment period. This reducer is valid for `DELTA` and `GAUGE` metrics of Boolean `value_type`. The `value_type` of the output is `INT64`.",
                    "Reduce by computing the number of `False`-valued data points across time series for each alignment period. This reducer is valid for `DELTA` and `GAUGE` metrics of Boolean `value_type`. The `value_type` of the output is `INT64`.",
                    "Reduce by computing the ratio of the number of `True`-valued data points to the total number of data points for each alignment period. This reducer is valid for `DELTA` and `GAUGE` metrics of Boolean `value_type`. The output value is in the range [0.0, 1.0] and has `value_type` `DOUBLE`.",
                    "Reduce by computing the [99th percentile](https://en.wikipedia.org/wiki/Percentile) of data points across time series for each alignment period. This reducer is valid for `GAUGE` and `DELTA` metrics of numeric and distribution type. The value of the output is `DOUBLE`.",
                    "Reduce by computing the [95th percentile](https://en.wikipedia.org/wiki/Percentile) of data points across time series for each alignment period. This reducer is valid for `GAUGE` and `DELTA` metrics of numeric and distribution type. The value of the output is `DOUBLE`.",
                    "Reduce by computing the [50th percentile](https://en.wikipedia.org/wiki/Percentile) of data points across time series for each alignment period. This reducer is valid for `GAUGE` and `DELTA` metrics of numeric and distribution type. The value of the output is `DOUBLE`.",
                    "Reduce by computing the [5th percentile](https://en.wikipedia.org/wiki/Percentile) of data points across time series for each alignment period. This reducer is valid for `GAUGE` and `DELTA` metrics of numeric and distribution type. The value of the output is `DOUBLE`."
                  ],
                  "type": "string"
                },
                "secondaryAggregation.crossSeriesReducer": {
                  "type": "string",
                  "location": "query",
                  "enumDescriptions": [
                    "No cross-time series reduction. The output of the `Aligner` is returned.",
                    "Reduce by computing the mean value across time series for each alignment period. This reducer is valid for DELTA and GAUGE metrics with numeric or distribution values. The `value_type` of the output is DOUBLE.",
                    "Reduce by computing the minimum value across time series for each alignment period. This reducer is valid for `DELTA` and `GAUGE` metrics with numeric values. The `value_type` of the output is the same as the `value_type` of the input.",
                    "Reduce by computing the maximum value across time series for each alignment period. This reducer is valid for `DELTA` and `GAUGE` metrics with numeric values. The `value_type` of the output is the same as the `value_type` of the input.",
                    "Reduce by computing the sum across time series for each alignment period. This reducer is valid for `DELTA` and `GAUGE` metrics with numeric and distribution values. The `value_type` of the output is the same as the `value_type` of the input.",
                    "Reduce by computing the standard deviation across time series for each alignment period. This reducer is valid for `DELTA` and `GAUGE` metrics with numeric or distribution values. The `value_type` of the output is `DOUBLE`.",
                    "Reduce by computing the number of data points across time series for each alignment period. This reducer is valid for `DELTA` and `GAUGE` metrics of numeric, Boolean, distribution, and string `value_type`. The `value_type` of the output is `INT64`.",
                    "Reduce by computing the number of `True`-valued data points across time series for each alignment period. This reducer is valid for `DELTA` and `GAUGE` metrics of Boolean `value_type`. The `value_type` of the output is `INT64`.",
                    "Reduce by computing the number of `False`-valued data points across time series for each alignment period. This reducer is valid for `DELTA` and `GAUGE` metrics of Boolean `value_type`. The `value_type` of the output is `INT64`.",
                    "Reduce by computing the ratio of the number of `True`-valued data points to the total number of data points for each alignment period. This reducer is valid for `DELTA` and `GAUGE` metrics of Boolean `value_type`. The output value is in the range [0.0, 1.0] and has `value_type` `DOUBLE`.",
                    "Reduce by computing the [99th percentile](https://en.wikipedia.org/wiki/Percentile) of data points across time series for each alignment period. This reducer is valid for `GAUGE` and `DELTA` metrics of numeric and distribution type. The value of the output is `DOUBLE`.",
                    "Reduce by computing the [95th percentile](https://en.wikipedia.org/wiki/Percentile) of data points across time series for each alignment period. This reducer is valid for `GAUGE` and `DELTA` metrics of numeric and distribution type. The value of the output is `DOUBLE`.",
                    "Reduce by computing the [50th percentile](https://en.wikipedia.org/wiki/Percentile) of data points across time series for each alignment period. This reducer is valid for `GAUGE` and `DELTA` metrics of numeric and distribution type. The value of the output is `DOUBLE`.",
                    "Reduce by computing the [5th percentile](https://en.wikipedia.org/wiki/Percentile) of data points across time series for each alignment period. This reducer is valid for `GAUGE` and `DELTA` metrics of numeric and distribution type. The value of the output is `DOUBLE`."
                  ],
                  "description": "The reduction operation to be used to combine time series into a single time series, where the value of each data point in the resulting series is a function of all the already aligned values in the input time series. Not all reducer operations can be applied to all time series. The valid choices depend on the `metric_kind` and the `value_type` of the original time series. Reduction can yield a time series with a different `metric_kind` or `value_type` than the input time series. Time series data must first be aligned (see `per_series_aligner`) in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified, and must not be `ALIGN_NONE`. An `alignment_period` must also be specified; otherwise, an error is returned.",
                  "enum": [
                    "REDUCE_NONE",
                    "REDUCE_MEAN",
                    "REDUCE_MIN",
                    "REDUCE_MAX",
                    "REDUCE_SUM",
                    "REDUCE_STDDEV",
                    "REDUCE_COUNT",
                    "REDUCE_COUNT_TRUE",
                    "REDUCE_COUNT_FALSE",
                    "REDUCE_FRACTION_TRUE",
                    "REDUCE_PERCENTILE_99",
                    "REDUCE_PERCENTILE_95",
                    "REDUCE_PERCENTILE_50",
                    "REDUCE_PERCENTILE_05"
                  ]
                }
              },
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform",
                "https://www.googleapis.com/auth/monitoring",
                "https://www.googleapis.com/auth/monitoring.read"
              ],
              "path": "v3/{+name}/timeSeries",
              "description": "Lists time series that match a filter.",
              "flatPath": "v3/projects/{projectsId}/timeSeries",
              "id": "monitoring.projects.timeSeries.list",
              "response": {
                "$ref": "ListTimeSeriesResponse"
              },
              "httpMethod": "GET"
            },
            "query": {
              "flatPath": "v3/projects/{projectsId}/timeSeries:query",
              "id": "monitoring.projects.timeSeries.query",
              "request": {
                "$ref": "QueryTimeSeriesRequest"
              },
              "response": {
                "$ref": "QueryTimeSeriesResponse"
              },
              "deprecated": true,
              "httpMethod": "POST",
              "parameterOrder": [
                "name"
              ],
              "parameters": {
                "name": {
                  "pattern": "^projects/[^/]+$",
                  "description": "Required. The [project](https://cloud.google.com/monitoring/api/v3#project_name) on which to execute the request. The format is: projects/[PROJECT_ID_OR_NUMBER]",
                  "type": "string",
                  "required": true,
                  "location": "path"
                }
              },
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform",
                "https://www.googleapis.com/auth/monitoring",
                "https://www.googleapis.com/auth/monitoring.read"
              ],
              "path": "v3/{+name}/timeSeries:query",
              "description": "The google.monitoring.v3.QueryService.QueryTimeSeries method is not available in this (s3nsapis.fr) universe."
            }
          }
        }
      }
    }
  },
  "name": "monitoring",
  "version": "v3",
  "canonicalName": "Monitoring",
  "title": "Cloud Monitoring API",
  "schemas": {
    "Empty": {
      "properties": {},
      "id": "Empty",
      "description": "A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); }",
      "type": "object"
    },
    "SpanContext": {
      "properties": {
        "spanName": {
          "description": "The resource name of the span. The format is: projects/[PROJECT_ID_OR_NUMBER]/traces/[TRACE_ID]/spans/[SPAN_ID] `[TRACE_ID]` is a unique identifier for a trace within a project; it is a 32-character hexadecimal encoding of a 16-byte array. `[SPAN_ID]` is a unique identifier for a span within a trace; it is a 16-character hexadecimal encoding of an 8-byte array.",
          "type": "string"
        }
      },
      "id": "SpanContext",
      "description": "The context of a span. This is attached to an Exemplar in Distribution values during aggregation. It contains the name of a span with format: projects/[PROJECT_ID_OR_NUMBER]/traces/[TRACE_ID]/spans/[SPAN_ID]",
      "type": "object"
    },
    "Status": {
      "id": "Status",
      "description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by gRPC(https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the API Design Guide(https://documentation.s3ns.fr/apis/design/errors).",
      "type": "object",
      "properties": {
        "code": {
          "format": "int32",
          "description": "The status code, which should be an enum value of google.rpc.Code.",
          "type": "integer"
        },
        "message": {
          "description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.",
          "type": "string"
        },
        "details": {
          "description": "A list of messages that carry the error details. There is a common set of message types for APIs to use.",
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": {
              "type": "any",
              "description": "Properties of the object. Contains field @type with type URL."
            }
          }
        }
      }
    },
    "TypedValue": {
      "properties": {
        "stringValue": {
          "description": "A variable-length string value.",
          "type": "string"
        },
        "boolValue": {
          "description": "A Boolean value: `true` or `false`.",
          "type": "boolean"
        },
        "distributionValue": {
          "description": "A distribution value.",
          "$ref": "Distribution"
        },
        "int64Value": {
          "format": "int64",
          "description": "A 64-bit integer. Its range is approximately ±9.2x1018.",
          "type": "string"
        },
        "doubleValue": {
          "description": "A 64-bit double-precision floating-point number. Its magnitude is approximately ±10±300 and it has 16 significant digits of precision.",
          "type": "number",
          "format": "double"
        }
      },
      "id": "TypedValue",
      "description": "A single strongly-typed value.",
      "type": "object"
    },
    "ValueDescriptor": {
      "id": "ValueDescriptor",
      "description": "A descriptor for the value columns in a data point.",
      "type": "object",
      "properties": {
        "valueType": {
          "description": "The value type.",
          "type": "string",
          "enumDescriptions": [
            "Do not use this default value.",
            "The value is a boolean. This value type can be used only if the metric kind is `GAUGE`.",
            "The value is a signed 64-bit integer.",
            "The value is a double precision floating point number.",
            "The value is a text string. This value type can be used only if the metric kind is `GAUGE`.",
            "The value is a `Distribution`.",
            "The value is money."
          ],
          "enum": [
            "VALUE_TYPE_UNSPECIFIED",
            "BOOL",
            "INT64",
            "DOUBLE",
            "STRING",
            "DISTRIBUTION",
            "MONEY"
          ]
        },
        "metricKind": {
          "enum": [
            "METRIC_KIND_UNSPECIFIED",
            "GAUGE",
            "DELTA",
            "CUMULATIVE"
          ],
          "enumDescriptions": [
            "Do not use this default value.",
            "An instantaneous measurement of a value.",
            "The change in a value during a time interval.",
            "A value accumulated over a time interval. Cumulative measurements in a time series should have the same start time and increasing end times, until an event resets the cumulative value to zero and sets a new start time for the following points."
          ],
          "description": "The value stream kind.",
          "type": "string"
        },
        "key": {
          "description": "The value key.",
          "type": "string"
        },
        "unit": {
          "description": "The unit in which `time_series` point values are reported. `unit` follows the UCUM format for units as seen in https://unitsofmeasure.org/ucum.html. `unit` is only valid if `value_type` is INTEGER, DOUBLE, DISTRIBUTION.",
          "type": "string"
        }
      }
    },
    "OperationMetadata": {
      "id": "OperationMetadata",
      "description": "Contains metadata for longrunning operation for the edit Metrics Scope endpoints.",
      "type": "object",
      "properties": {
        "createTime": {
          "description": "The time when the batch request was received.",
          "type": "string",
          "format": "google-datetime"
        },
        "state": {
          "enumDescriptions": [
            "Invalid.",
            "Request has been received.",
            "Request is actively being processed.",
            "The batch processing is done.",
            "The batch processing was cancelled."
          ],
          "enum": [
            "STATE_UNSPECIFIED",
            "CREATED",
            "RUNNING",
            "DONE",
            "CANCELLED"
          ],
          "description": "Current state of the batch operation.",
          "type": "string"
        },
        "updateTime": {
          "format": "google-datetime",
          "description": "The time when the operation result was last updated.",
          "type": "string"
        }
      }
    },
    "Exponential": {
      "id": "Exponential",
      "description": "Specifies an exponential sequence of buckets that have a width that is proportional to the value of the lower bound. Each bucket represents a constant relative uncertainty on a specific value in the bucket. There are `num_finite_buckets + 2` (= N) buckets. Bucket `i` has the following boundaries: Upper bound (0 \u003c= i \u003c N-1): scale * (growth_factor ^ i). Lower bound (1 \u003c= i \u003c N): scale * (growth_factor ^ (i - 1)).",
      "type": "object",
      "properties": {
        "growthFactor": {
          "description": "Must be greater than 1.",
          "type": "number",
          "format": "double"
        },
        "numFiniteBuckets": {
          "description": "Must be greater than 0.",
          "type": "integer",
          "format": "int32"
        },
        "scale": {
          "format": "double",
          "description": "Must be greater than 0.",
          "type": "number"
        }
      }
    },
    "Field": {
      "id": "Field",
      "description": "A single field of a message type. New usages of this message as an alternative to FieldDescriptorProto are strongly discouraged. This message does not reliability preserve all information necessary to model the schema and preserve semantics. Instead make use of FileDescriptorSet which preserves the necessary information.",
      "type": "object",
      "properties": {
        "name": {
          "description": "The field name.",
          "type": "string"
        },
        "options": {
          "description": "The protocol buffer options.",
          "type": "array",
          "items": {
            "$ref": "Option"
          }
        },
        "packed": {
          "description": "Whether to use alternative packed wire representation.",
          "type": "boolean"
        },
        "typeUrl": {
          "description": "The field type URL, without the scheme, for message or enumeration types. Example: `\"type.googleapis.com/google.protobuf.Timestamp\"`.",
          "type": "string"
        },
        "oneofIndex": {
          "format": "int32",
          "description": "The index of the field type in `Type.oneofs`, for message or enumeration types. The first type has index 1; zero means the type is not in the list.",
          "type": "integer"
        },
        "cardinality": {
          "description": "The field cardinality.",
          "type": "string",
          "enumDescriptions": [
            "For fields with unknown cardinality.",
            "For optional fields.",
            "For required fields. Proto2 syntax only.",
            "For repeated fields."
          ],
          "enum": [
            "CARDINALITY_UNKNOWN",
            "CARDINALITY_OPTIONAL",
            "CARDINALITY_REQUIRED",
            "CARDINALITY_REPEATED"
          ]
        },
        "jsonName": {
          "description": "The field JSON name.",
          "type": "string"
        },
        "number": {
          "format": "int32",
          "description": "The field number.",
          "type": "integer"
        },
        "kind": {
          "enumDescriptions": [
            "Field type unknown.",
            "Field type double.",
            "Field type float.",
            "Field type int64.",
            "Field type uint64.",
            "Field type int32.",
            "Field type fixed64.",
            "Field type fixed32.",
            "Field type bool.",
            "Field type string.",
            "Field type group. Proto2 syntax only, and deprecated.",
            "Field type message.",
            "Field type bytes.",
            "Field type uint32.",
            "Field type enum.",
            "Field type sfixed32.",
            "Field type sfixed64.",
            "Field type sint32.",
            "Field type sint64."
          ],
          "enum": [
            "TYPE_UNKNOWN",
            "TYPE_DOUBLE",
            "TYPE_FLOAT",
            "TYPE_INT64",
            "TYPE_UINT64",
            "TYPE_INT32",
            "TYPE_FIXED64",
            "TYPE_FIXED32",
            "TYPE_BOOL",
            "TYPE_STRING",
            "TYPE_GROUP",
            "TYPE_MESSAGE",
            "TYPE_BYTES",
            "TYPE_UINT32",
            "TYPE_ENUM",
            "TYPE_SFIXED32",
            "TYPE_SFIXED64",
            "TYPE_SINT32",
            "TYPE_SINT64"
          ],
          "description": "The field type.",
          "type": "string"
        },
        "defaultValue": {
          "description": "The string value of the default value of this field. Proto2 syntax only.",
          "type": "string"
        }
      }
    },
    "TimeInterval": {
      "id": "TimeInterval",
      "description": "Describes a time interval: * Reads: A half-open time interval. It includes the end time but excludes the start time: `(startTime, endTime]`. The start time must be specified, must be earlier than the end time, and should be no older than the data retention period for the metric. * Writes: A closed time interval. It extends from the start time to the end time, and includes both: `[startTime, endTime]`. Valid time intervals depend on the [`MetricKind`](https://documentation.s3ns.fr/monitoring/api/ref_v3/rest/v3/projects.metricDescriptors#MetricKind) of the metric value. The end time must not be earlier than the start time, and the end time must not be more than 25 hours in the past or more than five minutes in the future. * For `GAUGE` metrics, the `startTime` value is technically optional; if no value is specified, the start time defaults to the value of the end time, and the interval represents a single point in time. If both start and end times are specified, they must be identical. Such an interval is valid only for `GAUGE` metrics, which are point-in-time measurements. The end time of a new interval must be at least a millisecond after the end time of the previous interval. * For `DELTA` metrics, the start time and end time must specify a non-zero interval, with subsequent points specifying contiguous and non-overlapping intervals. For `DELTA` metrics, the start time of the next interval must be at least a millisecond after the end time of the previous interval. * For `CUMULATIVE` metrics, the start time and end time must specify a non-zero interval, with subsequent points specifying the same start time and increasing end times, until an event resets the cumulative value to zero and sets a new start time for the following points. The new start time must be at least a millisecond after the end time of the previous interval. * The start time of a new interval must be at least a millisecond after the end time of the previous interval because intervals are closed. If the start time of a new interval is the same as the end time of the previous interval, then data written at the new start time could overwrite data written at the previous end time.",
      "type": "object",
      "properties": {
        "endTime": {
          "format": "google-datetime",
          "description": "Required. The end of the time interval.",
          "type": "string"
        },
        "startTime": {
          "description": "Optional. The beginning of the time interval. The default value for the start time is the end time. The start time must not be later than the end time.",
          "type": "string",
          "format": "google-datetime"
        }
      }
    },
    "QueryTimeSeriesResponse": {
      "properties": {
        "timeSeriesDescriptor": {
          "description": "The descriptor for the time series data.",
          "$ref": "TimeSeriesDescriptor"
        },
        "timeSeriesData": {
          "description": "The time series data.",
          "type": "array",
          "items": {
            "$ref": "TimeSeriesData"
          }
        },
        "nextPageToken": {
          "description": "If there are more results than have been returned, then this field is set to a non-empty value. To see the additional results, use that value as `page_token` in the next call to this method.",
          "type": "string"
        },
        "partialErrors": {
          "description": "Query execution errors that may have caused the time series data returned to be incomplete. The available data will be available in the response.",
          "type": "array",
          "items": {
            "$ref": "Status"
          }
        }
      },
      "type": "object",
      "deprecated": true,
      "id": "QueryTimeSeriesResponse",
      "description": "The `QueryTimeSeries` response. For information about the status of Monitoring Query Language (MQL), see the [MQL deprecation notice](https://cloud.google.com/stackdriver/docs/deprecations/mql)."
    },
    "LabelValue": {
      "properties": {
        "int64Value": {
          "description": "An int64 label value.",
          "type": "string",
          "format": "int64"
        },
        "stringValue": {
          "description": "A string label value.",
          "type": "string"
        },
        "boolValue": {
          "description": "A bool label value.",
          "type": "boolean"
        }
      },
      "id": "LabelValue",
      "description": "A label value.",
      "type": "object"
    },
    "TimeSeries": {
      "properties": {
        "points": {
          "description": "The data points of this time series. When listing time series, points are returned in reverse time order. When creating a time series, this field must contain exactly one point and the point's type must be the same as the value type of the associated metric. If the associated metric's descriptor must be auto-created, then the value type of the descriptor is determined by the point's type, which must be `BOOL`, `INT64`, `DOUBLE`, or `DISTRIBUTION`.",
          "type": "array",
          "items": {
            "$ref": "Point"
          }
        },
        "metric": {
          "description": "The associated metric. A fully-specified metric used to identify the time series.",
          "$ref": "Metric"
        },
        "description": {
          "description": "Input only. A detailed description of the time series that will be associated with the google.api.MetricDescriptor for the metric. Once set, this field cannot be changed through CreateTimeSeries.",
          "type": "string"
        },
        "metricKind": {
          "description": "The metric kind of the time series. When listing time series, this metric kind might be different from the metric kind of the associated metric if this time series is an alignment or reduction of other time series. When creating a time series, this field is optional. If present, it must be the same as the metric kind of the associated metric. If the associated metric's descriptor must be auto-created, then this field specifies the metric kind of the new descriptor and must be either `GAUGE` (the default) or `CUMULATIVE`.",
          "type": "string",
          "enum": [
            "METRIC_KIND_UNSPECIFIED",
            "GAUGE",
            "DELTA",
            "CUMULATIVE"
          ],
          "enumDescriptions": [
            "Do not use this default value.",
            "An instantaneous measurement of a value.",
            "The change in a value during a time interval.",
            "A value accumulated over a time interval. Cumulative measurements in a time series should have the same start time and increasing end times, until an event resets the cumulative value to zero and sets a new start time for the following points."
          ]
        },
        "unit": {
          "description": "The units in which the metric value is reported. It is only applicable if the `value_type` is `INT64`, `DOUBLE`, or `DISTRIBUTION`. The `unit` defines the representation of the stored metric values. This field can only be changed through CreateTimeSeries when it is empty.",
          "type": "string"
        },
        "resource": {
          "description": "The associated monitored resource. Custom metrics can use only certain monitored resource types in their time series data. For more information, see [Monitored resources for custom metrics](https://documentation.s3ns.fr/monitoring/custom-metrics/creating-metrics#custom-metric-resources).",
          "$ref": "MonitoredResource"
        },
        "metadata": {
          "description": "Output only. The associated monitored resource metadata. When reading a time series, this field will include metadata labels that are explicitly named in the reduction. When creating a time series, this field is ignored.",
          "$ref": "MonitoredResourceMetadata"
        },
        "valueType": {
          "description": "The value type of the time series. When listing time series, this value type might be different from the value type of the associated metric if this time series is an alignment or reduction of other time series. When creating a time series, this field is optional. If present, it must be the same as the type of the data in the `points` field.",
          "type": "string",
          "enum": [
            "VALUE_TYPE_UNSPECIFIED",
            "BOOL",
            "INT64",
            "DOUBLE",
            "STRING",
            "DISTRIBUTION",
            "MONEY"
          ],
          "enumDescriptions": [
            "Do not use this default value.",
            "The value is a boolean. This value type can be used only if the metric kind is `GAUGE`.",
            "The value is a signed 64-bit integer.",
            "The value is a double precision floating point number.",
            "The value is a text string. This value type can be used only if the metric kind is `GAUGE`.",
            "The value is a `Distribution`.",
            "The value is money."
          ]
        }
      },
      "id": "TimeSeries",
      "description": "A collection of data points that describes the time-varying values of a metric. A time series is identified by a combination of a fully-specified monitored resource and a fully-specified metric. This type is used for both listing and creating time series.",
      "type": "object"
    },
    "PointData": {
      "properties": {
        "values": {
          "description": "The values that make up the point.",
          "type": "array",
          "items": {
            "$ref": "TypedValue"
          }
        },
        "timeInterval": {
          "description": "The time interval associated with the point.",
          "$ref": "TimeInterval"
        }
      },
      "id": "PointData",
      "description": "A point's value columns and time interval. Each point has one or more point values corresponding to the entries in `point_descriptors` field in the TimeSeriesDescriptor associated with this object.",
      "type": "object"
    },
    "Exemplar": {
      "properties": {
        "value": {
          "description": "Value of the exemplar point. This value determines to which bucket the exemplar belongs.",
          "type": "number",
          "format": "double"
        },
        "attachments": {
          "description": "Contextual information about the example value. Examples are: Trace: type.googleapis.com/google.monitoring.v3.SpanContext Literal string: type.googleapis.com/google.protobuf.StringValue Labels dropped during aggregation: type.googleapis.com/google.monitoring.v3.DroppedLabels There may be only a single attachment of any given message type in a single exemplar, and this is enforced by the system.",
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": {
              "type": "any",
              "description": "Properties of the object. Contains field @type with type URL."
            }
          }
        },
        "timestamp": {
          "format": "google-datetime",
          "description": "The observation (sampling) time of the above value.",
          "type": "string"
        }
      },
      "id": "Exemplar",
      "description": "Exemplars are example points that may be used to annotate aggregated distribution values. They are metadata that gives information about a particular value added to a Distribution bucket, such as a trace ID that was active when a value was added. They may contain further information, such as a example values and timestamps, origin, etc.",
      "type": "object"
    },
    "QueryTimeSeriesRequest": {
      "properties": {
        "query": {
          "description": "Required. The query in the [Monitoring Query Language](https://cloud.google.com/monitoring/mql/reference) format. The default time zone is in UTC.",
          "type": "string"
        },
        "pageSize": {
          "format": "int32",
          "description": "A positive number that is the maximum number of time_series_data to return.",
          "type": "integer"
        },
        "pageToken": {
          "description": "If this field is not empty then it must contain the `nextPageToken` value returned by a previous call to this method. Using this field causes the method to return additional results from the previous method call.",
          "type": "string"
        }
      },
      "type": "object",
      "deprecated": true,
      "id": "QueryTimeSeriesRequest",
      "description": "The `QueryTimeSeries` request. For information about the status of Monitoring Query Language (MQL), see the [MQL deprecation notice](https://cloud.google.com/stackdriver/docs/deprecations/mql)."
    },
    "Explicit": {
      "properties": {
        "bounds": {
          "description": "The values must be monotonically increasing.",
          "type": "array",
          "items": {
            "format": "double",
            "type": "number"
          }
        }
      },
      "id": "Explicit",
      "description": "Specifies a set of buckets with arbitrary widths. There are `size(bounds) + 1` (= N) buckets. Bucket `i` has the following boundaries: Upper bound (0 \u003c= i \u003c N-1): bounds[i] Lower bound (1 \u003c= i \u003c N); bounds[i - 1] The `bounds` field must contain at least one element. If `bounds` has only one element, then there are no finite buckets, and that single element is the common boundary of the overflow and underflow buckets.",
      "type": "object"
    },
    "Option": {
      "id": "Option",
      "description": "A protocol buffer option, which can be attached to a message, field, enumeration, etc. New usages of this message as an alternative to FileOptions, MessageOptions, FieldOptions, EnumOptions, EnumValueOptions, ServiceOptions, or MethodOptions are strongly discouraged.",
      "type": "object",
      "properties": {
        "name": {
          "description": "The option's name. For protobuf built-in options (options defined in descriptor.proto), this is the short name. For example, `\"map_entry\"`. For custom options, it should be the fully-qualified name. For example, `\"google.api.http\"`.",
          "type": "string"
        },
        "value": {
          "description": "The option's value packed in an Any message. If the value is a primitive, the corresponding wrapper type defined in google/protobuf/wrappers.proto should be used. If the value is an enum, it should be stored as an int32 value using the google.protobuf.Int32Value type.",
          "type": "object",
          "additionalProperties": {
            "type": "any",
            "description": "Properties of the object. Contains field @type with type URL."
          }
        }
      }
    },
    "Metric": {
      "id": "Metric",
      "description": "A specific metric, identified by specifying values for all of the labels of a `MetricDescriptor`.",
      "type": "object",
      "properties": {
        "type": {
          "description": "An existing metric type, see google.api.MetricDescriptor. For example, `custom.googleapis.com/invoice/paid/amount`.",
          "type": "string"
        },
        "labels": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "The set of label values that uniquely identify this metric. All labels listed in the `MetricDescriptor` must be assigned values.",
          "type": "object"
        }
      }
    },
    "ListMetricDescriptorsResponse": {
      "id": "ListMetricDescriptorsResponse",
      "description": "The `ListMetricDescriptors` response.",
      "type": "object",
      "properties": {
        "metricDescriptors": {
          "description": "The metric descriptors that are available to the project and that match the value of `filter`, if present.",
          "type": "array",
          "items": {
            "$ref": "MetricDescriptor"
          }
        },
        "nextPageToken": {
          "description": "If there are more results than have been returned, then this field is set to a non-empty value. To see the additional results, use that value as `page_token` in the next call to this method.",
          "type": "string"
        }
      }
    },
    "LabelDescriptor": {
      "properties": {
        "valueType": {
          "description": "The type of data that can be assigned to the label.",
          "type": "string",
          "enum": [
            "STRING",
            "BOOL",
            "INT64"
          ],
          "enumDescriptions": [
            "A variable-length string. This is the default.",
            "Boolean; true or false.",
            "A 64-bit signed integer."
          ]
        },
        "key": {
          "description": "The label key.",
          "type": "string"
        },
        "description": {
          "description": "A human-readable description for the label.",
          "type": "string"
        }
      },
      "id": "LabelDescriptor",
      "description": "A description of a label.",
      "type": "object"
    },
    "MonitoredResourceMetadata": {
      "properties": {
        "systemLabels": {
          "additionalProperties": {
            "type": "any",
            "description": "Properties of the object."
          },
          "description": "Output only. Values for predefined system metadata labels. System labels are a kind of metadata extracted by Cloud de Confiance, including \"machine_image\", \"vpc\", \"subnet_id\", \"security_group\", \"name\", etc. System label values can be only strings, Boolean values, or a list of strings. For example: { \"name\": \"my-test-instance\", \"security_group\": [\"a\", \"b\", \"c\"], \"spot_instance\": false }",
          "type": "object"
        },
        "userLabels": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "Output only. A map of user-defined metadata labels.",
          "type": "object"
        }
      },
      "id": "MonitoredResourceMetadata",
      "description": "Auxiliary metadata for a MonitoredResource object. MonitoredResource objects contain the minimum set of information to uniquely identify a monitored resource instance. There is some other useful auxiliary metadata. Monitoring and Logging use an ingestion pipeline to extract metadata for cloud resources of all types, and store the metadata in this message.",
      "type": "object"
    },
    "MonitoredResource": {
      "id": "MonitoredResource",
      "description": "An object representing a resource that can be used for monitoring, logging, billing, or other purposes. Examples include virtual machine instances, databases, and storage devices such as disks. The `type` field identifies a MonitoredResourceDescriptor object that describes the resource's schema. Information in the `labels` field identifies the actual resource and its attributes according to the schema. For example, a particular Compute Engine VM instance could be represented by the following object, because the MonitoredResourceDescriptor for `\"gce_instance\"` has labels `\"project_id\"`, `\"instance_id\"` and `\"zone\"`: { \"type\": \"gce_instance\", \"labels\": { \"project_id\": \"my-project\", \"instance_id\": \"12345678901234\", \"zone\": \"us-central1-a\" }}",
      "type": "object",
      "properties": {
        "type": {
          "description": "Required. The monitored resource type. This field must match the `type` field of a MonitoredResourceDescriptor object. For example, the type of a Compute Engine VM instance is `gce_instance`. For a list of types, see [Monitoring resource types](https://documentation.s3ns.fr/monitoring/api/resources) and [Logging resource types](https://documentation.s3ns.fr/logging/docs/api/v2/resource-list).",
          "type": "string"
        },
        "labels": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "Required. Values for all of the labels listed in the associated monitored resource descriptor. For example, Compute Engine VM instances use the labels `\"project_id\"`, `\"instance_id\"`, and `\"zone\"`.",
          "type": "object"
        }
      }
    },
    "MetricDescriptorMetadata": {
      "properties": {
        "ingestDelay": {
          "format": "google-duration",
          "description": "The delay of data points caused by ingestion. Data points older than this age are guaranteed to be ingested and available to be read, excluding data loss due to errors.",
          "type": "string"
        },
        "timeSeriesResourceHierarchyLevel": {
          "description": "The scope of the timeseries data of the metric.",
          "type": "array",
          "items": {
            "enum": [
              "TIME_SERIES_RESOURCE_HIERARCHY_LEVEL_UNSPECIFIED",
              "PROJECT",
              "ORGANIZATION",
              "FOLDER"
            ],
            "enumDescriptions": [
              "Do not use this default value.",
              "Scopes a metric to a project.",
              "Scopes a metric to an organization.",
              "Scopes a metric to a folder."
            ],
            "type": "string"
          }
        },
        "samplePeriod": {
          "description": "The sampling period of metric data points. For metrics which are written periodically, consecutive data points are stored at this time interval, excluding data loss due to errors. Metrics with a higher granularity have a smaller sampling period.",
          "type": "string",
          "format": "google-duration"
        },
        "launchStage": {
          "enumDescriptions": [
            "Do not use this default value.",
            "The feature is not yet implemented. Users can not use it.",
            "Prelaunch features are hidden from users and are only visible internally.",
            "Early Access features are limited to a closed group of testers. To use these features, you must sign up in advance and sign a Trusted Tester agreement (which includes confidentiality provisions). These features may be unstable, changed in backward-incompatible ways, and are not guaranteed to be released.",
            "Alpha is a limited availability test for releases before they are cleared for widespread use. By Alpha, all significant design issues are resolved and we are in the process of verifying functionality. Alpha customers need to apply for access, agree to applicable terms, and have their projects allowlisted. Alpha releases don't have to be feature complete, no SLAs are provided, and there are no technical support obligations, but they will be far enough along that customers can actually use them in test environments or for limited-use tests -- just like they would in normal production cases.",
            "Beta is the point at which we are ready to open a release for any customer to use. There are no SLA or technical support obligations in a Beta release. Products will be complete from a feature perspective, but may have some open outstanding issues. Beta releases are suitable for limited production use cases.",
            "GA features are open to all developers and are considered stable and fully qualified for production use.",
            "Deprecated features are scheduled to be shut down and removed. For more information, see the \"Deprecation Policy\" section of our Terms of Service(https://documentation.s3ns.fr/terms/) and the Cloud de Confiance Platform Subject to the Deprecation Policy(https://documentation.s3ns.fr/terms/deprecation) documentation."
          ],
          "type": "string",
          "deprecated": true,
          "enum": [
            "LAUNCH_STAGE_UNSPECIFIED",
            "UNIMPLEMENTED",
            "PRELAUNCH",
            "EARLY_ACCESS",
            "ALPHA",
            "BETA",
            "GA",
            "DEPRECATED"
          ],
          "description": "Deprecated. Must use the MetricDescriptor.launch_stage instead."
        }
      },
      "id": "MetricDescriptorMetadata",
      "description": "Additional annotations that can be used to guide the usage of a metric.",
      "type": "object"
    },
    "Distribution": {
      "id": "Distribution",
      "description": "`Distribution` contains summary statistics for a population of values. It optionally contains a histogram representing the distribution of those values across a set of buckets. The summary statistics are the count, mean, sum of the squared deviation from the mean, the minimum, and the maximum of the set of population of values. The histogram is based on a sequence of buckets and gives a count of values that fall into each bucket. The boundaries of the buckets are given either explicitly or by formulas for buckets of fixed or exponentially increasing widths. Although it is not forbidden, it is generally a bad idea to include non-finite values (infinities or NaNs) in the population of values, as this will render the `mean` and `sum_of_squared_deviation` fields meaningless.",
      "type": "object",
      "properties": {
        "sumOfSquaredDeviation": {
          "format": "double",
          "description": "The sum of squared deviations from the mean of the values in the population. For values x_i this is: Sum[i=1..n]((x_i - mean)^2) Knuth, \"The Art of Computer Programming\", Vol. 2, page 232, 3rd edition describes Welford's method for accumulating this sum in one pass. If `count` is zero then this field must be zero.",
          "type": "number"
        },
        "bucketCounts": {
          "description": "The number of values in each bucket of the histogram, as described in `bucket_options`. If the distribution does not have a histogram, then omit this field. If there is a histogram, then the sum of the values in `bucket_counts` must equal the value in the `count` field of the distribution. If present, `bucket_counts` should contain N values, where N is the number of buckets specified in `bucket_options`. If you supply fewer than N values, the remaining values are assumed to be 0. The order of the values in `bucket_counts` follows the bucket numbering schemes described for the three bucket types. The first value must be the count for the underflow bucket (number 0). The next N-2 values are the counts for the finite buckets (number 1 through N-2). The N'th value in `bucket_counts` is the count for the overflow bucket (number N-1).",
          "type": "array",
          "items": {
            "format": "int64",
            "type": "string"
          }
        },
        "exemplars": {
          "description": "Must be in increasing order of `value` field.",
          "type": "array",
          "items": {
            "$ref": "Exemplar"
          }
        },
        "bucketOptions": {
          "description": "Defines the histogram bucket boundaries. If the distribution does not contain a histogram, then omit this field.",
          "$ref": "BucketOptions"
        },
        "count": {
          "description": "The number of values in the population. Must be non-negative. This value must equal the sum of the values in `bucket_counts` if a histogram is provided.",
          "type": "string",
          "format": "int64"
        },
        "mean": {
          "format": "double",
          "description": "The arithmetic mean of the values in the population. If `count` is zero then this field must be zero.",
          "type": "number"
        },
        "range": {
          "description": "If specified, contains the range of the population values. The field must not be present if the `count` is zero.",
          "$ref": "Range"
        }
      }
    },
    "Linear": {
      "id": "Linear",
      "description": "Specifies a linear sequence of buckets that all have the same width (except overflow and underflow). Each bucket represents a constant absolute uncertainty on the specific value in the bucket. There are `num_finite_buckets + 2` (= N) buckets. Bucket `i` has the following boundaries: Upper bound (0 \u003c= i \u003c N-1): offset + (width * i). Lower bound (1 \u003c= i \u003c N): offset + (width * (i - 1)).",
      "type": "object",
      "properties": {
        "numFiniteBuckets": {
          "format": "int32",
          "description": "Must be greater than 0.",
          "type": "integer"
        },
        "width": {
          "format": "double",
          "description": "Must be greater than 0.",
          "type": "number"
        },
        "offset": {
          "description": "Lower bound of the first bucket.",
          "type": "number",
          "format": "double"
        }
      }
    },
    "TimeSeriesDescriptor": {
      "id": "TimeSeriesDescriptor",
      "description": "A descriptor for the labels and points in a time series.",
      "type": "object",
      "properties": {
        "labelDescriptors": {
          "description": "Descriptors for the labels.",
          "type": "array",
          "items": {
            "$ref": "LabelDescriptor"
          }
        },
        "pointDescriptors": {
          "description": "Descriptors for the point data value columns.",
          "type": "array",
          "items": {
            "$ref": "ValueDescriptor"
          }
        }
      }
    },
    "SourceContext": {
      "properties": {
        "fileName": {
          "description": "The path-qualified name of the .proto file that contained the associated protobuf element. For example: `\"google/protobuf/source_context.proto\"`.",
          "type": "string"
        }
      },
      "id": "SourceContext",
      "description": "`SourceContext` represents information about the source of a protobuf element, like the file in which it is defined.",
      "type": "object"
    },
    "BucketOptions": {
      "id": "BucketOptions",
      "description": "`BucketOptions` describes the bucket boundaries used to create a histogram for the distribution. The buckets can be in a linear sequence, an exponential sequence, or each bucket can be specified explicitly. `BucketOptions` does not include the number of values in each bucket. A bucket has an inclusive lower bound and exclusive upper bound for the values that are counted for that bucket. The upper bound of a bucket must be strictly greater than the lower bound. The sequence of N buckets for a distribution consists of an underflow bucket (number 0), zero or more finite buckets (number 1 through N - 2) and an overflow bucket (number N - 1). The buckets are contiguous: the lower bound of bucket i (i \u003e 0) is the same as the upper bound of bucket i - 1. The buckets span the whole range of finite values: lower bound of the underflow bucket is -infinity and the upper bound of the overflow bucket is +infinity. The finite buckets are so-called because both bounds are finite.",
      "type": "object",
      "properties": {
        "explicitBuckets": {
          "description": "The explicit buckets.",
          "$ref": "Explicit"
        },
        "linearBuckets": {
          "description": "The linear bucket.",
          "$ref": "Linear"
        },
        "exponentialBuckets": {
          "description": "The exponential buckets.",
          "$ref": "Exponential"
        }
      }
    },
    "CreateTimeSeriesRequest": {
      "id": "CreateTimeSeriesRequest",
      "description": "The `CreateTimeSeries` request.",
      "type": "object",
      "properties": {
        "timeSeries": {
          "description": "Required. The new data to be added to a list of time series. Adds at most one data point to each of several time series. The new data point must be more recent than any other point in its time series. Each `TimeSeries` value must fully specify a unique time series by supplying all label values for the metric and the monitored resource. The maximum number of `TimeSeries` objects per `Create` request is 200.",
          "type": "array",
          "items": {
            "$ref": "TimeSeries"
          }
        }
      }
    },
    "Type": {
      "properties": {
        "name": {
          "description": "The fully qualified message name.",
          "type": "string"
        },
        "oneofs": {
          "description": "The list of types appearing in `oneof` definitions in this type.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "fields": {
          "description": "The list of fields.",
          "type": "array",
          "items": {
            "$ref": "Field"
          }
        },
        "sourceContext": {
          "description": "The source context.",
          "$ref": "SourceContext"
        },
        "options": {
          "description": "The protocol buffer options.",
          "type": "array",
          "items": {
            "$ref": "Option"
          }
        },
        "syntax": {
          "enumDescriptions": [
            "Syntax `proto2`.",
            "Syntax `proto3`.",
            "Syntax `editions`."
          ],
          "enum": [
            "SYNTAX_PROTO2",
            "SYNTAX_PROTO3",
            "SYNTAX_EDITIONS"
          ],
          "description": "The source syntax.",
          "type": "string"
        },
        "edition": {
          "description": "The source edition string, only valid when syntax is SYNTAX_EDITIONS.",
          "type": "string"
        }
      },
      "id": "Type",
      "description": "A protocol buffer message type. New usages of this message as an alternative to DescriptorProto are strongly discouraged. This message does not reliability preserve all information necessary to model the schema and preserve semantics. Instead make use of FileDescriptorSet which preserves the necessary information.",
      "type": "object"
    },
    "ListMonitoredResourceDescriptorsResponse": {
      "id": "ListMonitoredResourceDescriptorsResponse",
      "description": "The `ListMonitoredResourceDescriptors` response.",
      "type": "object",
      "properties": {
        "nextPageToken": {
          "description": "If there are more results than have been returned, then this field is set to a non-empty value. To see the additional results, use that value as `page_token` in the next call to this method.",
          "type": "string"
        },
        "resourceDescriptors": {
          "description": "The monitored resource descriptors that are available to this project and that match `filter`, if present.",
          "type": "array",
          "items": {
            "$ref": "MonitoredResourceDescriptor"
          }
        }
      }
    },
    "ListTimeSeriesResponse": {
      "properties": {
        "timeSeries": {
          "description": "One or more time series that match the filter included in the request.",
          "type": "array",
          "items": {
            "$ref": "TimeSeries"
          }
        },
        "nextPageToken": {
          "description": "If there are more results than have been returned, then this field is set to a non-empty value. To see the additional results, use that value as `page_token` in the next call to this method.",
          "type": "string"
        },
        "unit": {
          "description": "The unit in which all `time_series` point values are reported. `unit` follows the UCUM format for units as seen in https://unitsofmeasure.org/ucum.html. If different `time_series` have different units (for example, because they come from different metric types, or a unit is absent), then `unit` will be \"{not_a_unit}\".",
          "type": "string"
        },
        "executionErrors": {
          "description": "Query execution errors that may have caused the time series data returned to be incomplete.",
          "type": "array",
          "items": {
            "$ref": "Status"
          }
        },
        "unreachable": {
          "description": "Cloud regions that were unreachable which may have caused incomplete data to be returned.",
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "id": "ListTimeSeriesResponse",
      "description": "The `ListTimeSeries` response.",
      "type": "object"
    },
    "MetricDescriptor": {
      "id": "MetricDescriptor",
      "description": "Defines a metric type and its schema. Once a metric descriptor is created, deleting or altering it stops data collection and makes the metric type's existing data unusable. ",
      "type": "object",
      "properties": {
        "displayName": {
          "description": "A concise name for the metric, which can be displayed in user interfaces. Use sentence case without an ending period, for example \"Request count\". This field is optional but it is recommended to be set for any metrics associated with user-visible concepts, such as Quota.",
          "type": "string"
        },
        "name": {
          "description": "The resource name of the metric descriptor.",
          "type": "string"
        },
        "labels": {
          "description": "The set of labels that can be used to describe a specific instance of this metric type. For example, the `appengine.googleapis.com/http/server/response_latencies` metric type has a label for the HTTP response code, `response_code`, so you can look at latencies for successful responses or just for responses that failed.",
          "type": "array",
          "items": {
            "$ref": "LabelDescriptor"
          }
        },
        "monitoredResourceTypes": {
          "description": "Read-only. If present, then a time series, which is identified partially by a metric type and a MonitoredResourceDescriptor, that is associated with this metric type can only be associated with one of the monitored resource types listed here.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "type": {
          "description": "The metric type, including its DNS name prefix. The type is not URL-encoded. All user-defined metric types have the DNS name `custom.googleapis.com` or `external.googleapis.com`. Metric types should use a natural hierarchical grouping. For example: \"custom.googleapis.com/invoice/paid/amount\" \"external.googleapis.com/prometheus/up\" \"appengine.googleapis.com/http/server/response_latencies\"",
          "type": "string"
        },
        "unit": {
          "description": "The units in which the metric value is reported. It is only applicable if the `value_type` is `INT64`, `DOUBLE`, or `DISTRIBUTION`. The `unit` defines the representation of the stored metric values. Different systems might scale the values to be more easily displayed (so a value of `0.02kBy` _might_ be displayed as `20By`, and a value of `3523kBy` _might_ be displayed as `3.5MBy`). However, if the `unit` is `kBy`, then the value of the metric is always in thousands of bytes, no matter how it might be displayed. If you want a custom metric to record the exact number of CPU-seconds used by a job, you can create an `INT64 CUMULATIVE` metric whose `unit` is `s{CPU}` (or equivalently `1s{CPU}` or just `s`). If the job uses 12,005 CPU-seconds, then the value is written as `12005`. Alternatively, if you want a custom metric to record data in a more granular way, you can create a `DOUBLE CUMULATIVE` metric whose `unit` is `ks{CPU}`, and then write the value `12.005` (which is `12005/1000`), or use `Kis{CPU}` and write `11.723` (which is `12005/1024`). The supported units are a subset of [The Unified Code for Units of Measure](https://unitsofmeasure.org/ucum.html) standard: **Basic units (UNIT)** * `bit` bit * `By` byte * `s` second * `min` minute * `h` hour * `d` day * `1` dimensionless **Prefixes (PREFIX)** * `k` kilo (10^3) * `M` mega (10^6) * `G` giga (10^9) * `T` tera (10^12) * `P` peta (10^15) * `E` exa (10^18) * `Z` zetta (10^21) * `Y` yotta (10^24) * `m` milli (10^-3) * `u` micro (10^-6) * `n` nano (10^-9) * `p` pico (10^-12) * `f` femto (10^-15) * `a` atto (10^-18) * `z` zepto (10^-21) * `y` yocto (10^-24) * `Ki` kibi (2^10) * `Mi` mebi (2^20) * `Gi` gibi (2^30) * `Ti` tebi (2^40) * `Pi` pebi (2^50) **Grammar** The grammar also includes these connectors: * `/` division or ratio (as an infix operator). For examples, `kBy/{email}` or `MiBy/10ms` (although you should almost never have `/s` in a metric `unit`; rates should always be computed at query time from the underlying cumulative or delta value). * `.` multiplication or composition (as an infix operator). For examples, `GBy.d` or `k{watt}.h`. The grammar for a unit is as follows: Expression = Component { \".\" Component } { \"/\" Component } ; Component = ( [ PREFIX ] UNIT | \"%\" ) [ Annotation ] | Annotation | \"1\" ; Annotation = \"{\" NAME \"}\" ; Notes: * `Annotation` is just a comment if it follows a `UNIT`. If the annotation is used alone, then the unit is equivalent to `1`. For examples, `{request}/s == 1/s`, `By{transmitted}/s == By/s`. * `NAME` is a sequence of non-blank printable ASCII characters not containing `{` or `}`. * `1` represents a unitary [dimensionless unit](https://en.wikipedia.org/wiki/Dimensionless_quantity) of 1, such as in `1/s`. It is typically used when none of the basic units are appropriate. For example, \"new users per day\" can be represented as `1/d` or `{new-users}/d` (and a metric value `5` would mean \"5 new users). Alternatively, \"thousands of page views per day\" would be represented as `1000/d` or `k1/d` or `k{page_views}/d` (and a metric value of `5.3` would mean \"5300 page views per day\"). * `%` represents dimensionless value of 1/100, and annotates values giving a percentage (so the metric values are typically in the range of 0..100, and a metric value `3` means \"3 percent\"). * `10^2.%` indicates a metric contains a ratio, typically in the range 0..1, that will be multiplied by 100 and displayed as a percentage (so a metric value `0.03` means \"3 percent\").",
          "type": "string"
        },
        "description": {
          "description": "A detailed description of the metric, which can be used in documentation.",
          "type": "string"
        },
        "metricKind": {
          "description": "Whether the metric records instantaneous values, changes to a value, etc. Some combinations of `metric_kind` and `value_type` might not be supported.",
          "type": "string",
          "enum": [
            "METRIC_KIND_UNSPECIFIED",
            "GAUGE",
            "DELTA",
            "CUMULATIVE"
          ],
          "enumDescriptions": [
            "Do not use this default value.",
            "An instantaneous measurement of a value.",
            "The change in a value during a time interval.",
            "A value accumulated over a time interval. Cumulative measurements in a time series should have the same start time and increasing end times, until an event resets the cumulative value to zero and sets a new start time for the following points."
          ]
        },
        "valueType": {
          "description": "Whether the measurement is an integer, a floating-point number, etc. Some combinations of `metric_kind` and `value_type` might not be supported.",
          "type": "string",
          "enumDescriptions": [
            "Do not use this default value.",
            "The value is a boolean. This value type can be used only if the metric kind is `GAUGE`.",
            "The value is a signed 64-bit integer.",
            "The value is a double precision floating point number.",
            "The value is a text string. This value type can be used only if the metric kind is `GAUGE`.",
            "The value is a `Distribution`.",
            "The value is money."
          ],
          "enum": [
            "VALUE_TYPE_UNSPECIFIED",
            "BOOL",
            "INT64",
            "DOUBLE",
            "STRING",
            "DISTRIBUTION",
            "MONEY"
          ]
        },
        "metadata": {
          "description": "Optional. Metadata which can be used to guide usage of the metric.",
          "$ref": "MetricDescriptorMetadata"
        },
        "launchStage": {
          "enum": [
            "LAUNCH_STAGE_UNSPECIFIED",
            "UNIMPLEMENTED",
            "PRELAUNCH",
            "EARLY_ACCESS",
            "ALPHA",
            "BETA",
            "GA",
            "DEPRECATED"
          ],
          "enumDescriptions": [
            "Do not use this default value.",
            "The feature is not yet implemented. Users can not use it.",
            "Prelaunch features are hidden from users and are only visible internally.",
            "Early Access features are limited to a closed group of testers. To use these features, you must sign up in advance and sign a Trusted Tester agreement (which includes confidentiality provisions). These features may be unstable, changed in backward-incompatible ways, and are not guaranteed to be released.",
            "Alpha is a limited availability test for releases before they are cleared for widespread use. By Alpha, all significant design issues are resolved and we are in the process of verifying functionality. Alpha customers need to apply for access, agree to applicable terms, and have their projects allowlisted. Alpha releases don't have to be feature complete, no SLAs are provided, and there are no technical support obligations, but they will be far enough along that customers can actually use them in test environments or for limited-use tests -- just like they would in normal production cases.",
            "Beta is the point at which we are ready to open a release for any customer to use. There are no SLA or technical support obligations in a Beta release. Products will be complete from a feature perspective, but may have some open outstanding issues. Beta releases are suitable for limited production use cases.",
            "GA features are open to all developers and are considered stable and fully qualified for production use.",
            "Deprecated features are scheduled to be shut down and removed. For more information, see the \"Deprecation Policy\" section of our Terms of Service(https://documentation.s3ns.fr/terms/) and the Cloud de Confiance Platform Subject to the Deprecation Policy(https://documentation.s3ns.fr/terms/deprecation) documentation."
          ],
          "description": "Optional. The launch stage of the metric definition.",
          "type": "string"
        }
      }
    },
    "Point": {
      "properties": {
        "value": {
          "description": "The value of the data point.",
          "$ref": "TypedValue"
        },
        "interval": {
          "description": "The time interval to which the data point applies. For `GAUGE` metrics, the start time is optional, but if it is supplied, it must equal the end time. For `DELTA` metrics, the start and end time should specify a non-zero interval, with subsequent points specifying contiguous and non-overlapping intervals. For `CUMULATIVE` metrics, the start and end time should specify a non-zero interval, with subsequent points specifying the same start time and increasing end times, until an event resets the cumulative value to zero and sets a new start time for the following points.",
          "$ref": "TimeInterval"
        }
      },
      "id": "Point",
      "description": "A single data point in a time series.",
      "type": "object"
    },
    "DroppedLabels": {
      "properties": {
        "label": {
          "description": "Map from label to its value, for all labels dropped in any aggregation.",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        }
      },
      "id": "DroppedLabels",
      "description": "A set of (label, value) pairs that were removed from a Distribution time series during aggregation and then added as an attachment to a Distribution.Exemplar. The full label set for the exemplars is constructed by using the dropped pairs in combination with the label values that remain on the aggregated Distribution time series. The constructed full label set can be used to identify the specific entity, such as the instance or job, which might be contributing to a long-tail. However, with dropped labels, the storage requirements are reduced because only the aggregated distribution values for a large group of time series are stored. Note that there are no guarantees on ordering of the labels from exemplar-to-exemplar and from distribution-to-distribution in the same stream, and there may be duplicates. It is up to clients to resolve any ambiguities.",
      "type": "object"
    },
    "MonitoredResourceDescriptor": {
      "properties": {
        "displayName": {
          "description": "Optional. A concise name for the monitored resource type that might be displayed in user interfaces. It should be a Title Cased Noun Phrase, without any article or other determiners. For example, `\"Cloud de Confiance Cloud SQL Database\"`.",
          "type": "string"
        },
        "description": {
          "description": "Optional. A detailed description of the monitored resource type that might be used in documentation.",
          "type": "string"
        },
        "name": {
          "description": "Optional. The resource name of the monitored resource descriptor: `\"projects/{project_id}/monitoredResourceDescriptors/{type}\"` where {type} is the value of the `type` field in this object and {project_id} is a project ID that provides API-specific context for accessing the type. APIs that do not use project information can use the resource name format `\"monitoredResourceDescriptors/{type}\"`.",
          "type": "string"
        },
        "labels": {
          "description": "Required. A set of labels used to describe instances of this monitored resource type. For example, an individual Cloud de Confiance Cloud SQL database is identified by values for the labels `\"database_id\"` and `\"zone\"`.",
          "type": "array",
          "items": {
            "$ref": "LabelDescriptor"
          }
        },
        "type": {
          "description": "Required. The monitored resource type. For example, the type `\"cloudsql_database\"` represents databases in Cloud de Confiance Cloud SQL. For a list of types, see [Monitored resource types](https://documentation.s3ns.fr/monitoring/api/resources) and [Logging resource types](https://documentation.s3ns.fr/logging/docs/api/v2/resource-list).",
          "type": "string"
        },
        "launchStage": {
          "enumDescriptions": [
            "Do not use this default value.",
            "The feature is not yet implemented. Users can not use it.",
            "Prelaunch features are hidden from users and are only visible internally.",
            "Early Access features are limited to a closed group of testers. To use these features, you must sign up in advance and sign a Trusted Tester agreement (which includes confidentiality provisions). These features may be unstable, changed in backward-incompatible ways, and are not guaranteed to be released.",
            "Alpha is a limited availability test for releases before they are cleared for widespread use. By Alpha, all significant design issues are resolved and we are in the process of verifying functionality. Alpha customers need to apply for access, agree to applicable terms, and have their projects allowlisted. Alpha releases don't have to be feature complete, no SLAs are provided, and there are no technical support obligations, but they will be far enough along that customers can actually use them in test environments or for limited-use tests -- just like they would in normal production cases.",
            "Beta is the point at which we are ready to open a release for any customer to use. There are no SLA or technical support obligations in a Beta release. Products will be complete from a feature perspective, but may have some open outstanding issues. Beta releases are suitable for limited production use cases.",
            "GA features are open to all developers and are considered stable and fully qualified for production use.",
            "Deprecated features are scheduled to be shut down and removed. For more information, see the \"Deprecation Policy\" section of our Terms of Service(https://documentation.s3ns.fr/terms/) and the Cloud de Confiance Platform Subject to the Deprecation Policy(https://documentation.s3ns.fr/terms/deprecation) documentation."
          ],
          "enum": [
            "LAUNCH_STAGE_UNSPECIFIED",
            "UNIMPLEMENTED",
            "PRELAUNCH",
            "EARLY_ACCESS",
            "ALPHA",
            "BETA",
            "GA",
            "DEPRECATED"
          ],
          "description": "Optional. The launch stage of the monitored resource definition.",
          "type": "string"
        }
      },
      "id": "MonitoredResourceDescriptor",
      "description": "An object that describes the schema of a MonitoredResource object using a type name and a set of labels. For example, the monitored resource descriptor for Cloud de Confiance Compute Engine VM instances has a type of `\"gce_instance\"` and specifies the use of the labels `\"instance_id\"` and `\"zone\"` to identify particular VM instances. Different APIs can support different monitored resource types. APIs generally provide a `list` method that returns the monitored resource descriptors used by the API.",
      "type": "object"
    },
    "Range": {
      "properties": {
        "min": {
          "description": "The minimum of the population values.",
          "type": "number",
          "format": "double"
        },
        "max": {
          "description": "The maximum of the population values.",
          "type": "number",
          "format": "double"
        }
      },
      "id": "Range",
      "description": "The range of the population values.",
      "type": "object"
    },
    "TimeSeriesData": {
      "properties": {
        "pointData": {
          "description": "The points in the time series.",
          "type": "array",
          "items": {
            "$ref": "PointData"
          }
        },
        "labelValues": {
          "description": "The values of the labels in the time series identifier, given in the same order as the `label_descriptors` field of the TimeSeriesDescriptor associated with this object. Each value must have a value of the type given in the corresponding entry of `label_descriptors`.",
          "type": "array",
          "items": {
            "$ref": "LabelValue"
          }
        }
      },
      "id": "TimeSeriesData",
      "description": "Represents the values of a time series associated with a TimeSeriesDescriptor.",
      "type": "object"
    }
  },
  "revision": "20260402",
  "baseUrl": "https://monitoring.s3nsapis.fr/",
  "rootUrl": "https://monitoring.s3nsapis.fr/",
  "discoveryVersion": "v1",
  "documentationLink": "https://documentation.s3ns.fr/monitoring"
}
