blob: 91a454350e23168a2b31bf5bf4a5f9e19389a0ac [file] [log] [blame]
// Copyright 2022 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.
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.26.0
// protoc v3.12.2
// source: google/cloud/timeseriesinsights/v1/timeseries_insights.proto
package timeseriesinsights
import (
context "context"
reflect "reflect"
sync "sync"
_ "google.golang.org/genproto/googleapis/api/annotations"
status "google.golang.org/genproto/googleapis/rpc/status"
grpc "google.golang.org/grpc"
codes "google.golang.org/grpc/codes"
status1 "google.golang.org/grpc/status"
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
durationpb "google.golang.org/protobuf/types/known/durationpb"
emptypb "google.golang.org/protobuf/types/known/emptypb"
timestamppb "google.golang.org/protobuf/types/known/timestamppb"
)
const (
// Verify that this generated code is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
// Verify that runtime/protoimpl is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)
// DataSet state.
type DataSet_State int32
const (
// Unspecified / undefined state.
DataSet_STATE_UNSPECIFIED DataSet_State = 0
// Dataset is unknown to the system; we have never seen this dataset before
// or we have seen this dataset but have fully GC-ed it.
DataSet_UNKNOWN DataSet_State = 1
// Dataset processing is pending.
DataSet_PENDING DataSet_State = 2
// Dataset is loading.
DataSet_LOADING DataSet_State = 3
// Dataset is loaded and can be queried.
DataSet_LOADED DataSet_State = 4
// Dataset is unloading.
DataSet_UNLOADING DataSet_State = 5
// Dataset is unloaded and is removed from the system.
DataSet_UNLOADED DataSet_State = 6
// Dataset processing failed.
DataSet_FAILED DataSet_State = 7
)
// Enum value maps for DataSet_State.
var (
DataSet_State_name = map[int32]string{
0: "STATE_UNSPECIFIED",
1: "UNKNOWN",
2: "PENDING",
3: "LOADING",
4: "LOADED",
5: "UNLOADING",
6: "UNLOADED",
7: "FAILED",
}
DataSet_State_value = map[string]int32{
"STATE_UNSPECIFIED": 0,
"UNKNOWN": 1,
"PENDING": 2,
"LOADING": 3,
"LOADED": 4,
"UNLOADING": 5,
"UNLOADED": 6,
"FAILED": 7,
}
)
func (x DataSet_State) Enum() *DataSet_State {
p := new(DataSet_State)
*p = x
return p
}
func (x DataSet_State) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (DataSet_State) Descriptor() protoreflect.EnumDescriptor {
return file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_enumTypes[0].Descriptor()
}
func (DataSet_State) Type() protoreflect.EnumType {
return &file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_enumTypes[0]
}
func (x DataSet_State) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use DataSet_State.Descriptor instead.
func (DataSet_State) EnumDescriptor() ([]byte, []int) {
return file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_rawDescGZIP(), []int{2, 0}
}
// A time period of a fixed interval.
type ForecastParams_Period int32
const (
// Unknown or simply not given.
ForecastParams_PERIOD_UNSPECIFIED ForecastParams_Period = 0
// 1 hour
ForecastParams_HOURLY ForecastParams_Period = 5
// 24 hours
ForecastParams_DAILY ForecastParams_Period = 1
// 7 days
ForecastParams_WEEKLY ForecastParams_Period = 2
// 30 days
ForecastParams_MONTHLY ForecastParams_Period = 3
// 365 days
ForecastParams_YEARLY ForecastParams_Period = 4
)
// Enum value maps for ForecastParams_Period.
var (
ForecastParams_Period_name = map[int32]string{
0: "PERIOD_UNSPECIFIED",
5: "HOURLY",
1: "DAILY",
2: "WEEKLY",
3: "MONTHLY",
4: "YEARLY",
}
ForecastParams_Period_value = map[string]int32{
"PERIOD_UNSPECIFIED": 0,
"HOURLY": 5,
"DAILY": 1,
"WEEKLY": 2,
"MONTHLY": 3,
"YEARLY": 4,
}
)
func (x ForecastParams_Period) Enum() *ForecastParams_Period {
p := new(ForecastParams_Period)
*p = x
return p
}
func (x ForecastParams_Period) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (ForecastParams_Period) Descriptor() protoreflect.EnumDescriptor {
return file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_enumTypes[1].Descriptor()
}
func (ForecastParams_Period) Type() protoreflect.EnumType {
return &file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_enumTypes[1]
}
func (x ForecastParams_Period) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use ForecastParams_Period.Descriptor instead.
func (ForecastParams_Period) EnumDescriptor() ([]byte, []int) {
return file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_rawDescGZIP(), []int{12, 0}
}
// Methods by which we can aggregate multiple events by a given
// [metric][google.cloud.timeseriesinsights.v1.TimeseriesParams.metric].
type TimeseriesParams_AggregationMethod int32
const (
// Unspecified.
TimeseriesParams_AGGREGATION_METHOD_UNSPECIFIED TimeseriesParams_AggregationMethod = 0
// Aggregate multiple events by summing up the values found in the
// [metric][google.cloud.timeseriesinsights.v1.TimeseriesParams.metric] dimension.
TimeseriesParams_SUM TimeseriesParams_AggregationMethod = 1
// Aggregate multiple events by averaging out the values found in the
// [metric][google.cloud.timeseriesinsights.v1.TimeseriesParams.metric] dimension.
TimeseriesParams_AVERAGE TimeseriesParams_AggregationMethod = 2
)
// Enum value maps for TimeseriesParams_AggregationMethod.
var (
TimeseriesParams_AggregationMethod_name = map[int32]string{
0: "AGGREGATION_METHOD_UNSPECIFIED",
1: "SUM",
2: "AVERAGE",
}
TimeseriesParams_AggregationMethod_value = map[string]int32{
"AGGREGATION_METHOD_UNSPECIFIED": 0,
"SUM": 1,
"AVERAGE": 2,
}
)
func (x TimeseriesParams_AggregationMethod) Enum() *TimeseriesParams_AggregationMethod {
p := new(TimeseriesParams_AggregationMethod)
*p = x
return p
}
func (x TimeseriesParams_AggregationMethod) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (TimeseriesParams_AggregationMethod) Descriptor() protoreflect.EnumDescriptor {
return file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_enumTypes[2].Descriptor()
}
func (TimeseriesParams_AggregationMethod) Type() protoreflect.EnumType {
return &file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_enumTypes[2]
}
func (x TimeseriesParams_AggregationMethod) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use TimeseriesParams_AggregationMethod.Descriptor instead.
func (TimeseriesParams_AggregationMethod) EnumDescriptor() ([]byte, []int) {
return file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_rawDescGZIP(), []int{17, 0}
}
// Mapping of BigQuery columns to timestamp, group_id and dimensions.
type BigqueryMapping struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// The column which should be used as the event timestamps. If not specified
// 'Timestamp' is used by default. The column may have TIMESTAMP or INT64
// type (the latter is interpreted as microseconds since the Unix epoch).
TimestampColumn string `protobuf:"bytes,1,opt,name=timestamp_column,json=timestampColumn,proto3" json:"timestamp_column,omitempty"`
// The column which should be used as the group ID (grouping events into
// sessions). If not specified 'GroupId' is used by default, if the input
// table does not have such a column, random unique group IDs are
// generated automatically (different group ID per input row).
GroupIdColumn string `protobuf:"bytes,2,opt,name=group_id_column,json=groupIdColumn,proto3" json:"group_id_column,omitempty"`
// The list of columns that should be translated to dimensions. If empty,
// all columns are translated to dimensions. The timestamp and group_id
// columns should not be listed here again. Columns are expected to have
// primitive types (STRING, INT64, FLOAT64 or NUMERIC).
DimensionColumn []string `protobuf:"bytes,3,rep,name=dimension_column,json=dimensionColumn,proto3" json:"dimension_column,omitempty"`
}
func (x *BigqueryMapping) Reset() {
*x = BigqueryMapping{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *BigqueryMapping) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*BigqueryMapping) ProtoMessage() {}
func (x *BigqueryMapping) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_msgTypes[0]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use BigqueryMapping.ProtoReflect.Descriptor instead.
func (*BigqueryMapping) Descriptor() ([]byte, []int) {
return file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_rawDescGZIP(), []int{0}
}
func (x *BigqueryMapping) GetTimestampColumn() string {
if x != nil {
return x.TimestampColumn
}
return ""
}
func (x *BigqueryMapping) GetGroupIdColumn() string {
if x != nil {
return x.GroupIdColumn
}
return ""
}
func (x *BigqueryMapping) GetDimensionColumn() []string {
if x != nil {
return x.DimensionColumn
}
return nil
}
// A data source consists of multiple [Event][google.cloud.timeseriesinsights.v1.Event] objects stored on
// Cloud Storage. Each Event should be in JSON format, with one Event
// per line, also known as JSON Lines format.
type DataSource struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Data source URI.
//
// 1) Google Cloud Storage files (JSON) are defined in the following form.
// `gs://bucket_name/object_name`. For more information on Cloud Storage URIs,
// please see https://cloud.google.com/storage/docs/reference-uris.
Uri string `protobuf:"bytes,1,opt,name=uri,proto3" json:"uri,omitempty"`
// For BigQuery inputs defines the columns that should be used for dimensions
// (including time and group ID).
BqMapping *BigqueryMapping `protobuf:"bytes,2,opt,name=bq_mapping,json=bqMapping,proto3" json:"bq_mapping,omitempty"`
}
func (x *DataSource) Reset() {
*x = DataSource{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *DataSource) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*DataSource) ProtoMessage() {}
func (x *DataSource) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_msgTypes[1]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use DataSource.ProtoReflect.Descriptor instead.
func (*DataSource) Descriptor() ([]byte, []int) {
return file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_rawDescGZIP(), []int{1}
}
func (x *DataSource) GetUri() string {
if x != nil {
return x.Uri
}
return ""
}
func (x *DataSource) GetBqMapping() *BigqueryMapping {
if x != nil {
return x.BqMapping
}
return nil
}
// A collection of data sources sent for processing.
type DataSet struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// The dataset name, which will be used for querying, status and unload
// requests. This must be unique within a project.
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
// [Data dimension names][google.cloud.timeseriesinsights.v1.EventDimension.name] allowed for this `DataSet`.
//
// If left empty, all dimension names are included. This field works as a
// filter to avoid regenerating the data.
DataNames []string `protobuf:"bytes,2,rep,name=data_names,json=dataNames,proto3" json:"data_names,omitempty"`
// Input data.
DataSources []*DataSource `protobuf:"bytes,3,rep,name=data_sources,json=dataSources,proto3" json:"data_sources,omitempty"`
// Dataset state in the system.
State DataSet_State `protobuf:"varint,4,opt,name=state,proto3,enum=google.cloud.timeseriesinsights.v1.DataSet_State" json:"state,omitempty"`
// Dataset processing status.
Status *status.Status `protobuf:"bytes,5,opt,name=status,proto3" json:"status,omitempty"`
// Periodically we discard dataset [Event][google.cloud.timeseriesinsights.v1.Event] objects that have
// timestamps older than 'ttl'. Omitting this field or a zero value means no
// events are discarded.
Ttl *durationpb.Duration `protobuf:"bytes,6,opt,name=ttl,proto3" json:"ttl,omitempty"`
}
func (x *DataSet) Reset() {
*x = DataSet{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_msgTypes[2]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *DataSet) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*DataSet) ProtoMessage() {}
func (x *DataSet) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_msgTypes[2]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use DataSet.ProtoReflect.Descriptor instead.
func (*DataSet) Descriptor() ([]byte, []int) {
return file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_rawDescGZIP(), []int{2}
}
func (x *DataSet) GetName() string {
if x != nil {
return x.Name
}
return ""
}
func (x *DataSet) GetDataNames() []string {
if x != nil {
return x.DataNames
}
return nil
}
func (x *DataSet) GetDataSources() []*DataSource {
if x != nil {
return x.DataSources
}
return nil
}
func (x *DataSet) GetState() DataSet_State {
if x != nil {
return x.State
}
return DataSet_STATE_UNSPECIFIED
}
func (x *DataSet) GetStatus() *status.Status {
if x != nil {
return x.Status
}
return nil
}
func (x *DataSet) GetTtl() *durationpb.Duration {
if x != nil {
return x.Ttl
}
return nil
}
// Represents an event dimension.
type EventDimension struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Dimension name.
//
// **NOTE**: `EventDimension` names must be composed of alphanumeric
// characters only, and are case insensitive. Unicode characters are *not*
// supported. The underscore '_' is also allowed.
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
// Dimension value.
//
// **NOTE**: All entries of the dimension `name` must have the same `value`
// type.
//
// Types that are assignable to Value:
//
// *EventDimension_StringVal
// *EventDimension_LongVal
// *EventDimension_BoolVal
// *EventDimension_DoubleVal
Value isEventDimension_Value `protobuf_oneof:"value"`
}
func (x *EventDimension) Reset() {
*x = EventDimension{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_msgTypes[3]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *EventDimension) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*EventDimension) ProtoMessage() {}
func (x *EventDimension) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_msgTypes[3]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use EventDimension.ProtoReflect.Descriptor instead.
func (*EventDimension) Descriptor() ([]byte, []int) {
return file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_rawDescGZIP(), []int{3}
}
func (x *EventDimension) GetName() string {
if x != nil {
return x.Name
}
return ""
}
func (m *EventDimension) GetValue() isEventDimension_Value {
if m != nil {
return m.Value
}
return nil
}
func (x *EventDimension) GetStringVal() string {
if x, ok := x.GetValue().(*EventDimension_StringVal); ok {
return x.StringVal
}
return ""
}
func (x *EventDimension) GetLongVal() int64 {
if x, ok := x.GetValue().(*EventDimension_LongVal); ok {
return x.LongVal
}
return 0
}
func (x *EventDimension) GetBoolVal() bool {
if x, ok := x.GetValue().(*EventDimension_BoolVal); ok {
return x.BoolVal
}
return false
}
func (x *EventDimension) GetDoubleVal() float64 {
if x, ok := x.GetValue().(*EventDimension_DoubleVal); ok {
return x.DoubleVal
}
return 0
}
type isEventDimension_Value interface {
isEventDimension_Value()
}
type EventDimension_StringVal struct {
// String representation.
//
// **NOTE**: String values are case insensitive. Unicode characters are
// supported.
StringVal string `protobuf:"bytes,2,opt,name=string_val,json=stringVal,proto3,oneof"`
}
type EventDimension_LongVal struct {
// Long representation.
LongVal int64 `protobuf:"varint,3,opt,name=long_val,json=longVal,proto3,oneof"`
}
type EventDimension_BoolVal struct {
// Bool representation.
BoolVal bool `protobuf:"varint,4,opt,name=bool_val,json=boolVal,proto3,oneof"`
}
type EventDimension_DoubleVal struct {
// Double representation.
DoubleVal float64 `protobuf:"fixed64,5,opt,name=double_val,json=doubleVal,proto3,oneof"`
}
func (*EventDimension_StringVal) isEventDimension_Value() {}
func (*EventDimension_LongVal) isEventDimension_Value() {}
func (*EventDimension_BoolVal) isEventDimension_Value() {}
func (*EventDimension_DoubleVal) isEventDimension_Value() {}
// Represents an entry in a data source.
//
// Each Event has:
//
// - A timestamp at which the event occurs.
// - One or multiple dimensions.
// - Optionally, a group ID that allows clients to group logically related
// events (for example, all events representing payments transactions done by
// a user in a day have the same group ID). If a group ID is not provided, an
// internal one will be generated based on the content and `eventTime`.
//
// **NOTE**:
//
// - Internally, we discretize time in equal-sized chunks and we assume an
// event has a 0
// [TimeseriesPoint.value][google.cloud.timeseriesinsights.v1.TimeseriesPoint.value]
// in a chunk that does not contain any occurrences of an event in the input.
// - The number of Events with the same group ID should be limited.
// - Group ID *cannot* be queried.
// - Group ID does *not* correspond to a user ID or the like. If a user ID is of
// interest to be queried, use a user ID `dimension` instead.
type Event struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Event dimensions.
Dimensions []*EventDimension `protobuf:"bytes,1,rep,name=dimensions,proto3" json:"dimensions,omitempty"`
// Event group ID.
//
// **NOTE**: JSON encoding should use a string to hold a 64-bit integer value,
// because a native JSON number holds only 53 binary bits for an integer.
GroupId int64 `protobuf:"varint,2,opt,name=group_id,json=groupId,proto3" json:"group_id,omitempty"`
// Event timestamp.
EventTime *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=event_time,json=eventTime,proto3" json:"event_time,omitempty"`
}
func (x *Event) Reset() {
*x = Event{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_msgTypes[4]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *Event) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Event) ProtoMessage() {}
func (x *Event) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_msgTypes[4]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use Event.ProtoReflect.Descriptor instead.
func (*Event) Descriptor() ([]byte, []int) {
return file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_rawDescGZIP(), []int{4}
}
func (x *Event) GetDimensions() []*EventDimension {
if x != nil {
return x.Dimensions
}
return nil
}
func (x *Event) GetGroupId() int64 {
if x != nil {
return x.GroupId
}
return 0
}
func (x *Event) GetEventTime() *timestamppb.Timestamp {
if x != nil {
return x.EventTime
}
return nil
}
// Appends events to an existing DataSet.
type AppendEventsRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Events to be appended.
//
// Note:
//
// 0. The [DataSet][google.cloud.timeseriesinsights.v1.DataSet] must be shown in a `LOADED` state
// in the results of `list` method; otherwise, all events from
// the append request will be dropped, and a `NOT_FOUND` status will be
// returned.
// 0. All events in a single request must have the same
// [groupId][google.cloud.timeseriesinsights.v1.Event.group_id] if set; otherwise, an
// `INVALID_ARGUMENT` status will be returned.
// 0. If [groupId][google.cloud.timeseriesinsights.v1.Event.group_id] is not set (or 0), there
// should be only 1 event; otherwise, an `INVALID_ARGUMENT` status will be
// returned.
// 0. The events must be newer than the current time minus
// [DataSet TTL][google.cloud.timeseriesinsights.v1.DataSet.ttl] or they will be dropped.
Events []*Event `protobuf:"bytes,1,rep,name=events,proto3" json:"events,omitempty"`
// Required. The DataSet to which we want to append to in the format of
// "projects/{project}/datasets/{dataset}"
Dataset string `protobuf:"bytes,2,opt,name=dataset,proto3" json:"dataset,omitempty"`
}
func (x *AppendEventsRequest) Reset() {
*x = AppendEventsRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_msgTypes[5]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *AppendEventsRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*AppendEventsRequest) ProtoMessage() {}
func (x *AppendEventsRequest) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_msgTypes[5]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use AppendEventsRequest.ProtoReflect.Descriptor instead.
func (*AppendEventsRequest) Descriptor() ([]byte, []int) {
return file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_rawDescGZIP(), []int{5}
}
func (x *AppendEventsRequest) GetEvents() []*Event {
if x != nil {
return x.Events
}
return nil
}
func (x *AppendEventsRequest) GetDataset() string {
if x != nil {
return x.Dataset
}
return ""
}
// Response for an AppendEvents RPC.
type AppendEventsResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Dropped events; empty if all events are successfully added.
DroppedEvents []*Event `protobuf:"bytes,1,rep,name=dropped_events,json=droppedEvents,proto3" json:"dropped_events,omitempty"`
}
func (x *AppendEventsResponse) Reset() {
*x = AppendEventsResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_msgTypes[6]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *AppendEventsResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*AppendEventsResponse) ProtoMessage() {}
func (x *AppendEventsResponse) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_msgTypes[6]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use AppendEventsResponse.ProtoReflect.Descriptor instead.
func (*AppendEventsResponse) Descriptor() ([]byte, []int) {
return file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_rawDescGZIP(), []int{6}
}
func (x *AppendEventsResponse) GetDroppedEvents() []*Event {
if x != nil {
return x.DroppedEvents
}
return nil
}
// Create a DataSet request.
type CreateDataSetRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Required. Client project name which will own this DataSet in the format of
// 'projects/{project}'.
Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
// Required. Dataset to be loaded.
Dataset *DataSet `protobuf:"bytes,2,opt,name=dataset,proto3" json:"dataset,omitempty"`
}
func (x *CreateDataSetRequest) Reset() {
*x = CreateDataSetRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_msgTypes[7]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *CreateDataSetRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*CreateDataSetRequest) ProtoMessage() {}
func (x *CreateDataSetRequest) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_msgTypes[7]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use CreateDataSetRequest.ProtoReflect.Descriptor instead.
func (*CreateDataSetRequest) Descriptor() ([]byte, []int) {
return file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_rawDescGZIP(), []int{7}
}
func (x *CreateDataSetRequest) GetParent() string {
if x != nil {
return x.Parent
}
return ""
}
func (x *CreateDataSetRequest) GetDataset() *DataSet {
if x != nil {
return x.Dataset
}
return nil
}
// Unload DataSet request from the serving system.
type DeleteDataSetRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Required. Dataset name in the format of "projects/{project}/datasets/{dataset}"
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
}
func (x *DeleteDataSetRequest) Reset() {
*x = DeleteDataSetRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_msgTypes[8]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *DeleteDataSetRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*DeleteDataSetRequest) ProtoMessage() {}
func (x *DeleteDataSetRequest) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_msgTypes[8]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use DeleteDataSetRequest.ProtoReflect.Descriptor instead.
func (*DeleteDataSetRequest) Descriptor() ([]byte, []int) {
return file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_rawDescGZIP(), []int{8}
}
func (x *DeleteDataSetRequest) GetName() string {
if x != nil {
return x.Name
}
return ""
}
// List the DataSets created by the current project.
type ListDataSetsRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Required. Project owning the DataSet in the format of "projects/{project}".
Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
// Number of results to return in the list.
PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
// Token to provide to skip to a particular spot in the list.
PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"`
}
func (x *ListDataSetsRequest) Reset() {
*x = ListDataSetsRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_msgTypes[9]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ListDataSetsRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ListDataSetsRequest) ProtoMessage() {}
func (x *ListDataSetsRequest) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_msgTypes[9]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use ListDataSetsRequest.ProtoReflect.Descriptor instead.
func (*ListDataSetsRequest) Descriptor() ([]byte, []int) {
return file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_rawDescGZIP(), []int{9}
}
func (x *ListDataSetsRequest) GetParent() string {
if x != nil {
return x.Parent
}
return ""
}
func (x *ListDataSetsRequest) GetPageSize() int32 {
if x != nil {
return x.PageSize
}
return 0
}
func (x *ListDataSetsRequest) GetPageToken() string {
if x != nil {
return x.PageToken
}
return ""
}
// Created DataSets list response.
type ListDataSetsResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// The list of created DataSets.
Datasets []*DataSet `protobuf:"bytes,1,rep,name=datasets,proto3" json:"datasets,omitempty"`
// Token to receive the next page of results.
NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
}
func (x *ListDataSetsResponse) Reset() {
*x = ListDataSetsResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_msgTypes[10]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ListDataSetsResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ListDataSetsResponse) ProtoMessage() {}
func (x *ListDataSetsResponse) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_msgTypes[10]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use ListDataSetsResponse.ProtoReflect.Descriptor instead.
func (*ListDataSetsResponse) Descriptor() ([]byte, []int) {
return file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_rawDescGZIP(), []int{10}
}
func (x *ListDataSetsResponse) GetDatasets() []*DataSet {
if x != nil {
return x.Datasets
}
return nil
}
func (x *ListDataSetsResponse) GetNextPageToken() string {
if x != nil {
return x.NextPageToken
}
return ""
}
// A categorical dimension fixed to a certain value.
type PinnedDimension struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// The name of the dimension for which we are fixing its value.
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
// Dimension value.
//
// **NOTE**: The `value` type must match that in the data with the same
// `dimension` as name.
//
// Types that are assignable to Value:
//
// *PinnedDimension_StringVal
// *PinnedDimension_BoolVal
Value isPinnedDimension_Value `protobuf_oneof:"value"`
}
func (x *PinnedDimension) Reset() {
*x = PinnedDimension{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_msgTypes[11]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *PinnedDimension) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*PinnedDimension) ProtoMessage() {}
func (x *PinnedDimension) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_msgTypes[11]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use PinnedDimension.ProtoReflect.Descriptor instead.
func (*PinnedDimension) Descriptor() ([]byte, []int) {
return file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_rawDescGZIP(), []int{11}
}
func (x *PinnedDimension) GetName() string {
if x != nil {
return x.Name
}
return ""
}
func (m *PinnedDimension) GetValue() isPinnedDimension_Value {
if m != nil {
return m.Value
}
return nil
}
func (x *PinnedDimension) GetStringVal() string {
if x, ok := x.GetValue().(*PinnedDimension_StringVal); ok {
return x.StringVal
}
return ""
}
func (x *PinnedDimension) GetBoolVal() bool {
if x, ok := x.GetValue().(*PinnedDimension_BoolVal); ok {
return x.BoolVal
}
return false
}
type isPinnedDimension_Value interface {
isPinnedDimension_Value()
}
type PinnedDimension_StringVal struct {
// A string value. This can be used for [dimensions][google.cloud.timeseriesinsights.v1.EventDimension], which
// have their value field set to [string_val][google.cloud.timeseriesinsights.v1.EventDimension.string_val].
StringVal string `protobuf:"bytes,2,opt,name=string_val,json=stringVal,proto3,oneof"`
}
type PinnedDimension_BoolVal struct {
// A bool value. This can be used for [dimensions][google.cloud.timeseriesinsights.v1.EventDimension], which
// have their value field set to [bool_val][google.cloud.timeseriesinsights.v1.EventDimension.bool_val].
BoolVal bool `protobuf:"varint,3,opt,name=bool_val,json=boolVal,proto3,oneof"`
}
func (*PinnedDimension_StringVal) isPinnedDimension_Value() {}
func (*PinnedDimension_BoolVal) isPinnedDimension_Value() {}
// Parameters that control the sensitivity and other options for the time series
// forecast.
type ForecastParams struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Optional. Penalize variations between the actual and forecasted values smaller than
// this. For more information about how this parameter affects the score, see
// the [anomalyScore](EvaluatedSlice.anomaly_score) formula.
//
// Intuitively, anomaly scores summarize how statistically significant the
// change between the actual and forecasted value is compared with what we
// expect the change to be (see
// [expectedDeviation](EvaluatedSlice.expected_deviation)). However, in
// practice, depending on the application, changes smaller than certain
// absolute values, while statistically significant, may not be important.
//
// This parameter allows us to penalize such low absolute value changes.
//
// Must be in the (0.0, inf) range.
//
// If unspecified, it defaults to 0.000001.
NoiseThreshold *float64 `protobuf:"fixed64,12,opt,name=noise_threshold,json=noiseThreshold,proto3,oneof" json:"noise_threshold,omitempty"`
// Optional. Specifying any known seasonality/periodicity in the time series
// for the slices we will analyze can improve the quality of the results.
//
// If unsure, simply leave it unspecified by not setting a value for this
// field.
//
// If your time series has multiple seasonal patterns, then set it to the most
// granular one (e.g. if it has daily and weekly patterns, set this to DAILY).
SeasonalityHint ForecastParams_Period `protobuf:"varint,10,opt,name=seasonality_hint,json=seasonalityHint,proto3,enum=google.cloud.timeseriesinsights.v1.ForecastParams_Period" json:"seasonality_hint,omitempty"`
// Optional. The length of the returned [forecasted
// timeseries][EvaluatedSlice.forecast].
//
// This duration is currently capped at 100 x
// [granularity][google.cloud.timeseriesinsights.v1.TimeseriesParams.granularity].
//
// Example: If the detection point is set to "2020-12-27T00:00:00Z", the
// [granularity][google.cloud.timeseriesinsights.v1.TimeseriesParams.granularity] to "3600s" and the
// horizon_duration to "10800s", then we will generate 3 time
// series points (from "2020-12-27T01:00:00Z" to "2020-12-27T04:00:00Z"), for
// which we will return their forecasted values.
//
// Note: The horizon time is only used for forecasting not for anormaly
// detection. To detect anomalies for multiple points of time,
// simply send multiple queries with those as
// [detectionTime][google.cloud.timeseriesinsights.v1.QueryDataSetRequest.detection_time].
HorizonDuration *durationpb.Duration `protobuf:"bytes,13,opt,name=horizon_duration,json=horizonDuration,proto3" json:"horizon_duration,omitempty"`
}
func (x *ForecastParams) Reset() {
*x = ForecastParams{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_msgTypes[12]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ForecastParams) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ForecastParams) ProtoMessage() {}
func (x *ForecastParams) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_msgTypes[12]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use ForecastParams.ProtoReflect.Descriptor instead.
func (*ForecastParams) Descriptor() ([]byte, []int) {
return file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_rawDescGZIP(), []int{12}
}
func (x *ForecastParams) GetNoiseThreshold() float64 {
if x != nil && x.NoiseThreshold != nil {
return *x.NoiseThreshold
}
return 0
}
func (x *ForecastParams) GetSeasonalityHint() ForecastParams_Period {
if x != nil {
return x.SeasonalityHint
}
return ForecastParams_PERIOD_UNSPECIFIED
}
func (x *ForecastParams) GetHorizonDuration() *durationpb.Duration {
if x != nil {
return x.HorizonDuration
}
return nil
}
// A point in a time series.
type TimeseriesPoint struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// The timestamp of this point.
Time *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=time,proto3" json:"time,omitempty"`
// The value for this point.
//
// It is computed by aggregating all events in the associated slice that are
// in the `[time, time + granularity]` range (see
// [granularity][google.cloud.timeseriesinsights.v1.TimeseriesParams.granularity]) using the specified
// [metric][google.cloud.timeseriesinsights.v1.TimeseriesParams.metric].
Value *float64 `protobuf:"fixed64,2,opt,name=value,proto3,oneof" json:"value,omitempty"`
}
func (x *TimeseriesPoint) Reset() {
*x = TimeseriesPoint{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_msgTypes[13]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *TimeseriesPoint) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*TimeseriesPoint) ProtoMessage() {}
func (x *TimeseriesPoint) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_msgTypes[13]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use TimeseriesPoint.ProtoReflect.Descriptor instead.
func (*TimeseriesPoint) Descriptor() ([]byte, []int) {
return file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_rawDescGZIP(), []int{13}
}
func (x *TimeseriesPoint) GetTime() *timestamppb.Timestamp {
if x != nil {
return x.Time
}
return nil
}
func (x *TimeseriesPoint) GetValue() float64 {
if x != nil && x.Value != nil {
return *x.Value
}
return 0
}
// A time series.
type Timeseries struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// The points in this time series, ordered by their timestamp.
Point []*TimeseriesPoint `protobuf:"bytes,1,rep,name=point,proto3" json:"point,omitempty"`
}
func (x *Timeseries) Reset() {
*x = Timeseries{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_msgTypes[14]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *Timeseries) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Timeseries) ProtoMessage() {}
func (x *Timeseries) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_msgTypes[14]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use Timeseries.ProtoReflect.Descriptor instead.
func (*Timeseries) Descriptor() ([]byte, []int) {
return file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_rawDescGZIP(), []int{14}
}
func (x *Timeseries) GetPoint() []*TimeseriesPoint {
if x != nil {
return x.Point
}
return nil
}
// Forecast result for a given slice.
type EvaluatedSlice struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Values for all categorical dimensions that uniquely identify this slice.
Dimensions []*PinnedDimension `protobuf:"bytes,1,rep,name=dimensions,proto3" json:"dimensions,omitempty"`
// The actual value at the detection time (see
// [detectionTime][google.cloud.timeseriesinsights.v1.QueryDataSetRequest.detection_time]).
//
// **NOTE**: This value can be an estimate, so it should not be used as a
// source of truth.
DetectionPointActual *float64 `protobuf:"fixed64,11,opt,name=detection_point_actual,json=detectionPointActual,proto3,oneof" json:"detection_point_actual,omitempty"`
// The expected value at the detection time, which is obtained by forecasting
// on the historical time series.
DetectionPointForecast *float64 `protobuf:"fixed64,12,opt,name=detection_point_forecast,json=detectionPointForecast,proto3,oneof" json:"detection_point_forecast,omitempty"`
// How much our forecast model expects the detection point actual will
// deviate from its forecasted value based on how well it fit the input time
// series.
//
// In general, we expect the `detectionPointActual` to
// be in the `[detectionPointForecast - expectedDeviation,
// detectionPointForecast + expectedDeviation]` range. The more the actual
// value is outside this range, the more statistically significant the
// anomaly is.
//
// The expected deviation is always positive.
ExpectedDeviation *float64 `protobuf:"fixed64,16,opt,name=expected_deviation,json=expectedDeviation,proto3,oneof" json:"expected_deviation,omitempty"`
// Summarizes how significant the change between the actual and forecasted
// detection points are compared with the historical patterns observed on the
// [history][google.cloud.timeseriesinsights.v1.EvaluatedSlice.history] time series.
//
// Defined as *|a - f| / (e + nt)*, where:
//
// - *a* is the [detectionPointActual][google.cloud.timeseriesinsights.v1.EvaluatedSlice.detection_point_actual].
// - *f* is the [detectionPointForecast][google.cloud.timeseriesinsights.v1.EvaluatedSlice.detection_point_forecast].
// - *e* is the [expectedDeviation][google.cloud.timeseriesinsights.v1.EvaluatedSlice.expected_deviation].
// - *nt` is the [noiseThreshold][google.cloud.timeseriesinsights.v1.ForecastParams.noise_threshold].
//
// Anomaly scores between different requests and datasets are comparable. As
// a guideline, the risk of a slice being an anomaly based on the anomaly
// score is:
//
// - **Very High** if `anomalyScore` > 5.
// - **High** if the `anomalyScore` is in the [2, 5] range.
// - **Medium** if the `anomalyScore` is in the [1, 2) range.
// - **Low** if the `anomalyScore` is < 1.
//
// If there were issues evaluating this slice, then the anomaly score will be
// set to -1.0 and the [status][google.cloud.timeseriesinsights.v1.EvaluatedSlice.status] field will contain details on what
// went wrong.
AnomalyScore *float64 `protobuf:"fixed64,17,opt,name=anomaly_score,json=anomalyScore,proto3,oneof" json:"anomaly_score,omitempty"`
// The actual values in the `[`
// [detectionTime][google.cloud.timeseriesinsights.v1.QueryDataSetRequest.detection_time] `-`
// [forecastHistory][google.cloud.timeseriesinsights.v1.TimeseriesParams.forecast_history]`,`
// [detectionTime][google.cloud.timeseriesinsights.v1.QueryDataSetRequest.detection_time] `]` time
// range.
//
// **NOTE**: This field is only populated if
// [returnTimeseries][google.cloud.timeseriesinsights.v1.QueryDataSetRequest.return_timeseries] is true.
History *Timeseries `protobuf:"bytes,5,opt,name=history,proto3" json:"history,omitempty"`
// The forecasted values in the `[`
// [detectionTime][google.cloud.timeseriesinsights.v1.QueryDataSetRequest.detection_time] `+`
// [granularity][google.cloud.timeseriesinsights.v1.TimeseriesParams.granularity]`,`
// [forecastParams.horizonTime][google.cloud.timeseriesinsights.v1.QueryDataSetRequest.forecast_params] `]` time
// range.
//
// **NOTE**: This field is only populated if
// [returnTimeseries][google.cloud.timeseriesinsights.v1.QueryDataSetRequest.return_timeseries] is true.
Forecast *Timeseries `protobuf:"bytes,10,opt,name=forecast,proto3" json:"forecast,omitempty"`
// Evaluation status. Contains an error message if the `anomalyScore` is < 0.
//
// Possible error messages:
//
// - **"Time series too sparse"**: The returned time series for this slice did
// not contain enough data points (we require a minimum of 10).
// - **"Not enough recent time series points"**: The time series contains the
// minimum of 10 points, but there are not enough close in time to the
// detection point.
// - **"Missing detection point data"**: There were not events to be
// aggregated within the `[detectionTime, detectionTime + granularity]` time
// interval, so we don't have an actual value with which we can compare our
// prediction.
// - **"Data retrieval error"**: We failed to retrieve the time series data
// for this slice and could not evaluate it successfully. Should be a
// transient error.
// - **"Internal server error"**: Internal unexpected error.
Status *status.Status `protobuf:"bytes,18,opt,name=status,proto3" json:"status,omitempty"`
}
func (x *EvaluatedSlice) Reset() {
*x = EvaluatedSlice{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_msgTypes[15]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *EvaluatedSlice) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*EvaluatedSlice) ProtoMessage() {}
func (x *EvaluatedSlice) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_msgTypes[15]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use EvaluatedSlice.ProtoReflect.Descriptor instead.
func (*EvaluatedSlice) Descriptor() ([]byte, []int) {
return file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_rawDescGZIP(), []int{15}
}
func (x *EvaluatedSlice) GetDimensions() []*PinnedDimension {
if x != nil {
return x.Dimensions
}
return nil
}
func (x *EvaluatedSlice) GetDetectionPointActual() float64 {
if x != nil && x.DetectionPointActual != nil {
return *x.DetectionPointActual
}
return 0
}
func (x *EvaluatedSlice) GetDetectionPointForecast() float64 {
if x != nil && x.DetectionPointForecast != nil {
return *x.DetectionPointForecast
}
return 0
}
func (x *EvaluatedSlice) GetExpectedDeviation() float64 {
if x != nil && x.ExpectedDeviation != nil {
return *x.ExpectedDeviation
}
return 0
}
func (x *EvaluatedSlice) GetAnomalyScore() float64 {
if x != nil && x.AnomalyScore != nil {
return *x.AnomalyScore
}
return 0
}
func (x *EvaluatedSlice) GetHistory() *Timeseries {
if x != nil {
return x.History
}
return nil
}
func (x *EvaluatedSlice) GetForecast() *Timeseries {
if x != nil {
return x.Forecast
}
return nil
}
func (x *EvaluatedSlice) GetStatus() *status.Status {
if x != nil {
return x.Status
}
return nil
}
// Parameters that control how we slice the dataset and, optionally, filter
// slices that have some specific values on some dimensions (pinned dimensions).
type SlicingParams struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Required. Dimensions over which we will group the events in slices. The names
// specified here come from the
// [EventDimension.name][google.cloud.timeseriesinsights.v1.EventDimension.name] field. At least
// one dimension name must be specified. All dimension names that do not exist
// in the queried `DataSet` will be ignored.
//
// Currently only dimensions that hold string values can be specified here.
DimensionNames []string `protobuf:"bytes,1,rep,name=dimension_names,json=dimensionNames,proto3" json:"dimension_names,omitempty"`
// Optional. We will only analyze slices for which
// [EvaluatedSlice.dimensions][google.cloud.timeseriesinsights.v1.EvaluatedSlice.dimensions] contain all of the
// following pinned dimensions. A query with a pinned dimension `{ name: "d3"
// stringVal: "v3" }` will only analyze events which contain the dimension `{
// name: "d3" stringVal: "v3" }`.
// The [pinnedDimensions][google.cloud.timeseriesinsights.v1.SlicingParams.pinned_dimensions] and
// [dimensionNames][google.cloud.timeseriesinsights.v1.SlicingParams.dimension_names] fields can **not**
// share the same dimension names.
//
// Example a valid specification:
//
// ```json
//
// {
// dimensionNames: ["d1", "d2"],
// pinnedDimensions: [
// { name: "d3" stringVal: "v3" },
// { name: "d4" stringVal: "v4" }
// ]
// }
//
// ```
//
// In the previous example we will slice the dataset by dimensions "d1",
// "d2", "d3" and "d4", but we will only analyze slices for which "d3=v3" and
// "d4=v4".
//
// The following example is **invalid** as "d2" is present in both
// dimensionNames and pinnedDimensions:
//
// ```json
//
// {
// dimensionNames: ["d1", "d2"],
// pinnedDimensions: [
// { name: "d2" stringVal: "v2" },
// { name: "d4" stringVal: "v4" }
// ]
// }
//
// ```
PinnedDimensions []*PinnedDimension `protobuf:"bytes,2,rep,name=pinned_dimensions,json=pinnedDimensions,proto3" json:"pinned_dimensions,omitempty"`
}
func (x *SlicingParams) Reset() {
*x = SlicingParams{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_msgTypes[16]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *SlicingParams) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*SlicingParams) ProtoMessage() {}
func (x *SlicingParams) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_msgTypes[16]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use SlicingParams.ProtoReflect.Descriptor instead.
func (*SlicingParams) Descriptor() ([]byte, []int) {
return file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_rawDescGZIP(), []int{16}
}
func (x *SlicingParams) GetDimensionNames() []string {
if x != nil {
return x.DimensionNames
}
return nil
}
func (x *SlicingParams) GetPinnedDimensions() []*PinnedDimension {
if x != nil {
return x.PinnedDimensions
}
return nil
}
// Parameters that control how we construct the time series for each slice.
type TimeseriesParams struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Required. How long should we go in the past when fetching the timeline used for
// forecasting each slice.
//
// This is used in combination with the
// [detectionTime][google.cloud.timeseriesinsights.v1.QueryDataSetRequest.detection_time] parameter.
// The time series we construct will have the following time range:
// `[detectionTime - forecastHistory, detectionTime + granularity]`.
//
// The forecast history might be rounded up, so that a multiple of
// `granularity` is used to process the query.
//
// Note: If there are not enough events in the
// `[detectionTime - forecastHistory, detectionTime + granularity]` time
// interval, the slice evaluation can fail. For more information, see
// [EvaluatedSlice.status][google.cloud.timeseriesinsights.v1.EvaluatedSlice.status].
ForecastHistory *durationpb.Duration `protobuf:"bytes,1,opt,name=forecast_history,json=forecastHistory,proto3" json:"forecast_history,omitempty"`
// Required. The time granularity of the time series (on the x-axis). Each time series
// point starting at time T will aggregate all events for a particular slice
// in *[T, T + granularity)* time windows.
//
// Note: The aggregation is decided based on the
// [metric][google.cloud.timeseriesinsights.v1.TimeseriesParams.metric] parameter.
//
// This granularity defines the query-time aggregation windows and is not
// necessarily related to any event time granularity in the raw data (though
// we do recommend that the query-time granularity is not finer than the
// ingestion-time one).
//
// Currently, the minimal supported granularity is 10 seconds.
Granularity *durationpb.Duration `protobuf:"bytes,2,opt,name=granularity,proto3" json:"granularity,omitempty"`
// Optional. Denotes the [name][google.cloud.timeseriesinsights.v1.EventDimension.name] of a numerical
// dimension that will have its values aggregated to compute the y-axis of the
// time series.
//
// The aggregation method must also be specified by setting the
// [metricAggregationMethod][google.cloud.timeseriesinsights.v1.TimeseriesParams.metric_aggregation_method]
// field.
//
// Note: Currently, if the aggregation method is unspecified, we will
// default to SUM for backward compatibility reasons, but new implementations
// should set the
// [metricAggregationMethod][google.cloud.timeseriesinsights.v1.TimeseriesParams.metric_aggregation_method]
// explicitly.
//
// If the metric is unspecified, we will use the number of events that each
// time series point contains as the point value.
//
// Example: Let's assume we have the following three events in our dataset:
// ```json
//
// {
// eventTime: "2020-12-27T00:00:00Z",
// dimensions: [
// { name: "d1" stringVal: "v1" },
// { name: "d2" stringVal: "v2" }
// { name: "m1" longVal: 100 }
// { name: "m2" longVal: 11 }
// ]
// },
//
// {
// eventTime: "2020-12-27T00:10:00Z",
// dimensions: [
// { name: "d1" stringVal: "v1" },
// { name: "d2" stringVal: "v2" }
// { name: "m1" longVal: 200 }
// { name: "m2" longVal: 22 }
// ]
// },
//
// {
// eventTime: "2020-12-27T00:20:00Z",
// dimensions: [
// { name: "d1" stringVal: "v1" },
// { name: "d2" stringVal: "v2" }
// { name: "m1" longVal: 300 }
// { name: "m2" longVal: 33 }
// ]
// }
//
// ```
//
// These events are all within the same hour, spaced 10 minutes between each
// of them. Assuming our [QueryDataSetRequest][google.cloud.timeseriesinsights.v1.QueryDataSetRequest] had set
// [slicingParams.dimensionNames][google.cloud.timeseriesinsights.v1.SlicingParams.dimension_names] to ["d1",
// "d2"] and [timeseries_params.granularity][google.cloud.timeseriesinsights.v1.TimeseriesParams.granularity] to
// "3600s", then all the previous events will be aggregated into the same
// [timeseries point][google.cloud.timeseriesinsights.v1.TimeseriesPoint].
//
// The time series point that they're all part of will have the
// [time][google.cloud.timeseriesinsights.v1.TimeseriesPoint.time] set to "2020-12-27T00:00:00Z" and the
// [value][google.cloud.timeseriesinsights.v1.TimeseriesPoint.value] populated based on this metric field:
//
// - If the metric is set to "m1" and metric_aggregation_method to SUM, then
// the value of the point will be 600.
// - If the metric is set to "m2" and metric_aggregation_method to SUM, then
// the value of the point will be 66.
// - If the metric is set to "m1" and metric_aggregation_method to AVERAGE,
// then the value of the point will be 200.
// - If the metric is set to "m2" and metric_aggregation_method to AVERAGE,
// then the value of the point will be 22.
// - If the metric field is "" or unspecified, then the value of the point
// will be 3, as we will simply count the events.
Metric *string `protobuf:"bytes,4,opt,name=metric,proto3,oneof" json:"metric,omitempty"`
// Optional. Together with the [metric][google.cloud.timeseriesinsights.v1.TimeseriesParams.metric] field, specifies how
// we will aggregate multiple events to obtain the value of a time series
// point. See the [metric][google.cloud.timeseriesinsights.v1.TimeseriesParams.metric] documentation for more
// details.
//
// If the metric is not specified or "", then this field will be ignored.
MetricAggregationMethod TimeseriesParams_AggregationMethod `protobuf:"varint,5,opt,name=metric_aggregation_method,json=metricAggregationMethod,proto3,enum=google.cloud.timeseriesinsights.v1.TimeseriesParams_AggregationMethod" json:"metric_aggregation_method,omitempty"`
}
func (x *TimeseriesParams) Reset() {
*x = TimeseriesParams{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_msgTypes[17]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *TimeseriesParams) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*TimeseriesParams) ProtoMessage() {}
func (x *TimeseriesParams) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_msgTypes[17]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use TimeseriesParams.ProtoReflect.Descriptor instead.
func (*TimeseriesParams) Descriptor() ([]byte, []int) {
return file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_rawDescGZIP(), []int{17}
}
func (x *TimeseriesParams) GetForecastHistory() *durationpb.Duration {
if x != nil {
return x.ForecastHistory
}
return nil
}
func (x *TimeseriesParams) GetGranularity() *durationpb.Duration {
if x != nil {
return x.Granularity
}
return nil
}
func (x *TimeseriesParams) GetMetric() string {
if x != nil && x.Metric != nil {
return *x.Metric
}
return ""
}
func (x *TimeseriesParams) GetMetricAggregationMethod() TimeseriesParams_AggregationMethod {
if x != nil {
return x.MetricAggregationMethod
}
return TimeseriesParams_AGGREGATION_METHOD_UNSPECIFIED
}
// Request for performing a query against a loaded DataSet.
type QueryDataSetRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Required. Loaded DataSet to be queried in the format of
// "projects/{project}/datasets/{dataset}"
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
// Required. This is the point in time that we want to probe for anomalies.
//
// The corresponding [TimeseriesPoint][google.cloud.timeseriesinsights.v1.TimeseriesPoint] is referred to as the
// detection point.
//
// **NOTE**: As with any other time series point, the value is given by
// aggregating all events in the slice that are in the
// [detectionTime, detectionTime + granularity) time interval, where
// the granularity is specified in the
// [timeseriesParams.granularity][google.cloud.timeseriesinsights.v1.TimeseriesParams.granularity] field.
DetectionTime *timestamppb.Timestamp `protobuf:"bytes,11,opt,name=detection_time,json=detectionTime,proto3" json:"detection_time,omitempty"`
// How many slices are returned in
// [QueryDataSetResponse.slices][google.cloud.timeseriesinsights.v1.QueryDataSetResponse.slices].
//
// The returned slices are tentatively the ones with the highest
// [anomaly scores][google.cloud.timeseriesinsights.v1.EvaluatedSlice.anomaly_score] in the dataset that match
// the query, but it is not guaranteed.
//
// Reducing this number will improve query performance, both in terms of
// latency and resource usage.
//
// Defaults to 50.
NumReturnedSlices *int32 `protobuf:"varint,13,opt,name=num_returned_slices,json=numReturnedSlices,proto3,oneof" json:"num_returned_slices,omitempty"`
// Parameters controlling how we will split the dataset into the slices that
// we will analyze.
SlicingParams *SlicingParams `protobuf:"bytes,9,opt,name=slicing_params,json=slicingParams,proto3" json:"slicing_params,omitempty"`
// Parameters controlling how we will build the time series used to predict
// the [detectionTime][google.cloud.timeseriesinsights.v1.QueryDataSetRequest.detection_time] value for each slice.
TimeseriesParams *TimeseriesParams `protobuf:"bytes,10,opt,name=timeseries_params,json=timeseriesParams,proto3" json:"timeseries_params,omitempty"`
// Parameters that control the time series forecasting models, such as the
// sensitivity of the anomaly detection.
ForecastParams *ForecastParams `protobuf:"bytes,5,opt,name=forecast_params,json=forecastParams,proto3" json:"forecast_params,omitempty"`
// If specified, we will return the actual and forecasted time for all
// returned slices.
//
// The time series are returned in the
// [EvaluatedSlice.history][google.cloud.timeseriesinsights.v1.EvaluatedSlice.history] and
// [EvaluatedSlice.forecast][google.cloud.timeseriesinsights.v1.EvaluatedSlice.forecast] fields.
ReturnTimeseries bool `protobuf:"varint,8,opt,name=return_timeseries,json=returnTimeseries,proto3" json:"return_timeseries,omitempty"`
}
func (x *QueryDataSetRequest) Reset() {
*x = QueryDataSetRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_msgTypes[18]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *QueryDataSetRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*QueryDataSetRequest) ProtoMessage() {}
func (x *QueryDataSetRequest) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_msgTypes[18]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use QueryDataSetRequest.ProtoReflect.Descriptor instead.
func (*QueryDataSetRequest) Descriptor() ([]byte, []int) {
return file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_rawDescGZIP(), []int{18}
}
func (x *QueryDataSetRequest) GetName() string {
if x != nil {
return x.Name
}
return ""
}
func (x *QueryDataSetRequest) GetDetectionTime() *timestamppb.Timestamp {
if x != nil {
return x.DetectionTime
}
return nil
}
func (x *QueryDataSetRequest) GetNumReturnedSlices() int32 {
if x != nil && x.NumReturnedSlices != nil {
return *x.NumReturnedSlices
}
return 0
}
func (x *QueryDataSetRequest) GetSlicingParams() *SlicingParams {
if x != nil {
return x.SlicingParams
}
return nil
}
func (x *QueryDataSetRequest) GetTimeseriesParams() *TimeseriesParams {
if x != nil {
return x.TimeseriesParams
}
return nil
}
func (x *QueryDataSetRequest) GetForecastParams() *ForecastParams {
if x != nil {
return x.ForecastParams
}
return nil
}
func (x *QueryDataSetRequest) GetReturnTimeseries() bool {
if x != nil {
return x.ReturnTimeseries
}
return false
}
// Response for a query executed by the system.
type QueryDataSetResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Loaded DataSet that was queried.
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
// Slices sorted in descending order by their
// [anomalyScore][google.cloud.timeseriesinsights.v1.EvaluatedSlice.anomaly_score].
//
// At most [numReturnedSlices][google.cloud.timeseriesinsights.v1.QueryDataSetRequest.num_returned_slices]
// slices are present in this field.
Slices []*EvaluatedSlice `protobuf:"bytes,3,rep,name=slices,proto3" json:"slices,omitempty"`
}
func (x *QueryDataSetResponse) Reset() {
*x = QueryDataSetResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_msgTypes[19]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *QueryDataSetResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*QueryDataSetResponse) ProtoMessage() {}
func (x *QueryDataSetResponse) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_msgTypes[19]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use QueryDataSetResponse.ProtoReflect.Descriptor instead.
func (*QueryDataSetResponse) Descriptor() ([]byte, []int) {
return file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_rawDescGZIP(), []int{19}
}
func (x *QueryDataSetResponse) GetName() string {
if x != nil {
return x.Name
}
return ""
}
func (x *QueryDataSetResponse) GetSlices() []*EvaluatedSlice {
if x != nil {
return x.Slices
}
return nil
}
// Request for evaluateSlice.
type EvaluateSliceRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Required. Loaded DataSet to be queried in the format of
// "projects/{project}/datasets/{dataset}"
Dataset string `protobuf:"bytes,1,opt,name=dataset,proto3" json:"dataset,omitempty"`
// Required. Dimensions with pinned values that specify the slice for which we will
// fetch the time series.
PinnedDimensions []*PinnedDimension `protobuf:"bytes,2,rep,name=pinned_dimensions,json=pinnedDimensions,proto3" json:"pinned_dimensions,omitempty"`
// Required. This is the point in time that we want to probe for anomalies.
//
// See documentation for
// [QueryDataSetRequest.detectionTime][google.cloud.timeseriesinsights.v1.QueryDataSetRequest.detection_time].
DetectionTime *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=detection_time,json=detectionTime,proto3" json:"detection_time,omitempty"`
// Parameters controlling how we will build the time series used to predict
// the [detectionTime][google.cloud.timeseriesinsights.v1.EvaluateSliceRequest.detection_time] value for this slice.
TimeseriesParams *TimeseriesParams `protobuf:"bytes,4,opt,name=timeseries_params,json=timeseriesParams,proto3" json:"timeseries_params,omitempty"`
// Parameters that control the time series forecasting models, such as the
// sensitivity of the anomaly detection.
ForecastParams *ForecastParams `protobuf:"bytes,5,opt,name=forecast_params,json=forecastParams,proto3" json:"forecast_params,omitempty"`
}
func (x *EvaluateSliceRequest) Reset() {
*x = EvaluateSliceRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_msgTypes[20]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *EvaluateSliceRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*EvaluateSliceRequest) ProtoMessage() {}
func (x *EvaluateSliceRequest) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_msgTypes[20]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use EvaluateSliceRequest.ProtoReflect.Descriptor instead.
func (*EvaluateSliceRequest) Descriptor() ([]byte, []int) {
return file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_rawDescGZIP(), []int{20}
}
func (x *EvaluateSliceRequest) GetDataset() string {
if x != nil {
return x.Dataset
}
return ""
}
func (x *EvaluateSliceRequest) GetPinnedDimensions() []*PinnedDimension {
if x != nil {
return x.PinnedDimensions
}
return nil
}
func (x *EvaluateSliceRequest) GetDetectionTime() *timestamppb.Timestamp {
if x != nil {
return x.DetectionTime
}
return nil
}
func (x *EvaluateSliceRequest) GetTimeseriesParams() *TimeseriesParams {
if x != nil {
return x.TimeseriesParams
}
return nil
}
func (x *EvaluateSliceRequest) GetForecastParams() *ForecastParams {
if x != nil {
return x.ForecastParams
}
return nil
}
// Request for evaluateTimeseries.
type EvaluateTimeseriesRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Required. Client project name in the format of 'projects/{project}'.
Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
// Evaluate this time series without requiring it was previously loaded in
// a data set.
//
// The evaluated time series point is the last one, analogous to calling
// evaluateSlice or query with
// [detectionTime][google.cloud.timeseriesinsights.v1.EvaluateSliceRequest.detection_time] set to
// `timeseries.point(timeseries.point_size() - 1).time`.
//
// The length of the time series must be at least 10.
//
// All points must have the same time offset relative to the granularity. For
// example, if the [granularity][google.cloud.timeseriesinsights.v1.EvaluateTimeseriesRequest.granularity] is "5s", then the following
// point.time sequences are valid:
// - "100s", "105s", "120s", "125s" (no offset)
// - "102s", "107s", "122s", "127s" (offset is "2s")
// However, the following sequence is invalid as it has inconsistent offsets:
// - "100s", "105s", "122s", "127s" (offsets are either "0s" or "2s")
Timeseries *Timeseries `protobuf:"bytes,2,opt,name=timeseries,proto3" json:"timeseries,omitempty"`
// The granularity of the time series (time distance between two consecutive
// points).
Granularity *durationpb.Duration `protobuf:"bytes,3,opt,name=granularity,proto3" json:"granularity,omitempty"`
// The forecast parameters.
ForecastParams *ForecastParams `protobuf:"bytes,4,opt,name=forecast_params,json=forecastParams,proto3" json:"forecast_params,omitempty"`
}
func (x *EvaluateTimeseriesRequest) Reset() {
*x = EvaluateTimeseriesRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_msgTypes[21]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *EvaluateTimeseriesRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*EvaluateTimeseriesRequest) ProtoMessage() {}
func (x *EvaluateTimeseriesRequest) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_msgTypes[21]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use EvaluateTimeseriesRequest.ProtoReflect.Descriptor instead.
func (*EvaluateTimeseriesRequest) Descriptor() ([]byte, []int) {
return file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_rawDescGZIP(), []int{21}
}
func (x *EvaluateTimeseriesRequest) GetParent() string {
if x != nil {
return x.Parent
}
return ""
}
func (x *EvaluateTimeseriesRequest) GetTimeseries() *Timeseries {
if x != nil {
return x.Timeseries
}
return nil
}
func (x *EvaluateTimeseriesRequest) GetGranularity() *durationpb.Duration {
if x != nil {
return x.Granularity
}
return nil
}
func (x *EvaluateTimeseriesRequest) GetForecastParams() *ForecastParams {
if x != nil {
return x.ForecastParams
}
return nil
}
var File_google_cloud_timeseriesinsights_v1_timeseries_insights_proto protoreflect.FileDescriptor
var file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_rawDesc = []byte{
0x0a, 0x3c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x74,
0x69, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74,
0x73, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x5f,
0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x22,
0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x74, 0x69, 0x6d,
0x65, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e,
0x76, 0x31, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61,
0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x1a, 0x17, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6c, 0x69,
0x65, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x62, 0x65, 0x68, 0x61,
0x76, 0x69, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67,
0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e,
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e,
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x72, 0x70, 0x63, 0x2f,
0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x8f, 0x01, 0x0a,
0x0f, 0x42, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67,
0x12, 0x29, 0x0a, 0x10, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x5f, 0x63, 0x6f,
0x6c, 0x75, 0x6d, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x74, 0x69, 0x6d, 0x65,
0x73, 0x74, 0x61, 0x6d, 0x70, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x12, 0x26, 0x0a, 0x0f, 0x67,
0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x18, 0x02,
0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x43, 0x6f, 0x6c,
0x75, 0x6d, 0x6e, 0x12, 0x29, 0x0a, 0x10, 0x64, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e,
0x5f, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x64,
0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x22, 0x72,
0x0a, 0x0a, 0x44, 0x61, 0x74, 0x61, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x10, 0x0a, 0x03,
0x75, 0x72, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x69, 0x12, 0x52,
0x0a, 0x0a, 0x62, 0x71, 0x5f, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01,
0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75,
0x64, 0x2e, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x69, 0x6e, 0x73, 0x69,
0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79,
0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x09, 0x62, 0x71, 0x4d, 0x61, 0x70, 0x70, 0x69,
0x6e, 0x67, 0x22, 0xc2, 0x04, 0x0a, 0x07, 0x44, 0x61, 0x74, 0x61, 0x53, 0x65, 0x74, 0x12, 0x12,
0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61,
0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73,
0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x64, 0x61, 0x74, 0x61, 0x4e, 0x61, 0x6d, 0x65,
0x73, 0x12, 0x51, 0x0a, 0x0c, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x69, 0x65,
0x73, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74,
0x61, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x0b, 0x64, 0x61, 0x74, 0x61, 0x53, 0x6f, 0x75,
0x72, 0x63, 0x65, 0x73, 0x12, 0x47, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20,
0x01, 0x28, 0x0e, 0x32, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f,
0x75, 0x64, 0x2e, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x69, 0x6e, 0x73,
0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x53, 0x65, 0x74,
0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x2a, 0x0a,
0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e,
0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75,
0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x2b, 0x0a, 0x03, 0x74, 0x74, 0x6c,
0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f,
0x6e, 0x52, 0x03, 0x74, 0x74, 0x6c, 0x22, 0x7a, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12,
0x15, 0x0a, 0x11, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49,
0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57,
0x4e, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x02,
0x12, 0x0b, 0x0a, 0x07, 0x4c, 0x4f, 0x41, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x03, 0x12, 0x0a, 0x0a,
0x06, 0x4c, 0x4f, 0x41, 0x44, 0x45, 0x44, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x55, 0x4e, 0x4c,
0x4f, 0x41, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x05, 0x12, 0x0c, 0x0a, 0x08, 0x55, 0x4e, 0x4c, 0x4f,
0x41, 0x44, 0x45, 0x44, 0x10, 0x06, 0x12, 0x0a, 0x0a, 0x06, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44,
0x10, 0x07, 0x3a, 0x92, 0x01, 0xea, 0x41, 0x8e, 0x01, 0x0a, 0x29, 0x74, 0x69, 0x6d, 0x65, 0x73,
0x65, 0x72, 0x69, 0x65, 0x73, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x67, 0x6f,
0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x61, 0x74,
0x61, 0x73, 0x65, 0x74, 0x12, 0x25, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b,
0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74,
0x73, 0x2f, 0x7b, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x7d, 0x12, 0x3a, 0x70, 0x72, 0x6f,
0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f,
0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74,
0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x7b, 0x64,
0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x7d, 0x22, 0xa9, 0x01, 0x0a, 0x0e, 0x45, 0x76, 0x65, 0x6e,
0x74, 0x44, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61,
0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1f,
0x0a, 0x0a, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x76, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01,
0x28, 0x09, 0x48, 0x00, 0x52, 0x09, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x12,
0x1b, 0x0a, 0x08, 0x6c, 0x6f, 0x6e, 0x67, 0x5f, 0x76, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28,
0x03, 0x48, 0x00, 0x52, 0x07, 0x6c, 0x6f, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x12, 0x1b, 0x0a, 0x08,
0x62, 0x6f, 0x6f, 0x6c, 0x5f, 0x76, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00,
0x52, 0x07, 0x62, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x12, 0x1f, 0x0a, 0x0a, 0x64, 0x6f, 0x75,
0x62, 0x6c, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x01, 0x48, 0x00, 0x52,
0x09, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x42, 0x07, 0x0a, 0x05, 0x76, 0x61,
0x6c, 0x75, 0x65, 0x22, 0xb1, 0x01, 0x0a, 0x05, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x52, 0x0a,
0x0a, 0x64, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28,
0x0b, 0x32, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64,
0x2e, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x69, 0x6e, 0x73, 0x69, 0x67,
0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x44, 0x69, 0x6d, 0x65,
0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x64, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e,
0x73, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20,
0x01, 0x28, 0x03, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x39, 0x0a, 0x0a,
0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b,
0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x65, 0x76,
0x65, 0x6e, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x22, 0xa5, 0x01, 0x0a, 0x13, 0x41, 0x70, 0x70, 0x65,
0x6e, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
0x41, 0x0a, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x74,
0x69, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74,
0x73, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x06, 0x65, 0x76, 0x65, 0x6e,
0x74, 0x73, 0x12, 0x4b, 0x0a, 0x07, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20,
0x01, 0x28, 0x09, 0x42, 0x31, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x2b, 0x0a, 0x29, 0x74, 0x69, 0x6d,
0x65, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e,
0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44,
0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x52, 0x07, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x22,
0x68, 0x0a, 0x14, 0x41, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52,
0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x50, 0x0a, 0x0e, 0x64, 0x72, 0x6f, 0x70, 0x70,
0x65, 0x64, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x74,
0x69, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74,
0x73, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x0d, 0x64, 0x72, 0x6f, 0x70,
0x70, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x22, 0xaf, 0x01, 0x0a, 0x14, 0x43, 0x72,
0x65, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65,
0x73, 0x74, 0x12, 0x4b, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01,
0x28, 0x09, 0x42, 0x33, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x2d, 0x0a, 0x2b, 0x63, 0x6c, 0x6f, 0x75,
0x64, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72,
0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f,
0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12,
0x4a, 0x0a, 0x07, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e,
0x74, 0x69, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68,
0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x53, 0x65, 0x74, 0x42, 0x03, 0xe0,
0x41, 0x02, 0x52, 0x07, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x22, 0x5d, 0x0a, 0x14, 0x44,
0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75,
0x65, 0x73, 0x74, 0x12, 0x45, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
0x09, 0x42, 0x31, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x2b, 0x0a, 0x29, 0x74, 0x69, 0x6d, 0x65, 0x73,
0x65, 0x72, 0x69, 0x65, 0x73, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x67, 0x6f,
0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x61, 0x74,
0x61, 0x73, 0x65, 0x74, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x9e, 0x01, 0x0a, 0x13, 0x4c,
0x69, 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65,
0x73, 0x74, 0x12, 0x4b, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01,
0x28, 0x09, 0x42, 0x33, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x2d, 0x0a, 0x2b, 0x63, 0x6c, 0x6f, 0x75,
0x64, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72,
0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f,
0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12,
0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01,
0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a,
0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x87, 0x01, 0x0a, 0x14,
0x4c, 0x69, 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70,
0x6f, 0x6e, 0x73, 0x65, 0x12, 0x47, 0x0a, 0x08, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x73,
0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73,
0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61,
0x53, 0x65, 0x74, 0x52, 0x08, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x73, 0x12, 0x26, 0x0a,
0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e,
0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65,
0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x6c, 0x0a, 0x0f, 0x50, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x44,
0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65,
0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0a,
0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x76, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
0x48, 0x00, 0x52, 0x09, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x12, 0x1b, 0x0a,
0x08, 0x62, 0x6f, 0x6f, 0x6c, 0x5f, 0x76, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x48,
0x00, 0x52, 0x07, 0x62, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x42, 0x07, 0x0a, 0x05, 0x76, 0x61,
0x6c, 0x75, 0x65, 0x22, 0xeb, 0x02, 0x0a, 0x0e, 0x46, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x73, 0x74,
0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x31, 0x0a, 0x0f, 0x6e, 0x6f, 0x69, 0x73, 0x65, 0x5f,
0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x01, 0x42,
0x03, 0xe0, 0x41, 0x01, 0x48, 0x00, 0x52, 0x0e, 0x6e, 0x6f, 0x69, 0x73, 0x65, 0x54, 0x68, 0x72,
0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x88, 0x01, 0x01, 0x12, 0x69, 0x0a, 0x10, 0x73, 0x65, 0x61,
0x73, 0x6f, 0x6e, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x68, 0x69, 0x6e, 0x74, 0x18, 0x0a, 0x20,
0x01, 0x28, 0x0e, 0x32, 0x39, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f,
0x75, 0x64, 0x2e, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x69, 0x6e, 0x73,
0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x73,
0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x42, 0x03,
0xe0, 0x41, 0x01, 0x52, 0x0f, 0x73, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x61, 0x6c, 0x69, 0x74, 0x79,
0x48, 0x69, 0x6e, 0x74, 0x12, 0x49, 0x0a, 0x10, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x6f, 0x6e, 0x5f,
0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19,
0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0f,
0x68, 0x6f, 0x72, 0x69, 0x7a, 0x6f, 0x6e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22,
0x5c, 0x0a, 0x06, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x12, 0x16, 0x0a, 0x12, 0x50, 0x45, 0x52,
0x49, 0x4f, 0x44, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10,
0x00, 0x12, 0x0a, 0x0a, 0x06, 0x48, 0x4f, 0x55, 0x52, 0x4c, 0x59, 0x10, 0x05, 0x12, 0x09, 0x0a,
0x05, 0x44, 0x41, 0x49, 0x4c, 0x59, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x57, 0x45, 0x45, 0x4b,
0x4c, 0x59, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x4d, 0x4f, 0x4e, 0x54, 0x48, 0x4c, 0x59, 0x10,
0x03, 0x12, 0x0a, 0x0a, 0x06, 0x59, 0x45, 0x41, 0x52, 0x4c, 0x59, 0x10, 0x04, 0x42, 0x12, 0x0a,
0x10, 0x5f, 0x6e, 0x6f, 0x69, 0x73, 0x65, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c,
0x64, 0x22, 0x66, 0x0a, 0x0f, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x50,
0x6f, 0x69, 0x6e, 0x74, 0x12, 0x2e, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01,
0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x04,
0x74, 0x69, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20,
0x01, 0x28, 0x01, 0x48, 0x00, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x42,
0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x57, 0x0a, 0x0a, 0x54, 0x69, 0x6d,
0x65, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x12, 0x49, 0x0a, 0x05, 0x70, 0x6f, 0x69, 0x6e, 0x74,
0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73,
0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x69, 0x6d, 0x65,
0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x05, 0x70, 0x6f, 0x69,
0x6e, 0x74, 0x22, 0xe0, 0x04, 0x0a, 0x0e, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x64,
0x53, 0x6c, 0x69, 0x63, 0x65, 0x12, 0x53, 0x0a, 0x0a, 0x64, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69,
0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x65, 0x72,
0x69, 0x65, 0x73, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x50,
0x69, 0x6e, 0x6e, 0x65, 0x64, 0x44, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0a,
0x64, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x39, 0x0a, 0x16, 0x64, 0x65,
0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x61, 0x63,
0x74, 0x75, 0x61, 0x6c, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x01, 0x48, 0x00, 0x52, 0x14, 0x64, 0x65,
0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x41, 0x63, 0x74, 0x75,
0x61, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, 0x18, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69,
0x6f, 0x6e, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x66, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x73,
0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x01, 0x48, 0x01, 0x52, 0x16, 0x64, 0x65, 0x74, 0x65, 0x63,
0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x46, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x73,
0x74, 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, 0x12, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64,
0x5f, 0x64, 0x65, 0x76, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x10, 0x20, 0x01, 0x28, 0x01,
0x48, 0x02, 0x52, 0x11, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x44, 0x65, 0x76, 0x69,
0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x0d, 0x61, 0x6e, 0x6f, 0x6d,
0x61, 0x6c, 0x79, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x01, 0x48,
0x03, 0x52, 0x0c, 0x61, 0x6e, 0x6f, 0x6d, 0x61, 0x6c, 0x79, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x88,
0x01, 0x01, 0x12, 0x48, 0x0a, 0x07, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x05, 0x20,
0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f,
0x75, 0x64, 0x2e, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x69, 0x6e, 0x73,
0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x65, 0x72,
0x69, 0x65, 0x73, 0x52, 0x07, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x4a, 0x0a, 0x08,
0x66, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x73, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e,
0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x74, 0x69,
0x6d, 0x65, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73,
0x2e, 0x76, 0x31, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x52, 0x08,
0x66, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x73, 0x74, 0x12, 0x2a, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74,
0x75, 0x73, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74,
0x61, 0x74, 0x75, 0x73, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69,
0x6f, 0x6e, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x75, 0x61, 0x6c, 0x42,
0x1b, 0x0a, 0x19, 0x5f, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x6f,
0x69, 0x6e, 0x74, 0x5f, 0x66, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x73, 0x74, 0x42, 0x15, 0x0a, 0x13,
0x5f, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x61, 0x74,
0x69, 0x6f, 0x6e, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x61, 0x6e, 0x6f, 0x6d, 0x61, 0x6c, 0x79, 0x5f,
0x73, 0x63, 0x6f, 0x72, 0x65, 0x22, 0xa4, 0x01, 0x0a, 0x0d, 0x53, 0x6c, 0x69, 0x63, 0x69, 0x6e,
0x67, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x2c, 0x0a, 0x0f, 0x64, 0x69, 0x6d, 0x65, 0x6e,
0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09,
0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0e, 0x64, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e,
0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x65, 0x0a, 0x11, 0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x5f,
0x64, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b,
0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e,
0x74, 0x69, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68,
0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x44, 0x69, 0x6d, 0x65,
0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x10, 0x70, 0x69, 0x6e, 0x6e,
0x65, 0x64, 0x44, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xa5, 0x03, 0x0a,
0x10, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x50, 0x61, 0x72, 0x61, 0x6d,
0x73, 0x12, 0x49, 0x0a, 0x10, 0x66, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x68, 0x69,
0x73, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f,
0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75,
0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0f, 0x66, 0x6f, 0x72,
0x65, 0x63, 0x61, 0x73, 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x40, 0x0a, 0x0b,
0x67, 0x72, 0x61, 0x6e, 0x75, 0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28,
0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x03, 0xe0, 0x41,
0x02, 0x52, 0x0b, 0x67, 0x72, 0x61, 0x6e, 0x75, 0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, 0x12, 0x20,
0x0a, 0x06, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03,
0xe0, 0x41, 0x01, 0x48, 0x00, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x88, 0x01, 0x01,
0x12, 0x87, 0x01, 0x0a, 0x19, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x61, 0x67, 0x67, 0x72,
0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x05,
0x20, 0x01, 0x28, 0x0e, 0x32, 0x46, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c,
0x6f, 0x75, 0x64, 0x2e, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x69, 0x6e,
0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x65,
0x72, 0x69, 0x65, 0x73, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x41, 0x67, 0x67, 0x72, 0x65,
0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x42, 0x03, 0xe0, 0x41,
0x01, 0x52, 0x17, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61,
0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x22, 0x4d, 0x0a, 0x11, 0x41, 0x67,
0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12,
0x22, 0x0a, 0x1e, 0x41, 0x47, 0x47, 0x52, 0x45, 0x47, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4d,
0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45,
0x44, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x53, 0x55, 0x4d, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07,
0x41, 0x56, 0x45, 0x52, 0x41, 0x47, 0x45, 0x10, 0x02, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6d, 0x65,
0x74, 0x72, 0x69, 0x63, 0x22, 0xb8, 0x04, 0x0a, 0x13, 0x51, 0x75, 0x65, 0x72, 0x79, 0x44, 0x61,
0x74, 0x61, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x45, 0x0a, 0x04,
0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x31, 0xe0, 0x41, 0x02, 0xfa,
0x41, 0x2b, 0x0a, 0x29, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x69, 0x6e,
0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69,
0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x52, 0x04, 0x6e,
0x61, 0x6d, 0x65, 0x12, 0x46, 0x0a, 0x0e, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e,
0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f,
0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69,
0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0d, 0x64, 0x65,
0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x33, 0x0a, 0x13, 0x6e,
0x75, 0x6d, 0x5f, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x5f, 0x73, 0x6c, 0x69, 0x63,
0x65, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x11, 0x6e, 0x75, 0x6d, 0x52,
0x65, 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x53, 0x6c, 0x69, 0x63, 0x65, 0x73, 0x88, 0x01, 0x01,
0x12, 0x58, 0x0a, 0x0e, 0x73, 0x6c, 0x69, 0x63, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x61, 0x72, 0x61,
0x6d, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x69,
0x65, 0x73, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6c,
0x69, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x0d, 0x73, 0x6c, 0x69,
0x63, 0x69, 0x6e, 0x67, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x61, 0x0a, 0x11, 0x74, 0x69,
0x6d, 0x65, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18,
0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63,
0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x69,
0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73,
0x65, 0x72, 0x69, 0x65, 0x73, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x10, 0x74, 0x69, 0x6d,
0x65, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x5b, 0x0a,
0x0f, 0x66, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73,
0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73,
0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x6f, 0x72, 0x65,
0x63, 0x61, 0x73, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x0e, 0x66, 0x6f, 0x72, 0x65,
0x63, 0x61, 0x73, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x72, 0x65,
0x74, 0x75, 0x72, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x18,
0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x54, 0x69, 0x6d,
0x65, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x6e, 0x75, 0x6d, 0x5f,
0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x5f, 0x73, 0x6c, 0x69, 0x63, 0x65, 0x73, 0x22,
0x76, 0x0a, 0x14, 0x51, 0x75, 0x65, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x53, 0x65, 0x74, 0x52,
0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18,
0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x4a, 0x0a, 0x06, 0x73,
0x6c, 0x69, 0x63, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x67, 0x6f,
0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x74, 0x69, 0x6d, 0x65, 0x73,
0x65, 0x72, 0x69, 0x65, 0x73, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31,
0x2e, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x64, 0x53, 0x6c, 0x69, 0x63, 0x65, 0x52,
0x06, 0x73, 0x6c, 0x69, 0x63, 0x65, 0x73, 0x22, 0xd2, 0x03, 0x0a, 0x14, 0x45, 0x76, 0x61, 0x6c,
0x75, 0x61, 0x74, 0x65, 0x53, 0x6c, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
0x12, 0x4b, 0x0a, 0x07, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28,
0x09, 0x42, 0x31, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x2b, 0x0a, 0x29, 0x74, 0x69, 0x6d, 0x65, 0x73,
0x65, 0x72, 0x69, 0x65, 0x73, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x67, 0x6f,
0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x61, 0x74,
0x61, 0x73, 0x65, 0x74, 0x52, 0x07, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x12, 0x65, 0x0a,
0x11, 0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x5f, 0x64, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f,
0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x69,
0x65, 0x73, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x69,
0x6e, 0x6e, 0x65, 0x64, 0x44, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x03, 0xe0,
0x41, 0x02, 0x52, 0x10, 0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x44, 0x69, 0x6d, 0x65, 0x6e, 0x73,
0x69, 0x6f, 0x6e, 0x73, 0x12, 0x46, 0x0a, 0x0e, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f,
0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67,
0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54,
0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0d, 0x64,
0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x61, 0x0a, 0x11,
0x74, 0x69, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d,
0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x69, 0x65,
0x73, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x69, 0x6d,
0x65, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x10, 0x74,
0x69, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12,
0x5b, 0x0a, 0x0f, 0x66, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x70, 0x61, 0x72, 0x61,
0x6d, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x69,
0x65, 0x73, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x6f,
0x72, 0x65, 0x63, 0x61, 0x73, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x0e, 0x66, 0x6f,
0x72, 0x65, 0x63, 0x61, 0x73, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0xd2, 0x02, 0x0a,
0x19, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x65, 0x72,
0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4b, 0x0a, 0x06, 0x70, 0x61,
0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x33, 0xe0, 0x41, 0x02, 0xfa,
0x41, 0x2d, 0x0a, 0x2b, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63,
0x65, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61,
0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52,
0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x4e, 0x0a, 0x0a, 0x74, 0x69, 0x6d, 0x65, 0x73,
0x65, 0x72, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x67, 0x6f,
0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x74, 0x69, 0x6d, 0x65, 0x73,
0x65, 0x72, 0x69, 0x65, 0x73, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31,
0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x52, 0x0a, 0x74, 0x69, 0x6d,
0x65, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x12, 0x3b, 0x0a, 0x0b, 0x67, 0x72, 0x61, 0x6e, 0x75,
0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67,
0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44,
0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x67, 0x72, 0x61, 0x6e, 0x75, 0x6c, 0x61,
0x72, 0x69, 0x74, 0x79, 0x12, 0x5b, 0x0a, 0x0f, 0x66, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x73, 0x74,
0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e,
0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x74, 0x69, 0x6d,
0x65, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e,
0x76, 0x31, 0x2e, 0x46, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x73, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d,
0x73, 0x52, 0x0e, 0x66, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x73, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d,
0x73, 0x32, 0xb1, 0x0e, 0x0a, 0x1c, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73,
0x49, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c,
0x65, 0x72, 0x12, 0xe4, 0x01, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, 0x53,
0x65, 0x74, 0x73, 0x12, 0x37, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f,
0x75, 0x64, 0x2e, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x69, 0x6e, 0x73,
0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x61, 0x74,
0x61, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x67,
0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x74, 0x69, 0x6d, 0x65,
0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76,
0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65,
0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x61, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x52, 0x12, 0x2c,
0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a,
0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
0x2f, 0x2a, 0x7d, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x73, 0x5a, 0x22, 0x12, 0x20,
0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a,
0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x73,
0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0xf3, 0x01, 0x0a, 0x0d, 0x43, 0x72,
0x65, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x53, 0x65, 0x74, 0x12, 0x38, 0x2e, 0x67, 0x6f,
0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x74, 0x69, 0x6d, 0x65, 0x73,
0x65, 0x72, 0x69, 0x65, 0x73, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31,
0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x53, 0x65, 0x74, 0x52, 0x65,
0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63,
0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x69,
0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x53,
0x65, 0x74, 0x22, 0x7b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x64, 0x22, 0x2c, 0x2f, 0x76, 0x31, 0x2f,
0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73,
0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f,
0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x73, 0x3a, 0x07, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65,
0x74, 0x5a, 0x2b, 0x22, 0x20, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74,
0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x64, 0x61, 0x74,
0x61, 0x73, 0x65, 0x74, 0x73, 0x3a, 0x07, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0xda, 0x41,
0x0e, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x12,
0xc2, 0x01, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x53, 0x65,
0x74, 0x12, 0x38, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64,
0x2e, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x69, 0x6e, 0x73, 0x69, 0x67,
0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x61, 0x74,
0x61, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f,
0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d,
0x70, 0x74, 0x79, 0x22, 0x5f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x52, 0x2a, 0x2c, 0x2f, 0x76, 0x31,
0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f,
0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x61,
0x74, 0x61, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x5a, 0x22, 0x2a, 0x20, 0x2f, 0x76, 0x31,
0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f,
0x2a, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0xda, 0x41, 0x04,
0x6e, 0x61, 0x6d, 0x65, 0x12, 0x93, 0x02, 0x0a, 0x0c, 0x41, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x45,
0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x37, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63,
0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x69,
0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x70, 0x70, 0x65, 0x6e,
0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38,
0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x74, 0x69,
0x6d, 0x65, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73,
0x2e, 0x76, 0x31, 0x2e, 0x41, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73,
0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x8f, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02,
0x78, 0x22, 0x3c, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x3d,
0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74,
0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x73, 0x2f,
0x2a, 0x7d, 0x3a, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x3a,
0x01, 0x2a, 0x5a, 0x35, 0x22, 0x30, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x64, 0x61, 0x74, 0x61, 0x73,
0x65, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x61,
0x74, 0x61, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x64,
0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x3a, 0x01, 0x2a, 0xda, 0x41, 0x0e, 0x64, 0x61, 0x74, 0x61,
0x73, 0x65, 0x74, 0x2c, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0xed, 0x01, 0x0a, 0x0c, 0x51,
0x75, 0x65, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x53, 0x65, 0x74, 0x12, 0x37, 0x2e, 0x67, 0x6f,
0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x74, 0x69, 0x6d, 0x65, 0x73,
0x65, 0x72, 0x69, 0x65, 0x73, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31,
0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71,
0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c,
0x6f, 0x75, 0x64, 0x2e, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x69, 0x6e,
0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x44,
0x61, 0x74, 0x61, 0x53, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x6a,
0x82, 0xd3, 0xe4, 0x93, 0x02, 0x64, 0x22, 0x32, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d,
0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63,
0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74,
0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x71, 0x75, 0x65, 0x72, 0x79, 0x3a, 0x01, 0x2a, 0x5a, 0x2b, 0x22,
0x26, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65,
0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x2a,
0x7d, 0x3a, 0x71, 0x75, 0x65, 0x72, 0x79, 0x3a, 0x01, 0x2a, 0x12, 0x80, 0x02, 0x0a, 0x0d, 0x45,
0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x53, 0x6c, 0x69, 0x63, 0x65, 0x12, 0x38, 0x2e, 0x67,
0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x74, 0x69, 0x6d, 0x65,
0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76,
0x31, 0x2e, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x53, 0x6c, 0x69, 0x63, 0x65, 0x52,
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73,
0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x76, 0x61, 0x6c,
0x75, 0x61, 0x74, 0x65, 0x64, 0x53, 0x6c, 0x69, 0x63, 0x65, 0x22, 0x80, 0x01, 0x82, 0xd3, 0xe4,
0x93, 0x02, 0x7a, 0x22, 0x3d, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65,
0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63,
0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74,
0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x53, 0x6c, 0x69,
0x63, 0x65, 0x3a, 0x01, 0x2a, 0x5a, 0x36, 0x22, 0x31, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x64, 0x61,
0x74, 0x61, 0x73, 0x65, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a,
0x2f, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x65, 0x76, 0x61,
0x6c, 0x75, 0x61, 0x74, 0x65, 0x53, 0x6c, 0x69, 0x63, 0x65, 0x3a, 0x01, 0x2a, 0x12, 0x8e, 0x02,
0x0a, 0x12, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x65,
0x72, 0x69, 0x65, 0x73, 0x12, 0x3d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c,
0x6f, 0x75, 0x64, 0x2e, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x69, 0x6e,
0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61,
0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75,
0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f,
0x75, 0x64, 0x2e, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x69, 0x6e, 0x73,
0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74,
0x65, 0x64, 0x53, 0x6c, 0x69, 0x63, 0x65, 0x22, 0x84, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x7e,
0x22, 0x3f, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72,
0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f,
0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x73, 0x3a, 0x65,
0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x69, 0x65,
0x73, 0x3a, 0x01, 0x2a, 0x5a, 0x38, 0x22, 0x33, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72,
0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x2f,
0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x73, 0x3a, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74,
0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x3a, 0x01, 0x2a, 0x1a, 0x55,
0xca, 0x41, 0x21, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x69, 0x6e, 0x73,
0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73,
0x2e, 0x63, 0x6f, 0x6d, 0xd2, 0x41, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77,
0x77, 0x77, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f,
0x6d, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2d, 0x70, 0x6c, 0x61,
0x74, 0x66, 0x6f, 0x72, 0x6d, 0x42, 0x9c, 0x01, 0x0a, 0x26, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f,
0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x74, 0x69, 0x6d, 0x65, 0x73,
0x65, 0x72, 0x69, 0x65, 0x73, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31,
0x42, 0x17, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x49, 0x6e, 0x73, 0x69,
0x67, 0x68, 0x74, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x54, 0x67, 0x6f, 0x6f,
0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67,
0x65, 0x6e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70,
0x69, 0x73, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x65, 0x72,
0x69, 0x65, 0x73, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2f, 0x76, 0x31, 0x3b, 0x74,
0x69, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74,
0x73, 0xf8, 0x01, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_rawDescOnce sync.Once
file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_rawDescData = file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_rawDesc
)
func file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_rawDescGZIP() []byte {
file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_rawDescOnce.Do(func() {
file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_rawDescData)
})
return file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_rawDescData
}
var file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_enumTypes = make([]protoimpl.EnumInfo, 3)
var file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_msgTypes = make([]protoimpl.MessageInfo, 22)
var file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_goTypes = []interface{}{
(DataSet_State)(0), // 0: google.cloud.timeseriesinsights.v1.DataSet.State
(ForecastParams_Period)(0), // 1: google.cloud.timeseriesinsights.v1.ForecastParams.Period
(TimeseriesParams_AggregationMethod)(0), // 2: google.cloud.timeseriesinsights.v1.TimeseriesParams.AggregationMethod
(*BigqueryMapping)(nil), // 3: google.cloud.timeseriesinsights.v1.BigqueryMapping
(*DataSource)(nil), // 4: google.cloud.timeseriesinsights.v1.DataSource
(*DataSet)(nil), // 5: google.cloud.timeseriesinsights.v1.DataSet
(*EventDimension)(nil), // 6: google.cloud.timeseriesinsights.v1.EventDimension
(*Event)(nil), // 7: google.cloud.timeseriesinsights.v1.Event
(*AppendEventsRequest)(nil), // 8: google.cloud.timeseriesinsights.v1.AppendEventsRequest
(*AppendEventsResponse)(nil), // 9: google.cloud.timeseriesinsights.v1.AppendEventsResponse
(*CreateDataSetRequest)(nil), // 10: google.cloud.timeseriesinsights.v1.CreateDataSetRequest
(*DeleteDataSetRequest)(nil), // 11: google.cloud.timeseriesinsights.v1.DeleteDataSetRequest
(*ListDataSetsRequest)(nil), // 12: google.cloud.timeseriesinsights.v1.ListDataSetsRequest
(*ListDataSetsResponse)(nil), // 13: google.cloud.timeseriesinsights.v1.ListDataSetsResponse
(*PinnedDimension)(nil), // 14: google.cloud.timeseriesinsights.v1.PinnedDimension
(*ForecastParams)(nil), // 15: google.cloud.timeseriesinsights.v1.ForecastParams
(*TimeseriesPoint)(nil), // 16: google.cloud.timeseriesinsights.v1.TimeseriesPoint
(*Timeseries)(nil), // 17: google.cloud.timeseriesinsights.v1.Timeseries
(*EvaluatedSlice)(nil), // 18: google.cloud.timeseriesinsights.v1.EvaluatedSlice
(*SlicingParams)(nil), // 19: google.cloud.timeseriesinsights.v1.SlicingParams
(*TimeseriesParams)(nil), // 20: google.cloud.timeseriesinsights.v1.TimeseriesParams
(*QueryDataSetRequest)(nil), // 21: google.cloud.timeseriesinsights.v1.QueryDataSetRequest
(*QueryDataSetResponse)(nil), // 22: google.cloud.timeseriesinsights.v1.QueryDataSetResponse
(*EvaluateSliceRequest)(nil), // 23: google.cloud.timeseriesinsights.v1.EvaluateSliceRequest
(*EvaluateTimeseriesRequest)(nil), // 24: google.cloud.timeseriesinsights.v1.EvaluateTimeseriesRequest
(*status.Status)(nil), // 25: google.rpc.Status
(*durationpb.Duration)(nil), // 26: google.protobuf.Duration
(*timestamppb.Timestamp)(nil), // 27: google.protobuf.Timestamp
(*emptypb.Empty)(nil), // 28: google.protobuf.Empty
}
var file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_depIdxs = []int32{
3, // 0: google.cloud.timeseriesinsights.v1.DataSource.bq_mapping:type_name -> google.cloud.timeseriesinsights.v1.BigqueryMapping
4, // 1: google.cloud.timeseriesinsights.v1.DataSet.data_sources:type_name -> google.cloud.timeseriesinsights.v1.DataSource
0, // 2: google.cloud.timeseriesinsights.v1.DataSet.state:type_name -> google.cloud.timeseriesinsights.v1.DataSet.State
25, // 3: google.cloud.timeseriesinsights.v1.DataSet.status:type_name -> google.rpc.Status
26, // 4: google.cloud.timeseriesinsights.v1.DataSet.ttl:type_name -> google.protobuf.Duration
6, // 5: google.cloud.timeseriesinsights.v1.Event.dimensions:type_name -> google.cloud.timeseriesinsights.v1.EventDimension
27, // 6: google.cloud.timeseriesinsights.v1.Event.event_time:type_name -> google.protobuf.Timestamp
7, // 7: google.cloud.timeseriesinsights.v1.AppendEventsRequest.events:type_name -> google.cloud.timeseriesinsights.v1.Event
7, // 8: google.cloud.timeseriesinsights.v1.AppendEventsResponse.dropped_events:type_name -> google.cloud.timeseriesinsights.v1.Event
5, // 9: google.cloud.timeseriesinsights.v1.CreateDataSetRequest.dataset:type_name -> google.cloud.timeseriesinsights.v1.DataSet
5, // 10: google.cloud.timeseriesinsights.v1.ListDataSetsResponse.datasets:type_name -> google.cloud.timeseriesinsights.v1.DataSet
1, // 11: google.cloud.timeseriesinsights.v1.ForecastParams.seasonality_hint:type_name -> google.cloud.timeseriesinsights.v1.ForecastParams.Period
26, // 12: google.cloud.timeseriesinsights.v1.ForecastParams.horizon_duration:type_name -> google.protobuf.Duration
27, // 13: google.cloud.timeseriesinsights.v1.TimeseriesPoint.time:type_name -> google.protobuf.Timestamp
16, // 14: google.cloud.timeseriesinsights.v1.Timeseries.point:type_name -> google.cloud.timeseriesinsights.v1.TimeseriesPoint
14, // 15: google.cloud.timeseriesinsights.v1.EvaluatedSlice.dimensions:type_name -> google.cloud.timeseriesinsights.v1.PinnedDimension
17, // 16: google.cloud.timeseriesinsights.v1.EvaluatedSlice.history:type_name -> google.cloud.timeseriesinsights.v1.Timeseries
17, // 17: google.cloud.timeseriesinsights.v1.EvaluatedSlice.forecast:type_name -> google.cloud.timeseriesinsights.v1.Timeseries
25, // 18: google.cloud.timeseriesinsights.v1.EvaluatedSlice.status:type_name -> google.rpc.Status
14, // 19: google.cloud.timeseriesinsights.v1.SlicingParams.pinned_dimensions:type_name -> google.cloud.timeseriesinsights.v1.PinnedDimension
26, // 20: google.cloud.timeseriesinsights.v1.TimeseriesParams.forecast_history:type_name -> google.protobuf.Duration
26, // 21: google.cloud.timeseriesinsights.v1.TimeseriesParams.granularity:type_name -> google.protobuf.Duration
2, // 22: google.cloud.timeseriesinsights.v1.TimeseriesParams.metric_aggregation_method:type_name -> google.cloud.timeseriesinsights.v1.TimeseriesParams.AggregationMethod
27, // 23: google.cloud.timeseriesinsights.v1.QueryDataSetRequest.detection_time:type_name -> google.protobuf.Timestamp
19, // 24: google.cloud.timeseriesinsights.v1.QueryDataSetRequest.slicing_params:type_name -> google.cloud.timeseriesinsights.v1.SlicingParams
20, // 25: google.cloud.timeseriesinsights.v1.QueryDataSetRequest.timeseries_params:type_name -> google.cloud.timeseriesinsights.v1.TimeseriesParams
15, // 26: google.cloud.timeseriesinsights.v1.QueryDataSetRequest.forecast_params:type_name -> google.cloud.timeseriesinsights.v1.ForecastParams
18, // 27: google.cloud.timeseriesinsights.v1.QueryDataSetResponse.slices:type_name -> google.cloud.timeseriesinsights.v1.EvaluatedSlice
14, // 28: google.cloud.timeseriesinsights.v1.EvaluateSliceRequest.pinned_dimensions:type_name -> google.cloud.timeseriesinsights.v1.PinnedDimension
27, // 29: google.cloud.timeseriesinsights.v1.EvaluateSliceRequest.detection_time:type_name -> google.protobuf.Timestamp
20, // 30: google.cloud.timeseriesinsights.v1.EvaluateSliceRequest.timeseries_params:type_name -> google.cloud.timeseriesinsights.v1.TimeseriesParams
15, // 31: google.cloud.timeseriesinsights.v1.EvaluateSliceRequest.forecast_params:type_name -> google.cloud.timeseriesinsights.v1.ForecastParams
17, // 32: google.cloud.timeseriesinsights.v1.EvaluateTimeseriesRequest.timeseries:type_name -> google.cloud.timeseriesinsights.v1.Timeseries
26, // 33: google.cloud.timeseriesinsights.v1.EvaluateTimeseriesRequest.granularity:type_name -> google.protobuf.Duration
15, // 34: google.cloud.timeseriesinsights.v1.EvaluateTimeseriesRequest.forecast_params:type_name -> google.cloud.timeseriesinsights.v1.ForecastParams
12, // 35: google.cloud.timeseriesinsights.v1.TimeseriesInsightsController.ListDataSets:input_type -> google.cloud.timeseriesinsights.v1.ListDataSetsRequest
10, // 36: google.cloud.timeseriesinsights.v1.TimeseriesInsightsController.CreateDataSet:input_type -> google.cloud.timeseriesinsights.v1.CreateDataSetRequest
11, // 37: google.cloud.timeseriesinsights.v1.TimeseriesInsightsController.DeleteDataSet:input_type -> google.cloud.timeseriesinsights.v1.DeleteDataSetRequest
8, // 38: google.cloud.timeseriesinsights.v1.TimeseriesInsightsController.AppendEvents:input_type -> google.cloud.timeseriesinsights.v1.AppendEventsRequest
21, // 39: google.cloud.timeseriesinsights.v1.TimeseriesInsightsController.QueryDataSet:input_type -> google.cloud.timeseriesinsights.v1.QueryDataSetRequest
23, // 40: google.cloud.timeseriesinsights.v1.TimeseriesInsightsController.EvaluateSlice:input_type -> google.cloud.timeseriesinsights.v1.EvaluateSliceRequest
24, // 41: google.cloud.timeseriesinsights.v1.TimeseriesInsightsController.EvaluateTimeseries:input_type -> google.cloud.timeseriesinsights.v1.EvaluateTimeseriesRequest
13, // 42: google.cloud.timeseriesinsights.v1.TimeseriesInsightsController.ListDataSets:output_type -> google.cloud.timeseriesinsights.v1.ListDataSetsResponse
5, // 43: google.cloud.timeseriesinsights.v1.TimeseriesInsightsController.CreateDataSet:output_type -> google.cloud.timeseriesinsights.v1.DataSet
28, // 44: google.cloud.timeseriesinsights.v1.TimeseriesInsightsController.DeleteDataSet:output_type -> google.protobuf.Empty
9, // 45: google.cloud.timeseriesinsights.v1.TimeseriesInsightsController.AppendEvents:output_type -> google.cloud.timeseriesinsights.v1.AppendEventsResponse
22, // 46: google.cloud.timeseriesinsights.v1.TimeseriesInsightsController.QueryDataSet:output_type -> google.cloud.timeseriesinsights.v1.QueryDataSetResponse
18, // 47: google.cloud.timeseriesinsights.v1.TimeseriesInsightsController.EvaluateSlice:output_type -> google.cloud.timeseriesinsights.v1.EvaluatedSlice
18, // 48: google.cloud.timeseriesinsights.v1.TimeseriesInsightsController.EvaluateTimeseries:output_type -> google.cloud.timeseriesinsights.v1.EvaluatedSlice
42, // [42:49] is the sub-list for method output_type
35, // [35:42] is the sub-list for method input_type
35, // [35:35] is the sub-list for extension type_name
35, // [35:35] is the sub-list for extension extendee
0, // [0:35] is the sub-list for field type_name
}
func init() { file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_init() }
func file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_init() {
if File_google_cloud_timeseriesinsights_v1_timeseries_insights_proto != nil {
return
}
if !protoimpl.UnsafeEnabled {
file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*BigqueryMapping); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*DataSource); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*DataSet); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*EventDimension); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Event); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*AppendEventsRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*AppendEventsResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*CreateDataSetRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*DeleteDataSetRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListDataSetsRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListDataSetsResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*PinnedDimension); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ForecastParams); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*TimeseriesPoint); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Timeseries); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*EvaluatedSlice); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*SlicingParams); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*TimeseriesParams); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*QueryDataSetRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*QueryDataSetResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*EvaluateSliceRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*EvaluateTimeseriesRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
}
file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_msgTypes[3].OneofWrappers = []interface{}{
(*EventDimension_StringVal)(nil),
(*EventDimension_LongVal)(nil),
(*EventDimension_BoolVal)(nil),
(*EventDimension_DoubleVal)(nil),
}
file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_msgTypes[11].OneofWrappers = []interface{}{
(*PinnedDimension_StringVal)(nil),
(*PinnedDimension_BoolVal)(nil),
}
file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_msgTypes[12].OneofWrappers = []interface{}{}
file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_msgTypes[13].OneofWrappers = []interface{}{}
file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_msgTypes[15].OneofWrappers = []interface{}{}
file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_msgTypes[17].OneofWrappers = []interface{}{}
file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_msgTypes[18].OneofWrappers = []interface{}{}
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_rawDesc,
NumEnums: 3,
NumMessages: 22,
NumExtensions: 0,
NumServices: 1,
},
GoTypes: file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_goTypes,
DependencyIndexes: file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_depIdxs,
EnumInfos: file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_enumTypes,
MessageInfos: file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_msgTypes,
}.Build()
File_google_cloud_timeseriesinsights_v1_timeseries_insights_proto = out.File
file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_rawDesc = nil
file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_goTypes = nil
file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_depIdxs = nil
}
// Reference imports to suppress errors if they are not otherwise used.
var _ context.Context
var _ grpc.ClientConnInterface
// This is a compile-time assertion to ensure that this generated file
// is compatible with the grpc package it is being compiled against.
const _ = grpc.SupportPackageIsVersion6
// TimeseriesInsightsControllerClient is the client API for TimeseriesInsightsController service.
//
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
type TimeseriesInsightsControllerClient interface {
// Lists [DataSets][google.cloud.timeseriesinsights.v1.DataSet] under the project.
//
// The order of the results is unspecified but deterministic. Newly created
// [DataSets][google.cloud.timeseriesinsights.v1.DataSet] will not necessarily be added to the end
// of this list.
ListDataSets(ctx context.Context, in *ListDataSetsRequest, opts ...grpc.CallOption) (*ListDataSetsResponse, error)
// Create a [DataSet][google.cloud.timeseriesinsights.v1.DataSet] from data stored on Cloud
// Storage.
//
// The data must stay immutable while we process the
// [DataSet][google.cloud.timeseriesinsights.v1.DataSet] creation; otherwise, undefined outcomes
// might result. For more information, see [DataSet][google.cloud.timeseriesinsights.v1.DataSet].
CreateDataSet(ctx context.Context, in *CreateDataSetRequest, opts ...grpc.CallOption) (*DataSet, error)
// Delete a [DataSet][google.cloud.timeseriesinsights.v1.DataSet] from the system.
//
// **NOTE**: If the [DataSet][google.cloud.timeseriesinsights.v1.DataSet] is still being
// processed, it will be aborted and deleted.
DeleteDataSet(ctx context.Context, in *DeleteDataSetRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
// Append events to a `LOADED` [DataSet][google.cloud.timeseriesinsights.v1.DataSet].
AppendEvents(ctx context.Context, in *AppendEventsRequest, opts ...grpc.CallOption) (*AppendEventsResponse, error)
// Execute a Timeseries Insights query over a loaded
// [DataSet][google.cloud.timeseriesinsights.v1.DataSet].
QueryDataSet(ctx context.Context, in *QueryDataSetRequest, opts ...grpc.CallOption) (*QueryDataSetResponse, error)
// Evaluate an explicit slice from a loaded [DataSet][google.cloud.timeseriesinsights.v1.DataSet].
EvaluateSlice(ctx context.Context, in *EvaluateSliceRequest, opts ...grpc.CallOption) (*EvaluatedSlice, error)
// Evaluate an explicit timeseries.
EvaluateTimeseries(ctx context.Context, in *EvaluateTimeseriesRequest, opts ...grpc.CallOption) (*EvaluatedSlice, error)
}
type timeseriesInsightsControllerClient struct {
cc grpc.ClientConnInterface
}
func NewTimeseriesInsightsControllerClient(cc grpc.ClientConnInterface) TimeseriesInsightsControllerClient {
return &timeseriesInsightsControllerClient{cc}
}
func (c *timeseriesInsightsControllerClient) ListDataSets(ctx context.Context, in *ListDataSetsRequest, opts ...grpc.CallOption) (*ListDataSetsResponse, error) {
out := new(ListDataSetsResponse)
err := c.cc.Invoke(ctx, "/google.cloud.timeseriesinsights.v1.TimeseriesInsightsController/ListDataSets", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *timeseriesInsightsControllerClient) CreateDataSet(ctx context.Context, in *CreateDataSetRequest, opts ...grpc.CallOption) (*DataSet, error) {
out := new(DataSet)
err := c.cc.Invoke(ctx, "/google.cloud.timeseriesinsights.v1.TimeseriesInsightsController/CreateDataSet", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *timeseriesInsightsControllerClient) DeleteDataSet(ctx context.Context, in *DeleteDataSetRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) {
out := new(emptypb.Empty)
err := c.cc.Invoke(ctx, "/google.cloud.timeseriesinsights.v1.TimeseriesInsightsController/DeleteDataSet", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *timeseriesInsightsControllerClient) AppendEvents(ctx context.Context, in *AppendEventsRequest, opts ...grpc.CallOption) (*AppendEventsResponse, error) {
out := new(AppendEventsResponse)
err := c.cc.Invoke(ctx, "/google.cloud.timeseriesinsights.v1.TimeseriesInsightsController/AppendEvents", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *timeseriesInsightsControllerClient) QueryDataSet(ctx context.Context, in *QueryDataSetRequest, opts ...grpc.CallOption) (*QueryDataSetResponse, error) {
out := new(QueryDataSetResponse)
err := c.cc.Invoke(ctx, "/google.cloud.timeseriesinsights.v1.TimeseriesInsightsController/QueryDataSet", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *timeseriesInsightsControllerClient) EvaluateSlice(ctx context.Context, in *EvaluateSliceRequest, opts ...grpc.CallOption) (*EvaluatedSlice, error) {
out := new(EvaluatedSlice)
err := c.cc.Invoke(ctx, "/google.cloud.timeseriesinsights.v1.TimeseriesInsightsController/EvaluateSlice", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *timeseriesInsightsControllerClient) EvaluateTimeseries(ctx context.Context, in *EvaluateTimeseriesRequest, opts ...grpc.CallOption) (*EvaluatedSlice, error) {
out := new(EvaluatedSlice)
err := c.cc.Invoke(ctx, "/google.cloud.timeseriesinsights.v1.TimeseriesInsightsController/EvaluateTimeseries", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
// TimeseriesInsightsControllerServer is the server API for TimeseriesInsightsController service.
type TimeseriesInsightsControllerServer interface {
// Lists [DataSets][google.cloud.timeseriesinsights.v1.DataSet] under the project.
//
// The order of the results is unspecified but deterministic. Newly created
// [DataSets][google.cloud.timeseriesinsights.v1.DataSet] will not necessarily be added to the end
// of this list.
ListDataSets(context.Context, *ListDataSetsRequest) (*ListDataSetsResponse, error)
// Create a [DataSet][google.cloud.timeseriesinsights.v1.DataSet] from data stored on Cloud
// Storage.
//
// The data must stay immutable while we process the
// [DataSet][google.cloud.timeseriesinsights.v1.DataSet] creation; otherwise, undefined outcomes
// might result. For more information, see [DataSet][google.cloud.timeseriesinsights.v1.DataSet].
CreateDataSet(context.Context, *CreateDataSetRequest) (*DataSet, error)
// Delete a [DataSet][google.cloud.timeseriesinsights.v1.DataSet] from the system.
//
// **NOTE**: If the [DataSet][google.cloud.timeseriesinsights.v1.DataSet] is still being
// processed, it will be aborted and deleted.
DeleteDataSet(context.Context, *DeleteDataSetRequest) (*emptypb.Empty, error)
// Append events to a `LOADED` [DataSet][google.cloud.timeseriesinsights.v1.DataSet].
AppendEvents(context.Context, *AppendEventsRequest) (*AppendEventsResponse, error)
// Execute a Timeseries Insights query over a loaded
// [DataSet][google.cloud.timeseriesinsights.v1.DataSet].
QueryDataSet(context.Context, *QueryDataSetRequest) (*QueryDataSetResponse, error)
// Evaluate an explicit slice from a loaded [DataSet][google.cloud.timeseriesinsights.v1.DataSet].
EvaluateSlice(context.Context, *EvaluateSliceRequest) (*EvaluatedSlice, error)
// Evaluate an explicit timeseries.
EvaluateTimeseries(context.Context, *EvaluateTimeseriesRequest) (*EvaluatedSlice, error)
}
// UnimplementedTimeseriesInsightsControllerServer can be embedded to have forward compatible implementations.
type UnimplementedTimeseriesInsightsControllerServer struct {
}
func (*UnimplementedTimeseriesInsightsControllerServer) ListDataSets(context.Context, *ListDataSetsRequest) (*ListDataSetsResponse, error) {
return nil, status1.Errorf(codes.Unimplemented, "method ListDataSets not implemented")
}
func (*UnimplementedTimeseriesInsightsControllerServer) CreateDataSet(context.Context, *CreateDataSetRequest) (*DataSet, error) {
return nil, status1.Errorf(codes.Unimplemented, "method CreateDataSet not implemented")
}
func (*UnimplementedTimeseriesInsightsControllerServer) DeleteDataSet(context.Context, *DeleteDataSetRequest) (*emptypb.Empty, error) {
return nil, status1.Errorf(codes.Unimplemented, "method DeleteDataSet not implemented")
}
func (*UnimplementedTimeseriesInsightsControllerServer) AppendEvents(context.Context, *AppendEventsRequest) (*AppendEventsResponse, error) {
return nil, status1.Errorf(codes.Unimplemented, "method AppendEvents not implemented")
}
func (*UnimplementedTimeseriesInsightsControllerServer) QueryDataSet(context.Context, *QueryDataSetRequest) (*QueryDataSetResponse, error) {
return nil, status1.Errorf(codes.Unimplemented, "method QueryDataSet not implemented")
}
func (*UnimplementedTimeseriesInsightsControllerServer) EvaluateSlice(context.Context, *EvaluateSliceRequest) (*EvaluatedSlice, error) {
return nil, status1.Errorf(codes.Unimplemented, "method EvaluateSlice not implemented")
}
func (*UnimplementedTimeseriesInsightsControllerServer) EvaluateTimeseries(context.Context, *EvaluateTimeseriesRequest) (*EvaluatedSlice, error) {
return nil, status1.Errorf(codes.Unimplemented, "method EvaluateTimeseries not implemented")
}
func RegisterTimeseriesInsightsControllerServer(s *grpc.Server, srv TimeseriesInsightsControllerServer) {
s.RegisterService(&_TimeseriesInsightsController_serviceDesc, srv)
}
func _TimeseriesInsightsController_ListDataSets_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(ListDataSetsRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(TimeseriesInsightsControllerServer).ListDataSets(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/google.cloud.timeseriesinsights.v1.TimeseriesInsightsController/ListDataSets",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(TimeseriesInsightsControllerServer).ListDataSets(ctx, req.(*ListDataSetsRequest))
}
return interceptor(ctx, in, info, handler)
}
func _TimeseriesInsightsController_CreateDataSet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(CreateDataSetRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(TimeseriesInsightsControllerServer).CreateDataSet(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/google.cloud.timeseriesinsights.v1.TimeseriesInsightsController/CreateDataSet",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(TimeseriesInsightsControllerServer).CreateDataSet(ctx, req.(*CreateDataSetRequest))
}
return interceptor(ctx, in, info, handler)
}
func _TimeseriesInsightsController_DeleteDataSet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(DeleteDataSetRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(TimeseriesInsightsControllerServer).DeleteDataSet(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/google.cloud.timeseriesinsights.v1.TimeseriesInsightsController/DeleteDataSet",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(TimeseriesInsightsControllerServer).DeleteDataSet(ctx, req.(*DeleteDataSetRequest))
}
return interceptor(ctx, in, info, handler)
}
func _TimeseriesInsightsController_AppendEvents_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(AppendEventsRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(TimeseriesInsightsControllerServer).AppendEvents(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/google.cloud.timeseriesinsights.v1.TimeseriesInsightsController/AppendEvents",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(TimeseriesInsightsControllerServer).AppendEvents(ctx, req.(*AppendEventsRequest))
}
return interceptor(ctx, in, info, handler)
}
func _TimeseriesInsightsController_QueryDataSet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(QueryDataSetRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(TimeseriesInsightsControllerServer).QueryDataSet(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/google.cloud.timeseriesinsights.v1.TimeseriesInsightsController/QueryDataSet",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(TimeseriesInsightsControllerServer).QueryDataSet(ctx, req.(*QueryDataSetRequest))
}
return interceptor(ctx, in, info, handler)
}
func _TimeseriesInsightsController_EvaluateSlice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(EvaluateSliceRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(TimeseriesInsightsControllerServer).EvaluateSlice(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/google.cloud.timeseriesinsights.v1.TimeseriesInsightsController/EvaluateSlice",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(TimeseriesInsightsControllerServer).EvaluateSlice(ctx, req.(*EvaluateSliceRequest))
}
return interceptor(ctx, in, info, handler)
}
func _TimeseriesInsightsController_EvaluateTimeseries_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(EvaluateTimeseriesRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(TimeseriesInsightsControllerServer).EvaluateTimeseries(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/google.cloud.timeseriesinsights.v1.TimeseriesInsightsController/EvaluateTimeseries",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(TimeseriesInsightsControllerServer).EvaluateTimeseries(ctx, req.(*EvaluateTimeseriesRequest))
}
return interceptor(ctx, in, info, handler)
}
var _TimeseriesInsightsController_serviceDesc = grpc.ServiceDesc{
ServiceName: "google.cloud.timeseriesinsights.v1.TimeseriesInsightsController",
HandlerType: (*TimeseriesInsightsControllerServer)(nil),
Methods: []grpc.MethodDesc{
{
MethodName: "ListDataSets",
Handler: _TimeseriesInsightsController_ListDataSets_Handler,
},
{
MethodName: "CreateDataSet",
Handler: _TimeseriesInsightsController_CreateDataSet_Handler,
},
{
MethodName: "DeleteDataSet",
Handler: _TimeseriesInsightsController_DeleteDataSet_Handler,
},
{
MethodName: "AppendEvents",
Handler: _TimeseriesInsightsController_AppendEvents_Handler,
},
{
MethodName: "QueryDataSet",
Handler: _TimeseriesInsightsController_QueryDataSet_Handler,
},
{
MethodName: "EvaluateSlice",
Handler: _TimeseriesInsightsController_EvaluateSlice_Handler,
},
{
MethodName: "EvaluateTimeseries",
Handler: _TimeseriesInsightsController_EvaluateTimeseries_Handler,
},
},
Streams: []grpc.StreamDesc{},
Metadata: "google/cloud/timeseriesinsights/v1/timeseries_insights.proto",
}