aboutsummaryrefslogtreecommitdiff
path: root/google/monitoring
diff options
context:
space:
mode:
Diffstat (limited to 'google/monitoring')
-rw-r--r--google/monitoring/BUILD.bazel1
-rw-r--r--google/monitoring/artman_monitoring.yaml36
-rw-r--r--google/monitoring/monitoring.yaml159
-rw-r--r--google/monitoring/v3/BUILD.bazel176
-rw-r--r--google/monitoring/v3/alert.proto347
-rw-r--r--google/monitoring/v3/alert_service.proto199
-rw-r--r--google/monitoring/v3/common.proto418
-rw-r--r--google/monitoring/v3/dropped_labels.proto45
-rw-r--r--google/monitoring/v3/group.proto76
-rw-r--r--google/monitoring/v3/group_service.proto222
-rw-r--r--google/monitoring/v3/metric.proto95
-rw-r--r--google/monitoring/v3/metric_service.proto322
-rw-r--r--google/monitoring/v3/monitoring_gapic.yaml768
-rw-r--r--google/monitoring/v3/mutation_record.proto36
-rw-r--r--google/monitoring/v3/notification.proto165
-rw-r--r--google/monitoring/v3/notification_service.proto350
-rw-r--r--google/monitoring/v3/span_context.proto43
-rw-r--r--google/monitoring/v3/uptime.proto271
-rw-r--r--google/monitoring/v3/uptime_service.proto208
19 files changed, 3937 insertions, 0 deletions
diff --git a/google/monitoring/BUILD.bazel b/google/monitoring/BUILD.bazel
new file mode 100644
index 000000000..1e5b8c2af
--- /dev/null
+++ b/google/monitoring/BUILD.bazel
@@ -0,0 +1 @@
+exports_files(glob(["*.yaml"])) \ No newline at end of file
diff --git a/google/monitoring/artman_monitoring.yaml b/google/monitoring/artman_monitoring.yaml
new file mode 100644
index 000000000..8ff5101ac
--- /dev/null
+++ b/google/monitoring/artman_monitoring.yaml
@@ -0,0 +1,36 @@
+common:
+ api_name: monitoring
+ api_version: v3
+ organization_name: google-cloud
+ service_yaml: monitoring.yaml
+ gapic_yaml: v3/monitoring_gapic.yaml
+ src_proto_paths:
+ - v3
+ proto_deps:
+ - name: google-common-protos
+artifacts:
+- name: java_gapic
+ type: GAPIC
+ language: JAVA
+ release_level: GA
+- name: python_gapic
+ type: GAPIC
+ language: PYTHON
+- name: php_gapic
+ type: GAPIC
+ language: PHP
+- name: ruby_gapic
+ type: GAPIC
+ language: RUBY
+- name: go_gapic
+ type: GAPIC
+ language: GO
+- name: csharp_gapic
+ type: GAPIC
+ language: CSHARP
+- name: nodejs_gapic
+ type: GAPIC
+ language: NODEJS
+ release_level: BETA
+- name: gapic_config
+ type: GAPIC_CONFIG
diff --git a/google/monitoring/monitoring.yaml b/google/monitoring/monitoring.yaml
new file mode 100644
index 000000000..026a6b3ee
--- /dev/null
+++ b/google/monitoring/monitoring.yaml
@@ -0,0 +1,159 @@
+type: google.api.Service
+config_version: 3
+name: monitoring.googleapis.com
+title: Stackdriver Monitoring API
+
+apis:
+- name: google.monitoring.v3.AlertPolicyService
+- name: google.monitoring.v3.GroupService
+- name: google.monitoring.v3.MetricService
+- name: google.monitoring.v3.NotificationChannelService
+- name: google.monitoring.v3.UptimeCheckService
+
+types:
+- name: google.monitoring.v3.DroppedLabels
+- name: google.monitoring.v3.SpanContext
+
+documentation:
+ summary: |-
+ Manages your Stackdriver Monitoring data and configurations. Most projects
+ must be associated with a Stackdriver account, with a few exceptions as
+ noted on the individual method pages.
+
+backend:
+ rules:
+ - selector: google.monitoring.v3.AgentTranslationService.CreateCollectdTimeSeries
+ deadline: 30.0
+ - selector: google.monitoring.v3.AlertPolicyService.ListAlertPolicies
+ deadline: 30.0
+ - selector: google.monitoring.v3.AlertPolicyService.GetAlertPolicy
+ deadline: 30.0
+ - selector: google.monitoring.v3.AlertPolicyService.CreateAlertPolicy
+ deadline: 30.0
+ - selector: google.monitoring.v3.AlertPolicyService.DeleteAlertPolicy
+ deadline: 30.0
+ - selector: google.monitoring.v3.AlertPolicyService.UpdateAlertPolicy
+ deadline: 30.0
+ - selector: google.monitoring.v3.GroupService.ListGroups
+ deadline: 30.0
+ - selector: google.monitoring.v3.GroupService.GetGroup
+ deadline: 30.0
+ - selector: google.monitoring.v3.GroupService.CreateGroup
+ deadline: 30.0
+ - selector: google.monitoring.v3.GroupService.UpdateGroup
+ deadline: 30.0
+ - selector: google.monitoring.v3.GroupService.DeleteGroup
+ deadline: 30.0
+ - selector: google.monitoring.v3.GroupService.ListGroupMembers
+ deadline: 30.0
+ - selector: google.monitoring.v3.MetricService.ListMonitoredResourceDescriptors
+ deadline: 30.0
+ - selector: google.monitoring.v3.MetricService.GetMonitoredResourceDescriptor
+ deadline: 30.0
+ - selector: google.monitoring.v3.MetricService.ListMetricDescriptors
+ deadline: 30.0
+ - selector: google.monitoring.v3.MetricService.GetMetricDescriptor
+ deadline: 30.0
+ - selector: google.monitoring.v3.MetricService.CreateMetricDescriptor
+ deadline: 30.0
+ - selector: google.monitoring.v3.MetricService.DeleteMetricDescriptor
+ deadline: 30.0
+ - selector: google.monitoring.v3.MetricService.ListTimeSeries
+ deadline: 30.0
+ - selector: google.monitoring.v3.MetricService.CreateTimeSeries
+ deadline: 12.0
+ - selector: google.monitoring.v3.NotificationChannelService.ListNotificationChannelDescriptors
+ deadline: 30.0
+ - selector: google.monitoring.v3.NotificationChannelService.GetNotificationChannelDescriptor
+ deadline: 30.0
+ - selector: google.monitoring.v3.NotificationChannelService.ListNotificationChannels
+ deadline: 30.0
+ - selector: google.monitoring.v3.NotificationChannelService.GetNotificationChannel
+ deadline: 30.0
+ - selector: google.monitoring.v3.NotificationChannelService.CreateNotificationChannel
+ deadline: 30.0
+ - selector: google.monitoring.v3.NotificationChannelService.UpdateNotificationChannel
+ deadline: 30.0
+ - selector: google.monitoring.v3.NotificationChannelService.DeleteNotificationChannel
+ deadline: 30.0
+ - selector: google.monitoring.v3.NotificationChannelService.SendNotificationChannelVerificationCode
+ deadline: 30.0
+ - selector: google.monitoring.v3.NotificationChannelService.GetNotificationChannelVerificationCode
+ deadline: 30.0
+ - selector: google.monitoring.v3.NotificationChannelService.VerifyNotificationChannel
+ deadline: 30.0
+
+authentication:
+ rules:
+ - selector: '*'
+ oauth:
+ canonical_scopes: |-
+ https://www.googleapis.com/auth/cloud-platform,
+ https://www.googleapis.com/auth/monitoring
+ - selector: |-
+ google.monitoring.v3.MetricService.GetMetricDescriptor,
+ google.monitoring.v3.MetricService.GetMonitoredResourceDescriptor,
+ google.monitoring.v3.MetricService.ListMetricDescriptors,
+ google.monitoring.v3.MetricService.ListMonitoredResourceDescriptors
+ oauth:
+ canonical_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
+ - selector: |-
+ google.monitoring.v3.NotificationChannelService.GetNotificationChannel,
+ google.monitoring.v3.NotificationChannelService.GetNotificationChannelDescriptor,
+ google.monitoring.v3.NotificationChannelService.ListNotificationChannelDescriptors,
+ google.monitoring.v3.NotificationChannelService.ListNotificationChannels
+ oauth:
+ canonical_scopes: |-
+ https://www.googleapis.com/auth/cloud-platform,
+ https://www.googleapis.com/auth/monitoring,
+ https://www.googleapis.com/auth/monitoring.read
+ - selector: |-
+ google.monitoring.v3.GroupService.GetGroup,
+ google.monitoring.v3.GroupService.ListGroupMembers,
+ google.monitoring.v3.GroupService.ListGroups
+ oauth:
+ canonical_scopes: |-
+ https://www.googleapis.com/auth/cloud-platform,
+ https://www.googleapis.com/auth/monitoring,
+ https://www.googleapis.com/auth/monitoring.read
+ - selector: |-
+ google.monitoring.v3.UptimeCheckService.GetUptimeCheckConfig,
+ google.monitoring.v3.UptimeCheckService.ListUptimeCheckConfigs,
+ google.monitoring.v3.UptimeCheckService.ListUptimeCheckIps
+ oauth:
+ canonical_scopes: |-
+ https://www.googleapis.com/auth/cloud-platform,
+ https://www.googleapis.com/auth/monitoring,
+ https://www.googleapis.com/auth/monitoring.read
+ - selector: |-
+ google.monitoring.v3.AlertPolicyService.GetAlertPolicy,
+ google.monitoring.v3.AlertPolicyService.ListAlertPolicies
+ oauth:
+ canonical_scopes: |-
+ https://www.googleapis.com/auth/cloud-platform,
+ https://www.googleapis.com/auth/monitoring,
+ https://www.googleapis.com/auth/monitoring.read
+ - selector: |-
+ google.monitoring.v3.MetricService.CreateMetricDescriptor,
+ google.monitoring.v3.MetricService.CreateTimeSeries
+ oauth:
+ canonical_scopes: |-
+ https://www.googleapis.com/auth/cloud-platform,
+ https://www.googleapis.com/auth/monitoring,
+ https://www.googleapis.com/auth/monitoring.write
+ - selector: google.monitoring.v3.AgentTranslationService.CreateCollectdTimeSeries
+ oauth:
+ canonical_scopes: |-
+ https://www.googleapis.com/auth/cloud-platform,
+ https://www.googleapis.com/auth/monitoring,
+ https://www.googleapis.com/auth/monitoring.write
+ - selector: google.monitoring.v3.MetricService.ListTimeSeries
+ oauth:
+ canonical_scopes: |-
+ https://www.googleapis.com/auth/cloud-platform,
+ https://www.googleapis.com/auth/monitoring,
+ https://www.googleapis.com/auth/monitoring.read
diff --git a/google/monitoring/v3/BUILD.bazel b/google/monitoring/v3/BUILD.bazel
new file mode 100644
index 000000000..9df9ce47c
--- /dev/null
+++ b/google/monitoring/v3/BUILD.bazel
@@ -0,0 +1,176 @@
+# This is an API workspace, having public visibility by default makes perfect sense.
+package(default_visibility = ["//visibility:public"])
+
+##############################################################################
+# Common
+##############################################################################
+load("@com_google_api_codegen//rules_gapic:gapic.bzl", "proto_library_with_info")
+
+proto_library(
+ name = "monitoring_proto",
+ srcs = [
+ "alert.proto",
+ "alert_service.proto",
+ "common.proto",
+ "dropped_labels.proto",
+ "group.proto",
+ "group_service.proto",
+ "metric.proto",
+ "metric_service.proto",
+ "mutation_record.proto",
+ "notification.proto",
+ "notification_service.proto",
+ "span_context.proto",
+ "uptime.proto",
+ "uptime_service.proto",
+ ],
+ deps = [
+ "//google/api:annotations_proto",
+ "//google/api:distribution_proto",
+ "//google/api:label_proto",
+ "//google/api:metric_proto",
+ "//google/api:monitored_resource_proto",
+ "//google/longrunning:operations_proto",
+ "//google/rpc:status_proto",
+ "@com_google_protobuf//:duration_proto",
+ "@com_google_protobuf//:empty_proto",
+ "@com_google_protobuf//:field_mask_proto",
+ "@com_google_protobuf//:struct_proto",
+ "@com_google_protobuf//:timestamp_proto",
+ "@com_google_protobuf//:wrappers_proto",
+ ],
+)
+
+proto_library_with_info(
+ name = "monitoring_proto_with_info",
+ deps = [":monitoring_proto"],
+)
+
+##############################################################################
+# Java
+##############################################################################
+load("@io_grpc_grpc_java//:java_grpc_library.bzl", "java_grpc_library")
+load(
+ "@com_google_api_codegen//rules_gapic/java:java_gapic.bzl",
+ "java_gapic_library",
+ "java_resource_name_proto_library",
+)
+load("@com_google_api_codegen//rules_gapic/java:java_gapic_pkg.bzl", "java_gapic_assembly_gradle_pkg")
+
+_JAVA_GRPC_DEPS = [
+ "@com_google_api_grpc_proto_google_common_protos//jar",
+]
+
+java_proto_library(
+ name = "monitoring_java_proto",
+ deps = [":monitoring_proto"],
+)
+
+java_grpc_library(
+ name = "monitoring_java_grpc",
+ srcs = [":monitoring_proto"],
+ deps = [":monitoring_java_proto"] + _JAVA_GRPC_DEPS,
+)
+
+java_resource_name_proto_library(
+ name = "monitoring_resource_name_java_proto",
+ gapic_yaml = "monitoring_gapic.yaml",
+ deps = [":monitoring_proto"],
+)
+
+java_gapic_library(
+ name = "monitoring_java_gapic",
+ src = ":monitoring_proto_with_info",
+ gapic_yaml = "monitoring_gapic.yaml",
+ service_yaml = "//google/monitoring:monitoring.yaml",
+ test_deps = [":monitoring_java_grpc"],
+ deps = [
+ ":monitoring_java_proto",
+ ":monitoring_resource_name_java_proto",
+ ] + _JAVA_GRPC_DEPS,
+)
+
+[java_test(
+ name = test_name,
+ test_class = test_name,
+ runtime_deps = [
+ ":monitoring_java_gapic_test",
+ ],
+) for test_name in [
+ "com.google.cloud.monitoring.v3.AlertPolicyServiceClientTest",
+ "com.google.cloud.monitoring.v3.GroupServiceClientTest",
+ "com.google.cloud.monitoring.v3.MetricServiceClientTest",
+ "com.google.cloud.monitoring.v3.NotificationChannelServiceClientTest",
+ "com.google.cloud.monitoring.v3.UptimeCheckServiceClientTest",
+]]
+
+# Opensource Packages
+java_gapic_assembly_gradle_pkg(
+ name = "google-cloud-monitoring-v3-java",
+ client_deps = [":monitoring_java_gapic"],
+ client_group = "com.google.cloud",
+ client_test_deps = [":monitoring_java_gapic_test"],
+ grpc_deps = [":monitoring_java_grpc"],
+ grpc_group = "com.google.api.grpc",
+ proto_deps = [
+ ":monitoring_java_proto",
+ ":monitoring_proto",
+ ":monitoring_resource_name_java_proto",
+ ] + _JAVA_GRPC_DEPS,
+ version = "0.0.0-SNAPSHOT",
+)
+
+##############################################################################
+# Go
+##############################################################################
+load("@io_bazel_rules_go//proto:def.bzl", "go_proto_library")
+load("@com_google_api_codegen//rules_gapic/go:go_gapic.bzl", "go_gapic_srcjar", "go_gapic_library")
+load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test")
+load("@com_google_api_codegen//rules_gapic/go:go_gapic_pkg.bzl", "go_gapic_assembly_pkg")
+
+go_proto_library(
+ name = "monitoring_go_proto",
+ compilers = ["@io_bazel_rules_go//proto:go_grpc"],
+ importpath = "google.golang.org/genproto/googleapis/monitoring/v3",
+ protos = [":monitoring_proto_with_info"],
+ deps = [
+ "//google/api:annotations_go_proto",
+ "//google/api:distribution_go_proto",
+ "//google/api:label_go_proto",
+ "//google/api:metric_go_proto",
+ "//google/api:monitoredres_go_proto",
+ "//google/longrunning:longrunning_go_proto",
+ "//google/rpc:status_go_proto",
+ ],
+)
+
+go_gapic_library(
+ name = "monitoring_go_gapic",
+ src = ":monitoring_proto_with_info",
+ gapic_yaml = "monitoring_gapic.yaml",
+ importpath = "cloud.google.com/go/monitoring/apiv3",
+ service_yaml = "//google/monitoring:monitoring.yaml",
+ deps = [
+ ":monitoring_go_proto",
+ "//google/api:metric_go_proto",
+ "//google/api:monitoredres_go_proto",
+ ],
+)
+
+go_test(
+ name = "monitoring_go_gapic_test",
+ srcs = [":monitoring_go_gapic_srcjar_test"],
+ embed = [":monitoring_go_gapic"],
+ importpath = "cloud.google.com/go/monitoring/apiv3",
+)
+
+# Opensource Packages
+go_gapic_assembly_pkg(
+ name = "gapi-cloud-monitoring-v3-go",
+ deps = [
+ ":monitoring_go_gapic",
+ ":monitoring_go_gapic_srcjar-smoke-test.srcjar",
+ ":monitoring_go_gapic_srcjar-test.srcjar",
+ ":monitoring_go_proto",
+ ],
+)
diff --git a/google/monitoring/v3/alert.proto b/google/monitoring/v3/alert.proto
new file mode 100644
index 000000000..3b3e1dca2
--- /dev/null
+++ b/google/monitoring/v3/alert.proto
@@ -0,0 +1,347 @@
+// Copyright 2018 Google LLC.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+syntax = "proto3";
+
+package google.monitoring.v3;
+
+import "google/api/annotations.proto";
+import "google/monitoring/v3/common.proto";
+import "google/monitoring/v3/mutation_record.proto";
+import "google/protobuf/duration.proto";
+import "google/protobuf/wrappers.proto";
+
+option csharp_namespace = "Google.Cloud.Monitoring.V3";
+option go_package = "google.golang.org/genproto/googleapis/monitoring/v3;monitoring";
+option java_multiple_files = true;
+option java_outer_classname = "AlertProto";
+option java_package = "com.google.monitoring.v3";
+option php_namespace = "Google\\Cloud\\Monitoring\\V3";
+
+// A description of the conditions under which some aspect of your system is
+// considered to be "unhealthy" and the ways to notify people or services about
+// this state. For an overview of alert policies, see
+// [Introduction to Alerting](/monitoring/alerts/).
+message AlertPolicy {
+ // A content string and a MIME type that describes the content string's
+ // format.
+ message Documentation {
+ // The text of the documentation, interpreted according to `mime_type`.
+ // The content may not exceed 8,192 Unicode characters and may not exceed
+ // more than 10,240 bytes when encoded in UTF-8 format, whichever is
+ // smaller.
+ string content = 1;
+
+ // The format of the `content` field. Presently, only the value
+ // `"text/markdown"` is supported. See
+ // [Markdown](https://en.wikipedia.org/wiki/Markdown) for more information.
+ string mime_type = 2;
+ }
+
+ // A condition is a true/false test that determines when an alerting policy
+ // should open an incident. If a condition evaluates to true, it signifies
+ // that something is wrong.
+ message Condition {
+ // Specifies how many time series must fail a predicate to trigger a
+ // condition. If not specified, then a `{count: 1}` trigger is used.
+ message Trigger {
+ // A type of trigger.
+ oneof type {
+ // The absolute number of time series that must fail
+ // the predicate for the condition to be triggered.
+ int32 count = 1;
+
+ // The percentage of time series that must fail the
+ // predicate for the condition to be triggered.
+ double percent = 2;
+ }
+ }
+
+ // A condition type that compares a collection of time series
+ // against a threshold.
+ message MetricThreshold {
+ // A [filter](/monitoring/api/v3/filters) that
+ // identifies which time series should be compared with the threshold.
+ //
+ // The filter is similar to the one that is specified in the
+ // [`MetricService.ListTimeSeries`
+ // request](/monitoring/api/ref_v3/rest/v3/projects.timeSeries/list) (that
+ // call is useful to verify the time series that will be retrieved /
+ // processed) and must specify the metric type and optionally may contain
+ // restrictions on resource type, resource labels, and metric labels.
+ // This field may not exceed 2048 Unicode characters in length.
+ string filter = 2;
+
+ // Specifies the alignment of data points in individual time series as
+ // well as how to combine the retrieved time series together (such as
+ // when aggregating multiple streams on each resource to a single
+ // stream for each resource or when aggregating streams across all
+ // members of a group of resrouces). Multiple aggregations
+ // are applied in the order specified.
+ //
+ // This field is similar to the one in the
+ // [`MetricService.ListTimeSeries`
+ // request](/monitoring/api/ref_v3/rest/v3/projects.timeSeries/list). It
+ // is advisable to use the `ListTimeSeries` method when debugging this
+ // field.
+ repeated Aggregation aggregations = 8;
+
+ // A [filter](/monitoring/api/v3/filters) that identifies a time
+ // series that should be used as the denominator of a ratio that will be
+ // compared with the threshold. If a `denominator_filter` is specified,
+ // the time series specified by the `filter` field will be used as the
+ // numerator.
+ //
+ // The filter is similar to the one that is specified in the
+ // [`MetricService.ListTimeSeries`
+ // request](/monitoring/api/ref_v3/rest/v3/projects.timeSeries/list) (that
+ // call is useful to verify the time series that will be retrieved /
+ // processed) and must specify the metric type and optionally may contain
+ // restrictions on resource type, resource labels, and metric labels.
+ // This field may not exceed 2048 Unicode characters in length.
+ string denominator_filter = 9;
+
+ // Specifies the alignment of data points in individual time series
+ // selected by `denominatorFilter` as
+ // well as how to combine the retrieved time series together (such as
+ // when aggregating multiple streams on each resource to a single
+ // stream for each resource or when aggregating streams across all
+ // members of a group of resources).
+ //
+ // When computing ratios, the `aggregations` and
+ // `denominator_aggregations` fields must use the same alignment period
+ // and produce time series that have the same periodicity and labels.
+ //
+ // This field is similar to the one in the
+ // [`MetricService.ListTimeSeries`
+ // request](/monitoring/api/ref_v3/rest/v3/projects.timeSeries/list). It
+ // is advisable to use the `ListTimeSeries` method when debugging this
+ // field.
+ repeated Aggregation denominator_aggregations = 10;
+
+ // The comparison to apply between the time series (indicated by `filter`
+ // and `aggregation`) and the threshold (indicated by `threshold_value`).
+ // The comparison is applied on each time series, with the time series
+ // on the left-hand side and the threshold on the right-hand side.
+ //
+ // Only `COMPARISON_LT` and `COMPARISON_GT` are supported currently.
+ ComparisonType comparison = 4;
+
+ // A value against which to compare the time series.
+ double threshold_value = 5;
+
+ // The amount of time that a time series must violate the
+ // threshold to be considered failing. Currently, only values
+ // that are a multiple of a minute--e.g., 0, 60, 120, or 300
+ // seconds--are supported. If an invalid value is given, an
+ // error will be returned. When choosing a duration, it is useful to
+ // keep in mind the frequency of the underlying time series data
+ // (which may also be affected by any alignments specified in the
+ // `aggregations` field); a good duration is long enough so that a single
+ // outlier does not generate spurious alerts, but short enough that
+ // unhealthy states are detected and alerted on quickly.
+ google.protobuf.Duration duration = 6;
+
+ // The number/percent of time series for which the comparison must hold
+ // in order for the condition to trigger. If unspecified, then the
+ // condition will trigger if the comparison is true for any of the
+ // time series that have been identified by `filter` and `aggregations`,
+ // or by the ratio, if `denominator_filter` and `denominator_aggregations`
+ // are specified.
+ Trigger trigger = 7;
+ }
+
+ // A condition type that checks that monitored resources
+ // are reporting data. The configuration defines a metric and
+ // a set of monitored resources. The predicate is considered in violation
+ // when a time series for the specified metric of a monitored
+ // resource does not include any data in the specified `duration`.
+ message MetricAbsence {
+ // A [filter](/monitoring/api/v3/filters) that
+ // identifies which time series should be compared with the threshold.
+ //
+ // The filter is similar to the one that is specified in the
+ // [`MetricService.ListTimeSeries`
+ // request](/monitoring/api/ref_v3/rest/v3/projects.timeSeries/list) (that
+ // call is useful to verify the time series that will be retrieved /
+ // processed) and must specify the metric type and optionally may contain
+ // restrictions on resource type, resource labels, and metric labels.
+ // This field may not exceed 2048 Unicode characters in length.
+ string filter = 1;
+
+ // Specifies the alignment of data points in individual time series as
+ // well as how to combine the retrieved time series together (such as
+ // when aggregating multiple streams on each resource to a single
+ // stream for each resource or when aggregating streams across all
+ // members of a group of resrouces). Multiple aggregations
+ // are applied in the order specified.
+ //
+ // This field is similar to the
+ // one in the [`MetricService.ListTimeSeries`
+ // request](/monitoring/api/ref_v3/rest/v3/projects.timeSeries/list). It
+ // is advisable to use the `ListTimeSeries` method when debugging this
+ // field.
+ repeated Aggregation aggregations = 5;
+
+ // The amount of time that a time series must fail to report new
+ // data to be considered failing. Currently, only values that
+ // are a multiple of a minute--e.g. 60, 120, or 300
+ // seconds--are supported. If an invalid value is given, an
+ // error will be returned. The `Duration.nanos` field is
+ // ignored.
+ google.protobuf.Duration duration = 2;
+
+ // The number/percent of time series for which the comparison must hold
+ // in order for the condition to trigger. If unspecified, then the
+ // condition will trigger if the comparison is true for any of the
+ // time series that have been identified by `filter` and `aggregations`.
+ Trigger trigger = 3;
+ }
+
+ // Required if the condition exists. The unique resource name for this
+ // condition. Its syntax is:
+ //
+ // projects/[PROJECT_ID]/alertPolicies/[POLICY_ID]/conditions/[CONDITION_ID]
+ //
+ // `[CONDITION_ID]` is assigned by Stackdriver Monitoring when the
+ // condition is created as part of a new or updated alerting policy.
+ //
+ // When calling the
+ // [alertPolicies.create][google.monitoring.v3.AlertPolicyService.CreateAlertPolicy]
+ // method, do not include the `name` field in the conditions of the
+ // requested alerting policy. Stackdriver Monitoring creates the
+ // condition identifiers and includes them in the new policy.
+ //
+ // When calling the
+ // [alertPolicies.update][google.monitoring.v3.AlertPolicyService.UpdateAlertPolicy]
+ // method to update a policy, including a condition `name` causes the
+ // existing condition to be updated. Conditions without names are added to
+ // the updated policy. Existing conditions are deleted if they are not
+ // updated.
+ //
+ // Best practice is to preserve `[CONDITION_ID]` if you make only small
+ // changes, such as those to condition thresholds, durations, or trigger
+ // values. Otherwise, treat the change as a new condition and let the
+ // existing condition be deleted.
+ string name = 12;
+
+ // A short name or phrase used to identify the condition in dashboards,
+ // notifications, and incidents. To avoid confusion, don't use the same
+ // display name for multiple conditions in the same policy.
+ string display_name = 6;
+
+ // Only one of the following condition types will be specified.
+ oneof condition {
+ // A condition that compares a time series against a threshold.
+ MetricThreshold condition_threshold = 1;
+
+ // A condition that checks that a time series continues to
+ // receive new data points.
+ MetricAbsence condition_absent = 2;
+ }
+ }
+
+ // Operators for combining conditions.
+ enum ConditionCombinerType {
+ // An unspecified combiner.
+ COMBINE_UNSPECIFIED = 0;
+
+ // Combine conditions using the logical `AND` operator. An
+ // incident is created only if all conditions are met
+ // simultaneously. This combiner is satisfied if all conditions are
+ // met, even if they are met on completely different resources.
+ AND = 1;
+
+ // Combine conditions using the logical `OR` operator. An incident
+ // is created if any of the listed conditions is met.
+ OR = 2;
+
+ // Combine conditions using logical `AND` operator, but unlike the regular
+ // `AND` option, an incident is created only if all conditions are met
+ // simultaneously on at least one resource.
+ AND_WITH_MATCHING_RESOURCE = 3;
+ }
+
+ // Required if the policy exists. The resource name for this policy. The
+ // syntax is:
+ //
+ // projects/[PROJECT_ID]/alertPolicies/[ALERT_POLICY_ID]
+ //
+ // `[ALERT_POLICY_ID]` is assigned by Stackdriver Monitoring when the policy
+ // is created. When calling the
+ // [alertPolicies.create][google.monitoring.v3.AlertPolicyService.CreateAlertPolicy]
+ // method, do not include the `name` field in the alerting policy passed as
+ // part of the request.
+ string name = 1;
+
+ // A short name or phrase used to identify the policy in dashboards,
+ // notifications, and incidents. To avoid confusion, don't use the same
+ // display name for multiple policies in the same project. The name is
+ // limited to 512 Unicode characters.
+ string display_name = 2;
+
+ // Documentation that is included with notifications and incidents related to
+ // this policy. Best practice is for the documentation to include information
+ // to help responders understand, mitigate, escalate, and correct the
+ // underlying problems detected by the alerting policy. Notification channels
+ // that have limited capacity might not show this documentation.
+ Documentation documentation = 13;
+
+ // User-supplied key/value data to be used for organizing and
+ // identifying the `AlertPolicy` objects.
+ //
+ // The field can contain up to 64 entries. Each key and value is limited to
+ // 63 Unicode characters or 128 bytes, whichever is smaller. Labels and
+ // values can contain only lowercase letters, numerals, underscores, and
+ // dashes. Keys must begin with a letter.
+ map<string, string> user_labels = 16;
+
+ // A list of conditions for the policy. The conditions are combined by AND or
+ // OR according to the `combiner` field. If the combined conditions evaluate
+ // to true, then an incident is created. A policy can have from one to six
+ // conditions.
+ repeated Condition conditions = 12;
+
+ // How to combine the results of multiple conditions
+ // to determine if an incident should be opened.
+ ConditionCombinerType combiner = 6;
+
+ // Whether or not the policy is enabled. On write, the default interpretation
+ // if unset is that the policy is enabled. On read, clients should not make
+ // any assumption about the state if it has not been populated. The
+ // field should always be populated on List and Get operations, unless
+ // a field projection has been specified that strips it out.
+ google.protobuf.BoolValue enabled = 17;
+
+ // Identifies the notification channels to which notifications should be sent
+ // when incidents are opened or closed or when new violations occur on
+ // an already opened incident. Each element of this array corresponds to
+ // the `name` field in each of the
+ // [`NotificationChannel`][google.monitoring.v3.NotificationChannel]
+ // objects that are returned from the [`ListNotificationChannels`]
+ // [google.monitoring.v3.NotificationChannelService.ListNotificationChannels]
+ // method. The syntax of the entries in this field is:
+ //
+ // projects/[PROJECT_ID]/notificationChannels/[CHANNEL_ID]
+ repeated string notification_channels = 14;
+
+ // A read-only record of the creation of the alerting policy. If provided
+ // in a call to create or update, this field will be ignored.
+ MutationRecord creation_record = 10;
+
+ // A read-only record of the most recent change to the alerting policy. If
+ // provided in a call to create or update, this field will be ignored.
+ MutationRecord mutation_record = 11;
+}
diff --git a/google/monitoring/v3/alert_service.proto b/google/monitoring/v3/alert_service.proto
new file mode 100644
index 000000000..0dedca113
--- /dev/null
+++ b/google/monitoring/v3/alert_service.proto
@@ -0,0 +1,199 @@
+// Copyright 2018 Google LLC.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+syntax = "proto3";
+
+package google.monitoring.v3;
+
+import "google/api/annotations.proto";
+import "google/monitoring/v3/alert.proto";
+import "google/protobuf/empty.proto";
+import "google/protobuf/field_mask.proto";
+
+option csharp_namespace = "Google.Cloud.Monitoring.V3";
+option go_package = "google.golang.org/genproto/googleapis/monitoring/v3;monitoring";
+option java_multiple_files = true;
+option java_outer_classname = "AlertServiceProto";
+option java_package = "com.google.monitoring.v3";
+option php_namespace = "Google\\Cloud\\Monitoring\\V3";
+
+// The AlertPolicyService API is used to manage (list, create, delete,
+// edit) alert policies in Stackdriver Monitoring. An alerting policy is
+// a description of the conditions under which some aspect of your
+// system is considered to be "unhealthy" and the ways to notify
+// people or services about this state. In addition to using this API, alert
+// policies can also be managed through
+// [Stackdriver Monitoring](https://cloud.google.com/monitoring/docs/),
+// which can be reached by clicking the "Monitoring" tab in
+// [Cloud Console](https://console.cloud.google.com/).
+service AlertPolicyService {
+ // Lists the existing alerting policies for the project.
+ rpc ListAlertPolicies(ListAlertPoliciesRequest)
+ returns (ListAlertPoliciesResponse) {
+ option (google.api.http) = {
+ get: "/v3/{name=projects/*}/alertPolicies"
+ };
+ }
+
+ // Gets a single alerting policy.
+ rpc GetAlertPolicy(GetAlertPolicyRequest) returns (AlertPolicy) {
+ option (google.api.http) = {
+ get: "/v3/{name=projects/*/alertPolicies/*}"
+ };
+ }
+
+ // Creates a new alerting policy.
+ rpc CreateAlertPolicy(CreateAlertPolicyRequest) returns (AlertPolicy) {
+ option (google.api.http) = {
+ post: "/v3/{name=projects/*}/alertPolicies"
+ body: "alert_policy"
+ };
+ }
+
+ // Deletes an alerting policy.
+ rpc DeleteAlertPolicy(DeleteAlertPolicyRequest)
+ returns (google.protobuf.Empty) {
+ option (google.api.http) = {
+ delete: "/v3/{name=projects/*/alertPolicies/*}"
+ };
+ }
+
+ // Updates an alerting policy. You can either replace the entire policy with
+ // a new one or replace only certain fields in the current alerting policy by
+ // specifying the fields to be updated via `updateMask`. Returns the
+ // updated alerting policy.
+ rpc UpdateAlertPolicy(UpdateAlertPolicyRequest) returns (AlertPolicy) {
+ option (google.api.http) = {
+ patch: "/v3/{alert_policy.name=projects/*/alertPolicies/*}"
+ body: "alert_policy"
+ };
+ }
+}
+
+// The protocol for the `CreateAlertPolicy` request.
+message CreateAlertPolicyRequest {
+ // The project in which to create the alerting policy. The format is
+ // `projects/[PROJECT_ID]`.
+ //
+ // Note that this field names the parent container in which the alerting
+ // policy will be written, not the name of the created policy. The alerting
+ // policy that is returned will have a name that contains a normalized
+ // representation of this name as a prefix but adds a suffix of the form
+ // `/alertPolicies/[POLICY_ID]`, identifying the policy in the container.
+ string name = 3;
+
+ // The requested alerting policy. You should omit the `name` field in this
+ // policy. The name will be returned in the new policy, including
+ // a new [ALERT_POLICY_ID] value.
+ AlertPolicy alert_policy = 2;
+}
+
+// The protocol for the `GetAlertPolicy` request.
+message GetAlertPolicyRequest {
+ // The alerting policy to retrieve. The format is
+ //
+ // projects/[PROJECT_ID]/alertPolicies/[ALERT_POLICY_ID]
+ string name = 3;
+}
+
+// The protocol for the `ListAlertPolicies` request.
+message ListAlertPoliciesRequest {
+ // The project whose alert policies are to be listed. The format is
+ //
+ // projects/[PROJECT_ID]
+ //
+ // Note that this field names the parent container in which the alerting
+ // policies to be listed are stored. To retrieve a single alerting policy
+ // by name, use the
+ // [GetAlertPolicy][google.monitoring.v3.AlertPolicyService.GetAlertPolicy]
+ // operation, instead.
+ string name = 4;
+
+ // If provided, this field specifies the criteria that must be met by
+ // alert policies to be included in the response.
+ //
+ // For more details, see [sorting and
+ // filtering](/monitoring/api/v3/sorting-and-filtering).
+ string filter = 5;
+
+ // A comma-separated list of fields by which to sort the result. Supports
+ // the same set of field references as the `filter` field. Entries can be
+ // prefixed with a minus sign to sort by the field in descending order.
+ //
+ // For more details, see [sorting and
+ // filtering](/monitoring/api/v3/sorting-and-filtering).
+ string order_by = 6;
+
+ // The maximum number of results to return in a single response.
+ int32 page_size = 2;
+
+ // 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 more results from the previous method call.
+ string page_token = 3;
+}
+
+// The protocol for the `ListAlertPolicies` response.
+message ListAlertPoliciesResponse {
+ // The returned alert policies.
+ repeated AlertPolicy alert_policies = 3;
+
+ // If there might be more results than were returned, then this field is set
+ // to a non-empty value. To see the additional results,
+ // use that value as `pageToken` in the next call to this method.
+ string next_page_token = 2;
+}
+
+// The protocol for the `UpdateAlertPolicy` request.
+message UpdateAlertPolicyRequest {
+ // Optional. A list of alerting policy field names. If this field is not
+ // empty, each listed field in the existing alerting policy is set to the
+ // value of the corresponding field in the supplied policy (`alert_policy`),
+ // or to the field's default value if the field is not in the supplied
+ // alerting policy. Fields not listed retain their previous value.
+ //
+ // Examples of valid field masks include `display_name`, `documentation`,
+ // `documentation.content`, `documentation.mime_type`, `user_labels`,
+ // `user_label.nameofkey`, `enabled`, `conditions`, `combiner`, etc.
+ //
+ // If this field is empty, then the supplied alerting policy replaces the
+ // existing policy. It is the same as deleting the existing policy and
+ // adding the supplied policy, except for the following:
+ //
+ // + The new policy will have the same `[ALERT_POLICY_ID]` as the former
+ // policy. This gives you continuity with the former policy in your
+ // notifications and incidents.
+ // + Conditions in the new policy will keep their former `[CONDITION_ID]` if
+ // the supplied condition includes the `name` field with that
+ // `[CONDITION_ID]`. If the supplied condition omits the `name` field,
+ // then a new `[CONDITION_ID]` is created.
+ google.protobuf.FieldMask update_mask = 2;
+
+ // Required. The updated alerting policy or the updated values for the
+ // fields listed in `update_mask`.
+ // If `update_mask` is not empty, any fields in this policy that are
+ // not in `update_mask` are ignored.
+ AlertPolicy alert_policy = 3;
+}
+
+// The protocol for the `DeleteAlertPolicy` request.
+message DeleteAlertPolicyRequest {
+ // The alerting policy to delete. The format is:
+ //
+ // projects/[PROJECT_ID]/alertPolicies/[ALERT_POLICY_ID]
+ //
+ // For more information, see [AlertPolicy][google.monitoring.v3.AlertPolicy].
+ string name = 3;
+}
diff --git a/google/monitoring/v3/common.proto b/google/monitoring/v3/common.proto
new file mode 100644
index 000000000..73ca2c4ad
--- /dev/null
+++ b/google/monitoring/v3/common.proto
@@ -0,0 +1,418 @@
+// Copyright 2018 Google LLC.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+syntax = "proto3";
+
+package google.monitoring.v3;
+
+import "google/api/annotations.proto";
+import "google/api/distribution.proto";
+import "google/protobuf/duration.proto";
+import "google/protobuf/timestamp.proto";
+
+option csharp_namespace = "Google.Cloud.Monitoring.V3";
+option go_package = "google.golang.org/genproto/googleapis/monitoring/v3;monitoring";
+option java_multiple_files = true;
+option java_outer_classname = "CommonProto";
+option java_package = "com.google.monitoring.v3";
+option php_namespace = "Google\\Cloud\\Monitoring\\V3";
+
+// A single strongly-typed value.
+message TypedValue {
+ // The typed value field.
+ oneof value {
+ // A Boolean value: `true` or `false`.
+ bool bool_value = 1;
+
+ // A 64-bit integer. Its range is approximately &plusmn;9.2x10<sup>18</sup>.
+ int64 int64_value = 2;
+
+ // A 64-bit double-precision floating-point number. Its magnitude
+ // is approximately &plusmn;10<sup>&plusmn;300</sup> and it has 16
+ // significant digits of precision.
+ double double_value = 3;
+
+ // A variable-length string value.
+ string string_value = 4;
+
+ // A distribution value.
+ google.api.Distribution distribution_value = 5;
+ }
+}
+
+// A time interval extending just after a start time through an end time.
+// If the start time is the same as the end time, then the interval
+// represents a single point in time.
+message TimeInterval {
+ // Required. The end of the time interval.
+ google.protobuf.Timestamp end_time = 2;
+
+ // 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.
+ google.protobuf.Timestamp start_time = 1;
+}
+
+// Describes how to combine multiple time series to provide different views of
+// the data. Aggregation consists of an alignment step on individual time
+// series (`alignment_period` and `per_series_aligner`) followed by an optional
+// reduction step of the data across the aligned time series
+// (`cross_series_reducer` and `group_by_fields`). For more details, see
+// [Aggregation](/monitoring/api/learn_more#aggregation).
+message Aggregation {
+ // The Aligner describes how to bring the data points in a single
+ // time series into temporal alignment.
+ enum Aligner {
+ // No alignment. Raw data is returned. Not valid if cross-time
+ // series reduction is requested. The value type of the result is
+ // the same as the value type of the input.
+ ALIGN_NONE = 0;
+
+ // Align and convert to delta metric type. This alignment is valid
+ // for cumulative metrics and delta metrics. Aligning an existing
+ // delta metric to a delta metric requires that the alignment
+ // period be increased. The value type of the result is the same
+ // as the value type of the input.
+ //
+ // One can think of this aligner as a rate but without time units; that
+ // is, the output is conceptually (second_point - first_point).
+ ALIGN_DELTA = 1;
+
+ // Align and convert to a rate. This alignment is valid for
+ // cumulative metrics and delta metrics with numeric values. The output is a
+ // gauge metric with value type
+ // [DOUBLE][google.api.MetricDescriptor.ValueType.DOUBLE].
+ //
+ // One can think of this aligner as conceptually providing the slope of
+ // the line that passes through the value at the start and end of the
+ // window. In other words, this is conceptually ((y1 - y0)/(t1 - t0)),
+ // and the output unit is one that has a "/time" dimension.
+ //
+ // If, by rate, you are looking for percentage change, see the
+ // `ALIGN_PERCENT_CHANGE` aligner option.
+ ALIGN_RATE = 2;
+
+ // Align by interpolating between adjacent points around the
+ // period boundary. This alignment is valid for gauge
+ // metrics with numeric values. The value type of the result is the same
+ // as the value type of the input.
+ ALIGN_INTERPOLATE = 3;
+
+ // Align by shifting the oldest data point before the period
+ // boundary to the boundary. This alignment is valid for gauge
+ // metrics. The value type of the result is the same as the
+ // value type of the input.
+ ALIGN_NEXT_OLDER = 4;
+
+ // Align time series via aggregation. The resulting data point in
+ // the alignment period is the minimum of all data points in the
+ // period. This alignment is valid for gauge and delta metrics with numeric
+ // values. The value type of the result is the same as the value
+ // type of the input.
+ ALIGN_MIN = 10;
+
+ // Align time series via aggregation. The resulting data point in
+ // the alignment period is the maximum of all data points in the
+ // period. This alignment is valid for gauge and delta metrics with numeric
+ // values. The value type of the result is the same as the value
+ // type of the input.
+ ALIGN_MAX = 11;
+
+ // Align time series via aggregation. The resulting data point in
+ // the alignment period is the average or arithmetic mean of all
+ // data points in the period. This alignment is valid for gauge and delta
+ // metrics with numeric values. The value type of the output is
+ // [DOUBLE][google.api.MetricDescriptor.ValueType.DOUBLE].
+ ALIGN_MEAN = 12;
+
+ // Align time series via aggregation. The resulting data point in
+ // the alignment period is the count of all data points in the
+ // period. This alignment is valid for gauge and delta metrics with numeric
+ // or Boolean values. The value type of the output is
+ // [INT64][google.api.MetricDescriptor.ValueType.INT64].
+ ALIGN_COUNT = 13;
+
+ // Align time series via aggregation. The resulting data point in
+ // the alignment period is the sum of all data points in the
+ // period. This alignment is valid for gauge and delta metrics with numeric
+ // and distribution values. The value type of the output is the
+ // same as the value type of the input.
+ ALIGN_SUM = 14;
+
+ // Align time series via aggregation. The resulting data point in
+ // the alignment period is the standard deviation of all data
+ // points in the period. This alignment is valid for gauge and delta metrics
+ // with numeric values. The value type of the output is
+ // [DOUBLE][google.api.MetricDescriptor.ValueType.DOUBLE].
+ ALIGN_STDDEV = 15;
+
+ // Align time series via aggregation. The resulting data point in
+ // the alignment period is the count of True-valued data points in the
+ // period. This alignment is valid for gauge metrics with
+ // Boolean values. The value type of the output is
+ // [INT64][google.api.MetricDescriptor.ValueType.INT64].
+ ALIGN_COUNT_TRUE = 16;
+
+ // Align time series via aggregation. The resulting data point in
+ // the alignment period is the count of False-valued data points in the
+ // period. This alignment is valid for gauge metrics with
+ // Boolean values. The value type of the output is
+ // [INT64][google.api.MetricDescriptor.ValueType.INT64].
+ ALIGN_COUNT_FALSE = 24;
+
+ // Align time series via aggregation. The resulting data point in
+ // the alignment period is the fraction of True-valued data points in the
+ // period. This alignment is valid for gauge metrics with Boolean values.
+ // The output value is in the range [0, 1] and has value type
+ // [DOUBLE][google.api.MetricDescriptor.ValueType.DOUBLE].
+ ALIGN_FRACTION_TRUE = 17;
+
+ // Align time series via aggregation. The resulting data point in
+ // the alignment period is the 99th percentile of all data
+ // points in the period. This alignment is valid for gauge and delta metrics
+ // with distribution values. The output is a gauge metric with value type
+ // [DOUBLE][google.api.MetricDescriptor.ValueType.DOUBLE].
+ ALIGN_PERCENTILE_99 = 18;
+
+ // Align time series via aggregation. The resulting data point in
+ // the alignment period is the 95th percentile of all data
+ // points in the period. This alignment is valid for gauge and delta metrics
+ // with distribution values. The output is a gauge metric with value type
+ // [DOUBLE][google.api.MetricDescriptor.ValueType.DOUBLE].
+ ALIGN_PERCENTILE_95 = 19;
+
+ // Align time series via aggregation. The resulting data point in
+ // the alignment period is the 50th percentile of all data
+ // points in the period. This alignment is valid for gauge and delta metrics
+ // with distribution values. The output is a gauge metric with value type
+ // [DOUBLE][google.api.MetricDescriptor.ValueType.DOUBLE].
+ ALIGN_PERCENTILE_50 = 20;
+
+ // Align time series via aggregation. The resulting data point in
+ // the alignment period is the 5th percentile of all data
+ // points in the period. This alignment is valid for gauge and delta metrics
+ // with distribution values. The output is a gauge metric with value type
+ // [DOUBLE][google.api.MetricDescriptor.ValueType.DOUBLE].
+ ALIGN_PERCENTILE_05 = 21;
+
+ // Align and convert to a percentage change. This alignment is valid for
+ // gauge and delta metrics with numeric values. This alignment conceptually
+ // computes the equivalent of "((current - previous)/previous)*100"
+ // where previous value is determined based on the alignmentPeriod.
+ // In the event that previous is 0 the calculated value is infinity with the
+ // exception that if both (current - previous) and previous are 0 the
+ // calculated value is 0.
+ // A 10 minute moving mean is computed at each point of the time window
+ // prior to the above calculation to smooth the metric and prevent false
+ // positives from very short lived spikes.
+ // Only applicable for data that is >= 0. Any values < 0 are treated as
+ // no data. 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][google.api.MetricDescriptor.ValueType.DOUBLE].
+ ALIGN_PERCENT_CHANGE = 23;
+ }
+
+ // A Reducer describes how to aggregate data points from multiple
+ // time series into a single time series.
+ enum Reducer {
+ // No cross-time series reduction. The output of the aligner is
+ // returned.
+ REDUCE_NONE = 0;
+
+ // Reduce by computing the mean 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][google.api.MetricDescriptor.ValueType.DOUBLE].
+ REDUCE_MEAN = 1;
+
+ // Reduce by computing the minimum 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_MIN = 2;
+
+ // Reduce by computing the maximum 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_MAX = 3;
+
+ // 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_SUM = 4;
+
+ // 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][google.api.MetricDescriptor.ValueType.DOUBLE].
+ REDUCE_STDDEV = 5;
+
+ // Reduce by computing the count 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][google.api.MetricDescriptor.ValueType.INT64].
+ REDUCE_COUNT = 6;
+
+ // Reduce by computing the count 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][google.api.MetricDescriptor.ValueType.INT64].
+ REDUCE_COUNT_TRUE = 7;
+
+ // Reduce by computing the count 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][google.api.MetricDescriptor.ValueType.INT64].
+ REDUCE_COUNT_FALSE = 15;
+
+ // Reduce by computing the fraction 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 output value is in the
+ // range [0, 1] and has value type
+ // [DOUBLE][google.api.MetricDescriptor.ValueType.DOUBLE].
+ REDUCE_FRACTION_TRUE = 8;
+
+ // Reduce by computing 99th 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][google.api.MetricDescriptor.ValueType.DOUBLE]
+ REDUCE_PERCENTILE_99 = 9;
+
+ // Reduce by computing 95th 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][google.api.MetricDescriptor.ValueType.DOUBLE]
+ REDUCE_PERCENTILE_95 = 10;
+
+ // Reduce by computing 50th 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][google.api.MetricDescriptor.ValueType.DOUBLE]
+ REDUCE_PERCENTILE_50 = 11;
+
+ // Reduce by computing 5th 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][google.api.MetricDescriptor.ValueType.DOUBLE]
+ REDUCE_PERCENTILE_05 = 12;
+ }
+
+ // The alignment period for per-[time series][google.monitoring.v3.TimeSeries]
+ // alignment. If present, `alignmentPeriod` must be at least 60
+ // seconds. After per-time series alignment, each time series will
+ // contain data points only on the period boundaries. If
+ // `perSeriesAligner` is not specified or equals `ALIGN_NONE`, then
+ // this field is ignored. If `perSeriesAligner` is specified and
+ // does not equal `ALIGN_NONE`, then this field must be defined;
+ // otherwise an error is returned.
+ google.protobuf.Duration alignment_period = 1;
+
+ // The approach to be used to align individual time series. Not all
+ // alignment functions may be applied to all time series, depending
+ // on the metric type and value type of the original time
+ // series. Alignment may change the metric type or the value type of
+ // the time series.
+ //
+ // Time series data must be aligned in order to perform cross-time
+ // series reduction. If `crossSeriesReducer` is specified, then
+ // `perSeriesAligner` must be specified and not equal `ALIGN_NONE`
+ // and `alignmentPeriod` must be specified; otherwise, an error is
+ // returned.
+ Aligner per_series_aligner = 2;
+
+ // The approach to be used to combine time series. Not all reducer
+ // functions may be applied to all time series, depending on the
+ // metric type and the value type of the original time
+ // series. Reduction may change the metric type of value type of the
+ // time series.
+ //
+ // Time series data must be aligned in order to perform cross-time
+ // series reduction. If `crossSeriesReducer` is specified, then
+ // `perSeriesAligner` must be specified and not equal `ALIGN_NONE`
+ // and `alignmentPeriod` must be specified; otherwise, an error is
+ // returned.
+ Reducer cross_series_reducer = 4;
+
+ // The set of fields to preserve when `crossSeriesReducer` is
+ // specified. The `groupByFields` determine how the time series are
+ // partitioned into subsets prior to applying the aggregation
+ // function. 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
+ // `crossSeriesReducer` 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 `groupByFields` are aggregated away. If
+ // `groupByFields` 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 `crossSeriesReducer` is not
+ // defined, this field is ignored.
+ repeated string group_by_fields = 5;
+}
+
+// Specifies an ordering relationship on two arguments, here called left and
+// right.
+enum ComparisonType {
+ // No ordering relationship is specified.
+ COMPARISON_UNSPECIFIED = 0;
+
+ // The left argument is greater than the right argument.
+ COMPARISON_GT = 1;
+
+ // The left argument is greater than or equal to the right argument.
+ COMPARISON_GE = 2;
+
+ // The left argument is less than the right argument.
+ COMPARISON_LT = 3;
+
+ // The left argument is less than or equal to the right argument.
+ COMPARISON_LE = 4;
+
+ // The left argument is equal to the right argument.
+ COMPARISON_EQ = 5;
+
+ // The left argument is not equal to the right argument.
+ COMPARISON_NE = 6;
+}
+
+// The tier of service for a Workspace. Please see the
+// [service tiers
+// documentation](https://cloud.google.com/monitoring/workspaces/tiers) for more
+// details.
+enum ServiceTier {
+ option deprecated = true;
+
+ // An invalid sentinel value, used to indicate that a tier has not
+ // been provided explicitly.
+ SERVICE_TIER_UNSPECIFIED = 0;
+
+ // The Stackdriver Basic tier, a free tier of service that provides basic
+ // features, a moderate allotment of logs, and access to built-in metrics.
+ // A number of features are not available in this tier. For more details,
+ // see [the service tiers
+ // documentation](https://cloud.google.com/monitoring/workspaces/tiers).
+ SERVICE_TIER_BASIC = 1;
+
+ // The Stackdriver Premium tier, a higher, more expensive tier of service
+ // that provides access to all Stackdriver features, lets you use Stackdriver
+ // with AWS accounts, and has a larger allotments for logs and metrics. For
+ // more details, see [the service tiers
+ // documentation](https://cloud.google.com/monitoring/workspaces/tiers).
+ SERVICE_TIER_PREMIUM = 2;
+}
diff --git a/google/monitoring/v3/dropped_labels.proto b/google/monitoring/v3/dropped_labels.proto
new file mode 100644
index 000000000..acbe8cf25
--- /dev/null
+++ b/google/monitoring/v3/dropped_labels.proto
@@ -0,0 +1,45 @@
+// Copyright 2018 Google LLC.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+syntax = "proto3";
+
+package google.monitoring.v3;
+
+import "google/api/annotations.proto";
+
+option go_package = "google.golang.org/genproto/googleapis/monitoring/v3;monitoring";
+option java_multiple_files = true;
+option java_outer_classname = "DroppedLabelsProto";
+option java_package = "com.google.monitoring.v3";
+
+// A set of (label, value) pairs which were dropped during aggregation, attached
+// to google.api.Distribution.Exemplars in google.api.Distribution values during
+// aggregation.
+//
+// These values are used in combination with the label values that remain on the
+// aggregated Distribution timeseries to construct the full label set for the
+// exemplar values. The resulting full label set may be used to identify the
+// specific task/job/instance (for example) which may be contributing to a
+// long-tail, while allowing the storage savings of only storing aggregated
+// distribution values for a large group.
+//
+// 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.
+message DroppedLabels {
+ // Map from label to its value, for all labels dropped in any aggregation.
+ map<string, string> label = 1;
+}
diff --git a/google/monitoring/v3/group.proto b/google/monitoring/v3/group.proto
new file mode 100644
index 000000000..ca46a0c0d
--- /dev/null
+++ b/google/monitoring/v3/group.proto
@@ -0,0 +1,76 @@
+// Copyright 2018 Google LLC.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+syntax = "proto3";
+
+package google.monitoring.v3;
+
+option csharp_namespace = "Google.Cloud.Monitoring.V3";
+option go_package = "google.golang.org/genproto/googleapis/monitoring/v3;monitoring";
+option java_multiple_files = true;
+option java_outer_classname = "GroupProto";
+option java_package = "com.google.monitoring.v3";
+option php_namespace = "Google\\Cloud\\Monitoring\\V3";
+
+// The description of a dynamic collection of monitored resources. Each group
+// has a filter that is matched against monitored resources and their associated
+// metadata. If a group's filter matches an available monitored resource, then
+// that resource is a member of that group. Groups can contain any number of
+// monitored resources, and each monitored resource can be a member of any
+// number of groups.
+//
+// Groups can be nested in parent-child hierarchies. The `parentName` field
+// identifies an optional parent for each group. If a group has a parent, then
+// the only monitored resources available to be matched by the group's filter
+// are the resources contained in the parent group. In other words, a group
+// contains the monitored resources that match its filter and the filters of all
+// the group's ancestors. A group without a parent can contain any monitored
+// resource.
+//
+// For example, consider an infrastructure running a set of instances with two
+// user-defined tags: `"environment"` and `"role"`. A parent group has a filter,
+// `environment="production"`. A child of that parent group has a filter,
+// `role="transcoder"`. The parent group contains all instances in the
+// production environment, regardless of their roles. The child group contains
+// instances that have the transcoder role *and* are in the production
+// environment.
+//
+// The monitored resources contained in a group can change at any moment,
+// depending on what resources exist and what filters are associated with the
+// group and its ancestors.
+message Group {
+ // Output only. The name of this group. The format is
+ // `"projects/{project_id_or_number}/groups/{group_id}"`.
+ // When creating a group, this field is ignored and a new name is created
+ // consisting of the project specified in the call to `CreateGroup`
+ // and a unique `{group_id}` that is generated automatically.
+ string name = 1;
+
+ // A user-assigned name for this group, used only for display purposes.
+ string display_name = 2;
+
+ // The name of the group's parent, if it has one.
+ // The format is `"projects/{project_id_or_number}/groups/{group_id}"`.
+ // For groups with no parent, `parentName` is the empty string, `""`.
+ string parent_name = 3;
+
+ // The filter used to determine which monitored resources belong to this
+ // group.
+ string filter = 5;
+
+ // If true, the members of this group are considered to be a cluster.
+ // The system can perform additional analysis on groups that are clusters.
+ bool is_cluster = 6;
+}
diff --git a/google/monitoring/v3/group_service.proto b/google/monitoring/v3/group_service.proto
new file mode 100644
index 000000000..34e1d9e99
--- /dev/null
+++ b/google/monitoring/v3/group_service.proto
@@ -0,0 +1,222 @@
+// Copyright 2018 Google LLC.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+syntax = "proto3";
+
+package google.monitoring.v3;
+
+import "google/api/annotations.proto";
+import "google/api/monitored_resource.proto";
+import "google/monitoring/v3/common.proto";
+import "google/monitoring/v3/group.proto";
+import "google/protobuf/empty.proto";
+
+option csharp_namespace = "Google.Cloud.Monitoring.V3";
+option go_package = "google.golang.org/genproto/googleapis/monitoring/v3;monitoring";
+option java_multiple_files = true;
+option java_outer_classname = "GroupServiceProto";
+option java_package = "com.google.monitoring.v3";
+option php_namespace = "Google\\Cloud\\Monitoring\\V3";
+
+// The Group API lets you inspect and manage your
+// [groups](#google.monitoring.v3.Group).
+//
+// A group is a named filter that is used to identify
+// a collection of monitored resources. Groups are typically used to
+// mirror the physical and/or logical topology of the environment.
+// Because group membership is computed dynamically, monitored
+// resources that are started in the future are automatically placed
+// in matching groups. By using a group to name monitored resources in,
+// for example, an alert policy, the target of that alert policy is
+// updated automatically as monitored resources are added and removed
+// from the infrastructure.
+service GroupService {
+ // Lists the existing groups.
+ rpc ListGroups(ListGroupsRequest) returns (ListGroupsResponse) {
+ option (google.api.http) = {
+ get: "/v3/{name=projects/*}/groups"
+ };
+ }
+
+ // Gets a single group.
+ rpc GetGroup(GetGroupRequest) returns (Group) {
+ option (google.api.http) = {
+ get: "/v3/{name=projects/*/groups/*}"
+ };
+ }
+
+ // Creates a new group.
+ rpc CreateGroup(CreateGroupRequest) returns (Group) {
+ option (google.api.http) = {
+ post: "/v3/{name=projects/*}/groups"
+ body: "group"
+ };
+ }
+
+ // Updates an existing group.
+ // You can change any group attributes except `name`.
+ rpc UpdateGroup(UpdateGroupRequest) returns (Group) {
+ option (google.api.http) = {
+ put: "/v3/{group.name=projects/*/groups/*}"
+ body: "group"
+ };
+ }
+
+ // Deletes an existing group.
+ rpc DeleteGroup(DeleteGroupRequest) returns (google.protobuf.Empty) {
+ option (google.api.http) = {
+ delete: "/v3/{name=projects/*/groups/*}"
+ };
+ }
+
+ // Lists the monitored resources that are members of a group.
+ rpc ListGroupMembers(ListGroupMembersRequest)
+ returns (ListGroupMembersResponse) {
+ option (google.api.http) = {
+ get: "/v3/{name=projects/*/groups/*}/members"
+ };
+ }
+}
+
+// The `ListGroup` request.
+message ListGroupsRequest {
+ // The project whose groups are to be listed. The format is
+ // `"projects/{project_id_or_number}"`.
+ string name = 7;
+
+ // An optional filter consisting of a single group name. The filters limit
+ // the groups returned based on their parent-child relationship with the
+ // specified group. If no filter is specified, all groups are returned.
+ oneof filter {
+ // A group name: `"projects/{project_id_or_number}/groups/{group_id}"`.
+ // Returns groups whose `parentName` field contains the group
+ // name. If no groups have this parent, the results are empty.
+ string children_of_group = 2;
+
+ // A group name: `"projects/{project_id_or_number}/groups/{group_id}"`.
+ // Returns groups that are ancestors of the specified group.
+ // The groups are returned in order, starting with the immediate parent and
+ // ending with the most distant ancestor. If the specified group has no
+ // immediate parent, the results are empty.
+ string ancestors_of_group = 3;
+
+ // A group name: `"projects/{project_id_or_number}/groups/{group_id}"`.
+ // Returns the descendants of the specified group. This is a superset of
+ // the results returned by the `childrenOfGroup` filter, and includes
+ // children-of-children, and so forth.
+ string descendants_of_group = 4;
+ }
+
+ // A positive number that is the maximum number of results to return.
+ int32 page_size = 5;
+
+ // 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.
+ string page_token = 6;
+}
+
+// The `ListGroups` response.
+message ListGroupsResponse {
+ // The groups that match the specified filters.
+ repeated Group group = 1;
+
+ // 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 `pageToken` in the next call to this method.
+ string next_page_token = 2;
+}
+
+// The `GetGroup` request.
+message GetGroupRequest {
+ // The group to retrieve. The format is
+ // `"projects/{project_id_or_number}/groups/{group_id}"`.
+ string name = 3;
+}
+
+// The `CreateGroup` request.
+message CreateGroupRequest {
+ // The project in which to create the group. The format is
+ // `"projects/{project_id_or_number}"`.
+ string name = 4;
+
+ // A group definition. It is an error to define the `name` field because
+ // the system assigns the name.
+ Group group = 2;
+
+ // If true, validate this request but do not create the group.
+ bool validate_only = 3;
+}
+
+// The `UpdateGroup` request.
+message UpdateGroupRequest {
+ // The new definition of the group. All fields of the existing group,
+ // excepting `name`, are replaced with the corresponding fields of this group.
+ Group group = 2;
+
+ // If true, validate this request but do not update the existing group.
+ bool validate_only = 3;
+}
+
+// The `DeleteGroup` request. You can only delete a group if it has no children.
+message DeleteGroupRequest {
+ // The group to delete. The format is
+ // `"projects/{project_id_or_number}/groups/{group_id}"`.
+ string name = 3;
+}
+
+// The `ListGroupMembers` request.
+message ListGroupMembersRequest {
+ // The group whose members are listed. The format is
+ // `"projects/{project_id_or_number}/groups/{group_id}"`.
+ string name = 7;
+
+ // A positive number that is the maximum number of results to return.
+ int32 page_size = 3;
+
+ // 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.
+ string page_token = 4;
+
+ // An optional [list filter](/monitoring/api/learn_more#filtering) describing
+ // the members to be returned. The filter may reference the type, labels, and
+ // metadata of monitored resources that comprise the group.
+ // For example, to return only resources representing Compute Engine VM
+ // instances, use this filter:
+ //
+ // resource.type = "gce_instance"
+ string filter = 5;
+
+ // An optional time interval for which results should be returned. Only
+ // members that were part of the group during the specified interval are
+ // included in the response. If no interval is provided then the group
+ // membership over the last minute is returned.
+ TimeInterval interval = 6;
+}
+
+// The `ListGroupMembers` response.
+message ListGroupMembersResponse {
+ // A set of monitored resources in the group.
+ repeated google.api.MonitoredResource members = 1;
+
+ // 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
+ // `pageToken` in the next call to this method.
+ string next_page_token = 2;
+
+ // The total number of elements matching this request.
+ int32 total_size = 3;
+}
diff --git a/google/monitoring/v3/metric.proto b/google/monitoring/v3/metric.proto
new file mode 100644
index 000000000..c111d4fb4
--- /dev/null
+++ b/google/monitoring/v3/metric.proto
@@ -0,0 +1,95 @@
+// Copyright 2018 Google LLC.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+syntax = "proto3";
+
+package google.monitoring.v3;
+
+import "google/api/annotations.proto";
+import "google/api/label.proto";
+import "google/api/metric.proto";
+import "google/api/monitored_resource.proto";
+import "google/monitoring/v3/common.proto";
+
+option csharp_namespace = "Google.Cloud.Monitoring.V3";
+option go_package = "google.golang.org/genproto/googleapis/monitoring/v3;monitoring";
+option java_multiple_files = true;
+option java_outer_classname = "MetricProto";
+option java_package = "com.google.monitoring.v3";
+option php_namespace = "Google\\Cloud\\Monitoring\\V3";
+
+// A single data point in a time series.
+message Point {
+ // The time interval to which the data point applies. For `GAUGE` metrics,
+ // only the end time of the interval is used. 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.
+ TimeInterval interval = 1;
+
+ // The value of the data point.
+ TypedValue value = 2;
+}
+
+// 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.
+message TimeSeries {
+ // The associated metric. A fully-specified metric used to identify the time
+ // series.
+ google.api.Metric metric = 1;
+
+ // The associated monitored resource. Custom metrics can use only certain
+ // monitored resource types in their time series data.
+ google.api.MonitoredResource resource = 2;
+
+ // Output only. The associated monitored resource metadata. When reading a
+ // a timeseries, this field will include metadata labels that are explicitly
+ // named in the reduction. When creating a timeseries, this field is ignored.
+ google.api.MonitoredResourceMetadata metadata = 7;
+
+ // 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`.
+ google.api.MetricDescriptor.MetricKind metric_kind = 3;
+
+ // 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.
+ google.api.MetricDescriptor.ValueType value_type = 4;
+
+ // 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`.
+ repeated Point points = 5;
+}
diff --git a/google/monitoring/v3/metric_service.proto b/google/monitoring/v3/metric_service.proto
new file mode 100644
index 000000000..febd3f7b5
--- /dev/null
+++ b/google/monitoring/v3/metric_service.proto
@@ -0,0 +1,322 @@
+// Copyright 2018 Google LLC.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+syntax = "proto3";
+
+package google.monitoring.v3;
+
+import "google/api/annotations.proto";
+import "google/api/metric.proto";
+import "google/api/monitored_resource.proto";
+import "google/monitoring/v3/common.proto";
+import "google/monitoring/v3/metric.proto";
+import "google/protobuf/duration.proto";
+import "google/protobuf/empty.proto";
+import "google/rpc/status.proto";
+
+option csharp_namespace = "Google.Cloud.Monitoring.V3";
+option go_package = "google.golang.org/genproto/googleapis/monitoring/v3;monitoring";
+option java_multiple_files = true;
+option java_outer_classname = "MetricServiceProto";
+option java_package = "com.google.monitoring.v3";
+option php_namespace = "Google\\Cloud\\Monitoring\\V3";
+
+// Manages metric descriptors, monitored resource descriptors, and
+// time series data.
+service MetricService {
+ // Lists monitored resource descriptors that match a filter. This method does
+ // not require a Stackdriver account.
+ rpc ListMonitoredResourceDescriptors(ListMonitoredResourceDescriptorsRequest)
+ returns (ListMonitoredResourceDescriptorsResponse) {
+ option (google.api.http) = {
+ get: "/v3/{name=projects/*}/monitoredResourceDescriptors"
+ };
+ }
+
+ // Gets a single monitored resource descriptor. This method does not require a
+ // Stackdriver account.
+ rpc GetMonitoredResourceDescriptor(GetMonitoredResourceDescriptorRequest)
+ returns (google.api.MonitoredResourceDescriptor) {
+ option (google.api.http) = {
+ get: "/v3/{name=projects/*/monitoredResourceDescriptors/*}"
+ };
+ }
+
+ // Lists metric descriptors that match a filter. This method does not require
+ // a Stackdriver account.
+ rpc ListMetricDescriptors(ListMetricDescriptorsRequest)
+ returns (ListMetricDescriptorsResponse) {
+ option (google.api.http) = {
+ get: "/v3/{name=projects/*}/metricDescriptors"
+ };
+ }
+
+ // Gets a single metric descriptor. This method does not require a Stackdriver
+ // account.
+ rpc GetMetricDescriptor(GetMetricDescriptorRequest)
+ returns (google.api.MetricDescriptor) {
+ option (google.api.http) = {
+ get: "/v3/{name=projects/*/metricDescriptors/**}"
+ };
+ }
+
+ // Creates a new metric descriptor.
+ // User-created metric descriptors define
+ // [custom metrics](/monitoring/custom-metrics).
+ rpc CreateMetricDescriptor(CreateMetricDescriptorRequest)
+ returns (google.api.MetricDescriptor) {
+ option (google.api.http) = {
+ post: "/v3/{name=projects/*}/metricDescriptors"
+ body: "metric_descriptor"
+ };
+ }
+
+ // Deletes a metric descriptor. Only user-created
+ // [custom metrics](/monitoring/custom-metrics) can be deleted.
+ rpc DeleteMetricDescriptor(DeleteMetricDescriptorRequest)
+ returns (google.protobuf.Empty) {
+ option (google.api.http) = {
+ delete: "/v3/{name=projects/*/metricDescriptors/**}"
+ };
+ }
+
+ // Lists time series that match a filter. This method does not require a
+ // Stackdriver account.
+ rpc ListTimeSeries(ListTimeSeriesRequest) returns (ListTimeSeriesResponse) {
+ option (google.api.http) = {
+ get: "/v3/{name=projects/*}/timeSeries"
+ };
+ }
+
+ // 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.
+ rpc CreateTimeSeries(CreateTimeSeriesRequest)
+ returns (google.protobuf.Empty) {
+ option (google.api.http) = {
+ post: "/v3/{name=projects/*}/timeSeries"
+ body: "*"
+ };
+ }
+}
+
+// The `ListMonitoredResourceDescriptors` request.
+message ListMonitoredResourceDescriptorsRequest {
+ // The project on which to execute the request. The format is
+ // `"projects/{project_id_or_number}"`.
+ string name = 5;
+
+ // An optional [filter](/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 Google Compute Engine descriptors
+ // that have an `id` label:
+ //
+ // resource.type = starts_with("gce_") AND resource.label:id
+ string filter = 2;
+
+ // A positive number that is the maximum number of results to return.
+ int32 page_size = 3;
+
+ // 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.
+ string page_token = 4;
+}
+
+// The `ListMonitoredResourceDescriptors` response.
+message ListMonitoredResourceDescriptorsResponse {
+ // The monitored resource descriptors that are available to this project
+ // and that match `filter`, if present.
+ repeated google.api.MonitoredResourceDescriptor resource_descriptors = 1;
+
+ // 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 `pageToken` in the next call to this method.
+ string next_page_token = 2;
+}
+
+// The `GetMonitoredResourceDescriptor` request.
+message GetMonitoredResourceDescriptorRequest {
+ // 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`.
+ string name = 3;
+}
+
+// The `ListMetricDescriptors` request.
+message ListMetricDescriptorsRequest {
+ // The project on which to execute the request. The format is
+ // `"projects/{project_id_or_number}"`.
+ string name = 5;
+
+ // If this field is empty, all custom and
+ // system-defined metric descriptors are returned.
+ // Otherwise, the [filter](/monitoring/api/v3/filters)
+ // specifies which metric descriptors are to be
+ // returned. For example, the following filter matches all
+ // [custom metrics](/monitoring/custom-metrics):
+ //
+ // metric.type = starts_with("custom.googleapis.com/")
+ string filter = 2;
+
+ // A positive number that is the maximum number of results to return.
+ int32 page_size = 3;
+
+ // 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.
+ string page_token = 4;
+}
+
+// The `ListMetricDescriptors` response.
+message ListMetricDescriptorsResponse {
+ // The metric descriptors that are available to the project
+ // and that match the value of `filter`, if present.
+ repeated google.api.MetricDescriptor metric_descriptors = 1;
+
+ // 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 `pageToken` in the next call to this method.
+ string next_page_token = 2;
+}
+
+// The `GetMetricDescriptor` request.
+message GetMetricDescriptorRequest {
+ // 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"`.
+ string name = 3;
+}
+
+// The `CreateMetricDescriptor` request.
+message CreateMetricDescriptorRequest {
+ // The project on which to execute the request. The format is
+ // `"projects/{project_id_or_number}"`.
+ string name = 3;
+
+ // The new [custom metric](/monitoring/custom-metrics)
+ // descriptor.
+ google.api.MetricDescriptor metric_descriptor = 2;
+}
+
+// The `DeleteMetricDescriptor` request.
+message DeleteMetricDescriptorRequest {
+ // 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"`.
+ string name = 3;
+}
+
+// The `ListTimeSeries` request.
+message ListTimeSeriesRequest {
+ // Controls which fields are returned by `ListTimeSeries`.
+ enum TimeSeriesView {
+ // Returns the identity of the metric(s), the time series,
+ // and the time series data.
+ FULL = 0;
+
+ // Returns the identity of the metric and the time series resource,
+ // but not the time series data.
+ HEADERS = 1;
+ }
+
+ // The project on which to execute the request. The format is
+ // "projects/{project_id_or_number}".
+ string name = 10;
+
+ // A [monitoring filter](/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.label.instance_name = "my-instance-name"
+ string filter = 2;
+
+ // The time interval for which results should be returned. Only time series
+ // that contain data points in the specified interval are included
+ // in the response.
+ TimeInterval interval = 4;
+
+ // By default, the raw time series data is returned.
+ // Use this field to combine multiple time series for different
+ // views of the data.
+ Aggregation aggregation = 5;
+
+ // Unsupported: must be left blank. The points in each time series are
+ // returned in reverse time order.
+ string order_by = 6;
+
+ // Specifies which information is returned about the time series.
+ TimeSeriesView view = 7;
+
+ // 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.
+ int32 page_size = 8;
+
+ // 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.
+ string page_token = 9;
+}
+
+// The `ListTimeSeries` response.
+message ListTimeSeriesResponse {
+ // One or more time series that match the filter included in the request.
+ repeated TimeSeries time_series = 1;
+
+ // 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 `pageToken` in the next call to this method.
+ string next_page_token = 2;
+
+ // Query execution errors that may have caused the time series data returned
+ // to be incomplete.
+ repeated google.rpc.Status execution_errors = 3;
+}
+
+// The `CreateTimeSeries` request.
+message CreateTimeSeriesRequest {
+ // The project on which to execute the request. The format is
+ // `"projects/{project_id_or_number}"`.
+ string name = 3;
+
+ // 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.
+ repeated TimeSeries time_series = 2;
+}
+
+// Describes the result of a failed request to write data to a time series.
+message CreateTimeSeriesError {
+ // The time series, including the `Metric`, `MonitoredResource`,
+ // and `Point`s (including timestamp and value) that resulted
+ // in the error. This field provides all of the context that
+ // would be needed to retry the operation.
+ TimeSeries time_series = 1;
+
+ // The status of the requested write operation.
+ google.rpc.Status status = 2;
+}
diff --git a/google/monitoring/v3/monitoring_gapic.yaml b/google/monitoring/v3/monitoring_gapic.yaml
new file mode 100644
index 000000000..c046ff042
--- /dev/null
+++ b/google/monitoring/v3/monitoring_gapic.yaml
@@ -0,0 +1,768 @@
+type: com.google.api.codegen.ConfigProto
+config_schema_version: 1.0.0
+language_settings:
+ java:
+ package_name: com.google.cloud.monitoring.v3
+ release_level: GA
+ python:
+ package_name: google.cloud.monitoring_v3.gapic
+ go:
+ package_name: cloud.google.com/go/monitoring/apiv3
+ csharp:
+ package_name: Google.Cloud.Monitoring.V3
+ release_level: GA
+ ruby:
+ package_name: Google::Cloud::Monitoring::V3
+ release_level: BETA
+ php:
+ package_name: Google\Cloud\Monitoring\V3
+ nodejs:
+ package_name: monitoring.v3
+ domain_layer_location: google-cloud
+interfaces:
+- name: google.monitoring.v3.AlertPolicyService
+ collections:
+ - name_pattern: projects/{project}
+ entity_name: project
+ # C#: Already GA, do not use common resource name for 'project'
+ - name_pattern: projects/{project}/alertPolicies/{alert_policy}
+ entity_name: alert_policy
+ - name_pattern: projects/{project}/alertPolicies/{alert_policy}/conditions/{condition}
+ entity_name: alert_policy_condition
+ retry_codes_def:
+ - name: idempotent
+ retry_codes:
+ - UNAVAILABLE
+ - DEADLINE_EXCEEDED
+ - name: non_idempotent
+ retry_codes: []
+ retry_params_def:
+ - name: default
+ initial_retry_delay_millis: 100
+ retry_delay_multiplier: 1.3
+ max_retry_delay_millis: 60000
+ initial_rpc_timeout_millis: 20000
+ rpc_timeout_multiplier: 1
+ max_rpc_timeout_millis: 20000
+ total_timeout_millis: 600000
+ methods:
+ - name: ListAlertPolicies
+ flattening:
+ groups:
+ - parameters:
+ - name
+ required_fields:
+ - name
+ page_streaming:
+ request:
+ page_size_field: page_size
+ token_field: page_token
+ response:
+ token_field: next_page_token
+ resources_field: alert_policies
+ retry_codes_name: idempotent
+ retry_params_name: default
+ field_name_patterns:
+ name: project
+ resource_name_treatment: STATIC_TYPES
+ timeout_millis: 60000
+ - name: GetAlertPolicy
+ flattening:
+ groups:
+ - parameters:
+ - name
+ required_fields:
+ - name
+ retry_codes_name: idempotent
+ retry_params_name: default
+ field_name_patterns:
+ name: alert_policy
+ resource_name_treatment: STATIC_TYPES
+ timeout_millis: 60000
+ - name: CreateAlertPolicy
+ flattening:
+ groups:
+ - parameters:
+ - name
+ - alert_policy
+ required_fields:
+ - name
+ - alert_policy
+ retry_codes_name: non_idempotent
+ retry_params_name: default
+ field_name_patterns:
+ name: project
+ resource_name_treatment: STATIC_TYPES
+ timeout_millis: 60000
+ - name: DeleteAlertPolicy
+ flattening:
+ groups:
+ - parameters:
+ - name
+ required_fields:
+ - name
+ retry_codes_name: idempotent
+ retry_params_name: default
+ field_name_patterns:
+ name: alert_policy
+ resource_name_treatment: STATIC_TYPES
+ timeout_millis: 60000
+ - name: UpdateAlertPolicy
+ flattening:
+ groups:
+ - parameters:
+ - update_mask
+ - alert_policy
+ required_fields:
+ - alert_policy
+ retry_codes_name: non_idempotent
+ retry_params_name: default
+ field_name_patterns:
+ alert_policy.name: alert_policy
+ resource_name_treatment: STATIC_TYPES
+ timeout_millis: 60000
+- name: google.monitoring.v3.GroupService
+ collections:
+ - name_pattern: projects/{project}
+ entity_name: project
+ # C#: Already GA, do not use common resource name for 'project'
+ - name_pattern: projects/{project}/groups/{group}
+ entity_name: group
+ retry_codes_def:
+ - name: idempotent
+ retry_codes:
+ - UNAVAILABLE
+ - DEADLINE_EXCEEDED
+ - name: non_idempotent
+ retry_codes: []
+ retry_params_def:
+ - name: default
+ initial_retry_delay_millis: 100
+ retry_delay_multiplier: 1.3
+ max_retry_delay_millis: 60000
+ initial_rpc_timeout_millis: 20000
+ rpc_timeout_multiplier: 1
+ max_rpc_timeout_millis: 20000
+ total_timeout_millis: 600000
+ methods:
+ - name: ListGroups
+ # Removing flattening until we figure out how to deal with oneof
+ required_fields:
+ - name
+ page_streaming:
+ request:
+ page_size_field: page_size
+ token_field: page_token
+ response:
+ token_field: next_page_token
+ resources_field: group
+ retry_codes_name: idempotent
+ retry_params_name: default
+ field_name_patterns:
+ name: project
+ resource_name_treatment: STATIC_TYPES
+ timeout_millis: 60000
+ - name: GetGroup
+ flattening:
+ groups:
+ - parameters:
+ - name
+ required_fields:
+ - name
+ retry_codes_name: idempotent
+ retry_params_name: default
+ field_name_patterns:
+ name: group
+ resource_name_treatment: STATIC_TYPES
+ timeout_millis: 60000
+ - name: CreateGroup
+ flattening:
+ groups:
+ - parameters:
+ - name
+ - group
+ required_fields:
+ - name
+ - group
+ retry_codes_name: non_idempotent
+ retry_params_name: default
+ field_name_patterns:
+ name: project
+ resource_name_treatment: STATIC_TYPES
+ timeout_millis: 60000
+ - name: UpdateGroup
+ flattening:
+ groups:
+ - parameters:
+ - group
+ required_fields:
+ - group
+ retry_codes_name: idempotent
+ retry_params_name: default
+ field_name_patterns:
+ group.name: group
+ resource_name_treatment: STATIC_TYPES
+ timeout_millis: 60000
+ - name: DeleteGroup
+ flattening:
+ groups:
+ - parameters:
+ - name
+ required_fields:
+ - name
+ retry_codes_name: idempotent
+ retry_params_name: default
+ field_name_patterns:
+ name: group
+ resource_name_treatment: STATIC_TYPES
+ timeout_millis: 60000
+ - name: ListGroupMembers
+ flattening:
+ groups:
+ - parameters:
+ - name
+ required_fields:
+ - name
+ page_streaming:
+ request:
+ page_size_field: page_size
+ token_field: page_token
+ response:
+ token_field: next_page_token
+ resources_field: members
+ retry_codes_name: idempotent
+ retry_params_name: default
+ field_name_patterns:
+ name: group
+ resource_name_treatment: STATIC_TYPES
+ timeout_millis: 60000
+- name: google.monitoring.v3.MetricService
+ smoke_test:
+ method: ListMonitoredResourceDescriptors
+ init_fields:
+ - name%project=$PROJECT_ID
+ collections:
+ - name_pattern: projects/{project}
+ entity_name: project
+ # C#: Already GA, do not use common resource name for 'project'
+ - name_pattern: projects/{project}/metricDescriptors/{metric_descriptor=**}
+ entity_name: metric_descriptor
+ - name_pattern: projects/{project}/monitoredResourceDescriptors/{monitored_resource_descriptor}
+ entity_name: monitored_resource_descriptor
+ retry_codes_def:
+ - name: idempotent
+ retry_codes:
+ - UNAVAILABLE
+ - DEADLINE_EXCEEDED
+ - name: non_idempotent
+ retry_codes: []
+ retry_params_def:
+ - name: default
+ initial_retry_delay_millis: 100
+ retry_delay_multiplier: 1.3
+ max_retry_delay_millis: 60000
+ initial_rpc_timeout_millis: 20000
+ rpc_timeout_multiplier: 1
+ max_rpc_timeout_millis: 20000
+ total_timeout_millis: 600000
+ methods:
+ - name: ListMonitoredResourceDescriptors
+ flattening:
+ groups:
+ - parameters:
+ - name
+ required_fields:
+ - name
+ page_streaming:
+ request:
+ page_size_field: page_size
+ token_field: page_token
+ response:
+ token_field: next_page_token
+ resources_field: resource_descriptors
+ retry_codes_name: idempotent
+ retry_params_name: default
+ field_name_patterns:
+ name: project
+ resource_name_treatment: STATIC_TYPES
+ timeout_millis: 60000
+ - name: GetMonitoredResourceDescriptor
+ flattening:
+ groups:
+ - parameters:
+ - name
+ required_fields:
+ - name
+ retry_codes_name: idempotent
+ retry_params_name: default
+ field_name_patterns:
+ name: monitored_resource_descriptor
+ resource_name_treatment: STATIC_TYPES
+ timeout_millis: 60000
+ - name: ListMetricDescriptors
+ flattening:
+ groups:
+ - parameters:
+ - name
+ required_fields:
+ - name
+ page_streaming:
+ request:
+ page_size_field: page_size
+ token_field: page_token
+ response:
+ token_field: next_page_token
+ resources_field: metric_descriptors
+ retry_codes_name: idempotent
+ retry_params_name: default
+ field_name_patterns:
+ name: project
+ resource_name_treatment: STATIC_TYPES
+ timeout_millis: 60000
+ - name: GetMetricDescriptor
+ flattening:
+ groups:
+ - parameters:
+ - name
+ required_fields:
+ - name
+ retry_codes_name: idempotent
+ retry_params_name: default
+ field_name_patterns:
+ name: metric_descriptor
+ resource_name_treatment: STATIC_TYPES
+ timeout_millis: 60000
+ - name: CreateMetricDescriptor
+ flattening:
+ groups:
+ - parameters:
+ - name
+ - metric_descriptor
+ required_fields:
+ - name
+ - metric_descriptor
+ retry_codes_name: non_idempotent
+ retry_params_name: default
+ field_name_patterns:
+ name: project
+ resource_name_treatment: STATIC_TYPES
+ timeout_millis: 60000
+ - name: DeleteMetricDescriptor
+ flattening:
+ groups:
+ - parameters:
+ - name
+ required_fields:
+ - name
+ retry_codes_name: idempotent
+ retry_params_name: default
+ field_name_patterns:
+ name: metric_descriptor
+ resource_name_treatment: STATIC_TYPES
+ timeout_millis: 60000
+ - name: ListTimeSeries
+ flattening:
+ groups:
+ - parameters:
+ - name
+ - filter
+ - interval
+ - view
+ required_fields:
+ - name
+ - filter
+ - interval
+ - view
+ page_streaming:
+ request:
+ page_size_field: page_size
+ token_field: page_token
+ response:
+ token_field: next_page_token
+ resources_field: time_series
+ retry_codes_name: idempotent
+ retry_params_name: default
+ field_name_patterns:
+ name: project
+ resource_name_treatment: STATIC_TYPES
+ timeout_millis: 60000
+ - name: CreateTimeSeries
+ flattening:
+ groups:
+ - parameters:
+ - name
+ - time_series
+ required_fields:
+ - name
+ - time_series
+ retry_codes_name: non_idempotent
+ retry_params_name: default
+ field_name_patterns:
+ name: project
+ resource_name_treatment: STATIC_TYPES
+ timeout_millis: 60000
+- name: google.monitoring.v3.NotificationChannelService
+ collections:
+ - name_pattern: projects/{project}
+ entity_name: project
+ # C#: Already GA, do not use common resource name for 'project'
+ - name_pattern: projects/{project}/notificationChannels/{notification_channel}
+ entity_name: notification_channel
+ - name_pattern: projects/{project}/notificationChannelDescriptors/{channel_descriptor}
+ entity_name: notification_channel_descriptor
+ retry_codes_def:
+ - name: idempotent
+ retry_codes:
+ - UNAVAILABLE
+ - DEADLINE_EXCEEDED
+ - name: non_idempotent
+ retry_codes: []
+ retry_params_def:
+ - name: default
+ initial_retry_delay_millis: 100
+ retry_delay_multiplier: 1.3
+ max_retry_delay_millis: 60000
+ initial_rpc_timeout_millis: 20000
+ rpc_timeout_multiplier: 1
+ max_rpc_timeout_millis: 20000
+ total_timeout_millis: 600000
+ methods:
+ - name: ListNotificationChannelDescriptors
+ flattening:
+ groups:
+ - parameters:
+ - name
+ required_fields:
+ - name
+ page_streaming:
+ request:
+ page_size_field: page_size
+ token_field: page_token
+ response:
+ token_field: next_page_token
+ resources_field: channel_descriptors
+ retry_codes_name: idempotent
+ retry_params_name: default
+ field_name_patterns:
+ name: project
+ resource_name_treatment: STATIC_TYPES
+ timeout_millis: 60000
+ - name: GetNotificationChannelDescriptor
+ flattening:
+ groups:
+ - parameters:
+ - name
+ required_fields:
+ - name
+ retry_codes_name: idempotent
+ retry_params_name: default
+ field_name_patterns:
+ name: notification_channel_descriptor
+ resource_name_treatment: STATIC_TYPES
+ timeout_millis: 60000
+ - name: ListNotificationChannels
+ flattening:
+ groups:
+ - parameters:
+ - name
+ required_fields:
+ - name
+ page_streaming:
+ request:
+ page_size_field: page_size
+ token_field: page_token
+ response:
+ token_field: next_page_token
+ resources_field: notification_channels
+ retry_codes_name: idempotent
+ retry_params_name: default
+ field_name_patterns:
+ name: project
+ resource_name_treatment: STATIC_TYPES
+ timeout_millis: 60000
+ - name: GetNotificationChannel
+ flattening:
+ groups:
+ - parameters:
+ - name
+ required_fields:
+ - name
+ retry_codes_name: idempotent
+ retry_params_name: default
+ field_name_patterns:
+ name: notification_channel
+ resource_name_treatment: STATIC_TYPES
+ timeout_millis: 60000
+ - name: CreateNotificationChannel
+ flattening:
+ groups:
+ - parameters:
+ - name
+ - notification_channel
+ required_fields:
+ - name
+ - notification_channel
+ retry_codes_name: non_idempotent
+ retry_params_name: default
+ field_name_patterns:
+ name: project
+ resource_name_treatment: STATIC_TYPES
+ timeout_millis: 60000
+ - name: UpdateNotificationChannel
+ flattening:
+ groups:
+ - parameters:
+ - update_mask
+ - notification_channel
+ required_fields:
+ - notification_channel
+ retry_codes_name: non_idempotent
+ retry_params_name: default
+ field_name_patterns:
+ notification_channel.name: notification_channel
+ timeout_millis: 60000
+ - name: DeleteNotificationChannel
+ flattening:
+ groups:
+ - parameters:
+ - name
+ - force
+ required_fields:
+ - name
+ retry_codes_name: idempotent
+ retry_params_name: default
+ field_name_patterns:
+ name: notification_channel
+ resource_name_treatment: STATIC_TYPES
+ timeout_millis: 60000
+ - name: SendNotificationChannelVerificationCode
+ surface_treatments:
+ - include_languages:
+ - go
+ - java
+ - csharp
+ - ruby
+ - nodejs
+ - python
+ - php
+ visibility: DISABLED
+ - name: GetNotificationChannelVerificationCode
+ surface_treatments:
+ - include_languages:
+ - go
+ - java
+ - csharp
+ - ruby
+ - nodejs
+ - python
+ - php
+ visibility: DISABLED
+ - name: VerifyNotificationChannel
+ surface_treatments:
+ - include_languages:
+ - go
+ - java
+ - csharp
+ - ruby
+ - nodejs
+ - python
+ - php
+ visibility: DISABLED
+- name: google.monitoring.v3.UptimeCheckService
+ collections:
+ - name_pattern: projects/{project}
+ entity_name: project
+ # C#: Already GA, do not use common resource name for 'project'
+ - name_pattern: projects/{project}/uptimeCheckConfigs/{uptime_check_config}
+ entity_name: uptime_check_config
+ retry_codes_def:
+ - name: idempotent
+ retry_codes:
+ - UNAVAILABLE
+ - DEADLINE_EXCEEDED
+ - name: non_idempotent
+ retry_codes: []
+ retry_params_def:
+ - name: default
+ initial_retry_delay_millis: 100
+ retry_delay_multiplier: 1.3
+ max_retry_delay_millis: 60000
+ initial_rpc_timeout_millis: 20000
+ rpc_timeout_multiplier: 1
+ max_rpc_timeout_millis: 20000
+ total_timeout_millis: 600000
+ methods:
+ - name: ListUptimeCheckConfigs
+ flattening:
+ groups:
+ - parameters:
+ - parent
+ required_fields:
+ - parent
+ page_streaming:
+ request:
+ page_size_field: page_size
+ token_field: page_token
+ response:
+ token_field: next_page_token
+ resources_field: uptime_check_configs
+ retry_codes_name: idempotent
+ retry_params_name: default
+ field_name_patterns:
+ parent: project
+ timeout_millis: 60000
+ - name: GetUptimeCheckConfig
+ flattening:
+ groups:
+ - parameters:
+ - name
+ required_fields:
+ - name
+ retry_codes_name: idempotent
+ retry_params_name: default
+ field_name_patterns:
+ name: uptime_check_config
+ timeout_millis: 60000
+ resource_name_treatment: STATIC_TYPES
+ - name: CreateUptimeCheckConfig
+ flattening:
+ groups:
+ - parameters:
+ - parent
+ - uptime_check_config
+ required_fields:
+ - parent
+ - uptime_check_config
+ retry_codes_name: non_idempotent
+ retry_params_name: default
+ field_name_patterns:
+ parent: project
+ timeout_millis: 60000
+ - name: UpdateUptimeCheckConfig
+ flattening:
+ groups:
+ - parameters:
+ - uptime_check_config
+ required_fields:
+ - uptime_check_config
+ retry_codes_name: non_idempotent
+ retry_params_name: default
+ field_name_patterns:
+ uptime_check_config.name: uptime_check_config
+ timeout_millis: 60000
+ - name: DeleteUptimeCheckConfig
+ flattening:
+ groups:
+ - parameters:
+ - name
+ required_fields:
+ - name
+ retry_codes_name: idempotent
+ retry_params_name: default
+ field_name_patterns:
+ name: uptime_check_config
+ timeout_millis: 60000
+ resource_name_treatment: STATIC_TYPES
+ - name: ListUptimeCheckIps
+ page_streaming:
+ request:
+ page_size_field: page_size
+ token_field: page_token
+ response:
+ token_field: next_page_token
+ resources_field: uptime_check_ips
+ retry_codes_name: idempotent
+ retry_params_name: default
+ timeout_millis: 60000
+resource_name_generation:
+- message_name: Group
+ field_entity_map:
+ name: group
+ parent_name: group
+- message_name: ListGroupsRequest
+ field_entity_map:
+ name: project
+ children_of_group: group
+ ancestors_of_group: group
+ descendants_of_group: group
+- message_name: GetGroupRequest
+ field_entity_map:
+ name: group
+- message_name: CreateGroupRequest
+ field_entity_map:
+ name: project
+- message_name: DeleteGroupRequest
+ field_entity_map:
+ name: group
+- message_name: ListGroupMembersRequest
+ field_entity_map:
+ name: group
+- message_name: ListMonitoredResourceDescriptorsRequest
+ field_entity_map:
+ name: project
+- message_name: GetMonitoredResourceDescriptorRequest
+ field_entity_map:
+ name: monitored_resource_descriptor
+- message_name: ListMetricDescriptorsRequest
+ field_entity_map:
+ name: project
+- message_name: GetMetricDescriptorRequest
+ field_entity_map:
+ name: metric_descriptor
+- message_name: CreateMetricDescriptorRequest
+ field_entity_map:
+ name: project
+- message_name: DeleteMetricDescriptorRequest
+ field_entity_map:
+ name: metric_descriptor
+- message_name: ListTimeSeriesRequest
+ field_entity_map:
+ name: project
+- message_name: CreateTimeSeriesRequest
+ field_entity_map:
+ name: project
+- message_name: ListAlertPoliciesRequest
+ field_entity_map:
+ name: project
+- message_name: GetAlertPolicyRequest
+ field_entity_map:
+ name: alert_policy
+- message_name: CreateAlertPolicyRequest
+ field_entity_map:
+ name: project
+- message_name: DeleteAlertPolicyRequest
+ field_entity_map:
+ name: alert_policy
+- message_name: GetNotificationChannelDescriptorRequest
+ field_entity_map:
+ name: notification_channel_descriptor
+- message_name: ListNotificationChannelDescriptorsRequest
+ field_entity_map:
+ name: project
+- message_name: ListNotificationChannelsRequest
+ field_entity_map:
+ name: project
+- message_name: GetNotificationChannelRequest
+ field_entity_map:
+ name: notification_channel
+- message_name: CreateNotificationChannelRequest
+ field_entity_map:
+ name: project
+- message_name: DeleteNotificationChannelRequest
+ field_entity_map:
+ name: notification_channel
+- message_name: SendNotificationChannelVerificationCodeRequest
+ field_entity_map:
+ name: notification_channel
+- message_name: GetNotificationChannelVerificationCodeRequest
+ field_entity_map:
+ name: notification_channel
+- message_name: VerifyNotificationChannelRequest
+ field_entity_map:
+ name: notification_channel
+- message_name: GetUptimeCheckConfigRequest
+ field_entity_map:
+ name: uptime_check_config
+- message_name: DeleteUptimeCheckConfigRequest
+ field_entity_map:
+ name: uptime_check_config
diff --git a/google/monitoring/v3/mutation_record.proto b/google/monitoring/v3/mutation_record.proto
new file mode 100644
index 000000000..c87e2ebcc
--- /dev/null
+++ b/google/monitoring/v3/mutation_record.proto
@@ -0,0 +1,36 @@
+// Copyright 2018 Google LLC.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+syntax = "proto3";
+
+package google.monitoring.v3;
+
+import "google/protobuf/timestamp.proto";
+
+option csharp_namespace = "Google.Cloud.Monitoring.V3";
+option go_package = "google.golang.org/genproto/googleapis/monitoring/v3;monitoring";
+option java_multiple_files = true;
+option java_outer_classname = "MutationRecordProto";
+option java_package = "com.google.monitoring.v3";
+option php_namespace = "Google\\Cloud\\Monitoring\\V3";
+
+// Describes a change made to a configuration.
+message MutationRecord {
+ // When the change occurred.
+ google.protobuf.Timestamp mutate_time = 1;
+
+ // The email address of the user making the change.
+ string mutated_by = 2;
+}
diff --git a/google/monitoring/v3/notification.proto b/google/monitoring/v3/notification.proto
new file mode 100644
index 000000000..f2812548e
--- /dev/null
+++ b/google/monitoring/v3/notification.proto
@@ -0,0 +1,165 @@
+// Copyright 2018 Google LLC.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+syntax = "proto3";
+
+package google.monitoring.v3;
+
+import "google/api/annotations.proto";
+import "google/api/label.proto";
+import "google/monitoring/v3/common.proto";
+import "google/protobuf/wrappers.proto";
+
+option csharp_namespace = "Google.Cloud.Monitoring.V3";
+option go_package = "google.golang.org/genproto/googleapis/monitoring/v3;monitoring";
+option java_multiple_files = true;
+option java_outer_classname = "NotificationProto";
+option java_package = "com.google.monitoring.v3";
+option php_namespace = "Google\\Cloud\\Monitoring\\V3";
+
+// A description of a notification channel. The descriptor includes
+// the properties of the channel and the set of labels or fields that
+// must be specified to configure channels of a given type.
+message NotificationChannelDescriptor {
+ // The full REST resource name for this descriptor. The syntax is:
+ //
+ // projects/[PROJECT_ID]/notificationChannelDescriptors/[TYPE]
+ //
+ // In the above, `[TYPE]` is the value of the `type` field.
+ string name = 6;
+
+ // The type of notification channel, such as "email", "sms", etc.
+ // Notification channel types are globally unique.
+ string type = 1;
+
+ // A human-readable name for the notification channel type. This
+ // form of the name is suitable for a user interface.
+ string display_name = 2;
+
+ // A human-readable description of the notification channel
+ // type. The description may include a description of the properties
+ // of the channel and pointers to external documentation.
+ string description = 3;
+
+ // The set of labels that must be defined to identify a particular
+ // channel of the corresponding type. Each label includes a
+ // description for how that field should be populated.
+ repeated google.api.LabelDescriptor labels = 4;
+
+ // The tiers that support this notification channel; the project service tier
+ // must be one of the supported_tiers.
+ repeated ServiceTier supported_tiers = 5 [deprecated = true];
+}
+
+// A `NotificationChannel` is a medium through which an alert is
+// delivered when a policy violation is detected. Examples of channels
+// include email, SMS, and third-party messaging applications. Fields
+// containing sensitive information like authentication tokens or
+// contact info are only partially populated on retrieval.
+message NotificationChannel {
+ // Indicates whether the channel has been verified or not. It is illegal
+ // to specify this field in a
+ // [`CreateNotificationChannel`][google.monitoring.v3.NotificationChannelService.CreateNotificationChannel]
+ // or an
+ // [`UpdateNotificationChannel`][google.monitoring.v3.NotificationChannelService.UpdateNotificationChannel]
+ // operation.
+ enum VerificationStatus {
+ // Sentinel value used to indicate that the state is unknown, omitted, or
+ // is not applicable (as in the case of channels that neither support
+ // nor require verification in order to function).
+ VERIFICATION_STATUS_UNSPECIFIED = 0;
+
+ // The channel has yet to be verified and requires verification to function.
+ // Note that this state also applies to the case where the verification
+ // process has been initiated by sending a verification code but where
+ // the verification code has not been submitted to complete the process.
+ UNVERIFIED = 1;
+
+ // It has been proven that notifications can be received on this
+ // notification channel and that someone on the project has access
+ // to messages that are delivered to that channel.
+ VERIFIED = 2;
+ }
+
+ // The type of the notification channel. This field matches the
+ // value of the
+ // [NotificationChannelDescriptor.type][google.monitoring.v3.NotificationChannelDescriptor.type]
+ // field.
+ string type = 1;
+
+ // The full REST resource name for this channel. The syntax is:
+ //
+ // projects/[PROJECT_ID]/notificationChannels/[CHANNEL_ID]
+ //
+ // The `[CHANNEL_ID]` is automatically assigned by the server on creation.
+ string name = 6;
+
+ // An optional human-readable name for this notification channel. It is
+ // recommended that you specify a non-empty and unique name in order to
+ // make it easier to identify the channels in your project, though this is
+ // not enforced. The display name is limited to 512 Unicode characters.
+ string display_name = 3;
+
+ // An optional human-readable description of this notification channel. This
+ // description may provide additional details, beyond the display
+ // name, for the channel. This may not exceeed 1024 Unicode characters.
+ string description = 4;
+
+ // Configuration fields that define the channel and its behavior. The
+ // permissible and required labels are specified in the
+ // [NotificationChannelDescriptor.labels][google.monitoring.v3.NotificationChannelDescriptor.labels]
+ // of the `NotificationChannelDescriptor` corresponding to the `type` field.
+ map<string, string> labels = 5;
+
+ // User-supplied key/value data that does not need to conform to
+ // the corresponding `NotificationChannelDescriptor`'s schema, unlike
+ // the `labels` field. This field is intended to be used for organizing
+ // and identifying the `NotificationChannel` objects.
+ //
+ // The field can contain up to 64 entries. Each key and value is limited to
+ // 63 Unicode characters or 128 bytes, whichever is smaller. Labels and
+ // values can contain only lowercase letters, numerals, underscores, and
+ // dashes. Keys must begin with a letter.
+ map<string, string> user_labels = 8;
+
+ // Indicates whether this channel has been verified or not. On a
+ // [`ListNotificationChannels`][google.monitoring.v3.NotificationChannelService.ListNotificationChannels]
+ // or
+ // [`GetNotificationChannel`][google.monitoring.v3.NotificationChannelService.GetNotificationChannel]
+ // operation, this field is expected to be populated.
+ //
+ // If the value is `UNVERIFIED`, then it indicates that the channel is
+ // non-functioning (it both requires verification and lacks verification);
+ // otherwise, it is assumed that the channel works.
+ //
+ // If the channel is neither `VERIFIED` nor `UNVERIFIED`, it implies that
+ // the channel is of a type that does not require verification or that
+ // this specific channel has been exempted from verification because it was
+ // created prior to verification being required for channels of this type.
+ //
+ // This field cannot be modified using a standard
+ // [`UpdateNotificationChannel`][google.monitoring.v3.NotificationChannelService.UpdateNotificationChannel]
+ // operation. To change the value of this field, you must call
+ // [`VerifyNotificationChannel`][google.monitoring.v3.NotificationChannelService.VerifyNotificationChannel].
+ VerificationStatus verification_status = 9;
+
+ // Whether notifications are forwarded to the described channel. This makes
+ // it possible to disable delivery of notifications to a particular channel
+ // without removing the channel from all alerting policies that reference
+ // the channel. This is a more convenient approach when the change is
+ // temporary and you want to receive notifications from the same set
+ // of alerting policies on the channel at some point in the future.
+ google.protobuf.BoolValue enabled = 11;
+}
diff --git a/google/monitoring/v3/notification_service.proto b/google/monitoring/v3/notification_service.proto
new file mode 100644
index 000000000..e178e0cad
--- /dev/null
+++ b/google/monitoring/v3/notification_service.proto
@@ -0,0 +1,350 @@
+// Copyright 2018 Google LLC.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+syntax = "proto3";
+
+package google.monitoring.v3;
+
+import "google/api/annotations.proto";
+import "google/monitoring/v3/notification.proto";
+import "google/protobuf/empty.proto";
+import "google/protobuf/field_mask.proto";
+import "google/protobuf/struct.proto";
+import "google/protobuf/timestamp.proto";
+
+option csharp_namespace = "Google.Cloud.Monitoring.V3";
+option go_package = "google.golang.org/genproto/googleapis/monitoring/v3;monitoring";
+option java_multiple_files = true;
+option java_outer_classname = "NotificationServiceProto";
+option java_package = "com.google.monitoring.v3";
+option php_namespace = "Google\\Cloud\\Monitoring\\V3";
+
+// The Notification Channel API provides access to configuration that
+// controls how messages related to incidents are sent.
+service NotificationChannelService {
+ // Lists the descriptors for supported channel types. The use of descriptors
+ // makes it possible for new channel types to be dynamically added.
+ rpc ListNotificationChannelDescriptors(
+ ListNotificationChannelDescriptorsRequest)
+ returns (ListNotificationChannelDescriptorsResponse) {
+ option (google.api.http) = {
+ get: "/v3/{name=projects/*}/notificationChannelDescriptors"
+ };
+ }
+
+ // Gets a single channel descriptor. The descriptor indicates which fields
+ // are expected / permitted for a notification channel of the given type.
+ rpc GetNotificationChannelDescriptor(GetNotificationChannelDescriptorRequest)
+ returns (NotificationChannelDescriptor) {
+ option (google.api.http) = {
+ get: "/v3/{name=projects/*/notificationChannelDescriptors/*}"
+ };
+ }
+
+ // Lists the notification channels that have been created for the project.
+ rpc ListNotificationChannels(ListNotificationChannelsRequest)
+ returns (ListNotificationChannelsResponse) {
+ option (google.api.http) = {
+ get: "/v3/{name=projects/*}/notificationChannels"
+ };
+ }
+
+ // Gets a single notification channel. The channel includes the relevant
+ // configuration details with which the channel was created. However, the
+ // response may truncate or omit passwords, API keys, or other private key
+ // matter and thus the response may not be 100% identical to the information
+ // that was supplied in the call to the create method.
+ rpc GetNotificationChannel(GetNotificationChannelRequest)
+ returns (NotificationChannel) {
+ option (google.api.http) = {
+ get: "/v3/{name=projects/*/notificationChannels/*}"
+ };
+ }
+
+ // Creates a new notification channel, representing a single notification
+ // endpoint such as an email address, SMS number, or PagerDuty service.
+ rpc CreateNotificationChannel(CreateNotificationChannelRequest)
+ returns (NotificationChannel) {
+ option (google.api.http) = {
+ post: "/v3/{name=projects/*}/notificationChannels"
+ body: "notification_channel"
+ };
+ }
+
+ // Updates a notification channel. Fields not specified in the field mask
+ // remain unchanged.
+ rpc UpdateNotificationChannel(UpdateNotificationChannelRequest)
+ returns (NotificationChannel) {
+ option (google.api.http) = {
+ patch: "/v3/{notification_channel.name=projects/*/notificationChannels/*}"
+ body: "notification_channel"
+ };
+ }
+
+ // Deletes a notification channel.
+ rpc DeleteNotificationChannel(DeleteNotificationChannelRequest)
+ returns (google.protobuf.Empty) {
+ option (google.api.http) = {
+ delete: "/v3/{name=projects/*/notificationChannels/*}"
+ };
+ }
+
+ // Causes a verification code to be delivered to the channel. The code
+ // can then be supplied in `VerifyNotificationChannel` to verify the channel.
+ rpc SendNotificationChannelVerificationCode(
+ SendNotificationChannelVerificationCodeRequest)
+ returns (google.protobuf.Empty) {
+ option (google.api.http) = {
+ post: "/v3/{name=projects/*/notificationChannels/*}:sendVerificationCode"
+ body: "*"
+ };
+ }
+
+ // Requests a verification code for an already verified channel that can then
+ // be used in a call to VerifyNotificationChannel() on a different channel
+ // with an equivalent identity in the same or in a different project. This
+ // makes it possible to copy a channel between projects without requiring
+ // manual reverification of the channel. If the channel is not in the
+ // verified state, this method will fail (in other words, this may only be
+ // used if the SendNotificationChannelVerificationCode and
+ // VerifyNotificationChannel paths have already been used to put the given
+ // channel into the verified state).
+ //
+ // There is no guarantee that the verification codes returned by this method
+ // will be of a similar structure or form as the ones that are delivered
+ // to the channel via SendNotificationChannelVerificationCode; while
+ // VerifyNotificationChannel() will recognize both the codes delivered via
+ // SendNotificationChannelVerificationCode() and returned from
+ // GetNotificationChannelVerificationCode(), it is typically the case that
+ // the verification codes delivered via
+ // SendNotificationChannelVerificationCode() will be shorter and also
+ // have a shorter expiration (e.g. codes such as "G-123456") whereas
+ // GetVerificationCode() will typically return a much longer, websafe base
+ // 64 encoded string that has a longer expiration time.
+ rpc GetNotificationChannelVerificationCode(
+ GetNotificationChannelVerificationCodeRequest)
+ returns (GetNotificationChannelVerificationCodeResponse) {
+ option (google.api.http) = {
+ post: "/v3/{name=projects/*/notificationChannels/*}:getVerificationCode"
+ body: "*"
+ };
+ }
+
+ // Verifies a `NotificationChannel` by proving receipt of the code
+ // delivered to the channel as a result of calling
+ // `SendNotificationChannelVerificationCode`.
+ rpc VerifyNotificationChannel(VerifyNotificationChannelRequest)
+ returns (NotificationChannel) {
+ option (google.api.http) = {
+ post: "/v3/{name=projects/*/notificationChannels/*}:verify"
+ body: "*"
+ };
+ }
+}
+
+// The `ListNotificationChannelDescriptors` request.
+message ListNotificationChannelDescriptorsRequest {
+ // The REST resource name of the parent from which to retrieve
+ // the notification channel descriptors. The expected syntax is:
+ //
+ // projects/[PROJECT_ID]
+ //
+ // Note that this names the parent container in which to look for the
+ // descriptors; to retrieve a single descriptor by name, use the
+ // [GetNotificationChannelDescriptor][google.monitoring.v3.NotificationChannelService.GetNotificationChannelDescriptor]
+ // operation, instead.
+ string name = 4;
+
+ // The maximum number of results to return in a single response. If
+ // not set to a positive number, a reasonable value will be chosen by the
+ // service.
+ int32 page_size = 2;
+
+ // If non-empty, `page_token` must contain a value returned as the
+ // `next_page_token` in a previous response to request the next set
+ // of results.
+ string page_token = 3;
+}
+
+// The `ListNotificationChannelDescriptors` response.
+message ListNotificationChannelDescriptorsResponse {
+ // The monitored resource descriptors supported for the specified
+ // project, optionally filtered.
+ repeated NotificationChannelDescriptor channel_descriptors = 1;
+
+ // If not empty, indicates that there may be more results that match
+ // the request. Use the value in the `page_token` field in a
+ // subsequent request to fetch the next set of results. If empty,
+ // all results have been returned.
+ string next_page_token = 2;
+}
+
+// The `GetNotificationChannelDescriptor` response.
+message GetNotificationChannelDescriptorRequest {
+ // The channel type for which to execute the request. The format is
+ // `projects/[PROJECT_ID]/notificationChannelDescriptors/{channel_type}`.
+ string name = 3;
+}
+
+// The `CreateNotificationChannel` request.
+message CreateNotificationChannelRequest {
+ // The project on which to execute the request. The format is:
+ //
+ // projects/[PROJECT_ID]
+ //
+ // Note that this names the container into which the channel will be
+ // written. This does not name the newly created channel. The resulting
+ // channel's name will have a normalized version of this field as a prefix,
+ // but will add `/notificationChannels/[CHANNEL_ID]` to identify the channel.
+ string name = 3;
+
+ // The definition of the `NotificationChannel` to create.
+ NotificationChannel notification_channel = 2;
+}
+
+// The `ListNotificationChannels` request.
+message ListNotificationChannelsRequest {
+ // The project on which to execute the request. The format is
+ // `projects/[PROJECT_ID]`. That is, this names the container
+ // in which to look for the notification channels; it does not name a
+ // specific channel. To query a specific channel by REST resource name, use
+ // the
+ // [`GetNotificationChannel`][google.monitoring.v3.NotificationChannelService.GetNotificationChannel]
+ // operation.
+ string name = 5;
+
+ // If provided, this field specifies the criteria that must be met by
+ // notification channels to be included in the response.
+ //
+ // For more details, see [sorting and
+ // filtering](/monitoring/api/v3/sorting-and-filtering).
+ string filter = 6;
+
+ // A comma-separated list of fields by which to sort the result. Supports
+ // the same set of fields as in `filter`. Entries can be prefixed with
+ // a minus sign to sort in descending rather than ascending order.
+ //
+ // For more details, see [sorting and
+ // filtering](/monitoring/api/v3/sorting-and-filtering).
+ string order_by = 7;
+
+ // The maximum number of results to return in a single response. If
+ // not set to a positive number, a reasonable value will be chosen by the
+ // service.
+ int32 page_size = 3;
+
+ // If non-empty, `page_token` must contain a value returned as the
+ // `next_page_token` in a previous response to request the next set
+ // of results.
+ string page_token = 4;
+}
+
+// The `ListNotificationChannels` response.
+message ListNotificationChannelsResponse {
+ // The notification channels defined for the specified project.
+ repeated NotificationChannel notification_channels = 3;
+
+ // If not empty, indicates that there may be more results that match
+ // the request. Use the value in the `page_token` field in a
+ // subsequent request to fetch the next set of results. If empty,
+ // all results have been returned.
+ string next_page_token = 2;
+}
+
+// The `GetNotificationChannel` request.
+message GetNotificationChannelRequest {
+ // The channel for which to execute the request. The format is
+ // `projects/[PROJECT_ID]/notificationChannels/[CHANNEL_ID]`.
+ string name = 3;
+}
+
+// The `UpdateNotificationChannel` request.
+message UpdateNotificationChannelRequest {
+ // The fields to update.
+ google.protobuf.FieldMask update_mask = 2;
+
+ // A description of the changes to be applied to the specified
+ // notification channel. The description must provide a definition for
+ // fields to be updated; the names of these fields should also be
+ // included in the `update_mask`.
+ NotificationChannel notification_channel = 3;
+}
+
+// The `DeleteNotificationChannel` request.
+message DeleteNotificationChannelRequest {
+ // The channel for which to execute the request. The format is
+ // `projects/[PROJECT_ID]/notificationChannels/[CHANNEL_ID]`.
+ string name = 3;
+
+ // If true, the notification channel will be deleted regardless of its
+ // use in alert policies (the policies will be updated to remove the
+ // channel). If false, channels that are still referenced by an existing
+ // alerting policy will fail to be deleted in a delete operation.
+ bool force = 5;
+}
+
+// The `SendNotificationChannelVerificationCode` request.
+message SendNotificationChannelVerificationCodeRequest {
+ // The notification channel to which to send a verification code.
+ string name = 1;
+}
+
+// The `GetNotificationChannelVerificationCode` request.
+message GetNotificationChannelVerificationCodeRequest {
+ // The notification channel for which a verification code is to be generated
+ // and retrieved. This must name a channel that is already verified; if
+ // the specified channel is not verified, the request will fail.
+ string name = 1;
+
+ // The desired expiration time. If specified, the API will guarantee that
+ // the returned code will not be valid after the specified timestamp;
+ // however, the API cannot guarantee that the returned code will be
+ // valid for at least as long as the requested time (the API puts an upper
+ // bound on the amount of time for which a code may be valid). If omitted,
+ // a default expiration will be used, which may be less than the max
+ // permissible expiration (so specifying an expiration may extend the
+ // code's lifetime over omitting an expiration, even though the API does
+ // impose an upper limit on the maximum expiration that is permitted).
+ google.protobuf.Timestamp expire_time = 2;
+}
+
+// The `GetNotificationChannelVerificationCode` request.
+message GetNotificationChannelVerificationCodeResponse {
+ // The verification code, which may be used to verify other channels
+ // that have an equivalent identity (i.e. other channels of the same
+ // type with the same fingerprint such as other email channels with
+ // the same email address or other sms channels with the same number).
+ string code = 1;
+
+ // The expiration time associated with the code that was returned. If
+ // an expiration was provided in the request, this is the minimum of the
+ // requested expiration in the request and the max permitted expiration.
+ google.protobuf.Timestamp expire_time = 2;
+}
+
+// The `VerifyNotificationChannel` request.
+message VerifyNotificationChannelRequest {
+ // The notification channel to verify.
+ string name = 1;
+
+ // The verification code that was delivered to the channel as
+ // a result of invoking the `SendNotificationChannelVerificationCode` API
+ // method or that was retrieved from a verified channel via
+ // `GetNotificationChannelVerificationCode`. For example, one might have
+ // "G-123456" or "TKNZGhhd2EyN3I1MnRnMjRv" (in general, one is only
+ // guaranteed that the code is valid UTF-8; one should not
+ // make any assumptions regarding the structure or format of the code).
+ string code = 2;
+}
diff --git a/google/monitoring/v3/span_context.proto b/google/monitoring/v3/span_context.proto
new file mode 100644
index 000000000..f7977c288
--- /dev/null
+++ b/google/monitoring/v3/span_context.proto
@@ -0,0 +1,43 @@
+// Copyright 2018 Google LLC.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+syntax = "proto3";
+
+package google.monitoring.v3;
+
+option csharp_namespace = "Google.Cloud.Monitoring.V3";
+option go_package = "google.golang.org/genproto/googleapis/monitoring/v3;monitoring";
+option java_multiple_files = true;
+option java_outer_classname = "SpanContextProto";
+option java_package = "com.google.monitoring.v3";
+option php_namespace = "Google\\Cloud\\Monitoring\\V3";
+
+// The context of a span, attached to google.api.Distribution.Exemplars
+// in google.api.Distribution values during aggregation.
+//
+// It contains the name of a span with format:
+// projects/[PROJECT_ID]/traces/[TRACE_ID]/spans/[SPAN_ID]
+message SpanContext {
+ // The resource name of the span in the following format:
+ //
+ // projects/[PROJECT_ID]/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.
+ string span_name = 1;
+}
diff --git a/google/monitoring/v3/uptime.proto b/google/monitoring/v3/uptime.proto
new file mode 100644
index 000000000..2850301ac
--- /dev/null
+++ b/google/monitoring/v3/uptime.proto
@@ -0,0 +1,271 @@
+// Copyright 2018 Google LLC.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+syntax = "proto3";
+
+package google.monitoring.v3;
+
+import "google/api/monitored_resource.proto";
+import "google/protobuf/duration.proto";
+
+option csharp_namespace = "Google.Cloud.Monitoring.V3";
+option go_package = "google.golang.org/genproto/googleapis/monitoring/v3;monitoring";
+option java_multiple_files = true;
+option java_outer_classname = "UptimeProto";
+option java_package = "com.google.monitoring.v3";
+option php_namespace = "Google\\Cloud\\Monitoring\\V3";
+
+// An internal checker allows uptime checks to run on private/internal GCP
+// resources.
+message InternalChecker {
+ // A unique resource name for this InternalChecker. The format is:
+ //
+ //
+ // `projects/[PROJECT_ID]/internalCheckers/[INTERNAL_CHECKER_ID]`.
+ //
+ // PROJECT_ID is the stackdriver workspace project for the
+ // uptime check config associated with the internal checker.
+ string name = 1;
+
+ // The checker's human-readable name. The display name
+ // should be unique within a Stackdriver Workspace in order to make it easier
+ // to identify; however, uniqueness is not enforced.
+ string display_name = 2;
+
+ // The [GCP VPC network](https://cloud.google.com/vpc/docs/vpc) where the
+ // internal resource lives (ex: "default").
+ string network = 3;
+
+ // The GCP zone the uptime check should egress from. Only respected for
+ // internal uptime checks, where internal_network is specified.
+ string gcp_zone = 4;
+
+ // The GCP project_id where the internal checker lives. Not necessary
+ // the same as the workspace project.
+ string peer_project_id = 6;
+}
+
+// This message configures which resources and services to monitor for
+// availability.
+message UptimeCheckConfig {
+ // The resource submessage for group checks. It can be used instead of a
+ // monitored resource, when multiple resources are being monitored.
+ message ResourceGroup {
+ // The group of resources being monitored. Should be only the
+ // group_id, not projects/<project_id>/groups/<group_id>.
+ string group_id = 1;
+
+ // The resource type of the group members.
+ GroupResourceType resource_type = 2;
+ }
+
+ // Information involved in an HTTP/HTTPS uptime check request.
+ message HttpCheck {
+ // A type of authentication to perform against the specified resource or URL
+ // that uses username and password.
+ // Currently, only Basic authentication is supported in Uptime Monitoring.
+ message BasicAuthentication {
+ // The username to authenticate.
+ string username = 1;
+
+ // The password to authenticate.
+ string password = 2;
+ }
+
+ // If true, use HTTPS instead of HTTP to run the check.
+ bool use_ssl = 1;
+
+ // The path to the page to run the check against. Will be combined with the
+ // host (specified within the MonitoredResource) and port to construct the
+ // full URL. Optional (defaults to "/").
+ string path = 2;
+
+ // The port to the page to run the check against. Will be combined with host
+ // (specified within the MonitoredResource) and path to construct the full
+ // URL. Optional (defaults to 80 without SSL, or 443 with SSL).
+ int32 port = 3;
+
+ // The authentication information. Optional when creating an HTTP check;
+ // defaults to empty.
+ BasicAuthentication auth_info = 4;
+
+ // Boolean specifiying whether to encrypt the header information.
+ // Encryption should be specified for any headers related to authentication
+ // that you do not wish to be seen when retrieving the configuration. The
+ // server will be responsible for encrypting the headers.
+ // On Get/List calls, if mask_headers is set to True then the headers
+ // will be obscured with ******.
+ bool mask_headers = 5;
+
+ // The list of headers to send as part of the uptime check request.
+ // If two headers have the same key and different values, they should
+ // be entered as a single header, with the value being a comma-separated
+ // list of all the desired values as described at
+ // https://www.w3.org/Protocols/rfc2616/rfc2616.txt (page 31).
+ // Entering two separate headers with the same key in a Create call will
+ // cause the first to be overwritten by the second.
+ // The maximum number of headers allowed is 100.
+ map<string, string> headers = 6;
+ }
+
+ // Information required for a TCP uptime check request.
+ message TcpCheck {
+ // The port to the page to run the check against. Will be combined with host
+ // (specified within the MonitoredResource) to construct the full URL.
+ // Required.
+ int32 port = 1;
+ }
+
+ // Used to perform string matching. It allows substring and regular
+ // expressions, together with their negations.
+ message ContentMatcher {
+ // String or regex content to match (max 1024 bytes)
+ string content = 1;
+ }
+
+ // A unique resource name for this UptimeCheckConfig. The format is:
+ //
+ //
+ // `projects/[PROJECT_ID]/uptimeCheckConfigs/[UPTIME_CHECK_ID]`.
+ //
+ // This field should be omitted when creating the uptime check configuration;
+ // on create, the resource name is assigned by the server and included in the
+ // response.
+ string name = 1;
+
+ // A human-friendly name for the uptime check configuration. The display name
+ // should be unique within a Stackdriver Workspace in order to make it easier
+ // to identify; however, uniqueness is not enforced. Required.
+ string display_name = 2;
+
+ // The resource the check is checking. Required.
+ oneof resource {
+ // The [monitored
+ // resource](https://cloud.google.com/monitoring/api/resources) associated
+ // with the configuration.
+ // The following monitored resource types are supported for uptime checks:
+ // uptime_url
+ // gce_instance
+ // gae_app
+ // aws_ec2_instance
+ // aws_elb_load_balancer
+ google.api.MonitoredResource monitored_resource = 3;
+
+ // The group resource associated with the configuration.
+ ResourceGroup resource_group = 4;
+ }
+
+ // The type of uptime check request.
+ oneof check_request_type {
+ // Contains information needed to make an HTTP or HTTPS check.
+ HttpCheck http_check = 5;
+
+ // Contains information needed to make a TCP check.
+ TcpCheck tcp_check = 6;
+ }
+
+ // How often, in seconds, the uptime check is performed.
+ // Currently, the only supported values are `60s` (1 minute), `300s`
+ // (5 minutes), `600s` (10 minutes), and `900s` (15 minutes). Optional,
+ // defaults to `300s`.
+ google.protobuf.Duration period = 7;
+
+ // The maximum amount of time to wait for the request to complete (must be
+ // between 1 and 60 seconds). Required.
+ google.protobuf.Duration timeout = 8;
+
+ // The expected content on the page the check is run against.
+ // Currently, only the first entry in the list is supported, and other entries
+ // will be ignored. The server will look for an exact match of the string in
+ // the page response's content. This field is optional and should only be
+ // specified if a content match is required.
+ repeated ContentMatcher content_matchers = 9;
+
+ // The list of regions from which the check will be run.
+ // Some regions contain one location, and others contain more than one.
+ // If this field is specified, enough regions to include a minimum of
+ // 3 locations must be provided, or an error message is returned.
+ // Not specifying this field will result in uptime checks running from all
+ // regions.
+ repeated UptimeCheckRegion selected_regions = 10;
+
+ // If this is true, then checks are made only from the 'internal_checkers'.
+ // If it is false, then checks are made only from the 'selected_regions'.
+ // It is an error to provide 'selected_regions' when is_internal is true,
+ // or to provide 'internal_checkers' when is_internal is false.
+ bool is_internal = 15;
+
+ // The internal checkers that this check will egress from. If `is_internal` is
+ // true and this list is empty, the check will egress from all the
+ // InternalCheckers configured for the project that owns this CheckConfig.
+ repeated InternalChecker internal_checkers = 14;
+}
+
+// Contains the region, location, and list of IP
+// addresses where checkers in the location run from.
+message UptimeCheckIp {
+ // A broad region category in which the IP address is located.
+ UptimeCheckRegion region = 1;
+
+ // A more specific location within the region that typically encodes
+ // a particular city/town/metro (and its containing state/province or country)
+ // within the broader umbrella region category.
+ string location = 2;
+
+ // The IP address from which the uptime check originates. This is a full
+ // IP address (not an IP address range). Most IP addresses, as of this
+ // publication, are in IPv4 format; however, one should not rely on the
+ // IP addresses being in IPv4 format indefinitely and should support
+ // interpreting this field in either IPv4 or IPv6 format.
+ string ip_address = 3;
+}
+
+// The regions from which an uptime check can be run.
+enum UptimeCheckRegion {
+ // Default value if no region is specified. Will result in uptime checks
+ // running from all regions.
+ REGION_UNSPECIFIED = 0;
+
+ // Allows checks to run from locations within the United States of America.
+ USA = 1;
+
+ // Allows checks to run from locations within the continent of Europe.
+ EUROPE = 2;
+
+ // Allows checks to run from locations within the continent of South
+ // America.
+ SOUTH_AMERICA = 3;
+
+ // Allows checks to run from locations within the Asia Pacific area (ex:
+ // Singapore).
+ ASIA_PACIFIC = 4;
+}
+
+// The supported resource types that can be used as values of
+// `group_resource.resource_type`.
+// `INSTANCE` includes `gce_instance` and `aws_ec2_instance` resource types.
+// The resource types `gae_app` and `uptime_url` are not valid here because
+// group checks on App Engine modules and URLs are not allowed.
+enum GroupResourceType {
+ // Default value (not valid).
+ RESOURCE_TYPE_UNSPECIFIED = 0;
+
+ // A group of instances from Google Cloud Platform (GCP) or
+ // Amazon Web Services (AWS).
+ INSTANCE = 1;
+
+ // A group of Amazon ELB load balancers.
+ AWS_ELB_LOAD_BALANCER = 2;
+}
diff --git a/google/monitoring/v3/uptime_service.proto b/google/monitoring/v3/uptime_service.proto
new file mode 100644
index 000000000..ed59114d0
--- /dev/null
+++ b/google/monitoring/v3/uptime_service.proto
@@ -0,0 +1,208 @@
+// Copyright 2018 Google LLC.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+syntax = "proto3";
+
+package google.monitoring.v3;
+
+import "google/api/annotations.proto";
+import "google/monitoring/v3/uptime.proto";
+import "google/protobuf/empty.proto";
+import "google/protobuf/field_mask.proto";
+
+option csharp_namespace = "Google.Cloud.Monitoring.V3";
+option go_package = "google.golang.org/genproto/googleapis/monitoring/v3;monitoring";
+option java_multiple_files = true;
+option java_outer_classname = "UptimeServiceProto";
+option java_package = "com.google.monitoring.v3";
+option php_namespace = "Google\\Cloud\\Monitoring\\V3";
+
+// The UptimeCheckService API is used to manage (list, create, delete, edit)
+// uptime check configurations in the Stackdriver Monitoring product. An uptime
+// check is a piece of configuration that determines which resources and
+// services to monitor for availability. These configurations can also be
+// configured interactively by navigating to the [Cloud Console]
+// (http://console.cloud.google.com), selecting the appropriate project,
+// clicking on "Monitoring" on the left-hand side to navigate to Stackdriver,
+// and then clicking on "Uptime".
+service UptimeCheckService {
+ // Lists the existing valid uptime check configurations for the project,
+ // leaving out any invalid configurations.
+ rpc ListUptimeCheckConfigs(ListUptimeCheckConfigsRequest)
+ returns (ListUptimeCheckConfigsResponse) {
+ option (google.api.http) = {
+ get: "/v3/{parent=projects/*}/uptimeCheckConfigs"
+ };
+ }
+
+ // Gets a single uptime check configuration.
+ rpc GetUptimeCheckConfig(GetUptimeCheckConfigRequest)
+ returns (UptimeCheckConfig) {
+ option (google.api.http) = {
+ get: "/v3/{name=projects/*/uptimeCheckConfigs/*}"
+ };
+ }
+
+ // Creates a new uptime check configuration.
+ rpc CreateUptimeCheckConfig(CreateUptimeCheckConfigRequest)
+ returns (UptimeCheckConfig) {
+ option (google.api.http) = {
+ post: "/v3/{parent=projects/*}/uptimeCheckConfigs"
+ body: "uptime_check_config"
+ };
+ }
+
+ // Updates an uptime check configuration. You can either replace the entire
+ // configuration with a new one or replace only certain fields in the current
+ // configuration by specifying the fields to be updated via `"updateMask"`.
+ // Returns the updated configuration.
+ rpc UpdateUptimeCheckConfig(UpdateUptimeCheckConfigRequest)
+ returns (UptimeCheckConfig) {
+ option (google.api.http) = {
+ patch: "/v3/{uptime_check_config.name=projects/*/uptimeCheckConfigs/*}"
+ body: "uptime_check_config"
+ };
+ }
+
+ // Deletes an uptime check configuration. Note that this method will fail
+ // if the uptime check configuration is referenced by an alert policy or
+ // other dependent configs that would be rendered invalid by the deletion.
+ rpc DeleteUptimeCheckConfig(DeleteUptimeCheckConfigRequest)
+ returns (google.protobuf.Empty) {
+ option (google.api.http) = {
+ delete: "/v3/{name=projects/*/uptimeCheckConfigs/*}"
+ };
+ }
+
+ // Returns the list of IPs that checkers run from
+ rpc ListUptimeCheckIps(ListUptimeCheckIpsRequest)
+ returns (ListUptimeCheckIpsResponse) {
+ option (google.api.http) = {
+ get: "/v3/uptimeCheckIps"
+ };
+ }
+}
+
+// The protocol for the `ListUptimeCheckConfigs` request.
+message ListUptimeCheckConfigsRequest {
+ // The project whose uptime check configurations are listed. The format
+ // is `projects/[PROJECT_ID]`.
+ string parent = 1;
+
+ // The maximum number of results to return in a single response. The server
+ // may further constrain the maximum number of results returned in a single
+ // page. If the page_size is <=0, the server will decide the number of results
+ // to be returned.
+ int32 page_size = 3;
+
+ // 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 more results from the previous method call.
+ string page_token = 4;
+}
+
+// The protocol for the `ListUptimeCheckConfigs` response.
+message ListUptimeCheckConfigsResponse {
+ // The returned uptime check configurations.
+ repeated UptimeCheckConfig uptime_check_configs = 1;
+
+ // This field represents the pagination token to retrieve the next page of
+ // results. If the value is empty, it means no further results for the
+ // request. To retrieve the next page of results, the value of the
+ // next_page_token is passed to the subsequent List method call (in the
+ // request message's page_token field).
+ string next_page_token = 2;
+
+ // The total number of uptime check configurations for the project,
+ // irrespective of any pagination.
+ int32 total_size = 3;
+}
+
+// The protocol for the `GetUptimeCheckConfig` request.
+message GetUptimeCheckConfigRequest {
+ // The uptime check configuration to retrieve. The format
+ // is `projects/[PROJECT_ID]/uptimeCheckConfigs/[UPTIME_CHECK_ID]`.
+ string name = 1;
+}
+
+// The protocol for the `CreateUptimeCheckConfig` request.
+message CreateUptimeCheckConfigRequest {
+ // The project in which to create the uptime check. The format
+ // is `projects/[PROJECT_ID]`.
+ string parent = 1;
+
+ // The new uptime check configuration.
+ UptimeCheckConfig uptime_check_config = 2;
+}
+
+// The protocol for the `UpdateUptimeCheckConfig` request.
+message UpdateUptimeCheckConfigRequest {
+ // Optional. If present, only the listed fields in the current uptime check
+ // configuration are updated with values from the new configuration. If this
+ // field is empty, then the current configuration is completely replaced with
+ // the new configuration.
+ google.protobuf.FieldMask update_mask = 2;
+
+ // Required. If an `"updateMask"` has been specified, this field gives
+ // the values for the set of fields mentioned in the `"updateMask"`. If an
+ // `"updateMask"` has not been given, this uptime check configuration replaces
+ // the current configuration. If a field is mentioned in `"updateMask"` but
+ // the corresonding field is omitted in this partial uptime check
+ // configuration, it has the effect of deleting/clearing the field from the
+ // configuration on the server.
+ //
+ // The following fields can be updated: `display_name`,
+ // `http_check`, `tcp_check`, `timeout`, `content_matchers`, and
+ // `selected_regions`.
+ UptimeCheckConfig uptime_check_config = 3;
+}
+
+// The protocol for the `DeleteUptimeCheckConfig` request.
+message DeleteUptimeCheckConfigRequest {
+ // The uptime check configuration to delete. The format
+ // is `projects/[PROJECT_ID]/uptimeCheckConfigs/[UPTIME_CHECK_ID]`.
+ string name = 1;
+}
+
+// The protocol for the `ListUptimeCheckIps` request.
+message ListUptimeCheckIpsRequest {
+ // The maximum number of results to return in a single response. The server
+ // may further constrain the maximum number of results returned in a single
+ // page. If the page_size is <=0, the server will decide the number of results
+ // to be returned.
+ // NOTE: this field is not yet implemented
+ int32 page_size = 2;
+
+ // 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 more results from the previous method call.
+ // NOTE: this field is not yet implemented
+ string page_token = 3;
+}
+
+// The protocol for the `ListUptimeCheckIps` response.
+message ListUptimeCheckIpsResponse {
+ // The returned list of IP addresses (including region and location) that the
+ // checkers run from.
+ repeated UptimeCheckIp uptime_check_ips = 1;
+
+ // This field represents the pagination token to retrieve the next page of
+ // results. If the value is empty, it means no further results for the
+ // request. To retrieve the next page of results, the value of the
+ // next_page_token is passed to the subsequent List method call (in the
+ // request message's page_token field).
+ // NOTE: this field is not yet implemented
+ string next_page_token = 2;
+}